@sanity/orderable-document-list 0.0.8 → 1.0.0-v3-studio.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +142 -48
- package/lib/index.d.ts +38 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +849 -30
- package/lib/index.js.map +1 -1
- package/lib/index.modern.js +840 -0
- package/lib/index.modern.js.map +1 -0
- package/package.json +56 -22
- package/src/{Document.js → Document.tsx} +30 -27
- package/src/{DocumentListQuery.js → DocumentListQuery.tsx} +29 -18
- package/src/{DocumentListWrapper.js → DocumentListWrapper.tsx} +29 -21
- package/src/DraggableList.tsx +304 -0
- package/src/{Feedback.js → Feedback.tsx} +2 -7
- package/src/OrderableContext.ts +7 -0
- package/src/{OrderableDocumentList.js → OrderableDocumentList.tsx} +25 -10
- package/src/desk-structure/globalClientWorkaround.ts +33 -0
- package/src/desk-structure/{orderableDocumentListDeskItem.js → orderableDocumentListDeskItem.ts} +27 -11
- package/src/fields/orderRankField.ts +45 -0
- package/src/fields/{orderRankOrdering.js → orderRankOrdering.ts} +0 -0
- package/src/helpers/client.ts +13 -0
- package/src/helpers/constants.ts +1 -0
- package/src/helpers/{initialRank.js → initialRank.ts} +2 -2
- package/src/helpers/{reorderDocuments.js → reorderDocuments.ts} +33 -44
- package/src/helpers/{resetOrder.js → resetOrder.ts} +3 -8
- package/src/index.ts +9 -0
- package/.babelrc +0 -3
- package/.eslintignore +0 -1
- package/.eslintrc.js +0 -50
- package/lib/Document.js +0 -101
- package/lib/Document.js.map +0 -1
- package/lib/DocumentListQuery.js +0 -155
- package/lib/DocumentListQuery.js.map +0 -1
- package/lib/DocumentListWrapper.js +0 -97
- package/lib/DocumentListWrapper.js.map +0 -1
- package/lib/DraggableList.js +0 -314
- package/lib/DraggableList.js.map +0 -1
- package/lib/Feedback.js +0 -31
- package/lib/Feedback.js.map +0 -1
- package/lib/OrderableContext.js +0 -15
- package/lib/OrderableContext.js.map +0 -1
- package/lib/OrderableDocumentList.js +0 -99
- package/lib/OrderableDocumentList.js.map +0 -1
- package/lib/desk-structure/orderableDocumentListDeskItem.js +0 -52
- package/lib/desk-structure/orderableDocumentListDeskItem.js.map +0 -1
- package/lib/fields/orderRankField.js +0 -64
- package/lib/fields/orderRankField.js.map +0 -1
- package/lib/fields/orderRankOrdering.js +0 -19
- package/lib/fields/orderRankOrdering.js.map +0 -1
- package/lib/helpers/constants.js +0 -9
- package/lib/helpers/constants.js.map +0 -1
- package/lib/helpers/initialRank.js +0 -18
- package/lib/helpers/initialRank.js.map +0 -1
- package/lib/helpers/reorderDocuments.js +0 -133
- package/lib/helpers/reorderDocuments.js.map +0 -1
- package/lib/helpers/resetOrder.js +0 -62
- package/lib/helpers/resetOrder.js.map +0 -1
- package/sanity.json +0 -7
- package/src/DraggableList.js +0 -276
- package/src/OrderableContext.js +0 -3
- package/src/fields/orderRankField.js +0 -35
- package/src/helpers/constants.js +0 -1
- package/src/index.js +0 -5
|
@@ -1,7 +1,25 @@
|
|
|
1
1
|
import {LexoRank} from 'lexorank'
|
|
2
|
+
import type {PatchOperations, SanityDocument} from 'sanity'
|
|
2
3
|
import {ORDER_FIELD_NAME} from './constants'
|
|
3
4
|
|
|
4
|
-
|
|
5
|
+
export interface MaifestArgs {
|
|
6
|
+
entities: SanityDocument[]
|
|
7
|
+
selectedItems: SanityDocument[]
|
|
8
|
+
isMovingUp: boolean
|
|
9
|
+
curIndex: number
|
|
10
|
+
nextIndex: number
|
|
11
|
+
prevIndex: number
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface ReorderArgs {
|
|
15
|
+
entities: SanityDocument[]
|
|
16
|
+
selectedIds: string[]
|
|
17
|
+
source: any
|
|
18
|
+
destination: any
|
|
19
|
+
debug?: boolean
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function lexicographicalSort(a: {[ORDER_FIELD_NAME]: string}, b: {[ORDER_FIELD_NAME]: string}) {
|
|
5
23
|
if (a[ORDER_FIELD_NAME] < b[ORDER_FIELD_NAME]) {
|
|
6
24
|
return -1
|
|
7
25
|
}
|
|
@@ -11,42 +29,13 @@ function lexicographicalSort(a, b) {
|
|
|
11
29
|
return 0
|
|
12
30
|
}
|
|
13
31
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const table = [
|
|
22
|
-
{
|
|
23
|
-
name: `Before`,
|
|
24
|
-
title:
|
|
25
|
-
curIndex === 0 ? `<<Start of List>>` : entities[isMovingUp ? prevIndex : curIndex]?.title,
|
|
26
|
-
order: curIndex === 0 ? `000` : entities[isMovingUp ? prevIndex : curIndex][ORDER_FIELD_NAME],
|
|
27
|
-
},
|
|
28
|
-
...selectedItems.map((item, itemIndex) => ({
|
|
29
|
-
name: itemIndex,
|
|
30
|
-
title: item?.title,
|
|
31
|
-
order: item[ORDER_FIELD_NAME],
|
|
32
|
-
})),
|
|
33
|
-
{
|
|
34
|
-
name: `After`,
|
|
35
|
-
title:
|
|
36
|
-
curIndex === entities.length - 1
|
|
37
|
-
? `<<End of List>>`
|
|
38
|
-
: entities[isMovingUp ? curIndex : nextIndex]?.title,
|
|
39
|
-
order:
|
|
40
|
-
curIndex === entities.length - 1
|
|
41
|
-
? `zzz`
|
|
42
|
-
: entities[isMovingUp ? curIndex : nextIndex][ORDER_FIELD_NAME],
|
|
43
|
-
},
|
|
44
|
-
]
|
|
45
|
-
|
|
46
|
-
return table.sort(lexicographicalSort)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export const reorderDocuments = ({entities, selectedIds, source, destination, debug = false}) => {
|
|
32
|
+
export const reorderDocuments = ({
|
|
33
|
+
entities,
|
|
34
|
+
selectedIds,
|
|
35
|
+
source,
|
|
36
|
+
destination,
|
|
37
|
+
debug = false,
|
|
38
|
+
}: ReorderArgs) => {
|
|
50
39
|
const startIndex = source.index
|
|
51
40
|
const endIndex = destination.index
|
|
52
41
|
const isMovingUp = startIndex > endIndex
|
|
@@ -70,21 +59,21 @@ export const reorderDocuments = ({entities, selectedIds, source, destination, de
|
|
|
70
59
|
if (curIndex === endIndex) {
|
|
71
60
|
const prevIndex = curIndex - 1
|
|
72
61
|
const prevRank = entities[prevIndex]?.[ORDER_FIELD_NAME]
|
|
73
|
-
? LexoRank.parse(entities[prevIndex]?.[ORDER_FIELD_NAME])
|
|
62
|
+
? LexoRank.parse(entities[prevIndex]?.[ORDER_FIELD_NAME] as string)
|
|
74
63
|
: LexoRank.min()
|
|
75
64
|
|
|
76
|
-
const curRank = LexoRank.parse(entities[curIndex][ORDER_FIELD_NAME])
|
|
65
|
+
const curRank = LexoRank.parse(entities[curIndex][ORDER_FIELD_NAME] as string)
|
|
77
66
|
|
|
78
67
|
const nextIndex = curIndex + 1
|
|
79
68
|
const nextRank = entities[nextIndex]?.[ORDER_FIELD_NAME]
|
|
80
|
-
? LexoRank.parse(entities[nextIndex]?.[ORDER_FIELD_NAME])
|
|
69
|
+
? LexoRank.parse(entities[nextIndex]?.[ORDER_FIELD_NAME] as string)
|
|
81
70
|
: LexoRank.max()
|
|
82
71
|
|
|
83
72
|
let betweenRank = isMovingUp ? prevRank.between(curRank) : curRank.between(nextRank)
|
|
84
73
|
|
|
85
74
|
// For each selected item, assign a new orderRank between now and next
|
|
86
75
|
for (let selectedIndex = 0; selectedIndex < selectedItems.length; selectedIndex += 1) {
|
|
87
|
-
selectedItems[selectedIndex][ORDER_FIELD_NAME] = betweenRank.value
|
|
76
|
+
selectedItems[selectedIndex][ORDER_FIELD_NAME] = (betweenRank as any).value as string
|
|
88
77
|
betweenRank = isMovingUp ? betweenRank.between(curRank) : betweenRank.between(nextRank)
|
|
89
78
|
}
|
|
90
79
|
|
|
@@ -100,10 +89,10 @@ export const reorderDocuments = ({entities, selectedIds, source, destination, de
|
|
|
100
89
|
|
|
101
90
|
return {all: [...acc.all, cur], selected: acc.selected}
|
|
102
91
|
},
|
|
103
|
-
{all: [], selected: []}
|
|
92
|
+
{all: [] as SanityDocument[], selected: [] as SanityDocument[]}
|
|
104
93
|
)
|
|
105
94
|
|
|
106
|
-
const patches = selected.map((doc) => {
|
|
95
|
+
const patches: [string, PatchOperations][] = selected.map((doc) => {
|
|
107
96
|
return [
|
|
108
97
|
doc._id,
|
|
109
98
|
{
|
|
@@ -115,7 +104,7 @@ export const reorderDocuments = ({entities, selectedIds, source, destination, de
|
|
|
115
104
|
})
|
|
116
105
|
|
|
117
106
|
// Safety-check to make sure everything is in order
|
|
118
|
-
const allSorted = all.sort(lexicographicalSort)
|
|
107
|
+
const allSorted = (all as unknown as {[ORDER_FIELD_NAME]: string}[]).sort(lexicographicalSort)
|
|
119
108
|
|
|
120
109
|
return {newOrder: allSorted, patches, message}
|
|
121
110
|
}
|
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
import {LexoRank} from 'lexorank'
|
|
2
|
-
import sanityClient from 'part:@sanity/base/client'
|
|
3
2
|
import {ORDER_FIELD_NAME} from './constants'
|
|
4
|
-
|
|
5
|
-
const client = sanityClient.withConfig({
|
|
6
|
-
apiVersion: '2021-09-01',
|
|
7
|
-
})
|
|
8
|
-
|
|
3
|
+
import {SanityClient} from '@sanity/client'
|
|
9
4
|
// Function to wipe and re-do ordering with LexoRank
|
|
10
5
|
// Will at least attempt to start with the current order
|
|
11
|
-
export async function resetOrder(type =
|
|
6
|
+
export async function resetOrder(type = ``, client: SanityClient) {
|
|
12
7
|
const query = `*[_type == $type]|order(@[$order] asc)._id`
|
|
13
8
|
const queryParams = {type, order: ORDER_FIELD_NAME}
|
|
14
9
|
const documents = await client.fetch(query, queryParams)
|
|
@@ -25,7 +20,7 @@ export async function resetOrder(type = ``) {
|
|
|
25
20
|
aLexoRank = aLexoRank.genNext().genNext()
|
|
26
21
|
|
|
27
22
|
transaction.patch(documents[index], {
|
|
28
|
-
set: {[ORDER_FIELD_NAME]: aLexoRank.value},
|
|
23
|
+
set: {[ORDER_FIELD_NAME]: (aLexoRank as any).value as string},
|
|
29
24
|
})
|
|
30
25
|
}
|
|
31
26
|
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import {orderRankField, RankFieldConfig} from './fields/orderRankField'
|
|
2
|
+
import {orderRankOrdering} from './fields/orderRankOrdering'
|
|
3
|
+
import {
|
|
4
|
+
orderableDocumentListDeskItem,
|
|
5
|
+
type OrderableListConfig,
|
|
6
|
+
} from './desk-structure/orderableDocumentListDeskItem'
|
|
7
|
+
|
|
8
|
+
export type {OrderableListConfig, RankFieldConfig}
|
|
9
|
+
export {orderRankField, orderRankOrdering, orderableDocumentListDeskItem}
|
package/.babelrc
DELETED
package/.eslintignore
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
lib
|
package/.eslintrc.js
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
root: true,
|
|
3
|
-
parser: '@typescript-eslint/parser',
|
|
4
|
-
env: {
|
|
5
|
-
node: true,
|
|
6
|
-
browser: true,
|
|
7
|
-
},
|
|
8
|
-
settings: {
|
|
9
|
-
react: {version: '16.9.0'},
|
|
10
|
-
},
|
|
11
|
-
extends: [
|
|
12
|
-
'sanity',
|
|
13
|
-
'sanity/react',
|
|
14
|
-
'sanity/import',
|
|
15
|
-
'plugin:react-hooks/recommended',
|
|
16
|
-
'prettier',
|
|
17
|
-
],
|
|
18
|
-
rules: {
|
|
19
|
-
'no-use-before-define': 'off',
|
|
20
|
-
'@typescript-eslint/no-var-requires': 'off',
|
|
21
|
-
'import/no-extraneous-dependencies': 'off', // because of parts
|
|
22
|
-
'import/no-unresolved': ['error', {ignore: ['.*:.*']}], // because of parts
|
|
23
|
-
'prettier/prettier': [
|
|
24
|
-
'error',
|
|
25
|
-
{
|
|
26
|
-
semi: false,
|
|
27
|
-
printWidth: 100,
|
|
28
|
-
bracketSpacing: false,
|
|
29
|
-
singleQuote: true,
|
|
30
|
-
},
|
|
31
|
-
],
|
|
32
|
-
'sort-imports': 'off', // prefer import/order
|
|
33
|
-
'react/jsx-no-bind': [
|
|
34
|
-
1,
|
|
35
|
-
{
|
|
36
|
-
ignoreDOMComponents: true,
|
|
37
|
-
},
|
|
38
|
-
],
|
|
39
|
-
'react/forbid-prop-types': [0],
|
|
40
|
-
},
|
|
41
|
-
plugins: ['prettier', 'react'],
|
|
42
|
-
overrides: [
|
|
43
|
-
{
|
|
44
|
-
files: ['*.ts', '*.tsx'],
|
|
45
|
-
rules: {
|
|
46
|
-
'no-undef': 'off',
|
|
47
|
-
},
|
|
48
|
-
},
|
|
49
|
-
],
|
|
50
|
-
}
|
package/lib/Document.js
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = Document;
|
|
7
|
-
|
|
8
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
-
|
|
10
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
-
|
|
12
|
-
var _icons = require("@sanity/icons");
|
|
13
|
-
|
|
14
|
-
var _ui = require("@sanity/ui");
|
|
15
|
-
|
|
16
|
-
var _preview = _interopRequireDefault(require("part:@sanity/base/preview"));
|
|
17
|
-
|
|
18
|
-
var _schema = _interopRequireDefault(require("part:@sanity/base/schema"));
|
|
19
|
-
|
|
20
|
-
var _OrderableContext = require("./OrderableContext");
|
|
21
|
-
|
|
22
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
|
-
|
|
24
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
25
|
-
|
|
26
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
|
-
|
|
28
|
-
// eslint-disable-next-line no-unused-vars
|
|
29
|
-
function Document(_ref) {
|
|
30
|
-
var doc = _ref.doc,
|
|
31
|
-
increment = _ref.increment,
|
|
32
|
-
entities = _ref.entities,
|
|
33
|
-
handleSelect = _ref.handleSelect,
|
|
34
|
-
index = _ref.index,
|
|
35
|
-
isFirst = _ref.isFirst,
|
|
36
|
-
isLast = _ref.isLast;
|
|
37
|
-
|
|
38
|
-
var _useContext = (0, _react.useContext)(_OrderableContext.OrderableContext),
|
|
39
|
-
showIncrements = _useContext.showIncrements;
|
|
40
|
-
|
|
41
|
-
return /*#__PURE__*/_react.default.createElement(_ui.Flex, {
|
|
42
|
-
align: "center"
|
|
43
|
-
}, /*#__PURE__*/_react.default.createElement(_ui.Box, {
|
|
44
|
-
paddingX: 3,
|
|
45
|
-
style: {
|
|
46
|
-
flexShrink: 0
|
|
47
|
-
}
|
|
48
|
-
}, /*#__PURE__*/_react.default.createElement(_ui.Text, {
|
|
49
|
-
fontSize: 4
|
|
50
|
-
}, /*#__PURE__*/_react.default.createElement(_icons.DragHandleIcon, null))), showIncrements && /*#__PURE__*/_react.default.createElement(_ui.Flex, {
|
|
51
|
-
style: {
|
|
52
|
-
flexShrink: 0
|
|
53
|
-
},
|
|
54
|
-
align: "center",
|
|
55
|
-
gap: 1,
|
|
56
|
-
paddingRight: 1
|
|
57
|
-
}, /*#__PURE__*/_react.default.createElement(_ui.Button, {
|
|
58
|
-
padding: 2,
|
|
59
|
-
mode: "ghost",
|
|
60
|
-
onClick: () => increment(index, index + -1, doc._id, entities),
|
|
61
|
-
disabled: isFirst,
|
|
62
|
-
icon: _icons.ChevronUpIcon
|
|
63
|
-
}), /*#__PURE__*/_react.default.createElement(_ui.Button, {
|
|
64
|
-
padding: 2,
|
|
65
|
-
mode: "ghost",
|
|
66
|
-
disabled: isLast,
|
|
67
|
-
onClick: () => increment(index, index + 1, doc._id, entities),
|
|
68
|
-
icon: _icons.ChevronDownIcon
|
|
69
|
-
})), /*#__PURE__*/_react.default.createElement(_ui.Button, {
|
|
70
|
-
style: {
|
|
71
|
-
width: "100%"
|
|
72
|
-
},
|
|
73
|
-
padding: 2,
|
|
74
|
-
mode: "bleed",
|
|
75
|
-
onClick: e => handleSelect(doc._id, index, e.nativeEvent)
|
|
76
|
-
}, /*#__PURE__*/_react.default.createElement(_ui.Flex, {
|
|
77
|
-
flex: 1,
|
|
78
|
-
align: "center"
|
|
79
|
-
}, /*#__PURE__*/_react.default.createElement(_ui.Box, {
|
|
80
|
-
flex: 1
|
|
81
|
-
}, /*#__PURE__*/_react.default.createElement(_preview.default, {
|
|
82
|
-
value: doc,
|
|
83
|
-
type: _schema.default.get(doc._type)
|
|
84
|
-
})))));
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
Document.propTypes = {
|
|
88
|
-
doc: _propTypes.default.shape({
|
|
89
|
-
_id: _propTypes.default.string,
|
|
90
|
-
_type: _propTypes.default.string
|
|
91
|
-
}).isRequired,
|
|
92
|
-
entities: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
93
|
-
_id: _propTypes.default.string
|
|
94
|
-
}).isRequired).isRequired,
|
|
95
|
-
handleSelect: _propTypes.default.func.isRequired,
|
|
96
|
-
increment: _propTypes.default.func.isRequired,
|
|
97
|
-
index: _propTypes.default.number.isRequired,
|
|
98
|
-
isFirst: _propTypes.default.bool.isRequired,
|
|
99
|
-
isLast: _propTypes.default.bool.isRequired
|
|
100
|
-
};
|
|
101
|
-
//# sourceMappingURL=Document.js.map
|
package/lib/Document.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"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"],"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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"}
|
package/lib/DocumentListQuery.js
DELETED
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = DocumentListQuery;
|
|
7
|
-
|
|
8
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
-
|
|
10
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
-
|
|
12
|
-
var _client = _interopRequireDefault(require("part:@sanity/base/client"));
|
|
13
|
-
|
|
14
|
-
var _ui = require("@sanity/ui");
|
|
15
|
-
|
|
16
|
-
var _DraggableList = _interopRequireDefault(require("./DraggableList"));
|
|
17
|
-
|
|
18
|
-
var _constants = require("./helpers/constants");
|
|
19
|
-
|
|
20
|
-
var _Feedback = _interopRequireDefault(require("./Feedback"));
|
|
21
|
-
|
|
22
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
|
-
|
|
24
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
25
|
-
|
|
26
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
|
-
|
|
28
|
-
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); } }
|
|
29
|
-
|
|
30
|
-
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
31
|
-
|
|
32
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
33
|
-
|
|
34
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
35
|
-
|
|
36
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
37
|
-
|
|
38
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
39
|
-
|
|
40
|
-
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
41
|
-
|
|
42
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
43
|
-
|
|
44
|
-
var client = _client.default.withConfig({
|
|
45
|
-
apiVersion: '2021-09-01'
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
function DocumentListQuery(_ref) {
|
|
49
|
-
var type = _ref.type;
|
|
50
|
-
|
|
51
|
-
var _useState = (0, _react.useState)(true),
|
|
52
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
53
|
-
isLoading = _useState2[0],
|
|
54
|
-
setIsLoading = _useState2[1];
|
|
55
|
-
|
|
56
|
-
var _useState3 = (0, _react.useState)(false),
|
|
57
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
58
|
-
listIsUpdating = _useState4[0],
|
|
59
|
-
setListIsUpdating = _useState4[1];
|
|
60
|
-
|
|
61
|
-
var _useState5 = (0, _react.useState)([]),
|
|
62
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
63
|
-
data = _useState6[0],
|
|
64
|
-
setData = _useState6[1];
|
|
65
|
-
|
|
66
|
-
(0, _react.useEffect)(() => {
|
|
67
|
-
var query = "*[_type == $type]|order(@[$order] asc){\n _id, _type, ".concat(_constants.ORDER_FIELD_NAME, "\n }");
|
|
68
|
-
var queryParams = {
|
|
69
|
-
type,
|
|
70
|
-
order: _constants.ORDER_FIELD_NAME
|
|
71
|
-
};
|
|
72
|
-
var subscription = null; // eslint-disable-next-line require-await
|
|
73
|
-
|
|
74
|
-
var fetchData = /*#__PURE__*/function () {
|
|
75
|
-
var _ref2 = _asyncToGenerator(function* () {
|
|
76
|
-
client.fetch(query, queryParams).then(documents => {
|
|
77
|
-
// Remove published document from list if draft also exists
|
|
78
|
-
var filteredDocuments = documents.reduce((acc, cur) => {
|
|
79
|
-
if (!cur._id.startsWith("drafts.")) {
|
|
80
|
-
// eslint-disable-next-line max-nested-callbacks
|
|
81
|
-
var alsoHasDraft = documents.some(doc => doc._id === "drafts.".concat(cur._id));
|
|
82
|
-
return alsoHasDraft ? acc : [...acc, cur];
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
return [...acc, cur];
|
|
86
|
-
}, []);
|
|
87
|
-
setData(filteredDocuments);
|
|
88
|
-
|
|
89
|
-
if (isLoading) {
|
|
90
|
-
setIsLoading(false);
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
return function fetchData() {
|
|
96
|
-
return _ref2.apply(this, arguments);
|
|
97
|
-
};
|
|
98
|
-
}();
|
|
99
|
-
|
|
100
|
-
var prepareData = /*#__PURE__*/function () {
|
|
101
|
-
var _ref3 = _asyncToGenerator(function* () {
|
|
102
|
-
setIsLoading(true);
|
|
103
|
-
yield fetchData();
|
|
104
|
-
|
|
105
|
-
if (!subscription) {
|
|
106
|
-
subscription = client.listen(query, queryParams).subscribe(() => fetchData());
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
return function prepareData() {
|
|
111
|
-
return _ref3.apply(this, arguments);
|
|
112
|
-
};
|
|
113
|
-
}(); // Get data but only if a document isn't being patched or we don't yet have data
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
if (!listIsUpdating && !data.length) {
|
|
117
|
-
prepareData();
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
return () => {
|
|
121
|
-
var _subscription;
|
|
122
|
-
|
|
123
|
-
return (_subscription = subscription) === null || _subscription === void 0 ? void 0 : _subscription.unsubscribe();
|
|
124
|
-
};
|
|
125
|
-
/* eslint-disable-next-line react-hooks/exhaustive-deps */
|
|
126
|
-
}, [type]);
|
|
127
|
-
var unorderedDataCount = (0, _react.useMemo)(() => data.length ? data.filter(doc => !doc[_constants.ORDER_FIELD_NAME]).length : 0, [data]);
|
|
128
|
-
if (isLoading) return /*#__PURE__*/_react.default.createElement(_ui.Flex, {
|
|
129
|
-
style: {
|
|
130
|
-
width: "100%",
|
|
131
|
-
height: "100%"
|
|
132
|
-
},
|
|
133
|
-
align: "center",
|
|
134
|
-
justify: "center"
|
|
135
|
-
}, /*#__PURE__*/_react.default.createElement(_ui.Spinner, null));
|
|
136
|
-
return /*#__PURE__*/_react.default.createElement(_ui.Stack, {
|
|
137
|
-
space: 1,
|
|
138
|
-
style: {
|
|
139
|
-
overflow: "scroll",
|
|
140
|
-
height: "100%"
|
|
141
|
-
}
|
|
142
|
-
}, unorderedDataCount > 0 && /*#__PURE__*/_react.default.createElement(_Feedback.default, null, unorderedDataCount, "/", data.length, " Documents have no Order. Select", ' ', /*#__PURE__*/_react.default.createElement("strong", null, "Reset Order"), " from the Menu above to fix."), /*#__PURE__*/_react.default.createElement(_ui.Box, {
|
|
143
|
-
padding: 1
|
|
144
|
-
}, /*#__PURE__*/_react.default.createElement(_DraggableList.default, {
|
|
145
|
-
data: data,
|
|
146
|
-
type: type,
|
|
147
|
-
listIsUpdating: listIsUpdating,
|
|
148
|
-
setListIsUpdating: setListIsUpdating
|
|
149
|
-
})));
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
DocumentListQuery.propTypes = {
|
|
153
|
-
type: _propTypes.default.string.isRequired
|
|
154
|
-
};
|
|
155
|
-
//# sourceMappingURL=DocumentListQuery.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"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"],"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}) {\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"],"mappings":"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"}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = DocumentListWrapper;
|
|
7
|
-
|
|
8
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
-
|
|
10
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
-
|
|
12
|
-
var _schema = _interopRequireDefault(require("part:@sanity/base/schema"));
|
|
13
|
-
|
|
14
|
-
var _ui = require("@sanity/ui");
|
|
15
|
-
|
|
16
|
-
var _deskTool = require("@sanity/desk-tool");
|
|
17
|
-
|
|
18
|
-
var _DocumentListQuery = _interopRequireDefault(require("./DocumentListQuery"));
|
|
19
|
-
|
|
20
|
-
var _OrderableContext = require("./OrderableContext");
|
|
21
|
-
|
|
22
|
-
var _constants = require("./helpers/constants");
|
|
23
|
-
|
|
24
|
-
var _Feedback = _interopRequireDefault(require("./Feedback"));
|
|
25
|
-
|
|
26
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
27
|
-
|
|
28
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
29
|
-
|
|
30
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
31
|
-
|
|
32
|
-
// 1. Validate first that the schema has been configured for ordering
|
|
33
|
-
// 2. Setup context for showIncrements
|
|
34
|
-
function DocumentListWrapper(_ref) {
|
|
35
|
-
var type = _ref.type,
|
|
36
|
-
showIncrements = _ref.showIncrements,
|
|
37
|
-
resetOrderTransaction = _ref.resetOrderTransaction;
|
|
38
|
-
var toast = (0, _ui.useToast)();
|
|
39
|
-
(0, _react.useEffect)(() => {
|
|
40
|
-
if (resetOrderTransaction !== null && resetOrderTransaction !== void 0 && resetOrderTransaction.title && resetOrderTransaction !== null && resetOrderTransaction !== void 0 && resetOrderTransaction.status) {
|
|
41
|
-
toast.push(resetOrderTransaction);
|
|
42
|
-
}
|
|
43
|
-
/* eslint-disable-next-line react-hooks/exhaustive-deps */
|
|
44
|
-
|
|
45
|
-
}, [resetOrderTransaction]);
|
|
46
|
-
var schemaIsInvalid = (0, _react.useMemo)(() => {
|
|
47
|
-
// Option not passed
|
|
48
|
-
if (!type) {
|
|
49
|
-
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "No ", /*#__PURE__*/_react.default.createElement("code", null, "type"), " was configured");
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
var typeSchema = _schema.default.get(type); // Schema not found
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
if (!typeSchema) {
|
|
56
|
-
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "Schema ", /*#__PURE__*/_react.default.createElement("code", null, type), " not found");
|
|
57
|
-
} // Schema lacks an order field
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
if (!typeSchema.fields.some(field => (field === null || field === void 0 ? void 0 : field.name) === _constants.ORDER_FIELD_NAME)) {
|
|
61
|
-
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "Schema ", /*#__PURE__*/_react.default.createElement("code", null, type), " must have an ", /*#__PURE__*/_react.default.createElement("code", null, "order"), " field of type", ' ', /*#__PURE__*/_react.default.createElement("code", null, "string"));
|
|
62
|
-
} // Schema's order field is not a string
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
if (typeSchema.fields.some(field => {
|
|
66
|
-
var _field$type;
|
|
67
|
-
|
|
68
|
-
return (field === null || field === void 0 ? void 0 : field.name) === _constants.ORDER_FIELD_NAME && (field === null || field === void 0 ? void 0 : (_field$type = field.type) === null || _field$type === void 0 ? void 0 : _field$type.name) !== 'string';
|
|
69
|
-
})) {
|
|
70
|
-
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("code", null, _constants.ORDER_FIELD_NAME), " field on Schema ", /*#__PURE__*/_react.default.createElement("code", null, type), " must be", ' ', /*#__PURE__*/_react.default.createElement("code", null, "string"), " type");
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
return "";
|
|
74
|
-
}, [type]);
|
|
75
|
-
|
|
76
|
-
if (schemaIsInvalid) {
|
|
77
|
-
return /*#__PURE__*/_react.default.createElement(_Feedback.default, null, schemaIsInvalid);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
return /*#__PURE__*/_react.default.createElement(_OrderableContext.OrderableContext.Provider, {
|
|
81
|
-
value: {
|
|
82
|
-
showIncrements
|
|
83
|
-
}
|
|
84
|
-
}, /*#__PURE__*/_react.default.createElement(_DocumentListQuery.default, {
|
|
85
|
-
type: type
|
|
86
|
-
}));
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
DocumentListWrapper.propTypes = {
|
|
90
|
-
showIncrements: _propTypes.default.bool.isRequired,
|
|
91
|
-
type: _propTypes.default.string.isRequired,
|
|
92
|
-
resetOrderTransaction: _propTypes.default.shape({
|
|
93
|
-
title: _propTypes.default.string,
|
|
94
|
-
status: _propTypes.default.string
|
|
95
|
-
}).isRequired
|
|
96
|
-
};
|
|
97
|
-
//# sourceMappingURL=DocumentListWrapper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"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"],"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({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"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AAEA;;AACA;;;;;;;;AAEA;AACA;AACe,SAASA,mBAAT,OAA4E;EAAA,IAA9CC,IAA8C,QAA9CA,IAA8C;EAAA,IAAxCC,cAAwC,QAAxCA,cAAwC;EAAA,IAAxBC,qBAAwB,QAAxBA,qBAAwB;EACzF,IAAMC,KAAK,GAAG,mBAAd;EAEA,sBAAU,MAAM;IACd,IAAID,qBAAqB,SAArB,IAAAA,qBAAqB,WAArB,IAAAA,qBAAqB,CAAEE,KAAvB,IAAgCF,qBAAhC,aAAgCA,qBAAhC,eAAgCA,qBAAqB,CAAEG,MAA3D,EAAmE;MACjEF,KAAK,CAACG,IAAN,CAAWJ,qBAAX;IACD;IACD;;EACD,CALD,EAKG,CAACA,qBAAD,CALH;EAOA,IAAMK,eAAe,GAAG,oBAAQ,MAAM;IACpC;IACA,IAAI,CAACP,IAAL,EAAW;MACT,oBACE,gFACK,kDADL,oBADF;IAKD;;IAED,IAAMQ,UAAU,GAAGC,gBAAOC,GAAP,CAAWV,IAAX,CAAnB,CAVoC,CAYpC;;;IACA,IAAI,CAACQ,UAAL,EAAiB;MACf,oBACE,oFACS,2CAAOR,IAAP,CADT,eADF;IAKD,CAnBmC,CAqBpC;;;IACA,IAAI,CAACQ,UAAU,CAACG,MAAX,CAAkBC,IAAlB,CAAwBC,KAAD,IAAW,CAAAA,KAAK,SAAL,IAAAA,KAAK,WAAL,YAAAA,KAAK,CAAEC,IAAP,MAAgBC,2BAAlD,CAAL,EAA0E;MACxE,oBACE,oFACS,2CAAOf,IAAP,CADT,iCAC0C,mDAD1C,oBAC2E,GAD3E,eAEE,oDAFF,CADF;IAMD,CA7BmC,CA+BpC;;;IACA,IACEQ,UAAU,CAACG,MAAX,CAAkBC,IAAlB,CACGC,KAAD;MAAA;;MAAA,OAAW,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;IAAA,CADF,CADF,EAIE;MACA,oBACE,yEACE,2CAAOC,2BAAP,CADF,oCACkD,2CAAOf,IAAP,CADlD,cAC8E,GAD9E,eAEE,oDAFF,UADF;IAMD;;IAED;EACD,CA9CuB,EA8CrB,CAACA,IAAD,CA9CqB,CAAxB;;EAgDA,IAAIO,eAAJ,EAAqB;IACnB,oBAAO,6BAAC,iBAAD,QAAWA,eAAX,CAAP;EACD;;EAED,oBACE,6BAAC,kCAAD,CAAkB,QAAlB;IAA2B,KAAK,EAAE;MAACN;IAAD;EAAlC,gBACE,6BAAC,0BAAD;IAAmB,IAAI,EAAED;EAAzB,EADF,CADF;AAKD;;AAEDD,mBAAmB,CAACiB,SAApB,GAAgC;EAC9Bf,cAAc,EAAEgB,mBAAUC,IAAV,CAAeC,UADD;EAE9BnB,IAAI,EAAEiB,mBAAUG,MAAV,CAAiBD,UAFO;EAG9BjB,qBAAqB,EAAEe,mBAAUI,KAAV,CAAgB;IACrCjB,KAAK,EAAEa,mBAAUG,MADoB;IAErCf,MAAM,EAAEY,mBAAUG;EAFmB,CAAhB,EAGpBD;AAN2B,CAAhC"}
|