decap-cms-core 3.5.0 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/decap-cms-core.js +9 -9
- package/dist/decap-cms-core.js.map +1 -1
- package/dist/esm/actions/auth.js +22 -37
- package/dist/esm/actions/collections.js +9 -17
- package/dist/esm/actions/config.js +58 -74
- package/dist/esm/actions/deploys.js +10 -17
- package/dist/esm/actions/editorialWorkflow.js +87 -101
- package/dist/esm/actions/entries.js +161 -211
- package/dist/esm/actions/media.js +31 -46
- package/dist/esm/actions/mediaLibrary.js +94 -126
- package/dist/esm/actions/notifications.js +5 -13
- package/dist/esm/actions/search.js +30 -47
- package/dist/esm/actions/status.js +13 -23
- package/dist/esm/actions/waitUntil.js +4 -11
- package/dist/esm/backend.js +132 -148
- package/dist/esm/bootstrap.js +37 -44
- package/dist/esm/components/App/App.js +82 -89
- package/dist/esm/components/App/Header.js +46 -52
- package/dist/esm/components/App/NotFoundPage.js +11 -18
- package/dist/esm/components/Collection/Collection.js +55 -63
- package/dist/esm/components/Collection/CollectionControls.js +15 -22
- package/dist/esm/components/Collection/CollectionSearch.js +35 -42
- package/dist/esm/components/Collection/CollectionTop.js +23 -30
- package/dist/esm/components/Collection/ControlButton.js +10 -16
- package/dist/esm/components/Collection/Entries/Entries.js +24 -31
- package/dist/esm/components/Collection/Entries/EntriesCollection.js +52 -62
- package/dist/esm/components/Collection/Entries/EntriesSearch.js +26 -33
- package/dist/esm/components/Collection/Entries/EntryCard.js +38 -45
- package/dist/esm/components/Collection/Entries/EntryListing.js +24 -32
- package/dist/esm/components/Collection/FilterControl.js +9 -16
- package/dist/esm/components/Collection/GroupControl.js +9 -16
- package/dist/esm/components/Collection/NestedCollection.js +54 -65
- package/dist/esm/components/Collection/Sidebar.js +36 -43
- package/dist/esm/components/Collection/SortControl.js +19 -26
- package/dist/esm/components/Collection/ViewStyleControl.js +17 -24
- package/dist/esm/components/Editor/Editor.js +100 -108
- package/dist/esm/components/Editor/EditorControlPane/EditorControl.js +105 -112
- package/dist/esm/components/Editor/EditorControlPane/EditorControlPane.js +68 -62
- package/dist/esm/components/Editor/EditorControlPane/Widget.js +87 -73
- package/dist/esm/components/Editor/EditorInterface.js +95 -98
- package/dist/esm/components/Editor/EditorPreviewPane/EditorPreview.js +13 -21
- package/dist/esm/components/Editor/EditorPreviewPane/EditorPreviewContent.js +64 -23
- package/dist/esm/components/Editor/EditorPreviewPane/EditorPreviewPane.js +94 -78
- package/dist/esm/components/Editor/EditorPreviewPane/PreviewHOC.js +9 -16
- package/dist/esm/components/Editor/EditorToolbar.js +133 -140
- package/dist/esm/components/Editor/withWorkflow.js +15 -22
- package/dist/esm/components/EditorWidgets/Unknown/UnknownControl.js +9 -16
- package/dist/esm/components/EditorWidgets/Unknown/UnknownPreview.js +9 -16
- package/dist/esm/components/EditorWidgets/index.js +4 -7
- package/dist/esm/components/MediaLibrary/EmptyMessage.js +12 -19
- package/dist/esm/components/MediaLibrary/MediaLibrary.js +55 -62
- package/dist/esm/components/MediaLibrary/MediaLibraryButtons.js +28 -35
- package/dist/esm/components/MediaLibrary/MediaLibraryCard.js +36 -43
- package/dist/esm/components/MediaLibrary/MediaLibraryCardGrid.js +50 -57
- package/dist/esm/components/MediaLibrary/MediaLibraryHeader.js +16 -23
- package/dist/esm/components/MediaLibrary/MediaLibraryModal.js +59 -64
- package/dist/esm/components/MediaLibrary/MediaLibrarySearch.js +18 -25
- package/dist/esm/components/MediaLibrary/MediaLibraryTop.js +39 -46
- package/dist/esm/components/UI/DragDrop.js +21 -30
- package/dist/esm/components/UI/ErrorBoundary.js +35 -43
- package/dist/esm/components/UI/FileUploadButton.js +11 -18
- package/dist/esm/components/UI/Modal.js +19 -26
- package/dist/esm/components/UI/Notifications.js +21 -28
- package/dist/esm/components/UI/SettingsDropdown.js +28 -34
- package/dist/esm/components/UI/index.js +6 -60
- package/dist/esm/components/Workflow/Workflow.js +52 -61
- package/dist/esm/components/Workflow/WorkflowCard.js +45 -51
- package/dist/esm/components/Workflow/WorkflowList.js +43 -49
- package/dist/esm/constants/collectionTypes.js +2 -8
- package/dist/esm/constants/collectionViews.js +2 -8
- package/dist/esm/constants/commitProps.js +2 -8
- package/dist/esm/constants/configSchema.js +20 -27
- package/dist/esm/constants/fieldInference.js +8 -15
- package/dist/esm/constants/publishModes.js +6 -11
- package/dist/esm/constants/validationErrorTypes.js +1 -7
- package/dist/esm/formats/formats.js +32 -41
- package/dist/esm/formats/frontmatter.js +18 -30
- package/dist/esm/formats/helpers.js +1 -7
- package/dist/esm/formats/json.js +1 -7
- package/dist/esm/formats/toml.js +11 -18
- package/dist/esm/formats/yaml.js +7 -14
- package/dist/esm/index.js +5 -12
- package/dist/esm/integrations/index.js +8 -16
- package/dist/esm/integrations/providers/algolia/implementation.js +14 -22
- package/dist/esm/integrations/providers/assetStore/implementation.js +10 -18
- package/dist/esm/lib/consoleError.js +1 -7
- package/dist/esm/lib/formatters.js +34 -47
- package/dist/esm/lib/i18n.js +37 -66
- package/dist/esm/lib/phrases.js +4 -11
- package/dist/esm/lib/registry.js +40 -75
- package/dist/esm/lib/serializeEntryValues.js +11 -18
- package/dist/esm/lib/textHelper.js +1 -7
- package/dist/esm/lib/urlHelper.js +28 -43
- package/dist/esm/mediaLibrary.js +12 -16
- package/dist/esm/reducers/auth.js +10 -16
- package/dist/esm/reducers/collections.js +70 -102
- package/dist/esm/reducers/combinedReducer.js +4 -11
- package/dist/esm/reducers/config.js +11 -19
- package/dist/esm/reducers/cursors.js +12 -18
- package/dist/esm/reducers/deploys.js +8 -15
- package/dist/esm/reducers/editorialWorkflow.js +37 -47
- package/dist/esm/reducers/entries.js +107 -132
- package/dist/esm/reducers/entryDraft.js +64 -72
- package/dist/esm/reducers/globalUI.js +5 -11
- package/dist/esm/reducers/index.js +43 -64
- package/dist/esm/reducers/integrations.js +8 -16
- package/dist/esm/reducers/mediaLibrary.js +43 -52
- package/dist/esm/reducers/medias.js +11 -18
- package/dist/esm/reducers/notifications.js +9 -15
- package/dist/esm/reducers/search.js +12 -18
- package/dist/esm/reducers/status.js +7 -13
- package/dist/esm/redux/index.js +7 -13
- package/dist/esm/redux/middleware/waitUntilAction.js +3 -10
- package/dist/esm/routing/history.js +7 -15
- package/dist/esm/types/diacritics.d.js +0 -1
- package/dist/esm/types/global.d.js +1 -5
- package/dist/esm/types/immutable.js +1 -5
- package/dist/esm/types/redux.js +7 -8
- package/dist/esm/types/tomlify-j0.4.d.js +0 -1
- package/dist/esm/valueObjects/AssetProxy.js +2 -10
- package/dist/esm/valueObjects/EditorComponent.js +5 -12
- package/dist/esm/valueObjects/Entry.js +3 -10
- package/package.json +3 -2
- package/src/components/Collection/Entries/EntriesCollection.js +7 -8
- package/src/components/Collection/Entries/__tests__/EntriesCollection.spec.js +3 -5
- package/src/components/Collection/Entries/__tests__/__snapshots__/EntriesCollection.spec.js.snap +8 -8
- package/src/components/Collection/NestedCollection.js +2 -2
- package/src/components/Collection/__tests__/__snapshots__/NestedCollection.spec.js.snap +68 -0
- package/src/components/Editor/EditorControlPane/EditorControl.js +0 -3
- package/src/components/Editor/EditorControlPane/EditorControlPane.js +21 -8
- package/src/components/Editor/EditorControlPane/Widget.js +22 -1
- package/src/components/Editor/EditorInterface.js +6 -1
- package/src/components/Editor/EditorPreviewPane/EditorPreviewContent.js +51 -11
- package/src/components/Editor/EditorPreviewPane/EditorPreviewPane.js +33 -1
- package/dist/esm/actions/editorControl.js +0 -14
- package/dist/esm/reducers/editorComponent.js +0 -1
- package/dist/esm/reducers/editorControl.js +0 -17
|
@@ -1,64 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
exports.getFieldsNames = getFieldsNames;
|
|
8
|
-
exports.getFileFromSlug = getFileFromSlug;
|
|
9
|
-
exports.selectAllowDeletion = selectAllowDeletion;
|
|
10
|
-
exports.selectAllowNewEntries = selectAllowNewEntries;
|
|
11
|
-
exports.selectDefaultSortableFields = selectDefaultSortableFields;
|
|
12
|
-
exports.selectEntryCollectionTitle = selectEntryCollectionTitle;
|
|
13
|
-
exports.selectEntryPath = selectEntryPath;
|
|
14
|
-
exports.selectEntrySlug = selectEntrySlug;
|
|
15
|
-
exports.selectField = selectField;
|
|
16
|
-
exports.selectFields = selectFields;
|
|
17
|
-
exports.selectFieldsComments = selectFieldsComments;
|
|
18
|
-
exports.selectFieldsWithMediaFolders = selectFieldsWithMediaFolders;
|
|
19
|
-
exports.selectFileEntryLabel = selectFileEntryLabel;
|
|
20
|
-
exports.selectFolderEntryExtension = selectFolderEntryExtension;
|
|
21
|
-
exports.selectHasMetaPath = selectHasMetaPath;
|
|
22
|
-
exports.selectIdentifier = selectIdentifier;
|
|
23
|
-
exports.selectInferredField = selectInferredField;
|
|
24
|
-
exports.selectMediaFolders = selectMediaFolders;
|
|
25
|
-
exports.selectSortDataPath = selectSortDataPath;
|
|
26
|
-
exports.selectSortableFields = selectSortableFields;
|
|
27
|
-
exports.selectTemplateName = selectTemplateName;
|
|
28
|
-
exports.selectViewFilters = selectViewFilters;
|
|
29
|
-
exports.selectViewGroups = selectViewGroups;
|
|
30
|
-
exports.traverseFields = traverseFields;
|
|
31
|
-
exports.updateFieldByKey = updateFieldByKey;
|
|
32
|
-
var _escapeRegExp2 = _interopRequireDefault(require("lodash/escapeRegExp"));
|
|
33
|
-
var _get2 = _interopRequireDefault(require("lodash/get"));
|
|
34
|
-
var _immutable = require("immutable");
|
|
35
|
-
var _decapCmsLibWidgets = require("decap-cms-lib-widgets");
|
|
36
|
-
var _consoleError = _interopRequireDefault(require("../lib/consoleError"));
|
|
37
|
-
var _config = require("../actions/config");
|
|
38
|
-
var _collectionTypes = require("../constants/collectionTypes");
|
|
39
|
-
var _commitProps = require("../constants/commitProps");
|
|
40
|
-
var _fieldInference = require("../constants/fieldInference");
|
|
41
|
-
var _formats = require("../formats/formats");
|
|
42
|
-
var _entries = require("./entries");
|
|
43
|
-
var _formatters = require("../lib/formatters");
|
|
44
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
1
|
+
import _escapeRegExp from "lodash/escapeRegExp";
|
|
2
|
+
import _get from "lodash/get";
|
|
45
3
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
46
4
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
47
5
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
48
6
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
|
49
7
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
8
|
+
import { List, Set, fromJS, OrderedMap } from 'immutable';
|
|
9
|
+
import { stringTemplate } from 'decap-cms-lib-widgets';
|
|
10
|
+
import consoleError from '../lib/consoleError';
|
|
11
|
+
import { CONFIG_SUCCESS } from '../actions/config';
|
|
12
|
+
import { FILES, FOLDER } from '../constants/collectionTypes';
|
|
13
|
+
import { COMMIT_DATE, COMMIT_AUTHOR } from '../constants/commitProps';
|
|
14
|
+
import { INFERABLE_FIELDS, IDENTIFIER_FIELDS, SORTABLE_FIELDS } from '../constants/fieldInference';
|
|
15
|
+
import { getFormatExtensions } from '../formats/formats';
|
|
16
|
+
import { selectMediaFolder } from './entries';
|
|
17
|
+
import { summaryFormatter } from '../lib/formatters';
|
|
50
18
|
const {
|
|
51
19
|
keyToPathArray
|
|
52
|
-
} =
|
|
53
|
-
const defaultState =
|
|
20
|
+
} = stringTemplate;
|
|
21
|
+
const defaultState = fromJS({});
|
|
54
22
|
function collections(state = defaultState, action) {
|
|
55
23
|
switch (action.type) {
|
|
56
|
-
case
|
|
24
|
+
case CONFIG_SUCCESS:
|
|
57
25
|
{
|
|
58
26
|
const collections = action.payload.collections;
|
|
59
|
-
let newState =
|
|
27
|
+
let newState = OrderedMap({});
|
|
60
28
|
collections.forEach(collection => {
|
|
61
|
-
newState = newState.set(collection.name,
|
|
29
|
+
newState = newState.set(collection.name, fromJS(collection));
|
|
62
30
|
});
|
|
63
31
|
return newState;
|
|
64
32
|
}
|
|
@@ -67,9 +35,9 @@ function collections(state = defaultState, action) {
|
|
|
67
35
|
}
|
|
68
36
|
}
|
|
69
37
|
const selectors = {
|
|
70
|
-
[
|
|
38
|
+
[FOLDER]: {
|
|
71
39
|
entryExtension(collection) {
|
|
72
|
-
const ext = collection.get('extension') || (
|
|
40
|
+
const ext = collection.get('extension') || _get(getFormatExtensions(), collection.get('format') || 'frontmatter');
|
|
73
41
|
if (!ext) {
|
|
74
42
|
throw new Error(`No extension found for format ${collection.get('format')}`);
|
|
75
43
|
}
|
|
@@ -85,7 +53,7 @@ const selectors = {
|
|
|
85
53
|
entrySlug(collection, path) {
|
|
86
54
|
var _path$split$pop;
|
|
87
55
|
const folder = collection.get('folder').replace(/\/$/, '');
|
|
88
|
-
const slug = (_path$split$pop = path.split(folder + '/').pop()) === null || _path$split$pop === void 0 ? void 0 : _path$split$pop.replace(new RegExp(`\\.${(
|
|
56
|
+
const slug = (_path$split$pop = path.split(folder + '/').pop()) === null || _path$split$pop === void 0 ? void 0 : _path$split$pop.replace(new RegExp(`\\.${_escapeRegExp(this.entryExtension(collection))}$`), '');
|
|
89
57
|
return slug;
|
|
90
58
|
},
|
|
91
59
|
allowNewEntries(collection) {
|
|
@@ -98,7 +66,7 @@ const selectors = {
|
|
|
98
66
|
return collection.get('name');
|
|
99
67
|
}
|
|
100
68
|
},
|
|
101
|
-
[
|
|
69
|
+
[FILES]: {
|
|
102
70
|
fileForEntry(collection, slug) {
|
|
103
71
|
const files = collection.get('files');
|
|
104
72
|
return files && files.filter(f => (f === null || f === void 0 ? void 0 : f.get('name')) === slug).get(0);
|
|
@@ -151,11 +119,11 @@ function getFieldsWithMediaFolders(fields) {
|
|
|
151
119
|
}, []);
|
|
152
120
|
return fieldsWithMediaFolders;
|
|
153
121
|
}
|
|
154
|
-
function getFileFromSlug(collection, slug) {
|
|
122
|
+
export function getFileFromSlug(collection, slug) {
|
|
155
123
|
var _collection$get;
|
|
156
124
|
return (_collection$get = collection.get('files')) === null || _collection$get === void 0 ? void 0 : _collection$get.toArray().find(f => f.get('name') === slug);
|
|
157
125
|
}
|
|
158
|
-
function selectFieldsWithMediaFolders(collection, slug) {
|
|
126
|
+
export function selectFieldsWithMediaFolders(collection, slug) {
|
|
159
127
|
if (collection.has('folder')) {
|
|
160
128
|
const fields = collection.get('fields').toArray();
|
|
161
129
|
return getFieldsWithMediaFolders(fields);
|
|
@@ -166,47 +134,47 @@ function selectFieldsWithMediaFolders(collection, slug) {
|
|
|
166
134
|
}
|
|
167
135
|
return [];
|
|
168
136
|
}
|
|
169
|
-
function selectMediaFolders(config, collection, entry) {
|
|
137
|
+
export function selectMediaFolders(config, collection, entry) {
|
|
170
138
|
const fields = selectFieldsWithMediaFolders(collection, entry.get('slug'));
|
|
171
|
-
const folders = fields.map(f =>
|
|
139
|
+
const folders = fields.map(f => selectMediaFolder(config, collection, entry, f));
|
|
172
140
|
if (collection.has('files')) {
|
|
173
141
|
const file = getFileFromSlug(collection, entry.get('slug'));
|
|
174
142
|
if (file) {
|
|
175
|
-
folders.unshift(
|
|
143
|
+
folders.unshift(selectMediaFolder(config, collection, entry, undefined));
|
|
176
144
|
}
|
|
177
145
|
}
|
|
178
146
|
if (collection.has('media_folder')) {
|
|
179
147
|
// stop evaluating media folders at collection level
|
|
180
148
|
collection = collection.delete('files');
|
|
181
|
-
folders.unshift(
|
|
149
|
+
folders.unshift(selectMediaFolder(config, collection, entry, undefined));
|
|
182
150
|
}
|
|
183
|
-
return
|
|
151
|
+
return Set(folders).toArray();
|
|
184
152
|
}
|
|
185
|
-
function selectFields(collection, slug) {
|
|
153
|
+
export function selectFields(collection, slug) {
|
|
186
154
|
return selectors[collection.get('type')].fields(collection, slug);
|
|
187
155
|
}
|
|
188
|
-
function selectFolderEntryExtension(collection) {
|
|
189
|
-
return selectors[
|
|
156
|
+
export function selectFolderEntryExtension(collection) {
|
|
157
|
+
return selectors[FOLDER].entryExtension(collection);
|
|
190
158
|
}
|
|
191
|
-
function selectFileEntryLabel(collection, slug) {
|
|
192
|
-
return selectors[
|
|
159
|
+
export function selectFileEntryLabel(collection, slug) {
|
|
160
|
+
return selectors[FILES].entryLabel(collection, slug);
|
|
193
161
|
}
|
|
194
|
-
function selectEntryPath(collection, slug) {
|
|
162
|
+
export function selectEntryPath(collection, slug) {
|
|
195
163
|
return selectors[collection.get('type')].entryPath(collection, slug);
|
|
196
164
|
}
|
|
197
|
-
function selectEntrySlug(collection, path) {
|
|
165
|
+
export function selectEntrySlug(collection, path) {
|
|
198
166
|
return selectors[collection.get('type')].entrySlug(collection, path);
|
|
199
167
|
}
|
|
200
|
-
function selectAllowNewEntries(collection) {
|
|
168
|
+
export function selectAllowNewEntries(collection) {
|
|
201
169
|
return selectors[collection.get('type')].allowNewEntries(collection);
|
|
202
170
|
}
|
|
203
|
-
function selectAllowDeletion(collection) {
|
|
171
|
+
export function selectAllowDeletion(collection) {
|
|
204
172
|
return selectors[collection.get('type')].allowDeletion(collection);
|
|
205
173
|
}
|
|
206
|
-
function selectTemplateName(collection, slug) {
|
|
174
|
+
export function selectTemplateName(collection, slug) {
|
|
207
175
|
return selectors[collection.get('type')].templateName(collection, slug);
|
|
208
176
|
}
|
|
209
|
-
function getFieldsNames(fields, prefix = '') {
|
|
177
|
+
export function getFieldsNames(fields, prefix = '') {
|
|
210
178
|
let names = fields.map(f => `${prefix}${f.get('name')}`);
|
|
211
179
|
fields.forEach((f, index) => {
|
|
212
180
|
if (f.has('fields')) {
|
|
@@ -224,11 +192,11 @@ function getFieldsNames(fields, prefix = '') {
|
|
|
224
192
|
});
|
|
225
193
|
return names;
|
|
226
194
|
}
|
|
227
|
-
function selectField(collection, key) {
|
|
195
|
+
export function selectField(collection, key) {
|
|
228
196
|
const array = keyToPathArray(key);
|
|
229
197
|
let name;
|
|
230
198
|
let field;
|
|
231
|
-
let fields = collection.get('fields',
|
|
199
|
+
let fields = collection.get('fields', List()).toArray();
|
|
232
200
|
while ((name = array.shift()) && fields) {
|
|
233
201
|
var _field, _field3, _field5;
|
|
234
202
|
field = fields.find(f => f.get('name') === name);
|
|
@@ -245,7 +213,7 @@ function selectField(collection, key) {
|
|
|
245
213
|
}
|
|
246
214
|
return field;
|
|
247
215
|
}
|
|
248
|
-
function traverseFields(fields, updater, done = () => false) {
|
|
216
|
+
export function traverseFields(fields, updater, done = () => false) {
|
|
249
217
|
if (done()) {
|
|
250
218
|
return fields;
|
|
251
219
|
}
|
|
@@ -256,7 +224,7 @@ function traverseFields(fields, updater, done = () => false) {
|
|
|
256
224
|
} else if (field.has('fields')) {
|
|
257
225
|
return field.set('fields', traverseFields(field.get('fields'), updater, done));
|
|
258
226
|
} else if (field.has('field')) {
|
|
259
|
-
return field.set('field', traverseFields(
|
|
227
|
+
return field.set('field', traverseFields(List([field.get('field')]), updater, done).get(0));
|
|
260
228
|
} else if (field.has('types')) {
|
|
261
229
|
return field.set('types', traverseFields(field.get('types'), updater, done));
|
|
262
230
|
} else {
|
|
@@ -265,7 +233,7 @@ function traverseFields(fields, updater, done = () => false) {
|
|
|
265
233
|
}).toList();
|
|
266
234
|
return fields;
|
|
267
235
|
}
|
|
268
|
-
function updateFieldByKey(collection, key, updater) {
|
|
236
|
+
export function updateFieldByKey(collection, key, updater) {
|
|
269
237
|
const selected = selectField(collection, key);
|
|
270
238
|
if (!selected) {
|
|
271
239
|
return collection;
|
|
@@ -280,20 +248,20 @@ function updateFieldByKey(collection, key, updater) {
|
|
|
280
248
|
return field;
|
|
281
249
|
}
|
|
282
250
|
}
|
|
283
|
-
collection = collection.set('fields', traverseFields(collection.get('fields',
|
|
251
|
+
collection = collection.set('fields', traverseFields(collection.get('fields', List()), updateAndBreak, () => updated));
|
|
284
252
|
return collection;
|
|
285
253
|
}
|
|
286
|
-
function selectIdentifier(collection) {
|
|
254
|
+
export function selectIdentifier(collection) {
|
|
287
255
|
const identifier = collection.get('identifier_field');
|
|
288
|
-
const identifierFields = identifier ? [identifier, ...
|
|
289
|
-
const fieldNames = getFieldsNames(collection.get('fields',
|
|
256
|
+
const identifierFields = identifier ? [identifier, ...IDENTIFIER_FIELDS] : [...IDENTIFIER_FIELDS];
|
|
257
|
+
const fieldNames = getFieldsNames(collection.get('fields', List()).toArray());
|
|
290
258
|
return identifierFields.find(id => fieldNames.find(name => name.toLowerCase().trim() === id.toLowerCase().trim()));
|
|
291
259
|
}
|
|
292
|
-
function selectInferredField(collection, fieldName) {
|
|
260
|
+
export function selectInferredField(collection, fieldName) {
|
|
293
261
|
if (fieldName === 'title' && collection.get('identifier_field')) {
|
|
294
262
|
return selectIdentifier(collection);
|
|
295
263
|
}
|
|
296
|
-
const inferableField =
|
|
264
|
+
const inferableField = INFERABLE_FIELDS[fieldName];
|
|
297
265
|
const fields = collection.get('fields');
|
|
298
266
|
let field;
|
|
299
267
|
|
|
@@ -314,17 +282,17 @@ function selectInferredField(collection, fieldName) {
|
|
|
314
282
|
|
|
315
283
|
// Coundn't infer the field. Show error and return null.
|
|
316
284
|
if (inferableField.showError) {
|
|
317
|
-
(
|
|
285
|
+
consoleError(`The Field ${fieldName} is missing for the collection “${collection.get('name')}”`, `Decap CMS tries to infer the entry ${fieldName} automatically, but one couldn't be found for entries of the collection “${collection.get('name')}”. Please check your site configuration.`);
|
|
318
286
|
}
|
|
319
287
|
return null;
|
|
320
288
|
}
|
|
321
|
-
function selectEntryCollectionTitle(collection, entry) {
|
|
289
|
+
export function selectEntryCollectionTitle(collection, entry) {
|
|
322
290
|
// prefer formatted summary over everything else
|
|
323
291
|
const summaryTemplate = collection.get('summary');
|
|
324
|
-
if (summaryTemplate) return
|
|
292
|
+
if (summaryTemplate) return summaryFormatter(summaryTemplate, entry, collection);
|
|
325
293
|
|
|
326
294
|
// if the collection is a file collection return the label of the entry
|
|
327
|
-
if (collection.get('type') ==
|
|
295
|
+
if (collection.get('type') == FILES) {
|
|
328
296
|
const label = selectFileEntryLabel(collection, entry.get('slug'));
|
|
329
297
|
if (label) return label;
|
|
330
298
|
}
|
|
@@ -340,24 +308,24 @@ function selectEntryCollectionTitle(collection, entry) {
|
|
|
340
308
|
}
|
|
341
309
|
return result;
|
|
342
310
|
}
|
|
343
|
-
function selectDefaultSortableFields(collection, backend, hasIntegration) {
|
|
344
|
-
let defaultSortable =
|
|
311
|
+
export function selectDefaultSortableFields(collection, backend, hasIntegration) {
|
|
312
|
+
let defaultSortable = SORTABLE_FIELDS.map(type => {
|
|
345
313
|
const field = selectInferredField(collection, type);
|
|
346
314
|
if (backend.isGitBackend() && type === 'author' && !field && !hasIntegration) {
|
|
347
315
|
// default to commit author if not author field is found
|
|
348
|
-
return
|
|
316
|
+
return COMMIT_AUTHOR;
|
|
349
317
|
}
|
|
350
318
|
return field;
|
|
351
319
|
}).filter(Boolean);
|
|
352
320
|
if (backend.isGitBackend() && !hasIntegration) {
|
|
353
321
|
// always have commit date by default
|
|
354
|
-
defaultSortable = [
|
|
322
|
+
defaultSortable = [COMMIT_DATE, ...defaultSortable];
|
|
355
323
|
}
|
|
356
324
|
return defaultSortable;
|
|
357
325
|
}
|
|
358
|
-
function selectSortableFields(collection, t) {
|
|
326
|
+
export function selectSortableFields(collection, t) {
|
|
359
327
|
const fields = collection.get('sortable_fields').toArray().map(key => {
|
|
360
|
-
if (key ===
|
|
328
|
+
if (key === COMMIT_DATE) {
|
|
361
329
|
return {
|
|
362
330
|
key,
|
|
363
331
|
field: {
|
|
@@ -367,7 +335,7 @@ function selectSortableFields(collection, t) {
|
|
|
367
335
|
};
|
|
368
336
|
}
|
|
369
337
|
const field = selectField(collection, key);
|
|
370
|
-
if (key ===
|
|
338
|
+
if (key === COMMIT_AUTHOR && !field) {
|
|
371
339
|
return {
|
|
372
340
|
key,
|
|
373
341
|
field: {
|
|
@@ -385,24 +353,24 @@ function selectSortableFields(collection, t) {
|
|
|
385
353
|
}));
|
|
386
354
|
return fields;
|
|
387
355
|
}
|
|
388
|
-
function selectSortDataPath(collection, key) {
|
|
389
|
-
if (key ===
|
|
356
|
+
export function selectSortDataPath(collection, key) {
|
|
357
|
+
if (key === COMMIT_DATE) {
|
|
390
358
|
return 'updatedOn';
|
|
391
|
-
} else if (key ===
|
|
359
|
+
} else if (key === COMMIT_AUTHOR && !selectField(collection, key)) {
|
|
392
360
|
return 'author';
|
|
393
361
|
} else {
|
|
394
362
|
return `data.${key}`;
|
|
395
363
|
}
|
|
396
364
|
}
|
|
397
|
-
function selectViewFilters(collection) {
|
|
365
|
+
export function selectViewFilters(collection) {
|
|
398
366
|
const viewFilters = collection.get('view_filters').toJS();
|
|
399
367
|
return viewFilters;
|
|
400
368
|
}
|
|
401
|
-
function selectViewGroups(collection) {
|
|
369
|
+
export function selectViewGroups(collection) {
|
|
402
370
|
const viewGroups = collection.get('view_groups').toJS();
|
|
403
371
|
return viewGroups;
|
|
404
372
|
}
|
|
405
|
-
function selectFieldsComments(collection, entryMap) {
|
|
373
|
+
export function selectFieldsComments(collection, entryMap) {
|
|
406
374
|
let fields = [];
|
|
407
375
|
if (collection.has('folder')) {
|
|
408
376
|
fields = collection.get('fields').toArray();
|
|
@@ -420,8 +388,8 @@ function selectFieldsComments(collection, entryMap) {
|
|
|
420
388
|
});
|
|
421
389
|
return comments;
|
|
422
390
|
}
|
|
423
|
-
function selectHasMetaPath(collection) {
|
|
391
|
+
export function selectHasMetaPath(collection) {
|
|
424
392
|
var _collection$get2;
|
|
425
|
-
return collection.has('folder') && collection.get('type') ===
|
|
393
|
+
return collection.has('folder') && collection.get('type') === FOLDER && collection.has('meta') && ((_collection$get2 = collection.get('meta')) === null || _collection$get2 === void 0 ? void 0 : _collection$get2.has('path'));
|
|
426
394
|
}
|
|
427
|
-
|
|
395
|
+
export default collections;
|
|
@@ -1,18 +1,11 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _redux = require("redux");
|
|
8
|
-
var _index = _interopRequireDefault(require("./index"));
|
|
9
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
1
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
11
2
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
12
3
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
13
4
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
|
14
5
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
6
|
+
import { combineReducers } from 'redux';
|
|
7
|
+
import reducers from './index';
|
|
15
8
|
function createRootReducer() {
|
|
16
|
-
return
|
|
9
|
+
return combineReducers(_objectSpread({}, reducers));
|
|
17
10
|
}
|
|
18
|
-
|
|
11
|
+
export default createRootReducer;
|
|
@@ -1,41 +1,33 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
exports.selectLocale = selectLocale;
|
|
8
|
-
exports.selectUseWorkflow = selectUseWorkflow;
|
|
9
|
-
var _immer = require("immer");
|
|
10
|
-
var _config = require("../actions/config");
|
|
11
|
-
var _publishModes = require("../constants/publishModes");
|
|
12
1
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
13
2
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14
3
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
15
4
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
|
16
5
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
6
|
+
import { produce } from 'immer';
|
|
7
|
+
import { CONFIG_REQUEST, CONFIG_SUCCESS, CONFIG_FAILURE } from '../actions/config';
|
|
8
|
+
import { EDITORIAL_WORKFLOW } from '../constants/publishModes';
|
|
17
9
|
const defaultState = {
|
|
18
10
|
isFetching: true
|
|
19
11
|
};
|
|
20
|
-
const config =
|
|
12
|
+
const config = produce((state, action) => {
|
|
21
13
|
switch (action.type) {
|
|
22
|
-
case
|
|
14
|
+
case CONFIG_REQUEST:
|
|
23
15
|
state.isFetching = true;
|
|
24
16
|
break;
|
|
25
|
-
case
|
|
17
|
+
case CONFIG_SUCCESS:
|
|
26
18
|
return _objectSpread(_objectSpread({}, action.payload), {}, {
|
|
27
19
|
isFetching: false,
|
|
28
20
|
error: undefined
|
|
29
21
|
});
|
|
30
|
-
case
|
|
22
|
+
case CONFIG_FAILURE:
|
|
31
23
|
state.isFetching = false;
|
|
32
24
|
state.error = action.payload.toString();
|
|
33
25
|
}
|
|
34
26
|
}, defaultState);
|
|
35
|
-
function selectLocale(state) {
|
|
27
|
+
export function selectLocale(state) {
|
|
36
28
|
return state.locale || 'en';
|
|
37
29
|
}
|
|
38
|
-
function selectUseWorkflow(state) {
|
|
39
|
-
return state.publish_mode ===
|
|
30
|
+
export function selectUseWorkflow(state) {
|
|
31
|
+
return state.publish_mode === EDITORIAL_WORKFLOW;
|
|
40
32
|
}
|
|
41
|
-
|
|
33
|
+
export default config;
|
|
@@ -1,32 +1,26 @@
|
|
|
1
|
-
|
|
1
|
+
import { fromJS } from 'immutable';
|
|
2
|
+
import { Cursor } from 'decap-cms-lib-util';
|
|
3
|
+
import { ENTRIES_SUCCESS, SORT_ENTRIES_SUCCESS, FILTER_ENTRIES_SUCCESS, GROUP_ENTRIES_SUCCESS } from '../actions/entries';
|
|
2
4
|
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
exports.selectCollectionEntriesCursor = selectCollectionEntriesCursor;
|
|
8
|
-
var _immutable = require("immutable");
|
|
9
|
-
var _decapCmsLibUtil = require("decap-cms-lib-util");
|
|
10
|
-
var _entries = require("../actions/entries");
|
|
11
5
|
// Since pagination can be used for a variety of views (collections
|
|
12
6
|
// and searches are the most common examples), we namespace cursors by
|
|
13
7
|
// their type before storing them in the state.
|
|
14
|
-
function selectCollectionEntriesCursor(state, collectionName) {
|
|
15
|
-
return new
|
|
8
|
+
export function selectCollectionEntriesCursor(state, collectionName) {
|
|
9
|
+
return new Cursor(state.getIn(['cursorsByType', 'collectionEntries', collectionName]));
|
|
16
10
|
}
|
|
17
|
-
function cursors(state =
|
|
11
|
+
function cursors(state = fromJS({
|
|
18
12
|
cursorsByType: {
|
|
19
13
|
collectionEntries: {}
|
|
20
14
|
}
|
|
21
15
|
}), action) {
|
|
22
16
|
switch (action.type) {
|
|
23
|
-
case
|
|
17
|
+
case ENTRIES_SUCCESS:
|
|
24
18
|
{
|
|
25
|
-
return state.setIn(['cursorsByType', 'collectionEntries', action.payload.collection],
|
|
19
|
+
return state.setIn(['cursorsByType', 'collectionEntries', action.payload.collection], Cursor.create(action.payload.cursor).store);
|
|
26
20
|
}
|
|
27
|
-
case
|
|
28
|
-
case
|
|
29
|
-
case
|
|
21
|
+
case FILTER_ENTRIES_SUCCESS:
|
|
22
|
+
case GROUP_ENTRIES_SUCCESS:
|
|
23
|
+
case SORT_ENTRIES_SUCCESS:
|
|
30
24
|
{
|
|
31
25
|
return state.deleteIn(['cursorsByType', 'collectionEntries', action.payload.collection]);
|
|
32
26
|
}
|
|
@@ -34,4 +28,4 @@ function cursors(state = (0, _immutable.fromJS)({
|
|
|
34
28
|
return state;
|
|
35
29
|
}
|
|
36
30
|
}
|
|
37
|
-
|
|
31
|
+
export default cursors;
|
|
@@ -1,16 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
exports.selectDeployPreview = selectDeployPreview;
|
|
8
|
-
var _immer = require("immer");
|
|
9
|
-
var _deploys = require("../actions/deploys");
|
|
1
|
+
import { produce } from 'immer';
|
|
2
|
+
import { DEPLOY_PREVIEW_REQUEST, DEPLOY_PREVIEW_SUCCESS, DEPLOY_PREVIEW_FAILURE } from '../actions/deploys';
|
|
10
3
|
const defaultState = {};
|
|
11
|
-
const deploys =
|
|
4
|
+
const deploys = produce((state, action) => {
|
|
12
5
|
switch (action.type) {
|
|
13
|
-
case
|
|
6
|
+
case DEPLOY_PREVIEW_REQUEST:
|
|
14
7
|
{
|
|
15
8
|
const {
|
|
16
9
|
collection,
|
|
@@ -21,7 +14,7 @@ const deploys = (0, _immer.produce)((state, action) => {
|
|
|
21
14
|
state[key].isFetching = true;
|
|
22
15
|
break;
|
|
23
16
|
}
|
|
24
|
-
case
|
|
17
|
+
case DEPLOY_PREVIEW_SUCCESS:
|
|
25
18
|
{
|
|
26
19
|
const {
|
|
27
20
|
collection,
|
|
@@ -35,7 +28,7 @@ const deploys = (0, _immer.produce)((state, action) => {
|
|
|
35
28
|
state[key].status = status;
|
|
36
29
|
break;
|
|
37
30
|
}
|
|
38
|
-
case
|
|
31
|
+
case DEPLOY_PREVIEW_FAILURE:
|
|
39
32
|
{
|
|
40
33
|
const {
|
|
41
34
|
collection,
|
|
@@ -46,7 +39,7 @@ const deploys = (0, _immer.produce)((state, action) => {
|
|
|
46
39
|
}
|
|
47
40
|
}
|
|
48
41
|
}, defaultState);
|
|
49
|
-
function selectDeployPreview(state, collection, slug) {
|
|
42
|
+
export function selectDeployPreview(state, collection, slug) {
|
|
50
43
|
return state[`${collection}.${slug}`];
|
|
51
44
|
}
|
|
52
|
-
|
|
45
|
+
export default deploys;
|