sanity-plugin-documents-pane 1.0.5 → 1.0.6
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/.eslintignore +1 -0
- package/README.md +4 -0
- package/lib/Debug.js +2 -4
- package/lib/Debug.js.map +1 -1
- package/lib/Documents.js +38 -30
- package/lib/Documents.js.map +1 -1
- package/lib/DocumentsPane.js +51 -0
- package/lib/DocumentsPane.js.map +1 -0
- package/lib/Feedback.js +27 -0
- package/lib/Feedback.js.map +1 -0
- package/lib/index.js +4 -63
- package/lib/index.js.map +1 -1
- package/package.json +21 -10
- package/src/{Debug.js → Debug.tsx} +0 -1
- package/src/Documents.tsx +93 -0
- package/src/DocumentsPane.tsx +25 -0
- package/src/Feedback.tsx +18 -0
- package/src/index.js +2 -44
- package/lib/Documents.module.css +0 -14
- package/src/Documents.js +0 -84
- package/src/Documents.module.css +0 -14
package/.eslintignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
lib
|
package/README.md
CHANGED
|
@@ -38,6 +38,10 @@ The `.options()` configuration works as follows:
|
|
|
38
38
|
- `useDraft` (bool, optional, default: `false`) When populating the `params` values, it will use the `published` version of the document by default.
|
|
39
39
|
- `debug` (bool, optional, default: `false`) In case of an error or the query returning no documents, setting to `true` will display the query and params that were used.
|
|
40
40
|
|
|
41
|
+
## Thanks!
|
|
42
|
+
|
|
43
|
+
This plugin is based on [Incoming References](https://github.com/sanity-io/sanity/tree/victoria/incoming-refs-preview/packages/test-studio/src/previews/incoming-refs) originally written by Victoria Bergquist.
|
|
44
|
+
|
|
41
45
|
## License
|
|
42
46
|
|
|
43
47
|
MIT © Simeon Griggs
|
package/lib/Debug.js
CHANGED
|
@@ -7,8 +7,6 @@ exports.default = Debug;
|
|
|
7
7
|
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
|
|
10
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
-
|
|
12
10
|
var _ui = require("@sanity/ui");
|
|
13
11
|
|
|
14
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -24,8 +22,8 @@ function Debug(_ref) {
|
|
|
24
22
|
}
|
|
25
23
|
|
|
26
24
|
Debug.propTypes = {
|
|
27
|
-
params:
|
|
28
|
-
query:
|
|
25
|
+
params: PropTypes.object,
|
|
26
|
+
query: PropTypes.string
|
|
29
27
|
};
|
|
30
28
|
Debug.defaultProps = {
|
|
31
29
|
params: {},
|
package/lib/Debug.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Debug.
|
|
1
|
+
{"version":3,"sources":["../src/Debug.tsx"],"names":["Debug","query","params","JSON","stringify","propTypes","PropTypes","object","string","defaultProps"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEe,SAASA,KAAT,OAAgC;AAAA,MAAhBC,KAAgB,QAAhBA,KAAgB;AAAA,MAATC,MAAS,QAATA,MAAS;AAC7C,sBACE,yEACE,6BAAC,SAAD;AAAO,IAAA,KAAK,EAAE;AAAd,kBACE,6BAAC,OAAD,qBAAK,6BAAC,SAAD,gBAAL,CADF,eAEE,6BAAC,OAAD,qBACE,6BAAC,QAAD,QAAOD,KAAP,CADF,CAFF,CADF,eAOE,6BAAC,SAAD;AAAO,IAAA,KAAK,EAAE;AAAd,kBACE,6BAAC,OAAD,qBAAK,6BAAC,SAAD,iBAAL,CADF,eAEE,6BAAC,OAAD,qBACE,6BAAC,QAAD,QAAOE,IAAI,CAACC,SAAL,CAAeF,MAAf,CAAP,CADF,CAFF,CAPF,CADF;AAgBD;;AAEDF,KAAK,CAACK,SAAN,GAAkB;AAChBH,EAAAA,MAAM,EAAEI,SAAS,CAACC,MADF;AAEhBN,EAAAA,KAAK,EAAEK,SAAS,CAACE;AAFD,CAAlB;AAKAR,KAAK,CAACS,YAAN,GAAqB;AACnBP,EAAAA,MAAM,EAAE,EADW;AAEnBD,EAAAA,KAAK;AAFc,CAArB","sourcesContent":["import React from 'react'\nimport {Code, Box, Label, Stack} from '@sanity/ui'\n\nexport default function Debug({query, params}) {\n return (\n <>\n <Stack space={4}>\n <Box><Label>Query</Label></Box>\n <Box>\n <Code>{query}</Code>\n </Box>\n </Stack>\n <Stack space={4}>\n <Box><Label>Params</Label></Box>\n <Box>\n <Code>{JSON.stringify(params)}</Code>\n </Box>\n </Stack>\n </>\n )\n}\n\nDebug.propTypes = {\n params: PropTypes.object,\n query: PropTypes.string,\n}\n\nDebug.defaultProps = {\n params: {},\n query: ``,\n}\n"],"file":"Debug.js"}
|
package/lib/Documents.js
CHANGED
|
@@ -7,23 +7,23 @@ exports.default = Documents;
|
|
|
7
7
|
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _reactQuery = require("react-query");
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _ui = require("@sanity/ui");
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _deskTool = require("@sanity/desk-tool");
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _RouterContext = require("@sanity/state-router/lib/RouterContext");
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _preview = _interopRequireDefault(require("part:@sanity/base/preview"));
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _schema = _interopRequireDefault(require("part:@sanity/base/schema"));
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _client = _interopRequireDefault(require("part:@sanity/base/client"));
|
|
23
23
|
|
|
24
24
|
var _Debug = _interopRequireDefault(require("./Debug"));
|
|
25
25
|
|
|
26
|
-
var
|
|
26
|
+
var _Feedback = _interopRequireDefault(require("./Feedback"));
|
|
27
27
|
|
|
28
28
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
29
29
|
|
|
@@ -44,11 +44,31 @@ function Documents(props) {
|
|
|
44
44
|
error = _useQuery.error,
|
|
45
45
|
data = _useQuery.data;
|
|
46
46
|
|
|
47
|
+
var routerContext = _react.default.useContext(_RouterContext.RouterContext);
|
|
48
|
+
|
|
49
|
+
var _usePaneRouter = (0, _deskTool.usePaneRouter)(),
|
|
50
|
+
routerPanesState = _usePaneRouter.routerPanesState,
|
|
51
|
+
groupIndex = _usePaneRouter.groupIndex;
|
|
52
|
+
|
|
53
|
+
var openDocumentInSidePane = _react.default.useCallback((id, type) => {
|
|
54
|
+
var newPane = [{
|
|
55
|
+
id: id,
|
|
56
|
+
params: {
|
|
57
|
+
type
|
|
58
|
+
}
|
|
59
|
+
}];
|
|
60
|
+
var panes = [routerPanesState[0], routerPanesState[1], newPane];
|
|
61
|
+
var href = routerContext.resolvePathFromState({
|
|
62
|
+
panes
|
|
63
|
+
});
|
|
64
|
+
routerContext.navigateUrl(href);
|
|
65
|
+
}, [routerContext, routerPanesState, groupIndex]);
|
|
66
|
+
|
|
47
67
|
if (!_rev) {
|
|
48
68
|
return /*#__PURE__*/_react.default.createElement(_ui.Stack, {
|
|
49
69
|
padding: 4,
|
|
50
70
|
space: 5
|
|
51
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
71
|
+
}, /*#__PURE__*/_react.default.createElement(_Feedback.default, null, "Document must be Published"), debug && /*#__PURE__*/_react.default.createElement(_Debug.default, {
|
|
52
72
|
query: query,
|
|
53
73
|
params: params
|
|
54
74
|
}));
|
|
@@ -69,7 +89,7 @@ function Documents(props) {
|
|
|
69
89
|
return /*#__PURE__*/_react.default.createElement(_ui.Stack, {
|
|
70
90
|
padding: 4,
|
|
71
91
|
space: 5
|
|
72
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
92
|
+
}, /*#__PURE__*/_react.default.createElement(_Feedback.default, null, "There was en error performing this query"), debug && /*#__PURE__*/_react.default.createElement(_Debug.default, {
|
|
73
93
|
query: query,
|
|
74
94
|
params: params
|
|
75
95
|
}));
|
|
@@ -79,36 +99,24 @@ function Documents(props) {
|
|
|
79
99
|
return /*#__PURE__*/_react.default.createElement(_ui.Stack, {
|
|
80
100
|
padding: 4,
|
|
81
101
|
space: 5
|
|
82
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
102
|
+
}, /*#__PURE__*/_react.default.createElement(_Feedback.default, null, "No Documents found"), debug && /*#__PURE__*/_react.default.createElement(_Debug.default, {
|
|
83
103
|
query: query,
|
|
84
104
|
params: params
|
|
85
105
|
}));
|
|
86
106
|
}
|
|
87
107
|
|
|
88
108
|
return /*#__PURE__*/_react.default.createElement(_ui.Stack, {
|
|
89
|
-
|
|
90
|
-
|
|
109
|
+
padding: 2,
|
|
110
|
+
space: 2
|
|
111
|
+
}, data.map(doc => /*#__PURE__*/_react.default.createElement(_ui.Button, {
|
|
91
112
|
key: doc._id,
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
},
|
|
97
|
-
className: _DocumentsModule.default.item
|
|
113
|
+
onClick: () => openDocumentInSidePane(doc._id, doc._type),
|
|
114
|
+
mode: "bleed",
|
|
115
|
+
radius: 2,
|
|
116
|
+
padding: 2
|
|
98
117
|
}, /*#__PURE__*/_react.default.createElement(_preview.default, {
|
|
99
118
|
value: doc,
|
|
100
119
|
type: _schema.default.get(doc._type)
|
|
101
120
|
}))));
|
|
102
121
|
}
|
|
103
|
-
|
|
104
|
-
Documents.propTypes = {
|
|
105
|
-
_rev: _propTypes.default.string,
|
|
106
|
-
params: _propTypes.default.object,
|
|
107
|
-
query: _propTypes.default.string
|
|
108
|
-
};
|
|
109
|
-
Documents.defaultProps = {
|
|
110
|
-
_rev: "",
|
|
111
|
-
params: {},
|
|
112
|
-
query: ""
|
|
113
|
-
};
|
|
114
122
|
//# sourceMappingURL=Documents.js.map
|
package/lib/Documents.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Documents.
|
|
1
|
+
{"version":3,"sources":["../src/Documents.tsx"],"names":["client","sanityClient","withConfig","apiVersion","Documents","props","query","params","debug","_rev","fetch","isLoading","error","data","routerContext","React","useContext","RouterContext","routerPanesState","groupIndex","openDocumentInSidePane","useCallback","id","type","newPane","panes","href","resolvePathFromState","navigateUrl","length","map","doc","_id","_type","schema","get"],"mappings":"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","sourcesContent":["import React from 'react'\nimport {useQuery} from 'react-query'\nimport {Button, Box, Stack, Flex, Spinner} from '@sanity/ui'\nimport {usePaneRouter} from '@sanity/desk-tool'\nimport {RouterContext} from '@sanity/state-router/lib/RouterContext'\nimport Preview from 'part:@sanity/base/preview'\nimport schema from 'part:@sanity/base/schema'\nimport sanityClient from 'part:@sanity/base/client'\n\nimport Debug from './Debug'\nimport Feedback from './Feedback'\n\n const client = sanityClient.withConfig({apiVersion: `2021-05-19`})\n\nexport default function Documents(props) {\n const {query, params, debug, _rev} = props\n\n const {isLoading, error, data} = useQuery(['useDocuments', {props}], () =>\n client.fetch(query, params)\n )\n\n const routerContext = React.useContext(RouterContext)\n const {routerPanesState, groupIndex} = usePaneRouter()\n\n const openDocumentInSidePane = React.useCallback(\n (id: string, type: string) => {\n const newPane = [\n {\n id: id,\n params: {type},\n },\n ]\n let panes = [routerPanesState[0], routerPanesState[1], newPane]\n\n const href = routerContext.resolvePathFromState({panes})\n routerContext.navigateUrl(href)\n },\n [routerContext, routerPanesState, groupIndex]\n )\n\n if (!_rev) {\n return (\n <Stack padding={4} space={5}>\n <Feedback>Document must be Published</Feedback>\n {debug && <Debug query={query} params={params} />}\n </Stack>\n )\n }\n\n if (isLoading) {\n return (\n <Box padding={4}>\n <Flex justify=\"center\" align=\"center\">\n <Spinner muted />\n </Flex>\n </Box>\n )\n }\n\n if (error) {\n return (\n <Stack padding={4} space={5}>\n <Feedback>There was en error performing this query</Feedback>\n {debug && <Debug query={query} params={params} />}\n </Stack>\n )\n }\n\n if (!data?.length) {\n return (\n <Stack padding={4} space={5}>\n <Feedback>No Documents found</Feedback>\n {debug && <Debug query={query} params={params} />}\n </Stack>\n )\n }\n\n return (\n <Stack padding={2} space={2}>\n {data.map((doc) => (\n <Button\n key={doc._id}\n onClick={() => openDocumentInSidePane(doc._id, doc._type)}\n mode=\"bleed\"\n radius={2}\n padding={2}\n >\n <Preview value={doc} type={schema.get(doc._type)} />\n </Button>\n ))}\n </Stack>\n )\n}\n"],"file":"Documents.js"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = DocumentsPane;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _dlv = _interopRequireDefault(require("dlv"));
|
|
11
|
+
|
|
12
|
+
var _reactQuery = require("react-query");
|
|
13
|
+
|
|
14
|
+
var _Documents = _interopRequireDefault(require("./Documents"));
|
|
15
|
+
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
|
|
18
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
19
|
+
|
|
20
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
21
|
+
|
|
22
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
23
|
+
|
|
24
|
+
var queryClient = new _reactQuery.QueryClient();
|
|
25
|
+
|
|
26
|
+
function DocumentsPane(_ref) {
|
|
27
|
+
var sanityDocument = _ref.document,
|
|
28
|
+
options = _ref.options;
|
|
29
|
+
var query = options.query,
|
|
30
|
+
params = options.params,
|
|
31
|
+
useDraft = options.useDraft,
|
|
32
|
+
debug = options.debug;
|
|
33
|
+
var doc = useDraft ? sanityDocument.displayed : sanityDocument.published;
|
|
34
|
+
|
|
35
|
+
var _ref2 = doc !== null && doc !== void 0 ? doc : {},
|
|
36
|
+
_id = _ref2._id,
|
|
37
|
+
_rev = _ref2._rev;
|
|
38
|
+
|
|
39
|
+
var paramValues = Object.keys(params).reduce((acc, key) => _objectSpread(_objectSpread({}, acc), {}, {
|
|
40
|
+
[key]: (0, _dlv.default)(doc, params[key])
|
|
41
|
+
}), {});
|
|
42
|
+
return /*#__PURE__*/_react.default.createElement(_reactQuery.QueryClientProvider, {
|
|
43
|
+
client: queryClient
|
|
44
|
+
}, /*#__PURE__*/_react.default.createElement(_Documents.default, {
|
|
45
|
+
_rev: _rev,
|
|
46
|
+
query: query,
|
|
47
|
+
params: paramValues,
|
|
48
|
+
debug: debug
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=DocumentsPane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/DocumentsPane.tsx"],"names":["queryClient","QueryClient","DocumentsPane","sanityDocument","document","options","query","params","useDraft","debug","doc","displayed","published","_id","_rev","paramValues","Object","keys","reduce","acc","key"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;;;;;;;;;AAEA,IAAMA,WAAW,GAAG,IAAIC,uBAAJ,EAApB;;AAEe,SAASC,aAAT,OAA4D;AAAA,MAA1BC,cAA0B,QAApCC,QAAoC;AAAA,MAAVC,OAAU,QAAVA,OAAU;AACzE,MAAOC,KAAP,GAAyCD,OAAzC,CAAOC,KAAP;AAAA,MAAcC,MAAd,GAAyCF,OAAzC,CAAcE,MAAd;AAAA,MAAsBC,QAAtB,GAAyCH,OAAzC,CAAsBG,QAAtB;AAAA,MAAgCC,KAAhC,GAAyCJ,OAAzC,CAAgCI,KAAhC;AAEA,MAAMC,GAAG,GAAGF,QAAQ,GAAGL,cAAc,CAACQ,SAAlB,GAA8BR,cAAc,CAACS,SAAjE;;AACA,cAAoBF,GAApB,aAAoBA,GAApB,cAAoBA,GAApB,GAA2B,EAA3B;AAAA,MAAOG,GAAP,SAAOA,GAAP;AAAA,MAAYC,IAAZ,SAAYA,IAAZ;;AAEA,MAAMC,WAAW,GAAGC,MAAM,CAACC,IAAP,CAAYV,MAAZ,EAAoBW,MAApB,CAClB,CAACC,GAAD,EAAMC,GAAN,qCAAmBD,GAAnB;AAAwB,KAACC,GAAD,GAAO,kBAAMV,GAAN,EAAWH,MAAM,CAACa,GAAD,CAAjB;AAA/B,IADkB,EAElB,EAFkB,CAApB;AAKA,sBACE,6BAAC,+BAAD;AAAqB,IAAA,MAAM,EAAEpB;AAA7B,kBACE,6BAAC,kBAAD;AAAW,IAAA,IAAI,EAAEc,IAAjB;AAAuB,IAAA,KAAK,EAAER,KAA9B;AAAqC,IAAA,MAAM,EAAES,WAA7C;AAA0D,IAAA,KAAK,EAAEN;AAAjE,IADF,CADF;AAKD","sourcesContent":["import React from 'react'\nimport delve from 'dlv'\nimport {QueryClient, QueryClientProvider} from 'react-query'\n\nimport Documents from './Documents'\n\nconst queryClient = new QueryClient()\n\nexport default function DocumentsPane({document: sanityDocument, options}) {\n const {query, params, useDraft, debug} = options\n\n const doc = useDraft ? sanityDocument.displayed : sanityDocument.published\n const {_id, _rev} = doc ?? {}\n\n const paramValues = Object.keys(params).reduce(\n (acc, key) => ({...acc, [key]: delve(doc, params[key])}),\n {}\n )\n\n return (\n <QueryClientProvider client={queryClient}>\n <Documents _rev={_rev} query={query} params={paramValues} debug={debug} />\n </QueryClientProvider>\n )\n}\n"],"file":"DocumentsPane.js"}
|
package/lib/Feedback.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = Feedback;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _ui = require("@sanity/ui");
|
|
11
|
+
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
|
|
14
|
+
function Feedback(props) {
|
|
15
|
+
var children = props.children,
|
|
16
|
+
_props$tone = props.tone,
|
|
17
|
+
tone = _props$tone === void 0 ? "caution" : _props$tone;
|
|
18
|
+
return /*#__PURE__*/_react.default.createElement(_ui.Card, {
|
|
19
|
+
padding: 3,
|
|
20
|
+
radius: 2,
|
|
21
|
+
shadow: 1,
|
|
22
|
+
tone: tone
|
|
23
|
+
}, /*#__PURE__*/_react.default.createElement(_ui.Text, {
|
|
24
|
+
size: 1
|
|
25
|
+
}, children));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=Feedback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/Feedback.tsx"],"names":["Feedback","props","children","tone"],"mappings":";;;;;;;AAAA;;AACA;;;;AAQe,SAASA,QAAT,CAAkBC,KAAlB,EAAwC;AACrD,MAAOC,QAAP,GAAqCD,KAArC,CAAOC,QAAP;AAAA,oBAAqCD,KAArC,CAAiBE,IAAjB;AAAA,MAAiBA,IAAjB;AAEA,sBACE,6BAAC,QAAD;AAAM,IAAA,OAAO,EAAE,CAAf;AAAkB,IAAA,MAAM,EAAE,CAA1B;AAA6B,IAAA,MAAM,EAAE,CAArC;AAAwC,IAAA,IAAI,EAAEA;AAA9C,kBACE,6BAAC,QAAD;AAAM,IAAA,IAAI,EAAE;AAAZ,KAAgBD,QAAhB,CADF,CADF;AAKD","sourcesContent":["import React from 'react'\nimport {Card, Text} from '@sanity/ui'\nimport type {BadgeTone} from '@sanity/ui'\n\ntype FeedbackProps = {\n children?: React.ReactNode\n tone?: BadgeTone\n}\n\nexport default function Feedback(props: FeedbackProps) {\n const {children, tone = `caution`} = props\n\n return (\n <Card padding={3} radius={2} shadow={1} tone={tone}>\n <Text size={1}>{children}</Text>\n </Card>\n )\n}\n"],"file":"Feedback.js"}
|
package/lib/index.js
CHANGED
|
@@ -3,71 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default =
|
|
6
|
+
exports.default = void 0;
|
|
7
7
|
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
-
|
|
12
|
-
var _dlv = _interopRequireDefault(require("dlv"));
|
|
13
|
-
|
|
14
|
-
var _ui = require("@sanity/ui");
|
|
15
|
-
|
|
16
|
-
var _reactQuery = require("react-query");
|
|
17
|
-
|
|
18
|
-
var _Documents = _interopRequireDefault(require("./Documents"));
|
|
8
|
+
var _DocumentsPane = _interopRequireDefault(require("./DocumentsPane"));
|
|
19
9
|
|
|
20
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
11
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
25
|
-
|
|
26
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
27
|
-
|
|
28
|
-
var queryClient = new _reactQuery.QueryClient();
|
|
29
|
-
|
|
30
|
-
function DocumentsPane(_ref) {
|
|
31
|
-
var sanityDocument = _ref.document,
|
|
32
|
-
options = _ref.options;
|
|
33
|
-
var query = options.query,
|
|
34
|
-
params = options.params,
|
|
35
|
-
useDraft = options.useDraft,
|
|
36
|
-
debug = options.debug;
|
|
37
|
-
var doc = useDraft ? sanityDocument.displayed : sanityDocument.published;
|
|
38
|
-
|
|
39
|
-
var _ref2 = doc !== null && doc !== void 0 ? doc : {},
|
|
40
|
-
_rev = _ref2._rev;
|
|
41
|
-
|
|
42
|
-
var paramValues = Object.keys(params).reduce((acc, key) => _objectSpread(_objectSpread({}, acc), {}, {
|
|
43
|
-
[key]: (0, _dlv.default)(doc, params[key])
|
|
44
|
-
}), {});
|
|
45
|
-
return /*#__PURE__*/_react.default.createElement(_ui.ThemeProvider, {
|
|
46
|
-
theme: _ui.studioTheme
|
|
47
|
-
}, /*#__PURE__*/_react.default.createElement(_reactQuery.QueryClientProvider, {
|
|
48
|
-
client: queryClient
|
|
49
|
-
}, /*#__PURE__*/_react.default.createElement(_Documents.default, {
|
|
50
|
-
_rev: _rev,
|
|
51
|
-
query: query,
|
|
52
|
-
params: paramValues,
|
|
53
|
-
debug: debug
|
|
54
|
-
})));
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
DocumentsPane.propTypes = {
|
|
58
|
-
options: _propTypes.default.shape({
|
|
59
|
-
params: _propTypes.default.object,
|
|
60
|
-
query: _propTypes.default.string,
|
|
61
|
-
useDraft: _propTypes.default.bool,
|
|
62
|
-
debug: _propTypes.default.bool
|
|
63
|
-
})
|
|
64
|
-
};
|
|
65
|
-
DocumentsPane.defaultProps = {
|
|
66
|
-
options: {
|
|
67
|
-
params: {},
|
|
68
|
-
query: "",
|
|
69
|
-
useDraft: false,
|
|
70
|
-
debug: false
|
|
71
|
-
}
|
|
72
|
-
};
|
|
12
|
+
var _default = _DocumentsPane.default;
|
|
13
|
+
exports.default = _default;
|
|
73
14
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["DocumentsPane"],"mappings":";;;;;;;AACA;;;;eAEeA,sB","sourcesContent":["\nimport DocumentsPane from \"./DocumentsPane\";\n\nexport default DocumentsPane\n"],"file":"index.js"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sanity-plugin-documents-pane",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"description": "Displays the results of a GROQ query in a View Pane",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"build": "sanipack build",
|
|
8
8
|
"watch": "sanipack build --watch",
|
|
9
|
-
"
|
|
9
|
+
"_postinstall": "husky install",
|
|
10
|
+
"prepublishOnly": "pinst --disable && sanipack build && sanipack verify",
|
|
11
|
+
"postpublish": "pinst --enable",
|
|
12
|
+
"lint": "eslint .",
|
|
13
|
+
"lint:fix": "eslint . --fix"
|
|
14
|
+
},
|
|
15
|
+
"husky": {
|
|
16
|
+
"hooks": {
|
|
17
|
+
"pre-commit": "npm run lint:fix"
|
|
18
|
+
}
|
|
10
19
|
},
|
|
11
20
|
"repository": {
|
|
12
21
|
"type": "git",
|
|
@@ -19,19 +28,22 @@
|
|
|
19
28
|
"author": "Sanity.io <hello@sanity.io>",
|
|
20
29
|
"license": "MIT",
|
|
21
30
|
"dependencies": {
|
|
31
|
+
"@sanity/base": "^2.29.5",
|
|
32
|
+
"@sanity/desk-tool": "^2.29.5",
|
|
33
|
+
"@sanity/state-router": "^2.29.3",
|
|
22
34
|
"@sanity/ui": "^0.34.6",
|
|
23
35
|
"dlv": "^1.1.3",
|
|
24
|
-
"prop-types": "15.7.2",
|
|
25
36
|
"react-query": "^3.19.1",
|
|
26
|
-
"
|
|
37
|
+
"husky": "^7.0.1"
|
|
27
38
|
},
|
|
28
39
|
"devDependencies": {
|
|
29
40
|
"eslint": "7.31.0",
|
|
30
|
-
"eslint-config-prettier": "8.3.0",
|
|
41
|
+
"eslint-config-prettier": "^8.3.0",
|
|
31
42
|
"eslint-config-sanity": "5.1.0",
|
|
32
|
-
"eslint-plugin-react": "7.24.0",
|
|
33
|
-
"
|
|
34
|
-
"
|
|
43
|
+
"eslint-plugin-react": "^7.24.0",
|
|
44
|
+
"pinst": "^2.1.6",
|
|
45
|
+
"prettier": "^2.3.2",
|
|
46
|
+
"sanipack": "^2.1.0"
|
|
35
47
|
},
|
|
36
48
|
"peerDependencies": {
|
|
37
49
|
"react": "^17.0.0"
|
|
@@ -51,8 +63,7 @@
|
|
|
51
63
|
"extends": [
|
|
52
64
|
"sanity",
|
|
53
65
|
"sanity/react",
|
|
54
|
-
"prettier"
|
|
55
|
-
"prettier/react"
|
|
66
|
+
"prettier"
|
|
56
67
|
]
|
|
57
68
|
}
|
|
58
69
|
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import {useQuery} from 'react-query'
|
|
3
|
+
import {Button, Box, Stack, Flex, Spinner} from '@sanity/ui'
|
|
4
|
+
import {usePaneRouter} from '@sanity/desk-tool'
|
|
5
|
+
import {RouterContext} from '@sanity/state-router/lib/RouterContext'
|
|
6
|
+
import Preview from 'part:@sanity/base/preview'
|
|
7
|
+
import schema from 'part:@sanity/base/schema'
|
|
8
|
+
import sanityClient from 'part:@sanity/base/client'
|
|
9
|
+
|
|
10
|
+
import Debug from './Debug'
|
|
11
|
+
import Feedback from './Feedback'
|
|
12
|
+
|
|
13
|
+
const client = sanityClient.withConfig({apiVersion: `2021-05-19`})
|
|
14
|
+
|
|
15
|
+
export default function Documents(props) {
|
|
16
|
+
const {query, params, debug, _rev} = props
|
|
17
|
+
|
|
18
|
+
const {isLoading, error, data} = useQuery(['useDocuments', {props}], () =>
|
|
19
|
+
client.fetch(query, params)
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
const routerContext = React.useContext(RouterContext)
|
|
23
|
+
const {routerPanesState, groupIndex} = usePaneRouter()
|
|
24
|
+
|
|
25
|
+
const openDocumentInSidePane = React.useCallback(
|
|
26
|
+
(id: string, type: string) => {
|
|
27
|
+
const newPane = [
|
|
28
|
+
{
|
|
29
|
+
id: id,
|
|
30
|
+
params: {type},
|
|
31
|
+
},
|
|
32
|
+
]
|
|
33
|
+
let panes = [routerPanesState[0], routerPanesState[1], newPane]
|
|
34
|
+
|
|
35
|
+
const href = routerContext.resolvePathFromState({panes})
|
|
36
|
+
routerContext.navigateUrl(href)
|
|
37
|
+
},
|
|
38
|
+
[routerContext, routerPanesState, groupIndex]
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
if (!_rev) {
|
|
42
|
+
return (
|
|
43
|
+
<Stack padding={4} space={5}>
|
|
44
|
+
<Feedback>Document must be Published</Feedback>
|
|
45
|
+
{debug && <Debug query={query} params={params} />}
|
|
46
|
+
</Stack>
|
|
47
|
+
)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (isLoading) {
|
|
51
|
+
return (
|
|
52
|
+
<Box padding={4}>
|
|
53
|
+
<Flex justify="center" align="center">
|
|
54
|
+
<Spinner muted />
|
|
55
|
+
</Flex>
|
|
56
|
+
</Box>
|
|
57
|
+
)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (error) {
|
|
61
|
+
return (
|
|
62
|
+
<Stack padding={4} space={5}>
|
|
63
|
+
<Feedback>There was en error performing this query</Feedback>
|
|
64
|
+
{debug && <Debug query={query} params={params} />}
|
|
65
|
+
</Stack>
|
|
66
|
+
)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (!data?.length) {
|
|
70
|
+
return (
|
|
71
|
+
<Stack padding={4} space={5}>
|
|
72
|
+
<Feedback>No Documents found</Feedback>
|
|
73
|
+
{debug && <Debug query={query} params={params} />}
|
|
74
|
+
</Stack>
|
|
75
|
+
)
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return (
|
|
79
|
+
<Stack padding={2} space={2}>
|
|
80
|
+
{data.map((doc) => (
|
|
81
|
+
<Button
|
|
82
|
+
key={doc._id}
|
|
83
|
+
onClick={() => openDocumentInSidePane(doc._id, doc._type)}
|
|
84
|
+
mode="bleed"
|
|
85
|
+
radius={2}
|
|
86
|
+
padding={2}
|
|
87
|
+
>
|
|
88
|
+
<Preview value={doc} type={schema.get(doc._type)} />
|
|
89
|
+
</Button>
|
|
90
|
+
))}
|
|
91
|
+
</Stack>
|
|
92
|
+
)
|
|
93
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import delve from 'dlv'
|
|
3
|
+
import {QueryClient, QueryClientProvider} from 'react-query'
|
|
4
|
+
|
|
5
|
+
import Documents from './Documents'
|
|
6
|
+
|
|
7
|
+
const queryClient = new QueryClient()
|
|
8
|
+
|
|
9
|
+
export default function DocumentsPane({document: sanityDocument, options}) {
|
|
10
|
+
const {query, params, useDraft, debug} = options
|
|
11
|
+
|
|
12
|
+
const doc = useDraft ? sanityDocument.displayed : sanityDocument.published
|
|
13
|
+
const {_id, _rev} = doc ?? {}
|
|
14
|
+
|
|
15
|
+
const paramValues = Object.keys(params).reduce(
|
|
16
|
+
(acc, key) => ({...acc, [key]: delve(doc, params[key])}),
|
|
17
|
+
{}
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
return (
|
|
21
|
+
<QueryClientProvider client={queryClient}>
|
|
22
|
+
<Documents _rev={_rev} query={query} params={paramValues} debug={debug} />
|
|
23
|
+
</QueryClientProvider>
|
|
24
|
+
)
|
|
25
|
+
}
|
package/src/Feedback.tsx
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import {Card, Text} from '@sanity/ui'
|
|
3
|
+
import type {BadgeTone} from '@sanity/ui'
|
|
4
|
+
|
|
5
|
+
type FeedbackProps = {
|
|
6
|
+
children?: React.ReactNode
|
|
7
|
+
tone?: BadgeTone
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export default function Feedback(props: FeedbackProps) {
|
|
11
|
+
const {children, tone = `caution`} = props
|
|
12
|
+
|
|
13
|
+
return (
|
|
14
|
+
<Card padding={3} radius={2} shadow={1} tone={tone}>
|
|
15
|
+
<Text size={1}>{children}</Text>
|
|
16
|
+
</Card>
|
|
17
|
+
)
|
|
18
|
+
}
|
package/src/index.js
CHANGED
|
@@ -1,46 +1,4 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import PropTypes from 'prop-types'
|
|
3
|
-
import delve from 'dlv'
|
|
4
|
-
import {studioTheme, ThemeProvider} from '@sanity/ui'
|
|
5
|
-
import {QueryClient, QueryClientProvider} from 'react-query'
|
|
6
1
|
|
|
7
|
-
import
|
|
2
|
+
import DocumentsPane from "./DocumentsPane";
|
|
8
3
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
export default function DocumentsPane({document: sanityDocument, options}) {
|
|
12
|
-
const {query, params, useDraft, debug} = options
|
|
13
|
-
const doc = useDraft ? sanityDocument.displayed : sanityDocument.published
|
|
14
|
-
const {_rev} = doc ?? {}
|
|
15
|
-
|
|
16
|
-
const paramValues = Object.keys(params).reduce(
|
|
17
|
-
(acc, key) => ({...acc, [key]: delve(doc, params[key])}),
|
|
18
|
-
{}
|
|
19
|
-
)
|
|
20
|
-
|
|
21
|
-
return (
|
|
22
|
-
<ThemeProvider theme={studioTheme}>
|
|
23
|
-
<QueryClientProvider client={queryClient}>
|
|
24
|
-
<Documents _rev={_rev} query={query} params={paramValues} debug={debug} />
|
|
25
|
-
</QueryClientProvider>
|
|
26
|
-
</ThemeProvider>
|
|
27
|
-
)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
DocumentsPane.propTypes = {
|
|
31
|
-
options: PropTypes.shape({
|
|
32
|
-
params: PropTypes.object,
|
|
33
|
-
query: PropTypes.string,
|
|
34
|
-
useDraft: PropTypes.bool,
|
|
35
|
-
debug: PropTypes.bool,
|
|
36
|
-
}),
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
DocumentsPane.defaultProps = {
|
|
40
|
-
options: {
|
|
41
|
-
params: {},
|
|
42
|
-
query: ``,
|
|
43
|
-
useDraft: false,
|
|
44
|
-
debug: false,
|
|
45
|
-
},
|
|
46
|
-
}
|
|
4
|
+
export default DocumentsPane
|
package/lib/Documents.module.css
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
@import 'part:@sanity/base/theme/variables-style';
|
|
2
|
-
|
|
3
|
-
.root {
|
|
4
|
-
/* */
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
.item {
|
|
8
|
-
composes: item from 'part:@sanity/base/theme/layout/selectable-style';
|
|
9
|
-
display: block;
|
|
10
|
-
text-decoration: inherit;
|
|
11
|
-
outline: none;
|
|
12
|
-
margin: 0;
|
|
13
|
-
padding: var(--small-padding) var(--medium-padding);
|
|
14
|
-
}
|
package/src/Documents.js
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import PropTypes from 'prop-types'
|
|
3
|
-
import {IntentLink} from 'part:@sanity/base/router'
|
|
4
|
-
import schema from 'part:@sanity/base/schema'
|
|
5
|
-
import {useQuery} from 'react-query'
|
|
6
|
-
import sanityClient from 'part:@sanity/base/client'
|
|
7
|
-
import {Text, Box, Stack, Flex, Spinner} from '@sanity/ui'
|
|
8
|
-
import Preview from 'part:@sanity/base/preview'
|
|
9
|
-
|
|
10
|
-
import Debug from './Debug'
|
|
11
|
-
import styles from './Documents.module.css'
|
|
12
|
-
|
|
13
|
-
const client = sanityClient.withConfig({apiVersion: `2021-05-19`})
|
|
14
|
-
|
|
15
|
-
export default function Documents(props) {
|
|
16
|
-
const {query, params, debug, _rev} = props
|
|
17
|
-
|
|
18
|
-
const {isLoading, error, data} = useQuery(['useDocuments', { props }], () =>
|
|
19
|
-
client.fetch(query, params)
|
|
20
|
-
)
|
|
21
|
-
|
|
22
|
-
if (!_rev) {
|
|
23
|
-
return (<Stack padding={4} space={5}>
|
|
24
|
-
<Box>
|
|
25
|
-
<Text>Document must be Published</Text>
|
|
26
|
-
</Box>
|
|
27
|
-
{debug && <Debug query={query} params={params} />}
|
|
28
|
-
</Stack>)
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (isLoading) {
|
|
32
|
-
return (
|
|
33
|
-
<Box padding={4}>
|
|
34
|
-
<Flex justify="center" align="center">
|
|
35
|
-
<Spinner muted />
|
|
36
|
-
</Flex>
|
|
37
|
-
</Box>
|
|
38
|
-
)
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
if (error) {
|
|
42
|
-
return (
|
|
43
|
-
<Stack padding={4} space={5}>
|
|
44
|
-
<Box>
|
|
45
|
-
<Text>There was en error performing this query</Text>
|
|
46
|
-
</Box>
|
|
47
|
-
{debug && <Debug query={query} params={params} />}
|
|
48
|
-
</Stack>
|
|
49
|
-
)
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
if (!data?.length) {
|
|
53
|
-
return (
|
|
54
|
-
<Stack padding={4} space={5}>
|
|
55
|
-
<Box>
|
|
56
|
-
<Text>No Documents found</Text>
|
|
57
|
-
</Box>
|
|
58
|
-
{debug && <Debug query={query} params={params} />}
|
|
59
|
-
</Stack>
|
|
60
|
-
)
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
return (
|
|
64
|
-
<Stack className={styles.root}>
|
|
65
|
-
{data.map((doc) => (
|
|
66
|
-
<IntentLink key={doc._id} intent="edit" params={{id: doc._id, type: doc._type}} className={styles.item}>
|
|
67
|
-
<Preview value={doc} type={schema.get(doc._type)} />
|
|
68
|
-
</IntentLink>
|
|
69
|
-
))}
|
|
70
|
-
</Stack>
|
|
71
|
-
)
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
Documents.propTypes = {
|
|
75
|
-
_rev: PropTypes.string,
|
|
76
|
-
params: PropTypes.object,
|
|
77
|
-
query: PropTypes.string,
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
Documents.defaultProps = {
|
|
81
|
-
_rev: ``,
|
|
82
|
-
params: {},
|
|
83
|
-
query: ``,
|
|
84
|
-
}
|
package/src/Documents.module.css
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
@import 'part:@sanity/base/theme/variables-style';
|
|
2
|
-
|
|
3
|
-
.root {
|
|
4
|
-
/* */
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
.item {
|
|
8
|
-
composes: item from 'part:@sanity/base/theme/layout/selectable-style';
|
|
9
|
-
display: block;
|
|
10
|
-
text-decoration: inherit;
|
|
11
|
-
outline: none;
|
|
12
|
-
margin: 0;
|
|
13
|
-
padding: var(--small-padding) var(--medium-padding);
|
|
14
|
-
}
|