@sanity/orderable-document-list 0.0.6 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -38,11 +38,22 @@ export default () =>
38
38
  type: 'project',
39
39
  title: 'Projects',
40
40
  icon: Paint
41
+ // See notes on adding a `filter` below
42
+ filter: `__i18n_lang == $lang`,
43
+ params: {
44
+ lang: 'en_US'
45
+ },
41
46
  }),
42
47
 
43
48
  // ... all other desk items
44
49
  ```
45
50
 
51
+ ** Caution: Adding a `filter` **
52
+
53
+ By default, the plugin will display _all_ documents of the same `type`. However, you may wish to add a `filter` to reduce this down to a subset of documents. A typical usecase is for [internationalized document schema](https://github.com/sanity-io/document-internationalization) to order documents of just the base language version.
54
+
55
+ However, order ranks are still computed based on _all_ documents of the same `type`. Creating multiple lists with different `filter` settings could produce unexpected results.
56
+
46
57
  ### 2. Add the `orderRank` field to your schema(s).
47
58
 
48
59
  You must pass in the `type` of the schema, to create an `initialValue` value.
@@ -97,7 +108,6 @@ To get this first version out the door there are few configuration settings and
97
108
 
98
109
  - The `name` of the `orderRank` field is constant
99
110
  - The ability to only sort across _all_ Documents of a `type`
100
- - The absence of a `filter` configuration on the Document List
101
111
 
102
112
  Feedback and PRs welcome :)
103
113
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Document.js"],"names":["Document","doc","increment","entities","handleSelect","index","isFirst","isLast","OrderableContext","showIncrements","flexShrink","_id","ChevronUpIcon","ChevronDownIcon","width","e","nativeEvent","schema","get","_type","propTypes","PropTypes","shape","string","isRequired","arrayOf","func","number","bool"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;;;;;AAPA;AASe,SAASA,QAAT,OAAoF;AAAA,MAAjEC,GAAiE,QAAjEA,GAAiE;AAAA,MAA5DC,SAA4D,QAA5DA,SAA4D;AAAA,MAAjDC,QAAiD,QAAjDA,QAAiD;AAAA,MAAvCC,YAAuC,QAAvCA,YAAuC;AAAA,MAAzBC,KAAyB,QAAzBA,KAAyB;AAAA,MAAlBC,OAAkB,QAAlBA,OAAkB;AAAA,MAATC,MAAS,QAATA,MAAS;;AACjG,oBAAyB,uBAAWC,kCAAX,CAAzB;AAAA,MAAOC,cAAP,eAAOA,cAAP;;AAEA,sBACE,6BAAC,QAAD;AAAM,IAAA,KAAK,EAAC;AAAZ,kBACE,6BAAC,OAAD;AAAK,IAAA,QAAQ,EAAE,CAAf;AAAkB,IAAA,KAAK,EAAE;AAACC,MAAAA,UAAU,EAAE;AAAb;AAAzB,kBACE,6BAAC,QAAD;AAAM,IAAA,QAAQ,EAAE;AAAhB,kBACE,6BAAC,qBAAD,OADF,CADF,CADF,EAMGD,cAAc,iBACb,6BAAC,QAAD;AAAM,IAAA,KAAK,EAAE;AAACC,MAAAA,UAAU,EAAE;AAAb,KAAb;AAA8B,IAAA,KAAK,EAAC,QAApC;AAA6C,IAAA,GAAG,EAAE,CAAlD;AAAqD,IAAA,YAAY,EAAE;AAAnE,kBACE,6BAAC,UAAD;AACE,IAAA,OAAO,EAAE,CADX;AAEE,IAAA,IAAI,EAAC,OAFP;AAGE,IAAA,OAAO,EAAE,MAAMR,SAAS,CAACG,KAAD,EAAQA,KAAK,GAAG,CAAC,CAAjB,EAAoBJ,GAAG,CAACU,GAAxB,EAA6BR,QAA7B,CAH1B;AAIE,IAAA,QAAQ,EAAEG,OAJZ;AAKE,IAAA,IAAI,EAAEM;AALR,IADF,eAQE,6BAAC,UAAD;AACE,IAAA,OAAO,EAAE,CADX;AAEE,IAAA,IAAI,EAAC,OAFP;AAGE,IAAA,QAAQ,EAAEL,MAHZ;AAIE,IAAA,OAAO,EAAE,MAAML,SAAS,CAACG,KAAD,EAAQA,KAAK,GAAG,CAAhB,EAAmBJ,GAAG,CAACU,GAAvB,EAA4BR,QAA5B,CAJ1B;AAKE,IAAA,IAAI,EAAEU;AALR,IARF,CAPJ,eAwBE,6BAAC,UAAD;AACE,IAAA,KAAK,EAAE;AAACC,MAAAA,KAAK;AAAN,KADT;AAEE,IAAA,OAAO,EAAE,CAFX;AAGE,IAAA,IAAI,EAAC,OAHP;AAIE,IAAA,OAAO,EAAGC,CAAD,IAAOX,YAAY,CAACH,GAAG,CAACU,GAAL,EAAUN,KAAV,EAAiBU,CAAC,CAACC,WAAnB;AAJ9B,kBAME,6BAAC,QAAD;AAAM,IAAA,IAAI,EAAE,CAAZ;AAAe,IAAA,KAAK,EAAC;AAArB,kBACE,6BAAC,OAAD;AAAK,IAAA,IAAI,EAAE;AAAX,kBACE,6BAAC,gBAAD;AAAS,IAAA,KAAK,EAAEf,GAAhB;AAAqB,IAAA,IAAI,EAAEgB,gBAAOC,GAAP,CAAWjB,GAAG,CAACkB,KAAf;AAA3B,IADF,CADF,CANF,CAxBF,CADF;AAuCD;;AAEDnB,QAAQ,CAACoB,SAAT,GAAqB;AACnBnB,EAAAA,GAAG,EAAEoB,mBAAUC,KAAV,CAAgB;AACnBX,IAAAA,GAAG,EAAEU,mBAAUE,MADI;AAEnBJ,IAAAA,KAAK,EAAEE,mBAAUE;AAFE,GAAhB,EAGFC,UAJgB;AAKnBrB,EAAAA,QAAQ,EAAEkB,mBAAUI,OAAV,CACRJ,mBAAUC,KAAV,CAAgB;AACdX,IAAAA,GAAG,EAAEU,mBAAUE;AADD,GAAhB,EAEGC,UAHK,EAIRA,UATiB;AAUnBpB,EAAAA,YAAY,EAAEiB,mBAAUK,IAAV,CAAeF,UAVV;AAWnBtB,EAAAA,SAAS,EAAEmB,mBAAUK,IAAV,CAAeF,UAXP;AAYnBnB,EAAAA,KAAK,EAAEgB,mBAAUM,MAAV,CAAiBH,UAZL;AAanBlB,EAAAA,OAAO,EAAEe,mBAAUO,IAAV,CAAeJ,UAbL;AAcnBjB,EAAAA,MAAM,EAAEc,mBAAUO,IAAV,CAAeJ;AAdJ,CAArB","sourcesContent":["import PropTypes from 'prop-types'\n// eslint-disable-next-line no-unused-vars\nimport React, {useContext} from 'react'\nimport {DragHandleIcon, ChevronUpIcon, ChevronDownIcon} from '@sanity/icons'\nimport {Text, Flex, Box, Button} from '@sanity/ui'\nimport Preview from 'part:@sanity/base/preview'\nimport schema from 'part:@sanity/base/schema'\n\nimport {OrderableContext} from './OrderableContext'\n\nexport default function Document({doc, increment, entities, handleSelect, index, isFirst, isLast}) {\n const {showIncrements} = useContext(OrderableContext)\n\n return (\n <Flex align=\"center\">\n <Box paddingX={3} style={{flexShrink: 0}}>\n <Text fontSize={4}>\n <DragHandleIcon />\n </Text>\n </Box>\n {showIncrements && (\n <Flex style={{flexShrink: 0}} align=\"center\" gap={1} paddingRight={1}>\n <Button\n padding={2}\n mode=\"ghost\"\n onClick={() => increment(index, index + -1, doc._id, entities)}\n disabled={isFirst}\n icon={ChevronUpIcon}\n />\n <Button\n padding={2}\n mode=\"ghost\"\n disabled={isLast}\n onClick={() => increment(index, index + 1, doc._id, entities)}\n icon={ChevronDownIcon}\n />\n </Flex>\n )}\n <Button\n style={{width: `100%`}}\n padding={2}\n mode=\"bleed\"\n onClick={(e) => handleSelect(doc._id, index, e.nativeEvent)}\n >\n <Flex flex={1} align=\"center\">\n <Box flex={1}>\n <Preview value={doc} type={schema.get(doc._type)} />\n </Box>\n </Flex>\n </Button>\n </Flex>\n )\n}\n\nDocument.propTypes = {\n doc: PropTypes.shape({\n _id: PropTypes.string,\n _type: PropTypes.string,\n }).isRequired,\n entities: PropTypes.arrayOf(\n PropTypes.shape({\n _id: PropTypes.string,\n }).isRequired\n ).isRequired,\n handleSelect: PropTypes.func.isRequired,\n increment: PropTypes.func.isRequired,\n index: PropTypes.number.isRequired,\n isFirst: PropTypes.bool.isRequired,\n isLast: PropTypes.bool.isRequired,\n}\n"],"file":"Document.js"}
1
+ {"version":3,"file":"Document.js","names":["Document","doc","increment","entities","handleSelect","index","isFirst","isLast","useContext","OrderableContext","showIncrements","flexShrink","_id","ChevronUpIcon","ChevronDownIcon","width","e","nativeEvent","schema","get","_type","propTypes","PropTypes","shape","string","isRequired","arrayOf","func","number","bool"],"sources":["../src/Document.js"],"sourcesContent":["import PropTypes from 'prop-types'\n// eslint-disable-next-line no-unused-vars\nimport React, {useContext} from 'react'\nimport {DragHandleIcon, ChevronUpIcon, ChevronDownIcon} from '@sanity/icons'\nimport {Text, Flex, Box, Button} from '@sanity/ui'\nimport Preview from 'part:@sanity/base/preview'\nimport schema from 'part:@sanity/base/schema'\n\nimport {OrderableContext} from './OrderableContext'\n\nexport default function Document({doc, increment, entities, handleSelect, index, isFirst, isLast}) {\n const {showIncrements} = useContext(OrderableContext)\n\n return (\n <Flex align=\"center\">\n <Box paddingX={3} style={{flexShrink: 0}}>\n <Text fontSize={4}>\n <DragHandleIcon />\n </Text>\n </Box>\n {showIncrements && (\n <Flex style={{flexShrink: 0}} align=\"center\" gap={1} paddingRight={1}>\n <Button\n padding={2}\n mode=\"ghost\"\n onClick={() => increment(index, index + -1, doc._id, entities)}\n disabled={isFirst}\n icon={ChevronUpIcon}\n />\n <Button\n padding={2}\n mode=\"ghost\"\n disabled={isLast}\n onClick={() => increment(index, index + 1, doc._id, entities)}\n icon={ChevronDownIcon}\n />\n </Flex>\n )}\n <Button\n style={{width: `100%`}}\n padding={2}\n mode=\"bleed\"\n onClick={(e) => handleSelect(doc._id, index, e.nativeEvent)}\n >\n <Flex flex={1} align=\"center\">\n <Box flex={1}>\n <Preview value={doc} type={schema.get(doc._type)} />\n </Box>\n </Flex>\n </Button>\n </Flex>\n )\n}\n\nDocument.propTypes = {\n doc: PropTypes.shape({\n _id: PropTypes.string,\n _type: PropTypes.string,\n }).isRequired,\n entities: PropTypes.arrayOf(\n PropTypes.shape({\n _id: PropTypes.string,\n }).isRequired\n ).isRequired,\n handleSelect: PropTypes.func.isRequired,\n increment: PropTypes.func.isRequired,\n index: PropTypes.number.isRequired,\n isFirst: PropTypes.bool.isRequired,\n isLast: PropTypes.bool.isRequired,\n}\n"],"mappings":"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"}
@@ -46,7 +46,9 @@ var client = _client.default.withConfig({
46
46
  });
47
47
 
48
48
  function DocumentListQuery(_ref) {
49
- var type = _ref.type;
49
+ var type = _ref.type,
50
+ filter = _ref.filter,
51
+ params = _ref.params;
50
52
 
51
53
  var _useState = (0, _react.useState)(true),
52
54
  _useState2 = _slicedToArray(_useState, 2),
@@ -64,11 +66,11 @@ function DocumentListQuery(_ref) {
64
66
  setData = _useState6[1];
65
67
 
66
68
  (0, _react.useEffect)(() => {
67
- var query = "*[_type == $type]|order(@[$order] asc){\n _id, _type, ".concat(_constants.ORDER_FIELD_NAME, "\n }");
68
- var queryParams = {
69
+ var query = "*[_type == $type ".concat(filter ? "&& ".concat(filter) : '', "]|order(@[$order] asc){\n _id, _type, ").concat(_constants.ORDER_FIELD_NAME, "\n }");
70
+ var queryParams = Object.assign(params, {
69
71
  type,
70
72
  order: _constants.ORDER_FIELD_NAME
71
- };
73
+ });
72
74
  var subscription = null; // eslint-disable-next-line require-await
73
75
 
74
76
  var fetchData = /*#__PURE__*/function () {
@@ -150,6 +152,12 @@ function DocumentListQuery(_ref) {
150
152
  }
151
153
 
152
154
  DocumentListQuery.propTypes = {
153
- type: _propTypes.default.string.isRequired
155
+ type: _propTypes.default.string.isRequired,
156
+ filter: _propTypes.default.string,
157
+ params: _propTypes.default.object
158
+ };
159
+ DocumentListQuery.defaultProps = {
160
+ filter: "",
161
+ params: {}
154
162
  };
155
163
  //# sourceMappingURL=DocumentListQuery.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/DocumentListQuery.js"],"names":["client","sanityClient","withConfig","apiVersion","DocumentListQuery","type","isLoading","setIsLoading","listIsUpdating","setListIsUpdating","data","setData","query","ORDER_FIELD_NAME","queryParams","order","subscription","fetchData","fetch","then","documents","filteredDocuments","reduce","acc","cur","_id","startsWith","alsoHasDraft","some","doc","prepareData","listen","subscribe","length","unsubscribe","unorderedDataCount","filter","width","height","overflow","propTypes","PropTypes","string","isRequired"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types'\nimport React, {useEffect, useState, useMemo} from 'react'\nimport sanityClient from 'part:@sanity/base/client'\nimport {Stack, Box, Flex, Spinner} from '@sanity/ui'\n\nimport DraggableList from './DraggableList'\nimport {ORDER_FIELD_NAME} from './helpers/constants'\nimport Feedback from './Feedback'\n\nconst client = sanityClient.withConfig({\n apiVersion: '2021-09-01',\n})\n\nexport default function DocumentListQuery({type}) {\n const [isLoading, setIsLoading] = useState(true)\n const [listIsUpdating, setListIsUpdating] = useState(false)\n const [data, setData] = useState([])\n\n useEffect(() => {\n const query = `*[_type == $type]|order(@[$order] asc){\n _id, _type, ${ORDER_FIELD_NAME}\n }`\n const queryParams = {type, order: ORDER_FIELD_NAME}\n let subscription = null\n\n // eslint-disable-next-line require-await\n const fetchData = async () => {\n client.fetch(query, queryParams).then((documents) => {\n // Remove published document from list if draft also exists\n const filteredDocuments = documents.reduce((acc, cur) => {\n if (!cur._id.startsWith(`drafts.`)) {\n // eslint-disable-next-line max-nested-callbacks\n const alsoHasDraft = documents.some((doc) => doc._id === `drafts.${cur._id}`)\n\n return alsoHasDraft ? acc : [...acc, cur]\n }\n\n return [...acc, cur]\n }, [])\n\n setData(filteredDocuments)\n\n if (isLoading) {\n setIsLoading(false)\n }\n })\n }\n\n const prepareData = async () => {\n setIsLoading(true)\n\n await fetchData()\n\n if (!subscription) {\n subscription = client.listen(query, queryParams).subscribe(() => fetchData())\n }\n }\n\n // Get data but only if a document isn't being patched or we don't yet have data\n if (!listIsUpdating && !data.length) {\n prepareData()\n }\n\n return () => subscription?.unsubscribe()\n /* eslint-disable-next-line react-hooks/exhaustive-deps */\n }, [type])\n\n const unorderedDataCount = useMemo(\n () => (data.length ? data.filter((doc) => !doc[ORDER_FIELD_NAME]).length : 0),\n [data]\n )\n\n if (isLoading)\n return (\n <Flex style={{width: `100%`, height: `100%`}} align=\"center\" justify=\"center\">\n <Spinner />\n </Flex>\n )\n\n return (\n <Stack space={1} style={{overflow: `scroll`, height: `100%`}}>\n {unorderedDataCount > 0 && (\n <Feedback>\n {unorderedDataCount}/{data.length} Documents have no Order. Select{' '}\n <strong>Reset Order</strong> from the Menu above to fix.\n </Feedback>\n )}\n <Box padding={1}>\n <DraggableList\n data={data}\n type={type}\n listIsUpdating={listIsUpdating}\n setListIsUpdating={setListIsUpdating}\n />\n </Box>\n </Stack>\n )\n}\n\nDocumentListQuery.propTypes = {\n type: PropTypes.string.isRequired,\n}\n"],"file":"DocumentListQuery.js"}
1
+ {"version":3,"file":"DocumentListQuery.js","names":["client","sanityClient","withConfig","apiVersion","DocumentListQuery","type","filter","params","useState","isLoading","setIsLoading","listIsUpdating","setListIsUpdating","data","setData","useEffect","query","ORDER_FIELD_NAME","queryParams","Object","assign","order","subscription","fetchData","fetch","then","documents","filteredDocuments","reduce","acc","cur","_id","startsWith","alsoHasDraft","some","doc","prepareData","listen","subscribe","length","unsubscribe","unorderedDataCount","useMemo","width","height","overflow","propTypes","PropTypes","string","isRequired","object","defaultProps"],"sources":["../src/DocumentListQuery.js"],"sourcesContent":["import PropTypes from 'prop-types'\nimport React, {useEffect, useState, useMemo} from 'react'\nimport sanityClient from 'part:@sanity/base/client'\nimport {Stack, Box, Flex, Spinner} from '@sanity/ui'\n\nimport DraggableList from './DraggableList'\nimport {ORDER_FIELD_NAME} from './helpers/constants'\nimport Feedback from './Feedback'\n\nconst client = sanityClient.withConfig({\n apiVersion: '2021-09-01',\n})\n\nexport default function DocumentListQuery({type, filter, params}) {\n const [isLoading, setIsLoading] = useState(true)\n const [listIsUpdating, setListIsUpdating] = useState(false)\n const [data, setData] = useState([])\n\n useEffect(() => {\n const query = `*[_type == $type ${filter ? `&& ${filter}` : ''}]|order(@[$order] asc){\n _id, _type, ${ORDER_FIELD_NAME}\n }`\n const queryParams = Object.assign(params, {type, order: ORDER_FIELD_NAME})\n let subscription = null\n\n // eslint-disable-next-line require-await\n const fetchData = async () => {\n client.fetch(query, queryParams).then((documents) => {\n // Remove published document from list if draft also exists\n const filteredDocuments = documents.reduce((acc, cur) => {\n if (!cur._id.startsWith(`drafts.`)) {\n // eslint-disable-next-line max-nested-callbacks\n const alsoHasDraft = documents.some((doc) => doc._id === `drafts.${cur._id}`)\n\n return alsoHasDraft ? acc : [...acc, cur]\n }\n\n return [...acc, cur]\n }, [])\n\n setData(filteredDocuments)\n\n if (isLoading) {\n setIsLoading(false)\n }\n })\n }\n\n const prepareData = async () => {\n setIsLoading(true)\n\n await fetchData()\n\n if (!subscription) {\n subscription = client.listen(query, queryParams).subscribe(() => fetchData())\n }\n }\n\n // Get data but only if a document isn't being patched or we don't yet have data\n if (!listIsUpdating && !data.length) {\n prepareData()\n }\n\n return () => subscription?.unsubscribe()\n /* eslint-disable-next-line react-hooks/exhaustive-deps */\n }, [type])\n\n const unorderedDataCount = useMemo(\n () => (data.length ? data.filter((doc) => !doc[ORDER_FIELD_NAME]).length : 0),\n [data]\n )\n\n if (isLoading)\n return (\n <Flex style={{width: `100%`, height: `100%`}} align=\"center\" justify=\"center\">\n <Spinner />\n </Flex>\n )\n\n return (\n <Stack space={1} style={{overflow: `scroll`, height: `100%`}}>\n {unorderedDataCount > 0 && (\n <Feedback>\n {unorderedDataCount}/{data.length} Documents have no Order. Select{' '}\n <strong>Reset Order</strong> from the Menu above to fix.\n </Feedback>\n )}\n <Box padding={1}>\n <DraggableList\n data={data}\n type={type}\n listIsUpdating={listIsUpdating}\n setListIsUpdating={setListIsUpdating}\n />\n </Box>\n </Stack>\n )\n}\n\nDocumentListQuery.propTypes = {\n type: PropTypes.string.isRequired,\n filter: PropTypes.string,\n params: PropTypes.object,\n}\n\nDocumentListQuery.defaultProps = {\n filter: ``,\n params: {},\n}\n"],"mappings":"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"}
@@ -33,6 +33,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
33
33
  // 2. Setup context for showIncrements
34
34
  function DocumentListWrapper(_ref) {
35
35
  var type = _ref.type,
36
+ filter = _ref.filter,
37
+ params = _ref.params,
36
38
  showIncrements = _ref.showIncrements,
37
39
  resetOrderTransaction = _ref.resetOrderTransaction;
38
40
  var toast = (0, _ui.useToast)();
@@ -82,16 +84,24 @@ function DocumentListWrapper(_ref) {
82
84
  showIncrements
83
85
  }
84
86
  }, /*#__PURE__*/_react.default.createElement(_DocumentListQuery.default, {
85
- type: type
87
+ type: type,
88
+ filter: filter,
89
+ params: params
86
90
  }));
87
91
  }
88
92
 
89
93
  DocumentListWrapper.propTypes = {
90
94
  showIncrements: _propTypes.default.bool.isRequired,
91
95
  type: _propTypes.default.string.isRequired,
96
+ filter: _propTypes.default.string,
97
+ params: _propTypes.default.object,
92
98
  resetOrderTransaction: _propTypes.default.shape({
93
99
  title: _propTypes.default.string,
94
100
  status: _propTypes.default.string
95
101
  }).isRequired
96
102
  };
103
+ DocumentListWrapper.defaultProps = {
104
+ filter: "",
105
+ params: {}
106
+ };
97
107
  //# sourceMappingURL=DocumentListWrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/DocumentListWrapper.js"],"names":["DocumentListWrapper","type","showIncrements","resetOrderTransaction","toast","title","status","push","schemaIsInvalid","typeSchema","schema","get","fields","some","field","name","ORDER_FIELD_NAME","propTypes","PropTypes","bool","isRequired","string","shape"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AAEA;;AACA;;;;;;;;AAEA;AACA;AACe,SAASA,mBAAT,OAA4E;AAAA,MAA9CC,IAA8C,QAA9CA,IAA8C;AAAA,MAAxCC,cAAwC,QAAxCA,cAAwC;AAAA,MAAxBC,qBAAwB,QAAxBA,qBAAwB;AACzF,MAAMC,KAAK,GAAG,mBAAd;AAEA,wBAAU,MAAM;AACd,QAAID,qBAAqB,SAArB,IAAAA,qBAAqB,WAArB,IAAAA,qBAAqB,CAAEE,KAAvB,IAAgCF,qBAAhC,aAAgCA,qBAAhC,eAAgCA,qBAAqB,CAAEG,MAA3D,EAAmE;AACjEF,MAAAA,KAAK,CAACG,IAAN,CAAWJ,qBAAX;AACD;AACD;;AACD,GALD,EAKG,CAACA,qBAAD,CALH;AAOA,MAAMK,eAAe,GAAG,oBAAQ,MAAM;AACpC;AACA,QAAI,CAACP,IAAL,EAAW;AACT,0BACE,gFACK,kDADL,oBADF;AAKD;;AAED,QAAMQ,UAAU,GAAGC,gBAAOC,GAAP,CAAWV,IAAX,CAAnB,CAVoC,CAYpC;;;AACA,QAAI,CAACQ,UAAL,EAAiB;AACf,0BACE,oFACS,2CAAOR,IAAP,CADT,eADF;AAKD,KAnBmC,CAqBpC;;;AACA,QAAI,CAACQ,UAAU,CAACG,MAAX,CAAkBC,IAAlB,CAAwBC,KAAD,IAAW,CAAAA,KAAK,SAAL,IAAAA,KAAK,WAAL,YAAAA,KAAK,CAAEC,IAAP,MAAgBC,2BAAlD,CAAL,EAA0E;AACxE,0BACE,oFACS,2CAAOf,IAAP,CADT,iCAC0C,mDAD1C,oBAC2E,GAD3E,eAEE,oDAFF,CADF;AAMD,KA7BmC,CA+BpC;;;AACA,QACEQ,UAAU,CAACG,MAAX,CAAkBC,IAAlB,CACGC,KAAD;AAAA;;AAAA,aAAW,CAAAA,KAAK,SAAL,IAAAA,KAAK,WAAL,YAAAA,KAAK,CAAEC,IAAP,MAAgBC,2BAAhB,IAAoC,CAAAF,KAAK,SAAL,IAAAA,KAAK,WAAL,2BAAAA,KAAK,CAAEb,IAAP,4DAAac,IAAb,MAAsB,QAArE;AAAA,KADF,CADF,EAIE;AACA,0BACE,yEACE,2CAAOC,2BAAP,CADF,oCACkD,2CAAOf,IAAP,CADlD,cAC8E,GAD9E,eAEE,oDAFF,UADF;AAMD;;AAED;AACD,GA9CuB,EA8CrB,CAACA,IAAD,CA9CqB,CAAxB;;AAgDA,MAAIO,eAAJ,EAAqB;AACnB,wBAAO,6BAAC,iBAAD,QAAWA,eAAX,CAAP;AACD;;AAED,sBACE,6BAAC,kCAAD,CAAkB,QAAlB;AAA2B,IAAA,KAAK,EAAE;AAACN,MAAAA;AAAD;AAAlC,kBACE,6BAAC,0BAAD;AAAmB,IAAA,IAAI,EAAED;AAAzB,IADF,CADF;AAKD;;AAEDD,mBAAmB,CAACiB,SAApB,GAAgC;AAC9Bf,EAAAA,cAAc,EAAEgB,mBAAUC,IAAV,CAAeC,UADD;AAE9BnB,EAAAA,IAAI,EAAEiB,mBAAUG,MAAV,CAAiBD,UAFO;AAG9BjB,EAAAA,qBAAqB,EAAEe,mBAAUI,KAAV,CAAgB;AACrCjB,IAAAA,KAAK,EAAEa,mBAAUG,MADoB;AAErCf,IAAAA,MAAM,EAAEY,mBAAUG;AAFmB,GAAhB,EAGpBD;AAN2B,CAAhC","sourcesContent":["import PropTypes from 'prop-types'\nimport React, {useMemo, useEffect} from 'react'\nimport schema from 'part:@sanity/base/schema'\nimport {useToast} from '@sanity/ui'\nimport {PaneRouterContext} from '@sanity/desk-tool'\n\nimport DocumentListQuery from './DocumentListQuery'\nimport {OrderableContext} from './OrderableContext'\n\nimport {ORDER_FIELD_NAME} from './helpers/constants'\nimport Feedback from './Feedback'\n\n// 1. Validate first that the schema has been configured for ordering\n// 2. Setup context for showIncrements\nexport default function DocumentListWrapper({type, showIncrements, resetOrderTransaction}) {\n const toast = useToast()\n\n useEffect(() => {\n if (resetOrderTransaction?.title && resetOrderTransaction?.status) {\n toast.push(resetOrderTransaction)\n }\n /* eslint-disable-next-line react-hooks/exhaustive-deps */\n }, [resetOrderTransaction])\n\n const schemaIsInvalid = useMemo(() => {\n // Option not passed\n if (!type) {\n return (\n <>\n No <code>type</code> was configured\n </>\n )\n }\n\n const typeSchema = schema.get(type)\n\n // Schema not found\n if (!typeSchema) {\n return (\n <>\n Schema <code>{type}</code> not found\n </>\n )\n }\n\n // Schema lacks an order field\n if (!typeSchema.fields.some((field) => field?.name === ORDER_FIELD_NAME)) {\n return (\n <>\n Schema <code>{type}</code> must have an <code>order</code> field of type{' '}\n <code>string</code>\n </>\n )\n }\n\n // Schema's order field is not a string\n if (\n typeSchema.fields.some(\n (field) => field?.name === ORDER_FIELD_NAME && field?.type?.name !== 'string'\n )\n ) {\n return (\n <>\n <code>{ORDER_FIELD_NAME}</code> field on Schema <code>{type}</code> must be{' '}\n <code>string</code> type\n </>\n )\n }\n\n return ``\n }, [type])\n\n if (schemaIsInvalid) {\n return <Feedback>{schemaIsInvalid}</Feedback>\n }\n\n return (\n <OrderableContext.Provider value={{showIncrements}}>\n <DocumentListQuery type={type} />\n </OrderableContext.Provider>\n )\n}\n\nDocumentListWrapper.propTypes = {\n showIncrements: PropTypes.bool.isRequired,\n type: PropTypes.string.isRequired,\n resetOrderTransaction: PropTypes.shape({\n title: PropTypes.string,\n status: PropTypes.string,\n }).isRequired,\n}\n"],"file":"DocumentListWrapper.js"}
1
+ {"version":3,"file":"DocumentListWrapper.js","names":["DocumentListWrapper","type","filter","params","showIncrements","resetOrderTransaction","toast","useToast","useEffect","title","status","push","schemaIsInvalid","useMemo","typeSchema","schema","get","fields","some","field","name","ORDER_FIELD_NAME","propTypes","PropTypes","bool","isRequired","string","object","shape","defaultProps"],"sources":["../src/DocumentListWrapper.js"],"sourcesContent":["import PropTypes from 'prop-types'\nimport React, {useMemo, useEffect} from 'react'\nimport schema from 'part:@sanity/base/schema'\nimport {useToast} from '@sanity/ui'\nimport {PaneRouterContext} from '@sanity/desk-tool'\n\nimport DocumentListQuery from './DocumentListQuery'\nimport {OrderableContext} from './OrderableContext'\n\nimport {ORDER_FIELD_NAME} from './helpers/constants'\nimport Feedback from './Feedback'\n\n// 1. Validate first that the schema has been configured for ordering\n// 2. Setup context for showIncrements\nexport default function DocumentListWrapper({\n type,\n filter,\n params,\n showIncrements,\n resetOrderTransaction,\n}) {\n const toast = useToast()\n\n useEffect(() => {\n if (resetOrderTransaction?.title && resetOrderTransaction?.status) {\n toast.push(resetOrderTransaction)\n }\n /* eslint-disable-next-line react-hooks/exhaustive-deps */\n }, [resetOrderTransaction])\n\n const schemaIsInvalid = useMemo(() => {\n // Option not passed\n if (!type) {\n return (\n <>\n No <code>type</code> was configured\n </>\n )\n }\n\n const typeSchema = schema.get(type)\n\n // Schema not found\n if (!typeSchema) {\n return (\n <>\n Schema <code>{type}</code> not found\n </>\n )\n }\n\n // Schema lacks an order field\n if (!typeSchema.fields.some((field) => field?.name === ORDER_FIELD_NAME)) {\n return (\n <>\n Schema <code>{type}</code> must have an <code>order</code> field of type{' '}\n <code>string</code>\n </>\n )\n }\n\n // Schema's order field is not a string\n if (\n typeSchema.fields.some(\n (field) => field?.name === ORDER_FIELD_NAME && field?.type?.name !== 'string'\n )\n ) {\n return (\n <>\n <code>{ORDER_FIELD_NAME}</code> field on Schema <code>{type}</code> must be{' '}\n <code>string</code> type\n </>\n )\n }\n\n return ``\n }, [type])\n\n if (schemaIsInvalid) {\n return <Feedback>{schemaIsInvalid}</Feedback>\n }\n\n return (\n <OrderableContext.Provider value={{showIncrements}}>\n <DocumentListQuery type={type} filter={filter} params={params} />\n </OrderableContext.Provider>\n )\n}\n\nDocumentListWrapper.propTypes = {\n showIncrements: PropTypes.bool.isRequired,\n type: PropTypes.string.isRequired,\n filter: PropTypes.string,\n params: PropTypes.object,\n resetOrderTransaction: PropTypes.shape({\n title: PropTypes.string,\n status: PropTypes.string,\n }).isRequired,\n}\n\nDocumentListWrapper.defaultProps = {\n filter: ``,\n params: {},\n}\n"],"mappings":"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"}
@@ -29,7 +29,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
29
29
 
30
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
31
 
32
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
32
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
33
33
 
34
34
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
35
35
 
@@ -269,7 +269,7 @@ function DraggableList(_ref) {
269
269
  var isSelected = selectedIds.includes(item._id);
270
270
  var isDragging = innerSnapshot.isDragging;
271
271
  var isGhosting = Boolean(!isDragging && draggingId && isSelected);
272
- var isUpdating = isUpdating && isSelected;
272
+ var isUpdating = listIsUpdating && isSelected;
273
273
  var isDisabled = Boolean(!item[_constants.ORDER_FIELD_NAME]);
274
274
  var isDuplicate = duplicateOrders.includes(item[_constants.ORDER_FIELD_NAME]);
275
275
  var tone = cardTone({
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/DraggableList.js"],"names":["client","sanityClient","withConfig","apiVersion","getItemStyle","draggableStyle","itemIsUpdating","userSelect","transition","opacity","pointerEvents","undefined","cardTone","settings","isDuplicate","isGhosting","isDragging","isSelected","DraggableList","data","type","listIsUpdating","setListIsUpdating","toast","router","navigateIntent","orderedData","setOrderedData","draggingId","setDraggingId","selectedIds","setSelectedIds","clearSelected","handleSelect","clickedId","index","nativeEvent","includes","selectMultiple","shiftKey","isUsingWindows","navigator","appVersion","indexOf","selectAdditional","ctrlKey","metaKey","updatedIds","id","lastSelectedId","at","lastSelectedIndex","findIndex","item","_id","firstSelected","lastSelected","betweenIds","filter","itemIndex","map","transactPatches","patches","message","transaction","forEach","patchArgs","patch","commit","then","updated","push","title","results","length","status","description","catch","handleDragEnd","result","entities","source","destination","draggableId","effectedIds","newOrder","handleDragStart","start","selected","incrementIndex","shiftFrom","shiftTo","onWindowKeyDown","event","key","window","addEventListener","removeEventListener","duplicateOrders","orderField","ORDER_FIELD_NAME","provided","snapshot","droppableProps","innerRef","innerProvided","innerSnapshot","Boolean","isUpdating","isDisabled","tone","draggableProps","dragHandleProps","style","placeholder","propTypes","PropTypes","arrayOf","shape","string","isRequired","bool","func"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types'\nimport React, {useMemo, useState, useEffect} from 'react'\nimport {DragDropContext, Droppable, Draggable} from 'react-beautiful-dnd'\nimport {usePaneRouter} from '@sanity/desk-tool'\nimport {Box, Card, useToast} from '@sanity/ui'\nimport sanityClient from 'part:@sanity/base/client'\n\nimport Document from './Document'\nimport {reorderDocuments} from './helpers/reorderDocuments'\nimport {ORDER_FIELD_NAME} from './helpers/constants'\n\nconst client = sanityClient.withConfig({\n apiVersion: '2021-09-01',\n})\n\nconst getItemStyle = (draggableStyle, itemIsUpdating) => ({\n userSelect: 'none',\n transition: `opacity 500ms ease-in-out`,\n opacity: itemIsUpdating ? 0.2 : 1,\n pointerEvents: itemIsUpdating ? `none` : undefined,\n ...draggableStyle,\n})\n\nconst cardTone = (settings) => {\n const {isDuplicate, isGhosting, isDragging, isSelected} = settings\n\n if (isGhosting) return `transparent`\n if (isDragging || isSelected) return `primary`\n if (isDuplicate) return `caution`\n\n return undefined\n}\n\nexport default function DraggableList({data, type, listIsUpdating, setListIsUpdating}) {\n const toast = useToast()\n const router = usePaneRouter()\n const {navigateIntent} = router\n\n // Maintains local state order before transaction completes\n const [orderedData, setOrderedData] = useState(data)\n\n // Update local state when documents change from an outside source\n useEffect(() => {\n if (!listIsUpdating) setOrderedData(data)\n /* eslint-disable-next-line react-hooks/exhaustive-deps */\n }, [data])\n\n const [draggingId, setDraggingId] = useState(``)\n const [selectedIds, setSelectedIds] = useState([])\n\n const clearSelected = () => setSelectedIds([])\n\n const handleSelect = (clickedId, index, nativeEvent) => {\n const isSelected = selectedIds.includes(clickedId)\n const selectMultiple = nativeEvent.shiftKey\n const isUsingWindows = navigator.appVersion.indexOf('Win') !== -1\n const selectAdditional = isUsingWindows ? nativeEvent.ctrlKey : nativeEvent.metaKey\n\n let updatedIds = []\n\n // No modifier keys pressed during click:\n // - update selected to just this one\n // - open document\n if (!selectMultiple && !selectAdditional) {\n navigateIntent('edit', {id: clickedId, type})\n return setSelectedIds([clickedId])\n }\n\n // Shift key was held, add id's between last selected and this one\n // ...before adding this one\n if (selectMultiple && !isSelected) {\n const lastSelectedId = selectedIds.at(-1)\n const lastSelectedIndex = orderedData.findIndex((item) => item._id === lastSelectedId)\n\n const firstSelected = index < lastSelectedIndex ? index : lastSelectedIndex\n const lastSelected = index > lastSelectedIndex ? index : lastSelectedIndex\n\n const betweenIds = orderedData\n .filter((item, itemIndex) => itemIndex > firstSelected && itemIndex < lastSelected)\n .map((item) => item._id)\n\n updatedIds = [...selectedIds, ...betweenIds, clickedId]\n } else if (isSelected) {\n // Toggle off a single id\n updatedIds = selectedIds.filter((id) => id !== clickedId)\n } else {\n // Toggle on a single id\n updatedIds = [...selectedIds, clickedId]\n }\n\n return setSelectedIds(updatedIds)\n }\n\n const transactPatches = async (patches, message) => {\n const transaction = client.transaction()\n\n patches.forEach((patchArgs) => transaction.patch(...patchArgs))\n\n await transaction\n .commit()\n .then((updated) => {\n clearSelected()\n setDraggingId(``)\n setListIsUpdating(false)\n toast.push({\n title: `${\n updated.results.length === 1 ? `1 Document` : `${updated.results.length} Documents`\n } Reordered`,\n status: `success`,\n description: message,\n })\n })\n .catch(() => {\n setDraggingId(``)\n setListIsUpdating(false)\n toast.push({\n title: `Reordering failed`,\n status: `critical`,\n })\n })\n }\n\n const handleDragEnd = (result, entities) => {\n setDraggingId(``)\n\n const {source, destination, draggableId} = result ?? {}\n\n // Don't do anything if nothing changed\n if (source.index === destination.index) return\n\n // Don't do anything if we don't have the entitites\n if (!entities?.length) return\n\n // A document can be dragged without being one-of-many-selected\n const effectedIds = selectedIds?.length ? selectedIds : [draggableId]\n\n // Don't do anything if we don't have ids to effect\n if (!effectedIds?.length) return\n\n // Update state to update styles + prevent data refetching\n setListIsUpdating(true)\n setSelectedIds(effectedIds)\n\n const {newOrder, patches, message} = reorderDocuments({\n entities,\n selectedIds: effectedIds,\n source,\n destination,\n })\n\n // Update local state\n if (newOrder?.length) {\n setOrderedData(newOrder)\n }\n\n // Transact new order patches\n if (patches?.length) {\n transactPatches(patches, message)\n }\n }\n\n const handleDragStart = (start) => {\n const id = start.draggableId\n const selected = selectedIds.includes(id)\n\n // if dragging an item that is not selected - unselect all items\n if (!selected) clearSelected()\n\n setDraggingId(id)\n }\n\n // Move one document up or down one place, by fake invoking the drag function\n const incrementIndex = (shiftFrom, shiftTo, id, entities) => {\n const result = {\n draggableId: id,\n source: {index: shiftFrom},\n destination: {index: shiftTo},\n }\n\n return handleDragEnd(result, entities)\n }\n\n const onWindowKeyDown = (event) => {\n if (event.key === 'Escape') {\n clearSelected()\n }\n }\n\n useEffect(() => {\n window.addEventListener('keydown', onWindowKeyDown)\n\n return () => {\n window.removeEventListener('keydown', onWindowKeyDown)\n }\n }, [])\n\n // Find all items with duplicate order field\n const duplicateOrders = useMemo(() => {\n if (!orderedData.length) return []\n\n const orderField = orderedData.map((item) => item[ORDER_FIELD_NAME])\n\n return orderField.filter((item, index) => orderField.indexOf(item) !== index)\n }, [orderedData])\n\n return (\n <DragDropContext\n onDragStart={handleDragStart}\n onDragEnd={(result) => handleDragEnd(result, orderedData)}\n >\n <Droppable droppableId=\"documentSortZone\">\n {(provided, snapshot) => (\n <div {...provided.droppableProps} ref={provided.innerRef}>\n {orderedData.map((item, index) => (\n <Draggable\n key={`${item._id}-${item[ORDER_FIELD_NAME]}`}\n draggableId={item._id}\n index={index}\n // onClick={(event) => handleDraggableClick(event, provided, snapshot)}\n >\n {(innerProvided, innerSnapshot) => {\n const isSelected = selectedIds.includes(item._id)\n const isDragging = innerSnapshot.isDragging\n const isGhosting = Boolean(!isDragging && draggingId && isSelected)\n const isUpdating = isUpdating && isSelected\n const isDisabled = Boolean(!item[ORDER_FIELD_NAME])\n const isDuplicate = duplicateOrders.includes(item[ORDER_FIELD_NAME])\n const tone = cardTone({isDuplicate, isGhosting, isDragging, isSelected})\n\n return (\n <div\n ref={innerProvided.innerRef}\n {...innerProvided.draggableProps}\n {...innerProvided.dragHandleProps}\n style={\n isDisabled\n ? {opacity: 0.2, pointerEvents: `none`}\n : getItemStyle(innerProvided.draggableProps.style, isUpdating, isGhosting)\n }\n >\n <Box paddingBottom={1}>\n <Card tone={tone} shadow={isDragging ? `2` : undefined} radius={2}>\n <Document\n doc={item}\n entities={orderedData}\n handleSelect={handleSelect}\n increment={incrementIndex}\n index={index}\n isFirst={index === 0}\n isLast={index === orderedData.length - 1}\n />\n </Card>\n </Box>\n </div>\n )\n }}\n </Draggable>\n ))}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n )\n}\n\nDraggableList.propTypes = {\n data: PropTypes.arrayOf(\n PropTypes.shape({\n _id: PropTypes.string,\n }).isRequired\n ).isRequired,\n type: PropTypes.string.isRequired,\n listIsUpdating: PropTypes.bool.isRequired,\n setListIsUpdating: PropTypes.func.isRequired,\n}\n"],"file":"DraggableList.js"}
1
+ {"version":3,"file":"DraggableList.js","names":["client","sanityClient","withConfig","apiVersion","getItemStyle","draggableStyle","itemIsUpdating","userSelect","transition","opacity","pointerEvents","undefined","cardTone","settings","isDuplicate","isGhosting","isDragging","isSelected","DraggableList","data","type","listIsUpdating","setListIsUpdating","toast","useToast","router","usePaneRouter","navigateIntent","useState","orderedData","setOrderedData","useEffect","draggingId","setDraggingId","selectedIds","setSelectedIds","clearSelected","handleSelect","clickedId","index","nativeEvent","includes","selectMultiple","shiftKey","isUsingWindows","navigator","appVersion","indexOf","selectAdditional","ctrlKey","metaKey","updatedIds","id","lastSelectedId","at","lastSelectedIndex","findIndex","item","_id","firstSelected","lastSelected","betweenIds","filter","itemIndex","map","transactPatches","patches","message","transaction","forEach","patchArgs","patch","commit","then","updated","push","title","results","length","status","description","catch","handleDragEnd","result","entities","source","destination","draggableId","effectedIds","reorderDocuments","newOrder","handleDragStart","start","selected","incrementIndex","shiftFrom","shiftTo","onWindowKeyDown","event","key","window","addEventListener","removeEventListener","duplicateOrders","useMemo","orderField","ORDER_FIELD_NAME","provided","snapshot","droppableProps","innerRef","innerProvided","innerSnapshot","Boolean","isUpdating","isDisabled","tone","draggableProps","dragHandleProps","style","placeholder","propTypes","PropTypes","arrayOf","shape","string","isRequired","bool","func"],"sources":["../src/DraggableList.js"],"sourcesContent":["import PropTypes from 'prop-types'\nimport React, {useMemo, useState, useEffect} from 'react'\nimport {DragDropContext, Droppable, Draggable} from 'react-beautiful-dnd'\nimport {usePaneRouter} from '@sanity/desk-tool'\nimport {Box, Card, useToast} from '@sanity/ui'\nimport sanityClient from 'part:@sanity/base/client'\n\nimport Document from './Document'\nimport {reorderDocuments} from './helpers/reorderDocuments'\nimport {ORDER_FIELD_NAME} from './helpers/constants'\n\nconst client = sanityClient.withConfig({\n apiVersion: '2021-09-01',\n})\n\nconst getItemStyle = (draggableStyle, itemIsUpdating) => ({\n userSelect: 'none',\n transition: `opacity 500ms ease-in-out`,\n opacity: itemIsUpdating ? 0.2 : 1,\n pointerEvents: itemIsUpdating ? `none` : undefined,\n ...draggableStyle,\n})\n\nconst cardTone = (settings) => {\n const {isDuplicate, isGhosting, isDragging, isSelected} = settings\n\n if (isGhosting) return `transparent`\n if (isDragging || isSelected) return `primary`\n if (isDuplicate) return `caution`\n\n return undefined\n}\n\nexport default function DraggableList({data, type, listIsUpdating, setListIsUpdating}) {\n const toast = useToast()\n const router = usePaneRouter()\n const {navigateIntent} = router\n\n // Maintains local state order before transaction completes\n const [orderedData, setOrderedData] = useState(data)\n\n // Update local state when documents change from an outside source\n useEffect(() => {\n if (!listIsUpdating) setOrderedData(data)\n /* eslint-disable-next-line react-hooks/exhaustive-deps */\n }, [data])\n\n const [draggingId, setDraggingId] = useState(``)\n const [selectedIds, setSelectedIds] = useState([])\n\n const clearSelected = () => setSelectedIds([])\n\n const handleSelect = (clickedId, index, nativeEvent) => {\n const isSelected = selectedIds.includes(clickedId)\n const selectMultiple = nativeEvent.shiftKey\n const isUsingWindows = navigator.appVersion.indexOf('Win') !== -1\n const selectAdditional = isUsingWindows ? nativeEvent.ctrlKey : nativeEvent.metaKey\n\n let updatedIds = []\n\n // No modifier keys pressed during click:\n // - update selected to just this one\n // - open document\n if (!selectMultiple && !selectAdditional) {\n navigateIntent('edit', {id: clickedId, type})\n return setSelectedIds([clickedId])\n }\n\n // Shift key was held, add id's between last selected and this one\n // ...before adding this one\n if (selectMultiple && !isSelected) {\n const lastSelectedId = selectedIds.at(-1)\n const lastSelectedIndex = orderedData.findIndex((item) => item._id === lastSelectedId)\n\n const firstSelected = index < lastSelectedIndex ? index : lastSelectedIndex\n const lastSelected = index > lastSelectedIndex ? index : lastSelectedIndex\n\n const betweenIds = orderedData\n .filter((item, itemIndex) => itemIndex > firstSelected && itemIndex < lastSelected)\n .map((item) => item._id)\n\n updatedIds = [...selectedIds, ...betweenIds, clickedId]\n } else if (isSelected) {\n // Toggle off a single id\n updatedIds = selectedIds.filter((id) => id !== clickedId)\n } else {\n // Toggle on a single id\n updatedIds = [...selectedIds, clickedId]\n }\n\n return setSelectedIds(updatedIds)\n }\n\n const transactPatches = async (patches, message) => {\n const transaction = client.transaction()\n\n patches.forEach((patchArgs) => transaction.patch(...patchArgs))\n\n await transaction\n .commit()\n .then((updated) => {\n clearSelected()\n setDraggingId(``)\n setListIsUpdating(false)\n toast.push({\n title: `${\n updated.results.length === 1 ? `1 Document` : `${updated.results.length} Documents`\n } Reordered`,\n status: `success`,\n description: message,\n })\n })\n .catch(() => {\n setDraggingId(``)\n setListIsUpdating(false)\n toast.push({\n title: `Reordering failed`,\n status: `critical`,\n })\n })\n }\n\n const handleDragEnd = (result, entities) => {\n setDraggingId(``)\n\n const {source, destination, draggableId} = result ?? {}\n\n // Don't do anything if nothing changed\n if (source.index === destination.index) return\n\n // Don't do anything if we don't have the entitites\n if (!entities?.length) return\n\n // A document can be dragged without being one-of-many-selected\n const effectedIds = selectedIds?.length ? selectedIds : [draggableId]\n\n // Don't do anything if we don't have ids to effect\n if (!effectedIds?.length) return\n\n // Update state to update styles + prevent data refetching\n setListIsUpdating(true)\n setSelectedIds(effectedIds)\n\n const {newOrder, patches, message} = reorderDocuments({\n entities,\n selectedIds: effectedIds,\n source,\n destination,\n })\n\n // Update local state\n if (newOrder?.length) {\n setOrderedData(newOrder)\n }\n\n // Transact new order patches\n if (patches?.length) {\n transactPatches(patches, message)\n }\n }\n\n const handleDragStart = (start) => {\n const id = start.draggableId\n const selected = selectedIds.includes(id)\n\n // if dragging an item that is not selected - unselect all items\n if (!selected) clearSelected()\n\n setDraggingId(id)\n }\n\n // Move one document up or down one place, by fake invoking the drag function\n const incrementIndex = (shiftFrom, shiftTo, id, entities) => {\n const result = {\n draggableId: id,\n source: {index: shiftFrom},\n destination: {index: shiftTo},\n }\n\n return handleDragEnd(result, entities)\n }\n\n const onWindowKeyDown = (event) => {\n if (event.key === 'Escape') {\n clearSelected()\n }\n }\n\n useEffect(() => {\n window.addEventListener('keydown', onWindowKeyDown)\n\n return () => {\n window.removeEventListener('keydown', onWindowKeyDown)\n }\n }, [])\n\n // Find all items with duplicate order field\n const duplicateOrders = useMemo(() => {\n if (!orderedData.length) return []\n\n const orderField = orderedData.map((item) => item[ORDER_FIELD_NAME])\n\n return orderField.filter((item, index) => orderField.indexOf(item) !== index)\n }, [orderedData])\n\n return (\n <DragDropContext\n onDragStart={handleDragStart}\n onDragEnd={(result) => handleDragEnd(result, orderedData)}\n >\n <Droppable droppableId=\"documentSortZone\">\n {(provided, snapshot) => (\n <div {...provided.droppableProps} ref={provided.innerRef}>\n {orderedData.map((item, index) => (\n <Draggable\n key={`${item._id}-${item[ORDER_FIELD_NAME]}`}\n draggableId={item._id}\n index={index}\n // onClick={(event) => handleDraggableClick(event, provided, snapshot)}\n >\n {(innerProvided, innerSnapshot) => {\n const isSelected = selectedIds.includes(item._id)\n const isDragging = innerSnapshot.isDragging\n const isGhosting = Boolean(!isDragging && draggingId && isSelected)\n const isUpdating = listIsUpdating && isSelected\n const isDisabled = Boolean(!item[ORDER_FIELD_NAME])\n const isDuplicate = duplicateOrders.includes(item[ORDER_FIELD_NAME])\n const tone = cardTone({isDuplicate, isGhosting, isDragging, isSelected})\n\n return (\n <div\n ref={innerProvided.innerRef}\n {...innerProvided.draggableProps}\n {...innerProvided.dragHandleProps}\n style={\n isDisabled\n ? {opacity: 0.2, pointerEvents: `none`}\n : getItemStyle(innerProvided.draggableProps.style, isUpdating, isGhosting)\n }\n >\n <Box paddingBottom={1}>\n <Card tone={tone} shadow={isDragging ? `2` : undefined} radius={2}>\n <Document\n doc={item}\n entities={orderedData}\n handleSelect={handleSelect}\n increment={incrementIndex}\n index={index}\n isFirst={index === 0}\n isLast={index === orderedData.length - 1}\n />\n </Card>\n </Box>\n </div>\n )\n }}\n </Draggable>\n ))}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n )\n}\n\nDraggableList.propTypes = {\n data: PropTypes.arrayOf(\n PropTypes.shape({\n _id: PropTypes.string,\n }).isRequired\n ).isRequired,\n type: PropTypes.string.isRequired,\n listIsUpdating: PropTypes.bool.isRequired,\n setListIsUpdating: PropTypes.func.isRequired,\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Feedback.js"],"names":["Feedback","children","propTypes","PropTypes","node","isRequired"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;AAEe,SAASA,QAAT,OAA8B;AAAA,MAAXC,QAAW,QAAXA,QAAW;AAC3C,sBACE,6BAAC,OAAD;AAAK,IAAA,OAAO,EAAE;AAAd,kBACE,6BAAC,QAAD;AAAM,IAAA,OAAO,EAAE,CAAf;AAAkB,IAAA,MAAM,EAAE,CAA1B;AAA6B,IAAA,MAAM,EAAE,CAArC;AAAwC,IAAA,IAAI,EAAC;AAA7C,kBACE,6BAAC,QAAD,QAAOA,QAAP,CADF,CADF,CADF;AAOD;;AAEDD,QAAQ,CAACE,SAAT,GAAqB;AACnBD,EAAAA,QAAQ,EAAEE,mBAAUC,IAAV,CAAeC;AADN,CAArB","sourcesContent":["import PropTypes from 'prop-types'\nimport React from 'react'\nimport {Box, Card, Text} from '@sanity/ui'\n\nexport default function Feedback({children}) {\n return (\n <Box padding={3}>\n <Card padding={4} radius={2} shadow={1} tone=\"caution\">\n <Text>{children}</Text>\n </Card>\n </Box>\n )\n}\n\nFeedback.propTypes = {\n children: PropTypes.node.isRequired,\n}\n"],"file":"Feedback.js"}
1
+ {"version":3,"file":"Feedback.js","names":["Feedback","children","propTypes","PropTypes","node","isRequired"],"sources":["../src/Feedback.js"],"sourcesContent":["import PropTypes from 'prop-types'\nimport React from 'react'\nimport {Box, Card, Text} from '@sanity/ui'\n\nexport default function Feedback({children}) {\n return (\n <Box padding={3}>\n <Card padding={4} radius={2} shadow={1} tone=\"caution\">\n <Text>{children}</Text>\n </Card>\n </Box>\n )\n}\n\nFeedback.propTypes = {\n children: PropTypes.node.isRequired,\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;AAEe,SAASA,QAAT,OAA8B;EAAA,IAAXC,QAAW,QAAXA,QAAW;EAC3C,oBACE,6BAAC,OAAD;IAAK,OAAO,EAAE;EAAd,gBACE,6BAAC,QAAD;IAAM,OAAO,EAAE,CAAf;IAAkB,MAAM,EAAE,CAA1B;IAA6B,MAAM,EAAE,CAArC;IAAwC,IAAI,EAAC;EAA7C,gBACE,6BAAC,QAAD,QAAOA,QAAP,CADF,CADF,CADF;AAOD;;AAEDD,QAAQ,CAACE,SAAT,GAAqB;EACnBD,QAAQ,EAAEE,kBAAA,CAAUC,IAAV,CAAeC;AADN,CAArB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/OrderableContext.js"],"names":["OrderableContext","React","createContext"],"mappings":";;;;;;;AAAA;;;;AAEO,IAAMA,gBAAgB,gBAAGC,eAAMC,aAAN,CAAoB,EAApB,CAAzB","sourcesContent":["import React from 'react'\n\nexport const OrderableContext = React.createContext({})\n"],"file":"OrderableContext.js"}
1
+ {"version":3,"file":"OrderableContext.js","names":["OrderableContext","React","createContext"],"sources":["../src/OrderableContext.js"],"sourcesContent":["import React from 'react'\n\nexport const OrderableContext = React.createContext({})\n"],"mappings":";;;;;;;AAAA;;;;AAEO,IAAMA,gBAAgB,gBAAGC,cAAA,CAAMC,aAAN,CAAoB,EAApB,CAAzB"}
@@ -78,10 +78,12 @@ class OrderableDocumentList extends _react.Component {
78
78
  }
79
79
 
80
80
  render() {
81
- var _this$props, _this$props$options;
81
+ var _this$props, _this$props$options, _this$props2, _this$props2$options, _this$props3, _this$props3$options;
82
82
 
83
83
  return /*#__PURE__*/_react.default.createElement(_DocumentListWrapper.default, {
84
84
  type: this === null || this === void 0 ? void 0 : (_this$props = this.props) === null || _this$props === void 0 ? void 0 : (_this$props$options = _this$props.options) === null || _this$props$options === void 0 ? void 0 : _this$props$options.type,
85
+ filter: this === null || this === void 0 ? void 0 : (_this$props2 = this.props) === null || _this$props2 === void 0 ? void 0 : (_this$props2$options = _this$props2.options) === null || _this$props2$options === void 0 ? void 0 : _this$props2$options.filter,
86
+ params: this === null || this === void 0 ? void 0 : (_this$props3 = this.props) === null || _this$props3 === void 0 ? void 0 : (_this$props3$options = _this$props3.options) === null || _this$props3$options === void 0 ? void 0 : _this$props3$options.params,
85
87
  showIncrements: this.state.showIncrements,
86
88
  resetOrderTransaction: this.state.resetOrderTransaction
87
89
  });
@@ -93,7 +95,9 @@ exports.default = OrderableDocumentList;
93
95
 
94
96
  _defineProperty(OrderableDocumentList, "propTypes", {
95
97
  options: _propTypes.default.shape({
96
- type: _propTypes.default.string
98
+ type: _propTypes.default.string,
99
+ filter: _propTypes.default.string,
100
+ params: _propTypes.default.object
97
101
  }).isRequired
98
102
  });
99
103
  //# sourceMappingURL=OrderableDocumentList.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/OrderableDocumentList.js"],"names":["OrderableDocumentList","Component","constructor","props","showIncrements","setState","state","resetOrder","resetOrderTransaction","status","title","closable","update","options","type","reorderWasSuccessful","results","length","render","PropTypes","shape","string","isRequired"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;;;;;;;;;;;AAEA;AACe,MAAMA,qBAAN,SAAoCC,gBAApC,CAA8C;AAO3DC,EAAAA,WAAW,CAACC,KAAD,EAAQ;AAAA;;AACjB,UAAMA,KAAN,CADiB;AAAA;;AAAA,4CAQF;AACfC,MAAAA,cAAc,EAAE,MAAM;AACpB,aAAKC,QAAL,CAAeC,KAAD,KAAY;AACxBF,UAAAA,cAAc,EAAE,CAACE,KAAK,CAACF;AADC,SAAZ,CAAd;AAGD,OALc;AAOfG,MAAAA,UAAU;AAAA,6CAAE,aAAY;AAAA;;AACtB,UAAA,KAAI,CAACF,QAAL,CAAc,OAAO;AACnBG,YAAAA,qBAAqB,EAAE;AACrBC,cAAAA,MAAM,QADe;AAErBC,cAAAA,KAAK,yBAFgB;AAGrBC,cAAAA,QAAQ,EAAE;AAHW;AADJ,WAAP,CAAd;;AAQA,cAAMC,MAAM,SAAS,6BAAW,KAAI,CAACT,KAAL,CAAWU,OAAX,CAAmBC,IAA9B,CAArB;AAEA,cAAMC,oBAAoB,GAAGH,MAAH,aAAGA,MAAH,0CAAGA,MAAM,CAAEI,OAAX,oDAAG,gBAAiBC,MAA9C;;AAEA,UAAA,KAAI,CAACZ,QAAL,CAAc,OAAO;AACnBG,YAAAA,qBAAqB,EAAE;AACrBC,cAAAA,MAAM,EAAEM,oBAAoB,qBADP;AAErBL,cAAAA,KAAK,EAAEK,oBAAoB,uBACVH,MAAM,CAACI,OAAP,CAAeC,MAAf,KAA0B,CAA1B,2BADU,uBAFN;AAKrBN,cAAAA,QAAQ,EAAE;AALW;AADJ,WAAP,CAAd;AASD,SAtBS;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAPK,KARE;;AAEjB,SAAKL,KAAL,GAAa;AACXF,MAAAA,cAAc,EAAE,KADL;AAEXI,MAAAA,qBAAqB,EAAE;AAFZ,KAAb;AAID;;AAkCDU,EAAAA,MAAM,GAAG;AAAA;;AACP,wBACE,6BAAC,4BAAD;AACE,MAAA,IAAI,EAAE,IAAF,aAAE,IAAF,sCAAE,KAAMf,KAAR,uEAAE,YAAaU,OAAf,wDAAE,oBAAsBC,IAD9B;AAEE,MAAA,cAAc,EAAE,KAAKR,KAAL,CAAWF,cAF7B;AAGE,MAAA,qBAAqB,EAAE,KAAKE,KAAL,CAAWE;AAHpC,MADF;AAOD;;AAvD0D;;;;gBAAxCR,qB,eACA;AACjBa,EAAAA,OAAO,EAAEM,mBAAUC,KAAV,CAAgB;AACvBN,IAAAA,IAAI,EAAEK,mBAAUE;AADO,GAAhB,EAENC;AAHc,C","sourcesContent":["import PropTypes from 'prop-types'\nimport React, {Component} from 'react'\n\nimport DocumentListWrapper from './DocumentListWrapper'\nimport {resetOrder} from './helpers/resetOrder'\n\n// Must use a Class Component here so the actionHandlers can be called\nexport default class OrderableDocumentList extends Component {\n static propTypes = {\n options: PropTypes.shape({\n type: PropTypes.string,\n }).isRequired,\n }\n\n constructor(props) {\n super(props)\n this.state = {\n showIncrements: false,\n resetOrderTransaction: {},\n }\n }\n\n actionHandlers = {\n showIncrements: () => {\n this.setState((state) => ({\n showIncrements: !state.showIncrements,\n }))\n },\n\n resetOrder: async () => {\n this.setState(() => ({\n resetOrderTransaction: {\n status: `info`,\n title: `Reordering started...`,\n closable: true,\n },\n }))\n\n const update = await resetOrder(this.props.options.type)\n\n const reorderWasSuccessful = update?.results?.length\n\n this.setState(() => ({\n resetOrderTransaction: {\n status: reorderWasSuccessful ? `success` : `info`,\n title: reorderWasSuccessful\n ? `Reordered ${update.results.length === 1 ? `Document` : `Documents`}`\n : `Reordering failed`,\n closable: true,\n },\n }))\n },\n }\n\n render() {\n return (\n <DocumentListWrapper\n type={this?.props?.options?.type}\n showIncrements={this.state.showIncrements}\n resetOrderTransaction={this.state.resetOrderTransaction}\n />\n )\n }\n}\n"],"file":"OrderableDocumentList.js"}
1
+ {"version":3,"file":"OrderableDocumentList.js","names":["OrderableDocumentList","Component","constructor","props","showIncrements","setState","state","resetOrder","resetOrderTransaction","status","title","closable","update","options","type","reorderWasSuccessful","results","length","render","filter","params","PropTypes","shape","string","object","isRequired"],"sources":["../src/OrderableDocumentList.js"],"sourcesContent":["import PropTypes from 'prop-types'\nimport React, {Component} from 'react'\n\nimport DocumentListWrapper from './DocumentListWrapper'\nimport {resetOrder} from './helpers/resetOrder'\n\n// Must use a Class Component here so the actionHandlers can be called\nexport default class OrderableDocumentList extends Component {\n static propTypes = {\n options: PropTypes.shape({\n type: PropTypes.string,\n filter: PropTypes.string,\n params: PropTypes.object,\n }).isRequired,\n }\n\n constructor(props) {\n super(props)\n this.state = {\n showIncrements: false,\n resetOrderTransaction: {},\n }\n }\n\n actionHandlers = {\n showIncrements: () => {\n this.setState((state) => ({\n showIncrements: !state.showIncrements,\n }))\n },\n\n resetOrder: async () => {\n this.setState(() => ({\n resetOrderTransaction: {\n status: `info`,\n title: `Reordering started...`,\n closable: true,\n },\n }))\n\n const update = await resetOrder(this.props.options.type)\n\n const reorderWasSuccessful = update?.results?.length\n\n this.setState(() => ({\n resetOrderTransaction: {\n status: reorderWasSuccessful ? `success` : `info`,\n title: reorderWasSuccessful\n ? `Reordered ${update.results.length === 1 ? `Document` : `Documents`}`\n : `Reordering failed`,\n closable: true,\n },\n }))\n },\n }\n\n render() {\n return (\n <DocumentListWrapper\n type={this?.props?.options?.type}\n filter={this?.props?.options?.filter}\n params={this?.props?.options?.params}\n showIncrements={this.state.showIncrements}\n resetOrderTransaction={this.state.resetOrderTransaction}\n />\n )\n }\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;;;;;;;;;;;AAEA;AACe,MAAMA,qBAAN,SAAoCC,gBAApC,CAA8C;EAS3DC,WAAW,CAACC,KAAD,EAAQ;IAAA;;IACjB,MAAMA,KAAN,CADiB;IAAA;;IAAA,wCAQF;MACfC,cAAc,EAAE,MAAM;QACpB,KAAKC,QAAL,CAAeC,KAAD,KAAY;UACxBF,cAAc,EAAE,CAACE,KAAK,CAACF;QADC,CAAZ,CAAd;MAGD,CALc;MAOfG,UAAU;QAAA,qCAAE,aAAY;UAAA;;UACtB,KAAI,CAACF,QAAL,CAAc,OAAO;YACnBG,qBAAqB,EAAE;cACrBC,MAAM,QADe;cAErBC,KAAK,yBAFgB;cAGrBC,QAAQ,EAAE;YAHW;UADJ,CAAP,CAAd;;UAQA,IAAMC,MAAM,SAAS,IAAAL,uBAAA,EAAW,KAAI,CAACJ,KAAL,CAAWU,OAAX,CAAmBC,IAA9B,CAArB;UAEA,IAAMC,oBAAoB,GAAGH,MAAH,aAAGA,MAAH,0CAAGA,MAAM,CAAEI,OAAX,oDAAG,gBAAiBC,MAA9C;;UAEA,KAAI,CAACZ,QAAL,CAAc,OAAO;YACnBG,qBAAqB,EAAE;cACrBC,MAAM,EAAEM,oBAAoB,qBADP;cAErBL,KAAK,EAAEK,oBAAoB,uBACVH,MAAM,CAACI,OAAP,CAAeC,MAAf,KAA0B,CAA1B,2BADU,uBAFN;cAKrBN,QAAQ,EAAE;YALW;UADJ,CAAP,CAAd;QASD,CAtBS;;QAAA;UAAA;QAAA;;QAAA;MAAA;IAPK,CARE;;IAEjB,KAAKL,KAAL,GAAa;MACXF,cAAc,EAAE,KADL;MAEXI,qBAAqB,EAAE;IAFZ,CAAb;EAID;;EAkCDU,MAAM,GAAG;IAAA;;IACP,oBACE,6BAAC,4BAAD;MACE,IAAI,EAAE,IAAF,aAAE,IAAF,sCAAE,KAAMf,KAAR,uEAAE,YAAaU,OAAf,wDAAE,oBAAsBC,IAD9B;MAEE,MAAM,EAAE,IAAF,aAAE,IAAF,uCAAE,KAAMX,KAAR,yEAAE,aAAaU,OAAf,yDAAE,qBAAsBM,MAFhC;MAGE,MAAM,EAAE,IAAF,aAAE,IAAF,uCAAE,KAAMhB,KAAR,yEAAE,aAAaU,OAAf,yDAAE,qBAAsBO,MAHhC;MAIE,cAAc,EAAE,KAAKd,KAAL,CAAWF,cAJ7B;MAKE,qBAAqB,EAAE,KAAKE,KAAL,CAAWE;IALpC,EADF;EASD;;AA3D0D;;;;gBAAxCR,qB,eACA;EACjBa,OAAO,EAAEQ,kBAAA,CAAUC,KAAV,CAAgB;IACvBR,IAAI,EAAEO,kBAAA,CAAUE,MADO;IAEvBJ,MAAM,EAAEE,kBAAA,CAAUE,MAFK;IAGvBH,MAAM,EAAEC,kBAAA,CAAUG;EAHK,CAAhB,EAINC;AALc,C"}
@@ -25,6 +25,8 @@ function orderableDocumentListDeskItem() {
25
25
  }
26
26
 
27
27
  var type = config.type,
28
+ filter = config.filter,
29
+ params = config.params,
28
30
  title = config.title,
29
31
  icon = config.icon;
30
32
  var listTitle = title !== null && title !== void 0 ? title : "Orderable ".concat(type);
@@ -32,11 +34,16 @@ function orderableDocumentListDeskItem() {
32
34
  var listIcon = icon !== null && icon !== void 0 ? icon : _icons.SortIcon;
33
35
  var typeTitle = (_schema$get$title = (_schema$get = _schema.default.get(type)) === null || _schema$get === void 0 ? void 0 : _schema$get.title) !== null && _schema$get$title !== void 0 ? _schema$get$title : type;
34
36
  return _structureBuilder.default.listItem(type).title(listTitle).id(listId).icon(listIcon).child(Object.assign(_structureBuilder.default.documentTypeList(type).serialize(), {
37
+ // Prevents the component from re-rendering when switching documents
35
38
  __preserveInstance: true,
39
+ // Prevents the component from NOT re-rendering when switching listItems
40
+ key: listId,
36
41
  type: 'component',
37
42
  component: _OrderableDocumentList.default,
38
43
  options: {
39
- type
44
+ type,
45
+ filter,
46
+ params
40
47
  },
41
48
  menuItems: [_structureBuilder.default.menuItem().title("Create new ".concat(typeTitle)).intent({
42
49
  type: 'create',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/desk-structure/orderableDocumentListDeskItem.js"],"names":["orderableDocumentListDeskItem","config","type","Error","title","icon","listTitle","listId","listIcon","SortIcon","typeTitle","schema","get","S","listItem","id","child","Object","assign","documentTypeList","serialize","__preserveInstance","component","OrderableDocumentList","options","menuItems","menuItem","intent","params","GenerateIcon","action"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;;;AAEO,SAASA,6BAAT,GAAoD;AAAA;;AAAA,MAAbC,MAAa,uEAAJ,EAAI;;AACzD,MAAI,EAACA,MAAD,aAACA,MAAD,eAACA,MAAM,CAAEC,IAAT,CAAJ,EAAmB;AACjB,UAAM,IAAIC,KAAJ,2JAAN;AAKD;;AAED,MAAOD,IAAP,GAA4BD,MAA5B,CAAOC,IAAP;AAAA,MAAaE,KAAb,GAA4BH,MAA5B,CAAaG,KAAb;AAAA,MAAoBC,IAApB,GAA4BJ,MAA5B,CAAoBI,IAApB;AAEA,MAAMC,SAAS,GAAGF,KAAH,aAAGA,KAAH,cAAGA,KAAH,uBAAyBF,IAAzB,CAAf;AACA,MAAMK,MAAM,uBAAgBL,IAAhB,CAAZ;AACA,MAAMM,QAAQ,GAAGH,IAAH,aAAGA,IAAH,cAAGA,IAAH,GAAWI,eAAzB;AACA,MAAMC,SAAS,uCAAGC,gBAAOC,GAAP,CAAWV,IAAX,CAAH,gDAAG,YAAkBE,KAArB,iEAA8BF,IAA7C;AAEA,SAAOW,0BAAEC,QAAF,CAAWZ,IAAX,EACJE,KADI,CACEE,SADF,EAEJS,EAFI,CAEDR,MAFC,EAGJF,IAHI,CAGCG,QAHD,EAIJQ,KAJI,CAKHC,MAAM,CAACC,MAAP,CAAcL,0BAAEM,gBAAF,CAAmBjB,IAAnB,EAAyBkB,SAAzB,EAAd,EAAoD;AAClDC,IAAAA,kBAAkB,EAAE,IAD8B;AAElDnB,IAAAA,IAAI,EAAE,WAF4C;AAGlDoB,IAAAA,SAAS,EAAEC,8BAHuC;AAIlDC,IAAAA,OAAO,EAAE;AAACtB,MAAAA;AAAD,KAJyC;AAKlDuB,IAAAA,SAAS,EAAE,CACTZ,0BAAEa,QAAF,GACGtB,KADH,sBACuBM,SADvB,GAEGiB,MAFH,CAEU;AAACzB,MAAAA,IAAI,EAAE,QAAP;AAAiB0B,MAAAA,MAAM,EAAE;AAAC1B,QAAAA;AAAD;AAAzB,KAFV,EAGGkB,SAHH,EADS,EAKTP,0BAAEa,QAAF,GAAatB,KAAb,gBAAkCC,IAAlC,CAAuCwB,mBAAvC,EAAqDC,MAArD,eAA0EV,SAA1E,EALS,EAMTP,0BAAEa,QAAF,GAAatB,KAAb,oBAAsCC,IAAtC,CAA2CI,eAA3C,EAAqDqB,MAArD,mBAA8EV,SAA9E,EANS;AALuC,GAApD,CALG,EAoBJA,SApBI,EAAP;AAqBD","sourcesContent":["import S from '@sanity/desk-tool/structure-builder'\nimport {SortIcon, GenerateIcon} from '@sanity/icons'\nimport schema from 'part:@sanity/base/schema'\n\nimport OrderableDocumentList from '../OrderableDocumentList'\n\nexport function orderableDocumentListDeskItem(config = {}) {\n if (!config?.type) {\n throw new Error(`\n \"type\" not defined in orderableDocumentListDeskItem parameters.\n \\n\\n\n Example: orderableDocumentListDeskItem({type: 'category'})\n `)\n }\n\n const {type, title, icon} = config\n\n const listTitle = title ?? `Orderable ${type}`\n const listId = `orderable-${type}`\n const listIcon = icon ?? SortIcon\n const typeTitle = schema.get(type)?.title ?? type\n\n return S.listItem(type)\n .title(listTitle)\n .id(listId)\n .icon(listIcon)\n .child(\n Object.assign(S.documentTypeList(type).serialize(), {\n __preserveInstance: true,\n type: 'component',\n component: OrderableDocumentList,\n options: {type},\n menuItems: [\n S.menuItem()\n .title(`Create new ${typeTitle}`)\n .intent({type: 'create', params: {type}})\n .serialize(),\n S.menuItem().title(`Reset Order`).icon(GenerateIcon).action(`resetOrder`).serialize(),\n S.menuItem().title(`Show Increments`).icon(SortIcon).action(`showIncrements`).serialize(),\n ],\n })\n )\n .serialize()\n}\n"],"file":"orderableDocumentListDeskItem.js"}
1
+ {"version":3,"file":"orderableDocumentListDeskItem.js","names":["orderableDocumentListDeskItem","config","type","Error","filter","params","title","icon","listTitle","listId","listIcon","SortIcon","typeTitle","schema","get","S","listItem","id","child","Object","assign","documentTypeList","serialize","__preserveInstance","key","component","OrderableDocumentList","options","menuItems","menuItem","intent","GenerateIcon","action"],"sources":["../../src/desk-structure/orderableDocumentListDeskItem.js"],"sourcesContent":["import S from '@sanity/desk-tool/structure-builder'\nimport {SortIcon, GenerateIcon} from '@sanity/icons'\nimport schema from 'part:@sanity/base/schema'\n\nimport OrderableDocumentList from '../OrderableDocumentList'\n\nexport function orderableDocumentListDeskItem(config = {}) {\n if (!config?.type) {\n throw new Error(`\n \"type\" not defined in orderableDocumentListDeskItem parameters.\n \\n\\n\n Example: orderableDocumentListDeskItem({type: 'category'})\n `)\n }\n\n const {type, filter, params, title, icon} = config\n\n const listTitle = title ?? `Orderable ${type}`\n const listId = `orderable-${type}`\n const listIcon = icon ?? SortIcon\n const typeTitle = schema.get(type)?.title ?? type\n\n return S.listItem(type)\n .title(listTitle)\n .id(listId)\n .icon(listIcon)\n .child(\n Object.assign(S.documentTypeList(type).serialize(), {\n // Prevents the component from re-rendering when switching documents\n __preserveInstance: true,\n // Prevents the component from NOT re-rendering when switching listItems\n key: listId,\n\n type: 'component',\n component: OrderableDocumentList,\n options: {type, filter, params},\n menuItems: [\n S.menuItem()\n .title(`Create new ${typeTitle}`)\n .intent({type: 'create', params: {type}})\n .serialize(),\n S.menuItem().title(`Reset Order`).icon(GenerateIcon).action(`resetOrder`).serialize(),\n S.menuItem().title(`Show Increments`).icon(SortIcon).action(`showIncrements`).serialize(),\n ],\n })\n )\n .serialize()\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;;;AAEO,SAASA,6BAAT,GAAoD;EAAA;;EAAA,IAAbC,MAAa,uEAAJ,EAAI;;EACzD,IAAI,EAACA,MAAD,aAACA,MAAD,eAACA,MAAM,CAAEC,IAAT,CAAJ,EAAmB;IACjB,MAAM,IAAIC,KAAJ,2JAAN;EAKD;;EAED,IAAOD,IAAP,GAA4CD,MAA5C,CAAOC,IAAP;EAAA,IAAaE,MAAb,GAA4CH,MAA5C,CAAaG,MAAb;EAAA,IAAqBC,MAArB,GAA4CJ,MAA5C,CAAqBI,MAArB;EAAA,IAA6BC,KAA7B,GAA4CL,MAA5C,CAA6BK,KAA7B;EAAA,IAAoCC,IAApC,GAA4CN,MAA5C,CAAoCM,IAApC;EAEA,IAAMC,SAAS,GAAGF,KAAH,aAAGA,KAAH,cAAGA,KAAH,uBAAyBJ,IAAzB,CAAf;EACA,IAAMO,MAAM,uBAAgBP,IAAhB,CAAZ;EACA,IAAMQ,QAAQ,GAAGH,IAAH,aAAGA,IAAH,cAAGA,IAAH,GAAWI,eAAzB;EACA,IAAMC,SAAS,uCAAGC,eAAA,CAAOC,GAAP,CAAWZ,IAAX,CAAH,gDAAG,YAAkBI,KAArB,iEAA8BJ,IAA7C;EAEA,OAAOa,yBAAA,CAAEC,QAAF,CAAWd,IAAX,EACJI,KADI,CACEE,SADF,EAEJS,EAFI,CAEDR,MAFC,EAGJF,IAHI,CAGCG,QAHD,EAIJQ,KAJI,CAKHC,MAAM,CAACC,MAAP,CAAcL,yBAAA,CAAEM,gBAAF,CAAmBnB,IAAnB,EAAyBoB,SAAzB,EAAd,EAAoD;IAClD;IACAC,kBAAkB,EAAE,IAF8B;IAGlD;IACAC,GAAG,EAAEf,MAJ6C;IAMlDP,IAAI,EAAE,WAN4C;IAOlDuB,SAAS,EAAEC,8BAPuC;IAQlDC,OAAO,EAAE;MAACzB,IAAD;MAAOE,MAAP;MAAeC;IAAf,CARyC;IASlDuB,SAAS,EAAE,CACTb,yBAAA,CAAEc,QAAF,GACGvB,KADH,sBACuBM,SADvB,GAEGkB,MAFH,CAEU;MAAC5B,IAAI,EAAE,QAAP;MAAiBG,MAAM,EAAE;QAACH;MAAD;IAAzB,CAFV,EAGGoB,SAHH,EADS,EAKTP,yBAAA,CAAEc,QAAF,GAAavB,KAAb,gBAAkCC,IAAlC,CAAuCwB,mBAAvC,EAAqDC,MAArD,eAA0EV,SAA1E,EALS,EAMTP,yBAAA,CAAEc,QAAF,GAAavB,KAAb,oBAAsCC,IAAtC,CAA2CI,eAA3C,EAAqDqB,MAArD,mBAA8EV,SAA9E,EANS;EATuC,CAApD,CALG,EAwBJA,SAxBI,EAAP;AAyBD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/fields/orderRankField.js"],"names":["client","sanityClient","withConfig","apiVersion","orderRankField","config","type","Error","title","readOnly","hidden","name","ORDER_FIELD_NAME","initialValue","lastDocOrderRank","fetch","order"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;;;;;;;;;;;AAEA,IAAMA,MAAM,GAAGC,gBAAaC,UAAb,CAAwB;AAACC,EAAAA,UAAU;AAAX,CAAxB,CAAf;;AAEO,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,GAAiB;AAAA,MAAhBC,MAAgB,uEAAP,EAAO;;AAC7C,MAAI,EAACA,MAAD,aAACA,MAAD,eAACA,MAAM,CAAEC,IAAT,CAAJ,EAAmB;AACjB,UAAM,IAAIC,KAAJ,gIAAN;AAMD;;AAED,MAAOD,IAAP,GAAeD,MAAf,CAAOC,IAAP;AAEA;AACEE,IAAAA,KAAK,EAAE,YADT;AAEEC,IAAAA,QAAQ,EAAE,IAFZ;AAGEC,IAAAA,MAAM,EAAE;AAHV,KAIKL,MAJL;AAKEM,IAAAA,IAAI,EAAEC,2BALR;AAMEN,IAAAA,IAAI,EAAE,QANR;AAOEO,IAAAA,YAAY;AAAA,4CAAE,aAAY;AACxB,YAAMC,gBAAgB,SAASd,MAAM,CAACe,KAAP,uDAE7B;AAACT,UAAAA,IAAD;AAAOU,UAAAA,KAAK,EAAEJ;AAAd,SAF6B,CAA/B;AAKA,eAAO,0BAAYE,gBAAZ,CAAP;AACD,OAPW;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAPd;AAgBD,CA5BM","sourcesContent":["import sanityClient from 'part:@sanity/base/client'\nimport {ORDER_FIELD_NAME} from '../helpers/constants'\nimport initialRank from '../helpers/initialRank'\n\nconst client = sanityClient.withConfig({apiVersion: `2021-05-19`})\n\nexport const orderRankField = (config = {}) => {\n if (!config?.type) {\n throw new Error(\n `\n \"type\" not defined in orderRankField parameter object. \n Example: orderRankField({type: 'category'})\n `\n )\n }\n\n const {type} = config\n\n return {\n title: 'Order Rank',\n readOnly: true,\n hidden: true,\n ...config,\n name: ORDER_FIELD_NAME,\n type: 'string',\n initialValue: async () => {\n const lastDocOrderRank = await client.fetch(\n `*[_type == $type]|order(@[$order] desc)[0][$order]`,\n {type, order: ORDER_FIELD_NAME}\n )\n\n return initialRank(lastDocOrderRank)\n },\n }\n}\n"],"file":"orderRankField.js"}
1
+ {"version":3,"file":"orderRankField.js","names":["client","sanityClient","withConfig","apiVersion","orderRankField","config","type","Error","title","readOnly","hidden","name","ORDER_FIELD_NAME","initialValue","lastDocOrderRank","fetch","order","initialRank"],"sources":["../../src/fields/orderRankField.js"],"sourcesContent":["import sanityClient from 'part:@sanity/base/client'\nimport {ORDER_FIELD_NAME} from '../helpers/constants'\nimport initialRank from '../helpers/initialRank'\n\nconst client = sanityClient.withConfig({apiVersion: `2021-05-19`})\n\nexport const orderRankField = (config = {}) => {\n if (!config?.type) {\n throw new Error(\n `\n \"type\" not defined in orderRankField parameter object. \n Example: orderRankField({type: 'category'})\n `\n )\n }\n\n const {type} = config\n\n return {\n title: 'Order Rank',\n readOnly: true,\n hidden: true,\n ...config,\n name: ORDER_FIELD_NAME,\n type: 'string',\n initialValue: async () => {\n const lastDocOrderRank = await client.fetch(\n `*[_type == $type]|order(@[$order] desc)[0][$order]`,\n {type, order: ORDER_FIELD_NAME}\n )\n\n return initialRank(lastDocOrderRank)\n },\n }\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;;;;;;;;;;;AAEA,IAAMA,MAAM,GAAGC,eAAA,CAAaC,UAAb,CAAwB;EAACC,UAAU;AAAX,CAAxB,CAAf;;AAEO,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,GAAiB;EAAA,IAAhBC,MAAgB,uEAAP,EAAO;;EAC7C,IAAI,EAACA,MAAD,aAACA,MAAD,eAACA,MAAM,CAAEC,IAAT,CAAJ,EAAmB;IACjB,MAAM,IAAIC,KAAJ,gIAAN;EAMD;;EAED,IAAOD,IAAP,GAAeD,MAAf,CAAOC,IAAP;EAEA;IACEE,KAAK,EAAE,YADT;IAEEC,QAAQ,EAAE,IAFZ;IAGEC,MAAM,EAAE;EAHV,GAIKL,MAJL;IAKEM,IAAI,EAAEC,2BALR;IAMEN,IAAI,EAAE,QANR;IAOEO,YAAY;MAAA,sCAAE,aAAY;QACxB,IAAMC,gBAAgB,SAASd,MAAM,CAACe,KAAP,uDAE7B;UAACT,IAAD;UAAOU,KAAK,EAAEJ;QAAd,CAF6B,CAA/B;QAKA,OAAO,IAAAK,oBAAA,EAAYH,gBAAZ,CAAP;MACD,CAPW;;MAAA;QAAA;MAAA;;MAAA;IAAA;EAPd;AAgBD,CA5BM"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/fields/orderRankOrdering.js"],"names":["orderRankOrdering","title","name","by","field","ORDER_FIELD_NAME","direction"],"mappings":";;;;;;;AAAA;;AAEO,IAAMA,iBAAiB,GAAG;AAC/BC,EAAAA,KAAK,EAAE,SADwB;AAE/BC,EAAAA,IAAI,EAAE,SAFyB;AAG/BC,EAAAA,EAAE,EAAE,CAAC;AAACC,IAAAA,KAAK,EAAEC,2BAAR;AAA0BC,IAAAA,SAAS,EAAE;AAArC,GAAD;AAH2B,CAA1B","sourcesContent":["import {ORDER_FIELD_NAME} from '../helpers/constants'\n\nexport const orderRankOrdering = {\n title: 'Ordered',\n name: 'ordered',\n by: [{field: ORDER_FIELD_NAME, direction: 'asc'}],\n}\n"],"file":"orderRankOrdering.js"}
1
+ {"version":3,"file":"orderRankOrdering.js","names":["orderRankOrdering","title","name","by","field","ORDER_FIELD_NAME","direction"],"sources":["../../src/fields/orderRankOrdering.js"],"sourcesContent":["import {ORDER_FIELD_NAME} from '../helpers/constants'\n\nexport const orderRankOrdering = {\n title: 'Ordered',\n name: 'ordered',\n by: [{field: ORDER_FIELD_NAME, direction: 'asc'}],\n}\n"],"mappings":";;;;;;;AAAA;;AAEO,IAAMA,iBAAiB,GAAG;EAC/BC,KAAK,EAAE,SADwB;EAE/BC,IAAI,EAAE,SAFyB;EAG/BC,EAAE,EAAE,CAAC;IAACC,KAAK,EAAEC,2BAAR;IAA0BC,SAAS,EAAE;EAArC,CAAD;AAH2B,CAA1B"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/helpers/constants.js"],"names":["ORDER_FIELD_NAME"],"mappings":";;;;;;AAAO,IAAMA,gBAAgB,cAAtB","sourcesContent":["export const ORDER_FIELD_NAME = `orderRank`\n"],"file":"constants.js"}
1
+ {"version":3,"file":"constants.js","names":["ORDER_FIELD_NAME"],"sources":["../../src/helpers/constants.js"],"sourcesContent":["export const ORDER_FIELD_NAME = `orderRank`\n"],"mappings":";;;;;;AAAO,IAAMA,gBAAgB,cAAtB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/helpers/initialRank.js"],"names":["initialRank","lastRankValue","lastRank","LexoRank","parse","min","nextRank","genNext","value"],"mappings":";;;;;;;AAAA;;AAEA;AACA;AACe,SAASA,WAAT,GAAyC;AAAA,MAApBC,aAAoB;AACtD,MAAMC,QAAQ,GAAGD,aAAa,GAAGE,mBAASC,KAAT,CAAeH,aAAf,CAAH,GAAmCE,mBAASE,GAAT,EAAjE;AACA,MAAMC,QAAQ,GAAGJ,QAAQ,CAACK,OAAT,GAAmBA,OAAnB,EAAjB;AAEA,SAAOD,QAAQ,CAACE,KAAhB;AACD","sourcesContent":["import {LexoRank} from 'lexorank'\n\n// Use in initial value field by passing in the rank value of the last document\n// If not value passed, generate a sensibly low rank\nexport default function initialRank(lastRankValue = ``) {\n const lastRank = lastRankValue ? LexoRank.parse(lastRankValue) : LexoRank.min()\n const nextRank = lastRank.genNext().genNext()\n\n return nextRank.value\n}\n"],"file":"initialRank.js"}
1
+ {"version":3,"file":"initialRank.js","names":["initialRank","lastRankValue","lastRank","LexoRank","parse","min","nextRank","genNext","value"],"sources":["../../src/helpers/initialRank.js"],"sourcesContent":["import {LexoRank} from 'lexorank'\n\n// Use in initial value field by passing in the rank value of the last document\n// If not value passed, generate a sensibly low rank\nexport default function initialRank(lastRankValue = ``) {\n const lastRank = lastRankValue ? LexoRank.parse(lastRankValue) : LexoRank.min()\n const nextRank = lastRank.genNext().genNext()\n\n return nextRank.value\n}\n"],"mappings":";;;;;;;AAAA;;AAEA;AACA;AACe,SAASA,WAAT,GAAyC;EAAA,IAApBC,aAAoB;EACtD,IAAMC,QAAQ,GAAGD,aAAa,GAAGE,kBAAA,CAASC,KAAT,CAAeH,aAAf,CAAH,GAAmCE,kBAAA,CAASE,GAAT,EAAjE;EACA,IAAMC,QAAQ,GAAGJ,QAAQ,CAACK,OAAT,GAAmBA,OAAnB,EAAjB;EAEA,OAAOD,QAAQ,CAACE,KAAhB;AACD"}
@@ -75,7 +75,6 @@ var reorderDocuments = _ref2 => {
75
75
  } // Drop seleced items in
76
76
 
77
77
 
78
- // Drop seleced items in
79
78
  if (curIndex === endIndex) {
80
79
  var _entities$prevIndex, _entities$prevIndex2, _entities$nextIndex, _entities$nextIndex2;
81
80
 
@@ -88,7 +87,6 @@ var reorderDocuments = _ref2 => {
88
87
  var nextRank = (_entities$nextIndex = entities[nextIndex]) !== null && _entities$nextIndex !== void 0 && _entities$nextIndex[_constants.ORDER_FIELD_NAME] ? _lexorank.LexoRank.parse((_entities$nextIndex2 = entities[nextIndex]) === null || _entities$nextIndex2 === void 0 ? void 0 : _entities$nextIndex2[_constants.ORDER_FIELD_NAME]) : _lexorank.LexoRank.max();
89
88
  var betweenRank = isMovingUp ? prevRank.between(curRank) : curRank.between(nextRank); // For each selected item, assign a new orderRank between now and next
90
89
 
91
- // For each selected item, assign a new orderRank between now and next
92
90
  for (var selectedIndex = 0; selectedIndex < selectedItems.length; selectedIndex += 1) {
93
91
  selectedItems[selectedIndex][_constants.ORDER_FIELD_NAME] = betweenRank.value;
94
92
  betweenRank = isMovingUp ? betweenRank.between(curRank) : betweenRank.between(nextRank);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/helpers/reorderDocuments.js"],"names":["lexicographicalSort","a","b","ORDER_FIELD_NAME","createManifest","entities","selectedItems","isMovingUp","curIndex","nextIndex","prevIndex","table","name","title","order","map","item","itemIndex","length","sort","reorderDocuments","selectedIds","source","destination","debug","startIndex","index","endIndex","filter","includes","_id","message","join","reduce","acc","cur","all","selected","prevRank","LexoRank","parse","min","curRank","nextRank","max","betweenRank","between","selectedIndex","value","patches","doc","set","allSorted","newOrder"],"mappings":"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","sourcesContent":["import {LexoRank} from 'lexorank'\nimport {ORDER_FIELD_NAME} from './constants'\n\nfunction lexicographicalSort(a, b) {\n if (a[ORDER_FIELD_NAME] < b[ORDER_FIELD_NAME]) {\n return -1\n }\n if (a[ORDER_FIELD_NAME] > b[ORDER_FIELD_NAME]) {\n return 1\n }\n return 0\n}\n\n// In lieu of actual *tests*, this is a table\n// to visualise the new order which if correct, shows:\n// 1. The `before` field (or start of the list)\n// 2. The inserted fields, in order\n// 3. The `after` document (or end of the list)\n// eslint-disable-next-line no-unused-vars\nfunction createManifest({entities, selectedItems, isMovingUp, curIndex, nextIndex, prevIndex}) {\n const table = [\n {\n name: `Before`,\n title:\n curIndex === 0 ? `<<Start of List>>` : entities[isMovingUp ? prevIndex : curIndex]?.title,\n order: curIndex === 0 ? `000` : entities[isMovingUp ? prevIndex : curIndex][ORDER_FIELD_NAME],\n },\n ...selectedItems.map((item, itemIndex) => ({\n name: itemIndex,\n title: item?.title,\n order: item[ORDER_FIELD_NAME],\n })),\n {\n name: `After`,\n title:\n curIndex === entities.length - 1\n ? `<<End of List>>`\n : entities[isMovingUp ? curIndex : nextIndex]?.title,\n order:\n curIndex === entities.length - 1\n ? `zzz`\n : entities[isMovingUp ? curIndex : nextIndex][ORDER_FIELD_NAME],\n },\n ]\n\n return table.sort(lexicographicalSort)\n}\n\nexport const reorderDocuments = ({entities, selectedIds, source, destination, debug = false}) => {\n const startIndex = source.index\n const endIndex = destination.index\n const isMovingUp = startIndex > endIndex\n const selectedItems = entities.filter((item) => selectedIds.includes(item._id))\n const message = [\n `Moved`,\n selectedItems.length === 1 ? `1 Document` : `${selectedItems.length} Documents`,\n isMovingUp ? `up` : `down`,\n `from position`,\n `${startIndex + 1} to ${endIndex + 1}`,\n ].join(' ')\n\n const {all, selected} = entities.reduce(\n (acc, cur, curIndex) => {\n // Selected items get spread in below, so skip them here\n if (selectedIds.includes(cur._id)) {\n return {all: acc.all, selected: acc.selected}\n }\n\n // Drop seleced items in\n if (curIndex === endIndex) {\n const prevIndex = curIndex - 1\n const prevRank = entities[prevIndex]?.[ORDER_FIELD_NAME]\n ? LexoRank.parse(entities[prevIndex]?.[ORDER_FIELD_NAME])\n : LexoRank.min()\n\n const curRank = LexoRank.parse(entities[curIndex][ORDER_FIELD_NAME])\n\n const nextIndex = curIndex + 1\n const nextRank = entities[nextIndex]?.[ORDER_FIELD_NAME]\n ? LexoRank.parse(entities[nextIndex]?.[ORDER_FIELD_NAME])\n : LexoRank.max()\n\n let betweenRank = isMovingUp ? prevRank.between(curRank) : curRank.between(nextRank)\n\n // For each selected item, assign a new orderRank between now and next\n for (let selectedIndex = 0; selectedIndex < selectedItems.length; selectedIndex += 1) {\n selectedItems[selectedIndex][ORDER_FIELD_NAME] = betweenRank.value\n betweenRank = isMovingUp ? betweenRank.between(curRank) : betweenRank.between(nextRank)\n }\n\n return {\n // The `all` array gets sorted by order field later anyway\n // so that this probably isn't necessary ¯\\_(ツ)_/¯\n all: isMovingUp\n ? [...acc.all, ...selectedItems, cur]\n : [...acc.all, cur, ...selectedItems],\n selected: selectedItems,\n }\n }\n\n return {all: [...acc.all, cur], selected: acc.selected}\n },\n {all: [], selected: []}\n )\n\n const patches = selected.map((doc) => {\n return [\n doc._id,\n {\n set: {\n [ORDER_FIELD_NAME]: doc[ORDER_FIELD_NAME],\n },\n },\n ]\n })\n\n // Safety-check to make sure everything is in order\n const allSorted = all.sort(lexicographicalSort)\n\n return {newOrder: allSorted, patches, message}\n}\n"],"file":"reorderDocuments.js"}
1
+ {"version":3,"file":"reorderDocuments.js","names":["lexicographicalSort","a","b","ORDER_FIELD_NAME","createManifest","entities","selectedItems","isMovingUp","curIndex","nextIndex","prevIndex","table","name","title","order","map","item","itemIndex","length","sort","reorderDocuments","selectedIds","source","destination","debug","startIndex","index","endIndex","filter","includes","_id","message","join","reduce","acc","cur","all","selected","prevRank","LexoRank","parse","min","curRank","nextRank","max","betweenRank","between","selectedIndex","value","patches","doc","set","allSorted","newOrder"],"sources":["../../src/helpers/reorderDocuments.js"],"sourcesContent":["import {LexoRank} from 'lexorank'\nimport {ORDER_FIELD_NAME} from './constants'\n\nfunction lexicographicalSort(a, b) {\n if (a[ORDER_FIELD_NAME] < b[ORDER_FIELD_NAME]) {\n return -1\n }\n if (a[ORDER_FIELD_NAME] > b[ORDER_FIELD_NAME]) {\n return 1\n }\n return 0\n}\n\n// In lieu of actual *tests*, this is a table\n// to visualise the new order which if correct, shows:\n// 1. The `before` field (or start of the list)\n// 2. The inserted fields, in order\n// 3. The `after` document (or end of the list)\n// eslint-disable-next-line no-unused-vars\nfunction createManifest({entities, selectedItems, isMovingUp, curIndex, nextIndex, prevIndex}) {\n const table = [\n {\n name: `Before`,\n title:\n curIndex === 0 ? `<<Start of List>>` : entities[isMovingUp ? prevIndex : curIndex]?.title,\n order: curIndex === 0 ? `000` : entities[isMovingUp ? prevIndex : curIndex][ORDER_FIELD_NAME],\n },\n ...selectedItems.map((item, itemIndex) => ({\n name: itemIndex,\n title: item?.title,\n order: item[ORDER_FIELD_NAME],\n })),\n {\n name: `After`,\n title:\n curIndex === entities.length - 1\n ? `<<End of List>>`\n : entities[isMovingUp ? curIndex : nextIndex]?.title,\n order:\n curIndex === entities.length - 1\n ? `zzz`\n : entities[isMovingUp ? curIndex : nextIndex][ORDER_FIELD_NAME],\n },\n ]\n\n return table.sort(lexicographicalSort)\n}\n\nexport const reorderDocuments = ({entities, selectedIds, source, destination, debug = false}) => {\n const startIndex = source.index\n const endIndex = destination.index\n const isMovingUp = startIndex > endIndex\n const selectedItems = entities.filter((item) => selectedIds.includes(item._id))\n const message = [\n `Moved`,\n selectedItems.length === 1 ? `1 Document` : `${selectedItems.length} Documents`,\n isMovingUp ? `up` : `down`,\n `from position`,\n `${startIndex + 1} to ${endIndex + 1}`,\n ].join(' ')\n\n const {all, selected} = entities.reduce(\n (acc, cur, curIndex) => {\n // Selected items get spread in below, so skip them here\n if (selectedIds.includes(cur._id)) {\n return {all: acc.all, selected: acc.selected}\n }\n\n // Drop seleced items in\n if (curIndex === endIndex) {\n const prevIndex = curIndex - 1\n const prevRank = entities[prevIndex]?.[ORDER_FIELD_NAME]\n ? LexoRank.parse(entities[prevIndex]?.[ORDER_FIELD_NAME])\n : LexoRank.min()\n\n const curRank = LexoRank.parse(entities[curIndex][ORDER_FIELD_NAME])\n\n const nextIndex = curIndex + 1\n const nextRank = entities[nextIndex]?.[ORDER_FIELD_NAME]\n ? LexoRank.parse(entities[nextIndex]?.[ORDER_FIELD_NAME])\n : LexoRank.max()\n\n let betweenRank = isMovingUp ? prevRank.between(curRank) : curRank.between(nextRank)\n\n // For each selected item, assign a new orderRank between now and next\n for (let selectedIndex = 0; selectedIndex < selectedItems.length; selectedIndex += 1) {\n selectedItems[selectedIndex][ORDER_FIELD_NAME] = betweenRank.value\n betweenRank = isMovingUp ? betweenRank.between(curRank) : betweenRank.between(nextRank)\n }\n\n return {\n // The `all` array gets sorted by order field later anyway\n // so that this probably isn't necessary ¯\\_(ツ)_/¯\n all: isMovingUp\n ? [...acc.all, ...selectedItems, cur]\n : [...acc.all, cur, ...selectedItems],\n selected: selectedItems,\n }\n }\n\n return {all: [...acc.all, cur], selected: acc.selected}\n },\n {all: [], selected: []}\n )\n\n const patches = selected.map((doc) => {\n return [\n doc._id,\n {\n set: {\n [ORDER_FIELD_NAME]: doc[ORDER_FIELD_NAME],\n },\n },\n ]\n })\n\n // Safety-check to make sure everything is in order\n const allSorted = all.sort(lexicographicalSort)\n\n return {newOrder: allSorted, patches, message}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/helpers/resetOrder.js"],"names":["client","sanityClient","withConfig","apiVersion","resetOrder","type","query","queryParams","order","ORDER_FIELD_NAME","documents","fetch","length","transaction","aLexoRank","LexoRank","min","index","genNext","patch","set","value","commit","then","update","catch","err"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;;;;;AAEA,IAAMA,MAAM,GAAGC,gBAAaC,UAAb,CAAwB;AACrCC,EAAAA,UAAU,EAAE;AADyB,CAAxB,CAAf,C,CAIA;AACA;;;SACsBC,U;;;;;kCAAf,aAAqC;AAAA,QAAXC,IAAW;AAC1C,QAAMC,KAAK,+CAAX;AACA,QAAMC,WAAW,GAAG;AAACF,MAAAA,IAAD;AAAOG,MAAAA,KAAK,EAAEC;AAAd,KAApB;AACA,QAAMC,SAAS,SAASV,MAAM,CAACW,KAAP,CAAaL,KAAb,EAAoBC,WAApB,CAAxB;;AAEA,QAAI,CAACG,SAAS,CAACE,MAAf,EAAuB;AACrB,aAAO,IAAP;AACD;;AAED,QAAMC,WAAW,GAAGb,MAAM,CAACa,WAAP,EAApB;;AACA,QAAIC,SAAS,GAAGC,mBAASC,GAAT,EAAhB;;AAEA,SAAK,IAAIC,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGP,SAAS,CAACE,MAAtC,EAA8CK,KAAK,IAAI,CAAvD,EAA0D;AACxD;AACAH,MAAAA,SAAS,GAAGA,SAAS,CAACI,OAAV,GAAoBA,OAApB,EAAZ;AAEAL,MAAAA,WAAW,CAACM,KAAZ,CAAkBT,SAAS,CAACO,KAAD,CAA3B,EAAoC;AAClCG,QAAAA,GAAG,EAAE;AAAC,WAACX,2BAAD,GAAoBK,SAAS,CAACO;AAA/B;AAD6B,OAApC;AAGD;;AAED,WAAOR,WAAW,CACfS,MADI,GAEJC,IAFI,CAEEC,MAAD,IAAYA,MAFb,EAGJC,KAHI,CAGGC,GAAD,IAASA,GAHX,CAAP;AAID,G","sourcesContent":["import {LexoRank} from 'lexorank'\nimport sanityClient from 'part:@sanity/base/client'\nimport {ORDER_FIELD_NAME} from './constants'\n\nconst client = sanityClient.withConfig({\n apiVersion: '2021-09-01',\n})\n\n// Function to wipe and re-do ordering with LexoRank\n// Will at least attempt to start with the current order\nexport async function resetOrder(type = ``) {\n const query = `*[_type == $type]|order(@[$order] asc)._id`\n const queryParams = {type, order: ORDER_FIELD_NAME}\n const documents = await client.fetch(query, queryParams)\n\n if (!documents.length) {\n return null\n }\n\n const transaction = client.transaction()\n let aLexoRank = LexoRank.min()\n\n for (let index = 0; index < documents.length; index += 1) {\n // Generate next rank before even the first document so there's room to move!\n aLexoRank = aLexoRank.genNext().genNext()\n\n transaction.patch(documents[index], {\n set: {[ORDER_FIELD_NAME]: aLexoRank.value},\n })\n }\n\n return transaction\n .commit()\n .then((update) => update)\n .catch((err) => err)\n}\n"],"file":"resetOrder.js"}
1
+ {"version":3,"file":"resetOrder.js","names":["client","sanityClient","withConfig","apiVersion","resetOrder","type","query","queryParams","order","ORDER_FIELD_NAME","documents","fetch","length","transaction","aLexoRank","LexoRank","min","index","genNext","patch","set","value","commit","then","update","catch","err"],"sources":["../../src/helpers/resetOrder.js"],"sourcesContent":["import {LexoRank} from 'lexorank'\nimport sanityClient from 'part:@sanity/base/client'\nimport {ORDER_FIELD_NAME} from './constants'\n\nconst client = sanityClient.withConfig({\n apiVersion: '2021-09-01',\n})\n\n// Function to wipe and re-do ordering with LexoRank\n// Will at least attempt to start with the current order\nexport async function resetOrder(type = ``) {\n const query = `*[_type == $type]|order(@[$order] asc)._id`\n const queryParams = {type, order: ORDER_FIELD_NAME}\n const documents = await client.fetch(query, queryParams)\n\n if (!documents.length) {\n return null\n }\n\n const transaction = client.transaction()\n let aLexoRank = LexoRank.min()\n\n for (let index = 0; index < documents.length; index += 1) {\n // Generate next rank before even the first document so there's room to move!\n aLexoRank = aLexoRank.genNext().genNext()\n\n transaction.patch(documents[index], {\n set: {[ORDER_FIELD_NAME]: aLexoRank.value},\n })\n }\n\n return transaction\n .commit()\n .then((update) => update)\n .catch((err) => err)\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;;;;;AAEA,IAAMA,MAAM,GAAGC,eAAA,CAAaC,UAAb,CAAwB;EACrCC,UAAU,EAAE;AADyB,CAAxB,CAAf,C,CAIA;AACA;;;SACsBC,U;;;;;kCAAf,aAAqC;IAAA,IAAXC,IAAW;IAC1C,IAAMC,KAAK,+CAAX;IACA,IAAMC,WAAW,GAAG;MAACF,IAAD;MAAOG,KAAK,EAAEC;IAAd,CAApB;IACA,IAAMC,SAAS,SAASV,MAAM,CAACW,KAAP,CAAaL,KAAb,EAAoBC,WAApB,CAAxB;;IAEA,IAAI,CAACG,SAAS,CAACE,MAAf,EAAuB;MACrB,OAAO,IAAP;IACD;;IAED,IAAMC,WAAW,GAAGb,MAAM,CAACa,WAAP,EAApB;;IACA,IAAIC,SAAS,GAAGC,kBAAA,CAASC,GAAT,EAAhB;;IAEA,KAAK,IAAIC,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGP,SAAS,CAACE,MAAtC,EAA8CK,KAAK,IAAI,CAAvD,EAA0D;MACxD;MACAH,SAAS,GAAGA,SAAS,CAACI,OAAV,GAAoBA,OAApB,EAAZ;MAEAL,WAAW,CAACM,KAAZ,CAAkBT,SAAS,CAACO,KAAD,CAA3B,EAAoC;QAClCG,GAAG,EAAE;UAAC,CAACX,2BAAD,GAAoBK,SAAS,CAACO;QAA/B;MAD6B,CAApC;IAGD;;IAED,OAAOR,WAAW,CACfS,MADI,GAEJC,IAFI,CAEEC,MAAD,IAAYA,MAFb,EAGJC,KAHI,CAGGC,GAAD,IAASA,GAHX,CAAP;EAID,C"}
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA","sourcesContent":["import {orderRankField} from './fields/orderRankField'\nimport {orderRankOrdering} from './fields/orderRankOrdering'\nimport {orderableDocumentListDeskItem} from './desk-structure/orderableDocumentListDeskItem'\n\nexport {orderRankField, orderRankOrdering, orderableDocumentListDeskItem}\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.js"],"sourcesContent":["import {orderRankField} from './fields/orderRankField'\nimport {orderRankOrdering} from './fields/orderRankOrdering'\nimport {orderableDocumentListDeskItem} from './desk-structure/orderableDocumentListDeskItem'\n\nexport {orderRankField, orderRankOrdering, orderableDocumentListDeskItem}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanity/orderable-document-list",
3
- "version": "0.0.6",
3
+ "version": "0.0.9",
4
4
  "description": "Drag-and-drop Document Ordering without leaving the Editing surface",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -11,16 +11,16 @@ const client = sanityClient.withConfig({
11
11
  apiVersion: '2021-09-01',
12
12
  })
13
13
 
14
- export default function DocumentListQuery({type}) {
14
+ export default function DocumentListQuery({type, filter, params}) {
15
15
  const [isLoading, setIsLoading] = useState(true)
16
16
  const [listIsUpdating, setListIsUpdating] = useState(false)
17
17
  const [data, setData] = useState([])
18
18
 
19
19
  useEffect(() => {
20
- const query = `*[_type == $type]|order(@[$order] asc){
20
+ const query = `*[_type == $type ${filter ? `&& ${filter}` : ''}]|order(@[$order] asc){
21
21
  _id, _type, ${ORDER_FIELD_NAME}
22
22
  }`
23
- const queryParams = {type, order: ORDER_FIELD_NAME}
23
+ const queryParams = Object.assign(params, {type, order: ORDER_FIELD_NAME})
24
24
  let subscription = null
25
25
 
26
26
  // eslint-disable-next-line require-await
@@ -99,4 +99,11 @@ export default function DocumentListQuery({type}) {
99
99
 
100
100
  DocumentListQuery.propTypes = {
101
101
  type: PropTypes.string.isRequired,
102
+ filter: PropTypes.string,
103
+ params: PropTypes.object,
104
+ }
105
+
106
+ DocumentListQuery.defaultProps = {
107
+ filter: ``,
108
+ params: {},
102
109
  }
@@ -12,7 +12,13 @@ import Feedback from './Feedback'
12
12
 
13
13
  // 1. Validate first that the schema has been configured for ordering
14
14
  // 2. Setup context for showIncrements
15
- export default function DocumentListWrapper({type, showIncrements, resetOrderTransaction}) {
15
+ export default function DocumentListWrapper({
16
+ type,
17
+ filter,
18
+ params,
19
+ showIncrements,
20
+ resetOrderTransaction,
21
+ }) {
16
22
  const toast = useToast()
17
23
 
18
24
  useEffect(() => {
@@ -76,7 +82,7 @@ export default function DocumentListWrapper({type, showIncrements, resetOrderTra
76
82
 
77
83
  return (
78
84
  <OrderableContext.Provider value={{showIncrements}}>
79
- <DocumentListQuery type={type} />
85
+ <DocumentListQuery type={type} filter={filter} params={params} />
80
86
  </OrderableContext.Provider>
81
87
  )
82
88
  }
@@ -84,8 +90,15 @@ export default function DocumentListWrapper({type, showIncrements, resetOrderTra
84
90
  DocumentListWrapper.propTypes = {
85
91
  showIncrements: PropTypes.bool.isRequired,
86
92
  type: PropTypes.string.isRequired,
93
+ filter: PropTypes.string,
94
+ params: PropTypes.object,
87
95
  resetOrderTransaction: PropTypes.shape({
88
96
  title: PropTypes.string,
89
97
  status: PropTypes.string,
90
98
  }).isRequired,
91
99
  }
100
+
101
+ DocumentListWrapper.defaultProps = {
102
+ filter: ``,
103
+ params: {},
104
+ }
@@ -222,7 +222,7 @@ export default function DraggableList({data, type, listIsUpdating, setListIsUpda
222
222
  const isSelected = selectedIds.includes(item._id)
223
223
  const isDragging = innerSnapshot.isDragging
224
224
  const isGhosting = Boolean(!isDragging && draggingId && isSelected)
225
- const isUpdating = isUpdating && isSelected
225
+ const isUpdating = listIsUpdating && isSelected
226
226
  const isDisabled = Boolean(!item[ORDER_FIELD_NAME])
227
227
  const isDuplicate = duplicateOrders.includes(item[ORDER_FIELD_NAME])
228
228
  const tone = cardTone({isDuplicate, isGhosting, isDragging, isSelected})
@@ -9,6 +9,8 @@ export default class OrderableDocumentList extends Component {
9
9
  static propTypes = {
10
10
  options: PropTypes.shape({
11
11
  type: PropTypes.string,
12
+ filter: PropTypes.string,
13
+ params: PropTypes.object,
12
14
  }).isRequired,
13
15
  }
14
16
 
@@ -56,6 +58,8 @@ export default class OrderableDocumentList extends Component {
56
58
  return (
57
59
  <DocumentListWrapper
58
60
  type={this?.props?.options?.type}
61
+ filter={this?.props?.options?.filter}
62
+ params={this?.props?.options?.params}
59
63
  showIncrements={this.state.showIncrements}
60
64
  resetOrderTransaction={this.state.resetOrderTransaction}
61
65
  />
@@ -13,7 +13,7 @@ export function orderableDocumentListDeskItem(config = {}) {
13
13
  `)
14
14
  }
15
15
 
16
- const {type, title, icon} = config
16
+ const {type, filter, params, title, icon} = config
17
17
 
18
18
  const listTitle = title ?? `Orderable ${type}`
19
19
  const listId = `orderable-${type}`
@@ -26,10 +26,14 @@ export function orderableDocumentListDeskItem(config = {}) {
26
26
  .icon(listIcon)
27
27
  .child(
28
28
  Object.assign(S.documentTypeList(type).serialize(), {
29
+ // Prevents the component from re-rendering when switching documents
29
30
  __preserveInstance: true,
31
+ // Prevents the component from NOT re-rendering when switching listItems
32
+ key: listId,
33
+
30
34
  type: 'component',
31
35
  component: OrderableDocumentList,
32
- options: {type},
36
+ options: {type, filter, params},
33
37
  menuItems: [
34
38
  S.menuItem()
35
39
  .title(`Create new ${typeTitle}`)