@sanity/cross-dataset-duplicator 0.4.0 → 1.0.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/LICENSE +1 -1
- package/README.md +52 -54
- package/lib/index.esm.js +2 -0
- package/lib/index.esm.js.map +1 -0
- package/lib/index.js +2 -21
- package/lib/index.js.map +1 -1
- package/lib/src/index.d.ts +20 -0
- package/package.json +64 -38
- package/sanity.json +2 -10
- package/src/actions/DuplicateToAction.tsx +33 -7
- package/src/components/CrossDatasetDuplicator.tsx +42 -46
- package/src/components/{DuplicatorTool.tsx → Duplicator.tsx} +179 -181
- package/src/components/DuplicatorQuery.tsx +36 -13
- package/src/components/DuplicatorWrapper.tsx +66 -0
- package/src/components/ResetSecret.tsx +9 -9
- package/src/components/SelectButtons.tsx +13 -9
- package/src/components/StatusBadge.tsx +13 -9
- package/src/helpers/clientConfig.ts +1 -1
- package/src/helpers/constants.ts +1 -1
- package/src/helpers/getDocumentsInArray.ts +28 -21
- package/src/helpers/index.ts +6 -10
- package/src/index.ts +36 -0
- package/src/tool/index.ts +14 -10
- package/src/types/index.ts +9 -9
- package/v2-incompatible.js +11 -0
- package/.babelrc +0 -3
- package/.eslintignore +0 -1
- package/config.dist.json +0 -5
- package/lib/actions/DuplicateToAction.js +0 -44
- package/lib/actions/DuplicateToAction.js.map +0 -1
- package/lib/actions/index.js +0 -29
- package/lib/actions/index.js.map +0 -1
- package/lib/components/CrossDatasetDuplicator.js +0 -81
- package/lib/components/CrossDatasetDuplicator.js.map +0 -1
- package/lib/components/DuplicatorQuery.js +0 -105
- package/lib/components/DuplicatorQuery.js.map +0 -1
- package/lib/components/DuplicatorTool.js +0 -556
- package/lib/components/DuplicatorTool.js.map +0 -1
- package/lib/components/Feedback.js +0 -23
- package/lib/components/Feedback.js.map +0 -1
- package/lib/components/ResetSecret.js +0 -34
- package/lib/components/ResetSecret.js.map +0 -1
- package/lib/components/SelectButtons.js +0 -84
- package/lib/components/SelectButtons.js.map +0 -1
- package/lib/components/StatusBadge.js +0 -85
- package/lib/components/StatusBadge.js.map +0 -1
- package/lib/helpers/clientConfig.js +0 -11
- package/lib/helpers/clientConfig.js.map +0 -1
- package/lib/helpers/constants.js +0 -9
- package/lib/helpers/constants.js.map +0 -1
- package/lib/helpers/getDocumentsInArray.js +0 -74
- package/lib/helpers/getDocumentsInArray.js.map +0 -1
- package/lib/helpers/index.js +0 -27
- package/lib/helpers/index.js.map +0 -1
- package/lib/tool/index.js +0 -18
- package/lib/tool/index.js.map +0 -1
- package/lib/types/index.js +0 -2
- package/lib/types/index.js.map +0 -1
- package/src/actions/index.ts +0 -22
- package/src/index.js +0 -7
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = CrossDatasetDuplicator;
|
|
7
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
-
var _sanitySecrets = require("sanity-secrets");
|
|
9
|
-
var _ui = require("@sanity/ui");
|
|
10
|
-
var _DuplicatorQuery = _interopRequireDefault(require("./DuplicatorQuery"));
|
|
11
|
-
var _DuplicatorTool = require("./DuplicatorTool");
|
|
12
|
-
var _ResetSecret = _interopRequireDefault(require("./ResetSecret"));
|
|
13
|
-
var _Feedback = _interopRequireDefault(require("./Feedback"));
|
|
14
|
-
var _constants = require("../helpers/constants");
|
|
15
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
18
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
19
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
20
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
21
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
22
|
-
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
23
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
24
|
-
// Check for auth secret (required for asset uploads)
|
|
25
|
-
var secretConfigKeys = [{
|
|
26
|
-
key: 'bearerToken',
|
|
27
|
-
title: 'An API token with Viewer permissions is required to duplicate the original files of assets, and will be used for all Duplications. Create one at sanity.io/manage',
|
|
28
|
-
description: ''
|
|
29
|
-
}];
|
|
30
|
-
function CrossDatasetDuplicator(props) {
|
|
31
|
-
var _props$mode = props.mode,
|
|
32
|
-
mode = _props$mode === void 0 ? "tool" : _props$mode,
|
|
33
|
-
_props$docs = props.docs,
|
|
34
|
-
docs = _props$docs === void 0 ? [] : _props$docs;
|
|
35
|
-
var secretsData = (0, _sanitySecrets.useSecrets)(_constants.SECRET_NAMESPACE);
|
|
36
|
-
var loading = secretsData.loading,
|
|
37
|
-
secrets = secretsData.secrets;
|
|
38
|
-
var _useState = (0, _react.useState)(false),
|
|
39
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
40
|
-
showSecretsPrompt = _useState2[0],
|
|
41
|
-
setShowSecretsPrompt = _useState2[1];
|
|
42
|
-
(0, _react.useEffect)(() => {
|
|
43
|
-
if (secrets) {
|
|
44
|
-
setShowSecretsPrompt(!(secrets !== null && secrets !== void 0 && secrets.bearerToken));
|
|
45
|
-
}
|
|
46
|
-
}, [secrets]);
|
|
47
|
-
if (!secretsData) {
|
|
48
|
-
return /*#__PURE__*/_react.default.createElement(_Feedback.default, null, "Could not query for Secrets. You may have insufficient permissions on your account.");
|
|
49
|
-
}
|
|
50
|
-
if (loading) {
|
|
51
|
-
return /*#__PURE__*/_react.default.createElement(_ui.ThemeProvider, null, /*#__PURE__*/_react.default.createElement(_ui.Flex, {
|
|
52
|
-
justify: "center",
|
|
53
|
-
align: "center"
|
|
54
|
-
}, /*#__PURE__*/_react.default.createElement(_ui.Box, {
|
|
55
|
-
padding: 5
|
|
56
|
-
}, /*#__PURE__*/_react.default.createElement(_ui.Spinner, null))));
|
|
57
|
-
}
|
|
58
|
-
if (!loading && showSecretsPrompt || !(secrets !== null && secrets !== void 0 && secrets.bearerToken)) {
|
|
59
|
-
return /*#__PURE__*/_react.default.createElement(_ui.ThemeProvider, null, /*#__PURE__*/_react.default.createElement(_sanitySecrets.SettingsView, {
|
|
60
|
-
title: "Token Required",
|
|
61
|
-
namespace: _constants.SECRET_NAMESPACE,
|
|
62
|
-
keys: secretConfigKeys
|
|
63
|
-
// eslint-disable-next-line react/jsx-no-bind
|
|
64
|
-
,
|
|
65
|
-
onClose: () => setShowSecretsPrompt(false)
|
|
66
|
-
}));
|
|
67
|
-
}
|
|
68
|
-
if (mode === 'tool') {
|
|
69
|
-
return /*#__PURE__*/_react.default.createElement(_ui.ThemeProvider, null, /*#__PURE__*/_react.default.createElement(_DuplicatorQuery.default, {
|
|
70
|
-
token: secrets === null || secrets === void 0 ? void 0 : secrets.bearerToken
|
|
71
|
-
}), /*#__PURE__*/_react.default.createElement(_ResetSecret.default, null));
|
|
72
|
-
}
|
|
73
|
-
if (!(docs !== null && docs !== void 0 && docs.length)) {
|
|
74
|
-
return /*#__PURE__*/_react.default.createElement(_ui.ThemeProvider, null, /*#__PURE__*/_react.default.createElement(_Feedback.default, null, "No docs passed into Duplicator Tool"));
|
|
75
|
-
}
|
|
76
|
-
return /*#__PURE__*/_react.default.createElement(_ui.ThemeProvider, null, /*#__PURE__*/_react.default.createElement(_DuplicatorTool.DuplicatorToolWrapper, {
|
|
77
|
-
docs: docs,
|
|
78
|
-
token: secrets === null || secrets === void 0 ? void 0 : secrets.bearerToken
|
|
79
|
-
}));
|
|
80
|
-
}
|
|
81
|
-
//# sourceMappingURL=CrossDatasetDuplicator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CrossDatasetDuplicator.js","names":["secretConfigKeys","key","title","description","CrossDatasetDuplicator","props","mode","docs","secretsData","useSecrets","SECRET_NAMESPACE","loading","secrets","useState","showSecretsPrompt","setShowSecretsPrompt","useEffect","bearerToken","length"],"sources":["../../src/components/CrossDatasetDuplicator.tsx"],"sourcesContent":["import React, {useEffect, useState} from 'react'\nimport {useSecrets, SettingsView} from 'sanity-secrets'\nimport {ThemeProvider, Flex, Box, Spinner} from '@sanity/ui'\n\nimport DuplicatorQuery from './DuplicatorQuery'\nimport {DuplicatorToolWrapper} from './DuplicatorTool'\nimport ResetSecret from './ResetSecret'\nimport Feedback from './Feedback'\nimport {SanityDocument} from '../types'\nimport {SECRET_NAMESPACE} from '../helpers/constants'\n\n// Check for auth secret (required for asset uploads)\nconst secretConfigKeys = [\n {\n key: 'bearerToken',\n title:\n 'An API token with Viewer permissions is required to duplicate the original files of assets, and will be used for all Duplications. Create one at sanity.io/manage',\n description: '',\n },\n]\n\ntype CrossDatasetDuplicatorProps = {\n mode: 'tool' | 'action'\n docs: SanityDocument[]\n}\n\ntype Secrets = {\n bearerToken?: string\n}\n\nexport default function CrossDatasetDuplicator(props: CrossDatasetDuplicatorProps) {\n const {mode = `tool`, docs = []} = props\n\n const secretsData = useSecrets(SECRET_NAMESPACE)\n const {loading, secrets}: {loading: boolean; secrets: Secrets} = secretsData\n const [showSecretsPrompt, setShowSecretsPrompt] = useState(false)\n\n useEffect(() => {\n if (secrets) {\n setShowSecretsPrompt(!secrets?.bearerToken)\n }\n }, [secrets])\n\n if (!secretsData) {\n return (\n <Feedback>\n Could not query for Secrets. You may have insufficient permissions on your account.\n </Feedback>\n )\n }\n\n if (loading) {\n return (\n <ThemeProvider>\n <Flex justify=\"center\" align=\"center\">\n <Box padding={5}>\n <Spinner />\n </Box>\n </Flex>\n </ThemeProvider>\n )\n }\n\n if ((!loading && showSecretsPrompt) || !secrets?.bearerToken) {\n return (\n <ThemeProvider>\n <SettingsView\n title=\"Token Required\"\n namespace={SECRET_NAMESPACE}\n keys={secretConfigKeys}\n // eslint-disable-next-line react/jsx-no-bind\n onClose={() => setShowSecretsPrompt(false)}\n />\n </ThemeProvider>\n )\n }\n\n if (mode === 'tool') {\n return (\n <ThemeProvider>\n <DuplicatorQuery token={secrets?.bearerToken} />\n <ResetSecret />\n </ThemeProvider>\n )\n }\n\n if (!docs?.length) {\n return (\n <ThemeProvider>\n <Feedback>No docs passed into Duplicator Tool</Feedback>\n </ThemeProvider>\n )\n }\n\n return (\n <ThemeProvider>\n <DuplicatorToolWrapper docs={docs} token={secrets?.bearerToken} />\n </ThemeProvider>\n )\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAqD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAErD;AACA,IAAMA,gBAAgB,GAAG,CACvB;EACEC,GAAG,EAAE,aAAa;EAClBC,KAAK,EACH,mKAAmK;EACrKC,WAAW,EAAE;AACf,CAAC,CACF;AAWc,SAASC,sBAAsB,CAACC,KAAkC,EAAE;EACjF,kBAAmCA,KAAK,CAAjCC,IAAI;IAAJA,IAAI;IAAA,cAAwBD,KAAK,CAAlBE,IAAI;IAAJA,IAAI,4BAAG,EAAE;EAE/B,IAAMC,WAAW,GAAG,IAAAC,yBAAU,EAACC,2BAAgB,CAAC;EAChD,IAAOC,OAAO,GAAmDH,WAAW,CAArEG,OAAO;IAAEC,OAAO,GAA0CJ,WAAW,CAA5DI,OAAO;EACvB,gBAAkD,IAAAC,eAAQ,EAAC,KAAK,CAAC;IAAA;IAA1DC,iBAAiB;IAAEC,oBAAoB;EAE9C,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAIJ,OAAO,EAAE;MACXG,oBAAoB,CAAC,EAACH,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEK,WAAW,EAAC;IAC7C;EACF,CAAC,EAAE,CAACL,OAAO,CAAC,CAAC;EAEb,IAAI,CAACJ,WAAW,EAAE;IAChB,oBACE,6BAAC,iBAAQ,8FAEE;EAEf;EAEA,IAAIG,OAAO,EAAE;IACX,oBACE,6BAAC,iBAAa,qBACZ,6BAAC,QAAI;MAAC,OAAO,EAAC,QAAQ;MAAC,KAAK,EAAC;IAAQ,gBACnC,6BAAC,OAAG;MAAC,OAAO,EAAE;IAAE,gBACd,6BAAC,WAAO,OAAG,CACP,CACD,CACO;EAEpB;EAEA,IAAK,CAACA,OAAO,IAAIG,iBAAiB,IAAK,EAACF,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEK,WAAW,GAAE;IAC5D,oBACE,6BAAC,iBAAa,qBACZ,6BAAC,2BAAY;MACX,KAAK,EAAC,gBAAgB;MACtB,SAAS,EAAEP,2BAAiB;MAC5B,IAAI,EAAEV;MACN;MAAA;MACA,OAAO,EAAE,MAAMe,oBAAoB,CAAC,KAAK;IAAE,EAC3C,CACY;EAEpB;EAEA,IAAIT,IAAI,KAAK,MAAM,EAAE;IACnB,oBACE,6BAAC,iBAAa,qBACZ,6BAAC,wBAAe;MAAC,KAAK,EAAEM,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEK;IAAY,EAAG,eAChD,6BAAC,oBAAW,OAAG,CACD;EAEpB;EAEA,IAAI,EAACV,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEW,MAAM,GAAE;IACjB,oBACE,6BAAC,iBAAa,qBACZ,6BAAC,iBAAQ,8CAA+C,CAC1C;EAEpB;EAEA,oBACE,6BAAC,iBAAa,qBACZ,6BAAC,qCAAqB;IAAC,IAAI,EAAEX,IAAK;IAAC,KAAK,EAAEK,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEK;EAAY,EAAG,CACpD;AAEpB"}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = DuplicatorQuery;
|
|
7
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
-
var _client = _interopRequireDefault(require("part:@sanity/base/client"));
|
|
9
|
-
var _schema = _interopRequireDefault(require("part:@sanity/base/schema"));
|
|
10
|
-
var _ui = require("@sanity/ui");
|
|
11
|
-
var _DuplicatorTool = _interopRequireDefault(require("./DuplicatorTool"));
|
|
12
|
-
var _clientConfig = require("../helpers/clientConfig");
|
|
13
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
15
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
16
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
17
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
18
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
19
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
20
|
-
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
21
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
22
|
-
var originClient = _client.default.withConfig(_clientConfig.clientConfig);
|
|
23
|
-
var schemaTypes = _schema.default.getTypeNames();
|
|
24
|
-
function DuplicatorQuery(props) {
|
|
25
|
-
var _initialData$docs2, _initialData$docs3;
|
|
26
|
-
var token = props.token;
|
|
27
|
-
var _useState = (0, _react.useState)(""),
|
|
28
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
29
|
-
value = _useState2[0],
|
|
30
|
-
setValue = _useState2[1];
|
|
31
|
-
var _useState3 = (0, _react.useState)({
|
|
32
|
-
docs: [],
|
|
33
|
-
draftIds: []
|
|
34
|
-
}),
|
|
35
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
36
|
-
initialData = _useState4[0],
|
|
37
|
-
setInitialData = _useState4[1];
|
|
38
|
-
function handleSubmit(e) {
|
|
39
|
-
if (e) e.preventDefault();
|
|
40
|
-
originClient.fetch(value).then(res => {
|
|
41
|
-
// Ensure queried docs are registered to the schema
|
|
42
|
-
var registeredAndPublishedDocs = res.length ? res.filter(doc => schemaTypes.includes(doc._type)).filter(doc => !doc._id.startsWith("drafts.")) : [];
|
|
43
|
-
var initialDraftIds = res.length ? res.filter(doc => doc._id.startsWith("drafts.")).map(doc => doc._id) : [];
|
|
44
|
-
setInitialData({
|
|
45
|
-
docs: registeredAndPublishedDocs,
|
|
46
|
-
draftIds: initialDraftIds
|
|
47
|
-
});
|
|
48
|
-
}).catch(err => console.error(err));
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
// Auto-load initial textinput value
|
|
52
|
-
(0, _react.useEffect)(() => {
|
|
53
|
-
var _initialData$docs;
|
|
54
|
-
if (!((_initialData$docs = initialData.docs) !== null && _initialData$docs !== void 0 && _initialData$docs.length) && value) {
|
|
55
|
-
handleSubmit();
|
|
56
|
-
}
|
|
57
|
-
}, []);
|
|
58
|
-
return /*#__PURE__*/_react.default.createElement(_ui.Container, {
|
|
59
|
-
width: [1, 1, 1, 3],
|
|
60
|
-
padding: [0, 0, 0, 5]
|
|
61
|
-
}, /*#__PURE__*/_react.default.createElement(_ui.Grid, {
|
|
62
|
-
columns: [1, 1, 1, 2],
|
|
63
|
-
gap: [1, 1, 1, 4]
|
|
64
|
-
}, /*#__PURE__*/_react.default.createElement(_ui.Box, {
|
|
65
|
-
padding: [2, 2, 2, 0]
|
|
66
|
-
}, /*#__PURE__*/_react.default.createElement(_ui.Card, {
|
|
67
|
-
padding: 4,
|
|
68
|
-
scheme: "dark",
|
|
69
|
-
radius: 3
|
|
70
|
-
}, /*#__PURE__*/_react.default.createElement(_ui.Stack, {
|
|
71
|
-
space: 4
|
|
72
|
-
}, /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_ui.Label, null, "Initial Documents Query")), /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_ui.Text, null, "Start with a valid GROQ query to load initial documents. The query will need to return an Array of Objects. Drafts will be removed from the results.")), /*#__PURE__*/_react.default.createElement("form", {
|
|
73
|
-
onSubmit: handleSubmit
|
|
74
|
-
}, /*#__PURE__*/_react.default.createElement(_ui.Flex, null, /*#__PURE__*/_react.default.createElement(_ui.Box, {
|
|
75
|
-
flex: 1,
|
|
76
|
-
paddingRight: 2
|
|
77
|
-
}, /*#__PURE__*/_react.default.createElement(_ui.TextInput, {
|
|
78
|
-
style: {
|
|
79
|
-
fontFamily: 'monospace'
|
|
80
|
-
},
|
|
81
|
-
fontSize: 2
|
|
82
|
-
// eslint-disable-next-line react/jsx-no-bind
|
|
83
|
-
,
|
|
84
|
-
onChange: event => setValue(event.currentTarget.value),
|
|
85
|
-
padding: 4,
|
|
86
|
-
placeholder: "*[_type == \"article\"]",
|
|
87
|
-
value: value !== null && value !== void 0 ? value : ""
|
|
88
|
-
})), /*#__PURE__*/_react.default.createElement(_ui.Button, {
|
|
89
|
-
padding: 2,
|
|
90
|
-
paddingX: 4,
|
|
91
|
-
tone: "primary",
|
|
92
|
-
onClick: handleSubmit,
|
|
93
|
-
text: "Query",
|
|
94
|
-
disabled: !value
|
|
95
|
-
})))))), !((_initialData$docs2 = initialData.docs) !== null && _initialData$docs2 !== void 0 && _initialData$docs2.length) || initialData.docs.length < 1 && /*#__PURE__*/_react.default.createElement(_ui.Container, {
|
|
96
|
-
width: 1
|
|
97
|
-
}, /*#__PURE__*/_react.default.createElement(_ui.Card, {
|
|
98
|
-
padding: 5
|
|
99
|
-
}, value ? "No Documents registered to the Schema match this query" : "Start with a valid GROQ query")), ((_initialData$docs3 = initialData.docs) === null || _initialData$docs3 === void 0 ? void 0 : _initialData$docs3.length) > 0 && /*#__PURE__*/_react.default.createElement(_DuplicatorTool.default, {
|
|
100
|
-
docs: initialData.docs,
|
|
101
|
-
draftIds: initialData.draftIds,
|
|
102
|
-
token: token
|
|
103
|
-
})));
|
|
104
|
-
}
|
|
105
|
-
//# sourceMappingURL=DuplicatorQuery.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DuplicatorQuery.js","names":["originClient","sanityClient","withConfig","clientConfig","schemaTypes","schema","getTypeNames","DuplicatorQuery","props","token","useState","value","setValue","docs","draftIds","initialData","setInitialData","handleSubmit","e","preventDefault","fetch","then","res","registeredAndPublishedDocs","length","filter","doc","includes","_type","_id","startsWith","initialDraftIds","map","catch","err","console","error","useEffect","fontFamily","event","currentTarget"],"sources":["../../src/components/DuplicatorQuery.tsx"],"sourcesContent":["import React, {useEffect, useState} from 'react'\nimport sanityClient from 'part:@sanity/base/client'\nimport schema from 'part:@sanity/base/schema'\nimport {Button, Stack, Box, Label, Text, Card, Flex, Grid, Container, TextInput} from '@sanity/ui'\n\nimport DuplicatorTool from './DuplicatorTool'\nimport {clientConfig} from '../helpers/clientConfig'\n\nconst originClient = sanityClient.withConfig(clientConfig)\n\ntype DuplicatorQueryProps = {\n token: string\n}\n\nconst schemaTypes = schema.getTypeNames()\n\nexport default function DuplicatorQuery(props: DuplicatorQueryProps) {\n const {token} = props\n\n const [value, setValue] = useState(``)\n const [initialData, setInitialData] = useState({docs: [], draftIds: []});\n\n function handleSubmit(e?: any) {\n if (e) e.preventDefault()\n\n originClient\n .fetch(value)\n .then((res) => {\n // Ensure queried docs are registered to the schema\n const registeredAndPublishedDocs = res.length\n ? res\n .filter((doc) => schemaTypes.includes(doc._type))\n .filter((doc) => !doc._id.startsWith(`drafts.`))\n : []\n const initialDraftIds = res.length ? res.filter(doc => doc._id.startsWith(`drafts.`)).map(doc => doc._id) : []\n\n setInitialData({docs: registeredAndPublishedDocs, draftIds: initialDraftIds})\n })\n .catch((err) => console.error(err))\n }\n\n // Auto-load initial textinput value\n useEffect(() => {\n if (!initialData.docs?.length && value) {\n handleSubmit()\n }\n }, [])\n\n return (\n <Container width={[1, 1, 1, 3]} padding={[0, 0, 0, 5]}>\n <Grid columns={[1, 1, 1, 2]} gap={[1, 1, 1, 4]}>\n <Box padding={[2, 2, 2, 0]}>\n <Card padding={4} scheme=\"dark\" radius={3}>\n <Stack space={4}>\n <Box>\n <Label>Initial Documents Query</Label>\n </Box>\n <Box>\n <Text>\n Start with a valid GROQ query to load initial documents. The query will need to\n return an Array of Objects. Drafts will be removed from the results.\n </Text>\n </Box>\n <form onSubmit={handleSubmit}>\n <Flex>\n <Box flex={1} paddingRight={2}>\n <TextInput\n style={{fontFamily: 'monospace'}}\n fontSize={2}\n // eslint-disable-next-line react/jsx-no-bind\n onChange={(event) => setValue(event.currentTarget.value)}\n padding={4}\n placeholder={`*[_type == \"article\"]`}\n value={value ?? ``}\n />\n </Box>\n <Button\n padding={2}\n paddingX={4}\n tone=\"primary\"\n onClick={handleSubmit}\n text=\"Query\"\n disabled={!value}\n />\n </Flex>\n </form>\n </Stack>\n </Card>\n </Box>\n {!initialData.docs?.length ||\n (initialData.docs.length < 1 && (\n <Container width={1}>\n <Card padding={5}>\n {value\n ? `No Documents registered to the Schema match this query`\n : `Start with a valid GROQ query`}\n </Card>\n </Container>\n ))}\n {initialData.docs?.length > 0 && <DuplicatorTool docs={initialData.docs} draftIds={initialData.draftIds} token={token} />}\n </Grid>\n </Container>\n )\n}\n"],"mappings":"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"}
|