planning
All checks were successful
Publish To Prod / deploy_and_publish (push) Successful in 35s

This commit is contained in:
2024-10-14 09:15:30 +02:00
parent bcba00a730
commit 6e64e138e2
21059 changed files with 2317811 additions and 1 deletions

47
node_modules/decap-cms-core/dist/decap-cms-core.js generated vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,110 @@
/*!
Copyright (c) 2015 Jed Watson.
Based on code that is Copyright 2013-2015, Facebook, Inc.
All rights reserved.
*/
/*!
* Adapted from jQuery UI core
*
* http://jqueryui.com
*
* Copyright 2014 jQuery Foundation and other contributors
* Released under the MIT license.
* http://jquery.org/license
*
* http://api.jqueryui.com/category/ui-core/
*/
/*!
* Determine if an object is a Buffer
*
* @author Feross Aboukhadijeh <https://feross.org>
* @license MIT
*/
/*!
* The buffer module from node.js, for the browser.
*
* @author Feross Aboukhadijeh <https://feross.org>
* @license MIT
*/
/*!
* is-extendable <https://github.com/jonschlinkert/is-extendable>
*
* Copyright (c) 2015, Jon Schlinkert.
* Licensed under the MIT License.
*/
/*!
* repeat-string <https://github.com/jonschlinkert/repeat-string>
*
* Copyright (c) 2014-2015, Jon Schlinkert.
* Licensed under the MIT License.
*/
/*!
* strip-bom-string <https://github.com/jonschlinkert/strip-bom-string>
*
* Copyright (c) 2015, 2017, Jon Schlinkert.
* Released under the MIT License.
*/
/*! https://mths.be/punycode v1.4.1 by @mathias */
/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
/*! topbar 0.1.4, 2020-04-27
* http://buunguyen.github.io/topbar
* Copyright (c) 2019 Buu Nguyen
* Licensed under the MIT License */
/**
* @license React
* react-is.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/**
* @license React
* react-jsx-runtime.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/**
* what-input - A global utility for tracking the current input method (mouse, keyboard or touch).
* @version v5.2.12
* @link https://github.com/ten1seven/what-input
* @license MIT
*/
/** @license React v16.13.1
* react-is.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/** @license React v17.0.2
* react-is.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/** @license URI.js v4.4.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */

File diff suppressed because one or more lines are too long

112
node_modules/decap-cms-core/dist/esm/actions/auth.js generated vendored Normal file
View File

@@ -0,0 +1,112 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.USE_OPEN_AUTHORING = exports.LOGOUT = exports.AUTH_SUCCESS = exports.AUTH_REQUEST_DONE = exports.AUTH_REQUEST = exports.AUTH_FAILURE = void 0;
exports.authError = authError;
exports.authenticate = authenticate;
exports.authenticateUser = authenticateUser;
exports.authenticating = authenticating;
exports.doneAuthenticating = doneAuthenticating;
exports.loginUser = loginUser;
exports.logout = logout;
exports.logoutUser = logoutUser;
exports.useOpenAuthoring = useOpenAuthoring;
var _backend = require("../backend");
var _notifications = require("./notifications");
const AUTH_REQUEST = exports.AUTH_REQUEST = 'AUTH_REQUEST';
const AUTH_SUCCESS = exports.AUTH_SUCCESS = 'AUTH_SUCCESS';
const AUTH_FAILURE = exports.AUTH_FAILURE = 'AUTH_FAILURE';
const AUTH_REQUEST_DONE = exports.AUTH_REQUEST_DONE = 'AUTH_REQUEST_DONE';
const USE_OPEN_AUTHORING = exports.USE_OPEN_AUTHORING = 'USE_OPEN_AUTHORING';
const LOGOUT = exports.LOGOUT = 'LOGOUT';
function authenticating() {
return {
type: AUTH_REQUEST
};
}
function authenticate(userData) {
return {
type: AUTH_SUCCESS,
payload: userData
};
}
function authError(error) {
return {
type: AUTH_FAILURE,
error: 'Failed to authenticate',
payload: error
};
}
function doneAuthenticating() {
return {
type: AUTH_REQUEST_DONE
};
}
function useOpenAuthoring() {
return {
type: USE_OPEN_AUTHORING
};
}
function logout() {
return {
type: LOGOUT
};
}
// Check if user data token is cached and is valid
function authenticateUser() {
return (dispatch, getState) => {
const state = getState();
const backend = (0, _backend.currentBackend)(state.config);
dispatch(authenticating());
return Promise.resolve(backend.currentUser()).then(user => {
if (user) {
if (user.useOpenAuthoring) {
dispatch(useOpenAuthoring());
}
dispatch(authenticate(user));
} else {
dispatch(doneAuthenticating());
}
}).catch(error => {
dispatch(authError(error));
dispatch(logoutUser());
});
};
}
function loginUser(credentials) {
return (dispatch, getState) => {
const state = getState();
const backend = (0, _backend.currentBackend)(state.config);
dispatch(authenticating());
return backend.authenticate(credentials).then(user => {
if (user.useOpenAuthoring) {
dispatch(useOpenAuthoring());
}
dispatch(authenticate(user));
}).catch(error => {
console.error(error);
dispatch((0, _notifications.addNotification)({
message: {
details: error.message,
key: 'ui.toast.onFailToAuth'
},
type: 'error',
dismissAfter: 8000
}));
dispatch(authError(error));
});
};
}
function logoutUser() {
return (dispatch, getState) => {
const state = getState();
const backend = (0, _backend.currentBackend)(state.config);
Promise.resolve(backend.logout()).then(() => {
dispatch(logout());
dispatch((0, _notifications.clearNotifications)());
});
};
}

View File

@@ -0,0 +1,23 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createNewEntry = createNewEntry;
exports.searchCollections = searchCollections;
exports.showCollection = showCollection;
var _history = require("../routing/history");
var _urlHelper = require("../lib/urlHelper");
function searchCollections(query, collection) {
if (collection) {
_history.history.push(`/collections/${collection}/search/${query}`);
} else {
_history.history.push(`/search/${query}`);
}
}
function showCollection(collectionName) {
_history.history.push((0, _urlHelper.getCollectionUrl)(collectionName));
}
function createNewEntry(collectionName) {
_history.history.push((0, _urlHelper.getNewEntryUrl)(collectionName));
}

479
node_modules/decap-cms-core/dist/esm/actions/config.js generated vendored Normal file
View File

@@ -0,0 +1,479 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.CONFIG_SUCCESS = exports.CONFIG_REQUEST = exports.CONFIG_FAILURE = void 0;
exports.applyDefaults = applyDefaults;
exports.configFailed = configFailed;
exports.configLoaded = configLoaded;
exports.configLoading = configLoading;
exports.detectProxyServer = detectProxyServer;
exports.handleLocalBackend = handleLocalBackend;
exports.loadConfig = loadConfig;
exports.normalizeConfig = normalizeConfig;
exports.parseConfig = parseConfig;
var _isEmpty2 = _interopRequireDefault(require("lodash/isEmpty"));
var _trim2 = _interopRequireDefault(require("lodash/trim"));
var _trimStart2 = _interopRequireDefault(require("lodash/trimStart"));
var _yaml = _interopRequireDefault(require("yaml"));
var _immutable = require("immutable");
var _deepmerge = _interopRequireDefault(require("deepmerge"));
var _immer = require("immer");
var _publishModes = require("../constants/publishModes");
var _configSchema = require("../constants/configSchema");
var _collections = require("../reducers/collections");
var _integrations = require("../reducers/integrations");
var _backend = require("../backend");
var _i18n = require("../lib/i18n");
var _collectionTypes = require("../constants/collectionTypes");
const _excluded = ["sortableFields"];
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
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; }
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; }
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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
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); }
const CONFIG_REQUEST = exports.CONFIG_REQUEST = 'CONFIG_REQUEST';
const CONFIG_SUCCESS = exports.CONFIG_SUCCESS = 'CONFIG_SUCCESS';
const CONFIG_FAILURE = exports.CONFIG_FAILURE = 'CONFIG_FAILURE';
function isObjectField(field) {
return 'fields' in field;
}
function isFieldList(field) {
return 'types' in field || 'field' in field;
}
function traverseFieldsJS(fields, updater) {
return fields.map(field => {
const newField = updater(field);
if (isObjectField(newField)) {
return _objectSpread(_objectSpread({}, newField), {}, {
fields: traverseFieldsJS(newField.fields, updater)
});
} else if (isFieldList(newField) && newField.field) {
return _objectSpread(_objectSpread({}, newField), {}, {
field: traverseFieldsJS([newField.field], updater)[0]
});
} else if (isFieldList(newField) && newField.types) {
return _objectSpread(_objectSpread({}, newField), {}, {
types: traverseFieldsJS(newField.types, updater)
});
}
return newField;
});
}
function getConfigUrl() {
const validTypes = {
'text/yaml': 'yaml',
'application/x-yaml': 'yaml'
};
const configLinkEl = document.querySelector('link[rel="cms-config-url"]');
if (configLinkEl && validTypes[configLinkEl.type] && configLinkEl.href) {
console.log(`Using config file path: "${configLinkEl.href}"`);
return configLinkEl.href;
}
return 'config.yml';
}
function setDefaultPublicFolderForField(field) {
if ('media_folder' in field && !('public_folder' in field)) {
return _objectSpread(_objectSpread({}, field), {}, {
public_folder: field.media_folder
});
}
return field;
}
// Mapping between existing camelCase and its snake_case counterpart
const WIDGET_KEY_MAP = {
dateFormat: 'date_format',
timeFormat: 'time_format',
pickerUtc: 'picker_utc',
editorComponents: 'editor_components',
valueType: 'value_type',
valueField: 'value_field',
searchFields: 'search_fields',
displayFields: 'display_fields',
optionsLength: 'options_length'
};
function setSnakeCaseConfig(field) {
const deprecatedKeys = Object.keys(WIDGET_KEY_MAP).filter(camel => camel in field);
const snakeValues = deprecatedKeys.map(camel => {
const snake = WIDGET_KEY_MAP[camel];
console.warn(`Field ${field.name} is using a deprecated configuration '${camel}'. Please use '${snake}'`);
return {
[snake]: field[camel]
};
});
return Object.assign({}, field, ...snakeValues);
}
function setI18nField(field) {
if (field[_i18n.I18N] === true) {
return _objectSpread(_objectSpread({}, field), {}, {
[_i18n.I18N]: _i18n.I18N_FIELD.TRANSLATE
});
} else if (field[_i18n.I18N] === false || !field[_i18n.I18N]) {
return _objectSpread(_objectSpread({}, field), {}, {
[_i18n.I18N]: _i18n.I18N_FIELD.NONE
});
}
return field;
}
function getI18nDefaults(collectionOrFileI18n, defaultI18n) {
if (typeof collectionOrFileI18n === 'boolean') {
return defaultI18n;
} else {
const locales = collectionOrFileI18n.locales || defaultI18n.locales;
const defaultLocale = collectionOrFileI18n.default_locale || locales[0];
const mergedI18n = (0, _deepmerge.default)(defaultI18n, collectionOrFileI18n);
mergedI18n.locales = locales;
mergedI18n.default_locale = defaultLocale;
throwOnMissingDefaultLocale(mergedI18n);
return mergedI18n;
}
}
function setI18nDefaultsForFields(collectionOrFileFields, hasI18n) {
if (hasI18n) {
return traverseFieldsJS(collectionOrFileFields, setI18nField);
} else {
return traverseFieldsJS(collectionOrFileFields, field => {
const newField = _objectSpread({}, field);
delete newField[_i18n.I18N];
return newField;
});
}
}
function throwOnInvalidFileCollectionStructure(i18n) {
if (i18n && i18n.structure !== _i18n.I18N_STRUCTURE.SINGLE_FILE) {
throw new Error(`i18n configuration for files collections is limited to ${_i18n.I18N_STRUCTURE.SINGLE_FILE} structure`);
}
}
function throwOnMissingDefaultLocale(i18n) {
if (i18n && i18n.default_locale && !i18n.locales.includes(i18n.default_locale)) {
throw new Error(`i18n locales '${i18n.locales.join(', ')}' are missing the default locale ${i18n.default_locale}`);
}
}
function hasIntegration(config, collection) {
// TODO remove fromJS when Immutable is removed from the integrations state slice
const integrations = (0, _integrations.getIntegrations)((0, _immutable.fromJS)(config));
const integration = (0, _integrations.selectIntegration)(integrations, collection.name, 'listEntries');
return !!integration;
}
function normalizeConfig(config) {
const {
collections = []
} = config;
const normalizedCollections = collections.map(collection => {
const {
fields,
files
} = collection;
let normalizedCollection = collection;
if (fields) {
const normalizedFields = traverseFieldsJS(fields, setSnakeCaseConfig);
normalizedCollection = _objectSpread(_objectSpread({}, normalizedCollection), {}, {
fields: normalizedFields
});
}
if (files) {
const normalizedFiles = files.map(file => {
const normalizedFileFields = traverseFieldsJS(file.fields, setSnakeCaseConfig);
return _objectSpread(_objectSpread({}, file), {}, {
fields: normalizedFileFields
});
});
normalizedCollection = _objectSpread(_objectSpread({}, normalizedCollection), {}, {
files: normalizedFiles
});
}
if (normalizedCollection.sortableFields) {
const {
sortableFields
} = normalizedCollection,
rest = _objectWithoutProperties(normalizedCollection, _excluded);
normalizedCollection = _objectSpread(_objectSpread({}, rest), {}, {
sortable_fields: sortableFields
});
console.warn(`Collection ${collection.name} is using a deprecated configuration 'sortableFields'. Please use 'sortable_fields'`);
}
return normalizedCollection;
});
return _objectSpread(_objectSpread({}, config), {}, {
collections: normalizedCollections
});
}
function applyDefaults(originalConfig) {
return (0, _immer.produce)(originalConfig, config => {
config.publish_mode = config.publish_mode || _publishModes.SIMPLE;
config.slug = config.slug || {};
config.collections = config.collections || [];
// Use `site_url` as default `display_url`.
if (!config.display_url && config.site_url) {
config.display_url = config.site_url;
}
// Use media_folder as default public_folder.
const defaultPublicFolder = `/${(0, _trimStart2.default)(config.media_folder, '/')}`;
if (!('public_folder' in config)) {
config.public_folder = defaultPublicFolder;
}
// default values for the slug config
if (!('encoding' in config.slug)) {
config.slug.encoding = 'unicode';
}
if (!('clean_accents' in config.slug)) {
config.slug.clean_accents = false;
}
if (!('sanitize_replacement' in config.slug)) {
config.slug.sanitize_replacement = '-';
}
const i18n = config[_i18n.I18N];
if (i18n) {
i18n.default_locale = i18n.default_locale || i18n.locales[0];
}
throwOnMissingDefaultLocale(i18n);
const backend = (0, _backend.resolveBackend)(config);
for (const collection of config.collections) {
if (!('publish' in collection)) {
collection.publish = true;
}
let collectionI18n = collection[_i18n.I18N];
if (i18n && collectionI18n) {
collectionI18n = getI18nDefaults(collectionI18n, i18n);
collection[_i18n.I18N] = collectionI18n;
} else {
collectionI18n = undefined;
delete collection[_i18n.I18N];
}
if (collection.fields) {
collection.fields = setI18nDefaultsForFields(collection.fields, Boolean(collectionI18n));
}
const {
folder,
files,
view_filters,
view_groups,
meta
} = collection;
if (folder) {
collection.type = _collectionTypes.FOLDER;
if (collection.path && !collection.media_folder) {
// default value for media folder when using the path config
collection.media_folder = '';
}
if ('media_folder' in collection && !('public_folder' in collection)) {
collection.public_folder = collection.media_folder;
}
if (collection.fields) {
collection.fields = traverseFieldsJS(collection.fields, setDefaultPublicFolderForField);
}
collection.folder = (0, _trim2.default)(folder, '/');
if (meta && meta.path) {
const metaField = _objectSpread({
name: 'path',
meta: true,
required: true
}, meta.path);
collection.fields = [metaField, ...(collection.fields || [])];
}
}
if (files) {
collection.type = _collectionTypes.FILES;
throwOnInvalidFileCollectionStructure(collectionI18n);
delete collection.nested;
delete collection.meta;
for (const file of files) {
file.file = (0, _trimStart2.default)(file.file, '/');
if ('media_folder' in file && !('public_folder' in file)) {
file.public_folder = file.media_folder;
}
if (file.fields) {
file.fields = traverseFieldsJS(file.fields, setDefaultPublicFolderForField);
}
let fileI18n = file[_i18n.I18N];
if (fileI18n && collectionI18n) {
fileI18n = getI18nDefaults(fileI18n, collectionI18n);
file[_i18n.I18N] = fileI18n;
} else {
fileI18n = undefined;
delete file[_i18n.I18N];
}
throwOnInvalidFileCollectionStructure(fileI18n);
if (file.fields) {
file.fields = setI18nDefaultsForFields(file.fields, Boolean(fileI18n));
}
}
}
if (!collection.sortable_fields) {
collection.sortable_fields = (0, _collections.selectDefaultSortableFields)(
// TODO remove fromJS when Immutable is removed from the collections state slice
(0, _immutable.fromJS)(collection), backend, hasIntegration(config, collection));
}
collection.view_filters = (view_filters || []).map(filter => {
return _objectSpread(_objectSpread({}, filter), {}, {
id: `${filter.field}__${filter.pattern}`
});
});
collection.view_groups = (view_groups || []).map(group => {
return _objectSpread(_objectSpread({}, group), {}, {
id: `${group.field}__${group.pattern}`
});
});
if (config.editor && !collection.editor) {
collection.editor = {
preview: config.editor.preview
};
}
}
});
}
function parseConfig(data) {
const config = _yaml.default.parse(data, {
maxAliasCount: -1,
prettyErrors: true,
merge: true
});
if (typeof window !== 'undefined' && typeof window.CMS_ENV === 'string' && config[window.CMS_ENV]) {
const configKeys = Object.keys(config[window.CMS_ENV]);
for (const key of configKeys) {
config[key] = config[window.CMS_ENV][key];
}
}
return config;
}
async function getConfigYaml(file, hasManualConfig) {
const response = await fetch(file, {
credentials: 'same-origin'
}).catch(error => error);
if (response instanceof Error || response.status !== 200) {
if (hasManualConfig) {
return {};
}
const message = response instanceof Error ? response.message : response.status;
throw new Error(`Failed to load config.yml (${message})`);
}
const contentType = response.headers.get('Content-Type') || 'Not-Found';
const isYaml = contentType.indexOf('yaml') !== -1;
if (!isYaml) {
console.log(`Response for ${file} was not yaml. (Content-Type: ${contentType})`);
if (hasManualConfig) {
return {};
}
}
return parseConfig(await response.text());
}
function configLoaded(config) {
return {
type: CONFIG_SUCCESS,
payload: config
};
}
function configLoading() {
return {
type: CONFIG_REQUEST
};
}
function configFailed(err) {
return {
type: CONFIG_FAILURE,
error: 'Error loading config',
payload: err
};
}
async function detectProxyServer(localBackend) {
const allowedHosts = ['localhost', '127.0.0.1', ...(typeof localBackend === 'boolean' ? [] : (localBackend === null || localBackend === void 0 ? void 0 : localBackend.allowed_hosts) || [])];
if (!allowedHosts.includes(location.hostname) || !localBackend) {
return {};
}
const defaultUrl = 'http://localhost:8081/api/v1';
const proxyUrl = localBackend === true ? defaultUrl : localBackend.url || defaultUrl.replace('localhost', location.hostname);
try {
console.log(`Looking for Decap CMS Proxy Server at '${proxyUrl}'`);
const res = await fetch(`${proxyUrl}`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
action: 'info'
})
});
const {
repo,
publish_modes,
type
} = await res.json();
if (typeof repo === 'string' && Array.isArray(publish_modes) && typeof type === 'string') {
console.log(`Detected Decap CMS Proxy Server at '${proxyUrl}' with repo: '${repo}'`);
return {
proxyUrl,
publish_modes,
type
};
} else {
console.log(`Decap CMS Proxy Server not detected at '${proxyUrl}'`);
return {};
}
} catch {
console.log(`Decap CMS Proxy Server not detected at '${proxyUrl}'`);
return {};
}
}
function getPublishMode(config, publishModes, backendType) {
if (config.publish_mode && publishModes && !publishModes.includes(config.publish_mode)) {
const newPublishMode = publishModes[0];
console.log(`'${config.publish_mode}' is not supported by '${backendType}' backend, switching to '${newPublishMode}'`);
return newPublishMode;
}
return config.publish_mode;
}
async function handleLocalBackend(originalConfig) {
if (!originalConfig.local_backend) {
return originalConfig;
}
const {
proxyUrl,
publish_modes: publishModes,
type: backendType
} = await detectProxyServer(originalConfig.local_backend);
if (!proxyUrl) {
return originalConfig;
}
return (0, _immer.produce)(originalConfig, config => {
config.backend.name = 'proxy';
config.backend.proxy_url = proxyUrl;
if (config.publish_mode) {
config.publish_mode = getPublishMode(config, publishModes, backendType);
}
});
}
function loadConfig(manualConfig = {}, onLoad) {
if (window.CMS_CONFIG) {
return configLoaded(window.CMS_CONFIG);
}
return async dispatch => {
dispatch(configLoading());
try {
const configUrl = getConfigUrl();
const hasManualConfig = !(0, _isEmpty2.default)(manualConfig);
const configYaml = manualConfig.load_config_file === false ? {} : await getConfigYaml(configUrl, hasManualConfig);
// Merge manual config into the config.yml one
const mergedConfig = (0, _deepmerge.default)(configYaml, manualConfig);
(0, _configSchema.validateConfig)(mergedConfig);
const withLocalBackend = await handleLocalBackend(mergedConfig);
const normalizedConfig = normalizeConfig(withLocalBackend);
const config = applyDefaults(normalizedConfig);
dispatch(configLoaded(config));
if (typeof onLoad === 'function') {
onLoad();
}
} catch (err) {
dispatch(configFailed(err));
throw err;
}
};
}

View File

@@ -0,0 +1,86 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DEPLOY_PREVIEW_SUCCESS = exports.DEPLOY_PREVIEW_REQUEST = exports.DEPLOY_PREVIEW_FAILURE = void 0;
exports.loadDeployPreview = loadDeployPreview;
var _backend = require("../backend");
var _reducers = require("../reducers");
var _notifications = require("./notifications");
const DEPLOY_PREVIEW_REQUEST = exports.DEPLOY_PREVIEW_REQUEST = 'DEPLOY_PREVIEW_REQUEST';
const DEPLOY_PREVIEW_SUCCESS = exports.DEPLOY_PREVIEW_SUCCESS = 'DEPLOY_PREVIEW_SUCCESS';
const DEPLOY_PREVIEW_FAILURE = exports.DEPLOY_PREVIEW_FAILURE = 'DEPLOY_PREVIEW_FAILURE';
function deployPreviewLoading(collection, slug) {
return {
type: DEPLOY_PREVIEW_REQUEST,
payload: {
collection,
slug
}
};
}
function deployPreviewLoaded(collection, slug, deploy) {
const {
url,
status
} = deploy;
return {
type: DEPLOY_PREVIEW_SUCCESS,
payload: {
collection,
slug,
url,
status
}
};
}
function deployPreviewError(collection, slug) {
return {
type: DEPLOY_PREVIEW_FAILURE,
payload: {
collection,
slug
}
};
}
/**
* Requests a deploy preview object from the registered backend.
*/
function loadDeployPreview(collection, slug, entry, published, opts) {
return async (dispatch, getState) => {
const state = getState();
const backend = (0, _backend.currentBackend)(state.config);
const collectionName = collection.get('name');
// Exit if currently fetching
const deployState = (0, _reducers.selectDeployPreview)(state, collectionName, slug);
if (deployState && deployState.isFetching) {
return;
}
dispatch(deployPreviewLoading(collectionName, slug));
try {
/**
* `getDeploy` is for published entries, while `getDeployPreview` is for
* unpublished entries.
*/
const deploy = published ? backend.getDeploy(collection, slug, entry) : await backend.getDeployPreview(collection, slug, entry, opts);
if (deploy) {
return dispatch(deployPreviewLoaded(collectionName, slug, deploy));
}
return dispatch(deployPreviewError(collectionName, slug));
} catch (error) {
console.error(error);
dispatch((0, _notifications.addNotification)({
message: {
details: error.message,
key: 'ui.toast.onFailToLoadDeployPreview'
},
type: 'error',
dismissAfter: 8000
}));
dispatch(deployPreviewError(collectionName, slug));
}
};
}

View File

@@ -0,0 +1,494 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.UNPUBLISHED_ENTRY_SUCCESS = exports.UNPUBLISHED_ENTRY_STATUS_CHANGE_SUCCESS = exports.UNPUBLISHED_ENTRY_STATUS_CHANGE_REQUEST = exports.UNPUBLISHED_ENTRY_STATUS_CHANGE_FAILURE = exports.UNPUBLISHED_ENTRY_REQUEST = exports.UNPUBLISHED_ENTRY_REDIRECT = exports.UNPUBLISHED_ENTRY_PUBLISH_SUCCESS = exports.UNPUBLISHED_ENTRY_PUBLISH_REQUEST = exports.UNPUBLISHED_ENTRY_PUBLISH_FAILURE = exports.UNPUBLISHED_ENTRY_PERSIST_SUCCESS = exports.UNPUBLISHED_ENTRY_PERSIST_REQUEST = exports.UNPUBLISHED_ENTRY_PERSIST_FAILURE = exports.UNPUBLISHED_ENTRY_DELETE_SUCCESS = exports.UNPUBLISHED_ENTRY_DELETE_REQUEST = exports.UNPUBLISHED_ENTRY_DELETE_FAILURE = exports.UNPUBLISHED_ENTRIES_SUCCESS = exports.UNPUBLISHED_ENTRIES_REQUEST = exports.UNPUBLISHED_ENTRIES_FAILURE = void 0;
exports.deleteUnpublishedEntry = deleteUnpublishedEntry;
exports.loadUnpublishedEntries = loadUnpublishedEntries;
exports.loadUnpublishedEntry = loadUnpublishedEntry;
exports.persistUnpublishedEntry = persistUnpublishedEntry;
exports.publishUnpublishedEntry = publishUnpublishedEntry;
exports.unpublishPublishedEntry = unpublishPublishedEntry;
exports.updateUnpublishedEntryStatus = updateUnpublishedEntryStatus;
var _get2 = _interopRequireDefault(require("lodash/get"));
var _immutable = require("immutable");
var _decapCmsLibUtil = require("decap-cms-lib-util");
var _backend = require("../backend");
var _reducers = require("../reducers");
var _entries = require("../reducers/entries");
var _publishModes = require("../constants/publishModes");
var _entries2 = require("./entries");
var _AssetProxy = require("../valueObjects/AssetProxy");
var _media = require("./media");
var _mediaLibrary = require("./mediaLibrary");
var _validationErrorTypes = _interopRequireDefault(require("../constants/validationErrorTypes"));
var _history = require("../routing/history");
var _notifications = require("./notifications");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/*
* Constant Declarations
*/
const UNPUBLISHED_ENTRY_REQUEST = exports.UNPUBLISHED_ENTRY_REQUEST = 'UNPUBLISHED_ENTRY_REQUEST';
const UNPUBLISHED_ENTRY_SUCCESS = exports.UNPUBLISHED_ENTRY_SUCCESS = 'UNPUBLISHED_ENTRY_SUCCESS';
const UNPUBLISHED_ENTRY_REDIRECT = exports.UNPUBLISHED_ENTRY_REDIRECT = 'UNPUBLISHED_ENTRY_REDIRECT';
const UNPUBLISHED_ENTRIES_REQUEST = exports.UNPUBLISHED_ENTRIES_REQUEST = 'UNPUBLISHED_ENTRIES_REQUEST';
const UNPUBLISHED_ENTRIES_SUCCESS = exports.UNPUBLISHED_ENTRIES_SUCCESS = 'UNPUBLISHED_ENTRIES_SUCCESS';
const UNPUBLISHED_ENTRIES_FAILURE = exports.UNPUBLISHED_ENTRIES_FAILURE = 'UNPUBLISHED_ENTRIES_FAILURE';
const UNPUBLISHED_ENTRY_PERSIST_REQUEST = exports.UNPUBLISHED_ENTRY_PERSIST_REQUEST = 'UNPUBLISHED_ENTRY_PERSIST_REQUEST';
const UNPUBLISHED_ENTRY_PERSIST_SUCCESS = exports.UNPUBLISHED_ENTRY_PERSIST_SUCCESS = 'UNPUBLISHED_ENTRY_PERSIST_SUCCESS';
const UNPUBLISHED_ENTRY_PERSIST_FAILURE = exports.UNPUBLISHED_ENTRY_PERSIST_FAILURE = 'UNPUBLISHED_ENTRY_PERSIST_FAILURE';
const UNPUBLISHED_ENTRY_STATUS_CHANGE_REQUEST = exports.UNPUBLISHED_ENTRY_STATUS_CHANGE_REQUEST = 'UNPUBLISHED_ENTRY_STATUS_CHANGE_REQUEST';
const UNPUBLISHED_ENTRY_STATUS_CHANGE_SUCCESS = exports.UNPUBLISHED_ENTRY_STATUS_CHANGE_SUCCESS = 'UNPUBLISHED_ENTRY_STATUS_CHANGE_SUCCESS';
const UNPUBLISHED_ENTRY_STATUS_CHANGE_FAILURE = exports.UNPUBLISHED_ENTRY_STATUS_CHANGE_FAILURE = 'UNPUBLISHED_ENTRY_STATUS_CHANGE_FAILURE';
const UNPUBLISHED_ENTRY_PUBLISH_REQUEST = exports.UNPUBLISHED_ENTRY_PUBLISH_REQUEST = 'UNPUBLISHED_ENTRY_PUBLISH_REQUEST';
const UNPUBLISHED_ENTRY_PUBLISH_SUCCESS = exports.UNPUBLISHED_ENTRY_PUBLISH_SUCCESS = 'UNPUBLISHED_ENTRY_PUBLISH_SUCCESS';
const UNPUBLISHED_ENTRY_PUBLISH_FAILURE = exports.UNPUBLISHED_ENTRY_PUBLISH_FAILURE = 'UNPUBLISHED_ENTRY_PUBLISH_FAILURE';
const UNPUBLISHED_ENTRY_DELETE_REQUEST = exports.UNPUBLISHED_ENTRY_DELETE_REQUEST = 'UNPUBLISHED_ENTRY_DELETE_REQUEST';
const UNPUBLISHED_ENTRY_DELETE_SUCCESS = exports.UNPUBLISHED_ENTRY_DELETE_SUCCESS = 'UNPUBLISHED_ENTRY_DELETE_SUCCESS';
const UNPUBLISHED_ENTRY_DELETE_FAILURE = exports.UNPUBLISHED_ENTRY_DELETE_FAILURE = 'UNPUBLISHED_ENTRY_DELETE_FAILURE';
/*
* Simple Action Creators (Internal)
*/
function unpublishedEntryLoading(collection, slug) {
return {
type: UNPUBLISHED_ENTRY_REQUEST,
payload: {
collection: collection.get('name'),
slug
}
};
}
function unpublishedEntryLoaded(collection, entry) {
return {
type: UNPUBLISHED_ENTRY_SUCCESS,
payload: {
collection: collection.get('name'),
entry
}
};
}
function unpublishedEntryRedirected(collection, slug) {
return {
type: UNPUBLISHED_ENTRY_REDIRECT,
payload: {
collection: collection.get('name'),
slug
}
};
}
function unpublishedEntriesLoading() {
return {
type: UNPUBLISHED_ENTRIES_REQUEST
};
}
function unpublishedEntriesLoaded(entries, pagination) {
return {
type: UNPUBLISHED_ENTRIES_SUCCESS,
payload: {
entries,
pages: pagination
}
};
}
function unpublishedEntriesFailed(error) {
return {
type: UNPUBLISHED_ENTRIES_FAILURE,
error: 'Failed to load entries',
payload: error
};
}
function unpublishedEntryPersisting(collection, slug) {
return {
type: UNPUBLISHED_ENTRY_PERSIST_REQUEST,
payload: {
collection: collection.get('name'),
slug
}
};
}
function unpublishedEntryPersisted(collection, entry) {
return {
type: UNPUBLISHED_ENTRY_PERSIST_SUCCESS,
payload: {
collection: collection.get('name'),
entry
}
};
}
function unpublishedEntryPersistedFail(error, collection, slug) {
return {
type: UNPUBLISHED_ENTRY_PERSIST_FAILURE,
payload: {
error,
collection: collection.get('name'),
slug
},
error
};
}
function unpublishedEntryStatusChangeRequest(collection, slug) {
return {
type: UNPUBLISHED_ENTRY_STATUS_CHANGE_REQUEST,
payload: {
collection,
slug
}
};
}
function unpublishedEntryStatusChangePersisted(collection, slug, newStatus) {
return {
type: UNPUBLISHED_ENTRY_STATUS_CHANGE_SUCCESS,
payload: {
collection,
slug,
newStatus
}
};
}
function unpublishedEntryStatusChangeError(collection, slug) {
return {
type: UNPUBLISHED_ENTRY_STATUS_CHANGE_FAILURE,
payload: {
collection,
slug
}
};
}
function unpublishedEntryPublishRequest(collection, slug) {
return {
type: UNPUBLISHED_ENTRY_PUBLISH_REQUEST,
payload: {
collection,
slug
}
};
}
function unpublishedEntryPublished(collection, slug) {
return {
type: UNPUBLISHED_ENTRY_PUBLISH_SUCCESS,
payload: {
collection,
slug
}
};
}
function unpublishedEntryPublishError(collection, slug) {
return {
type: UNPUBLISHED_ENTRY_PUBLISH_FAILURE,
payload: {
collection,
slug
}
};
}
function unpublishedEntryDeleteRequest(collection, slug) {
return {
type: UNPUBLISHED_ENTRY_DELETE_REQUEST,
payload: {
collection,
slug
}
};
}
function unpublishedEntryDeleted(collection, slug) {
return {
type: UNPUBLISHED_ENTRY_DELETE_SUCCESS,
payload: {
collection,
slug
}
};
}
function unpublishedEntryDeleteError(collection, slug) {
return {
type: UNPUBLISHED_ENTRY_DELETE_FAILURE,
payload: {
collection,
slug
}
};
}
/*
* Exported Thunk Action Creators
*/
function loadUnpublishedEntry(collection, slug) {
return async (dispatch, getState) => {
const state = getState();
const backend = (0, _backend.currentBackend)(state.config);
const entriesLoaded = (0, _get2.default)(state.editorialWorkflow.toJS(), 'pages.ids', false);
//run possible unpublishedEntries migration
if (!entriesLoaded) {
try {
const {
entries,
pagination
} = await backend.unpublishedEntries(state.collections);
dispatch(unpublishedEntriesLoaded(entries, pagination));
// eslint-disable-next-line no-empty
} catch (e) {}
}
dispatch(unpublishedEntryLoading(collection, slug));
try {
const entry = await backend.unpublishedEntry(state, collection, slug);
const assetProxies = await Promise.all(entry.mediaFiles.filter(file => file.draft).map(({
url,
file,
path
}) => (0, _AssetProxy.createAssetProxy)({
path,
url,
file
})));
dispatch((0, _media.addAssets)(assetProxies));
dispatch(unpublishedEntryLoaded(collection, entry));
dispatch((0, _entries2.createDraftFromEntry)(entry));
} catch (error) {
if (error.name === _decapCmsLibUtil.EDITORIAL_WORKFLOW_ERROR && error.notUnderEditorialWorkflow) {
dispatch(unpublishedEntryRedirected(collection, slug));
dispatch((0, _entries2.loadEntry)(collection, slug));
} else {
dispatch((0, _notifications.addNotification)({
message: {
key: 'ui.toast.onFailToLoadEntries',
details: error
},
type: 'error',
dismissAfter: 8000
}));
}
}
};
}
function loadUnpublishedEntries(collections) {
return (dispatch, getState) => {
const state = getState();
const backend = (0, _backend.currentBackend)(state.config);
const entriesLoaded = (0, _get2.default)(state.editorialWorkflow.toJS(), 'pages.ids', false);
if (state.config.publish_mode !== _publishModes.EDITORIAL_WORKFLOW || entriesLoaded) {
return;
}
dispatch(unpublishedEntriesLoading());
backend.unpublishedEntries(collections).then(response => dispatch(unpublishedEntriesLoaded(response.entries, response.pagination))).catch(error => {
dispatch((0, _notifications.addNotification)({
message: {
key: 'ui.toast.onFailToLoadEntries',
details: error
},
type: 'error',
dismissAfter: 8000
}));
dispatch(unpublishedEntriesFailed(error));
Promise.reject(error);
});
};
}
function persistUnpublishedEntry(collection, existingUnpublishedEntry) {
return async (dispatch, getState) => {
const state = getState();
const entryDraft = state.entryDraft;
const fieldsErrors = entryDraft.get('fieldsErrors');
const unpublishedSlugs = (0, _reducers.selectUnpublishedSlugs)(state, collection.get('name'));
const publishedSlugs = (0, _reducers.selectPublishedSlugs)(state, collection.get('name'));
const usedSlugs = publishedSlugs.concat(unpublishedSlugs);
const entriesLoaded = (0, _get2.default)(state.editorialWorkflow.toJS(), 'pages.ids', false);
//load unpublishedEntries
!entriesLoaded && dispatch(loadUnpublishedEntries(state.collections));
// Early return if draft contains validation errors
if (!fieldsErrors.isEmpty()) {
const hasPresenceErrors = fieldsErrors.some(errors => errors.some(error => error.type && error.type === _validationErrorTypes.default.PRESENCE));
if (hasPresenceErrors) {
dispatch((0, _notifications.addNotification)({
message: {
key: 'ui.toast.missingRequiredField'
},
type: 'error',
dismissAfter: 8000
}));
}
return Promise.reject();
}
const backend = (0, _backend.currentBackend)(state.config);
const entry = entryDraft.get('entry');
const assetProxies = (0, _entries2.getMediaAssets)({
entry
});
const serializedEntry = (0, _entries2.getSerializedEntry)(collection, entry);
const serializedEntryDraft = entryDraft.set('entry', serializedEntry);
dispatch(unpublishedEntryPersisting(collection, entry.get('slug')));
const persistAction = existingUnpublishedEntry ? backend.persistUnpublishedEntry : backend.persistEntry;
try {
const newSlug = await persistAction.call(backend, {
config: state.config,
collection,
entryDraft: serializedEntryDraft,
assetProxies,
usedSlugs
});
dispatch((0, _notifications.addNotification)({
message: {
key: 'ui.toast.entrySaved'
},
type: 'success',
dismissAfter: 4000
}));
dispatch(unpublishedEntryPersisted(collection, serializedEntry));
if (entry.get('slug') !== newSlug) {
await dispatch(loadUnpublishedEntry(collection, newSlug));
(0, _history.navigateToEntry)(collection.get('name'), newSlug);
}
} catch (error) {
dispatch((0, _notifications.addNotification)({
message: {
key: 'ui.toast.onFailToPersist',
details: error
},
type: 'error',
dismissAfter: 8000
}));
return Promise.reject(dispatch(unpublishedEntryPersistedFail(error, collection, entry.get('slug'))));
}
};
}
function updateUnpublishedEntryStatus(collection, slug, oldStatus, newStatus) {
return (dispatch, getState) => {
if (oldStatus === newStatus) return;
const state = getState();
const backend = (0, _backend.currentBackend)(state.config);
dispatch(unpublishedEntryStatusChangeRequest(collection, slug));
backend.updateUnpublishedEntryStatus(collection, slug, newStatus).then(() => {
dispatch((0, _notifications.addNotification)({
message: {
key: 'ui.toast.entryUpdated'
},
type: 'success',
dismissAfter: 4000
}));
dispatch(unpublishedEntryStatusChangePersisted(collection, slug, newStatus));
}).catch(error => {
dispatch((0, _notifications.addNotification)({
message: {
key: 'ui.toast.onFailToUpdateStatus',
details: error
},
type: 'error',
dismissAfter: 8000
}));
dispatch(unpublishedEntryStatusChangeError(collection, slug));
});
};
}
function deleteUnpublishedEntry(collection, slug) {
return (dispatch, getState) => {
const state = getState();
const backend = (0, _backend.currentBackend)(state.config);
dispatch(unpublishedEntryDeleteRequest(collection, slug));
return backend.deleteUnpublishedEntry(collection, slug).then(() => {
dispatch((0, _notifications.addNotification)({
message: {
key: 'ui.toast.onDeleteUnpublishedChanges'
},
type: 'success',
dismissAfter: 4000
}));
dispatch(unpublishedEntryDeleted(collection, slug));
}).catch(error => {
dispatch((0, _notifications.addNotification)({
message: {
key: 'ui.toast.onDeleteUnpublishedChanges',
details: error
},
type: 'error',
dismissAfter: 8000
}));
dispatch(unpublishedEntryDeleteError(collection, slug));
});
};
}
function publishUnpublishedEntry(collectionName, slug) {
return async (dispatch, getState) => {
const state = getState();
const collections = state.collections;
const backend = (0, _backend.currentBackend)(state.config);
const entry = (0, _reducers.selectUnpublishedEntry)(state, collectionName, slug);
dispatch(unpublishedEntryPublishRequest(collectionName, slug));
try {
await backend.publishUnpublishedEntry(entry);
// re-load media after entry was published
dispatch((0, _mediaLibrary.loadMedia)());
dispatch((0, _notifications.addNotification)({
message: {
key: 'ui.toast.entryPublished'
},
type: 'success',
dismissAfter: 4000
}));
dispatch(unpublishedEntryPublished(collectionName, slug));
const collection = collections.get(collectionName);
if (collection.has('nested')) {
dispatch((0, _entries2.loadEntries)(collection));
const newSlug = (0, _backend.slugFromCustomPath)(collection, entry.get('path'));
(0, _entries2.loadEntry)(collection, newSlug);
if (slug !== newSlug && (0, _entries.selectEditingDraft)(state.entryDraft)) {
(0, _history.navigateToEntry)(collection.get('name'), newSlug);
}
} else {
return dispatch((0, _entries2.loadEntry)(collection, slug));
}
} catch (error) {
dispatch((0, _notifications.addNotification)({
message: {
key: 'ui.toast.onFailToPublishEntry',
details: error
},
type: 'error',
dismissAfter: 8000
}));
dispatch(unpublishedEntryPublishError(collectionName, slug));
}
};
}
function unpublishPublishedEntry(collection, slug) {
return (dispatch, getState) => {
const state = getState();
const backend = (0, _backend.currentBackend)(state.config);
const entry = (0, _reducers.selectEntry)(state, collection.get('name'), slug);
const entryDraft = (0, _immutable.Map)().set('entry', entry);
dispatch(unpublishedEntryPersisting(collection, slug));
return backend.deleteEntry(state, collection, slug).then(() => backend.persistEntry({
config: state.config,
collection,
entryDraft,
assetProxies: [],
usedSlugs: (0, _immutable.List)(),
status: _publishModes.status.get('PENDING_PUBLISH')
})).then(() => {
dispatch(unpublishedEntryPersisted(collection, entry));
dispatch((0, _entries2.entryDeleted)(collection, slug));
dispatch(loadUnpublishedEntry(collection, slug));
dispatch((0, _notifications.addNotification)({
message: {
key: 'ui.toast.entryUnpublished'
},
type: 'success',
dismissAfter: 4000
}));
}).catch(error => {
dispatch((0, _notifications.addNotification)({
message: {
key: 'ui.toast.onFailToUnpublishEntry',
details: error
},
type: 'error',
dismissAfter: 8000
}));
dispatch(unpublishedEntryPersistedFail(error, collection, entry.get('slug')));
});
};
}

908
node_modules/decap-cms-core/dist/esm/actions/entries.js generated vendored Normal file
View File

@@ -0,0 +1,908 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.SORT_ENTRIES_SUCCESS = exports.SORT_ENTRIES_REQUEST = exports.SORT_ENTRIES_FAILURE = exports.REMOVE_DRAFT_ENTRY_MEDIA_FILE = exports.GROUP_ENTRIES_SUCCESS = exports.GROUP_ENTRIES_REQUEST = exports.GROUP_ENTRIES_FAILURE = exports.FILTER_ENTRIES_SUCCESS = exports.FILTER_ENTRIES_REQUEST = exports.FILTER_ENTRIES_FAILURE = exports.ENTRY_SUCCESS = exports.ENTRY_REQUEST = exports.ENTRY_PERSIST_SUCCESS = exports.ENTRY_PERSIST_REQUEST = exports.ENTRY_PERSIST_FAILURE = exports.ENTRY_FAILURE = exports.ENTRY_DELETE_SUCCESS = exports.ENTRY_DELETE_REQUEST = exports.ENTRY_DELETE_FAILURE = exports.ENTRIES_SUCCESS = exports.ENTRIES_REQUEST = exports.ENTRIES_FAILURE = exports.DRAFT_VALIDATION_ERRORS = exports.DRAFT_LOCAL_BACKUP_RETRIEVED = exports.DRAFT_DISCARD = exports.DRAFT_CREATE_FROM_LOCAL_BACKUP = exports.DRAFT_CREATE_FROM_ENTRY = exports.DRAFT_CREATE_EMPTY = exports.DRAFT_CREATE_DUPLICATE_FROM_ENTRY = exports.DRAFT_CLEAR_ERRORS = exports.DRAFT_CHANGE_FIELD = exports.CHANGE_VIEW_STYLE = exports.ADD_DRAFT_ENTRY_MEDIA_FILE = void 0;
exports.addDraftEntryMediaFile = addDraftEntryMediaFile;
exports.changeDraftField = changeDraftField;
exports.changeDraftFieldValidation = changeDraftFieldValidation;
exports.changeViewStyle = changeViewStyle;
exports.clearFieldErrors = clearFieldErrors;
exports.createDraftDuplicateFromEntry = createDraftDuplicateFromEntry;
exports.createDraftFromEntry = createDraftFromEntry;
exports.createEmptyDraft = createEmptyDraft;
exports.createEmptyDraftData = createEmptyDraftData;
exports.deleteEntry = deleteEntry;
exports.deleteLocalBackup = deleteLocalBackup;
exports.discardDraft = discardDraft;
exports.draftDuplicateEntry = draftDuplicateEntry;
exports.emptyDraftCreated = emptyDraftCreated;
exports.entriesFailed = entriesFailed;
exports.entriesLoaded = entriesLoaded;
exports.entriesLoading = entriesLoading;
exports.entryDeleteFail = entryDeleteFail;
exports.entryDeleted = entryDeleted;
exports.entryDeleting = entryDeleting;
exports.entryLoadError = entryLoadError;
exports.entryLoaded = entryLoaded;
exports.entryLoading = entryLoading;
exports.entryPersistFail = entryPersistFail;
exports.entryPersisted = entryPersisted;
exports.entryPersisting = entryPersisting;
exports.filterByField = filterByField;
exports.getAllEntries = getAllEntries;
exports.getMediaAssets = getMediaAssets;
exports.getSerializedEntry = getSerializedEntry;
exports.groupByField = groupByField;
exports.loadEntries = loadEntries;
exports.loadEntry = loadEntry;
exports.loadLocalBackup = loadLocalBackup;
exports.localBackupRetrieved = localBackupRetrieved;
exports.persistEntry = persistEntry;
exports.persistLocalBackup = persistLocalBackup;
exports.removeDraftEntryMediaFile = removeDraftEntryMediaFile;
exports.retrieveLocalBackup = retrieveLocalBackup;
exports.sortByField = sortByField;
exports.traverseCollectionCursor = traverseCollectionCursor;
exports.tryLoadEntry = tryLoadEntry;
exports.validateMetaField = validateMetaField;
var _isEqual2 = _interopRequireDefault(require("lodash/isEqual"));
var _immutable = require("immutable");
var _decapCmsLibUtil = require("decap-cms-lib-util");
var _cursors = require("../reducers/cursors");
var _collections = require("../reducers/collections");
var _reducers = require("../reducers");
var _integrations = require("../integrations");
var _backend = require("../backend");
var _serializeEntryValues = require("../lib/serializeEntryValues");
var _Entry = require("../valueObjects/Entry");
var _AssetProxy = require("../valueObjects/AssetProxy");
var _validationErrorTypes = _interopRequireDefault(require("../constants/validationErrorTypes"));
var _media = require("./media");
var _redux = require("../types/redux");
var _mediaLibrary = require("./mediaLibrary");
var _waitUntil = require("./waitUntil");
var _entries = require("../reducers/entries");
var _entryDraft = require("../reducers/entryDraft");
var _history = require("../routing/history");
var _formatters = require("../lib/formatters");
var _i18n = require("../lib/i18n");
var _notifications = require("./notifications");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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; }
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; }
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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
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); }
/*
* Constant Declarations
*/
const ENTRY_REQUEST = exports.ENTRY_REQUEST = 'ENTRY_REQUEST';
const ENTRY_SUCCESS = exports.ENTRY_SUCCESS = 'ENTRY_SUCCESS';
const ENTRY_FAILURE = exports.ENTRY_FAILURE = 'ENTRY_FAILURE';
const ENTRIES_REQUEST = exports.ENTRIES_REQUEST = 'ENTRIES_REQUEST';
const ENTRIES_SUCCESS = exports.ENTRIES_SUCCESS = 'ENTRIES_SUCCESS';
const ENTRIES_FAILURE = exports.ENTRIES_FAILURE = 'ENTRIES_FAILURE';
const SORT_ENTRIES_REQUEST = exports.SORT_ENTRIES_REQUEST = 'SORT_ENTRIES_REQUEST';
const SORT_ENTRIES_SUCCESS = exports.SORT_ENTRIES_SUCCESS = 'SORT_ENTRIES_SUCCESS';
const SORT_ENTRIES_FAILURE = exports.SORT_ENTRIES_FAILURE = 'SORT_ENTRIES_FAILURE';
const FILTER_ENTRIES_REQUEST = exports.FILTER_ENTRIES_REQUEST = 'FILTER_ENTRIES_REQUEST';
const FILTER_ENTRIES_SUCCESS = exports.FILTER_ENTRIES_SUCCESS = 'FILTER_ENTRIES_SUCCESS';
const FILTER_ENTRIES_FAILURE = exports.FILTER_ENTRIES_FAILURE = 'FILTER_ENTRIES_FAILURE';
const GROUP_ENTRIES_REQUEST = exports.GROUP_ENTRIES_REQUEST = 'GROUP_ENTRIES_REQUEST';
const GROUP_ENTRIES_SUCCESS = exports.GROUP_ENTRIES_SUCCESS = 'GROUP_ENTRIES_SUCCESS';
const GROUP_ENTRIES_FAILURE = exports.GROUP_ENTRIES_FAILURE = 'GROUP_ENTRIES_FAILURE';
const DRAFT_CREATE_FROM_ENTRY = exports.DRAFT_CREATE_FROM_ENTRY = 'DRAFT_CREATE_FROM_ENTRY';
const DRAFT_CREATE_EMPTY = exports.DRAFT_CREATE_EMPTY = 'DRAFT_CREATE_EMPTY';
const DRAFT_DISCARD = exports.DRAFT_DISCARD = 'DRAFT_DISCARD';
const DRAFT_CHANGE_FIELD = exports.DRAFT_CHANGE_FIELD = 'DRAFT_CHANGE_FIELD';
const DRAFT_VALIDATION_ERRORS = exports.DRAFT_VALIDATION_ERRORS = 'DRAFT_VALIDATION_ERRORS';
const DRAFT_CLEAR_ERRORS = exports.DRAFT_CLEAR_ERRORS = 'DRAFT_CLEAR_ERRORS';
const DRAFT_LOCAL_BACKUP_RETRIEVED = exports.DRAFT_LOCAL_BACKUP_RETRIEVED = 'DRAFT_LOCAL_BACKUP_RETRIEVED';
const DRAFT_CREATE_FROM_LOCAL_BACKUP = exports.DRAFT_CREATE_FROM_LOCAL_BACKUP = 'DRAFT_CREATE_FROM_LOCAL_BACKUP';
const DRAFT_CREATE_DUPLICATE_FROM_ENTRY = exports.DRAFT_CREATE_DUPLICATE_FROM_ENTRY = 'DRAFT_CREATE_DUPLICATE_FROM_ENTRY';
const ENTRY_PERSIST_REQUEST = exports.ENTRY_PERSIST_REQUEST = 'ENTRY_PERSIST_REQUEST';
const ENTRY_PERSIST_SUCCESS = exports.ENTRY_PERSIST_SUCCESS = 'ENTRY_PERSIST_SUCCESS';
const ENTRY_PERSIST_FAILURE = exports.ENTRY_PERSIST_FAILURE = 'ENTRY_PERSIST_FAILURE';
const ENTRY_DELETE_REQUEST = exports.ENTRY_DELETE_REQUEST = 'ENTRY_DELETE_REQUEST';
const ENTRY_DELETE_SUCCESS = exports.ENTRY_DELETE_SUCCESS = 'ENTRY_DELETE_SUCCESS';
const ENTRY_DELETE_FAILURE = exports.ENTRY_DELETE_FAILURE = 'ENTRY_DELETE_FAILURE';
const ADD_DRAFT_ENTRY_MEDIA_FILE = exports.ADD_DRAFT_ENTRY_MEDIA_FILE = 'ADD_DRAFT_ENTRY_MEDIA_FILE';
const REMOVE_DRAFT_ENTRY_MEDIA_FILE = exports.REMOVE_DRAFT_ENTRY_MEDIA_FILE = 'REMOVE_DRAFT_ENTRY_MEDIA_FILE';
const CHANGE_VIEW_STYLE = exports.CHANGE_VIEW_STYLE = 'CHANGE_VIEW_STYLE';
/*
* Simple Action Creators (Internal)
* We still need to export them for tests
*/
function entryLoading(collection, slug) {
return {
type: ENTRY_REQUEST,
payload: {
collection: collection.get('name'),
slug
}
};
}
function entryLoaded(collection, entry) {
return {
type: ENTRY_SUCCESS,
payload: {
collection: collection.get('name'),
entry
}
};
}
function entryLoadError(error, collection, slug) {
return {
type: ENTRY_FAILURE,
payload: {
error,
collection: collection.get('name'),
slug
}
};
}
function entriesLoading(collection) {
return {
type: ENTRIES_REQUEST,
payload: {
collection: collection.get('name')
}
};
}
function entriesLoaded(collection, entries, pagination, cursor, append = true) {
return {
type: ENTRIES_SUCCESS,
payload: {
collection: collection.get('name'),
entries,
page: pagination,
cursor: _decapCmsLibUtil.Cursor.create(cursor),
append
}
};
}
function entriesFailed(collection, error) {
return {
type: ENTRIES_FAILURE,
error: 'Failed to load entries',
payload: error.toString(),
meta: {
collection: collection.get('name')
}
};
}
async function getAllEntries(state, collection) {
const backend = (0, _backend.currentBackend)(state.config);
const integration = (0, _reducers.selectIntegration)(state, collection.get('name'), 'listEntries');
const provider = integration ? (0, _integrations.getIntegrationProvider)(state.integrations, backend.getToken, integration) : backend;
const entries = await provider.listAllEntries(collection);
return entries;
}
function sortByField(collection, key, direction = _redux.SortDirection.Ascending) {
return async (dispatch, getState) => {
const state = getState();
// if we're already fetching we update the sort key, but skip loading entries
const isFetching = (0, _entries.selectIsFetching)(state.entries, collection.get('name'));
dispatch({
type: SORT_ENTRIES_REQUEST,
payload: {
collection: collection.get('name'),
key,
direction
}
});
if (isFetching) {
return;
}
try {
const entries = await getAllEntries(state, collection);
dispatch({
type: SORT_ENTRIES_SUCCESS,
payload: {
collection: collection.get('name'),
key,
direction,
entries
}
});
} catch (error) {
dispatch({
type: SORT_ENTRIES_FAILURE,
payload: {
collection: collection.get('name'),
key,
direction,
error
}
});
}
};
}
function filterByField(collection, filter) {
return async (dispatch, getState) => {
const state = getState();
// if we're already fetching we update the filter key, but skip loading entries
const isFetching = (0, _entries.selectIsFetching)(state.entries, collection.get('name'));
dispatch({
type: FILTER_ENTRIES_REQUEST,
payload: {
collection: collection.get('name'),
filter
}
});
if (isFetching) {
return;
}
try {
const entries = await getAllEntries(state, collection);
dispatch({
type: FILTER_ENTRIES_SUCCESS,
payload: {
collection: collection.get('name'),
filter,
entries
}
});
} catch (error) {
dispatch({
type: FILTER_ENTRIES_FAILURE,
payload: {
collection: collection.get('name'),
filter,
error
}
});
}
};
}
function groupByField(collection, group) {
return async (dispatch, getState) => {
const state = getState();
const isFetching = (0, _entries.selectIsFetching)(state.entries, collection.get('name'));
dispatch({
type: GROUP_ENTRIES_REQUEST,
payload: {
collection: collection.get('name'),
group
}
});
if (isFetching) {
return;
}
try {
const entries = await getAllEntries(state, collection);
dispatch({
type: GROUP_ENTRIES_SUCCESS,
payload: {
collection: collection.get('name'),
group,
entries
}
});
} catch (error) {
dispatch({
type: GROUP_ENTRIES_FAILURE,
payload: {
collection: collection.get('name'),
group,
error
}
});
}
};
}
function changeViewStyle(viewStyle) {
return {
type: CHANGE_VIEW_STYLE,
payload: {
style: viewStyle
}
};
}
function entryPersisting(collection, entry) {
return {
type: ENTRY_PERSIST_REQUEST,
payload: {
collectionName: collection.get('name'),
entrySlug: entry.get('slug')
}
};
}
function entryPersisted(collection, entry, slug) {
return {
type: ENTRY_PERSIST_SUCCESS,
payload: {
collectionName: collection.get('name'),
entrySlug: entry.get('slug'),
/**
* Pass slug from backend for newly created entries.
*/
slug
}
};
}
function entryPersistFail(collection, entry, error) {
return {
type: ENTRY_PERSIST_FAILURE,
error: 'Failed to persist entry',
payload: {
collectionName: collection.get('name'),
entrySlug: entry.get('slug'),
error: error.toString()
}
};
}
function entryDeleting(collection, slug) {
return {
type: ENTRY_DELETE_REQUEST,
payload: {
collectionName: collection.get('name'),
entrySlug: slug
}
};
}
function entryDeleted(collection, slug) {
return {
type: ENTRY_DELETE_SUCCESS,
payload: {
collectionName: collection.get('name'),
entrySlug: slug
}
};
}
function entryDeleteFail(collection, slug, error) {
return {
type: ENTRY_DELETE_FAILURE,
payload: {
collectionName: collection.get('name'),
entrySlug: slug,
error: error.toString()
}
};
}
function emptyDraftCreated(entry) {
return {
type: DRAFT_CREATE_EMPTY,
payload: entry
};
}
/*
* Exported simple Action Creators
*/
function createDraftFromEntry(entry) {
return {
type: DRAFT_CREATE_FROM_ENTRY,
payload: {
entry
}
};
}
function draftDuplicateEntry(entry) {
return {
type: DRAFT_CREATE_DUPLICATE_FROM_ENTRY,
payload: (0, _Entry.createEntry)(entry.get('collection'), '', '', {
data: entry.get('data'),
mediaFiles: entry.get('mediaFiles').toJS()
})
};
}
function discardDraft() {
return {
type: DRAFT_DISCARD
};
}
function changeDraftField({
field,
value,
metadata,
entries,
i18n
}) {
return {
type: DRAFT_CHANGE_FIELD,
payload: {
field,
value,
metadata,
entries,
i18n
}
};
}
function changeDraftFieldValidation(uniquefieldId, errors) {
return {
type: DRAFT_VALIDATION_ERRORS,
payload: {
uniquefieldId,
errors
}
};
}
function clearFieldErrors() {
return {
type: DRAFT_CLEAR_ERRORS
};
}
function localBackupRetrieved(entry) {
return {
type: DRAFT_LOCAL_BACKUP_RETRIEVED,
payload: {
entry
}
};
}
function loadLocalBackup() {
return {
type: DRAFT_CREATE_FROM_LOCAL_BACKUP
};
}
function addDraftEntryMediaFile(file) {
return {
type: ADD_DRAFT_ENTRY_MEDIA_FILE,
payload: file
};
}
function removeDraftEntryMediaFile({
id
}) {
return {
type: REMOVE_DRAFT_ENTRY_MEDIA_FILE,
payload: {
id
}
};
}
function persistLocalBackup(entry, collection) {
return (_dispatch, getState) => {
const state = getState();
const backend = (0, _backend.currentBackend)(state.config);
return backend.persistLocalDraftBackup(entry, collection);
};
}
function createDraftDuplicateFromEntry(entry) {
return dispatch => {
dispatch((0, _waitUntil.waitUntil)({
predicate: ({
type
}) => type === DRAFT_CREATE_EMPTY,
run: () => dispatch(draftDuplicateEntry(entry))
}));
};
}
function retrieveLocalBackup(collection, slug) {
return async (dispatch, getState) => {
const state = getState();
const backend = (0, _backend.currentBackend)(state.config);
const {
entry
} = await backend.getLocalDraftBackup(collection, slug);
if (entry) {
// load assets from backup
const mediaFiles = entry.mediaFiles || [];
const assetProxies = await Promise.all(mediaFiles.map(file => {
if (file.file || file.url) {
return (0, _AssetProxy.createAssetProxy)({
path: file.path,
file: file.file,
url: file.url,
field: file.field
});
} else {
return (0, _media.getAsset)({
collection,
entry: (0, _immutable.fromJS)(entry),
path: file.path,
field: file.field
})(dispatch, getState);
}
}));
dispatch((0, _media.addAssets)(assetProxies));
return dispatch(localBackupRetrieved(entry));
}
};
}
function deleteLocalBackup(collection, slug) {
return (_dispatch, getState) => {
const state = getState();
const backend = (0, _backend.currentBackend)(state.config);
return backend.deleteLocalDraftBackup(collection, slug);
};
}
/*
* Exported Thunk Action Creators
*/
function loadEntry(collection, slug) {
return async (dispatch, getState) => {
await (0, _mediaLibrary.waitForMediaLibraryToLoad)(dispatch, getState());
dispatch(entryLoading(collection, slug));
try {
const loadedEntry = await tryLoadEntry(getState(), collection, slug);
dispatch(entryLoaded(collection, loadedEntry));
dispatch(createDraftFromEntry(loadedEntry));
} catch (error) {
dispatch((0, _notifications.addNotification)({
message: {
details: error.message,
key: 'ui.toast.onFailToLoadEntries'
},
type: 'error',
dismissAfter: 8000
}));
dispatch(entryLoadError(error, collection, slug));
}
};
}
async function tryLoadEntry(state, collection, slug) {
const backend = (0, _backend.currentBackend)(state.config);
const loadedEntry = await backend.getEntry(state, collection, slug);
return loadedEntry;
}
const appendActions = (0, _immutable.fromJS)({
['append_next']: {
action: 'next',
append: true
}
});
function addAppendActionsToCursor(cursor) {
return _decapCmsLibUtil.Cursor.create(cursor).updateStore('actions', actions => {
return actions.union(appendActions.filter(v => actions.has(v.get('action'))).keySeq());
});
}
function loadEntries(collection, page = 0) {
return async (dispatch, getState) => {
if (collection.get('isFetching')) {
return;
}
const state = getState();
const sortFields = (0, _entries.selectEntriesSortFields)(state.entries, collection.get('name'));
if (sortFields && sortFields.length > 0) {
const field = sortFields[0];
return dispatch(sortByField(collection, field.get('key'), field.get('direction')));
}
const backend = (0, _backend.currentBackend)(state.config);
const integration = (0, _reducers.selectIntegration)(state, collection.get('name'), 'listEntries');
const provider = integration ? (0, _integrations.getIntegrationProvider)(state.integrations, backend.getToken, integration) : backend;
const append = !!(page && !isNaN(page) && page > 0);
dispatch(entriesLoading(collection));
try {
const loadAllEntries = collection.has('nested') || (0, _i18n.hasI18n)(collection);
let response = await (loadAllEntries ?
// nested collections require all entries to construct the tree
provider.listAllEntries(collection).then(entries => ({
entries
})) : provider.listEntries(collection, page));
response = _objectSpread(_objectSpread({}, response), {}, {
// The only existing backend using the pagination system is the
// Algolia integration, which is also the only integration used
// to list entries. Thus, this checking for an integration can
// determine whether or not this is using the old integer-based
// pagination API. Other backends will simply store an empty
// cursor, which behaves identically to no cursor at all.
cursor: integration ? _decapCmsLibUtil.Cursor.create({
actions: ['next'],
meta: {
usingOldPaginationAPI: true
},
data: {
nextPage: page + 1
}
}) : _decapCmsLibUtil.Cursor.create(response.cursor)
});
dispatch(entriesLoaded(collection, response.cursor.meta.get('usingOldPaginationAPI') ? response.entries.reverse() : response.entries, response.pagination, addAppendActionsToCursor(response.cursor), append));
} catch (err) {
dispatch((0, _notifications.addNotification)({
message: {
details: err,
key: 'ui.toast.onFailToLoadEntries'
},
type: 'error',
dismissAfter: 8000
}));
return Promise.reject(dispatch(entriesFailed(collection, err)));
}
};
}
function traverseCursor(backend, cursor, action) {
if (!cursor.actions.has(action)) {
throw new Error(`The current cursor does not support the pagination action "${action}".`);
}
return backend.traverseCursor(cursor, action);
}
function traverseCollectionCursor(collection, action) {
return async (dispatch, getState) => {
const state = getState();
const collectionName = collection.get('name');
if (state.entries.getIn(['pages', `${collectionName}`, 'isFetching'])) {
return;
}
const backend = (0, _backend.currentBackend)(state.config);
const {
action: realAction,
append
} = appendActions.has(action) ? appendActions.get(action).toJS() : {
action,
append: false
};
const cursor = (0, _cursors.selectCollectionEntriesCursor)(state.cursors, collection.get('name'));
// Handle cursors representing pages in the old, integer-based
// pagination API
if (cursor.meta.get('usingOldPaginationAPI', false)) {
return dispatch(loadEntries(collection, cursor.data.get('nextPage')));
}
try {
var _newCursor$meta;
dispatch(entriesLoading(collection));
const {
entries,
cursor: newCursor
} = await traverseCursor(backend, cursor, realAction);
const pagination = (_newCursor$meta = newCursor.meta) === null || _newCursor$meta === void 0 ? void 0 : _newCursor$meta.get('page');
return dispatch(entriesLoaded(collection, entries, pagination, addAppendActionsToCursor(newCursor), append));
} catch (err) {
console.error(err);
dispatch((0, _notifications.addNotification)({
message: {
details: err,
key: 'ui.toast.onFailToLoadEntries'
},
type: 'error',
dismissAfter: 8000
}));
return Promise.reject(dispatch(entriesFailed(collection, err)));
}
};
}
function escapeHtml(unsafe) {
return unsafe.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#039;');
}
function processValue(unsafe) {
if (['true', 'True', 'TRUE'].includes(unsafe)) {
return true;
}
if (['false', 'False', 'FALSE'].includes(unsafe)) {
return false;
}
return escapeHtml(unsafe);
}
function getDataFields(fields) {
return fields.filter(f => !f.get('meta')).toList();
}
function getMetaFields(fields) {
return fields.filter(f => f.get('meta') === true).toList();
}
function createEmptyDraft(collection, search) {
return async (dispatch, getState) => {
const params = new URLSearchParams(search);
params.forEach((value, key) => {
collection = (0, _collections.updateFieldByKey)(collection, key, field => field.set('default', processValue(value)));
});
const fields = collection.get('fields', (0, _immutable.List)());
const dataFields = getDataFields(fields);
const data = createEmptyDraftData(dataFields);
const metaFields = getMetaFields(fields);
const meta = createEmptyDraftData(metaFields);
const state = getState();
const backend = (0, _backend.currentBackend)(state.config);
if (!collection.has('media_folder')) {
await (0, _mediaLibrary.waitForMediaLibraryToLoad)(dispatch, getState());
}
const i18nFields = createEmptyDraftI18nData(collection, dataFields);
let newEntry = (0, _Entry.createEntry)(collection.get('name'), '', '', {
data,
i18n: i18nFields,
mediaFiles: [],
// eslint-disable-next-line @typescript-eslint/no-explicit-any
meta: meta
});
newEntry = await backend.processEntry(state, collection, newEntry);
dispatch(emptyDraftCreated(newEntry));
};
}
function createEmptyDraftData(fields, skipField = () => false) {
return fields.reduce((reduction, value) => {
const acc = reduction;
const item = value;
if (skipField(item)) {
return acc;
}
const subfields = item.get('field') || item.get('fields');
const list = item.get('widget') == 'list';
const name = item.get('name');
const defaultValue = item.get('default', null);
function isEmptyDefaultValue(val) {
return [[{}], {}].some(e => (0, _isEqual2.default)(val, e));
}
const hasSubfields = _immutable.List.isList(subfields) || _immutable.Map.isMap(subfields);
if (hasSubfields) {
if (list && _immutable.List.isList(defaultValue)) {
acc[name] = defaultValue;
} else {
const asList = _immutable.List.isList(subfields) ? subfields : (0, _immutable.List)([subfields]);
const subDefaultValue = list ? [createEmptyDraftData(asList, skipField)] : createEmptyDraftData(asList, skipField);
if (!isEmptyDefaultValue(subDefaultValue)) {
acc[name] = subDefaultValue;
}
}
return acc;
}
if (defaultValue !== null) {
acc[name] = defaultValue;
}
return acc;
}, {});
}
function createEmptyDraftI18nData(collection, dataFields) {
if (!(0, _i18n.hasI18n)(collection)) {
return {};
}
function skipField(field) {
return field.get(_i18n.I18N) !== _i18n.I18N_FIELD.DUPLICATE && field.get(_i18n.I18N) !== _i18n.I18N_FIELD.TRANSLATE;
}
const i18nData = createEmptyDraftData(dataFields, skipField);
return (0, _i18n.duplicateDefaultI18nFields)(collection, i18nData);
}
function getMediaAssets({
entry
}) {
const filesArray = entry.get('mediaFiles').toArray();
const assets = filesArray.filter(file => file.get('draft')).map(file => (0, _AssetProxy.createAssetProxy)({
path: file.get('path'),
file: file.get('file'),
url: file.get('url'),
field: file.get('field')
}));
return assets;
}
function getSerializedEntry(collection, entry) {
/**
* Serialize the values of any fields with registered serializers, and
* update the entry and entryDraft with the serialized values.
*/
const fields = (0, _collections.selectFields)(collection, entry.get('slug'));
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function serializeData(data) {
return (0, _serializeEntryValues.serializeValues)(data, fields);
}
const serializedData = serializeData(entry.get('data'));
let serializedEntry = entry.set('data', serializedData);
if ((0, _i18n.hasI18n)(collection)) {
serializedEntry = (0, _i18n.serializeI18n)(collection, serializedEntry, serializeData);
}
return serializedEntry;
}
function persistEntry(collection) {
return async (dispatch, getState) => {
const state = getState();
const entryDraft = state.entryDraft;
const fieldsErrors = entryDraft.get('fieldsErrors');
const usedSlugs = (0, _reducers.selectPublishedSlugs)(state, collection.get('name'));
// Early return if draft contains validation errors
if (!fieldsErrors.isEmpty()) {
const hasPresenceErrors = fieldsErrors.some(errors => errors.some(error => error.type && error.type === _validationErrorTypes.default.PRESENCE));
if (hasPresenceErrors) {
dispatch((0, _notifications.addNotification)({
message: {
key: 'ui.toast.missingRequiredField'
},
type: 'error',
dismissAfter: 8000
}));
}
return Promise.reject();
}
const backend = (0, _backend.currentBackend)(state.config);
const entry = entryDraft.get('entry');
const assetProxies = getMediaAssets({
entry
});
const serializedEntry = getSerializedEntry(collection, entry);
const serializedEntryDraft = entryDraft.set('entry', serializedEntry);
dispatch(entryPersisting(collection, serializedEntry));
return backend.persistEntry({
config: state.config,
collection,
entryDraft: serializedEntryDraft,
assetProxies,
usedSlugs
}).then(async newSlug => {
dispatch((0, _notifications.addNotification)({
message: {
key: 'ui.toast.entrySaved'
},
type: 'success',
dismissAfter: 4000
}));
// re-load media library if entry had media files
if (assetProxies.length > 0) {
await dispatch((0, _mediaLibrary.loadMedia)());
}
dispatch(entryPersisted(collection, serializedEntry, newSlug));
if (collection.has('nested')) {
await dispatch(loadEntries(collection));
}
if (entry.get('slug') !== newSlug) {
await dispatch(loadEntry(collection, newSlug));
(0, _history.navigateToEntry)(collection.get('name'), newSlug);
}
}).catch(error => {
console.error(error);
dispatch((0, _notifications.addNotification)({
message: {
details: error,
key: 'ui.toast.onFailToPersist'
},
type: 'error',
dismissAfter: 8000
}));
return Promise.reject(dispatch(entryPersistFail(collection, serializedEntry, error)));
});
};
}
function deleteEntry(collection, slug) {
return (dispatch, getState) => {
const state = getState();
const backend = (0, _backend.currentBackend)(state.config);
dispatch(entryDeleting(collection, slug));
return backend.deleteEntry(state, collection, slug).then(() => {
return dispatch(entryDeleted(collection, slug));
}).catch(error => {
dispatch((0, _notifications.addNotification)({
message: {
details: error,
key: 'ui.toast.onFailToDelete'
},
type: 'error',
dismissAfter: 8000
}));
console.error(error);
return Promise.reject(dispatch(entryDeleteFail(collection, slug, error)));
});
};
}
function getPathError(path, key, t) {
return {
error: {
type: _validationErrorTypes.default.CUSTOM,
message: t(`editor.editorControlPane.widget.${key}`, {
path
})
}
};
}
function validateMetaField(state, collection, field, value, t) {
if (field.get('meta') && field.get('name') === 'path') {
var _state$entryDraft;
if (!value) {
return getPathError(value, 'invalidPath', t);
}
const sanitizedPath = value.split('/').map((0, _formatters.getProcessSegment)(state.config.slug)).join('/');
if (value !== sanitizedPath) {
return getPathError(value, 'invalidPath', t);
}
const customPath = (0, _entryDraft.selectCustomPath)(collection, (0, _immutable.fromJS)({
entry: {
meta: {
path: value
}
}
}));
const existingEntry = customPath ? (0, _entries.selectEntryByPath)(state.entries, collection.get('name'), customPath) : undefined;
const existingEntryPath = existingEntry === null || existingEntry === void 0 ? void 0 : existingEntry.get('path');
const draftPath = (_state$entryDraft = state.entryDraft) === null || _state$entryDraft === void 0 ? void 0 : _state$entryDraft.getIn(['entry', 'path']);
if (existingEntryPath && existingEntryPath !== draftPath) {
return getPathError(value, 'pathExists', t);
}
}
return {
error: false
};
}

162
node_modules/decap-cms-core/dist/esm/actions/media.js generated vendored Normal file
View File

@@ -0,0 +1,162 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.REMOVE_ASSET = exports.LOAD_ASSET_SUCCESS = exports.LOAD_ASSET_REQUEST = exports.LOAD_ASSET_FAILURE = exports.ADD_ASSETS = exports.ADD_ASSET = void 0;
exports.addAsset = addAsset;
exports.addAssets = addAssets;
exports.boundGetAsset = boundGetAsset;
exports.getAsset = getAsset;
exports.loadAsset = loadAsset;
exports.loadAssetFailure = loadAssetFailure;
exports.loadAssetRequest = loadAssetRequest;
exports.loadAssetSuccess = loadAssetSuccess;
exports.removeAsset = removeAsset;
var _decapCmsLibUtil = require("decap-cms-lib-util");
var _AssetProxy = require("../valueObjects/AssetProxy");
var _entries = require("../reducers/entries");
var _mediaLibrary = require("../reducers/mediaLibrary");
var _mediaLibrary2 = require("./mediaLibrary");
const ADD_ASSETS = exports.ADD_ASSETS = 'ADD_ASSETS';
const ADD_ASSET = exports.ADD_ASSET = 'ADD_ASSET';
const REMOVE_ASSET = exports.REMOVE_ASSET = 'REMOVE_ASSET';
const LOAD_ASSET_REQUEST = exports.LOAD_ASSET_REQUEST = 'LOAD_ASSET_REQUEST';
const LOAD_ASSET_SUCCESS = exports.LOAD_ASSET_SUCCESS = 'LOAD_ASSET_SUCCESS';
const LOAD_ASSET_FAILURE = exports.LOAD_ASSET_FAILURE = 'LOAD_ASSET_FAILURE';
function addAssets(assets) {
return {
type: ADD_ASSETS,
payload: assets
};
}
function addAsset(assetProxy) {
return {
type: ADD_ASSET,
payload: assetProxy
};
}
function removeAsset(path) {
return {
type: REMOVE_ASSET,
payload: path
};
}
function loadAssetRequest(path) {
return {
type: LOAD_ASSET_REQUEST,
payload: {
path
}
};
}
function loadAssetSuccess(path) {
return {
type: LOAD_ASSET_SUCCESS,
payload: {
path
}
};
}
function loadAssetFailure(path, error) {
return {
type: LOAD_ASSET_FAILURE,
payload: {
path,
error
}
};
}
function loadAsset(resolvedPath) {
return async (dispatch, getState) => {
try {
dispatch(loadAssetRequest(resolvedPath));
// load asset url from backend
await (0, _mediaLibrary2.waitForMediaLibraryToLoad)(dispatch, getState());
const file = (0, _mediaLibrary.selectMediaFileByPath)(getState(), resolvedPath);
if (file) {
const url = await (0, _mediaLibrary2.getMediaDisplayURL)(dispatch, getState(), file);
const asset = (0, _AssetProxy.createAssetProxy)({
path: resolvedPath,
url: url || resolvedPath
});
dispatch(addAsset(asset));
} else {
const {
url
} = await (0, _mediaLibrary2.getMediaFile)(getState(), resolvedPath);
const asset = (0, _AssetProxy.createAssetProxy)({
path: resolvedPath,
url
});
dispatch(addAsset(asset));
}
dispatch(loadAssetSuccess(resolvedPath));
} catch (e) {
dispatch(loadAssetFailure(resolvedPath, e));
}
};
}
const emptyAsset = (0, _AssetProxy.createAssetProxy)({
path: 'empty.svg',
file: new File([`<svg xmlns="http://www.w3.org/2000/svg"></svg>`], 'empty.svg', {
type: 'image/svg+xml'
})
});
function boundGetAsset(dispatch, collection, entry) {
function bound(path, field) {
const asset = dispatch(getAsset({
collection,
entry,
path,
field
}));
return asset;
}
return bound;
}
function getAsset({
collection,
entry,
path,
field
}) {
return (dispatch, getState) => {
if (!path) return emptyAsset;
const state = getState();
const resolvedPath = (0, _entries.selectMediaFilePath)(state.config, collection, entry, path, field);
let {
asset,
isLoading,
error
} = state.medias[resolvedPath] || {};
if (isLoading) {
return emptyAsset;
}
if (asset) {
// There is already an AssetProxy in memory for this path. Use it.
return asset;
}
if ((0, _decapCmsLibUtil.isAbsolutePath)(resolvedPath)) {
// asset path is a public url so we can just use it as is
asset = (0, _AssetProxy.createAssetProxy)({
path: resolvedPath,
url: path
});
dispatch(addAsset(asset));
} else {
if (error) {
// on load error default back to original path
asset = (0, _AssetProxy.createAssetProxy)({
path: resolvedPath,
url: path
});
dispatch(addAsset(asset));
} else {
dispatch(loadAsset(resolvedPath));
asset = emptyAsset;
}
}
return asset;
};
}

View File

@@ -0,0 +1,589 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.MEDIA_REMOVE_INSERTED = exports.MEDIA_PERSIST_SUCCESS = exports.MEDIA_PERSIST_REQUEST = exports.MEDIA_PERSIST_FAILURE = exports.MEDIA_LOAD_SUCCESS = exports.MEDIA_LOAD_REQUEST = exports.MEDIA_LOAD_FAILURE = exports.MEDIA_LIBRARY_OPEN = exports.MEDIA_LIBRARY_CREATE = exports.MEDIA_LIBRARY_CLOSE = exports.MEDIA_INSERT = exports.MEDIA_DISPLAY_URL_SUCCESS = exports.MEDIA_DISPLAY_URL_REQUEST = exports.MEDIA_DISPLAY_URL_FAILURE = exports.MEDIA_DELETE_SUCCESS = exports.MEDIA_DELETE_REQUEST = exports.MEDIA_DELETE_FAILURE = void 0;
exports.clearMediaControl = clearMediaControl;
exports.closeMediaLibrary = closeMediaLibrary;
exports.createMediaLibrary = createMediaLibrary;
exports.deleteMedia = deleteMedia;
exports.getMediaDisplayURL = getMediaDisplayURL;
exports.getMediaFile = getMediaFile;
exports.insertMedia = insertMedia;
exports.loadMedia = loadMedia;
exports.loadMediaDisplayURL = loadMediaDisplayURL;
exports.mediaDeleteFailed = mediaDeleteFailed;
exports.mediaDeleted = mediaDeleted;
exports.mediaDeleting = mediaDeleting;
exports.mediaDisplayURLFailure = mediaDisplayURLFailure;
exports.mediaDisplayURLRequest = mediaDisplayURLRequest;
exports.mediaDisplayURLSuccess = mediaDisplayURLSuccess;
exports.mediaLoadFailed = mediaLoadFailed;
exports.mediaLoaded = mediaLoaded;
exports.mediaLoading = mediaLoading;
exports.mediaPersistFailed = mediaPersistFailed;
exports.mediaPersisted = mediaPersisted;
exports.mediaPersisting = mediaPersisting;
exports.openMediaLibrary = openMediaLibrary;
exports.persistMedia = persistMedia;
exports.removeInsertedMedia = removeInsertedMedia;
exports.removeMediaControl = removeMediaControl;
exports.waitForMediaLibraryToLoad = waitForMediaLibraryToLoad;
var _immutable = require("immutable");
var _decapCmsLibUtil = require("decap-cms-lib-util");
var _backend = require("../backend");
var _AssetProxy = require("../valueObjects/AssetProxy");
var _reducers = require("../reducers");
var _entries = require("../reducers/entries");
var _mediaLibrary = require("../reducers/mediaLibrary");
var _integrations = require("../integrations");
var _media = require("./media");
var _entries2 = require("./entries");
var _urlHelper = require("../lib/urlHelper");
var _waitUntil = require("./waitUntil");
var _notifications = require("./notifications");
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; }
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; }
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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
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); }
const MEDIA_LIBRARY_OPEN = exports.MEDIA_LIBRARY_OPEN = 'MEDIA_LIBRARY_OPEN';
const MEDIA_LIBRARY_CLOSE = exports.MEDIA_LIBRARY_CLOSE = 'MEDIA_LIBRARY_CLOSE';
const MEDIA_LIBRARY_CREATE = exports.MEDIA_LIBRARY_CREATE = 'MEDIA_LIBRARY_CREATE';
const MEDIA_INSERT = exports.MEDIA_INSERT = 'MEDIA_INSERT';
const MEDIA_REMOVE_INSERTED = exports.MEDIA_REMOVE_INSERTED = 'MEDIA_REMOVE_INSERTED';
const MEDIA_LOAD_REQUEST = exports.MEDIA_LOAD_REQUEST = 'MEDIA_LOAD_REQUEST';
const MEDIA_LOAD_SUCCESS = exports.MEDIA_LOAD_SUCCESS = 'MEDIA_LOAD_SUCCESS';
const MEDIA_LOAD_FAILURE = exports.MEDIA_LOAD_FAILURE = 'MEDIA_LOAD_FAILURE';
const MEDIA_PERSIST_REQUEST = exports.MEDIA_PERSIST_REQUEST = 'MEDIA_PERSIST_REQUEST';
const MEDIA_PERSIST_SUCCESS = exports.MEDIA_PERSIST_SUCCESS = 'MEDIA_PERSIST_SUCCESS';
const MEDIA_PERSIST_FAILURE = exports.MEDIA_PERSIST_FAILURE = 'MEDIA_PERSIST_FAILURE';
const MEDIA_DELETE_REQUEST = exports.MEDIA_DELETE_REQUEST = 'MEDIA_DELETE_REQUEST';
const MEDIA_DELETE_SUCCESS = exports.MEDIA_DELETE_SUCCESS = 'MEDIA_DELETE_SUCCESS';
const MEDIA_DELETE_FAILURE = exports.MEDIA_DELETE_FAILURE = 'MEDIA_DELETE_FAILURE';
const MEDIA_DISPLAY_URL_REQUEST = exports.MEDIA_DISPLAY_URL_REQUEST = 'MEDIA_DISPLAY_URL_REQUEST';
const MEDIA_DISPLAY_URL_SUCCESS = exports.MEDIA_DISPLAY_URL_SUCCESS = 'MEDIA_DISPLAY_URL_SUCCESS';
const MEDIA_DISPLAY_URL_FAILURE = exports.MEDIA_DISPLAY_URL_FAILURE = 'MEDIA_DISPLAY_URL_FAILURE';
function createMediaLibrary(instance) {
const api = {
show: instance.show || (() => undefined),
hide: instance.hide || (() => undefined),
onClearControl: instance.onClearControl || (() => undefined),
onRemoveControl: instance.onRemoveControl || (() => undefined),
enableStandalone: instance.enableStandalone || (() => undefined)
};
return {
type: MEDIA_LIBRARY_CREATE,
payload: api
};
}
function clearMediaControl(id) {
return (_dispatch, getState) => {
const state = getState();
const mediaLibrary = state.mediaLibrary.get('externalLibrary');
if (mediaLibrary) {
mediaLibrary.onClearControl({
id
});
}
};
}
function removeMediaControl(id) {
return (_dispatch, getState) => {
const state = getState();
const mediaLibrary = state.mediaLibrary.get('externalLibrary');
if (mediaLibrary) {
mediaLibrary.onRemoveControl({
id
});
}
};
}
function openMediaLibrary(payload = {}) {
return (dispatch, getState) => {
const state = getState();
const mediaLibrary = state.mediaLibrary.get('externalLibrary');
if (mediaLibrary) {
const {
controlID: id,
value,
config = (0, _immutable.Map)(),
allowMultiple,
forImage
} = payload;
mediaLibrary.show({
id,
value,
config: config.toJS(),
allowMultiple,
imagesOnly: forImage
});
}
dispatch(mediaLibraryOpened(payload));
};
}
function closeMediaLibrary() {
return (dispatch, getState) => {
const state = getState();
const mediaLibrary = state.mediaLibrary.get('externalLibrary');
if (mediaLibrary) {
mediaLibrary.hide();
}
dispatch(mediaLibraryClosed());
};
}
function insertMedia(mediaPath, field) {
return (dispatch, getState) => {
const state = getState();
const config = state.config;
const entry = state.entryDraft.get('entry');
const collectionName = state.entryDraft.getIn(['entry', 'collection']);
const collection = state.collections.get(collectionName);
if (Array.isArray(mediaPath)) {
mediaPath = mediaPath.map(path => (0, _entries.selectMediaFilePublicPath)(config, collection, path, entry, field));
} else {
mediaPath = (0, _entries.selectMediaFilePublicPath)(config, collection, mediaPath, entry, field);
}
dispatch(mediaInserted(mediaPath));
};
}
function removeInsertedMedia(controlID) {
return {
type: MEDIA_REMOVE_INSERTED,
payload: {
controlID
}
};
}
function loadMedia(opts = {}) {
const {
delay = 0,
query = '',
page = 1,
privateUpload
} = opts;
return async (dispatch, getState) => {
const state = getState();
const backend = (0, _backend.currentBackend)(state.config);
const integration = (0, _reducers.selectIntegration)(state, null, 'assetStore');
if (integration) {
const provider = (0, _integrations.getIntegrationProvider)(state.integrations, backend.getToken, integration);
dispatch(mediaLoading(page));
try {
const files = await provider.retrieve(query, page, privateUpload);
const mediaLoadedOpts = {
page,
canPaginate: true,
dynamicSearch: true,
dynamicSearchQuery: query,
privateUpload
};
return dispatch(mediaLoaded(files, mediaLoadedOpts));
} catch (error) {
return dispatch(mediaLoadFailed({
privateUpload
}));
}
}
dispatch(mediaLoading(page));
function loadFunction() {
return backend.getMedia().then(files => dispatch(mediaLoaded(files))).catch(error => {
console.error(error);
if (error.status === 404) {
console.log('This 404 was expected and handled appropriately.');
dispatch(mediaLoaded([]));
} else {
dispatch(mediaLoadFailed());
}
});
}
if (delay > 0) {
return new Promise(resolve => {
setTimeout(() => resolve(loadFunction()), delay);
});
} else {
return loadFunction();
}
};
}
function createMediaFileFromAsset({
id,
file,
assetProxy,
draft
}) {
const mediaFile = {
id,
name: (0, _decapCmsLibUtil.basename)(assetProxy.path),
displayURL: assetProxy.url,
draft,
file,
size: file.size,
url: assetProxy.url,
path: assetProxy.path,
field: assetProxy.field
};
return mediaFile;
}
function persistMedia(file, opts = {}) {
const {
privateUpload,
field
} = opts;
return async (dispatch, getState) => {
const state = getState();
const backend = (0, _backend.currentBackend)(state.config);
const integration = (0, _reducers.selectIntegration)(state, null, 'assetStore');
const files = (0, _mediaLibrary.selectMediaFiles)(state, field);
const fileName = (0, _urlHelper.sanitizeSlug)(file.name.toLowerCase(), state.config.slug);
const existingFile = files.find(existingFile => existingFile.name.toLowerCase() === fileName);
const editingDraft = (0, _entries.selectEditingDraft)(state.entryDraft);
/**
* Check for existing files of the same name before persisting. If no asset
* store integration is used, files are being stored in Git, so we can
* expect file names to be unique. If an asset store is in use, file names
* may not be unique, so we forego this check.
*/
if (!integration && existingFile) {
if (!window.confirm(`${existingFile.name} already exists. Do you want to replace it?`)) {
return;
} else {
await dispatch(deleteMedia(existingFile, {
privateUpload
}));
}
}
if (integration || !editingDraft) {
dispatch(mediaPersisting());
}
try {
let assetProxy;
if (integration) {
try {
const provider = (0, _integrations.getIntegrationProvider)(state.integrations, backend.getToken, integration);
const response = await provider.upload(file, privateUpload);
assetProxy = (0, _AssetProxy.createAssetProxy)({
url: response.asset.url,
path: response.asset.url
});
} catch (error) {
assetProxy = (0, _AssetProxy.createAssetProxy)({
file,
path: fileName
});
}
} else if (privateUpload) {
throw new Error('The Private Upload option is only available for Asset Store Integration');
} else {
const entry = state.entryDraft.get('entry');
const collection = state.collections.get(entry === null || entry === void 0 ? void 0 : entry.get('collection'));
const path = (0, _entries.selectMediaFilePath)(state.config, collection, entry, fileName, field);
assetProxy = (0, _AssetProxy.createAssetProxy)({
file,
path,
field
});
}
dispatch((0, _media.addAsset)(assetProxy));
let mediaFile;
if (integration) {
const id = await (0, _decapCmsLibUtil.getBlobSHA)(file);
// integration assets are persisted immediately, thus draft is false
mediaFile = createMediaFileFromAsset({
id,
file,
assetProxy,
draft: false
});
} else if (editingDraft) {
const id = await (0, _decapCmsLibUtil.getBlobSHA)(file);
mediaFile = createMediaFileFromAsset({
id,
file,
assetProxy,
draft: editingDraft
});
return dispatch((0, _entries2.addDraftEntryMediaFile)(mediaFile));
} else {
mediaFile = await backend.persistMedia(state.config, assetProxy);
}
return dispatch(mediaPersisted(mediaFile, {
privateUpload
}));
} catch (error) {
console.error(error);
dispatch((0, _notifications.addNotification)({
message: `Failed to persist media: ${error}`,
type: 'error',
dismissAfter: 8000
}));
return dispatch(mediaPersistFailed({
privateUpload
}));
}
};
}
function deleteMedia(file, opts = {}) {
const {
privateUpload
} = opts;
return async (dispatch, getState) => {
const state = getState();
const backend = (0, _backend.currentBackend)(state.config);
const integration = (0, _reducers.selectIntegration)(state, null, 'assetStore');
if (integration) {
const provider = (0, _integrations.getIntegrationProvider)(state.integrations, backend.getToken, integration);
dispatch(mediaDeleting());
try {
await provider.delete(file.id);
return dispatch(mediaDeleted(file, {
privateUpload
}));
} catch (error) {
console.error(error);
dispatch((0, _notifications.addNotification)({
message: `Failed to delete media: ${error.message}`,
type: 'error',
dismissAfter: 8000
}));
return dispatch(mediaDeleteFailed({
privateUpload
}));
}
}
try {
if (file.draft) {
dispatch((0, _media.removeAsset)(file.path));
dispatch((0, _entries2.removeDraftEntryMediaFile)({
id: file.id
}));
} else {
const editingDraft = (0, _entries.selectEditingDraft)(state.entryDraft);
dispatch(mediaDeleting());
dispatch((0, _media.removeAsset)(file.path));
await backend.deleteMedia(state.config, file.path);
dispatch(mediaDeleted(file));
if (editingDraft) {
dispatch((0, _entries2.removeDraftEntryMediaFile)({
id: file.id
}));
}
}
} catch (error) {
console.error(error);
dispatch((0, _notifications.addNotification)({
message: `Failed to delete media: ${error.message}`,
type: 'error',
dismissAfter: 8000
}));
return dispatch(mediaDeleteFailed());
}
};
}
async function getMediaFile(state, path) {
const backend = (0, _backend.currentBackend)(state.config);
const {
url
} = await backend.getMediaFile(path);
return {
url
};
}
function loadMediaDisplayURL(file) {
return async (dispatch, getState) => {
const {
displayURL,
id
} = file;
const state = getState();
const displayURLState = (0, _mediaLibrary.selectMediaDisplayURL)(state, id);
if (!id || !displayURL || displayURLState.get('url') || displayURLState.get('isFetching') || displayURLState.get('err')) {
return Promise.resolve();
}
if (typeof displayURL === 'string') {
dispatch(mediaDisplayURLRequest(id));
dispatch(mediaDisplayURLSuccess(id, displayURL));
return;
}
try {
const backend = (0, _backend.currentBackend)(state.config);
dispatch(mediaDisplayURLRequest(id));
const newURL = await backend.getMediaDisplayURL(displayURL);
if (newURL) {
dispatch(mediaDisplayURLSuccess(id, newURL));
} else {
throw new Error('No display URL was returned!');
}
} catch (err) {
console.error(err);
dispatch(mediaDisplayURLFailure(id, err));
}
};
}
function mediaLibraryOpened(payload) {
return {
type: MEDIA_LIBRARY_OPEN,
payload
};
}
function mediaLibraryClosed() {
return {
type: MEDIA_LIBRARY_CLOSE
};
}
function mediaInserted(mediaPath) {
return {
type: MEDIA_INSERT,
payload: {
mediaPath
}
};
}
function mediaLoading(page) {
return {
type: MEDIA_LOAD_REQUEST,
payload: {
page
}
};
}
function mediaLoaded(files, opts = {}) {
return {
type: MEDIA_LOAD_SUCCESS,
payload: _objectSpread({
files
}, opts)
};
}
function mediaLoadFailed(opts = {}) {
const {
privateUpload
} = opts;
return {
type: MEDIA_LOAD_FAILURE,
payload: {
privateUpload
}
};
}
function mediaPersisting() {
return {
type: MEDIA_PERSIST_REQUEST
};
}
function mediaPersisted(file, opts = {}) {
const {
privateUpload
} = opts;
return {
type: MEDIA_PERSIST_SUCCESS,
payload: {
file,
privateUpload
}
};
}
function mediaPersistFailed(opts = {}) {
const {
privateUpload
} = opts;
return {
type: MEDIA_PERSIST_FAILURE,
payload: {
privateUpload
}
};
}
function mediaDeleting() {
return {
type: MEDIA_DELETE_REQUEST
};
}
function mediaDeleted(file, opts = {}) {
const {
privateUpload
} = opts;
return {
type: MEDIA_DELETE_SUCCESS,
payload: {
file,
privateUpload
}
};
}
function mediaDeleteFailed(opts = {}) {
const {
privateUpload
} = opts;
return {
type: MEDIA_DELETE_FAILURE,
payload: {
privateUpload
}
};
}
function mediaDisplayURLRequest(key) {
return {
type: MEDIA_DISPLAY_URL_REQUEST,
payload: {
key
}
};
}
function mediaDisplayURLSuccess(key, url) {
return {
type: MEDIA_DISPLAY_URL_SUCCESS,
payload: {
key,
url
}
};
}
function mediaDisplayURLFailure(key, err) {
return {
type: MEDIA_DISPLAY_URL_FAILURE,
payload: {
key,
err
}
};
}
async function waitForMediaLibraryToLoad(dispatch, state) {
if (state.mediaLibrary.get('isLoading') !== false && !state.mediaLibrary.get('externalLibrary')) {
await (0, _waitUntil.waitUntilWithTimeout)(dispatch, resolve => ({
predicate: ({
type
}) => type === MEDIA_LOAD_SUCCESS || type === MEDIA_LOAD_FAILURE,
run: () => resolve()
}));
}
}
async function getMediaDisplayURL(dispatch, state, file) {
const displayURLState = (0, _mediaLibrary.selectMediaDisplayURL)(state, file.id);
let url;
if (displayURLState.get('url')) {
// url was already loaded
url = displayURLState.get('url');
} else if (displayURLState.get('err')) {
// url loading had an error
url = null;
} else {
var _await$promise;
const key = file.id;
const promise = (0, _waitUntil.waitUntilWithTimeout)(dispatch, resolve => ({
predicate: ({
type,
payload
}) => (type === MEDIA_DISPLAY_URL_SUCCESS || type === MEDIA_DISPLAY_URL_FAILURE) && payload.key === key,
run: (_dispatch, _getState, action) => resolve(action.payload.url)
}));
if (!displayURLState.get('isFetching')) {
// load display url
dispatch(loadMediaDisplayURL(file));
}
url = (_await$promise = await promise) !== null && _await$promise !== void 0 ? _await$promise : null;
}
return url;
}

View File

@@ -0,0 +1,29 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.NOTIFICATION_SEND = exports.NOTIFICATION_DISMISS = exports.NOTIFICATIONS_CLEAR = void 0;
exports.addNotification = addNotification;
exports.clearNotifications = clearNotifications;
exports.dismissNotification = dismissNotification;
const NOTIFICATION_SEND = exports.NOTIFICATION_SEND = 'NOTIFICATION_SEND';
const NOTIFICATION_DISMISS = exports.NOTIFICATION_DISMISS = 'NOTIFICATION_DISMISS';
const NOTIFICATIONS_CLEAR = exports.NOTIFICATIONS_CLEAR = 'NOTIFICATION_CLEAR';
function addNotification(notification) {
return {
type: NOTIFICATION_SEND,
payload: notification
};
}
function dismissNotification(id) {
return {
type: NOTIFICATION_DISMISS,
id
};
}
function clearNotifications() {
return {
type: NOTIFICATIONS_CLEAR
};
}

166
node_modules/decap-cms-core/dist/esm/actions/search.js generated vendored Normal file
View File

@@ -0,0 +1,166 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.SEARCH_ENTRIES_SUCCESS = exports.SEARCH_ENTRIES_REQUEST = exports.SEARCH_ENTRIES_FAILURE = exports.SEARCH_CLEAR = exports.QUERY_SUCCESS = exports.QUERY_REQUEST = exports.QUERY_FAILURE = exports.CLEAR_REQUESTS = void 0;
exports.clearRequests = clearRequests;
exports.clearSearch = clearSearch;
exports.query = query;
exports.queryFailure = queryFailure;
exports.querySuccess = querySuccess;
exports.querying = querying;
exports.searchEntries = searchEntries;
exports.searchFailure = searchFailure;
exports.searchSuccess = searchSuccess;
exports.searchingEntries = searchingEntries;
var _isEqual2 = _interopRequireDefault(require("lodash/isEqual"));
var _backend = require("../backend");
var _integrations = require("../integrations");
var _reducers = require("../reducers");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/*
* Constant Declarations
*/
const SEARCH_ENTRIES_REQUEST = exports.SEARCH_ENTRIES_REQUEST = 'SEARCH_ENTRIES_REQUEST';
const SEARCH_ENTRIES_SUCCESS = exports.SEARCH_ENTRIES_SUCCESS = 'SEARCH_ENTRIES_SUCCESS';
const SEARCH_ENTRIES_FAILURE = exports.SEARCH_ENTRIES_FAILURE = 'SEARCH_ENTRIES_FAILURE';
const QUERY_REQUEST = exports.QUERY_REQUEST = 'QUERY_REQUEST';
const QUERY_SUCCESS = exports.QUERY_SUCCESS = 'QUERY_SUCCESS';
const QUERY_FAILURE = exports.QUERY_FAILURE = 'QUERY_FAILURE';
const SEARCH_CLEAR = exports.SEARCH_CLEAR = 'SEARCH_CLEAR';
const CLEAR_REQUESTS = exports.CLEAR_REQUESTS = 'CLEAR_REQUESTS';
/*
* Simple Action Creators (Internal)
* We still need to export them for tests
*/
function searchingEntries(searchTerm, searchCollections, page) {
return {
type: SEARCH_ENTRIES_REQUEST,
payload: {
searchTerm,
searchCollections,
page
}
};
}
function searchSuccess(entries, page) {
return {
type: SEARCH_ENTRIES_SUCCESS,
payload: {
entries,
page
}
};
}
function searchFailure(error) {
return {
type: SEARCH_ENTRIES_FAILURE,
payload: {
error
}
};
}
function querying(searchTerm, request) {
return {
type: QUERY_REQUEST,
payload: {
searchTerm,
request
}
};
}
function querySuccess(namespace, hits) {
return {
type: QUERY_SUCCESS,
payload: {
namespace,
hits
}
};
}
function queryFailure(error) {
return {
type: QUERY_FAILURE,
payload: {
error
}
};
}
/*
* Exported simple Action Creators
*/
function clearSearch() {
return {
type: SEARCH_CLEAR
};
}
function clearRequests() {
return {
type: CLEAR_REQUESTS
};
}
/*
* Exported Thunk Action Creators
*/
// SearchEntries will search for complete entries in all collections.
function searchEntries(searchTerm, searchCollections, page = 0) {
return async (dispatch, getState) => {
const state = getState();
const {
search
} = state;
const backend = (0, _backend.currentBackend)(state.config);
const allCollections = searchCollections || state.collections.keySeq().toArray();
const collections = allCollections.filter(collection => (0, _reducers.selectIntegration)(state, collection, 'search'));
const integration = (0, _reducers.selectIntegration)(state, collections[0], 'search');
// avoid duplicate searches
if (search.isFetching && search.term === searchTerm && (0, _isEqual2.default)(allCollections, search.collections) && (
// if an integration doesn't exist, 'page' is not used
search.page === page || !integration)) {
return;
}
dispatch(searchingEntries(searchTerm, allCollections, page));
const searchPromise = integration ? (0, _integrations.getIntegrationProvider)(state.integrations, backend.getToken, integration).search(collections, searchTerm, page) : backend.search(state.collections.filter((_, key) => allCollections.indexOf(key) !== -1).valueSeq().toArray(), searchTerm);
try {
const response = await searchPromise;
return dispatch(searchSuccess(response.entries, response.pagination));
} catch (error) {
return dispatch(searchFailure(error));
}
};
}
// Instead of searching for complete entries, query will search for specific fields
// in specific collections and return raw data (no entries).
function query(namespace, collectionName, searchFields, searchTerm, file, limit) {
return async (dispatch, getState) => {
const state = getState();
const backend = (0, _backend.currentBackend)(state.config);
const integration = (0, _reducers.selectIntegration)(state, collectionName, 'search');
const collection = state.collections.find(collection => collection.get('name') === collectionName);
dispatch(clearRequests());
const queryIdentifier = `${collectionName}-${searchFields.join()}-${searchTerm}-${file}-${limit}`;
const queuedQueryPromise = state.search.requests.find(({
id
}) => id == queryIdentifier);
const queryPromise = queuedQueryPromise ? queuedQueryPromise.queryResponse : integration ? (0, _integrations.getIntegrationProvider)(state.integrations, backend.getToken, integration).searchBy(searchFields.map(f => `data.${f}`), collectionName, searchTerm) : backend.query(collection, searchFields, searchTerm, file, limit);
dispatch(querying(searchTerm, queuedQueryPromise ? undefined : {
id: queryIdentifier,
expires: new Date(new Date().getTime() + 10 * 1000),
queryResponse: queryPromise
}));
try {
const response = await queryPromise;
return dispatch(querySuccess(namespace, response.hits));
} catch (error) {
return dispatch(queryFailure(error));
}
};
}

90
node_modules/decap-cms-core/dist/esm/actions/status.js generated vendored Normal file
View File

@@ -0,0 +1,90 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.STATUS_SUCCESS = exports.STATUS_REQUEST = exports.STATUS_FAILURE = void 0;
exports.checkBackendStatus = checkBackendStatus;
exports.statusFailure = statusFailure;
exports.statusRequest = statusRequest;
exports.statusSuccess = statusSuccess;
var _backend = require("../backend");
var _notifications = require("./notifications");
const STATUS_REQUEST = exports.STATUS_REQUEST = 'STATUS_REQUEST';
const STATUS_SUCCESS = exports.STATUS_SUCCESS = 'STATUS_SUCCESS';
const STATUS_FAILURE = exports.STATUS_FAILURE = 'STATUS_FAILURE';
function statusRequest() {
return {
type: STATUS_REQUEST
};
}
function statusSuccess(status) {
return {
type: STATUS_SUCCESS,
payload: {
status
}
};
}
function statusFailure(error) {
return {
type: STATUS_FAILURE,
payload: {
error
}
};
}
function checkBackendStatus() {
return async (dispatch, getState) => {
try {
const state = getState();
if (state.status.isFetching) {
return;
}
dispatch(statusRequest());
const backend = (0, _backend.currentBackend)(state.config);
const status = await backend.status();
const backendDownKey = 'ui.toast.onBackendDown';
const previousBackendDownNotifications = state.notifications.notifications.filter(n => {
var _n$message;
return typeof n.message != 'string' && ((_n$message = n.message) === null || _n$message === void 0 ? void 0 : _n$message.key) === backendDownKey;
});
if (status.api.status === false) {
if (previousBackendDownNotifications.length === 0) {
dispatch((0, _notifications.addNotification)({
message: {
details: status.api.statusPage,
key: 'ui.toast.onBackendDown'
},
type: 'error'
}));
}
return dispatch(statusSuccess(status));
} else if (status.api.status === true && previousBackendDownNotifications.length > 0) {
// If backend is up, clear all the danger messages
previousBackendDownNotifications.forEach(notification => {
dispatch((0, _notifications.dismissNotification)(notification.id));
});
}
const authError = status.auth.status === false;
if (authError) {
const key = 'ui.toast.onLoggedOut';
const existingNotification = state.notifications.notifications.find(n => {
var _n$message2;
return typeof n.message != 'string' && ((_n$message2 = n.message) === null || _n$message2 === void 0 ? void 0 : _n$message2.key) === key;
});
if (!existingNotification) {
dispatch((0, _notifications.addNotification)({
message: {
key: 'ui.toast.onLoggedOut'
},
type: 'error'
}));
}
}
dispatch(statusSuccess(status));
} catch (error) {
dispatch(statusFailure(error));
}
};
}

View File

@@ -0,0 +1,39 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.waitUntil = waitUntil;
exports.waitUntilWithTimeout = waitUntilWithTimeout;
var _waitUntilAction = require("../redux/middleware/waitUntilAction");
function waitUntil({
predicate,
run
}) {
return {
type: _waitUntilAction.WAIT_UNTIL_ACTION,
predicate,
run
};
}
async function waitUntilWithTimeout(dispatch, waitActionArgs, timeout = 30000) {
let waitDone = false;
const waitPromise = new Promise(resolve => {
dispatch(waitUntil(waitActionArgs(resolve)));
});
const timeoutPromise = new Promise(resolve => {
setTimeout(() => {
if (waitDone) {
resolve();
} else {
console.warn('Wait Action timed out');
resolve(null);
}
}, timeout);
});
const result = await Promise.race([waitPromise.then(result => {
waitDone = true;
return result;
}).catch(null), timeoutPromise]);
return result;
}

1104
node_modules/decap-cms-core/dist/esm/backend.js generated vendored Normal file

File diff suppressed because it is too large Load Diff

107
node_modules/decap-cms-core/dist/esm/bootstrap.js generated vendored Normal file
View File

@@ -0,0 +1,107 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _client = require("react-dom/client");
var _reactRedux = require("react-redux");
var _reactRouterDom = require("react-router-dom");
var _decapCmsUiDefault = require("decap-cms-ui-default");
var _reactPolyglot = require("react-polyglot");
var _redux = require("./redux");
var _history = require("./routing/history");
var _config = require("./actions/config");
var _auth = require("./actions/auth");
var _phrases = require("./lib/phrases");
var _config2 = require("./reducers/config");
var _UI = require("./components/UI");
var _App = _interopRequireDefault(require("./components/App/App"));
require("./components/EditorWidgets");
require("./mediaLibrary");
require("what-input");
var _react2 = require("@emotion/react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const ROOT_ID = 'nc-root';
function TranslatedApp({
locale,
config
}) {
return (0, _react2.jsx)(_reactPolyglot.I18n, {
locale: locale,
messages: (0, _phrases.getPhrases)(locale)
}, (0, _react2.jsx)(_UI.ErrorBoundary, {
showBackup: true,
config: config
}, (0, _react2.jsx)(_reactRouterDom.Router, {
history: _history.history
}, (0, _react2.jsx)(_reactRouterDom.Route, {
component: _App.default
}))));
}
function mapDispatchToProps(state) {
return {
locale: (0, _config2.selectLocale)(state.config),
config: state.config
};
}
const ConnectedTranslatedApp = (0, _reactRedux.connect)(mapDispatchToProps)(TranslatedApp);
function bootstrap(opts = {}) {
const {
config
} = opts;
/**
* Log the version number.
*/
if (typeof "3.4.2" === 'string') {
console.log(`decap-cms-core ${"3.4.2"}`);
}
/**
* Get DOM element where app will mount.
*/
function getRoot() {
/**
* Return existing root if found.
*/
const existingRoot = document.getElementById(ROOT_ID);
if (existingRoot) {
return existingRoot;
}
/**
* If no existing root, create and return a new root.
*/
const newRoot = document.createElement('div');
newRoot.id = ROOT_ID;
document.body.appendChild(newRoot);
return newRoot;
}
/**
* Dispatch config to store if received. This config will be merged into
* config.yml if it exists, and any portion that produces a conflict will be
* overwritten.
*/
_redux.store.dispatch((0, _config.loadConfig)(config, function onLoad() {
_redux.store.dispatch((0, _auth.authenticateUser)());
}));
/**
* Create connected root component.
*/
function Root() {
return (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)(_decapCmsUiDefault.GlobalStyles, null), (0, _react2.jsx)(_reactRedux.Provider, {
store: _redux.store
}, (0, _react2.jsx)(ConnectedTranslatedApp, null)));
}
/**
* Render application root.
*/
const root = (0, _client.createRoot)(getRoot());
root.render((0, _react2.jsx)(Root, null));
}
var _default = exports.default = bootstrap;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,26 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _base = _interopRequireDefault(require("@emotion/styled/base"));
var _react = _interopRequireDefault(require("react"));
var _reactPolyglot = require("react-polyglot");
var _decapCmsUiDefault = require("decap-cms-ui-default");
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react2 = require("@emotion/react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const NotFoundContainer = /*#__PURE__*/(0, _base.default)("div", {
target: "ew40z3q0",
label: "NotFoundContainer"
})("margin:", _decapCmsUiDefault.lengths.pageMargin, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0FwcC9Ob3RGb3VuZFBhZ2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTW9DIiwiZmlsZSI6Ii4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0FwcC9Ob3RGb3VuZFBhZ2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgdHJhbnNsYXRlIH0gZnJvbSAncmVhY3QtcG9seWdsb3QnO1xuaW1wb3J0IHsgbGVuZ3RocyB9IGZyb20gJ2RlY2FwLWNtcy11aS1kZWZhdWx0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5cbmNvbnN0IE5vdEZvdW5kQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luOiAke2xlbmd0aHMucGFnZU1hcmdpbn07XG5gO1xuXG5mdW5jdGlvbiBOb3RGb3VuZFBhZ2UoeyB0IH0pIHtcbiAgcmV0dXJuIChcbiAgICA8Tm90Rm91bmRDb250YWluZXI+XG4gICAgICA8aDI+e3QoJ2FwcC5ub3RGb3VuZFBhZ2UuaGVhZGVyJyl9PC9oMj5cbiAgICA8L05vdEZvdW5kQ29udGFpbmVyPlxuICApO1xufVxuXG5Ob3RGb3VuZFBhZ2UucHJvcFR5cGVzID0ge1xuICB0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgdHJhbnNsYXRlKCkoTm90Rm91bmRQYWdlKTtcbiJdfQ== */"));
function NotFoundPage({
t
}) {
return (0, _react2.jsx)(NotFoundContainer, null, (0, _react2.jsx)("h2", null, t('app.notFoundPage.header')));
}
NotFoundPage.propTypes = {
t: _propTypes.default.func.isRequired
};
var _default = exports.default = (0, _reactPolyglot.translate)()(NotFoundPage);

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,53 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _base = _interopRequireDefault(require("@emotion/styled/base"));
var _react = _interopRequireDefault(require("react"));
var _decapCmsUiDefault = require("decap-cms-ui-default");
var _ViewStyleControl = _interopRequireDefault(require("./ViewStyleControl"));
var _SortControl = _interopRequireDefault(require("./SortControl"));
var _FilterControl = _interopRequireDefault(require("./FilterControl"));
var _GroupControl = _interopRequireDefault(require("./GroupControl"));
var _react2 = require("@emotion/react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const CollectionControlsContainer = /*#__PURE__*/(0, _base.default)("div", {
target: "emfmed70",
label: "CollectionControlsContainer"
})("display:flex;align-items:center;flex-direction:row-reverse;margin-top:22px;width:", _decapCmsUiDefault.lengths.topCardWidth, ";max-width:100%;&>div{margin-left:6px;}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0NvbGxlY3Rpb24vQ29sbGVjdGlvbkNvbnRyb2xzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVM4QyIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9Db2xsZWN0aW9uL0NvbGxlY3Rpb25Db250cm9scy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBsZW5ndGhzIH0gZnJvbSAnZGVjYXAtY21zLXVpLWRlZmF1bHQnO1xuXG5pbXBvcnQgVmlld1N0eWxlQ29udHJvbCBmcm9tICcuL1ZpZXdTdHlsZUNvbnRyb2wnO1xuaW1wb3J0IFNvcnRDb250cm9sIGZyb20gJy4vU29ydENvbnRyb2wnO1xuaW1wb3J0IEZpbHRlckNvbnRyb2wgZnJvbSAnLi9GaWx0ZXJDb250cm9sJztcbmltcG9ydCBHcm91cENvbnRyb2wgZnJvbSAnLi9Hcm91cENvbnRyb2wnO1xuXG5jb25zdCBDb2xsZWN0aW9uQ29udHJvbHNDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG4gIG1hcmdpbi10b3A6IDIycHg7XG4gIHdpZHRoOiAke2xlbmd0aHMudG9wQ2FyZFdpZHRofTtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuXG4gICYgPiBkaXYge1xuICAgIG1hcmdpbi1sZWZ0OiA2cHg7XG4gIH1cbmA7XG5cbmZ1bmN0aW9uIENvbGxlY3Rpb25Db250cm9scyh7XG4gIHZpZXdTdHlsZSxcbiAgb25DaGFuZ2VWaWV3U3R5bGUsXG4gIHNvcnRhYmxlRmllbGRzLFxuICBvblNvcnRDbGljayxcbiAgc29ydCxcbiAgdmlld0ZpbHRlcnMsXG4gIHZpZXdHcm91cHMsXG4gIG9uRmlsdGVyQ2xpY2ssXG4gIG9uR3JvdXBDbGljayxcbiAgdCxcbiAgZmlsdGVyLFxuICBncm91cCxcbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8Q29sbGVjdGlvbkNvbnRyb2xzQ29udGFpbmVyPlxuICAgICAgPFZpZXdTdHlsZUNvbnRyb2wgdmlld1N0eWxlPXt2aWV3U3R5bGV9IG9uQ2hhbmdlVmlld1N0eWxlPXtvbkNoYW5nZVZpZXdTdHlsZX0gLz5cbiAgICAgIHt2aWV3R3JvdXBzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8R3JvdXBDb250cm9sIHZpZXdHcm91cHM9e3ZpZXdHcm91cHN9IG9uR3JvdXBDbGljaz17b25Hcm91cENsaWNrfSB0PXt0fSBncm91cD17Z3JvdXB9IC8+XG4gICAgICApfVxuICAgICAge3ZpZXdGaWx0ZXJzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8RmlsdGVyQ29udHJvbFxuICAgICAgICAgIHZpZXdGaWx0ZXJzPXt2aWV3RmlsdGVyc31cbiAgICAgICAgICBvbkZpbHRlckNsaWNrPXtvbkZpbHRlckNsaWNrfVxuICAgICAgICAgIHQ9e3R9XG4gICAgICAgICAgZmlsdGVyPXtmaWx0ZXJ9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAge3NvcnRhYmxlRmllbGRzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8U29ydENvbnRyb2wgZmllbGRzPXtzb3J0YWJsZUZpZWxkc30gc29ydD17c29ydH0gb25Tb3J0Q2xpY2s9e29uU29ydENsaWNrfSAvPlxuICAgICAgKX1cbiAgICA8L0NvbGxlY3Rpb25Db250cm9sc0NvbnRhaW5lcj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29sbGVjdGlvbkNvbnRyb2xzO1xuIl19 */"));
function CollectionControls({
viewStyle,
onChangeViewStyle,
sortableFields,
onSortClick,
sort,
viewFilters,
viewGroups,
onFilterClick,
onGroupClick,
t,
filter,
group
}) {
return (0, _react2.jsx)(CollectionControlsContainer, null, (0, _react2.jsx)(_ViewStyleControl.default, {
viewStyle: viewStyle,
onChangeViewStyle: onChangeViewStyle
}), viewGroups.length > 0 && (0, _react2.jsx)(_GroupControl.default, {
viewGroups: viewGroups,
onGroupClick: onGroupClick,
t: t,
group: group
}), viewFilters.length > 0 && (0, _react2.jsx)(_FilterControl.default, {
viewFilters: viewFilters,
onFilterClick: onFilterClick,
t: t,
filter: filter
}), sortableFields.length > 0 && (0, _react2.jsx)(_SortControl.default, {
fields: sortableFields,
sort: sort,
onSortClick: onSortClick
}));
}
var _default = exports.default = CollectionControls;

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,76 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _base = _interopRequireDefault(require("@emotion/styled/base"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _reactImmutableProptypes = _interopRequireDefault(require("react-immutable-proptypes"));
var _react = _interopRequireDefault(require("react"));
var _reactPolyglot = require("react-polyglot");
var _reactRouterDom = require("react-router-dom");
var _decapCmsUiDefault = require("decap-cms-ui-default");
var _react2 = require("@emotion/react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
const CollectionTopContainer = /*#__PURE__*/(0, _base.default)("div", {
target: "ei8nkzc4",
label: "CollectionTopContainer"
})(_decapCmsUiDefault.components.cardTop, ";margin-bottom:22px;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0NvbGxlY3Rpb24vQ29sbGVjdGlvblRvcC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFReUMiLCJmaWxlIjoiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvQ29sbGVjdGlvbi9Db2xsZWN0aW9uVG9wLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBJbW11dGFibGVQcm9wVHlwZXMgZnJvbSAncmVhY3QtaW1tdXRhYmxlLXByb3B0eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgdHJhbnNsYXRlIH0gZnJvbSAncmVhY3QtcG9seWdsb3QnO1xuaW1wb3J0IHsgTGluayB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgY29tcG9uZW50cywgYnV0dG9ucywgc2hhZG93cyB9IGZyb20gJ2RlY2FwLWNtcy11aS1kZWZhdWx0JztcblxuY29uc3QgQ29sbGVjdGlvblRvcENvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gICR7Y29tcG9uZW50cy5jYXJkVG9wfTtcbiAgbWFyZ2luLWJvdHRvbTogMjJweDtcbmA7XG5cbmNvbnN0IENvbGxlY3Rpb25Ub3BSb3cgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5gO1xuXG5jb25zdCBDb2xsZWN0aW9uVG9wSGVhZGluZyA9IHN0eWxlZC5oMWBcbiAgJHtjb21wb25lbnRzLmNhcmRUb3BIZWFkaW5nfTtcbmA7XG5cbmNvbnN0IENvbGxlY3Rpb25Ub3BOZXdCdXR0b24gPSBzdHlsZWQoTGluaylgXG4gICR7YnV0dG9ucy5idXR0b259O1xuICAke3NoYWRvd3MuZHJvcERlZXB9O1xuICAke2J1dHRvbnMuZGVmYXVsdH07XG4gICR7YnV0dG9ucy5ncmF5fTtcblxuICBwYWRkaW5nOiAwIDMwcHg7XG5gO1xuXG5jb25zdCBDb2xsZWN0aW9uVG9wRGVzY3JpcHRpb24gPSBzdHlsZWQucGBcbiAgJHtjb21wb25lbnRzLmNhcmRUb3BEZXNjcmlwdGlvbn07XG4gIG1hcmdpbi1ib3R0b206IDA7XG5gO1xuXG5mdW5jdGlvbiBnZXRDb2xsZWN0aW9uUHJvcHMoY29sbGVjdGlvbikge1xuICBjb25zdCBjb2xsZWN0aW9uTGFiZWwgPSBjb2xsZWN0aW9uLmdldCgnbGFiZWwnKTtcbiAgY29uc3QgY29sbGVjdGlvbkxhYmVsU2luZ3VsYXIgPSBjb2xsZWN0aW9uLmdldCgnbGFiZWxfc2luZ3VsYXInKTtcbiAgY29uc3QgY29sbGVjdGlvbkRlc2NyaXB0aW9uID0gY29sbGVjdGlvbi5nZXQoJ2Rlc2NyaXB0aW9uJyk7XG5cbiAgcmV0dXJuIHtcbiAgICBjb2xsZWN0aW9uTGFiZWwsXG4gICAgY29sbGVjdGlvbkxhYmVsU2luZ3VsYXIsXG4gICAgY29sbGVjdGlvbkRlc2NyaXB0aW9uLFxuICB9O1xufVxuXG5mdW5jdGlvbiBDb2xsZWN0aW9uVG9wKHsgY29sbGVjdGlvbiwgbmV3RW50cnlVcmwsIHQgfSkge1xuICBjb25zdCB7IGNvbGxlY3Rpb25MYWJlbCwgY29sbGVjdGlvbkxhYmVsU2luZ3VsYXIsIGNvbGxlY3Rpb25EZXNjcmlwdGlvbiB9ID0gZ2V0Q29sbGVjdGlvblByb3BzKFxuICAgIGNvbGxlY3Rpb24sXG4gICAgdCxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxDb2xsZWN0aW9uVG9wQ29udGFpbmVyPlxuICAgICAgPENvbGxlY3Rpb25Ub3BSb3c+XG4gICAgICAgIDxDb2xsZWN0aW9uVG9wSGVhZGluZz57Y29sbGVjdGlvbkxhYmVsfTwvQ29sbGVjdGlvblRvcEhlYWRpbmc+XG4gICAgICAgIHtuZXdFbnRyeVVybCA/IChcbiAgICAgICAgICA8Q29sbGVjdGlvblRvcE5ld0J1dHRvbiB0bz17bmV3RW50cnlVcmx9PlxuICAgICAgICAgICAge3QoJ2NvbGxlY3Rpb24uY29sbGVjdGlvblRvcC5uZXdCdXR0b24nLCB7XG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25MYWJlbDogY29sbGVjdGlvbkxhYmVsU2luZ3VsYXIgfHwgY29sbGVjdGlvbkxhYmVsLFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9Db2xsZWN0aW9uVG9wTmV3QnV0dG9uPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvQ29sbGVjdGlvblRvcFJvdz5cbiAgICAgIHtjb2xsZWN0aW9uRGVzY3JpcHRpb24gPyAoXG4gICAgICAgIDxDb2xsZWN0aW9uVG9wRGVzY3JpcHRpb24+e2NvbGxlY3Rpb25EZXNjcmlwdGlvbn08L0NvbGxlY3Rpb25Ub3BEZXNjcmlwdGlvbj5cbiAgICAgICkgOiBudWxsfVxuICAgIDwvQ29sbGVjdGlvblRvcENvbnRhaW5lcj5cbiAgKTtcbn1cblxuQ29sbGVjdGlvblRvcC5wcm9wVHlwZXMgPSB7XG4gIGNvbGxlY3Rpb246IEltbXV0YWJsZVByb3BUeXBlcy5tYXAuaXNSZXF1aXJlZCxcbiAgbmV3RW50cnlVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59O1xuXG5leHBvcnQgZGVmYXVsdCB0cmFuc2xhdGUoKShDb2xsZWN0aW9uVG9wKTtcbiJdfQ== */"));
const CollectionTopRow = /*#__PURE__*/(0, _base.default)("div", {
target: "ei8nkzc3",
label: "CollectionTopRow"
})(process.env.NODE_ENV === "production" ? {
name: "bcffy2",
styles: "display:flex;align-items:center;justify-content:space-between"
} : {
name: "bcffy2",
styles: "display:flex;align-items:center;justify-content:space-between",
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0NvbGxlY3Rpb24vQ29sbGVjdGlvblRvcC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFhbUMiLCJmaWxlIjoiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvQ29sbGVjdGlvbi9Db2xsZWN0aW9uVG9wLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBJbW11dGFibGVQcm9wVHlwZXMgZnJvbSAncmVhY3QtaW1tdXRhYmxlLXByb3B0eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgdHJhbnNsYXRlIH0gZnJvbSAncmVhY3QtcG9seWdsb3QnO1xuaW1wb3J0IHsgTGluayB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgY29tcG9uZW50cywgYnV0dG9ucywgc2hhZG93cyB9IGZyb20gJ2RlY2FwLWNtcy11aS1kZWZhdWx0JztcblxuY29uc3QgQ29sbGVjdGlvblRvcENvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gICR7Y29tcG9uZW50cy5jYXJkVG9wfTtcbiAgbWFyZ2luLWJvdHRvbTogMjJweDtcbmA7XG5cbmNvbnN0IENvbGxlY3Rpb25Ub3BSb3cgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5gO1xuXG5jb25zdCBDb2xsZWN0aW9uVG9wSGVhZGluZyA9IHN0eWxlZC5oMWBcbiAgJHtjb21wb25lbnRzLmNhcmRUb3BIZWFkaW5nfTtcbmA7XG5cbmNvbnN0IENvbGxlY3Rpb25Ub3BOZXdCdXR0b24gPSBzdHlsZWQoTGluaylgXG4gICR7YnV0dG9ucy5idXR0b259O1xuICAke3NoYWRvd3MuZHJvcERlZXB9O1xuICAke2J1dHRvbnMuZGVmYXVsdH07XG4gICR7YnV0dG9ucy5ncmF5fTtcblxuICBwYWRkaW5nOiAwIDMwcHg7XG5gO1xuXG5jb25zdCBDb2xsZWN0aW9uVG9wRGVzY3JpcHRpb24gPSBzdHlsZWQucGBcbiAgJHtjb21wb25lbnRzLmNhcmRUb3BEZXNjcmlwdGlvbn07XG4gIG1hcmdpbi1ib3R0b206IDA7XG5gO1xuXG5mdW5jdGlvbiBnZXRDb2xsZWN0aW9uUHJvcHMoY29sbGVjdGlvbikge1xuICBjb25zdCBjb2xsZWN0aW9uTGFiZWwgPSBjb2xsZWN0aW9uLmdldCgnbGFiZWwnKTtcbiAgY29uc3QgY29sbGVjdGlvbkxhYmVsU2luZ3VsYXIgPSBjb2xsZWN0aW9uLmdldCgnbGFiZWxfc2luZ3VsYXInKTtcbiAgY29uc3QgY29sbGVjdGlvbkRlc2NyaXB0aW9uID0gY29sbGVjdGlvbi5nZXQoJ2Rlc2NyaXB0aW9uJyk7XG5cbiAgcmV0dXJuIHtcbiAgICBjb2xsZWN0aW9uTGFiZWwsXG4gICAgY29sbGVjdGlvbkxhYmVsU2luZ3VsYXIsXG4gICAgY29sbGVjdGlvbkRlc2NyaXB0aW9uLFxuICB9O1xufVxuXG5mdW5jdGlvbiBDb2xsZWN0aW9uVG9wKHsgY29sbGVjdGlvbiwgbmV3RW50cnlVcmwsIHQgfSkge1xuICBjb25zdCB7IGNvbGxlY3Rpb25MYWJlbCwgY29sbGVjdGlvbkxhYmVsU2luZ3VsYXIsIGNvbGxlY3Rpb25EZXNjcmlwdGlvbiB9ID0gZ2V0Q29sbGVjdGlvblByb3BzKFxuICAgIGNvbGxlY3Rpb24sXG4gICAgdCxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxDb2xsZWN0aW9uVG9wQ29udGFpbmVyPlxuICAgICAgPENvbGxlY3Rpb25Ub3BSb3c+XG4gICAgICAgIDxDb2xsZWN0aW9uVG9wSGVhZGluZz57Y29sbGVjdGlvbkxhYmVsfTwvQ29sbGVjdGlvblRvcEhlYWRpbmc+XG4gICAgICAgIHtuZXdFbnRyeVVybCA/IChcbiAgICAgICAgICA8Q29sbGVjdGlvblRvcE5ld0J1dHRvbiB0bz17bmV3RW50cnlVcmx9PlxuICAgICAgICAgICAge3QoJ2NvbGxlY3Rpb24uY29sbGVjdGlvblRvcC5uZXdCdXR0b24nLCB7XG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25MYWJlbDogY29sbGVjdGlvbkxhYmVsU2luZ3VsYXIgfHwgY29sbGVjdGlvbkxhYmVsLFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9Db2xsZWN0aW9uVG9wTmV3QnV0dG9uPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvQ29sbGVjdGlvblRvcFJvdz5cbiAgICAgIHtjb2xsZWN0aW9uRGVzY3JpcHRpb24gPyAoXG4gICAgICAgIDxDb2xsZWN0aW9uVG9wRGVzY3JpcHRpb24+e2NvbGxlY3Rpb25EZXNjcmlwdGlvbn08L0NvbGxlY3Rpb25Ub3BEZXNjcmlwdGlvbj5cbiAgICAgICkgOiBudWxsfVxuICAgIDwvQ29sbGVjdGlvblRvcENvbnRhaW5lcj5cbiAgKTtcbn1cblxuQ29sbGVjdGlvblRvcC5wcm9wVHlwZXMgPSB7XG4gIGNvbGxlY3Rpb246IEltbXV0YWJsZVByb3BUeXBlcy5tYXAuaXNSZXF1aXJlZCxcbiAgbmV3RW50cnlVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59O1xuXG5leHBvcnQgZGVmYXVsdCB0cmFuc2xhdGUoKShDb2xsZWN0aW9uVG9wKTtcbiJdfQ== */",
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
});
const CollectionTopHeading = /*#__PURE__*/(0, _base.default)("h1", {
target: "ei8nkzc2",
label: "CollectionTopHeading"
})(_decapCmsUiDefault.components.cardTopHeading, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0NvbGxlY3Rpb24vQ29sbGVjdGlvblRvcC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQnNDIiwiZmlsZSI6Ii4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0NvbGxlY3Rpb24vQ29sbGVjdGlvblRvcC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgSW1tdXRhYmxlUHJvcFR5cGVzIGZyb20gJ3JlYWN0LWltbXV0YWJsZS1wcm9wdHlwZXMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IHRyYW5zbGF0ZSB9IGZyb20gJ3JlYWN0LXBvbHlnbG90JztcbmltcG9ydCB7IExpbmsgfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IGNvbXBvbmVudHMsIGJ1dHRvbnMsIHNoYWRvd3MgfSBmcm9tICdkZWNhcC1jbXMtdWktZGVmYXVsdCc7XG5cbmNvbnN0IENvbGxlY3Rpb25Ub3BDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICAke2NvbXBvbmVudHMuY2FyZFRvcH07XG4gIG1hcmdpbi1ib3R0b206IDIycHg7XG5gO1xuXG5jb25zdCBDb2xsZWN0aW9uVG9wUm93ID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuYDtcblxuY29uc3QgQ29sbGVjdGlvblRvcEhlYWRpbmcgPSBzdHlsZWQuaDFgXG4gICR7Y29tcG9uZW50cy5jYXJkVG9wSGVhZGluZ307XG5gO1xuXG5jb25zdCBDb2xsZWN0aW9uVG9wTmV3QnV0dG9uID0gc3R5bGVkKExpbmspYFxuICAke2J1dHRvbnMuYnV0dG9ufTtcbiAgJHtzaGFkb3dzLmRyb3BEZWVwfTtcbiAgJHtidXR0b25zLmRlZmF1bHR9O1xuICAke2J1dHRvbnMuZ3JheX07XG5cbiAgcGFkZGluZzogMCAzMHB4O1xuYDtcblxuY29uc3QgQ29sbGVjdGlvblRvcERlc2NyaXB0aW9uID0gc3R5bGVkLnBgXG4gICR7Y29tcG9uZW50cy5jYXJkVG9wRGVzY3JpcHRpb259O1xuICBtYXJnaW4tYm90dG9tOiAwO1xuYDtcblxuZnVuY3Rpb24gZ2V0Q29sbGVjdGlvblByb3BzKGNvbGxlY3Rpb24pIHtcbiAgY29uc3QgY29sbGVjdGlvbkxhYmVsID0gY29sbGVjdGlvbi5nZXQoJ2xhYmVsJyk7XG4gIGNvbnN0IGNvbGxlY3Rpb25MYWJlbFNpbmd1bGFyID0gY29sbGVjdGlvbi5nZXQoJ2xhYmVsX3Npbmd1bGFyJyk7XG4gIGNvbnN0IGNvbGxlY3Rpb25EZXNjcmlwdGlvbiA9IGNvbGxlY3Rpb24uZ2V0KCdkZXNjcmlwdGlvbicpO1xuXG4gIHJldHVybiB7XG4gICAgY29sbGVjdGlvbkxhYmVsLFxuICAgIGNvbGxlY3Rpb25MYWJlbFNpbmd1bGFyLFxuICAgIGNvbGxlY3Rpb25EZXNjcmlwdGlvbixcbiAgfTtcbn1cblxuZnVuY3Rpb24gQ29sbGVjdGlvblRvcCh7IGNvbGxlY3Rpb24sIG5ld0VudHJ5VXJsLCB0IH0pIHtcbiAgY29uc3QgeyBjb2xsZWN0aW9uTGFiZWwsIGNvbGxlY3Rpb25MYWJlbFNpbmd1bGFyLCBjb2xsZWN0aW9uRGVzY3JpcHRpb24gfSA9IGdldENvbGxlY3Rpb25Qcm9wcyhcbiAgICBjb2xsZWN0aW9uLFxuICAgIHQsXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29sbGVjdGlvblRvcENvbnRhaW5lcj5cbiAgICAgIDxDb2xsZWN0aW9uVG9wUm93PlxuICAgICAgICA8Q29sbGVjdGlvblRvcEhlYWRpbmc+e2NvbGxlY3Rpb25MYWJlbH08L0NvbGxlY3Rpb25Ub3BIZWFkaW5nPlxuICAgICAgICB7bmV3RW50cnlVcmwgPyAoXG4gICAgICAgICAgPENvbGxlY3Rpb25Ub3BOZXdCdXR0b24gdG89e25ld0VudHJ5VXJsfT5cbiAgICAgICAgICAgIHt0KCdjb2xsZWN0aW9uLmNvbGxlY3Rpb25Ub3AubmV3QnV0dG9uJywge1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uTGFiZWw6IGNvbGxlY3Rpb25MYWJlbFNpbmd1bGFyIHx8IGNvbGxlY3Rpb25MYWJlbCxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvQ29sbGVjdGlvblRvcE5ld0J1dHRvbj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICA8L0NvbGxlY3Rpb25Ub3BSb3c+XG4gICAgICB7Y29sbGVjdGlvbkRlc2NyaXB0aW9uID8gKFxuICAgICAgICA8Q29sbGVjdGlvblRvcERlc2NyaXB0aW9uPntjb2xsZWN0aW9uRGVzY3JpcHRpb259PC9Db2xsZWN0aW9uVG9wRGVzY3JpcHRpb24+XG4gICAgICApIDogbnVsbH1cbiAgICA8L0NvbGxlY3Rpb25Ub3BDb250YWluZXI+XG4gICk7XG59XG5cbkNvbGxlY3Rpb25Ub3AucHJvcFR5cGVzID0ge1xuICBjb2xsZWN0aW9uOiBJbW11dGFibGVQcm9wVHlwZXMubWFwLmlzUmVxdWlyZWQsXG4gIG5ld0VudHJ5VXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgdHJhbnNsYXRlKCkoQ29sbGVjdGlvblRvcCk7XG4iXX0= */"));
const CollectionTopNewButton = /*#__PURE__*/(0, _base.default)(_reactRouterDom.Link, {
target: "ei8nkzc1",
label: "CollectionTopNewButton"
})(_decapCmsUiDefault.buttons.button, ";", _decapCmsUiDefault.shadows.dropDeep, ";", _decapCmsUiDefault.buttons.default, ";", _decapCmsUiDefault.buttons.gray, ";padding:0 30px;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0NvbGxlY3Rpb24vQ29sbGVjdGlvblRvcC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1QjJDIiwiZmlsZSI6Ii4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0NvbGxlY3Rpb24vQ29sbGVjdGlvblRvcC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgSW1tdXRhYmxlUHJvcFR5cGVzIGZyb20gJ3JlYWN0LWltbXV0YWJsZS1wcm9wdHlwZXMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IHRyYW5zbGF0ZSB9IGZyb20gJ3JlYWN0LXBvbHlnbG90JztcbmltcG9ydCB7IExpbmsgfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IGNvbXBvbmVudHMsIGJ1dHRvbnMsIHNoYWRvd3MgfSBmcm9tICdkZWNhcC1jbXMtdWktZGVmYXVsdCc7XG5cbmNvbnN0IENvbGxlY3Rpb25Ub3BDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICAke2NvbXBvbmVudHMuY2FyZFRvcH07XG4gIG1hcmdpbi1ib3R0b206IDIycHg7XG5gO1xuXG5jb25zdCBDb2xsZWN0aW9uVG9wUm93ID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuYDtcblxuY29uc3QgQ29sbGVjdGlvblRvcEhlYWRpbmcgPSBzdHlsZWQuaDFgXG4gICR7Y29tcG9uZW50cy5jYXJkVG9wSGVhZGluZ307XG5gO1xuXG5jb25zdCBDb2xsZWN0aW9uVG9wTmV3QnV0dG9uID0gc3R5bGVkKExpbmspYFxuICAke2J1dHRvbnMuYnV0dG9ufTtcbiAgJHtzaGFkb3dzLmRyb3BEZWVwfTtcbiAgJHtidXR0b25zLmRlZmF1bHR9O1xuICAke2J1dHRvbnMuZ3JheX07XG5cbiAgcGFkZGluZzogMCAzMHB4O1xuYDtcblxuY29uc3QgQ29sbGVjdGlvblRvcERlc2NyaXB0aW9uID0gc3R5bGVkLnBgXG4gICR7Y29tcG9uZW50cy5jYXJkVG9wRGVzY3JpcHRpb259O1xuICBtYXJnaW4tYm90dG9tOiAwO1xuYDtcblxuZnVuY3Rpb24gZ2V0Q29sbGVjdGlvblByb3BzKGNvbGxlY3Rpb24pIHtcbiAgY29uc3QgY29sbGVjdGlvbkxhYmVsID0gY29sbGVjdGlvbi5nZXQoJ2xhYmVsJyk7XG4gIGNvbnN0IGNvbGxlY3Rpb25MYWJlbFNpbmd1bGFyID0gY29sbGVjdGlvbi5nZXQoJ2xhYmVsX3Npbmd1bGFyJyk7XG4gIGNvbnN0IGNvbGxlY3Rpb25EZXNjcmlwdGlvbiA9IGNvbGxlY3Rpb24uZ2V0KCdkZXNjcmlwdGlvbicpO1xuXG4gIHJldHVybiB7XG4gICAgY29sbGVjdGlvbkxhYmVsLFxuICAgIGNvbGxlY3Rpb25MYWJlbFNpbmd1bGFyLFxuICAgIGNvbGxlY3Rpb25EZXNjcmlwdGlvbixcbiAgfTtcbn1cblxuZnVuY3Rpb24gQ29sbGVjdGlvblRvcCh7IGNvbGxlY3Rpb24sIG5ld0VudHJ5VXJsLCB0IH0pIHtcbiAgY29uc3QgeyBjb2xsZWN0aW9uTGFiZWwsIGNvbGxlY3Rpb25MYWJlbFNpbmd1bGFyLCBjb2xsZWN0aW9uRGVzY3JpcHRpb24gfSA9IGdldENvbGxlY3Rpb25Qcm9wcyhcbiAgICBjb2xsZWN0aW9uLFxuICAgIHQsXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29sbGVjdGlvblRvcENvbnRhaW5lcj5cbiAgICAgIDxDb2xsZWN0aW9uVG9wUm93PlxuICAgICAgICA8Q29sbGVjdGlvblRvcEhlYWRpbmc+e2NvbGxlY3Rpb25MYWJlbH08L0NvbGxlY3Rpb25Ub3BIZWFkaW5nPlxuICAgICAgICB7bmV3RW50cnlVcmwgPyAoXG4gICAgICAgICAgPENvbGxlY3Rpb25Ub3BOZXdCdXR0b24gdG89e25ld0VudHJ5VXJsfT5cbiAgICAgICAgICAgIHt0KCdjb2xsZWN0aW9uLmNvbGxlY3Rpb25Ub3AubmV3QnV0dG9uJywge1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uTGFiZWw6IGNvbGxlY3Rpb25MYWJlbFNpbmd1bGFyIHx8IGNvbGxlY3Rpb25MYWJlbCxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvQ29sbGVjdGlvblRvcE5ld0J1dHRvbj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICA8L0NvbGxlY3Rpb25Ub3BSb3c+XG4gICAgICB7Y29sbGVjdGlvbkRlc2NyaXB0aW9uID8gKFxuICAgICAgICA8Q29sbGVjdGlvblRvcERlc2NyaXB0aW9uPntjb2xsZWN0aW9uRGVzY3JpcHRpb259PC9Db2xsZWN0aW9uVG9wRGVzY3JpcHRpb24+XG4gICAgICApIDogbnVsbH1cbiAgICA8L0NvbGxlY3Rpb25Ub3BDb250YWluZXI+XG4gICk7XG59XG5cbkNvbGxlY3Rpb25Ub3AucHJvcFR5cGVzID0ge1xuICBjb2xsZWN0aW9uOiBJbW11dGFibGVQcm9wVHlwZXMubWFwLmlzUmVxdWlyZWQsXG4gIG5ld0VudHJ5VXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgdHJhbnNsYXRlKCkoQ29sbGVjdGlvblRvcCk7XG4iXX0= */"));
const CollectionTopDescription = /*#__PURE__*/(0, _base.default)("p", {
target: "ei8nkzc0",
label: "CollectionTopDescription"
})(_decapCmsUiDefault.components.cardTopDescription, ";margin-bottom:0;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0NvbGxlY3Rpb24vQ29sbGVjdGlvblRvcC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQ3lDIiwiZmlsZSI6Ii4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0NvbGxlY3Rpb24vQ29sbGVjdGlvblRvcC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgSW1tdXRhYmxlUHJvcFR5cGVzIGZyb20gJ3JlYWN0LWltbXV0YWJsZS1wcm9wdHlwZXMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IHRyYW5zbGF0ZSB9IGZyb20gJ3JlYWN0LXBvbHlnbG90JztcbmltcG9ydCB7IExpbmsgfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IGNvbXBvbmVudHMsIGJ1dHRvbnMsIHNoYWRvd3MgfSBmcm9tICdkZWNhcC1jbXMtdWktZGVmYXVsdCc7XG5cbmNvbnN0IENvbGxlY3Rpb25Ub3BDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICAke2NvbXBvbmVudHMuY2FyZFRvcH07XG4gIG1hcmdpbi1ib3R0b206IDIycHg7XG5gO1xuXG5jb25zdCBDb2xsZWN0aW9uVG9wUm93ID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuYDtcblxuY29uc3QgQ29sbGVjdGlvblRvcEhlYWRpbmcgPSBzdHlsZWQuaDFgXG4gICR7Y29tcG9uZW50cy5jYXJkVG9wSGVhZGluZ307XG5gO1xuXG5jb25zdCBDb2xsZWN0aW9uVG9wTmV3QnV0dG9uID0gc3R5bGVkKExpbmspYFxuICAke2J1dHRvbnMuYnV0dG9ufTtcbiAgJHtzaGFkb3dzLmRyb3BEZWVwfTtcbiAgJHtidXR0b25zLmRlZmF1bHR9O1xuICAke2J1dHRvbnMuZ3JheX07XG5cbiAgcGFkZGluZzogMCAzMHB4O1xuYDtcblxuY29uc3QgQ29sbGVjdGlvblRvcERlc2NyaXB0aW9uID0gc3R5bGVkLnBgXG4gICR7Y29tcG9uZW50cy5jYXJkVG9wRGVzY3JpcHRpb259O1xuICBtYXJnaW4tYm90dG9tOiAwO1xuYDtcblxuZnVuY3Rpb24gZ2V0Q29sbGVjdGlvblByb3BzKGNvbGxlY3Rpb24pIHtcbiAgY29uc3QgY29sbGVjdGlvbkxhYmVsID0gY29sbGVjdGlvbi5nZXQoJ2xhYmVsJyk7XG4gIGNvbnN0IGNvbGxlY3Rpb25MYWJlbFNpbmd1bGFyID0gY29sbGVjdGlvbi5nZXQoJ2xhYmVsX3Npbmd1bGFyJyk7XG4gIGNvbnN0IGNvbGxlY3Rpb25EZXNjcmlwdGlvbiA9IGNvbGxlY3Rpb24uZ2V0KCdkZXNjcmlwdGlvbicpO1xuXG4gIHJldHVybiB7XG4gICAgY29sbGVjdGlvbkxhYmVsLFxuICAgIGNvbGxlY3Rpb25MYWJlbFNpbmd1bGFyLFxuICAgIGNvbGxlY3Rpb25EZXNjcmlwdGlvbixcbiAgfTtcbn1cblxuZnVuY3Rpb24gQ29sbGVjdGlvblRvcCh7IGNvbGxlY3Rpb24sIG5ld0VudHJ5VXJsLCB0IH0pIHtcbiAgY29uc3QgeyBjb2xsZWN0aW9uTGFiZWwsIGNvbGxlY3Rpb25MYWJlbFNpbmd1bGFyLCBjb2xsZWN0aW9uRGVzY3JpcHRpb24gfSA9IGdldENvbGxlY3Rpb25Qcm9wcyhcbiAgICBjb2xsZWN0aW9uLFxuICAgIHQsXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29sbGVjdGlvblRvcENvbnRhaW5lcj5cbiAgICAgIDxDb2xsZWN0aW9uVG9wUm93PlxuICAgICAgICA8Q29sbGVjdGlvblRvcEhlYWRpbmc+e2NvbGxlY3Rpb25MYWJlbH08L0NvbGxlY3Rpb25Ub3BIZWFkaW5nPlxuICAgICAgICB7bmV3RW50cnlVcmwgPyAoXG4gICAgICAgICAgPENvbGxlY3Rpb25Ub3BOZXdCdXR0b24gdG89e25ld0VudHJ5VXJsfT5cbiAgICAgICAgICAgIHt0KCdjb2xsZWN0aW9uLmNvbGxlY3Rpb25Ub3AubmV3QnV0dG9uJywge1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uTGFiZWw6IGNvbGxlY3Rpb25MYWJlbFNpbmd1bGFyIHx8IGNvbGxlY3Rpb25MYWJlbCxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvQ29sbGVjdGlvblRvcE5ld0J1dHRvbj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICA8L0NvbGxlY3Rpb25Ub3BSb3c+XG4gICAgICB7Y29sbGVjdGlvbkRlc2NyaXB0aW9uID8gKFxuICAgICAgICA8Q29sbGVjdGlvblRvcERlc2NyaXB0aW9uPntjb2xsZWN0aW9uRGVzY3JpcHRpb259PC9Db2xsZWN0aW9uVG9wRGVzY3JpcHRpb24+XG4gICAgICApIDogbnVsbH1cbiAgICA8L0NvbGxlY3Rpb25Ub3BDb250YWluZXI+XG4gICk7XG59XG5cbkNvbGxlY3Rpb25Ub3AucHJvcFR5cGVzID0ge1xuICBjb2xsZWN0aW9uOiBJbW11dGFibGVQcm9wVHlwZXMubWFwLmlzUmVxdWlyZWQsXG4gIG5ld0VudHJ5VXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgdHJhbnNsYXRlKCkoQ29sbGVjdGlvblRvcCk7XG4iXX0= */"));
function getCollectionProps(collection) {
const collectionLabel = collection.get('label');
const collectionLabelSingular = collection.get('label_singular');
const collectionDescription = collection.get('description');
return {
collectionLabel,
collectionLabelSingular,
collectionDescription
};
}
function CollectionTop({
collection,
newEntryUrl,
t
}) {
const {
collectionLabel,
collectionLabelSingular,
collectionDescription
} = getCollectionProps(collection, t);
return (0, _react2.jsx)(CollectionTopContainer, null, (0, _react2.jsx)(CollectionTopRow, null, (0, _react2.jsx)(CollectionTopHeading, null, collectionLabel), newEntryUrl ? (0, _react2.jsx)(CollectionTopNewButton, {
to: newEntryUrl
}, t('collection.collectionTop.newButton', {
collectionLabel: collectionLabelSingular || collectionLabel
})) : null), collectionDescription ? (0, _react2.jsx)(CollectionTopDescription, null, collectionDescription) : null);
}
CollectionTop.propTypes = {
collection: _reactImmutableProptypes.default.map.isRequired,
newEntryUrl: _propTypes.default.string,
t: _propTypes.default.func.isRequired
};
var _default = exports.default = (0, _reactPolyglot.translate)()(CollectionTop);

View File

@@ -0,0 +1,23 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ControlButton = ControlButton;
var _base = _interopRequireDefault(require("@emotion/styled/base"));
var _react = _interopRequireDefault(require("react"));
var _react2 = require("@emotion/react");
var _decapCmsUiDefault = require("decap-cms-ui-default");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const Button = /*#__PURE__*/(0, _base.default)(_decapCmsUiDefault.StyledDropdownButton, {
target: "e1obtllk0",
label: "Button"
})(_decapCmsUiDefault.buttons.button, ";", _decapCmsUiDefault.buttons.medium, ";", _decapCmsUiDefault.buttons.grayText, ";font-size:14px;&:after{top:11px;}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0NvbGxlY3Rpb24vQ29udHJvbEJ1dHRvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLMkMiLCJmaWxlIjoiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvQ29sbGVjdGlvbi9Db250cm9sQnV0dG9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IGJ1dHRvbnMsIFN0eWxlZERyb3Bkb3duQnV0dG9uLCBjb2xvcnMgfSBmcm9tICdkZWNhcC1jbXMtdWktZGVmYXVsdCc7XG5cbmNvbnN0IEJ1dHRvbiA9IHN0eWxlZChTdHlsZWREcm9wZG93bkJ1dHRvbilgXG4gICR7YnV0dG9ucy5idXR0b259O1xuICAke2J1dHRvbnMubWVkaXVtfTtcbiAgJHtidXR0b25zLmdyYXlUZXh0fTtcbiAgZm9udC1zaXplOiAxNHB4O1xuXG4gICY6YWZ0ZXIge1xuICAgIHRvcDogMTFweDtcbiAgfVxuYDtcblxuZXhwb3J0IGZ1bmN0aW9uIENvbnRyb2xCdXR0b24oeyBhY3RpdmUsIHRpdGxlIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8QnV0dG9uXG4gICAgICBjc3M9e2Nzc2BcbiAgICAgICAgY29sb3I6ICR7YWN0aXZlID8gY29sb3JzLmFjdGl2ZSA6IHVuZGVmaW5lZH07XG4gICAgICBgfVxuICAgID5cbiAgICAgIHt0aXRsZX1cbiAgICA8L0J1dHRvbj5cbiAgKTtcbn1cbiJdfQ== */"));
function ControlButton({
active,
title
}) {
return (0, _react2.jsx)(Button, {
css: /*#__PURE__*/(0, _react2.css)("color:", active ? _decapCmsUiDefault.colors.active : undefined, ";;label:ControlButton;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0NvbGxlY3Rpb24vQ29udHJvbEJ1dHRvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQmMiLCJmaWxlIjoiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvQ29sbGVjdGlvbi9Db250cm9sQnV0dG9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IGJ1dHRvbnMsIFN0eWxlZERyb3Bkb3duQnV0dG9uLCBjb2xvcnMgfSBmcm9tICdkZWNhcC1jbXMtdWktZGVmYXVsdCc7XG5cbmNvbnN0IEJ1dHRvbiA9IHN0eWxlZChTdHlsZWREcm9wZG93bkJ1dHRvbilgXG4gICR7YnV0dG9ucy5idXR0b259O1xuICAke2J1dHRvbnMubWVkaXVtfTtcbiAgJHtidXR0b25zLmdyYXlUZXh0fTtcbiAgZm9udC1zaXplOiAxNHB4O1xuXG4gICY6YWZ0ZXIge1xuICAgIHRvcDogMTFweDtcbiAgfVxuYDtcblxuZXhwb3J0IGZ1bmN0aW9uIENvbnRyb2xCdXR0b24oeyBhY3RpdmUsIHRpdGxlIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8QnV0dG9uXG4gICAgICBjc3M9e2Nzc2BcbiAgICAgICAgY29sb3I6ICR7YWN0aXZlID8gY29sb3JzLmFjdGl2ZSA6IHVuZGVmaW5lZH07XG4gICAgICBgfVxuICAgID5cbiAgICAgIHt0aXRsZX1cbiAgICA8L0J1dHRvbj5cbiAgKTtcbn1cbiJdfQ== */"))
}, title);
}

View File

@@ -0,0 +1,73 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _base = _interopRequireDefault(require("@emotion/styled/base"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react = _interopRequireDefault(require("react"));
var _reactImmutableProptypes = _interopRequireDefault(require("react-immutable-proptypes"));
var _reactPolyglot = require("react-polyglot");
var _decapCmsUiDefault = require("decap-cms-ui-default");
var _EntryListing = _interopRequireDefault(require("./EntryListing"));
var _react2 = require("@emotion/react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
const PaginationMessage = /*#__PURE__*/(0, _base.default)("div", {
target: "e1d0i3na1",
label: "PaginationMessage"
})("width:", _decapCmsUiDefault.lengths.topCardWidth, ";padding:16px;text-align:center;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0NvbGxlY3Rpb24vRW50cmllcy9FbnRyaWVzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNvQyIsImZpbGUiOiIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9Db2xsZWN0aW9uL0VudHJpZXMvRW50cmllcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IEltbXV0YWJsZVByb3BUeXBlcyBmcm9tICdyZWFjdC1pbW11dGFibGUtcHJvcHR5cGVzJztcbmltcG9ydCB7IHRyYW5zbGF0ZSB9IGZyb20gJ3JlYWN0LXBvbHlnbG90JztcbmltcG9ydCB7IExvYWRlciwgbGVuZ3RocyB9IGZyb20gJ2RlY2FwLWNtcy11aS1kZWZhdWx0JztcblxuaW1wb3J0IEVudHJ5TGlzdGluZyBmcm9tICcuL0VudHJ5TGlzdGluZyc7XG5cbmNvbnN0IFBhZ2luYXRpb25NZXNzYWdlID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6ICR7bGVuZ3Rocy50b3BDYXJkV2lkdGh9O1xuICBwYWRkaW5nOiAxNnB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5gO1xuXG5jb25zdCBOb0VudHJpZXNNZXNzYWdlID0gc3R5bGVkKFBhZ2luYXRpb25NZXNzYWdlKWBcbiAgbWFyZ2luLXRvcDogMTZweDtcbmA7XG5cbmZ1bmN0aW9uIEVudHJpZXMoe1xuICBjb2xsZWN0aW9ucyxcbiAgZW50cmllcyxcbiAgaXNGZXRjaGluZyxcbiAgdmlld1N0eWxlLFxuICBjdXJzb3IsXG4gIGhhbmRsZUN1cnNvckFjdGlvbnMsXG4gIHQsXG4gIHBhZ2UsXG59KSB7XG4gIGNvbnN0IGxvYWRpbmdNZXNzYWdlcyA9IFtcbiAgICB0KCdjb2xsZWN0aW9uLmVudHJpZXMubG9hZGluZ0VudHJpZXMnKSxcbiAgICB0KCdjb2xsZWN0aW9uLmVudHJpZXMuY2FjaGluZ0VudHJpZXMnKSxcbiAgICB0KCdjb2xsZWN0aW9uLmVudHJpZXMubG9uZ2VyTG9hZGluZycpLFxuICBdO1xuXG4gIGlmIChpc0ZldGNoaW5nICYmIHBhZ2UgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiA8TG9hZGVyIGFjdGl2ZT57bG9hZGluZ01lc3NhZ2VzfTwvTG9hZGVyPjtcbiAgfVxuXG4gIGNvbnN0IGhhc0VudHJpZXMgPSAoZW50cmllcyAmJiBlbnRyaWVzLnNpemUgPiAwKSB8fCBjdXJzb3I/LmFjdGlvbnM/LmhhcygnYXBwZW5kX25leHQnKTtcbiAgaWYgKGhhc0VudHJpZXMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPEVudHJ5TGlzdGluZ1xuICAgICAgICAgIGNvbGxlY3Rpb25zPXtjb2xsZWN0aW9uc31cbiAgICAgICAgICBlbnRyaWVzPXtlbnRyaWVzfVxuICAgICAgICAgIHZpZXdTdHlsZT17dmlld1N0eWxlfVxuICAgICAgICAgIGN1cnNvcj17Y3Vyc29yfVxuICAgICAgICAgIGhhbmRsZUN1cnNvckFjdGlvbnM9e2hhbmRsZUN1cnNvckFjdGlvbnN9XG4gICAgICAgICAgcGFnZT17cGFnZX1cbiAgICAgICAgLz5cbiAgICAgICAge2lzRmV0Y2hpbmcgJiYgcGFnZSAhPT0gdW5kZWZpbmVkICYmIGVudHJpZXMuc2l6ZSA+IDAgPyAoXG4gICAgICAgICAgPFBhZ2luYXRpb25NZXNzYWdlPnt0KCdjb2xsZWN0aW9uLmVudHJpZXMubG9hZGluZ0VudHJpZXMnKX08L1BhZ2luYXRpb25NZXNzYWdlPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gPE5vRW50cmllc01lc3NhZ2U+e3QoJ2NvbGxlY3Rpb24uZW50cmllcy5ub0VudHJpZXMnKX08L05vRW50cmllc01lc3NhZ2U+O1xufVxuXG5FbnRyaWVzLnByb3BUeXBlcyA9IHtcbiAgY29sbGVjdGlvbnM6IEltbXV0YWJsZVByb3BUeXBlcy5pdGVyYWJsZS5pc1JlcXVpcmVkLFxuICBlbnRyaWVzOiBJbW11dGFibGVQcm9wVHlwZXMubGlzdCxcbiAgcGFnZTogUHJvcFR5cGVzLm51bWJlcixcbiAgaXNGZXRjaGluZzogUHJvcFR5cGVzLmJvb2wsXG4gIHZpZXdTdHlsZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgY3Vyc29yOiBQcm9wVHlwZXMuYW55LmlzUmVxdWlyZWQsXG4gIGhhbmRsZUN1cnNvckFjdGlvbnM6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59O1xuXG5leHBvcnQgZGVmYXVsdCB0cmFuc2xhdGUoKShFbnRyaWVzKTtcbiJdfQ== */"));
const NoEntriesMessage = /*#__PURE__*/(0, _base.default)(PaginationMessage, {
target: "e1d0i3na0",
label: "NoEntriesMessage"
})(process.env.NODE_ENV === "production" ? {
name: "yz1nei",
styles: "margin-top:16px"
} : {
name: "yz1nei",
styles: "margin-top:16px",
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0NvbGxlY3Rpb24vRW50cmllcy9FbnRyaWVzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWVrRCIsImZpbGUiOiIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9Db2xsZWN0aW9uL0VudHJpZXMvRW50cmllcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IEltbXV0YWJsZVByb3BUeXBlcyBmcm9tICdyZWFjdC1pbW11dGFibGUtcHJvcHR5cGVzJztcbmltcG9ydCB7IHRyYW5zbGF0ZSB9IGZyb20gJ3JlYWN0LXBvbHlnbG90JztcbmltcG9ydCB7IExvYWRlciwgbGVuZ3RocyB9IGZyb20gJ2RlY2FwLWNtcy11aS1kZWZhdWx0JztcblxuaW1wb3J0IEVudHJ5TGlzdGluZyBmcm9tICcuL0VudHJ5TGlzdGluZyc7XG5cbmNvbnN0IFBhZ2luYXRpb25NZXNzYWdlID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6ICR7bGVuZ3Rocy50b3BDYXJkV2lkdGh9O1xuICBwYWRkaW5nOiAxNnB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5gO1xuXG5jb25zdCBOb0VudHJpZXNNZXNzYWdlID0gc3R5bGVkKFBhZ2luYXRpb25NZXNzYWdlKWBcbiAgbWFyZ2luLXRvcDogMTZweDtcbmA7XG5cbmZ1bmN0aW9uIEVudHJpZXMoe1xuICBjb2xsZWN0aW9ucyxcbiAgZW50cmllcyxcbiAgaXNGZXRjaGluZyxcbiAgdmlld1N0eWxlLFxuICBjdXJzb3IsXG4gIGhhbmRsZUN1cnNvckFjdGlvbnMsXG4gIHQsXG4gIHBhZ2UsXG59KSB7XG4gIGNvbnN0IGxvYWRpbmdNZXNzYWdlcyA9IFtcbiAgICB0KCdjb2xsZWN0aW9uLmVudHJpZXMubG9hZGluZ0VudHJpZXMnKSxcbiAgICB0KCdjb2xsZWN0aW9uLmVudHJpZXMuY2FjaGluZ0VudHJpZXMnKSxcbiAgICB0KCdjb2xsZWN0aW9uLmVudHJpZXMubG9uZ2VyTG9hZGluZycpLFxuICBdO1xuXG4gIGlmIChpc0ZldGNoaW5nICYmIHBhZ2UgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiA8TG9hZGVyIGFjdGl2ZT57bG9hZGluZ01lc3NhZ2VzfTwvTG9hZGVyPjtcbiAgfVxuXG4gIGNvbnN0IGhhc0VudHJpZXMgPSAoZW50cmllcyAmJiBlbnRyaWVzLnNpemUgPiAwKSB8fCBjdXJzb3I/LmFjdGlvbnM/LmhhcygnYXBwZW5kX25leHQnKTtcbiAgaWYgKGhhc0VudHJpZXMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPEVudHJ5TGlzdGluZ1xuICAgICAgICAgIGNvbGxlY3Rpb25zPXtjb2xsZWN0aW9uc31cbiAgICAgICAgICBlbnRyaWVzPXtlbnRyaWVzfVxuICAgICAgICAgIHZpZXdTdHlsZT17dmlld1N0eWxlfVxuICAgICAgICAgIGN1cnNvcj17Y3Vyc29yfVxuICAgICAgICAgIGhhbmRsZUN1cnNvckFjdGlvbnM9e2hhbmRsZUN1cnNvckFjdGlvbnN9XG4gICAgICAgICAgcGFnZT17cGFnZX1cbiAgICAgICAgLz5cbiAgICAgICAge2lzRmV0Y2hpbmcgJiYgcGFnZSAhPT0gdW5kZWZpbmVkICYmIGVudHJpZXMuc2l6ZSA+IDAgPyAoXG4gICAgICAgICAgPFBhZ2luYXRpb25NZXNzYWdlPnt0KCdjb2xsZWN0aW9uLmVudHJpZXMubG9hZGluZ0VudHJpZXMnKX08L1BhZ2luYXRpb25NZXNzYWdlPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gPE5vRW50cmllc01lc3NhZ2U+e3QoJ2NvbGxlY3Rpb24uZW50cmllcy5ub0VudHJpZXMnKX08L05vRW50cmllc01lc3NhZ2U+O1xufVxuXG5FbnRyaWVzLnByb3BUeXBlcyA9IHtcbiAgY29sbGVjdGlvbnM6IEltbXV0YWJsZVByb3BUeXBlcy5pdGVyYWJsZS5pc1JlcXVpcmVkLFxuICBlbnRyaWVzOiBJbW11dGFibGVQcm9wVHlwZXMubGlzdCxcbiAgcGFnZTogUHJvcFR5cGVzLm51bWJlcixcbiAgaXNGZXRjaGluZzogUHJvcFR5cGVzLmJvb2wsXG4gIHZpZXdTdHlsZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgY3Vyc29yOiBQcm9wVHlwZXMuYW55LmlzUmVxdWlyZWQsXG4gIGhhbmRsZUN1cnNvckFjdGlvbnM6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59O1xuXG5leHBvcnQgZGVmYXVsdCB0cmFuc2xhdGUoKShFbnRyaWVzKTtcbiJdfQ== */",
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
});
function Entries({
collections,
entries,
isFetching,
viewStyle,
cursor,
handleCursorActions,
t,
page
}) {
var _cursor$actions;
const loadingMessages = [t('collection.entries.loadingEntries'), t('collection.entries.cachingEntries'), t('collection.entries.longerLoading')];
if (isFetching && page === undefined) {
return (0, _react2.jsx)(_decapCmsUiDefault.Loader, {
active: true
}, loadingMessages);
}
const hasEntries = entries && entries.size > 0 || (cursor === null || cursor === void 0 ? void 0 : (_cursor$actions = cursor.actions) === null || _cursor$actions === void 0 ? void 0 : _cursor$actions.has('append_next'));
if (hasEntries) {
return (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)(_EntryListing.default, {
collections: collections,
entries: entries,
viewStyle: viewStyle,
cursor: cursor,
handleCursorActions: handleCursorActions,
page: page
}), isFetching && page !== undefined && entries.size > 0 ? (0, _react2.jsx)(PaginationMessage, null, t('collection.entries.loadingEntries')) : null);
}
return (0, _react2.jsx)(NoEntriesMessage, null, t('collection.entries.noEntries'));
}
Entries.propTypes = {
collections: _reactImmutableProptypes.default.iterable.isRequired,
entries: _reactImmutableProptypes.default.list,
page: _propTypes.default.number,
isFetching: _propTypes.default.bool,
viewStyle: _propTypes.default.string,
cursor: _propTypes.default.any.isRequired,
handleCursorActions: _propTypes.default.func.isRequired,
t: _propTypes.default.func.isRequired
};
var _default = exports.default = (0, _reactPolyglot.translate)()(Entries);

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,116 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _isEqual2 = _interopRequireDefault(require("lodash/isEqual"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _reactImmutableProptypes = _interopRequireDefault(require("react-immutable-proptypes"));
var _reactRedux = require("react-redux");
var _decapCmsLibUtil = require("decap-cms-lib-util");
var _reducers = require("../../../reducers");
var _search = require("../../../actions/search");
var _Entries = _interopRequireDefault(require("./Entries"));
var _react2 = require("@emotion/react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
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); }
class EntriesSearch extends _react.default.Component {
constructor(...args) {
super(...args);
_defineProperty(this, "getCursor", () => {
const {
page
} = this.props;
return _decapCmsLibUtil.Cursor.create({
actions: isNaN(page) ? [] : ['append_next']
});
});
_defineProperty(this, "handleCursorActions", action => {
const {
page,
searchTerm,
searchEntries,
collectionNames
} = this.props;
if (action === 'append_next') {
const nextPage = page + 1;
searchEntries(searchTerm, collectionNames, nextPage);
}
});
}
componentDidMount() {
const {
searchTerm,
searchEntries,
collectionNames
} = this.props;
searchEntries(searchTerm, collectionNames);
}
componentDidUpdate(prevProps) {
const {
searchTerm,
collectionNames
} = this.props;
// check if the search parameters are the same
if (prevProps.searchTerm === searchTerm && (0, _isEqual2.default)(prevProps.collectionNames, collectionNames)) return;
const {
searchEntries
} = prevProps;
searchEntries(searchTerm, collectionNames);
}
componentWillUnmount() {
this.props.clearSearch();
}
render() {
const {
collections,
entries,
isFetching
} = this.props;
return (0, _react2.jsx)(_Entries.default, {
cursor: this.getCursor(),
handleCursorActions: this.handleCursorActions,
collections: collections,
entries: entries,
isFetching: isFetching
});
}
}
_defineProperty(EntriesSearch, "propTypes", {
isFetching: _propTypes.default.bool,
searchEntries: _propTypes.default.func.isRequired,
clearSearch: _propTypes.default.func.isRequired,
searchTerm: _propTypes.default.string.isRequired,
collections: _reactImmutableProptypes.default.seq,
collectionNames: _propTypes.default.array,
entries: _reactImmutableProptypes.default.list,
page: _propTypes.default.number
});
function mapStateToProps(state, ownProps) {
const {
searchTerm
} = ownProps;
const collections = ownProps.collections.toIndexedSeq();
const collectionNames = ownProps.collections.keySeq().toArray();
const isFetching = state.search.isFetching;
const page = state.search.page;
const entries = (0, _reducers.selectSearchedEntries)(state, collectionNames);
return {
isFetching,
page,
collections,
collectionNames,
entries,
searchTerm
};
}
const mapDispatchToProps = {
searchEntries: _search.searchEntries,
clearSearch: _search.clearSearch
};
var _default = exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(EntriesSearch);

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,120 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _base = _interopRequireDefault(require("@emotion/styled/base"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react = _interopRequireDefault(require("react"));
var _reactImmutableProptypes = _interopRequireDefault(require("react-immutable-proptypes"));
var _reactWaypoint = require("react-waypoint");
var _immutable = require("immutable");
var _collections = require("../../../reducers/collections");
var _EntryCard = _interopRequireDefault(require("./EntryCard"));
var _react2 = require("@emotion/react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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); }
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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
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); }
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
const CardsGrid = /*#__PURE__*/(0, _base.default)("ul", {
target: "etq0ss00",
label: "CardsGrid"
})(process.env.NODE_ENV === "production" ? {
name: "1dbthoi",
styles: "display:flex;flex-flow:row wrap;list-style-type:none;margin-left:-12px;margin-top:16px;margin-bottom:16px"
} : {
name: "1dbthoi",
styles: "display:flex;flex-flow:row wrap;list-style-type:none;margin-left:-12px;margin-top:16px;margin-bottom:16px",
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0NvbGxlY3Rpb24vRW50cmllcy9FbnRyeUxpc3RpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVTJCIiwiZmlsZSI6Ii4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0NvbGxlY3Rpb24vRW50cmllcy9FbnRyeUxpc3RpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBJbW11dGFibGVQcm9wVHlwZXMgZnJvbSAncmVhY3QtaW1tdXRhYmxlLXByb3B0eXBlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBXYXlwb2ludCB9IGZyb20gJ3JlYWN0LXdheXBvaW50JztcbmltcG9ydCB7IE1hcCB9IGZyb20gJ2ltbXV0YWJsZSc7XG5cbmltcG9ydCB7IHNlbGVjdEZpZWxkcywgc2VsZWN0SW5mZXJyZWRGaWVsZCB9IGZyb20gJy4uLy4uLy4uL3JlZHVjZXJzL2NvbGxlY3Rpb25zJztcbmltcG9ydCBFbnRyeUNhcmQgZnJvbSAnLi9FbnRyeUNhcmQnO1xuXG5jb25zdCBDYXJkc0dyaWQgPSBzdHlsZWQudWxgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgbWFyZ2luLWxlZnQ6IC0xMnB4O1xuICBtYXJnaW4tdG9wOiAxNnB4O1xuICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuYDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW50cnlMaXN0aW5nIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBjb2xsZWN0aW9uczogSW1tdXRhYmxlUHJvcFR5cGVzLml0ZXJhYmxlLmlzUmVxdWlyZWQsXG4gICAgZW50cmllczogSW1tdXRhYmxlUHJvcFR5cGVzLmxpc3QsXG4gICAgdmlld1N0eWxlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGN1cnNvcjogUHJvcFR5cGVzLmFueS5pc1JlcXVpcmVkLFxuICAgIGhhbmRsZUN1cnNvckFjdGlvbnM6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgcGFnZTogUHJvcFR5cGVzLm51bWJlcixcbiAgfTtcblxuICBoYXNNb3JlID0gKCkgPT4ge1xuICAgIGNvbnN0IGhhc01vcmUgPSB0aGlzLnByb3BzLmN1cnNvcj8uYWN0aW9ucz8uaGFzKCdhcHBlbmRfbmV4dCcpO1xuICAgIHJldHVybiBoYXNNb3JlO1xuICB9O1xuXG4gIGhhbmRsZUxvYWRNb3JlID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLmhhc01vcmUoKSkge1xuICAgICAgdGhpcy5wcm9wcy5oYW5kbGVDdXJzb3JBY3Rpb25zKCdhcHBlbmRfbmV4dCcpO1xuICAgIH1cbiAgfTtcblxuICBpbmZlckZpZWxkcyA9IGNvbGxlY3Rpb24gPT4ge1xuICAgIGNvbnN0IHRpdGxlRmllbGQgPSBzZWxlY3RJbmZlcnJlZEZpZWxkKGNvbGxlY3Rpb24sICd0aXRsZScpO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uRmllbGQgPSBzZWxlY3RJbmZlcnJlZEZpZWxkKGNvbGxlY3Rpb24sICdkZXNjcmlwdGlvbicpO1xuICAgIGNvbnN0IGltYWdlRmllbGQgPSBzZWxlY3RJbmZlcnJlZEZpZWxkKGNvbGxlY3Rpb24sICdpbWFnZScpO1xuICAgIGNvbnN0IGZpZWxkcyA9IHNlbGVjdEZpZWxkcyhjb2xsZWN0aW9uKTtcbiAgICBjb25zdCBpbmZlcnJlZEZpZWxkcyA9IFt0aXRsZUZpZWxkLCBkZXNjcmlwdGlvbkZpZWxkLCBpbWFnZUZpZWxkXTtcbiAgICBjb25zdCByZW1haW5pbmdGaWVsZHMgPVxuICAgICAgZmllbGRzICYmIGZpZWxkcy5maWx0ZXIoZiA9PiBpbmZlcnJlZEZpZWxkcy5pbmRleE9mKGYuZ2V0KCduYW1lJykpID09PSAtMSk7XG4gICAgcmV0dXJuIHsgdGl0bGVGaWVsZCwgZGVzY3JpcHRpb25GaWVsZCwgaW1hZ2VGaWVsZCwgcmVtYWluaW5nRmllbGRzIH07XG4gIH07XG5cbiAgcmVuZGVyQ2FyZHNGb3JTaW5nbGVDb2xsZWN0aW9uID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgY29sbGVjdGlvbnMsIGVudHJpZXMsIHZpZXdTdHlsZSB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBpbmZlcnJlZEZpZWxkcyA9IHRoaXMuaW5mZXJGaWVsZHMoY29sbGVjdGlvbnMpO1xuICAgIGNvbnN0IGVudHJ5Q2FyZFByb3BzID0geyBjb2xsZWN0aW9uOiBjb2xsZWN0aW9ucywgaW5mZXJyZWRGaWVsZHMsIHZpZXdTdHlsZSB9O1xuICAgIHJldHVybiBlbnRyaWVzLm1hcCgoZW50cnksIGlkeCkgPT4gPEVudHJ5Q2FyZCB7Li4uZW50cnlDYXJkUHJvcHN9IGVudHJ5PXtlbnRyeX0ga2V5PXtpZHh9IC8+KTtcbiAgfTtcblxuICByZW5kZXJDYXJkc0Zvck11bHRpcGxlQ29sbGVjdGlvbnMgPSAoKSA9PiB7XG4gICAgY29uc3QgeyBjb2xsZWN0aW9ucywgZW50cmllcyB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBpc1NpbmdsZUNvbGxlY3Rpb25Jbkxpc3QgPSBjb2xsZWN0aW9ucy5zaXplID09PSAxO1xuICAgIHJldHVybiBlbnRyaWVzLm1hcCgoZW50cnksIGlkeCkgPT4ge1xuICAgICAgY29uc3QgY29sbGVjdGlvbk5hbWUgPSBlbnRyeS5nZXQoJ2NvbGxlY3Rpb24nKTtcbiAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBjb2xsZWN0aW9ucy5maW5kKGNvbGwgPT4gY29sbC5nZXQoJ25hbWUnKSA9PT0gY29sbGVjdGlvbk5hbWUpO1xuICAgICAgY29uc3QgY29sbGVjdGlvbkxhYmVsID0gIWlzU2luZ2xlQ29sbGVjdGlvbkluTGlzdCAmJiBjb2xsZWN0aW9uLmdldCgnbGFiZWwnKTtcbiAgICAgIGNvbnN0IGluZmVycmVkRmllbGRzID0gdGhpcy5pbmZlckZpZWxkcyhjb2xsZWN0aW9uKTtcbiAgICAgIGNvbnN0IGVudHJ5Q2FyZFByb3BzID0geyBjb2xsZWN0aW9uLCBlbnRyeSwgaW5mZXJyZWRGaWVsZHMsIGNvbGxlY3Rpb25MYWJlbCB9O1xuICAgICAgcmV0dXJuIDxFbnRyeUNhcmQgey4uLmVudHJ5Q2FyZFByb3BzfSBrZXk9e2lkeH0gLz47XG4gICAgfSk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgY29sbGVjdGlvbnMsIHBhZ2UgfSA9IHRoaXMucHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdj5cbiAgICAgICAgPENhcmRzR3JpZD5cbiAgICAgICAgICB7TWFwLmlzTWFwKGNvbGxlY3Rpb25zKVxuICAgICAgICAgICAgPyB0aGlzLnJlbmRlckNhcmRzRm9yU2luZ2xlQ29sbGVjdGlvbigpXG4gICAgICAgICAgICA6IHRoaXMucmVuZGVyQ2FyZHNGb3JNdWx0aXBsZUNvbGxlY3Rpb25zKCl9XG4gICAgICAgICAge3RoaXMuaGFzTW9yZSgpICYmIDxXYXlwb2ludCBrZXk9e3BhZ2V9IG9uRW50ZXI9e3RoaXMuaGFuZGxlTG9hZE1vcmV9IC8+fVxuICAgICAgICA8L0NhcmRzR3JpZD5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cbiJdfQ== */",
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
});
class EntryListing extends _react.default.Component {
constructor(...args) {
super(...args);
_defineProperty(this, "hasMore", () => {
var _this$props$cursor, _this$props$cursor$ac;
const hasMore = (_this$props$cursor = this.props.cursor) === null || _this$props$cursor === void 0 ? void 0 : (_this$props$cursor$ac = _this$props$cursor.actions) === null || _this$props$cursor$ac === void 0 ? void 0 : _this$props$cursor$ac.has('append_next');
return hasMore;
});
_defineProperty(this, "handleLoadMore", () => {
if (this.hasMore()) {
this.props.handleCursorActions('append_next');
}
});
_defineProperty(this, "inferFields", collection => {
const titleField = (0, _collections.selectInferredField)(collection, 'title');
const descriptionField = (0, _collections.selectInferredField)(collection, 'description');
const imageField = (0, _collections.selectInferredField)(collection, 'image');
const fields = (0, _collections.selectFields)(collection);
const inferredFields = [titleField, descriptionField, imageField];
const remainingFields = fields && fields.filter(f => inferredFields.indexOf(f.get('name')) === -1);
return {
titleField,
descriptionField,
imageField,
remainingFields
};
});
_defineProperty(this, "renderCardsForSingleCollection", () => {
const {
collections,
entries,
viewStyle
} = this.props;
const inferredFields = this.inferFields(collections);
const entryCardProps = {
collection: collections,
inferredFields,
viewStyle
};
return entries.map((entry, idx) => (0, _react2.jsx)(_EntryCard.default, _extends({}, entryCardProps, {
entry: entry,
key: idx
})));
});
_defineProperty(this, "renderCardsForMultipleCollections", () => {
const {
collections,
entries
} = this.props;
const isSingleCollectionInList = collections.size === 1;
return entries.map((entry, idx) => {
const collectionName = entry.get('collection');
const collection = collections.find(coll => coll.get('name') === collectionName);
const collectionLabel = !isSingleCollectionInList && collection.get('label');
const inferredFields = this.inferFields(collection);
const entryCardProps = {
collection,
entry,
inferredFields,
collectionLabel
};
return (0, _react2.jsx)(_EntryCard.default, _extends({}, entryCardProps, {
key: idx
}));
});
});
}
render() {
const {
collections,
page
} = this.props;
return (0, _react2.jsx)("div", null, (0, _react2.jsx)(CardsGrid, null, _immutable.Map.isMap(collections) ? this.renderCardsForSingleCollection() : this.renderCardsForMultipleCollections(), this.hasMore() && (0, _react2.jsx)(_reactWaypoint.Waypoint, {
key: page,
onEnter: this.handleLoadMore
})));
}
}
exports.default = EntryListing;
_defineProperty(EntryListing, "propTypes", {
collections: _reactImmutableProptypes.default.iterable.isRequired,
entries: _reactImmutableProptypes.default.list,
viewStyle: _propTypes.default.string,
cursor: _propTypes.default.any.isRequired,
handleCursorActions: _propTypes.default.func.isRequired,
page: _propTypes.default.number
});

View File

@@ -0,0 +1,40 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _reactPolyglot = require("react-polyglot");
var _decapCmsUiDefault = require("decap-cms-ui-default");
var _ControlButton = require("./ControlButton");
var _react2 = require("@emotion/react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function FilterControl({
viewFilters,
t,
onFilterClick,
filter
}) {
const hasActiveFilter = filter === null || filter === void 0 ? void 0 : filter.valueSeq().toJS().some(f => f.active === true);
return (0, _react2.jsx)(_decapCmsUiDefault.Dropdown, {
renderButton: () => {
return (0, _react2.jsx)(_ControlButton.ControlButton, {
active: hasActiveFilter,
title: t('collection.collectionTop.filterBy')
});
},
closeOnSelection: false,
dropdownTopOverlap: "30px",
dropdownPosition: "left"
}, viewFilters.map(viewFilter => {
return (0, _react2.jsx)(_decapCmsUiDefault.DropdownCheckedItem, {
key: viewFilter.id,
label: viewFilter.label,
id: viewFilter.id,
checked: filter.getIn([viewFilter.id, 'active'], false),
onClick: () => onFilterClick(viewFilter)
});
}));
}
var _default = exports.default = (0, _reactPolyglot.translate)()(FilterControl);

View File

@@ -0,0 +1,40 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _reactPolyglot = require("react-polyglot");
var _decapCmsUiDefault = require("decap-cms-ui-default");
var _ControlButton = require("./ControlButton");
var _react2 = require("@emotion/react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function GroupControl({
viewGroups,
t,
onGroupClick,
group
}) {
const hasActiveGroup = group === null || group === void 0 ? void 0 : group.valueSeq().toJS().some(f => f.active === true);
return (0, _react2.jsx)(_decapCmsUiDefault.Dropdown, {
renderButton: () => {
return (0, _react2.jsx)(_ControlButton.ControlButton, {
active: hasActiveGroup,
title: t('collection.collectionTop.groupBy')
});
},
closeOnSelection: false,
dropdownTopOverlap: "30px",
dropdownWidth: "160px",
dropdownPosition: "left"
}, viewGroups.map(viewGroup => {
return (0, _react2.jsx)(_decapCmsUiDefault.DropdownItem, {
key: viewGroup.id,
label: viewGroup.label,
onClick: () => onGroupClick(viewGroup),
isActive: group.getIn([viewGroup.id, 'active'], false)
});
}));
}
var _default = exports.default = (0, _reactPolyglot.translate)()(GroupControl);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,66 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _reactPolyglot = require("react-polyglot");
var _decapCmsUiDefault = require("decap-cms-ui-default");
var _redux = require("../../types/redux");
var _ControlButton = require("./ControlButton");
var _react2 = require("@emotion/react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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); }
function nextSortDirection(direction) {
switch (direction) {
case _redux.SortDirection.Ascending:
return _redux.SortDirection.Descending;
case _redux.SortDirection.Descending:
return _redux.SortDirection.None;
default:
return _redux.SortDirection.Ascending;
}
}
function sortIconProps(sortDir) {
return {
icon: 'chevron',
iconDirection: sortIconDirections[sortDir],
iconSmall: true
};
}
const sortIconDirections = {
[_redux.SortDirection.Ascending]: 'up',
[_redux.SortDirection.Descending]: 'down'
};
function SortControl({
t,
fields,
onSortClick,
sort
}) {
const hasActiveSort = sort === null || sort === void 0 ? void 0 : sort.valueSeq().toJS().some(s => s.direction !== _redux.SortDirection.None);
return (0, _react2.jsx)(_decapCmsUiDefault.Dropdown, {
renderButton: () => {
return (0, _react2.jsx)(_ControlButton.ControlButton, {
active: hasActiveSort,
title: t('collection.collectionTop.sortBy')
});
},
closeOnSelection: false,
dropdownTopOverlap: "30px",
dropdownWidth: "160px",
dropdownPosition: "left"
}, fields.map(field => {
const sortDir = sort === null || sort === void 0 ? void 0 : sort.getIn([field.key, 'direction']);
const isActive = sortDir && sortDir !== _redux.SortDirection.None;
const nextSortDir = nextSortDirection(sortDir);
return (0, _react2.jsx)(_decapCmsUiDefault.DropdownItem, _extends({
key: field.key,
label: field.label,
onClick: () => onSortClick(field.key, nextSortDir),
isActive: isActive
}, isActive && sortIconProps(sortDir)));
}));
}
var _default = exports.default = (0, _reactPolyglot.translate)()(SortControl);

View File

@@ -0,0 +1,46 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _base = _interopRequireDefault(require("@emotion/styled/base"));
var _react = _interopRequireDefault(require("react"));
var _decapCmsUiDefault = require("decap-cms-ui-default");
var _collectionViews = require("../../constants/collectionViews");
var _react2 = require("@emotion/react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
const ViewControlsSection = /*#__PURE__*/(0, _base.default)("div", {
target: "evv1i7c1",
label: "ViewControlsSection"
})(process.env.NODE_ENV === "production" ? {
name: "k6mob8",
styles: "display:flex;align-items:center;justify-content:flex-end;max-width:500px"
} : {
name: "k6mob8",
styles: "display:flex;align-items:center;justify-content:flex-end;max-width:500px",
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0NvbGxlY3Rpb24vVmlld1N0eWxlQ29udHJvbC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNc0MiLCJmaWxlIjoiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvQ29sbGVjdGlvbi9WaWV3U3R5bGVDb250cm9sLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IEljb24sIGJ1dHRvbnMsIGNvbG9ycyB9IGZyb20gJ2RlY2FwLWNtcy11aS1kZWZhdWx0JztcblxuaW1wb3J0IHsgVklFV19TVFlMRV9MSVNULCBWSUVXX1NUWUxFX0dSSUQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29sbGVjdGlvblZpZXdzJztcblxuY29uc3QgVmlld0NvbnRyb2xzU2VjdGlvbiA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIG1heC13aWR0aDogNTAwcHg7XG5gO1xuXG5jb25zdCBWaWV3Q29udHJvbHNCdXR0b24gPSBzdHlsZWQuYnV0dG9uYFxuICAke2J1dHRvbnMuYnV0dG9ufTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gKHByb3BzLmlzQWN0aXZlID8gY29sb3JzLmFjdGl2ZSA6ICcjYjNiOWM0Jyl9O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMCA0cHg7XG5cbiAgJjpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cblxuICAke0ljb259IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuYDtcblxuZnVuY3Rpb24gVmlld1N0eWxlQ29udHJvbCh7IHZpZXdTdHlsZSwgb25DaGFuZ2VWaWV3U3R5bGUgfSkge1xuICByZXR1cm4gKFxuICAgIDxWaWV3Q29udHJvbHNTZWN0aW9uPlxuICAgICAgPFZpZXdDb250cm9sc0J1dHRvblxuICAgICAgICBpc0FjdGl2ZT17dmlld1N0eWxlID09PSBWSUVXX1NUWUxFX0xJU1R9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uQ2hhbmdlVmlld1N0eWxlKFZJRVdfU1RZTEVfTElTVCl9XG4gICAgICA+XG4gICAgICAgIDxJY29uIHR5cGU9XCJsaXN0XCIgLz5cbiAgICAgIDwvVmlld0NvbnRyb2xzQnV0dG9uPlxuICAgICAgPFZpZXdDb250cm9sc0J1dHRvblxuICAgICAgICBpc0FjdGl2ZT17dmlld1N0eWxlID09PSBWSUVXX1NUWUxFX0dSSUR9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uQ2hhbmdlVmlld1N0eWxlKFZJRVdfU1RZTEVfR1JJRCl9XG4gICAgICA+XG4gICAgICAgIDxJY29uIHR5cGU9XCJncmlkXCIgLz5cbiAgICAgIDwvVmlld0NvbnRyb2xzQnV0dG9uPlxuICAgIDwvVmlld0NvbnRyb2xzU2VjdGlvbj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgVmlld1N0eWxlQ29udHJvbDtcbiJdfQ== */",
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
});
const ViewControlsButton = /*#__PURE__*/(0, _base.default)("button", {
target: "evv1i7c0",
label: "ViewControlsButton"
})(_decapCmsUiDefault.buttons.button, ";color:", props => props.isActive ? _decapCmsUiDefault.colors.active : '#b3b9c4', ";background-color:transparent;display:block;padding:0;margin:0 4px;&:last-child{margin-right:0;}", _decapCmsUiDefault.Icon, "{display:block;}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0NvbGxlY3Rpb24vVmlld1N0eWxlQ29udHJvbC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFhd0MiLCJmaWxlIjoiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvQ29sbGVjdGlvbi9WaWV3U3R5bGVDb250cm9sLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IEljb24sIGJ1dHRvbnMsIGNvbG9ycyB9IGZyb20gJ2RlY2FwLWNtcy11aS1kZWZhdWx0JztcblxuaW1wb3J0IHsgVklFV19TVFlMRV9MSVNULCBWSUVXX1NUWUxFX0dSSUQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29sbGVjdGlvblZpZXdzJztcblxuY29uc3QgVmlld0NvbnRyb2xzU2VjdGlvbiA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIG1heC13aWR0aDogNTAwcHg7XG5gO1xuXG5jb25zdCBWaWV3Q29udHJvbHNCdXR0b24gPSBzdHlsZWQuYnV0dG9uYFxuICAke2J1dHRvbnMuYnV0dG9ufTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gKHByb3BzLmlzQWN0aXZlID8gY29sb3JzLmFjdGl2ZSA6ICcjYjNiOWM0Jyl9O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMCA0cHg7XG5cbiAgJjpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cblxuICAke0ljb259IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuYDtcblxuZnVuY3Rpb24gVmlld1N0eWxlQ29udHJvbCh7IHZpZXdTdHlsZSwgb25DaGFuZ2VWaWV3U3R5bGUgfSkge1xuICByZXR1cm4gKFxuICAgIDxWaWV3Q29udHJvbHNTZWN0aW9uPlxuICAgICAgPFZpZXdDb250cm9sc0J1dHRvblxuICAgICAgICBpc0FjdGl2ZT17dmlld1N0eWxlID09PSBWSUVXX1NUWUxFX0xJU1R9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uQ2hhbmdlVmlld1N0eWxlKFZJRVdfU1RZTEVfTElTVCl9XG4gICAgICA+XG4gICAgICAgIDxJY29uIHR5cGU9XCJsaXN0XCIgLz5cbiAgICAgIDwvVmlld0NvbnRyb2xzQnV0dG9uPlxuICAgICAgPFZpZXdDb250cm9sc0J1dHRvblxuICAgICAgICBpc0FjdGl2ZT17dmlld1N0eWxlID09PSBWSUVXX1NUWUxFX0dSSUR9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uQ2hhbmdlVmlld1N0eWxlKFZJRVdfU1RZTEVfR1JJRCl9XG4gICAgICA+XG4gICAgICAgIDxJY29uIHR5cGU9XCJncmlkXCIgLz5cbiAgICAgIDwvVmlld0NvbnRyb2xzQnV0dG9uPlxuICAgIDwvVmlld0NvbnRyb2xzU2VjdGlvbj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgVmlld1N0eWxlQ29udHJvbDtcbiJdfQ== */"));
function ViewStyleControl({
viewStyle,
onChangeViewStyle
}) {
return (0, _react2.jsx)(ViewControlsSection, null, (0, _react2.jsx)(ViewControlsButton, {
isActive: viewStyle === _collectionViews.VIEW_STYLE_LIST,
onClick: () => onChangeViewStyle(_collectionViews.VIEW_STYLE_LIST)
}, (0, _react2.jsx)(_decapCmsUiDefault.Icon, {
type: "list"
})), (0, _react2.jsx)(ViewControlsButton, {
isActive: viewStyle === _collectionViews.VIEW_STYLE_GRID,
onClick: () => onChangeViewStyle(_collectionViews.VIEW_STYLE_GRID)
}, (0, _react2.jsx)(_decapCmsUiDefault.Icon, {
type: "grid"
})));
}
var _default = exports.default = ViewStyleControl;

View File

@@ -0,0 +1,478 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.Editor = void 0;
var _debounce2 = _interopRequireDefault(require("lodash/debounce"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react = _interopRequireDefault(require("react"));
var _reactImmutableProptypes = _interopRequireDefault(require("react-immutable-proptypes"));
var _reactRedux = require("react-redux");
var _decapCmsUiDefault = require("decap-cms-ui-default");
var _reactPolyglot = require("react-polyglot");
var _history = require("../../routing/history");
var _auth = require("../../actions/auth");
var _entries = require("../../actions/entries");
var _editorialWorkflow = require("../../actions/editorialWorkflow");
var _deploys = require("../../actions/deploys");
var _reducers = require("../../reducers");
var _collections = require("../../reducers/collections");
var _publishModes = require("../../constants/publishModes");
var _EditorInterface = _interopRequireDefault(require("./EditorInterface"));
var _withWorkflow = _interopRequireDefault(require("./withWorkflow"));
var _react2 = require("@emotion/react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
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); }
class Editor extends _react.default.Component {
constructor(...args) {
super(...args);
_defineProperty(this, "createBackup", (0, _debounce2.default)(function (entry, collection) {
this.props.persistLocalBackup(entry, collection);
}, 2000));
_defineProperty(this, "handleChangeDraftField", (field, value, metadata, i18n) => {
const entries = [this.props.unPublishedEntry, this.props.publishedEntry].filter(Boolean);
this.props.changeDraftField({
field,
value,
metadata,
entries,
i18n
});
});
_defineProperty(this, "handleChangeStatus", newStatusName => {
const {
entryDraft,
updateUnpublishedEntryStatus,
collection,
slug,
currentStatus,
t
} = this.props;
if (entryDraft.get('hasChanged')) {
window.alert(t('editor.editor.onUpdatingWithUnsavedChanges'));
return;
}
const newStatus = _publishModes.status.get(newStatusName);
updateUnpublishedEntryStatus(collection.get('name'), slug, currentStatus, newStatus);
});
_defineProperty(this, "handlePersistEntry", async (opts = {}) => {
const {
createNew = false,
duplicate = false
} = opts;
const {
persistEntry,
collection,
currentStatus,
hasWorkflow,
loadEntry,
slug,
createDraftDuplicateFromEntry,
entryDraft
} = this.props;
await persistEntry(collection);
this.deleteBackup();
if (createNew) {
(0, _history.navigateToNewEntry)(collection.get('name'));
duplicate && createDraftDuplicateFromEntry(entryDraft.get('entry'));
} else if (slug && hasWorkflow && !currentStatus) {
loadEntry(collection, slug);
}
});
_defineProperty(this, "handlePublishEntry", async (opts = {}) => {
const {
createNew = false,
duplicate = false
} = opts;
const {
publishUnpublishedEntry,
createDraftDuplicateFromEntry,
entryDraft,
collection,
slug,
currentStatus,
t
} = this.props;
if (currentStatus !== _publishModes.status.last()) {
window.alert(t('editor.editor.onPublishingNotReady'));
return;
} else if (entryDraft.get('hasChanged')) {
window.alert(t('editor.editor.onPublishingWithUnsavedChanges'));
return;
} else if (!window.confirm(t('editor.editor.onPublishing'))) {
return;
}
await publishUnpublishedEntry(collection.get('name'), slug);
this.deleteBackup();
if (createNew) {
(0, _history.navigateToNewEntry)(collection.get('name'));
}
duplicate && createDraftDuplicateFromEntry(entryDraft.get('entry'));
});
_defineProperty(this, "handleUnpublishEntry", async () => {
const {
unpublishPublishedEntry,
collection,
slug,
t
} = this.props;
if (!window.confirm(t('editor.editor.onUnpublishing'))) return;
await unpublishPublishedEntry(collection, slug);
return (0, _history.navigateToCollection)(collection.get('name'));
});
_defineProperty(this, "handleDuplicateEntry", () => {
const {
createDraftDuplicateFromEntry,
collection,
entryDraft
} = this.props;
(0, _history.navigateToNewEntry)(collection.get('name'));
createDraftDuplicateFromEntry(entryDraft.get('entry'));
});
_defineProperty(this, "handleDeleteEntry", () => {
const {
entryDraft,
newEntry,
collection,
deleteEntry,
slug,
t
} = this.props;
if (entryDraft.get('hasChanged')) {
if (!window.confirm(t('editor.editor.onDeleteWithUnsavedChanges'))) {
return;
}
} else if (!window.confirm(t('editor.editor.onDeletePublishedEntry'))) {
return;
}
if (newEntry) {
return (0, _history.navigateToCollection)(collection.get('name'));
}
setTimeout(async () => {
await deleteEntry(collection, slug);
this.deleteBackup();
return (0, _history.navigateToCollection)(collection.get('name'));
}, 0);
});
_defineProperty(this, "handleDeleteUnpublishedChanges", async () => {
const {
entryDraft,
collection,
slug,
deleteUnpublishedEntry,
loadEntry,
isModification,
t
} = this.props;
if (entryDraft.get('hasChanged') && !window.confirm(t('editor.editor.onDeleteUnpublishedChangesWithUnsavedChanges'))) {
return;
} else if (!window.confirm(t('editor.editor.onDeleteUnpublishedChanges'))) {
return;
}
await deleteUnpublishedEntry(collection.get('name'), slug);
this.deleteBackup();
if (isModification) {
loadEntry(collection, slug);
} else {
(0, _history.navigateToCollection)(collection.get('name'));
}
});
}
componentDidMount() {
const {
newEntry,
collection,
slug,
loadEntry,
createEmptyDraft,
loadEntries,
retrieveLocalBackup,
collectionEntriesLoaded,
t
} = this.props;
retrieveLocalBackup(collection, slug);
if (newEntry) {
createEmptyDraft(collection, this.props.location.search);
} else {
loadEntry(collection, slug);
}
const leaveMessage = t('editor.editor.onLeavePage');
this.exitBlocker = event => {
if (this.props.entryDraft.get('hasChanged')) {
// This message is ignored in most browsers, but its presence
// triggers the confirmation dialog
event.returnValue = leaveMessage;
return leaveMessage;
}
};
window.addEventListener('beforeunload', this.exitBlocker);
const navigationBlocker = (location, action) => {
/**
* New entry being saved and redirected to it's new slug based url.
*/
const isPersisting = this.props.entryDraft.getIn(['entry', 'isPersisting']);
const newRecord = this.props.entryDraft.getIn(['entry', 'newRecord']);
const newEntryPath = `/collections/${collection.get('name')}/new`;
if (isPersisting && newRecord && this.props.location.pathname === newEntryPath && action === 'PUSH') {
return;
}
if (this.props.hasChanged) {
return leaveMessage;
}
};
const unblock = _history.history.block(navigationBlocker);
/**
* This will run as soon as the location actually changes, unless creating
* a new post. The confirmation above will run first.
*/
this.unlisten = _history.history.listen((location, action) => {
const newEntryPath = `/collections/${collection.get('name')}/new`;
const entriesPath = `/collections/${collection.get('name')}/entries/`;
const {
pathname
} = location;
if (pathname.startsWith(newEntryPath) || pathname.startsWith(entriesPath) && action === 'PUSH') {
return;
}
this.deleteBackup();
unblock();
this.unlisten();
});
if (!collectionEntriesLoaded) {
loadEntries(collection);
}
}
componentDidUpdate(prevProps) {
if (!prevProps.localBackup && this.props.localBackup) {
const confirmLoadBackup = window.confirm(this.props.t('editor.editor.confirmLoadBackup'));
if (confirmLoadBackup) {
this.props.loadLocalBackup();
} else {
this.deleteBackup();
}
}
if (this.props.hasChanged) {
this.createBackup(this.props.entryDraft.get('entry'), this.props.collection);
}
if (prevProps.entry === this.props.entry) return;
const {
newEntry,
collection
} = this.props;
if (newEntry) {
prevProps.createEmptyDraft(collection, this.props.location.search);
}
}
componentWillUnmount() {
this.createBackup.flush();
this.props.discardDraft();
window.removeEventListener('beforeunload', this.exitBlocker);
}
deleteBackup() {
const {
deleteLocalBackup,
collection,
slug,
newEntry
} = this.props;
this.createBackup.cancel();
deleteLocalBackup(collection, !newEntry && slug);
}
render() {
const {
entry,
entryDraft,
fields,
collection,
changeDraftFieldValidation,
user,
hasChanged,
displayUrl,
hasWorkflow,
useOpenAuthoring,
unpublishedEntry,
newEntry,
isModification,
currentStatus,
logoutUser,
deployPreview,
loadDeployPreview,
draftKey,
slug,
t,
editorBackLink
} = this.props;
const isPublished = !newEntry && !unpublishedEntry;
if (entry && entry.get('error')) {
return (0, _react2.jsx)("div", null, (0, _react2.jsx)("h3", null, entry.get('error')));
} else if (entryDraft == null || entryDraft.get('entry') === undefined || entry && entry.get('isFetching')) {
return (0, _react2.jsx)(_decapCmsUiDefault.Loader, {
active: true
}, t('editor.editor.loadingEntry'));
}
return (0, _react2.jsx)(_EditorInterface.default, {
draftKey: draftKey,
entry: entryDraft.get('entry'),
collection: collection,
fields: fields,
fieldsMetaData: entryDraft.get('fieldsMetaData'),
fieldsErrors: entryDraft.get('fieldsErrors'),
onChange: this.handleChangeDraftField,
onValidate: changeDraftFieldValidation,
onPersist: this.handlePersistEntry,
onDelete: this.handleDeleteEntry,
onDeleteUnpublishedChanges: this.handleDeleteUnpublishedChanges,
onChangeStatus: this.handleChangeStatus,
onPublish: this.handlePublishEntry,
unPublish: this.handleUnpublishEntry,
onDuplicate: this.handleDuplicateEntry,
showDelete: this.props.showDelete,
user: user,
hasChanged: hasChanged,
displayUrl: displayUrl,
hasWorkflow: hasWorkflow,
useOpenAuthoring: useOpenAuthoring,
hasUnpublishedChanges: unpublishedEntry,
isNewEntry: newEntry,
isModification: isModification,
currentStatus: currentStatus,
onLogoutClick: logoutUser,
deployPreview: deployPreview,
loadDeployPreview: opts => loadDeployPreview(collection, slug, entry, isPublished, opts),
editorBackLink: editorBackLink,
t: t
});
}
}
exports.Editor = Editor;
_defineProperty(Editor, "propTypes", {
changeDraftField: _propTypes.default.func.isRequired,
changeDraftFieldValidation: _propTypes.default.func.isRequired,
collection: _reactImmutableProptypes.default.map.isRequired,
createDraftDuplicateFromEntry: _propTypes.default.func.isRequired,
createEmptyDraft: _propTypes.default.func.isRequired,
discardDraft: _propTypes.default.func.isRequired,
entry: _reactImmutableProptypes.default.map,
entryDraft: _reactImmutableProptypes.default.map.isRequired,
loadEntry: _propTypes.default.func.isRequired,
persistEntry: _propTypes.default.func.isRequired,
deleteEntry: _propTypes.default.func.isRequired,
showDelete: _propTypes.default.bool.isRequired,
fields: _reactImmutableProptypes.default.list.isRequired,
slug: _propTypes.default.string,
newEntry: _propTypes.default.bool.isRequired,
displayUrl: _propTypes.default.string,
hasWorkflow: _propTypes.default.bool,
useOpenAuthoring: _propTypes.default.bool,
unpublishedEntry: _propTypes.default.bool,
isModification: _propTypes.default.bool,
collectionEntriesLoaded: _propTypes.default.bool,
updateUnpublishedEntryStatus: _propTypes.default.func.isRequired,
publishUnpublishedEntry: _propTypes.default.func.isRequired,
deleteUnpublishedEntry: _propTypes.default.func.isRequired,
logoutUser: _propTypes.default.func.isRequired,
loadEntries: _propTypes.default.func.isRequired,
deployPreview: _propTypes.default.object,
loadDeployPreview: _propTypes.default.func.isRequired,
currentStatus: _propTypes.default.string,
user: _propTypes.default.object,
location: _propTypes.default.shape({
pathname: _propTypes.default.string,
search: _propTypes.default.string
}),
hasChanged: _propTypes.default.bool,
t: _propTypes.default.func.isRequired,
retrieveLocalBackup: _propTypes.default.func.isRequired,
localBackup: _reactImmutableProptypes.default.map,
loadLocalBackup: _propTypes.default.func,
persistLocalBackup: _propTypes.default.func.isRequired,
deleteLocalBackup: _propTypes.default.func
});
function mapStateToProps(state, ownProps) {
const {
collections,
entryDraft,
auth,
config,
entries,
globalUI
} = state;
const slug = ownProps.match.params[0];
const collection = collections.get(ownProps.match.params.name);
const collectionName = collection.get('name');
const newEntry = ownProps.newRecord === true;
const fields = (0, _collections.selectFields)(collection, slug);
const entry = newEntry ? null : (0, _reducers.selectEntry)(state, collectionName, slug);
const user = auth.user;
const hasChanged = entryDraft.get('hasChanged');
const displayUrl = config.display_url;
const hasWorkflow = config.publish_mode === _publishModes.EDITORIAL_WORKFLOW;
const useOpenAuthoring = globalUI.useOpenAuthoring;
const isModification = entryDraft.getIn(['entry', 'isModification']);
const collectionEntriesLoaded = !!entries.getIn(['pages', collectionName]);
const unPublishedEntry = (0, _reducers.selectUnpublishedEntry)(state, collectionName, slug);
const publishedEntry = (0, _reducers.selectEntry)(state, collectionName, slug);
const currentStatus = unPublishedEntry && unPublishedEntry.get('status');
const deployPreview = (0, _reducers.selectDeployPreview)(state, collectionName, slug);
const localBackup = entryDraft.get('localBackup');
const draftKey = entryDraft.get('key');
let editorBackLink = `/collections/${collectionName}`;
if (new URLSearchParams(ownProps.location.search).get('ref') === 'workflow') {
editorBackLink = `/workflow`;
}
if (collection.has('nested') && slug) {
const pathParts = slug.split('/');
if (pathParts.length > 2) {
editorBackLink = `${editorBackLink}/filter/${pathParts.slice(0, -2).join('/')}`;
}
}
return {
collection,
collections,
newEntry,
entryDraft,
fields,
slug,
entry,
user,
hasChanged,
displayUrl,
hasWorkflow,
useOpenAuthoring,
isModification,
collectionEntriesLoaded,
currentStatus,
deployPreview,
localBackup,
draftKey,
publishedEntry,
unPublishedEntry,
editorBackLink
};
}
const mapDispatchToProps = {
changeDraftField: _entries.changeDraftField,
changeDraftFieldValidation: _entries.changeDraftFieldValidation,
loadEntry: _entries.loadEntry,
loadEntries: _entries.loadEntries,
loadDeployPreview: _deploys.loadDeployPreview,
loadLocalBackup: _entries.loadLocalBackup,
retrieveLocalBackup: _entries.retrieveLocalBackup,
persistLocalBackup: _entries.persistLocalBackup,
deleteLocalBackup: _entries.deleteLocalBackup,
createDraftDuplicateFromEntry: _entries.createDraftDuplicateFromEntry,
createEmptyDraft: _entries.createEmptyDraft,
discardDraft: _entries.discardDraft,
persistEntry: _entries.persistEntry,
deleteEntry: _entries.deleteEntry,
updateUnpublishedEntryStatus: _editorialWorkflow.updateUnpublishedEntryStatus,
publishUnpublishedEntry: _editorialWorkflow.publishUnpublishedEntry,
unpublishPublishedEntry: _editorialWorkflow.unpublishPublishedEntry,
deleteUnpublishedEntry: _editorialWorkflow.deleteUnpublishedEntry,
logoutUser: _auth.logoutUser
};
var _default = exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)((0, _withWorkflow.default)((0, _reactPolyglot.translate)()(Editor)));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,362 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react = _interopRequireWildcard(require("react"));
var _reactImmutableProptypes = _interopRequireDefault(require("react-immutable-proptypes"));
var _immutable = require("immutable");
var _commonTags = require("common-tags");
var _registry = require("../../../lib/registry");
var _validationErrorTypes = _interopRequireDefault(require("../../../constants/validationErrorTypes"));
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
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); }
function truthy() {
return {
error: false
};
}
function isEmpty(value) {
return value === null || value === undefined || Object.prototype.hasOwnProperty.call(value, 'length') && value.length === 0 || value.constructor === Object && Object.keys(value).length === 0 || _immutable.List.isList(value) && value.size === 0;
}
class Widget extends _react.Component {
constructor(...args) {
super(...args);
_defineProperty(this, "processInnerControlRef", ref => {
if (!ref) return;
/**
* If the widget is a container that receives state updates from the store,
* we'll need to get the ref of the actual control via the `react-redux`
* `getWrappedInstance` method. Note that connected widgets must pass
* `withRef: true` to `connect` in the options object.
*/
this.innerWrappedControl = ref.getWrappedInstance ? ref.getWrappedInstance() : ref;
this.wrappedControlValid = this.innerWrappedControl.isValid || truthy;
/**
* Get the `shouldComponentUpdate` method from the wrapped control, and
* provide the control instance is the `this` binding.
*/
const {
shouldComponentUpdate: scu
} = this.innerWrappedControl;
this.wrappedControlShouldComponentUpdate = scu && scu.bind(this.innerWrappedControl);
});
_defineProperty(this, "getValidateValue", () => {
var _this$innerWrappedCon, _this$innerWrappedCon2;
let value = ((_this$innerWrappedCon = this.innerWrappedControl) === null || _this$innerWrappedCon === void 0 ? void 0 : (_this$innerWrappedCon2 = _this$innerWrappedCon.getValidateValue) === null || _this$innerWrappedCon2 === void 0 ? void 0 : _this$innerWrappedCon2.call(_this$innerWrappedCon)) || this.props.value;
// Convert list input widget value to string for validation test
_immutable.List.isList(value) && (value = value.join(','));
return value;
});
_defineProperty(this, "validate", (skipWrapped = false) => {
const value = this.getValidateValue();
const field = this.props.field;
const errors = [];
const validations = [this.validatePresence, this.validatePattern];
if (field.get('meta')) {
validations.push(this.props.validateMetaField);
}
validations.forEach(func => {
const response = func(field, value, this.props.t);
if (response.error) errors.push(response.error);
});
if (skipWrapped) {
if (skipWrapped.error) errors.push(skipWrapped.error);
} else {
const wrappedError = this.validateWrappedControl(field);
if (wrappedError.error) errors.push(wrappedError.error);
}
this.props.onValidate(errors);
});
_defineProperty(this, "validatePresence", (field, value) => {
const {
t,
parentIds
} = this.props;
const isRequired = field.get('required', true);
if (isRequired && isEmpty(value)) {
const error = {
type: _validationErrorTypes.default.PRESENCE,
parentIds,
message: t('editor.editorControlPane.widget.required', {
fieldLabel: field.get('label', field.get('name'))
})
};
return {
error
};
}
return {
error: false
};
});
_defineProperty(this, "validatePattern", (field, value) => {
const {
t,
parentIds
} = this.props;
const pattern = field.get('pattern', false);
if (isEmpty(value)) {
return {
error: false
};
}
if (pattern && !RegExp(pattern.first()).test(value)) {
const error = {
type: _validationErrorTypes.default.PATTERN,
parentIds,
message: t('editor.editorControlPane.widget.regexPattern', {
fieldLabel: field.get('label', field.get('name')),
pattern: pattern.last()
})
};
return {
error
};
}
return {
error: false
};
});
_defineProperty(this, "validateWrappedControl", field => {
const {
t,
parentIds
} = this.props;
if (typeof this.wrappedControlValid !== 'function') {
throw new Error((0, _commonTags.oneLine)`
this.wrappedControlValid is not a function. Are you sure widget
"${field.get('widget')}" is registered?
`);
}
const response = this.wrappedControlValid();
if (typeof response === 'boolean') {
const isValid = response;
return {
error: !isValid
};
} else if (Object.prototype.hasOwnProperty.call(response, 'error')) {
return response;
} else if (response instanceof Promise) {
response.then(() => {
this.validate({
error: false
});
}, err => {
const error = {
type: _validationErrorTypes.default.CUSTOM,
message: `${field.get('label', field.get('name'))} - ${err}.`
};
this.validate({
error
});
});
const error = {
type: _validationErrorTypes.default.CUSTOM,
parentIds,
message: t('editor.editorControlPane.widget.processing', {
fieldLabel: field.get('label', field.get('name'))
})
};
return {
error
};
}
return {
error: false
};
});
/**
* In case the `onChangeObject` function is frozen by a child widget implementation,
* e.g. when debounced, always get the latest object value instead of using
* `this.props.value` directly.
*/
_defineProperty(this, "getObjectValue", () => this.props.value || (0, _immutable.Map)());
/**
* Change handler for fields that are nested within another field.
*/
_defineProperty(this, "onChangeObject", (field, newValue, newMetadata) => {
const newObjectValue = this.getObjectValue().set(field.get('name'), newValue);
return this.props.onChange(newObjectValue, newMetadata && {
[this.props.field.get('name')]: newMetadata
});
});
_defineProperty(this, "setInactiveStyle", () => {
this.props.setInactiveStyle();
if (this.props.field.has('pattern') && !isEmpty(this.getValidateValue())) {
this.validate();
}
});
}
shouldComponentUpdate(nextProps) {
/**
* Avoid unnecessary rerenders while loading assets.
*/
if (this.props.isLoadingAsset && nextProps.isLoadingAsset) return false;
/**
* Allow widgets to provide their own `shouldComponentUpdate` method.
*/
if (this.wrappedControlShouldComponentUpdate) {
return this.wrappedControlShouldComponentUpdate(nextProps);
}
return this.props.value !== nextProps.value || this.props.classNameWrapper !== nextProps.classNameWrapper || this.props.hasActiveStyle !== nextProps.hasActiveStyle;
}
render() {
const {
controlComponent,
entry,
collection,
config,
field,
value,
mediaPaths,
metadata,
onChange,
onValidateObject,
onOpenMediaLibrary,
onRemoveMediaControl,
onPersistMedia,
onClearMediaControl,
onAddAsset,
onRemoveInsertedMedia,
getAsset,
classNameWrapper,
classNameWidget,
classNameWidgetActive,
classNameLabel,
classNameLabelActive,
setActiveStyle,
hasActiveStyle,
editorControl,
uniqueFieldId,
resolveWidget,
widget,
getEditorComponents,
query,
queryHits,
clearSearch,
clearFieldErrors,
isFetching,
loadEntry,
fieldsErrors,
controlRef,
isEditorComponent,
isNewEditorComponent,
parentIds,
t,
isDisabled,
isFieldDuplicate,
isFieldHidden,
locale,
isParentListCollapsed
} = this.props;
return /*#__PURE__*/_react.default.createElement(controlComponent, {
entry,
collection,
config,
field,
value,
mediaPaths,
metadata,
onChange,
onChangeObject: this.onChangeObject,
onValidateObject,
onOpenMediaLibrary,
onClearMediaControl,
onRemoveMediaControl,
onPersistMedia,
onAddAsset,
onRemoveInsertedMedia,
getAsset,
forID: uniqueFieldId,
ref: this.processInnerControlRef,
validate: this.validate,
classNameWrapper,
classNameWidget,
classNameWidgetActive,
classNameLabel,
classNameLabelActive,
setActiveStyle,
setInactiveStyle: () => this.setInactiveStyle(),
hasActiveStyle,
editorControl,
resolveWidget,
widget,
getEditorComponents,
getRemarkPlugins: _registry.getRemarkPlugins,
query,
queryHits,
clearSearch,
clearFieldErrors,
isFetching,
loadEntry,
isEditorComponent,
isNewEditorComponent,
fieldsErrors,
controlRef,
parentIds,
t,
isDisabled,
isFieldDuplicate,
isFieldHidden,
locale,
isParentListCollapsed
});
}
}
exports.default = Widget;
_defineProperty(Widget, "propTypes", {
controlComponent: _propTypes.default.func.isRequired,
field: _reactImmutableProptypes.default.map.isRequired,
hasActiveStyle: _propTypes.default.bool,
setActiveStyle: _propTypes.default.func.isRequired,
setInactiveStyle: _propTypes.default.func.isRequired,
classNameWrapper: _propTypes.default.string.isRequired,
classNameWidget: _propTypes.default.string.isRequired,
classNameWidgetActive: _propTypes.default.string.isRequired,
classNameLabel: _propTypes.default.string.isRequired,
classNameLabelActive: _propTypes.default.string.isRequired,
value: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.object, _propTypes.default.string, _propTypes.default.bool]),
mediaPaths: _reactImmutableProptypes.default.map.isRequired,
metadata: _reactImmutableProptypes.default.map,
fieldsErrors: _reactImmutableProptypes.default.map,
onChange: _propTypes.default.func.isRequired,
onValidate: _propTypes.default.func,
onOpenMediaLibrary: _propTypes.default.func.isRequired,
onClearMediaControl: _propTypes.default.func.isRequired,
onRemoveMediaControl: _propTypes.default.func.isRequired,
onPersistMedia: _propTypes.default.func.isRequired,
onAddAsset: _propTypes.default.func.isRequired,
onRemoveInsertedMedia: _propTypes.default.func.isRequired,
getAsset: _propTypes.default.func.isRequired,
resolveWidget: _propTypes.default.func.isRequired,
widget: _propTypes.default.object.isRequired,
getEditorComponents: _propTypes.default.func.isRequired,
isFetching: _propTypes.default.bool,
controlRef: _propTypes.default.func,
query: _propTypes.default.func.isRequired,
clearSearch: _propTypes.default.func.isRequired,
clearFieldErrors: _propTypes.default.func.isRequired,
queryHits: _propTypes.default.oneOfType([_propTypes.default.array, _propTypes.default.object]),
editorControl: _propTypes.default.elementType.isRequired,
uniqueFieldId: _propTypes.default.string.isRequired,
loadEntry: _propTypes.default.func.isRequired,
t: _propTypes.default.func.isRequired,
onValidateObject: _propTypes.default.func,
isEditorComponent: _propTypes.default.bool,
isNewEditorComponent: _propTypes.default.bool,
entry: _reactImmutableProptypes.default.map.isRequired,
isDisabled: _propTypes.default.bool,
isFieldDuplicate: _propTypes.default.func,
isFieldHidden: _propTypes.default.func,
locale: _propTypes.default.string,
isParentListCollapsed: _propTypes.default.bool
});

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,56 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _base = _interopRequireDefault(require("@emotion/styled/base"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _reactImmutableProptypes = _interopRequireDefault(require("react-immutable-proptypes"));
var _react2 = require("@emotion/react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
function isVisible(field) {
return field.get('widget') !== 'hidden';
}
const PreviewContainer = /*#__PURE__*/(0, _base.default)("div", {
target: "e1iji6y40",
label: "PreviewContainer"
})(process.env.NODE_ENV === "production" ? {
name: "9bq7s9",
styles: "font-family:Roboto,'Helvetica Neue',HelveticaNeue,Helvetica,Arial,sans-serif"
} : {
name: "9bq7s9",
styles: "font-family:Roboto,'Helvetica Neue',HelveticaNeue,Helvetica,Arial,sans-serif",
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0VkaXRvci9FZGl0b3JQcmV2aWV3UGFuZS9FZGl0b3JQcmV2aWV3LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNtQyIsImZpbGUiOiIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9FZGl0b3IvRWRpdG9yUHJldmlld1BhbmUvRWRpdG9yUHJldmlldy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IEltbXV0YWJsZVByb3BUeXBlcyBmcm9tICdyZWFjdC1pbW11dGFibGUtcHJvcHR5cGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcblxuZnVuY3Rpb24gaXNWaXNpYmxlKGZpZWxkKSB7XG4gIHJldHVybiBmaWVsZC5nZXQoJ3dpZGdldCcpICE9PSAnaGlkZGVuJztcbn1cblxuY29uc3QgUHJldmlld0NvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIGZvbnQtZmFtaWx5OiBSb2JvdG8sICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYU5ldWUsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG5gO1xuXG4vKipcbiAqIFVzZSBhIHN0YXRlZnVsIGNvbXBvbmVudCBzbyB0aGF0IGNoaWxkIGNvbXBvbmVudHMgY2FuIGVmZmVjdGl2ZWx5IHV0aWxpemVcbiAqIGBzaG91bGRDb21wb25lbnRVcGRhdGVgLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcmV2aWV3IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgY29sbGVjdGlvbiwgZmllbGRzLCB3aWRnZXRGb3IgfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKCFjb2xsZWN0aW9uIHx8ICFmaWVsZHMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPFByZXZpZXdDb250YWluZXI+XG4gICAgICAgIHtmaWVsZHMuZmlsdGVyKGlzVmlzaWJsZSkubWFwKGZpZWxkID0+IChcbiAgICAgICAgICA8ZGl2IGtleT17ZmllbGQuZ2V0KCduYW1lJyl9Pnt3aWRnZXRGb3IoZmllbGQuZ2V0KCduYW1lJykpfTwvZGl2PlxuICAgICAgICApKX1cbiAgICAgIDwvUHJldmlld0NvbnRhaW5lcj5cbiAgICApO1xuICB9XG59XG5cblByZXZpZXcucHJvcFR5cGVzID0ge1xuICBjb2xsZWN0aW9uOiBJbW11dGFibGVQcm9wVHlwZXMubWFwLmlzUmVxdWlyZWQsXG4gIGVudHJ5OiBJbW11dGFibGVQcm9wVHlwZXMubWFwLmlzUmVxdWlyZWQsXG4gIGZpZWxkczogSW1tdXRhYmxlUHJvcFR5cGVzLmxpc3QuaXNSZXF1aXJlZCxcbiAgZ2V0QXNzZXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHdpZGdldEZvcjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbn07XG4iXX0= */",
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
});
/**
* Use a stateful component so that child components can effectively utilize
* `shouldComponentUpdate`.
*/
class Preview extends _react.default.Component {
render() {
const {
collection,
fields,
widgetFor
} = this.props;
if (!collection || !fields) {
return null;
}
return (0, _react2.jsx)(PreviewContainer, null, fields.filter(isVisible).map(field => (0, _react2.jsx)("div", {
key: field.get('name')
}, widgetFor(field.get('name')))));
}
}
exports.default = Preview;
Preview.propTypes = {
collection: _reactImmutableProptypes.default.map.isRequired,
entry: _reactImmutableProptypes.default.map.isRequired,
fields: _reactImmutableProptypes.default.list.isRequired,
getAsset: _propTypes.default.func.isRequired,
widgetFor: _propTypes.default.func.isRequired
};

View File

@@ -0,0 +1,33 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react = _interopRequireDefault(require("react"));
var _reactIs = require("react-is");
var _reactScrollSync = require("react-scroll-sync");
var _reactFrameComponent = require("react-frame-component");
var _react2 = require("@emotion/react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* We need to create a lightweight component here so that we can access the
* context within the Frame. This allows us to attach the ScrollSyncPane to the
* body.
*/class PreviewContent extends _react.default.Component {
render() {
const {
previewComponent,
previewProps
} = this.props;
return (0, _react2.jsx)(_reactFrameComponent.FrameContextConsumer, null, context => (0, _react2.jsx)(_reactScrollSync.ScrollSyncPane, {
attachTo: context.document.scrollingElement
}, (0, _reactIs.isElement)(previewComponent) ? /*#__PURE__*/_react.default.cloneElement(previewComponent, previewProps) : /*#__PURE__*/_react.default.createElement(previewComponent, previewProps)));
}
}
PreviewContent.propTypes = {
previewComponent: _propTypes.default.func.isRequired,
previewProps: _propTypes.default.object
};
var _default = exports.default = PreviewContent;

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,38 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _reactImmutableProptypes = _interopRequireDefault(require("react-immutable-proptypes"));
const _excluded = ["previewComponent"];
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
class PreviewHOC extends _react.default.Component {
/**
* Only re-render on value change, but always re-render objects and lists.
* Their child widgets will each also be wrapped with this component, and
* will only be updated on value change.
*/
shouldComponentUpdate(nextProps) {
const isWidgetContainer = ['object', 'list'].includes(nextProps.field.get('widget'));
return isWidgetContainer || this.props.value !== nextProps.value || this.props.fieldsMetaData !== nextProps.fieldsMetaData || this.props.getAsset !== nextProps.getAsset;
}
render() {
const _this$props = this.props,
{
previewComponent
} = _this$props,
props = _objectWithoutProperties(_this$props, _excluded);
return /*#__PURE__*/_react.default.createElement(previewComponent, props);
}
}
PreviewHOC.propTypes = {
previewComponent: _propTypes.default.func.isRequired,
field: _reactImmutableProptypes.default.map.isRequired,
value: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.object, _propTypes.default.string, _propTypes.default.bool])
};
var _default = exports.default = PreviewHOC;

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,64 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = withWorkflow;
var _react = _interopRequireDefault(require("react"));
var _reactRedux = require("react-redux");
var _publishModes = require("../../constants/publishModes");
var _reducers = require("../../reducers");
var _collections = require("../../reducers/collections");
var _editorialWorkflow = require("../../actions/editorialWorkflow");
var _react2 = require("@emotion/react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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; }
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; }
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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
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); }
function mapStateToProps(state, ownProps) {
const {
collections
} = state;
const isEditorialWorkflow = state.config.publish_mode === _publishModes.EDITORIAL_WORKFLOW;
const collection = collections.get(ownProps.match.params.name);
const returnObj = {
isEditorialWorkflow,
showDelete: !ownProps.newEntry && (0, _collections.selectAllowDeletion)(collection)
};
if (isEditorialWorkflow) {
const slug = ownProps.match.params[0];
const unpublishedEntry = (0, _reducers.selectUnpublishedEntry)(state, collection.get('name'), slug);
if (unpublishedEntry) {
returnObj.unpublishedEntry = true;
returnObj.entry = unpublishedEntry;
}
}
return returnObj;
}
function mergeProps(stateProps, dispatchProps, ownProps) {
const {
isEditorialWorkflow,
unpublishedEntry
} = stateProps;
const {
dispatch
} = dispatchProps;
const returnObj = {};
if (isEditorialWorkflow) {
// Overwrite loadEntry to loadUnpublishedEntry
returnObj.loadEntry = (collection, slug) => dispatch((0, _editorialWorkflow.loadUnpublishedEntry)(collection, slug));
// Overwrite persistEntry to persistUnpublishedEntry
returnObj.persistEntry = collection => dispatch((0, _editorialWorkflow.persistUnpublishedEntry)(collection, unpublishedEntry));
}
return _objectSpread(_objectSpread(_objectSpread({}, ownProps), stateProps), returnObj);
}
function withWorkflow(Editor) {
return (0, _reactRedux.connect)(mapStateToProps, null, mergeProps)(class WorkflowEditor extends _react.default.Component {
render() {
return (0, _react2.jsx)(Editor, this.props);
}
});
}

View File

@@ -0,0 +1,25 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _reactPolyglot = require("react-polyglot");
var _reactImmutableProptypes = _interopRequireDefault(require("react-immutable-proptypes"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react2 = require("@emotion/react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function UnknownControl({
field,
t
}) {
return (0, _react2.jsx)("div", null, t('editor.editorWidgets.unknownControl.noControl', {
widget: field.get('widget')
}));
}
UnknownControl.propTypes = {
field: _reactImmutableProptypes.default.map,
t: _propTypes.default.func.isRequired
};
var _default = exports.default = (0, _reactPolyglot.translate)()(UnknownControl);

View File

@@ -0,0 +1,27 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _reactPolyglot = require("react-polyglot");
var _reactImmutableProptypes = _interopRequireDefault(require("react-immutable-proptypes"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react2 = require("@emotion/react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function UnknownPreview({
field,
t
}) {
return (0, _react2.jsx)("div", {
className: "nc-widgetPreview"
}, t('editor.editorWidgets.unknownPreview.noPreview', {
widget: field.get('widget')
}));
}
UnknownPreview.propTypes = {
field: _reactImmutableProptypes.default.map,
t: _propTypes.default.func.isRequired
};
var _default = exports.default = (0, _reactPolyglot.translate)()(UnknownPreview);

View File

@@ -0,0 +1,7 @@
"use strict";
var _registry = require("../../lib/registry");
var _UnknownControl = _interopRequireDefault(require("./Unknown/UnknownControl"));
var _UnknownPreview = _interopRequireDefault(require("./Unknown/UnknownPreview"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
(0, _registry.registerWidget)('unknown', _UnknownControl.default, _UnknownPreview.default);

View File

@@ -0,0 +1,29 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _base = _interopRequireDefault(require("@emotion/styled/base"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _decapCmsUiDefault = require("decap-cms-ui-default");
var _react2 = require("@emotion/react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const EmptyMessageContainer = /*#__PURE__*/(0, _base.default)("div", {
target: "e156433y0",
label: "EmptyMessageContainer"
})("height:100%;width:100%;display:flex;justify-content:center;align-items:center;color:", props => props.isPrivate && _decapCmsUiDefault.colors.textFieldBorder, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL01lZGlhTGlicmFyeS9FbXB0eU1lc3NhZ2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS3dDIiwiZmlsZSI6Ii4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL01lZGlhTGlicmFyeS9FbXB0eU1lc3NhZ2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IGNvbG9ycyB9IGZyb20gJ2RlY2FwLWNtcy11aS1kZWZhdWx0JztcblxuY29uc3QgRW1wdHlNZXNzYWdlQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLmlzUHJpdmF0ZSAmJiBjb2xvcnMudGV4dEZpZWxkQm9yZGVyfTtcbmA7XG5cbmZ1bmN0aW9uIEVtcHR5TWVzc2FnZSh7IGNvbnRlbnQsIGlzUHJpdmF0ZSB9KSB7XG4gIHJldHVybiAoXG4gICAgPEVtcHR5TWVzc2FnZUNvbnRhaW5lciBpc1ByaXZhdGU9e2lzUHJpdmF0ZX0+XG4gICAgICA8aDE+e2NvbnRlbnR9PC9oMT5cbiAgICA8L0VtcHR5TWVzc2FnZUNvbnRhaW5lcj5cbiAgKTtcbn1cblxuRW1wdHlNZXNzYWdlLnByb3BUeXBlcyA9IHtcbiAgY29udGVudDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBpc1ByaXZhdGU6IFByb3BUeXBlcy5ib29sLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRW1wdHlNZXNzYWdlO1xuIl19 */"));
function EmptyMessage({
content,
isPrivate
}) {
return (0, _react2.jsx)(EmptyMessageContainer, {
isPrivate: isPrivate
}, (0, _react2.jsx)("h1", null, content));
}
EmptyMessage.propTypes = {
content: _propTypes.default.string.isRequired,
isPrivate: _propTypes.default.bool
};
var _default = exports.default = EmptyMessage;

View File

@@ -0,0 +1,443 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _map2 = _interopRequireDefault(require("lodash/map"));
var _orderBy2 = _interopRequireDefault(require("lodash/orderBy"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _reactImmutableProptypes = _interopRequireDefault(require("react-immutable-proptypes"));
var _reactRedux = require("react-redux");
var _reactPolyglot = require("react-polyglot");
var _fuzzy = _interopRequireDefault(require("fuzzy"));
var _decapCmsLibUtil = require("decap-cms-lib-util");
var _mediaLibrary = require("../../actions/mediaLibrary");
var _mediaLibrary2 = require("../../reducers/mediaLibrary");
var _MediaLibraryModal = _interopRequireWildcard(require("./MediaLibraryModal"));
var _react2 = require("@emotion/react");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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; }
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; }
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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
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); } /**
* Extensions used to determine which files to show when the media library is
* accessed from an image insertion field.
*/
const IMAGE_EXTENSIONS_VIEWABLE = ['jpg', 'jpeg', 'webp', 'gif', 'png', 'bmp', 'tiff', 'svg', 'avif'];
const IMAGE_EXTENSIONS = [...IMAGE_EXTENSIONS_VIEWABLE];
class MediaLibrary extends _react.default.Component {
constructor(...args) {
super(...args);
/**
* The currently selected file and query are tracked in component state as
* they do not impact the rest of the application.
*/
_defineProperty(this, "state", {
selectedFile: {},
query: '',
isPersisted: false
});
_defineProperty(this, "loadDisplayURL", file => {
const {
loadMediaDisplayURL
} = this.props;
loadMediaDisplayURL(file);
});
/**
* Filter an array of file data to include only images.
*/
_defineProperty(this, "filterImages", files => {
return files.filter(file => {
const ext = (0, _decapCmsLibUtil.fileExtension)(file.name).toLowerCase();
return IMAGE_EXTENSIONS.includes(ext);
});
});
/**
* Transform file data for table display.
*/
_defineProperty(this, "toTableData", files => {
const tableData = files && files.map(({
key,
name,
id,
size,
path,
queryOrder,
displayURL,
draft
}) => {
const ext = (0, _decapCmsLibUtil.fileExtension)(name).toLowerCase();
return {
key,
id,
name,
path,
type: ext.toUpperCase(),
size,
queryOrder,
displayURL,
draft,
isImage: IMAGE_EXTENSIONS.includes(ext),
isViewableImage: IMAGE_EXTENSIONS_VIEWABLE.includes(ext)
};
});
/**
* Get the sort order for use with `lodash.orderBy`, and always add the
* `queryOrder` sort as the lowest priority sort order.
*/
const {
sortFields
} = this.state;
const fieldNames = (0, _map2.default)(sortFields, 'fieldName').concat('queryOrder');
const directions = (0, _map2.default)(sortFields, 'direction').concat('asc');
return (0, _orderBy2.default)(tableData, fieldNames, directions);
});
_defineProperty(this, "handleClose", () => {
this.props.closeMediaLibrary();
});
/**
* Toggle asset selection on click.
*/
_defineProperty(this, "handleAssetClick", asset => {
const selectedFile = this.state.selectedFile.key === asset.key ? {} : asset;
this.setState({
selectedFile
});
});
/**
* Upload a file.
*/
_defineProperty(this, "handlePersist", async event => {
/**
* Stop the browser from automatically handling the file input click, and
* get the file for upload, and retain the synthetic event for access after
* the asynchronous persist operation.
*/
event.persist();
event.stopPropagation();
event.preventDefault();
const {
persistMedia,
privateUpload,
config,
t,
field
} = this.props;
const {
files: fileList
} = event.dataTransfer || event.target;
const files = [...fileList];
const file = files[0];
const maxFileSize = config.get('max_file_size');
if (maxFileSize && file.size > maxFileSize) {
window.alert(t('mediaLibrary.mediaLibrary.fileTooLarge', {
size: Math.floor(maxFileSize / 1000)
}));
} else {
await persistMedia(file, {
privateUpload,
field
});
this.setState({
isPersisted: true
});
this.scrollToTop();
}
event.target.value = null;
});
/**
* Stores the public path of the file in the application store, where the
* editor field that launched the media library can retrieve it.
*/
_defineProperty(this, "handleInsert", () => {
const {
selectedFile
} = this.state;
const {
path
} = selectedFile;
const {
insertMedia,
field
} = this.props;
insertMedia(path, field);
this.handleClose();
});
/**
* Removes the selected file from the backend.
*/
_defineProperty(this, "handleDelete", () => {
const {
selectedFile
} = this.state;
const {
files,
deleteMedia,
privateUpload,
t
} = this.props;
if (!window.confirm(t('mediaLibrary.mediaLibrary.onDelete'))) {
return;
}
const file = files.find(file => selectedFile.key === file.key);
deleteMedia(file, {
privateUpload
}).then(() => {
this.setState({
selectedFile: {}
});
});
});
/**
* Downloads the selected file.
*/
_defineProperty(this, "handleDownload", () => {
const {
selectedFile
} = this.state;
const {
displayURLs
} = this.props;
const url = displayURLs.getIn([selectedFile.id, 'url']) || selectedFile.url;
if (!url) {
return;
}
const filename = selectedFile.name;
const element = document.createElement('a');
element.setAttribute('href', url);
element.setAttribute('download', filename);
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
this.setState({
selectedFile: {}
});
});
/**
*
*/
_defineProperty(this, "handleLoadMore", () => {
const {
loadMedia,
dynamicSearchQuery,
page,
privateUpload
} = this.props;
loadMedia({
query: dynamicSearchQuery,
page: page + 1,
privateUpload
});
});
/**
* Executes media library search for implementations that support dynamic
* search via request. For these implementations, the Enter key must be
* pressed to execute search. If assets are being stored directly through
* the GitHub backend, search is in-memory and occurs as the query is typed,
* so this handler has no impact.
*/
_defineProperty(this, "handleSearchKeyDown", async event => {
const {
dynamicSearch,
loadMedia,
privateUpload
} = this.props;
if (event.key === 'Enter' && dynamicSearch) {
await loadMedia({
query: this.state.query,
privateUpload
});
this.scrollToTop();
}
});
_defineProperty(this, "scrollToTop", () => {
this.scrollContainerRef.scrollTop = 0;
});
/**
* Updates query state as the user types in the search field.
*/
_defineProperty(this, "handleSearchChange", event => {
this.setState({
query: event.target.value
});
});
/**
* Filters files that do not match the query. Not used for dynamic search.
*/
_defineProperty(this, "queryFilter", (query, files) => {
/**
* Because file names don't have spaces, typing a space eliminates all
* potential matches, so we strip them all out internally before running the
* query.
*/
const strippedQuery = query.replace(/ /g, '');
const matches = _fuzzy.default.filter(strippedQuery, files, {
extract: file => file.name
});
const matchFiles = matches.map((match, queryIndex) => {
const file = files[match.index];
return _objectSpread(_objectSpread({}, file), {}, {
queryIndex
});
});
return matchFiles;
});
}
componentDidMount() {
this.props.loadMedia();
}
UNSAFE_componentWillReceiveProps(nextProps) {
/**
* We clear old state from the media library when it's being re-opened
* because, when doing so on close, the state is cleared while the media
* library is still fading away.
*/
const isOpening = !this.props.isVisible && nextProps.isVisible;
if (isOpening) {
this.setState({
selectedFile: {},
query: ''
});
}
if (this.state.isPersisted) {
this.setState({
selectedFile: nextProps.files[0],
isPersisted: false
});
}
}
componentDidUpdate(prevProps) {
const isOpening = !prevProps.isVisible && this.props.isVisible;
if (isOpening && prevProps.privateUpload !== this.props.privateUpload) {
this.props.loadMedia({
privateUpload: this.props.privateUpload
});
}
if (this.state.isPersisted) {
this.setState({
selectedFile: this.props.files[0],
isPersisted: false
});
}
}
render() {
const {
isVisible,
canInsert,
files,
dynamicSearch,
dynamicSearchActive,
forImage,
isLoading,
isPersisting,
isDeleting,
hasNextPage,
isPaginating,
privateUpload,
displayURLs,
t
} = this.props;
return (0, _react2.jsx)(_MediaLibraryModal.default, {
isVisible: isVisible,
canInsert: canInsert,
files: files,
dynamicSearch: dynamicSearch,
dynamicSearchActive: dynamicSearchActive,
forImage: forImage,
isLoading: isLoading,
isPersisting: isPersisting,
isDeleting: isDeleting,
hasNextPage: hasNextPage,
isPaginating: isPaginating,
privateUpload: privateUpload,
query: this.state.query,
selectedFile: this.state.selectedFile,
handleFilter: this.filterImages,
handleQuery: this.queryFilter,
toTableData: this.toTableData,
handleClose: this.handleClose,
handleSearchChange: this.handleSearchChange,
handleSearchKeyDown: this.handleSearchKeyDown,
handlePersist: this.handlePersist,
handleDelete: this.handleDelete,
handleInsert: this.handleInsert,
handleDownload: this.handleDownload,
setScrollContainerRef: ref => this.scrollContainerRef = ref,
handleAssetClick: this.handleAssetClick,
handleLoadMore: this.handleLoadMore,
displayURLs: displayURLs,
loadDisplayURL: this.loadDisplayURL,
t: t
});
}
}
_defineProperty(MediaLibrary, "propTypes", {
isVisible: _propTypes.default.bool,
loadMediaDisplayURL: _propTypes.default.func,
displayURLs: _reactImmutableProptypes.default.map,
canInsert: _propTypes.default.bool,
files: _propTypes.default.arrayOf(_propTypes.default.shape(_MediaLibraryModal.fileShape)).isRequired,
dynamicSearch: _propTypes.default.bool,
dynamicSearchActive: _propTypes.default.bool,
forImage: _propTypes.default.bool,
isLoading: _propTypes.default.bool,
isPersisting: _propTypes.default.bool,
isDeleting: _propTypes.default.bool,
hasNextPage: _propTypes.default.bool,
isPaginating: _propTypes.default.bool,
privateUpload: _propTypes.default.bool,
config: _reactImmutableProptypes.default.map,
loadMedia: _propTypes.default.func.isRequired,
dynamicSearchQuery: _propTypes.default.string,
page: _propTypes.default.number,
persistMedia: _propTypes.default.func.isRequired,
deleteMedia: _propTypes.default.func.isRequired,
insertMedia: _propTypes.default.func.isRequired,
closeMediaLibrary: _propTypes.default.func.isRequired,
t: _propTypes.default.func.isRequired
});
_defineProperty(MediaLibrary, "defaultProps", {
files: []
});
function mapStateToProps(state) {
const {
mediaLibrary
} = state;
const field = mediaLibrary.get('field');
const mediaLibraryProps = {
isVisible: mediaLibrary.get('isVisible'),
canInsert: mediaLibrary.get('canInsert'),
files: (0, _mediaLibrary2.selectMediaFiles)(state, field),
displayURLs: mediaLibrary.get('displayURLs'),
dynamicSearch: mediaLibrary.get('dynamicSearch'),
dynamicSearchActive: mediaLibrary.get('dynamicSearchActive'),
dynamicSearchQuery: mediaLibrary.get('dynamicSearchQuery'),
forImage: mediaLibrary.get('forImage'),
isLoading: mediaLibrary.get('isLoading'),
isPersisting: mediaLibrary.get('isPersisting'),
isDeleting: mediaLibrary.get('isDeleting'),
privateUpload: mediaLibrary.get('privateUpload'),
config: mediaLibrary.get('config'),
page: mediaLibrary.get('page'),
hasNextPage: mediaLibrary.get('hasNextPage'),
isPaginating: mediaLibrary.get('isPaginating'),
field
};
return _objectSpread({}, mediaLibraryProps);
}
const mapDispatchToProps = {
loadMedia: _mediaLibrary.loadMedia,
persistMedia: _mediaLibrary.persistMedia,
deleteMedia: _mediaLibrary.deleteMedia,
insertMedia: _mediaLibrary.insertMedia,
loadMediaDisplayURL: _mediaLibrary.loadMediaDisplayURL,
closeMediaLibrary: _mediaLibrary.closeMediaLibrary
};
var _default = exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)((0, _reactPolyglot.translate)()(MediaLibrary));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,39 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _base = _interopRequireDefault(require("@emotion/styled/base"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _decapCmsUiDefault = require("decap-cms-ui-default");
var _react2 = require("@emotion/react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const CloseButton = /*#__PURE__*/(0, _base.default)("button", {
target: "estf6121",
label: "CloseButton"
})(_decapCmsUiDefault.buttons.button, ";", _decapCmsUiDefault.shadows.dropMiddle, ";position:absolute;margin-right:-40px;left:-40px;top:-40px;width:40px;height:40px;border-radius:50%;background-color:white;padding:0;display:flex;justify-content:center;align-items:center;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL01lZGlhTGlicmFyeS9NZWRpYUxpYnJhcnlIZWFkZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS2lDIiwiZmlsZSI6Ii4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL01lZGlhTGlicmFyeS9NZWRpYUxpYnJhcnlIZWFkZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IEljb24sIHNoYWRvd3MsIGNvbG9ycywgYnV0dG9ucyB9IGZyb20gJ2RlY2FwLWNtcy11aS1kZWZhdWx0JztcblxuY29uc3QgQ2xvc2VCdXR0b24gPSBzdHlsZWQuYnV0dG9uYFxuICAke2J1dHRvbnMuYnV0dG9ufTtcbiAgJHtzaGFkb3dzLmRyb3BNaWRkbGV9O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG1hcmdpbi1yaWdodDogLTQwcHg7XG4gIGxlZnQ6IC00MHB4O1xuICB0b3A6IC00MHB4O1xuICB3aWR0aDogNDBweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBwYWRkaW5nOiAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IExpYnJhcnlUaXRsZSA9IHN0eWxlZC5oMWBcbiAgbGluZS1oZWlnaHQ6IDM2cHg7XG4gIGZvbnQtc2l6ZTogMjJweDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLWJvdHRvbTogMjVweDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuaXNQcml2YXRlICYmIGNvbG9ycy50ZXh0RmllbGRCb3JkZXJ9O1xuYDtcblxuZnVuY3Rpb24gTWVkaWFMaWJyYXJ5SGVhZGVyKHsgb25DbG9zZSwgdGl0bGUsIGlzUHJpdmF0ZSB9KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdj5cbiAgICAgIDxDbG9zZUJ1dHRvbiBvbkNsaWNrPXtvbkNsb3NlfT5cbiAgICAgICAgPEljb24gdHlwZT1cImNsb3NlXCIgLz5cbiAgICAgIDwvQ2xvc2VCdXR0b24+XG4gICAgICA8TGlicmFyeVRpdGxlIGlzUHJpdmF0ZT17aXNQcml2YXRlfT57dGl0bGV9PC9MaWJyYXJ5VGl0bGU+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbk1lZGlhTGlicmFyeUhlYWRlci5wcm9wVHlwZXMgPSB7XG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGlzUHJpdmF0ZTogUHJvcFR5cGVzLmJvb2wsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNZWRpYUxpYnJhcnlIZWFkZXI7XG4iXX0= */"));
const LibraryTitle = /*#__PURE__*/(0, _base.default)("h1", {
target: "estf6120",
label: "LibraryTitle"
})("line-height:36px;font-size:22px;text-align:left;margin-bottom:25px;color:", props => props.isPrivate && _decapCmsUiDefault.colors.textFieldBorder, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL01lZGlhTGlicmFyeS9NZWRpYUxpYnJhcnlIZWFkZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0I4QiIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9NZWRpYUxpYnJhcnkvTWVkaWFMaWJyYXJ5SGVhZGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBJY29uLCBzaGFkb3dzLCBjb2xvcnMsIGJ1dHRvbnMgfSBmcm9tICdkZWNhcC1jbXMtdWktZGVmYXVsdCc7XG5cbmNvbnN0IENsb3NlQnV0dG9uID0gc3R5bGVkLmJ1dHRvbmBcbiAgJHtidXR0b25zLmJ1dHRvbn07XG4gICR7c2hhZG93cy5kcm9wTWlkZGxlfTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBtYXJnaW4tcmlnaHQ6IC00MHB4O1xuICBsZWZ0OiAtNDBweDtcbiAgdG9wOiAtNDBweDtcbiAgd2lkdGg6IDQwcHg7XG4gIGhlaWdodDogNDBweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgcGFkZGluZzogMDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gO1xuXG5jb25zdCBMaWJyYXJ5VGl0bGUgPSBzdHlsZWQuaDFgXG4gIGxpbmUtaGVpZ2h0OiAzNnB4O1xuICBmb250LXNpemU6IDIycHg7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLmlzUHJpdmF0ZSAmJiBjb2xvcnMudGV4dEZpZWxkQm9yZGVyfTtcbmA7XG5cbmZ1bmN0aW9uIE1lZGlhTGlicmFyeUhlYWRlcih7IG9uQ2xvc2UsIHRpdGxlLCBpc1ByaXZhdGUgfSkge1xuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICA8Q2xvc2VCdXR0b24gb25DbGljaz17b25DbG9zZX0+XG4gICAgICAgIDxJY29uIHR5cGU9XCJjbG9zZVwiIC8+XG4gICAgICA8L0Nsb3NlQnV0dG9uPlxuICAgICAgPExpYnJhcnlUaXRsZSBpc1ByaXZhdGU9e2lzUHJpdmF0ZX0+e3RpdGxlfTwvTGlicmFyeVRpdGxlPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5NZWRpYUxpYnJhcnlIZWFkZXIucHJvcFR5cGVzID0ge1xuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBpc1ByaXZhdGU6IFByb3BUeXBlcy5ib29sLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgTWVkaWFMaWJyYXJ5SGVhZGVyO1xuIl19 */"));
function MediaLibraryHeader({
onClose,
title,
isPrivate
}) {
return (0, _react2.jsx)("div", null, (0, _react2.jsx)(CloseButton, {
onClick: onClose
}, (0, _react2.jsx)(_decapCmsUiDefault.Icon, {
type: "close"
})), (0, _react2.jsx)(LibraryTitle, {
isPrivate: isPrivate
}, title));
}
MediaLibraryHeader.propTypes = {
onClose: _propTypes.default.func.isRequired,
title: _propTypes.default.string.isRequired,
isPrivate: _propTypes.default.bool
};
var _default = exports.default = MediaLibraryHeader;

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,59 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _base = _interopRequireDefault(require("@emotion/styled/base"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _decapCmsUiDefault = require("decap-cms-ui-default");
var _react2 = require("@emotion/react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
const SearchContainer = /*#__PURE__*/(0, _base.default)("div", {
target: "el0uck02",
label: "SearchContainer"
})(process.env.NODE_ENV === "production" ? {
name: "sycyb7",
styles: "height:37px;display:flex;align-items:center;position:relative;width:400px"
} : {
name: "sycyb7",
styles: "height:37px;display:flex;align-items:center;position:relative;width:400px",
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL01lZGlhTGlicmFyeS9NZWRpYUxpYnJhcnlTZWFyY2guanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS2tDIiwiZmlsZSI6Ii4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL01lZGlhTGlicmFyeS9NZWRpYUxpYnJhcnlTZWFyY2guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IEljb24sIGxlbmd0aHMsIGNvbG9ycywgekluZGV4IH0gZnJvbSAnZGVjYXAtY21zLXVpLWRlZmF1bHQnO1xuXG5jb25zdCBTZWFyY2hDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBoZWlnaHQ6IDM3cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDQwMHB4O1xuYDtcblxuY29uc3QgU2VhcmNoSW5wdXQgPSBzdHlsZWQuaW5wdXRgXG4gIGJhY2tncm91bmQtY29sb3I6ICNlZmYwZjQ7XG4gIGJvcmRlci1yYWRpdXM6ICR7bGVuZ3Rocy5ib3JkZXJSYWRpdXN9O1xuXG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgcGFkZGluZzogMTBweCA2cHggMTBweCAzMnB4O1xuICB3aWR0aDogMTAwJTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAke3pJbmRleC56SW5kZXgxfTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDJweCAke2NvbG9ycy5hY3RpdmV9O1xuICB9XG5gO1xuXG5jb25zdCBTZWFyY2hJY29uID0gc3R5bGVkKEljb24pYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA2cHg7XG4gIHotaW5kZXg6ICR7ekluZGV4LnpJbmRleDJ9O1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcbmA7XG5cbmZ1bmN0aW9uIE1lZGlhTGlicmFyeVNlYXJjaCh7IHZhbHVlLCBvbkNoYW5nZSwgb25LZXlEb3duLCBwbGFjZWhvbGRlciwgZGlzYWJsZWQgfSkge1xuICByZXR1cm4gKFxuICAgIDxTZWFyY2hDb250YWluZXI+XG4gICAgICA8U2VhcmNoSWNvbiB0eXBlPVwic2VhcmNoXCIgc2l6ZT1cInNtYWxsXCIgLz5cbiAgICAgIDxTZWFyY2hJbnB1dFxuICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgLz5cbiAgICA8L1NlYXJjaENvbnRhaW5lcj5cbiAgKTtcbn1cblxuTWVkaWFMaWJyYXJ5U2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgdmFsdWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbktleURvd246IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHBsYWNlaG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1lZGlhTGlicmFyeVNlYXJjaDtcbiJdfQ== */",
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
});
const SearchInput = /*#__PURE__*/(0, _base.default)("input", {
target: "el0uck01",
label: "SearchInput"
})("background-color:#eff0f4;border-radius:", _decapCmsUiDefault.lengths.borderRadius, ";font-size:14px;padding:10px 6px 10px 32px;width:100%;position:relative;z-index:", _decapCmsUiDefault.zIndex.zIndex1, ";&:focus{outline:none;box-shadow:inset 0 0 0 2px ", _decapCmsUiDefault.colors.active, ";}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL01lZGlhTGlicmFyeS9NZWRpYUxpYnJhcnlTZWFyY2guanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYWdDIiwiZmlsZSI6Ii4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL01lZGlhTGlicmFyeS9NZWRpYUxpYnJhcnlTZWFyY2guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IEljb24sIGxlbmd0aHMsIGNvbG9ycywgekluZGV4IH0gZnJvbSAnZGVjYXAtY21zLXVpLWRlZmF1bHQnO1xuXG5jb25zdCBTZWFyY2hDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBoZWlnaHQ6IDM3cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDQwMHB4O1xuYDtcblxuY29uc3QgU2VhcmNoSW5wdXQgPSBzdHlsZWQuaW5wdXRgXG4gIGJhY2tncm91bmQtY29sb3I6ICNlZmYwZjQ7XG4gIGJvcmRlci1yYWRpdXM6ICR7bGVuZ3Rocy5ib3JkZXJSYWRpdXN9O1xuXG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgcGFkZGluZzogMTBweCA2cHggMTBweCAzMnB4O1xuICB3aWR0aDogMTAwJTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAke3pJbmRleC56SW5kZXgxfTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDJweCAke2NvbG9ycy5hY3RpdmV9O1xuICB9XG5gO1xuXG5jb25zdCBTZWFyY2hJY29uID0gc3R5bGVkKEljb24pYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA2cHg7XG4gIHotaW5kZXg6ICR7ekluZGV4LnpJbmRleDJ9O1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcbmA7XG5cbmZ1bmN0aW9uIE1lZGlhTGlicmFyeVNlYXJjaCh7IHZhbHVlLCBvbkNoYW5nZSwgb25LZXlEb3duLCBwbGFjZWhvbGRlciwgZGlzYWJsZWQgfSkge1xuICByZXR1cm4gKFxuICAgIDxTZWFyY2hDb250YWluZXI+XG4gICAgICA8U2VhcmNoSWNvbiB0eXBlPVwic2VhcmNoXCIgc2l6ZT1cInNtYWxsXCIgLz5cbiAgICAgIDxTZWFyY2hJbnB1dFxuICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgLz5cbiAgICA8L1NlYXJjaENvbnRhaW5lcj5cbiAgKTtcbn1cblxuTWVkaWFMaWJyYXJ5U2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgdmFsdWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbktleURvd246IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHBsYWNlaG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1lZGlhTGlicmFyeVNlYXJjaDtcbiJdfQ== */"));
const SearchIcon = /*#__PURE__*/(0, _base.default)(_decapCmsUiDefault.Icon, {
target: "el0uck00",
label: "SearchIcon"
})("position:absolute;top:50%;left:6px;z-index:", _decapCmsUiDefault.zIndex.zIndex2, ";transform:translate(0, -50%);" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL01lZGlhTGlicmFyeS9NZWRpYUxpYnJhcnlTZWFyY2guanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNkIrQiIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9NZWRpYUxpYnJhcnkvTWVkaWFMaWJyYXJ5U2VhcmNoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBJY29uLCBsZW5ndGhzLCBjb2xvcnMsIHpJbmRleCB9IGZyb20gJ2RlY2FwLWNtcy11aS1kZWZhdWx0JztcblxuY29uc3QgU2VhcmNoQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgaGVpZ2h0OiAzN3B4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiA0MDBweDtcbmA7XG5cbmNvbnN0IFNlYXJjaElucHV0ID0gc3R5bGVkLmlucHV0YFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWZmMGY0O1xuICBib3JkZXItcmFkaXVzOiAke2xlbmd0aHMuYm9yZGVyUmFkaXVzfTtcblxuICBmb250LXNpemU6IDE0cHg7XG4gIHBhZGRpbmc6IDEwcHggNnB4IDEwcHggMzJweDtcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogJHt6SW5kZXguekluZGV4MX07XG5cbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAycHggJHtjb2xvcnMuYWN0aXZlfTtcbiAgfVxuYDtcblxuY29uc3QgU2VhcmNoSWNvbiA9IHN0eWxlZChJY29uKWBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNnB4O1xuICB6LWluZGV4OiAke3pJbmRleC56SW5kZXgyfTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XG5gO1xuXG5mdW5jdGlvbiBNZWRpYUxpYnJhcnlTZWFyY2goeyB2YWx1ZSwgb25DaGFuZ2UsIG9uS2V5RG93biwgcGxhY2Vob2xkZXIsIGRpc2FibGVkIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8U2VhcmNoQ29udGFpbmVyPlxuICAgICAgPFNlYXJjaEljb24gdHlwZT1cInNlYXJjaFwiIHNpemU9XCJzbWFsbFwiIC8+XG4gICAgICA8U2VhcmNoSW5wdXRcbiAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgIC8+XG4gICAgPC9TZWFyY2hDb250YWluZXI+XG4gICk7XG59XG5cbk1lZGlhTGlicmFyeVNlYXJjaC5wcm9wVHlwZXMgPSB7XG4gIHZhbHVlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25LZXlEb3duOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBwbGFjZWhvbGRlcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNZWRpYUxpYnJhcnlTZWFyY2g7XG4iXX0= */"));
function MediaLibrarySearch({
value,
onChange,
onKeyDown,
placeholder,
disabled
}) {
return (0, _react2.jsx)(SearchContainer, null, (0, _react2.jsx)(SearchIcon, {
type: "search",
size: "small"
}), (0, _react2.jsx)(SearchInput, {
value: value,
onChange: onChange,
onKeyDown: onKeyDown,
placeholder: placeholder,
disabled: disabled
}));
}
MediaLibrarySearch.propTypes = {
value: _propTypes.default.string,
onChange: _propTypes.default.func.isRequired,
onKeyDown: _propTypes.default.func.isRequired,
placeholder: _propTypes.default.string.isRequired,
disabled: _propTypes.default.bool
};
var _default = exports.default = MediaLibrarySearch;

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,84 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DragSource = DragSource;
exports.DropTarget = DropTarget;
exports.HTML5DragDrop = HTML5DragDrop;
var _reactDndHtml5Backend = require("react-dnd-html5-backend");
var _reactDnd = require("react-dnd");
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react2 = require("@emotion/react");
const _excluded = ["namespace"],
_excluded2 = ["children", "isDragging", "connectDragComponent"],
_excluded3 = ["onDrop", "namespace"];
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
function DragSource(_ref) {
let {
namespace
} = _ref,
props = _objectWithoutProperties(_ref, _excluded);
const DragComponent = (0, _reactDnd.DragSource)(namespace, {
// eslint-disable-next-line no-unused-vars
beginDrag(_ref2) {
let {
children,
isDragging,
connectDragComponent
} = _ref2,
ownProps = _objectWithoutProperties(_ref2, _excluded2);
// We return the rest of the props as the ID of the element being dragged.
return ownProps;
}
}, connect => ({
connectDragComponent: connect.dragSource()
}))(({
children,
connectDragComponent
}) => children(connectDragComponent));
return /*#__PURE__*/_react.default.createElement(DragComponent, props, props.children);
}
DragSource.propTypes = {
namespace: _propTypes.default.any.isRequired,
children: _propTypes.default.func.isRequired
};
function DropTarget(_ref3) {
let {
onDrop,
namespace
} = _ref3,
props = _objectWithoutProperties(_ref3, _excluded3);
const DropComponent = (0, _reactDnd.DropTarget)(namespace, {
drop(ownProps, monitor) {
onDrop(monitor.getItem());
}
}, (connect, monitor) => ({
connectDropTarget: connect.dropTarget(),
isHovered: monitor.isOver()
}))(({
children,
connectDropTarget,
isHovered
}) => children(connectDropTarget, {
isHovered
}));
return /*#__PURE__*/_react.default.createElement(DropComponent, props, props.children);
}
DropTarget.propTypes = {
onDrop: _propTypes.default.func.isRequired,
namespace: _propTypes.default.any.isRequired,
children: _propTypes.default.func.isRequired
};
function HTML5DragDrop(WrappedComponent) {
return class HTML5DragDrop extends _react.default.Component {
render() {
return (0, _react2.jsx)(_reactDnd.DndProvider, {
backend: _reactDndHtml5Backend.HTML5Backend
}, (0, _react2.jsx)(WrappedComponent, this.props));
}
};
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,34 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.FileUploadButton = FileUploadButton;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react2 = require("@emotion/react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function FileUploadButton({
label,
imagesOnly,
onChange,
disabled,
className
}) {
return (0, _react2.jsx)("label", {
tabIndex: '0',
className: `nc-fileUploadButton ${className || ''}`
}, (0, _react2.jsx)("span", null, label), (0, _react2.jsx)("input", {
type: "file",
accept: imagesOnly ? 'image/*' : '*/*',
onChange: onChange,
disabled: disabled
}));
}
FileUploadButton.propTypes = {
className: _propTypes.default.string,
label: _propTypes.default.string.isRequired,
imagesOnly: _propTypes.default.bool,
onChange: _propTypes.default.func.isRequired,
disabled: _propTypes.default.bool
};

View File

@@ -0,0 +1,113 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Modal = void 0;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react2 = require("@emotion/react");
var _reactModal = _interopRequireDefault(require("react-modal"));
var _decapCmsUiDefault = require("decap-cms-ui-default");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
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); }
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
var _ref = process.env.NODE_ENV === "production" ? {
name: "1o9c9d2-ReactModalGlobalStyles",
styles: ".ReactModal__Body--open{overflow:hidden;};label:ReactModalGlobalStyles;"
} : {
name: "1o9c9d2-ReactModalGlobalStyles",
styles: ".ReactModal__Body--open{overflow:hidden;};label:ReactModalGlobalStyles;",
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1VJL01vZGFsLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNpQiIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9VSS9Nb2RhbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgY3NzLCBHbG9iYWwsIENsYXNzTmFtZXMgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgUmVhY3RNb2RhbCBmcm9tICdyZWFjdC1tb2RhbCc7XG5pbXBvcnQgeyB0cmFuc2l0aW9ucywgc2hhZG93cywgbGVuZ3RocywgekluZGV4IH0gZnJvbSAnZGVjYXAtY21zLXVpLWRlZmF1bHQnO1xuXG5mdW5jdGlvbiBSZWFjdE1vZGFsR2xvYmFsU3R5bGVzKCkge1xuICByZXR1cm4gKFxuICAgIDxHbG9iYWxcbiAgICAgIHN0eWxlcz17Y3NzYFxuICAgICAgICAuUmVhY3RNb2RhbF9fQm9keS0tb3BlbiB7XG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgfVxuICAgICAgYH1cbiAgICAvPlxuICApO1xufVxuXG5jb25zdCBzdHlsZVN0cmluZ3MgPSB7XG4gIG1vZGFsQm9keTogYFxuICAgICR7c2hhZG93cy5kcm9wRGVlcH07XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICBib3JkZXItcmFkaXVzOiAke2xlbmd0aHMuYm9yZGVyUmFkaXVzfTtcbiAgICBoZWlnaHQ6IDgwJTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWF4LXdpZHRoOiAyMjAwcHg7XG4gICAgcGFkZGluZzogMjBweDtcblxuICAgICY6Zm9jdXMge1xuICAgICAgb3V0bGluZTogbm9uZTtcbiAgICB9XG4gIGAsXG4gIG92ZXJsYXk6IGBcbiAgICB6LWluZGV4OiAke3pJbmRleC56SW5kZXg5OTk5OX07XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgb3BhY2l0eTogMDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgJHt0cmFuc2l0aW9ucy5tYWlufSwgb3BhY2l0eSAke3RyYW5zaXRpb25zLm1haW59O1xuICBgLFxuICBvdmVybGF5QWZ0ZXJPcGVuOiBgXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjYpO1xuICAgIG9wYWNpdHk6IDE7XG4gIGAsXG4gIG92ZXJsYXlCZWZvcmVDbG9zZTogYFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7XG4gICAgb3BhY2l0eTogMDtcbiAgYCxcbn07XG5cbmV4cG9ydCBjbGFzcyBNb2RhbCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWQsXG4gICAgaXNPcGVuOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICB9O1xuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIFJlYWN0TW9kYWwuc2V0QXBwRWxlbWVudCgnI25jLXJvb3QnKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGlzT3BlbiwgY2hpbGRyZW4sIGNsYXNzTmFtZSwgb25DbG9zZSB9ID0gdGhpcy5wcm9wcztcbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPFJlYWN0TW9kYWxHbG9iYWxTdHlsZXMgLz5cbiAgICAgICAgPENsYXNzTmFtZXM+XG4gICAgICAgICAgeyh7IGNzcywgY3ggfSkgPT4gKFxuICAgICAgICAgICAgPFJlYWN0TW9kYWxcbiAgICAgICAgICAgICAgaXNPcGVuPXtpc09wZW59XG4gICAgICAgICAgICAgIG9uUmVxdWVzdENsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgICBjbG9zZVRpbWVvdXRNUz17MzAwfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3tcbiAgICAgICAgICAgICAgICBiYXNlOiBjeChcbiAgICAgICAgICAgICAgICAgIGNzc2BcbiAgICAgICAgICAgICAgICAgICAgJHtzdHlsZVN0cmluZ3MubW9kYWxCb2R5fTtcbiAgICAgICAgICAgICAgICAgIGAsXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhZnRlck9wZW46ICcnLFxuICAgICAgICAgICAgICAgIGJlZm9yZUNsb3NlOiAnJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgb3ZlcmxheUNsYXNzTmFtZT17e1xuICAgICAgICAgICAgICAgIGJhc2U6IGNzc2BcbiAgICAgICAgICAgICAgICAgICR7c3R5bGVTdHJpbmdzLm92ZXJsYXl9O1xuICAgICAgICAgICAgICAgIGAsXG4gICAgICAgICAgICAgICAgYWZ0ZXJPcGVuOiBjc3NgXG4gICAgICAgICAgICAgICAgICAke3N0eWxlU3RyaW5ncy5vdmVybGF5QWZ0ZXJPcGVufTtcbiAgICAgICAgICAgICAgICBgLFxuICAgICAgICAgICAgICAgIGJlZm9yZUNsb3NlOiBjc3NgXG4gICAgICAgICAgICAgICAgICAke3N0eWxlU3RyaW5ncy5vdmVybGF5QmVmb3JlQ2xvc2V9O1xuICAgICAgICAgICAgICAgIGAsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgIDwvUmVhY3RNb2RhbD5cbiAgICAgICAgICApfVxuICAgICAgICA8L0NsYXNzTmFtZXM+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG59XG4iXX0= */",
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
};
function ReactModalGlobalStyles() {
return (0, _react2.jsx)(_react2.Global, {
styles: _ref
});
}
const styleStrings = {
modalBody: `
${_decapCmsUiDefault.shadows.dropDeep};
background-color: #fff;
border-radius: ${_decapCmsUiDefault.lengths.borderRadius};
height: 80%;
text-align: center;
max-width: 2200px;
padding: 20px;
&:focus {
outline: none;
}
`,
overlay: `
z-index: ${_decapCmsUiDefault.zIndex.zIndex99999};
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: flex;
justify-content: center;
align-items: center;
opacity: 0;
background-color: rgba(0, 0, 0, 0);
transition: background-color ${_decapCmsUiDefault.transitions.main}, opacity ${_decapCmsUiDefault.transitions.main};
`,
overlayAfterOpen: `
background-color: rgba(0, 0, 0, 0.6);
opacity: 1;
`,
overlayBeforeClose: `
background-color: rgba(0, 0, 0, 0);
opacity: 0;
`
};
class Modal extends _react.default.Component {
componentDidMount() {
_reactModal.default.setAppElement('#nc-root');
}
render() {
const {
isOpen,
children,
className,
onClose
} = this.props;
return (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)(ReactModalGlobalStyles, null), (0, _react2.jsx)(_react2.ClassNames, null, ({
css,
cx
}) => (0, _react2.jsx)(_reactModal.default, {
isOpen: isOpen,
onRequestClose: onClose,
closeTimeoutMS: 300,
className: {
base: cx(css`
${styleStrings.modalBody};
`, className),
afterOpen: '',
beforeClose: ''
},
overlayClassName: {
base: css`
${styleStrings.overlay};
`,
afterOpen: css`
${styleStrings.overlayAfterOpen};
`,
beforeClose: css`
${styleStrings.overlayBeforeClose};
`
}
}, children)));
}
}
exports.Modal = Modal;
_defineProperty(Modal, "propTypes", {
children: _propTypes.default.node.isRequired,
isOpen: _propTypes.default.bool.isRequired,
className: _propTypes.default.string,
onClose: _propTypes.default.func.isRequired
});

View File

@@ -0,0 +1,73 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireWildcard(require("react"));
var _injectStyle = require("react-toastify/dist/inject-style");
var _reactToastify = require("react-toastify");
var _reactRedux = require("react-redux");
var _reactPolyglot = require("react-polyglot");
var _notifications = require("../../actions/notifications");
var _react2 = require("@emotion/react");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
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; }
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; }
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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
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); } // eslint-disable-next-line no-unused-vars
// import { translate } from 'react-polyglot';
(0, _injectStyle.injectStyle)();
function Notifications({
notifications
}) {
const t = (0, _reactPolyglot.useTranslate)();
const dispatch = (0, _reactRedux.useDispatch)();
const [idMap, setIdMap] = _react.default.useState({});
(0, _react.useEffect)(() => {
notifications.filter(notification => !idMap[notification.id]).forEach(notification => {
const toastId = (0, _reactToastify.toast)(typeof notification.message == 'string' ? notification.message : t(notification.message.key, _objectSpread({}, notification.message)), {
autoClose: notification.dismissAfter,
type: notification.type
});
idMap[notification.id] = toastId;
setIdMap(idMap);
if (notification.dismissAfter) {
setTimeout(() => {
dispatch((0, _notifications.dismissNotification)(notification.id));
}, notification.dismissAfter);
}
});
Object.entries(idMap).forEach(([id, toastId]) => {
if (!notifications.find(notification => notification.id === id)) {
_reactToastify.toast.dismiss(toastId);
delete idMap[id];
setIdMap(idMap);
}
});
}, [notifications]);
_reactToastify.toast.onChange(payload => {
if (payload.status == 'removed') {
var _Object$entries$find;
const id = (_Object$entries$find = Object.entries(idMap).find(([, toastId]) => toastId === payload.id)) === null || _Object$entries$find === void 0 ? void 0 : _Object$entries$find[0];
if (id) {
dispatch((0, _notifications.dismissNotification)(id));
}
}
});
return (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)(_reactToastify.ToastContainer, {
position: "top-right",
theme: "colored",
className: "notif__container"
}));
}
function mapStateToProps({
notifications
}) {
return {
notifications: notifications.notifications
};
}
var _default = exports.default = (0, _reactRedux.connect)(mapStateToProps)(Notifications);

View File

@@ -0,0 +1,117 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _base = _interopRequireDefault(require("@emotion/styled/base"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react2 = require("@emotion/react");
var _reactPolyglot = require("react-polyglot");
var _decapCmsUiDefault = require("decap-cms-ui-default");
var _urlHelper = require("../../lib/urlHelper");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
const styles = {
avatarImage: process.env.NODE_ENV === "production" ? {
name: "m2n7c1-avatarImage",
styles: "width:32px;border-radius:32px;label:avatarImage;"
} : {
name: "m2n7c1-avatarImage",
styles: "width:32px;border-radius:32px;label:avatarImage;",
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1VJL1NldHRpbmdzRHJvcGRvd24uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVWtCIiwiZmlsZSI6Ii4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1VJL1NldHRpbmdzRHJvcGRvd24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IHRyYW5zbGF0ZSB9IGZyb20gJ3JlYWN0LXBvbHlnbG90JztcbmltcG9ydCB7IEljb24sIERyb3Bkb3duLCBEcm9wZG93bkl0ZW0sIERyb3Bkb3duQnV0dG9uLCBjb2xvcnMgfSBmcm9tICdkZWNhcC1jbXMtdWktZGVmYXVsdCc7XG5cbmltcG9ydCB7IHN0cmlwUHJvdG9jb2wgfSBmcm9tICcuLi8uLi9saWIvdXJsSGVscGVyJztcblxuY29uc3Qgc3R5bGVzID0ge1xuICBhdmF0YXJJbWFnZTogY3NzYFxuICAgIHdpZHRoOiAzMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDMycHg7XG4gIGAsXG59O1xuXG5jb25zdCBBdmF0YXJEcm9wZG93bkJ1dHRvbiA9IHN0eWxlZChEcm9wZG93bkJ1dHRvbilgXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogOHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiAjMWUyNTMyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbmA7XG5cbmNvbnN0IEF2YXRhckltYWdlID0gc3R5bGVkLmltZ2BcbiAgJHtzdHlsZXMuYXZhdGFySW1hZ2V9O1xuYDtcblxuY29uc3QgQXZhdGFyUGxhY2Vob2xkZXJJY29uID0gc3R5bGVkKEljb24pYFxuICAke3N0eWxlcy5hdmF0YXJJbWFnZX07XG4gIGhlaWdodDogMzJweDtcbiAgY29sb3I6ICMxZTI1MzI7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7Y29sb3JzLnRleHRGaWVsZEJvcmRlcn07XG5gO1xuXG5jb25zdCBBcHBIZWFkZXJTaXRlTGluayA9IHN0eWxlZC5hYFxuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGNvbG9yOiAjN2I4MjkwO1xuICBwYWRkaW5nOiAxMHB4IDE2cHg7XG5gO1xuXG5jb25zdCBBcHBIZWFkZXJUZXN0UmVwb0luZGljYXRvciA9IHN0eWxlZC5hYFxuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGNvbG9yOiAjN2I4MjkwO1xuICBwYWRkaW5nOiAxMHB4IDE2cHg7XG5gO1xuXG5mdW5jdGlvbiBBdmF0YXIoeyBpbWFnZVVybCB9KSB7XG4gIHJldHVybiBpbWFnZVVybCA/IChcbiAgICA8QXZhdGFySW1hZ2Ugc3JjPXtpbWFnZVVybH0gLz5cbiAgKSA6IChcbiAgICA8QXZhdGFyUGxhY2Vob2xkZXJJY29uIHR5cGU9XCJ1c2VyXCIgc2l6ZT1cImxhcmdlXCIgLz5cbiAgKTtcbn1cblxuQXZhdGFyLnByb3BUeXBlcyA9IHtcbiAgaW1hZ2VVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuXG5mdW5jdGlvbiBTZXR0aW5nc0Ryb3Bkb3duKHsgZGlzcGxheVVybCwgaXNUZXN0UmVwbywgaW1hZ2VVcmwsIG9uTG9nb3V0Q2xpY2ssIHQgfSkge1xuICByZXR1cm4gKFxuICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgIHtpc1Rlc3RSZXBvICYmIChcbiAgICAgICAgPEFwcEhlYWRlclRlc3RSZXBvSW5kaWNhdG9yXG4gICAgICAgICAgaHJlZj1cImh0dHBzOi8vd3d3LmRlY2FwY21zLm9yZy9kb2NzL3Rlc3QtYmFja2VuZFwiXG4gICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIFRlc3QgQmFja2VuZCDihpdcbiAgICAgICAgPC9BcHBIZWFkZXJUZXN0UmVwb0luZGljYXRvcj5cbiAgICAgICl9XG4gICAgICB7ZGlzcGxheVVybCA/IChcbiAgICAgICAgPEFwcEhlYWRlclNpdGVMaW5rIGhyZWY9e2Rpc3BsYXlVcmx9IHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICAgIHtzdHJpcFByb3RvY29sKGRpc3BsYXlVcmwpfVxuICAgICAgICA8L0FwcEhlYWRlclNpdGVMaW5rPlxuICAgICAgKSA6IG51bGx9XG4gICAgICA8RHJvcGRvd25cbiAgICAgICAgZHJvcGRvd25Ub3BPdmVybGFwPVwiNTBweFwiXG4gICAgICAgIGRyb3Bkb3duV2lkdGg9XCIxMDBweFwiXG4gICAgICAgIGRyb3Bkb3duUG9zaXRpb249XCJyaWdodFwiXG4gICAgICAgIHJlbmRlckJ1dHRvbj17KCkgPT4gKFxuICAgICAgICAgIDxBdmF0YXJEcm9wZG93bkJ1dHRvbj5cbiAgICAgICAgICAgIDxBdmF0YXIgaW1hZ2VVcmw9e2ltYWdlVXJsfSAvPlxuICAgICAgICAgIDwvQXZhdGFyRHJvcGRvd25CdXR0b24+XG4gICAgICAgICl9XG4gICAgICA+XG4gICAgICAgIDxEcm9wZG93bkl0ZW0gbGFiZWw9e3QoJ3VpLnNldHRpbmdzRHJvcGRvd24ubG9nT3V0Jyl9IG9uQ2xpY2s9e29uTG9nb3V0Q2xpY2t9IC8+XG4gICAgICA8L0Ryb3Bkb3duPlxuICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICk7XG59XG5cblNldHRpbmdzRHJvcGRvd24ucHJvcFR5cGVzID0ge1xuICBkaXNwbGF5VXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc1Rlc3RSZXBvOiBQcm9wVHlwZXMuYm9vbCxcbiAgaW1hZ2VVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uTG9nb3V0Q2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59O1xuXG5leHBvcnQgZGVmYXVsdCB0cmFuc2xhdGUoKShTZXR0aW5nc0Ryb3Bkb3duKTtcbiJdfQ== */",
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
}
};
const AvatarDropdownButton = /*#__PURE__*/(0, _base.default)(_decapCmsUiDefault.DropdownButton, {
target: "e1gt62yu4",
label: "AvatarDropdownButton"
})(process.env.NODE_ENV === "production" ? {
name: "dtukf8",
styles: "display:inline-block;padding:8px;cursor:pointer;color:#1e2532;background-color:transparent"
} : {
name: "dtukf8",
styles: "display:inline-block;padding:8px;cursor:pointer;color:#1e2532;background-color:transparent",
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1VJL1NldHRpbmdzRHJvcGRvd24uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0JtRCIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9VSS9TZXR0aW5nc0Ryb3Bkb3duLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyB0cmFuc2xhdGUgfSBmcm9tICdyZWFjdC1wb2x5Z2xvdCc7XG5pbXBvcnQgeyBJY29uLCBEcm9wZG93biwgRHJvcGRvd25JdGVtLCBEcm9wZG93bkJ1dHRvbiwgY29sb3JzIH0gZnJvbSAnZGVjYXAtY21zLXVpLWRlZmF1bHQnO1xuXG5pbXBvcnQgeyBzdHJpcFByb3RvY29sIH0gZnJvbSAnLi4vLi4vbGliL3VybEhlbHBlcic7XG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgYXZhdGFySW1hZ2U6IGNzc2BcbiAgICB3aWR0aDogMzJweDtcbiAgICBib3JkZXItcmFkaXVzOiAzMnB4O1xuICBgLFxufTtcblxuY29uc3QgQXZhdGFyRHJvcGRvd25CdXR0b24gPSBzdHlsZWQoRHJvcGRvd25CdXR0b24pYFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDhweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogIzFlMjUzMjtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5gO1xuXG5jb25zdCBBdmF0YXJJbWFnZSA9IHN0eWxlZC5pbWdgXG4gICR7c3R5bGVzLmF2YXRhckltYWdlfTtcbmA7XG5cbmNvbnN0IEF2YXRhclBsYWNlaG9sZGVySWNvbiA9IHN0eWxlZChJY29uKWBcbiAgJHtzdHlsZXMuYXZhdGFySW1hZ2V9O1xuICBoZWlnaHQ6IDMycHg7XG4gIGNvbG9yOiAjMWUyNTMyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke2NvbG9ycy50ZXh0RmllbGRCb3JkZXJ9O1xuYDtcblxuY29uc3QgQXBwSGVhZGVyU2l0ZUxpbmsgPSBzdHlsZWQuYWBcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBjb2xvcjogIzdiODI5MDtcbiAgcGFkZGluZzogMTBweCAxNnB4O1xuYDtcblxuY29uc3QgQXBwSGVhZGVyVGVzdFJlcG9JbmRpY2F0b3IgPSBzdHlsZWQuYWBcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBjb2xvcjogIzdiODI5MDtcbiAgcGFkZGluZzogMTBweCAxNnB4O1xuYDtcblxuZnVuY3Rpb24gQXZhdGFyKHsgaW1hZ2VVcmwgfSkge1xuICByZXR1cm4gaW1hZ2VVcmwgPyAoXG4gICAgPEF2YXRhckltYWdlIHNyYz17aW1hZ2VVcmx9IC8+XG4gICkgOiAoXG4gICAgPEF2YXRhclBsYWNlaG9sZGVySWNvbiB0eXBlPVwidXNlclwiIHNpemU9XCJsYXJnZVwiIC8+XG4gICk7XG59XG5cbkF2YXRhci5wcm9wVHlwZXMgPSB7XG4gIGltYWdlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuZnVuY3Rpb24gU2V0dGluZ3NEcm9wZG93bih7IGRpc3BsYXlVcmwsIGlzVGVzdFJlcG8sIGltYWdlVXJsLCBvbkxvZ291dENsaWNrLCB0IH0pIHtcbiAgcmV0dXJuIChcbiAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICB7aXNUZXN0UmVwbyAmJiAoXG4gICAgICAgIDxBcHBIZWFkZXJUZXN0UmVwb0luZGljYXRvclxuICAgICAgICAgIGhyZWY9XCJodHRwczovL3d3dy5kZWNhcGNtcy5vcmcvZG9jcy90ZXN0LWJhY2tlbmRcIlxuICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgID5cbiAgICAgICAgICBUZXN0IEJhY2tlbmQg4oaXXG4gICAgICAgIDwvQXBwSGVhZGVyVGVzdFJlcG9JbmRpY2F0b3I+XG4gICAgICApfVxuICAgICAge2Rpc3BsYXlVcmwgPyAoXG4gICAgICAgIDxBcHBIZWFkZXJTaXRlTGluayBocmVmPXtkaXNwbGF5VXJsfSB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgICAgICB7c3RyaXBQcm90b2NvbChkaXNwbGF5VXJsKX1cbiAgICAgICAgPC9BcHBIZWFkZXJTaXRlTGluaz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPERyb3Bkb3duXG4gICAgICAgIGRyb3Bkb3duVG9wT3ZlcmxhcD1cIjUwcHhcIlxuICAgICAgICBkcm9wZG93bldpZHRoPVwiMTAwcHhcIlxuICAgICAgICBkcm9wZG93blBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgICByZW5kZXJCdXR0b249eygpID0+IChcbiAgICAgICAgICA8QXZhdGFyRHJvcGRvd25CdXR0b24+XG4gICAgICAgICAgICA8QXZhdGFyIGltYWdlVXJsPXtpbWFnZVVybH0gLz5cbiAgICAgICAgICA8L0F2YXRhckRyb3Bkb3duQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPlxuICAgICAgICA8RHJvcGRvd25JdGVtIGxhYmVsPXt0KCd1aS5zZXR0aW5nc0Ryb3Bkb3duLmxvZ091dCcpfSBvbkNsaWNrPXtvbkxvZ291dENsaWNrfSAvPlxuICAgICAgPC9Ecm9wZG93bj5cbiAgICA8L1JlYWN0LkZyYWdtZW50PlxuICApO1xufVxuXG5TZXR0aW5nc0Ryb3Bkb3duLnByb3BUeXBlcyA9IHtcbiAgZGlzcGxheVVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNUZXN0UmVwbzogUHJvcFR5cGVzLmJvb2wsXG4gIGltYWdlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvbkxvZ291dENsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICB0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgdHJhbnNsYXRlKCkoU2V0dGluZ3NEcm9wZG93bik7XG4iXX0= */",
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
});
const AvatarImage = /*#__PURE__*/(0, _base.default)("img", {
target: "e1gt62yu3",
label: "AvatarImage"
})(styles.avatarImage, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1VJL1NldHRpbmdzRHJvcGRvd24uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0I4QiIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9VSS9TZXR0aW5nc0Ryb3Bkb3duLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyB0cmFuc2xhdGUgfSBmcm9tICdyZWFjdC1wb2x5Z2xvdCc7XG5pbXBvcnQgeyBJY29uLCBEcm9wZG93biwgRHJvcGRvd25JdGVtLCBEcm9wZG93bkJ1dHRvbiwgY29sb3JzIH0gZnJvbSAnZGVjYXAtY21zLXVpLWRlZmF1bHQnO1xuXG5pbXBvcnQgeyBzdHJpcFByb3RvY29sIH0gZnJvbSAnLi4vLi4vbGliL3VybEhlbHBlcic7XG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgYXZhdGFySW1hZ2U6IGNzc2BcbiAgICB3aWR0aDogMzJweDtcbiAgICBib3JkZXItcmFkaXVzOiAzMnB4O1xuICBgLFxufTtcblxuY29uc3QgQXZhdGFyRHJvcGRvd25CdXR0b24gPSBzdHlsZWQoRHJvcGRvd25CdXR0b24pYFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDhweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogIzFlMjUzMjtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5gO1xuXG5jb25zdCBBdmF0YXJJbWFnZSA9IHN0eWxlZC5pbWdgXG4gICR7c3R5bGVzLmF2YXRhckltYWdlfTtcbmA7XG5cbmNvbnN0IEF2YXRhclBsYWNlaG9sZGVySWNvbiA9IHN0eWxlZChJY29uKWBcbiAgJHtzdHlsZXMuYXZhdGFySW1hZ2V9O1xuICBoZWlnaHQ6IDMycHg7XG4gIGNvbG9yOiAjMWUyNTMyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke2NvbG9ycy50ZXh0RmllbGRCb3JkZXJ9O1xuYDtcblxuY29uc3QgQXBwSGVhZGVyU2l0ZUxpbmsgPSBzdHlsZWQuYWBcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBjb2xvcjogIzdiODI5MDtcbiAgcGFkZGluZzogMTBweCAxNnB4O1xuYDtcblxuY29uc3QgQXBwSGVhZGVyVGVzdFJlcG9JbmRpY2F0b3IgPSBzdHlsZWQuYWBcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBjb2xvcjogIzdiODI5MDtcbiAgcGFkZGluZzogMTBweCAxNnB4O1xuYDtcblxuZnVuY3Rpb24gQXZhdGFyKHsgaW1hZ2VVcmwgfSkge1xuICByZXR1cm4gaW1hZ2VVcmwgPyAoXG4gICAgPEF2YXRhckltYWdlIHNyYz17aW1hZ2VVcmx9IC8+XG4gICkgOiAoXG4gICAgPEF2YXRhclBsYWNlaG9sZGVySWNvbiB0eXBlPVwidXNlclwiIHNpemU9XCJsYXJnZVwiIC8+XG4gICk7XG59XG5cbkF2YXRhci5wcm9wVHlwZXMgPSB7XG4gIGltYWdlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuZnVuY3Rpb24gU2V0dGluZ3NEcm9wZG93bih7IGRpc3BsYXlVcmwsIGlzVGVzdFJlcG8sIGltYWdlVXJsLCBvbkxvZ291dENsaWNrLCB0IH0pIHtcbiAgcmV0dXJuIChcbiAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICB7aXNUZXN0UmVwbyAmJiAoXG4gICAgICAgIDxBcHBIZWFkZXJUZXN0UmVwb0luZGljYXRvclxuICAgICAgICAgIGhyZWY9XCJodHRwczovL3d3dy5kZWNhcGNtcy5vcmcvZG9jcy90ZXN0LWJhY2tlbmRcIlxuICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgID5cbiAgICAgICAgICBUZXN0IEJhY2tlbmQg4oaXXG4gICAgICAgIDwvQXBwSGVhZGVyVGVzdFJlcG9JbmRpY2F0b3I+XG4gICAgICApfVxuICAgICAge2Rpc3BsYXlVcmwgPyAoXG4gICAgICAgIDxBcHBIZWFkZXJTaXRlTGluayBocmVmPXtkaXNwbGF5VXJsfSB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgICAgICB7c3RyaXBQcm90b2NvbChkaXNwbGF5VXJsKX1cbiAgICAgICAgPC9BcHBIZWFkZXJTaXRlTGluaz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPERyb3Bkb3duXG4gICAgICAgIGRyb3Bkb3duVG9wT3ZlcmxhcD1cIjUwcHhcIlxuICAgICAgICBkcm9wZG93bldpZHRoPVwiMTAwcHhcIlxuICAgICAgICBkcm9wZG93blBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgICByZW5kZXJCdXR0b249eygpID0+IChcbiAgICAgICAgICA8QXZhdGFyRHJvcGRvd25CdXR0b24+XG4gICAgICAgICAgICA8QXZhdGFyIGltYWdlVXJsPXtpbWFnZVVybH0gLz5cbiAgICAgICAgICA8L0F2YXRhckRyb3Bkb3duQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPlxuICAgICAgICA8RHJvcGRvd25JdGVtIGxhYmVsPXt0KCd1aS5zZXR0aW5nc0Ryb3Bkb3duLmxvZ091dCcpfSBvbkNsaWNrPXtvbkxvZ291dENsaWNrfSAvPlxuICAgICAgPC9Ecm9wZG93bj5cbiAgICA8L1JlYWN0LkZyYWdtZW50PlxuICApO1xufVxuXG5TZXR0aW5nc0Ryb3Bkb3duLnByb3BUeXBlcyA9IHtcbiAgZGlzcGxheVVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNUZXN0UmVwbzogUHJvcFR5cGVzLmJvb2wsXG4gIGltYWdlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvbkxvZ291dENsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICB0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgdHJhbnNsYXRlKCkoU2V0dGluZ3NEcm9wZG93bik7XG4iXX0= */"));
const AvatarPlaceholderIcon = /*#__PURE__*/(0, _base.default)(_decapCmsUiDefault.Icon, {
target: "e1gt62yu2",
label: "AvatarPlaceholderIcon"
})(styles.avatarImage, ";height:32px;color:#1e2532;background-color:", _decapCmsUiDefault.colors.textFieldBorder, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1VJL1NldHRpbmdzRHJvcGRvd24uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNEIwQyIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9VSS9TZXR0aW5nc0Ryb3Bkb3duLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyB0cmFuc2xhdGUgfSBmcm9tICdyZWFjdC1wb2x5Z2xvdCc7XG5pbXBvcnQgeyBJY29uLCBEcm9wZG93biwgRHJvcGRvd25JdGVtLCBEcm9wZG93bkJ1dHRvbiwgY29sb3JzIH0gZnJvbSAnZGVjYXAtY21zLXVpLWRlZmF1bHQnO1xuXG5pbXBvcnQgeyBzdHJpcFByb3RvY29sIH0gZnJvbSAnLi4vLi4vbGliL3VybEhlbHBlcic7XG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgYXZhdGFySW1hZ2U6IGNzc2BcbiAgICB3aWR0aDogMzJweDtcbiAgICBib3JkZXItcmFkaXVzOiAzMnB4O1xuICBgLFxufTtcblxuY29uc3QgQXZhdGFyRHJvcGRvd25CdXR0b24gPSBzdHlsZWQoRHJvcGRvd25CdXR0b24pYFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDhweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogIzFlMjUzMjtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5gO1xuXG5jb25zdCBBdmF0YXJJbWFnZSA9IHN0eWxlZC5pbWdgXG4gICR7c3R5bGVzLmF2YXRhckltYWdlfTtcbmA7XG5cbmNvbnN0IEF2YXRhclBsYWNlaG9sZGVySWNvbiA9IHN0eWxlZChJY29uKWBcbiAgJHtzdHlsZXMuYXZhdGFySW1hZ2V9O1xuICBoZWlnaHQ6IDMycHg7XG4gIGNvbG9yOiAjMWUyNTMyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke2NvbG9ycy50ZXh0RmllbGRCb3JkZXJ9O1xuYDtcblxuY29uc3QgQXBwSGVhZGVyU2l0ZUxpbmsgPSBzdHlsZWQuYWBcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBjb2xvcjogIzdiODI5MDtcbiAgcGFkZGluZzogMTBweCAxNnB4O1xuYDtcblxuY29uc3QgQXBwSGVhZGVyVGVzdFJlcG9JbmRpY2F0b3IgPSBzdHlsZWQuYWBcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBjb2xvcjogIzdiODI5MDtcbiAgcGFkZGluZzogMTBweCAxNnB4O1xuYDtcblxuZnVuY3Rpb24gQXZhdGFyKHsgaW1hZ2VVcmwgfSkge1xuICByZXR1cm4gaW1hZ2VVcmwgPyAoXG4gICAgPEF2YXRhckltYWdlIHNyYz17aW1hZ2VVcmx9IC8+XG4gICkgOiAoXG4gICAgPEF2YXRhclBsYWNlaG9sZGVySWNvbiB0eXBlPVwidXNlclwiIHNpemU9XCJsYXJnZVwiIC8+XG4gICk7XG59XG5cbkF2YXRhci5wcm9wVHlwZXMgPSB7XG4gIGltYWdlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuZnVuY3Rpb24gU2V0dGluZ3NEcm9wZG93bih7IGRpc3BsYXlVcmwsIGlzVGVzdFJlcG8sIGltYWdlVXJsLCBvbkxvZ291dENsaWNrLCB0IH0pIHtcbiAgcmV0dXJuIChcbiAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICB7aXNUZXN0UmVwbyAmJiAoXG4gICAgICAgIDxBcHBIZWFkZXJUZXN0UmVwb0luZGljYXRvclxuICAgICAgICAgIGhyZWY9XCJodHRwczovL3d3dy5kZWNhcGNtcy5vcmcvZG9jcy90ZXN0LWJhY2tlbmRcIlxuICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgID5cbiAgICAgICAgICBUZXN0IEJhY2tlbmQg4oaXXG4gICAgICAgIDwvQXBwSGVhZGVyVGVzdFJlcG9JbmRpY2F0b3I+XG4gICAgICApfVxuICAgICAge2Rpc3BsYXlVcmwgPyAoXG4gICAgICAgIDxBcHBIZWFkZXJTaXRlTGluayBocmVmPXtkaXNwbGF5VXJsfSB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgICAgICB7c3RyaXBQcm90b2NvbChkaXNwbGF5VXJsKX1cbiAgICAgICAgPC9BcHBIZWFkZXJTaXRlTGluaz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPERyb3Bkb3duXG4gICAgICAgIGRyb3Bkb3duVG9wT3ZlcmxhcD1cIjUwcHhcIlxuICAgICAgICBkcm9wZG93bldpZHRoPVwiMTAwcHhcIlxuICAgICAgICBkcm9wZG93blBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgICByZW5kZXJCdXR0b249eygpID0+IChcbiAgICAgICAgICA8QXZhdGFyRHJvcGRvd25CdXR0b24+XG4gICAgICAgICAgICA8QXZhdGFyIGltYWdlVXJsPXtpbWFnZVVybH0gLz5cbiAgICAgICAgICA8L0F2YXRhckRyb3Bkb3duQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPlxuICAgICAgICA8RHJvcGRvd25JdGVtIGxhYmVsPXt0KCd1aS5zZXR0aW5nc0Ryb3Bkb3duLmxvZ091dCcpfSBvbkNsaWNrPXtvbkxvZ291dENsaWNrfSAvPlxuICAgICAgPC9Ecm9wZG93bj5cbiAgICA8L1JlYWN0LkZyYWdtZW50PlxuICApO1xufVxuXG5TZXR0aW5nc0Ryb3Bkb3duLnByb3BUeXBlcyA9IHtcbiAgZGlzcGxheVVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNUZXN0UmVwbzogUHJvcFR5cGVzLmJvb2wsXG4gIGltYWdlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvbkxvZ291dENsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICB0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgdHJhbnNsYXRlKCkoU2V0dGluZ3NEcm9wZG93bik7XG4iXX0= */"));
const AppHeaderSiteLink = /*#__PURE__*/(0, _base.default)("a", {
target: "e1gt62yu1",
label: "AppHeaderSiteLink"
})(process.env.NODE_ENV === "production" ? {
name: "1uk00au",
styles: "font-size:14px;font-weight:400;color:#7b8290;padding:10px 16px"
} : {
name: "1uk00au",
styles: "font-size:14px;font-weight:400;color:#7b8290;padding:10px 16px",
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1VJL1NldHRpbmdzRHJvcGRvd24uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUNrQyIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9VSS9TZXR0aW5nc0Ryb3Bkb3duLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyB0cmFuc2xhdGUgfSBmcm9tICdyZWFjdC1wb2x5Z2xvdCc7XG5pbXBvcnQgeyBJY29uLCBEcm9wZG93biwgRHJvcGRvd25JdGVtLCBEcm9wZG93bkJ1dHRvbiwgY29sb3JzIH0gZnJvbSAnZGVjYXAtY21zLXVpLWRlZmF1bHQnO1xuXG5pbXBvcnQgeyBzdHJpcFByb3RvY29sIH0gZnJvbSAnLi4vLi4vbGliL3VybEhlbHBlcic7XG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgYXZhdGFySW1hZ2U6IGNzc2BcbiAgICB3aWR0aDogMzJweDtcbiAgICBib3JkZXItcmFkaXVzOiAzMnB4O1xuICBgLFxufTtcblxuY29uc3QgQXZhdGFyRHJvcGRvd25CdXR0b24gPSBzdHlsZWQoRHJvcGRvd25CdXR0b24pYFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDhweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogIzFlMjUzMjtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5gO1xuXG5jb25zdCBBdmF0YXJJbWFnZSA9IHN0eWxlZC5pbWdgXG4gICR7c3R5bGVzLmF2YXRhckltYWdlfTtcbmA7XG5cbmNvbnN0IEF2YXRhclBsYWNlaG9sZGVySWNvbiA9IHN0eWxlZChJY29uKWBcbiAgJHtzdHlsZXMuYXZhdGFySW1hZ2V9O1xuICBoZWlnaHQ6IDMycHg7XG4gIGNvbG9yOiAjMWUyNTMyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke2NvbG9ycy50ZXh0RmllbGRCb3JkZXJ9O1xuYDtcblxuY29uc3QgQXBwSGVhZGVyU2l0ZUxpbmsgPSBzdHlsZWQuYWBcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBjb2xvcjogIzdiODI5MDtcbiAgcGFkZGluZzogMTBweCAxNnB4O1xuYDtcblxuY29uc3QgQXBwSGVhZGVyVGVzdFJlcG9JbmRpY2F0b3IgPSBzdHlsZWQuYWBcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBjb2xvcjogIzdiODI5MDtcbiAgcGFkZGluZzogMTBweCAxNnB4O1xuYDtcblxuZnVuY3Rpb24gQXZhdGFyKHsgaW1hZ2VVcmwgfSkge1xuICByZXR1cm4gaW1hZ2VVcmwgPyAoXG4gICAgPEF2YXRhckltYWdlIHNyYz17aW1hZ2VVcmx9IC8+XG4gICkgOiAoXG4gICAgPEF2YXRhclBsYWNlaG9sZGVySWNvbiB0eXBlPVwidXNlclwiIHNpemU9XCJsYXJnZVwiIC8+XG4gICk7XG59XG5cbkF2YXRhci5wcm9wVHlwZXMgPSB7XG4gIGltYWdlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuZnVuY3Rpb24gU2V0dGluZ3NEcm9wZG93bih7IGRpc3BsYXlVcmwsIGlzVGVzdFJlcG8sIGltYWdlVXJsLCBvbkxvZ291dENsaWNrLCB0IH0pIHtcbiAgcmV0dXJuIChcbiAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICB7aXNUZXN0UmVwbyAmJiAoXG4gICAgICAgIDxBcHBIZWFkZXJUZXN0UmVwb0luZGljYXRvclxuICAgICAgICAgIGhyZWY9XCJodHRwczovL3d3dy5kZWNhcGNtcy5vcmcvZG9jcy90ZXN0LWJhY2tlbmRcIlxuICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgID5cbiAgICAgICAgICBUZXN0IEJhY2tlbmQg4oaXXG4gICAgICAgIDwvQXBwSGVhZGVyVGVzdFJlcG9JbmRpY2F0b3I+XG4gICAgICApfVxuICAgICAge2Rpc3BsYXlVcmwgPyAoXG4gICAgICAgIDxBcHBIZWFkZXJTaXRlTGluayBocmVmPXtkaXNwbGF5VXJsfSB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgICAgICB7c3RyaXBQcm90b2NvbChkaXNwbGF5VXJsKX1cbiAgICAgICAgPC9BcHBIZWFkZXJTaXRlTGluaz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPERyb3Bkb3duXG4gICAgICAgIGRyb3Bkb3duVG9wT3ZlcmxhcD1cIjUwcHhcIlxuICAgICAgICBkcm9wZG93bldpZHRoPVwiMTAwcHhcIlxuICAgICAgICBkcm9wZG93blBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgICByZW5kZXJCdXR0b249eygpID0+IChcbiAgICAgICAgICA8QXZhdGFyRHJvcGRvd25CdXR0b24+XG4gICAgICAgICAgICA8QXZhdGFyIGltYWdlVXJsPXtpbWFnZVVybH0gLz5cbiAgICAgICAgICA8L0F2YXRhckRyb3Bkb3duQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPlxuICAgICAgICA8RHJvcGRvd25JdGVtIGxhYmVsPXt0KCd1aS5zZXR0aW5nc0Ryb3Bkb3duLmxvZ091dCcpfSBvbkNsaWNrPXtvbkxvZ291dENsaWNrfSAvPlxuICAgICAgPC9Ecm9wZG93bj5cbiAgICA8L1JlYWN0LkZyYWdtZW50PlxuICApO1xufVxuXG5TZXR0aW5nc0Ryb3Bkb3duLnByb3BUeXBlcyA9IHtcbiAgZGlzcGxheVVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNUZXN0UmVwbzogUHJvcFR5cGVzLmJvb2wsXG4gIGltYWdlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvbkxvZ291dENsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICB0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgdHJhbnNsYXRlKCkoU2V0dGluZ3NEcm9wZG93bik7XG4iXX0= */",
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
});
const AppHeaderTestRepoIndicator = /*#__PURE__*/(0, _base.default)("a", {
target: "e1gt62yu0",
label: "AppHeaderTestRepoIndicator"
})(process.env.NODE_ENV === "production" ? {
name: "1uk00au",
styles: "font-size:14px;font-weight:400;color:#7b8290;padding:10px 16px"
} : {
name: "1uk00au",
styles: "font-size:14px;font-weight:400;color:#7b8290;padding:10px 16px",
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1VJL1NldHRpbmdzRHJvcGRvd24uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMEMyQyIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9VSS9TZXR0aW5nc0Ryb3Bkb3duLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyB0cmFuc2xhdGUgfSBmcm9tICdyZWFjdC1wb2x5Z2xvdCc7XG5pbXBvcnQgeyBJY29uLCBEcm9wZG93biwgRHJvcGRvd25JdGVtLCBEcm9wZG93bkJ1dHRvbiwgY29sb3JzIH0gZnJvbSAnZGVjYXAtY21zLXVpLWRlZmF1bHQnO1xuXG5pbXBvcnQgeyBzdHJpcFByb3RvY29sIH0gZnJvbSAnLi4vLi4vbGliL3VybEhlbHBlcic7XG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgYXZhdGFySW1hZ2U6IGNzc2BcbiAgICB3aWR0aDogMzJweDtcbiAgICBib3JkZXItcmFkaXVzOiAzMnB4O1xuICBgLFxufTtcblxuY29uc3QgQXZhdGFyRHJvcGRvd25CdXR0b24gPSBzdHlsZWQoRHJvcGRvd25CdXR0b24pYFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDhweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogIzFlMjUzMjtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5gO1xuXG5jb25zdCBBdmF0YXJJbWFnZSA9IHN0eWxlZC5pbWdgXG4gICR7c3R5bGVzLmF2YXRhckltYWdlfTtcbmA7XG5cbmNvbnN0IEF2YXRhclBsYWNlaG9sZGVySWNvbiA9IHN0eWxlZChJY29uKWBcbiAgJHtzdHlsZXMuYXZhdGFySW1hZ2V9O1xuICBoZWlnaHQ6IDMycHg7XG4gIGNvbG9yOiAjMWUyNTMyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke2NvbG9ycy50ZXh0RmllbGRCb3JkZXJ9O1xuYDtcblxuY29uc3QgQXBwSGVhZGVyU2l0ZUxpbmsgPSBzdHlsZWQuYWBcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBjb2xvcjogIzdiODI5MDtcbiAgcGFkZGluZzogMTBweCAxNnB4O1xuYDtcblxuY29uc3QgQXBwSGVhZGVyVGVzdFJlcG9JbmRpY2F0b3IgPSBzdHlsZWQuYWBcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBjb2xvcjogIzdiODI5MDtcbiAgcGFkZGluZzogMTBweCAxNnB4O1xuYDtcblxuZnVuY3Rpb24gQXZhdGFyKHsgaW1hZ2VVcmwgfSkge1xuICByZXR1cm4gaW1hZ2VVcmwgPyAoXG4gICAgPEF2YXRhckltYWdlIHNyYz17aW1hZ2VVcmx9IC8+XG4gICkgOiAoXG4gICAgPEF2YXRhclBsYWNlaG9sZGVySWNvbiB0eXBlPVwidXNlclwiIHNpemU9XCJsYXJnZVwiIC8+XG4gICk7XG59XG5cbkF2YXRhci5wcm9wVHlwZXMgPSB7XG4gIGltYWdlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuZnVuY3Rpb24gU2V0dGluZ3NEcm9wZG93bih7IGRpc3BsYXlVcmwsIGlzVGVzdFJlcG8sIGltYWdlVXJsLCBvbkxvZ291dENsaWNrLCB0IH0pIHtcbiAgcmV0dXJuIChcbiAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICB7aXNUZXN0UmVwbyAmJiAoXG4gICAgICAgIDxBcHBIZWFkZXJUZXN0UmVwb0luZGljYXRvclxuICAgICAgICAgIGhyZWY9XCJodHRwczovL3d3dy5kZWNhcGNtcy5vcmcvZG9jcy90ZXN0LWJhY2tlbmRcIlxuICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgID5cbiAgICAgICAgICBUZXN0IEJhY2tlbmQg4oaXXG4gICAgICAgIDwvQXBwSGVhZGVyVGVzdFJlcG9JbmRpY2F0b3I+XG4gICAgICApfVxuICAgICAge2Rpc3BsYXlVcmwgPyAoXG4gICAgICAgIDxBcHBIZWFkZXJTaXRlTGluayBocmVmPXtkaXNwbGF5VXJsfSB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgICAgICB7c3RyaXBQcm90b2NvbChkaXNwbGF5VXJsKX1cbiAgICAgICAgPC9BcHBIZWFkZXJTaXRlTGluaz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPERyb3Bkb3duXG4gICAgICAgIGRyb3Bkb3duVG9wT3ZlcmxhcD1cIjUwcHhcIlxuICAgICAgICBkcm9wZG93bldpZHRoPVwiMTAwcHhcIlxuICAgICAgICBkcm9wZG93blBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgICByZW5kZXJCdXR0b249eygpID0+IChcbiAgICAgICAgICA8QXZhdGFyRHJvcGRvd25CdXR0b24+XG4gICAgICAgICAgICA8QXZhdGFyIGltYWdlVXJsPXtpbWFnZVVybH0gLz5cbiAgICAgICAgICA8L0F2YXRhckRyb3Bkb3duQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPlxuICAgICAgICA8RHJvcGRvd25JdGVtIGxhYmVsPXt0KCd1aS5zZXR0aW5nc0Ryb3Bkb3duLmxvZ091dCcpfSBvbkNsaWNrPXtvbkxvZ291dENsaWNrfSAvPlxuICAgICAgPC9Ecm9wZG93bj5cbiAgICA8L1JlYWN0LkZyYWdtZW50PlxuICApO1xufVxuXG5TZXR0aW5nc0Ryb3Bkb3duLnByb3BUeXBlcyA9IHtcbiAgZGlzcGxheVVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNUZXN0UmVwbzogUHJvcFR5cGVzLmJvb2wsXG4gIGltYWdlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvbkxvZ291dENsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICB0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgdHJhbnNsYXRlKCkoU2V0dGluZ3NEcm9wZG93bik7XG4iXX0= */",
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
});
function Avatar({
imageUrl
}) {
return imageUrl ? (0, _react2.jsx)(AvatarImage, {
src: imageUrl
}) : (0, _react2.jsx)(AvatarPlaceholderIcon, {
type: "user",
size: "large"
});
}
Avatar.propTypes = {
imageUrl: _propTypes.default.string
};
function SettingsDropdown({
displayUrl,
isTestRepo,
imageUrl,
onLogoutClick,
t
}) {
return (0, _react2.jsx)(_react.default.Fragment, null, isTestRepo && (0, _react2.jsx)(AppHeaderTestRepoIndicator, {
href: "https://www.decapcms.org/docs/test-backend",
target: "_blank",
rel: "noopener noreferrer"
}, "Test Backend \u2197"), displayUrl ? (0, _react2.jsx)(AppHeaderSiteLink, {
href: displayUrl,
target: "_blank"
}, (0, _urlHelper.stripProtocol)(displayUrl)) : null, (0, _react2.jsx)(_decapCmsUiDefault.Dropdown, {
dropdownTopOverlap: "50px",
dropdownWidth: "100px",
dropdownPosition: "right",
renderButton: () => (0, _react2.jsx)(AvatarDropdownButton, null, (0, _react2.jsx)(Avatar, {
imageUrl: imageUrl
}))
}, (0, _react2.jsx)(_decapCmsUiDefault.DropdownItem, {
label: t('ui.settingsDropdown.logOut'),
onClick: onLogoutClick
})));
}
SettingsDropdown.propTypes = {
displayUrl: _propTypes.default.string,
isTestRepo: _propTypes.default.bool,
imageUrl: _propTypes.default.string,
onLogoutClick: _propTypes.default.func.isRequired,
t: _propTypes.default.func.isRequired
};
var _default = exports.default = (0, _reactPolyglot.translate)()(SettingsDropdown);

View File

@@ -0,0 +1,60 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "DragSource", {
enumerable: true,
get: function () {
return _DragDrop.DragSource;
}
});
Object.defineProperty(exports, "DropTarget", {
enumerable: true,
get: function () {
return _DragDrop.DropTarget;
}
});
Object.defineProperty(exports, "ErrorBoundary", {
enumerable: true,
get: function () {
return _ErrorBoundary.default;
}
});
Object.defineProperty(exports, "FileUploadButton", {
enumerable: true,
get: function () {
return _FileUploadButton.FileUploadButton;
}
});
Object.defineProperty(exports, "HTML5DragDrop", {
enumerable: true,
get: function () {
return _DragDrop.HTML5DragDrop;
}
});
Object.defineProperty(exports, "Modal", {
enumerable: true,
get: function () {
return _Modal.Modal;
}
});
Object.defineProperty(exports, "Notifications", {
enumerable: true,
get: function () {
return _Notifications.default;
}
});
Object.defineProperty(exports, "SettingsDropdown", {
enumerable: true,
get: function () {
return _SettingsDropdown.default;
}
});
var _DragDrop = require("./DragDrop");
var _ErrorBoundary = _interopRequireDefault(require("./ErrorBoundary"));
var _FileUploadButton = require("./FileUploadButton");
var _Modal = require("./Modal");
var _Notifications = _interopRequireDefault(require("./Notifications"));
var _SettingsDropdown = _interopRequireDefault(require("./SettingsDropdown"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,8 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.FOLDER = exports.FILES = void 0;
const FILES = exports.FILES = 'file_based_collection';
const FOLDER = exports.FOLDER = 'folder_based_collection';

View File

@@ -0,0 +1,8 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.VIEW_STYLE_LIST = exports.VIEW_STYLE_GRID = void 0;
const VIEW_STYLE_LIST = exports.VIEW_STYLE_LIST = 'VIEW_STYLE_LIST';
const VIEW_STYLE_GRID = exports.VIEW_STYLE_GRID = 'VIEW_STYLE_GRID';

View File

@@ -0,0 +1,8 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.COMMIT_DATE = exports.COMMIT_AUTHOR = void 0;
const COMMIT_AUTHOR = exports.COMMIT_AUTHOR = 'commit_author';
const COMMIT_DATE = exports.COMMIT_DATE = 'commit_date';

View File

@@ -0,0 +1,593 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.validateConfig = validateConfig;
var _ajv = _interopRequireDefault(require("ajv"));
var _keywords = require("ajv-keywords/dist/keywords");
var _ajvErrors = _interopRequireDefault(require("ajv-errors"));
var _uuid = require("uuid");
var _formats = require("../formats/formats");
var _registry = require("../lib/registry");
var _i18n = require("../lib/i18n");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _extendableBuiltin(cls) {
function ExtendableBuiltin() {
var instance = Reflect.construct(cls, Array.from(arguments));
Object.setPrototypeOf(instance, Object.getPrototypeOf(this));
return instance;
}
ExtendableBuiltin.prototype = Object.create(cls.prototype, {
constructor: {
value: cls,
enumerable: false,
writable: true,
configurable: true
}
});
if (Object.setPrototypeOf) {
Object.setPrototypeOf(ExtendableBuiltin, cls);
} else {
ExtendableBuiltin.__proto__ = cls;
}
return ExtendableBuiltin;
}
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; }
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; }
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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
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); }
const localeType = {
type: 'string',
minLength: 2,
maxLength: 10,
pattern: '^[a-zA-Z-_]+$'
};
const i18n = {
type: 'object',
properties: {
structure: {
type: 'string',
enum: Object.values(_i18n.I18N_STRUCTURE)
},
locales: {
type: 'array',
minItems: 1,
items: localeType,
uniqueItems: true
},
default_locale: localeType
}
};
const i18nRoot = _objectSpread(_objectSpread({}, i18n), {}, {
required: ['structure', 'locales']
});
const i18nCollection = {
oneOf: [{
type: 'boolean'
}, i18n]
};
const i18nField = {
oneOf: [{
type: 'boolean'
}, {
type: 'string',
enum: Object.values(_i18n.I18N_FIELD)
}]
};
/**
* Config for fields in both file and folder collections.
*/
function fieldsConfig() {
const id = (0, _uuid.v4)();
return {
$id: `fields_${id}`,
type: 'array',
minItems: 1,
items: {
// ------- Each field: -------
$id: `field_${id}`,
type: 'object',
properties: {
name: {
type: 'string'
},
label: {
type: 'string'
},
widget: {
type: 'string'
},
required: {
type: 'boolean'
},
i18n: i18nField,
hint: {
type: 'string'
},
pattern: {
type: 'array',
minItems: 2,
items: [{
oneOf: [{
type: 'string'
}, {
instanceof: 'RegExp'
}]
}, {
type: 'string'
}]
},
field: {
$ref: `field_${id}`
},
fields: {
$ref: `fields_${id}`
},
types: {
$ref: `fields_${id}`
}
},
select: {
$data: '0/widget'
},
selectCases: _objectSpread({}, getWidgetSchemas()),
required: ['name']
},
uniqueItemProperties: ['name']
};
}
const viewFilters = {
type: 'array',
minItems: 1,
items: {
type: 'object',
properties: {
label: {
type: 'string'
},
field: {
type: 'string'
},
pattern: {
oneOf: [{
type: 'boolean'
}, {
type: 'string'
}]
}
},
additionalProperties: false,
required: ['label', 'field', 'pattern']
}
};
const viewGroups = {
type: 'array',
minItems: 1,
items: {
type: 'object',
properties: {
label: {
type: 'string'
},
field: {
type: 'string'
},
pattern: {
type: 'string'
}
},
additionalProperties: false,
required: ['label', 'field']
}
};
/**
* The schema had to be wrapped in a function to
* fix a circular dependency problem for WebPack,
* where the imports get resolved asynchronously.
*/
function getConfigSchema() {
return {
type: 'object',
properties: {
backend: {
type: 'object',
properties: {
name: {
type: 'string',
examples: ['test-repo']
},
auth_scope: {
type: 'string',
examples: ['repo', 'public_repo'],
enum: ['repo', 'public_repo']
},
cms_label_prefix: {
type: 'string',
minLength: 1
},
open_authoring: {
type: 'boolean',
examples: [true]
}
},
required: ['name']
},
local_backend: {
oneOf: [{
type: 'boolean'
}, {
type: 'object',
properties: {
url: {
type: 'string',
examples: ['http://localhost:8081/api/v1']
},
allowed_hosts: {
type: 'array',
items: {
type: 'string'
}
}
},
additionalProperties: false
}]
},
locale: {
type: 'string',
examples: ['en', 'fr', 'de']
},
i18n: i18nRoot,
site_url: {
type: 'string',
examples: ['https://example.com']
},
display_url: {
type: 'string',
examples: ['https://example.com']
},
logo_url: {
type: 'string',
examples: ['https://example.com/images/logo.svg']
},
show_preview_links: {
type: 'boolean'
},
media_folder: {
type: 'string',
examples: ['assets/uploads']
},
public_folder: {
type: 'string',
examples: ['/uploads']
},
media_folder_relative: {
type: 'boolean'
},
media_library: {
type: 'object',
properties: {
name: {
type: 'string',
examples: ['uploadcare']
},
config: {
type: 'object'
}
},
required: ['name']
},
publish_mode: {
type: 'string',
enum: ['simple', 'editorial_workflow', ''],
examples: ['editorial_workflow']
},
slug: {
type: 'object',
properties: {
encoding: {
type: 'string',
enum: ['unicode', 'ascii']
},
clean_accents: {
type: 'boolean'
}
}
},
collections: {
type: 'array',
minItems: 1,
items: {
// ------- Each collection: -------
type: 'object',
properties: {
name: {
type: 'string'
},
label: {
type: 'string'
},
label_singular: {
type: 'string'
},
description: {
type: 'string'
},
folder: {
type: 'string'
},
files: {
type: 'array',
items: {
// ------- Each file: -------
type: 'object',
properties: {
name: {
type: 'string'
},
label: {
type: 'string'
},
label_singular: {
type: 'string'
},
description: {
type: 'string'
},
file: {
type: 'string'
},
preview_path: {
type: 'string'
},
preview_path_date_field: {
type: 'string'
},
fields: fieldsConfig()
},
required: ['name', 'label', 'file', 'fields']
},
uniqueItemProperties: ['name']
},
identifier_field: {
type: 'string'
},
summary: {
type: 'string'
},
slug: {
type: 'string'
},
path: {
type: 'string'
},
preview_path: {
type: 'string'
},
preview_path_date_field: {
type: 'string'
},
create: {
type: 'boolean'
},
publish: {
type: 'boolean'
},
hide: {
type: 'boolean'
},
editor: {
type: 'object',
properties: {
preview: {
type: 'boolean'
}
}
},
format: {
type: 'string'
},
extension: {
type: 'string'
},
frontmatter_delimiter: {
type: ['string', 'array'],
minItems: 2,
maxItems: 2,
items: {
type: 'string'
}
},
fields: fieldsConfig(),
sortable_fields: {
type: 'array',
items: {
type: 'string'
}
},
sortableFields: {
type: 'array',
items: {
type: 'string'
}
},
view_filters: viewFilters,
view_groups: viewGroups,
nested: {
type: 'object',
properties: {
depth: {
type: 'number',
minimum: 1,
maximum: 1000
},
summary: {
type: 'string'
}
},
required: ['depth']
},
meta: {
type: 'object',
properties: {
path: {
type: 'object',
properties: {
label: {
type: 'string'
},
widget: {
type: 'string'
},
index_file: {
type: 'string'
}
},
required: ['label', 'widget', 'index_file']
}
},
additionalProperties: false,
minProperties: 1
},
i18n: i18nCollection
},
required: ['name', 'label'],
oneOf: [{
required: ['files']
}, {
required: ['folder', 'fields']
}],
not: {
required: ['sortable_fields', 'sortableFields']
},
if: {
required: ['extension']
},
then: {
// Cannot infer format from extension.
if: {
properties: {
extension: {
enum: Object.keys(_formats.extensionFormatters)
}
}
},
else: {
required: ['format']
}
},
dependencies: {
frontmatter_delimiter: {
properties: {
format: {
enum: _formats.frontmatterFormats
}
},
required: ['format']
}
}
},
uniqueItemProperties: ['name']
},
editor: {
type: 'object',
properties: {
preview: {
type: 'boolean'
}
}
}
},
required: ['backend', 'collections'],
anyOf: [{
required: ['media_folder']
}, {
required: ['media_library']
}]
};
}
function getWidgetSchemas() {
const schemas = (0, _registry.getWidgets)().map(widget => ({
[widget.name]: widget.schema
}));
return Object.assign(...schemas);
}
class ConfigError extends _extendableBuiltin(Error) {
constructor(errors, ...args) {
const message = errors.map(({
message,
instancePath
}) => {
const dotPath = instancePath.slice(1).split('/').map(seg => seg.match(/^\d+$/) ? `[${seg}]` : `.${seg}`).join('').slice(1);
return `${dotPath ? `'${dotPath}'` : 'config'} ${message}`;
}).join('\n');
super(message, ...args);
this.errors = errors;
this.message = message;
}
toString() {
return this.message;
}
}
/**
* `validateConfig` is a pure function. It does not mutate
* the config that is passed in.
*/
function validateConfig(config) {
const ajv = new _ajv.default({
allErrors: true,
$data: true,
strict: false
});
(0, _keywords.uniqueItemProperties)(ajv);
(0, _keywords.select)(ajv);
(0, _keywords.instanceof)(ajv);
(0, _keywords.prohibited)(ajv);
(0, _ajvErrors.default)(ajv);
const valid = ajv.validate(getConfigSchema(), config);
if (!valid) {
const errors = ajv.errors.map(e => {
switch (e.keyword) {
// TODO: remove after https://github.com/ajv-validator/ajv-keywords/pull/123 is merged
case 'uniqueItemProperties':
{
const path = e.instancePath || '';
let newError = e;
if (path.endsWith('/fields')) {
newError = _objectSpread(_objectSpread({}, e), {}, {
message: 'fields names must be unique'
});
} else if (path.endsWith('/files')) {
newError = _objectSpread(_objectSpread({}, e), {}, {
message: 'files names must be unique'
});
} else if (path.endsWith('/collections')) {
newError = _objectSpread(_objectSpread({}, e), {}, {
message: 'collections names must be unique'
});
}
return newError;
}
case 'instanceof':
{
const path = e.instancePath || '';
let newError = e;
if (/fields\/\d+\/pattern\/\d+/.test(path)) {
newError = _objectSpread(_objectSpread({}, e), {}, {
message: 'must be a regular expression'
});
}
return newError;
}
default:
return e;
}
});
console.error('Config Errors', errors);
throw new ConfigError(errors);
}
}

View File

@@ -0,0 +1,64 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.SORTABLE_FIELDS = exports.INFERABLE_FIELDS = exports.IDENTIFIER_FIELDS = void 0;
var _react = _interopRequireDefault(require("react"));
var _react2 = require("@emotion/react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const IDENTIFIER_FIELDS = exports.IDENTIFIER_FIELDS = ['title', 'path'];
const SORTABLE_FIELDS = exports.SORTABLE_FIELDS = ['title', 'date', 'author', 'description'];
const INFERABLE_FIELDS = exports.INFERABLE_FIELDS = {
title: {
type: 'string',
secondaryTypes: [],
synonyms: ['title', 'name', 'label', 'headline', 'header'],
defaultPreview: value => (0, _react2.jsx)("h1", null, value),
// eslint-disable-line react/display-name
fallbackToFirstField: true,
showError: true
},
shortTitle: {
type: 'string',
secondaryTypes: [],
synonyms: ['short_title', 'shortTitle', 'short'],
defaultPreview: value => (0, _react2.jsx)("h2", null, value),
// eslint-disable-line react/display-name
fallbackToFirstField: false,
showError: false
},
author: {
type: 'string',
secondaryTypes: [],
synonyms: ['author', 'name', 'by', 'byline', 'owner'],
defaultPreview: value => (0, _react2.jsx)("strong", null, value),
// eslint-disable-line react/display-name
fallbackToFirstField: false,
showError: false
},
date: {
type: 'datetime',
secondaryTypes: ['date'],
synonyms: ['date', 'publishDate', 'publish_date'],
defaultPreview: value => value,
fallbackToFirstField: false,
showError: false
},
description: {
type: 'string',
secondaryTypes: ['text', 'markdown'],
synonyms: ['shortDescription', 'short_description', 'shortdescription', 'description', 'intro', 'introduction', 'brief', 'content', 'biography', 'bio', 'summary'],
defaultPreview: value => value,
fallbackToFirstField: false,
showError: false
},
image: {
type: 'image',
secondaryTypes: [],
synonyms: ['image', 'thumbnail', 'thumb', 'picture', 'avatar', 'photo', 'cover', 'hero', 'logo'],
defaultPreview: value => value,
fallbackToFirstField: false,
showError: false
}
};

View File

@@ -0,0 +1,23 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.statusDescriptions = exports.status = exports.Statues = exports.SIMPLE = exports.EDITORIAL_WORKFLOW = void 0;
var _immutable = require("immutable");
// Create/edit workflow modes
const SIMPLE = exports.SIMPLE = 'simple';
const EDITORIAL_WORKFLOW = exports.EDITORIAL_WORKFLOW = 'editorial_workflow';
const Statues = exports.Statues = {
DRAFT: 'draft',
PENDING_REVIEW: 'pending_review',
PENDING_PUBLISH: 'pending_publish'
};
// Available status
const status = exports.status = (0, _immutable.OrderedMap)(Statues);
const statusDescriptions = exports.statusDescriptions = (0, _immutable.Map)({
[status.get('DRAFT')]: 'Draft',
[status.get('PENDING_REVIEW')]: 'Waiting for Review',
[status.get('PENDING_PUBLISH')]: 'Waiting to go live'
});

View File

@@ -0,0 +1,12 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _default = exports.default = {
PRESENCE: 'PRESENCE',
PATTERN: 'PATTERN',
RANGE: 'RANGE',
CUSTOM: 'CUSTOM'
};

View File

@@ -0,0 +1,93 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.frontmatterFormats = exports.formatExtensions = exports.extensionFormatters = void 0;
exports.getFormatExtensions = getFormatExtensions;
exports.resolveFormat = resolveFormat;
var _get2 = _interopRequireDefault(require("lodash/get"));
var _immutable = require("immutable");
var _yaml = _interopRequireDefault(require("./yaml"));
var _toml = _interopRequireDefault(require("./toml"));
var _json = _interopRequireDefault(require("./json"));
var _frontmatter = require("./frontmatter");
var _registry = require("../lib/registry");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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; }
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; }
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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
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); }
const frontmatterFormats = exports.frontmatterFormats = ['yaml-frontmatter', 'toml-frontmatter', 'json-frontmatter'];
const formatExtensions = exports.formatExtensions = {
yml: 'yml',
yaml: 'yml',
toml: 'toml',
json: 'json',
frontmatter: 'md',
'json-frontmatter': 'md',
'toml-frontmatter': 'md',
'yaml-frontmatter': 'md'
};
function getFormatExtensions() {
return _objectSpread(_objectSpread({}, formatExtensions), (0, _registry.getCustomFormatsExtensions)());
}
const extensionFormatters = exports.extensionFormatters = {
yml: _yaml.default,
yaml: _yaml.default,
toml: _toml.default,
json: _json.default,
md: _frontmatter.FrontmatterInfer,
markdown: _frontmatter.FrontmatterInfer,
html: _frontmatter.FrontmatterInfer
};
function formatByName(name, customDelimiter) {
const formatters = _objectSpread({
yml: _yaml.default,
yaml: _yaml.default,
toml: _toml.default,
json: _json.default,
frontmatter: _frontmatter.FrontmatterInfer,
'json-frontmatter': (0, _frontmatter.frontmatterJSON)(customDelimiter),
'toml-frontmatter': (0, _frontmatter.frontmatterTOML)(customDelimiter),
'yaml-frontmatter': (0, _frontmatter.frontmatterYAML)(customDelimiter)
}, (0, _registry.getCustomFormatsFormatters)());
if (name in formatters) {
return formatters[name];
}
throw new Error(`No formatter available with name: ${name}`);
}
function frontmatterDelimiterIsList(frontmatterDelimiter) {
return _immutable.List.isList(frontmatterDelimiter);
}
function resolveFormat(collection, entry) {
// Check for custom delimiter
const frontmatter_delimiter = collection.get('frontmatter_delimiter');
const customDelimiter = frontmatterDelimiterIsList(frontmatter_delimiter) ? frontmatter_delimiter.toArray() : frontmatter_delimiter;
// If the format is specified in the collection, use that format.
const formatSpecification = collection.get('format');
if (formatSpecification) {
return formatByName(formatSpecification, customDelimiter);
}
// If a file already exists, infer the format from its file extension.
const filePath = entry && entry.path;
if (filePath) {
const fileExtension = filePath.split('.').pop();
if (fileExtension) {
return (0, _get2.default)(extensionFormatters, fileExtension);
}
}
// If creating a new file, and an `extension` is specified in the
// collection config, infer the format from that extension.
const extension = collection.get('extension');
if (extension) {
return (0, _get2.default)(extensionFormatters, extension);
}
// If no format is specified and it cannot be inferred, return the default.
return formatByName('frontmatter', customDelimiter);
}

View File

@@ -0,0 +1,162 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.FrontmatterInfer = exports.FrontmatterFormatter = void 0;
exports.frontmatterJSON = frontmatterJSON;
exports.frontmatterTOML = frontmatterTOML;
exports.frontmatterYAML = frontmatterYAML;
exports.getFormatOpts = getFormatOpts;
var _grayMatter = _interopRequireDefault(require("gray-matter"));
var _toml = _interopRequireDefault(require("./toml"));
var _yaml = _interopRequireDefault(require("./yaml"));
var _json = _interopRequireDefault(require("./json"));
const _excluded = ["body"];
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
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; }
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; }
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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
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); }
const Languages = {
YAML: 'yaml',
TOML: 'toml',
JSON: 'json'
};
const parsers = {
toml: {
parse: input => _toml.default.fromFile(input),
stringify: (metadata, opts) => {
const {
sortedKeys
} = opts || {};
return _toml.default.toFile(metadata, sortedKeys);
}
},
json: {
parse: input => {
let JSONinput = input.trim();
// Fix JSON if leading and trailing brackets were trimmed.
if (JSONinput.slice(0, 1) !== '{') {
JSONinput = '{' + JSONinput + '}';
}
return _json.default.fromFile(JSONinput);
},
stringify: metadata => {
let JSONoutput = _json.default.toFile(metadata).trim();
// Trim leading and trailing brackets.
if (JSONoutput.slice(0, 1) === '{' && JSONoutput.slice(-1) === '}') {
JSONoutput = JSONoutput.slice(1, -1);
}
return JSONoutput;
}
},
yaml: {
parse: input => _yaml.default.fromFile(input),
stringify: (metadata, opts) => {
const {
sortedKeys,
comments
} = opts || {};
return _yaml.default.toFile(metadata, sortedKeys, comments);
}
}
};
function inferFrontmatterFormat(str) {
const lineEnd = str.indexOf('\n');
const firstLine = str.slice(0, lineEnd !== -1 ? lineEnd : 0).trim();
if (firstLine.length > 3 && firstLine.slice(0, 3) === '---') {
// No need to infer, `gray-matter` will handle things like `---toml` for us.
return;
}
switch (firstLine) {
case '---':
return getFormatOpts(Languages.YAML);
case '+++':
return getFormatOpts(Languages.TOML);
case '{':
return getFormatOpts(Languages.JSON);
default:
console.warn('Unrecognized front-matter format.');
}
}
function getFormatOpts(format, customDelimiter) {
if (!format) {
return undefined;
}
const formats = {
yaml: {
language: Languages.YAML,
delimiters: '---'
},
toml: {
language: Languages.TOML,
delimiters: '+++'
},
json: {
language: Languages.JSON,
delimiters: ['{', '}']
}
};
const {
language,
delimiters
} = formats[format];
return {
language,
delimiters: customDelimiter || delimiters
};
}
class FrontmatterFormatter {
constructor(format, customDelimiter) {
_defineProperty(this, "format", void 0);
this.format = getFormatOpts(format, customDelimiter);
}
fromFile(content) {
const format = this.format || inferFrontmatterFormat(content);
const result = (0, _grayMatter.default)(content, _objectSpread({
engines: parsers
}, format));
// in the absent of a body when serializing an entry we use an empty one
// when calling `toFile`, so we don't want to add it when parsing.
return _objectSpread(_objectSpread({}, result.data), result.content.trim() && {
body: result.content
});
}
toFile(data, sortedKeys, comments) {
const {
body = ''
} = data,
meta = _objectWithoutProperties(data, _excluded);
// Stringify to YAML if the format was not set
const format = this.format || getFormatOpts(Languages.YAML);
// gray-matter always adds a line break at the end which trips our
// change detection logic
// https://github.com/jonschlinkert/gray-matter/issues/96
const trimLastLineBreak = body.slice(-1) !== '\n';
const file = _grayMatter.default.stringify(body, meta, _objectSpread({
engines: parsers,
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore `sortedKeys` is not recognized by gray-matter, so it gets passed through to the parser
sortedKeys,
comments
}, format));
return trimLastLineBreak && file.slice(-1) === '\n' ? file.slice(0, -1) : file;
}
}
exports.FrontmatterFormatter = FrontmatterFormatter;
const FrontmatterInfer = exports.FrontmatterInfer = new FrontmatterFormatter();
function frontmatterYAML(customDelimiter) {
return new FrontmatterFormatter(Languages.YAML, customDelimiter);
}
function frontmatterTOML(customDelimiter) {
return new FrontmatterFormatter(Languages.TOML, customDelimiter);
}
function frontmatterJSON(customDelimiter) {
return new FrontmatterFormatter(Languages.JSON, customDelimiter);
}

View File

@@ -0,0 +1,18 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.sortKeys = sortKeys;
function sortKeys(sortedKeys,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
selector = a => a) {
return (a, b) => {
const idxA = sortedKeys.indexOf(selector(a));
const idxB = sortedKeys.indexOf(selector(b));
if (idxA === -1 || idxB === -1) return 0;
if (idxA > idxB) return 1;
if (idxA < idxB) return -1;
return 0;
};
}

14
node_modules/decap-cms-core/dist/esm/formats/json.js generated vendored Normal file
View File

@@ -0,0 +1,14 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _default = exports.default = {
fromFile(content) {
return JSON.parse(content);
},
toFile(data) {
return JSON.stringify(data, null, 2);
}
};

39
node_modules/decap-cms-core/dist/esm/formats/toml.js generated vendored Normal file
View File

@@ -0,0 +1,39 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _toml = _interopRequireDefault(require("@iarna/toml"));
var _tomlifyJ = _interopRequireDefault(require("tomlify-j0.4"));
var _dayjs = _interopRequireDefault(require("dayjs"));
var _AssetProxy = _interopRequireDefault(require("../valueObjects/AssetProxy"));
var _helpers = require("./helpers");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function outputReplacer(_key, value) {
if (_dayjs.default.isDayjs(value)) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
return value.format(value._f);
}
if (value instanceof _AssetProxy.default) {
return `${value.path}`;
}
if (typeof value === 'number' && Number.isInteger(value)) {
// Return the string representation of integers so tomlify won't render with tenths (".0")
return value.toString();
}
// Return `false` to use default (`undefined` would delete key).
return false;
}
var _default = exports.default = {
fromFile(content) {
return _toml.default.parse(content);
},
toFile(data, sortedKeys = []) {
return _tomlifyJ.default.toToml(data, {
replace: outputReplacer,
sort: (0, _helpers.sortKeys)(sortedKeys)
});
}
};

62
node_modules/decap-cms-core/dist/esm/formats/yaml.js generated vendored Normal file
View File

@@ -0,0 +1,62 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _yaml = _interopRequireDefault(require("yaml"));
var _helpers = require("./helpers");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function addComments(items, comments, prefix = '') {
items.forEach(item => {
if (item.key !== undefined) {
var _item$value;
const itemKey = item.key.toString();
const key = prefix ? `${prefix}.${itemKey}` : itemKey;
if (comments[key]) {
const value = comments[key].split('\\n').join('\n ');
item.commentBefore = ` ${value}`;
}
if (Array.isArray((_item$value = item.value) === null || _item$value === void 0 ? void 0 : _item$value.items)) {
addComments(item.value.items, comments, key);
}
}
});
}
const timestampTag = {
identify: value => value instanceof Date,
default: true,
tag: '!timestamp',
test: RegExp('^' + '([0-9]{4})-([0-9]{2})-([0-9]{2})' +
// YYYY-MM-DD
'T' +
// T
'([0-9]{2}):([0-9]{2}):([0-9]{2}(\\.[0-9]+)?)' +
// HH:MM:SS(.ss)?
'Z' +
// Z
'$'),
resolve: str => new Date(str),
stringify: value => value.toISOString()
};
var _default = exports.default = {
fromFile(content) {
if (content && content.trim().endsWith('---')) {
content = content.trim().slice(0, -3);
}
return _yaml.default.parse(content, {
customTags: [timestampTag]
});
},
toFile(data, sortedKeys = [], comments = {}) {
const contents = _yaml.default.createNode(data);
addComments(contents.items, comments);
contents.items.sort((0, _helpers.sortKeys)(sortedKeys, item => {
var _item$key;
return (_item$key = item.key) === null || _item$key === void 0 ? void 0 : _item$key.toString();
}));
const doc = new _yaml.default.Document();
doc.contents = contents;
return doc.toString();
}
};

18
node_modules/decap-cms-core/dist/esm/index.js generated vendored Normal file
View File

@@ -0,0 +1,18 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.DecapCmsCore = void 0;
var _bootstrap = _interopRequireDefault(require("./bootstrap"));
var _registry = _interopRequireDefault(require("./lib/registry"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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; }
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; }
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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
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); }
const DecapCmsCore = exports.DecapCmsCore = _objectSpread(_objectSpread({}, _registry.default), {}, {
init: _bootstrap.default
});
var _default = exports.default = DecapCmsCore;

View File

@@ -0,0 +1,36 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getIntegrationProvider = void 0;
exports.resolveIntegrations = resolveIntegrations;
var _immutable = require("immutable");
var _implementation = _interopRequireDefault(require("./providers/algolia/implementation"));
var _implementation2 = _interopRequireDefault(require("./providers/assetStore/implementation"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function resolveIntegrations(integrationsConfig, getToken) {
let integrationInstances = (0, _immutable.Map)({});
integrationsConfig.get('providers').forEach((providerData, providerName) => {
switch (providerName) {
case 'algolia':
integrationInstances = integrationInstances.set('algolia', new _implementation.default(providerData));
break;
case 'assetStore':
integrationInstances = integrationInstances.set('assetStore', new _implementation2.default(providerData, getToken));
break;
}
});
return integrationInstances;
}
const getIntegrationProvider = exports.getIntegrationProvider = function () {
let integrations = null;
return (integrationsConfig, getToken, provider) => {
if (integrations) {
return integrations.get(provider);
} else {
integrations = resolveIntegrations(integrationsConfig, getToken);
return integrations.get(provider);
}
};
}();

View File

@@ -0,0 +1,184 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _flatten2 = _interopRequireDefault(require("lodash/flatten"));
var _decapCmsLibUtil = require("decap-cms-lib-util");
var _Entry = require("../../../valueObjects/Entry");
var _collections = require("../../../reducers/collections");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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; }
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; }
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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
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); }
const {
fetchWithTimeout: fetch
} = _decapCmsLibUtil.unsentRequest;
function getSlug(path) {
return path.split('/').pop().replace(/\.[^.]+$/, '');
}
class Algolia {
constructor(config) {
this.config = config;
if (config.get('applicationID') == null || config.get('apiKey') == null) {
throw 'The Algolia search integration needs the credentials (applicationID and apiKey) in the integration configuration.';
}
this.applicationID = config.get('applicationID');
this.apiKey = config.get('apiKey');
const prefix = config.get('indexPrefix');
this.indexPrefix = prefix ? `${prefix}-` : '';
this.searchURL = `https://${this.applicationID}-dsn.algolia.net/1`;
this.entriesCache = {
collection: null,
page: null,
entries: []
};
}
requestHeaders(headers = {}) {
return _objectSpread({
'X-Algolia-API-Key': this.apiKey,
'X-Algolia-Application-Id': this.applicationID,
'Content-Type': 'application/json'
}, headers);
}
parseJsonResponse(response) {
return response.json().then(json => {
if (!response.ok) {
return Promise.reject(json);
}
return json;
});
}
urlFor(path, options) {
const params = [];
if (options.params) {
for (const key in options.params) {
params.push(`${key}=${encodeURIComponent(options.params[key])}`);
}
}
if (params.length) {
path += `?${params.join('&')}`;
}
return path;
}
request(path, options = {}) {
const headers = this.requestHeaders(options.headers || {});
const url = this.urlFor(path, options);
return fetch(url, _objectSpread(_objectSpread({}, options), {}, {
headers
})).then(response => {
const contentType = response.headers.get('Content-Type');
if (contentType && contentType.match(/json/)) {
return this.parseJsonResponse(response);
}
return response.text();
});
}
search(collections, searchTerm, page) {
const searchCollections = collections.map(collection => ({
indexName: `${this.indexPrefix}${collection}`,
params: `query=${searchTerm}&page=${page}`
}));
return this.request(`${this.searchURL}/indexes/*/queries`, {
method: 'POST',
body: JSON.stringify({
requests: searchCollections
})
}).then(response => {
const entries = response.results.map((result, index) => result.hits.map(hit => {
const slug = getSlug(hit.path);
return (0, _Entry.createEntry)(collections[index], slug, hit.path, {
data: hit.data,
partial: true
});
}));
return {
entries: (0, _flatten2.default)(entries),
pagination: page
};
});
}
searchBy(field, collection, query) {
return this.request(`${this.searchURL}/indexes/${this.indexPrefix}${collection}`, {
params: {
restrictSearchableAttributes: field,
query
}
});
}
listEntries(collection, page) {
if (this.entriesCache.collection === collection && this.entriesCache.page === page) {
return Promise.resolve({
page: this.entriesCache.page,
entries: this.entriesCache.entries
});
} else {
return this.request(`${this.searchURL}/indexes/${this.indexPrefix}${collection.get('name')}`, {
params: {
page
}
}).then(response => {
const entries = response.hits.map(hit => {
const slug = (0, _collections.selectEntrySlug)(collection, hit.path);
return (0, _Entry.createEntry)(collection.get('name'), slug, hit.path, {
data: hit.data,
partial: true
});
});
this.entriesCache = {
collection,
pagination: response.page,
entries
};
return {
entries,
pagination: response.page
};
});
}
}
async listAllEntries(collection) {
const params = {
hitsPerPage: 1000
};
let response = await this.request(`${this.searchURL}/indexes/${this.indexPrefix}${collection.get('name')}`, {
params
});
let {
nbPages = 0,
hits,
page
} = response;
page = page + 1;
while (page < nbPages) {
response = await this.request(`${this.searchURL}/indexes/${this.indexPrefix}${collection.get('name')}`, {
params: _objectSpread(_objectSpread({}, params), {}, {
page
})
});
hits = [...hits, ...response.hits];
page = page + 1;
}
const entries = hits.map(hit => {
const slug = (0, _collections.selectEntrySlug)(collection, hit.path);
return (0, _Entry.createEntry)(collection.get('name'), slug, hit.path, {
data: hit.data,
partial: true
});
});
return entries;
}
getEntry(collection, slug) {
return this.searchBy('slug', collection.get('name'), slug).then(response => {
const entry = response.hits.filter(hit => hit.slug === slug)[0];
return (0, _Entry.createEntry)(collection.get('name'), slug, entry.path, {
data: entry.data,
partial: true
});
});
}
}
exports.default = Algolia;

View File

@@ -0,0 +1,175 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _trimEnd2 = _interopRequireDefault(require("lodash/trimEnd"));
var _pickBy2 = _interopRequireDefault(require("lodash/pickBy"));
var _decapCmsLibUtil = require("decap-cms-lib-util");
var _urlHelper = require("../../../lib/urlHelper");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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; }
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; }
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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
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); }
const {
fetchWithTimeout: fetch
} = _decapCmsLibUtil.unsentRequest;
class AssetStore {
constructor(config, getToken) {
this.config = config;
if (config.get('getSignedFormURL') == null) {
throw 'The AssetStore integration needs the getSignedFormURL in the integration configuration.';
}
this.getToken = getToken;
this.shouldConfirmUpload = config.get('shouldConfirmUpload', false);
this.getSignedFormURL = (0, _trimEnd2.default)(config.get('getSignedFormURL'), '/');
}
parseJsonResponse(response) {
return response.json().then(json => {
if (!response.ok) {
return Promise.reject(json);
}
return json;
});
}
urlFor(path, options) {
const params = [];
if (options.params) {
for (const key in options.params) {
params.push(`${key}=${encodeURIComponent(options.params[key])}`);
}
}
if (params.length) {
path += `?${params.join('&')}`;
}
return path;
}
requestHeaders(headers = {}) {
return _objectSpread({}, headers);
}
confirmRequest(assetID) {
this.getToken().then(token => this.request(`${this.getSignedFormURL}/${assetID}`, {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${token}`
},
body: JSON.stringify({
state: 'uploaded'
})
}));
}
async request(path, options = {}) {
const headers = this.requestHeaders(options.headers || {});
const url = this.urlFor(path, options);
const response = await fetch(url, _objectSpread(_objectSpread({}, options), {}, {
headers
}));
const contentType = response.headers.get('Content-Type');
const isJson = contentType && contentType.match(/json/);
const content = isJson ? await this.parseJsonResponse(response) : response.text();
return content;
}
async retrieve(query, page, privateUpload) {
const params = (0, _pickBy2.default)({
search: query,
page,
filter: privateUpload ? 'private' : 'public'
}, val => !!val);
const url = (0, _urlHelper.addParams)(this.getSignedFormURL, params);
const token = await this.getToken();
const headers = {
'Content-Type': 'application/json',
Authorization: `Bearer ${token}`
};
const response = await this.request(url, {
headers
});
const files = response.map(({
id,
name,
size,
url
}) => {
return {
id,
name,
size,
displayURL: url,
url,
path: url
};
});
return files;
}
delete(assetID) {
const url = `${this.getSignedFormURL}/${assetID}`;
return this.getToken().then(token => this.request(url, {
method: 'DELETE',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${token}`
}
}));
}
async upload(file, privateUpload = false) {
const fileData = {
name: file.name,
size: file.size
};
if (file.type) {
fileData.content_type = file.type;
}
if (privateUpload) {
fileData.visibility = 'private';
}
try {
const token = await this.getToken();
const response = await this.request(this.getSignedFormURL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${token}`
},
body: JSON.stringify(fileData)
});
const formURL = response.form.url;
const formFields = response.form.fields;
const {
id,
name,
size,
url
} = response.asset;
const formData = new FormData();
Object.keys(formFields).forEach(key => formData.append(key, formFields[key]));
formData.append('file', file, file.name);
await this.request(formURL, {
method: 'POST',
body: formData
});
if (this.shouldConfirmUpload) {
await this.confirmRequest(id);
}
const asset = {
id,
name,
size,
displayURL: url,
url,
path: url
};
return {
success: true,
asset
};
} catch (error) {
console.error(error);
throw error;
}
}
}
exports.default = AssetStore;

View File

@@ -0,0 +1,9 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = consoleError;
function consoleError(title, description) {
console.error(`%c ⛔ ${title}\n` + `%c${description}\n\n`, 'color: black; font-weight: bold; font-size: 16px; line-height: 50px;', 'color: black;');
}

204
node_modules/decap-cms-core/dist/esm/lib/formatters.js generated vendored Normal file
View File

@@ -0,0 +1,204 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.commitMessageFormatter = commitMessageFormatter;
exports.folderFormatter = folderFormatter;
exports.getProcessSegment = getProcessSegment;
exports.prepareSlug = prepareSlug;
exports.previewUrlFormatter = previewUrlFormatter;
exports.slugFormatter = slugFormatter;
exports.summaryFormatter = summaryFormatter;
var _trimStart2 = _interopRequireDefault(require("lodash/trimStart"));
var _trimEnd2 = _interopRequireDefault(require("lodash/trimEnd"));
var _partialRight2 = _interopRequireDefault(require("lodash/partialRight"));
var _flow2 = _interopRequireDefault(require("lodash/flow"));
var _decapCmsLibWidgets = require("decap-cms-lib-widgets");
var _commonTags = require("common-tags");
var _collections = require("../reducers/collections");
var _urlHelper = require("./urlHelper");
var _collectionTypes = require("../constants/collectionTypes");
var _commitProps = require("../constants/commitProps");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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; }
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; }
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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
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); }
const {
compileStringTemplate,
parseDateFromEntry,
SLUG_MISSING_REQUIRED_DATE,
keyToPathArray,
addFileTemplateFields
} = _decapCmsLibWidgets.stringTemplate;
const commitMessageTemplates = {
create: 'Create {{collection}} “{{slug}}”',
update: 'Update {{collection}} “{{slug}}”',
delete: 'Delete {{collection}} “{{slug}}”',
uploadMedia: 'Upload “{{path}}”',
deleteMedia: 'Delete “{{path}}”',
openAuthoring: '{{message}}'
};
const variableRegex = /\{\{([^}]+)\}\}/g;
function commitMessageFormatter(type, config, {
slug,
path,
collection,
authorLogin,
authorName
}, isOpenAuthoring) {
const templates = _objectSpread(_objectSpread({}, commitMessageTemplates), config.backend.commit_messages || {});
const commitMessage = templates[type].replace(variableRegex, (_, variable) => {
switch (variable) {
case 'slug':
return slug || '';
case 'path':
return path || '';
case 'collection':
return collection ? collection.get('label_singular') || collection.get('label') : '';
case 'author-login':
return authorLogin || '';
case 'author-name':
return authorName || '';
default:
console.warn(`Ignoring unknown variable “${variable}” in commit message template.`);
return '';
}
});
if (!isOpenAuthoring) {
return commitMessage;
}
const message = templates.openAuthoring.replace(variableRegex, (_, variable) => {
switch (variable) {
case 'message':
return commitMessage;
case 'author-login':
return authorLogin || '';
case 'author-name':
return authorName || '';
default:
console.warn(`Ignoring unknown variable “${variable}” in open authoring message template.`);
return '';
}
});
return message;
}
function prepareSlug(slug) {
return slug.trim()
// Convert slug to lower-case
.toLocaleLowerCase()
// Remove single quotes.
.replace(/[']/g, '')
// Replace periods with dashes.
.replace(/[.]/g, '-');
}
function getProcessSegment(slugConfig, ignoreValues) {
return value => ignoreValues && ignoreValues.includes(value) ? value : (0, _flow2.default)([value => String(value), prepareSlug, (0, _partialRight2.default)(_urlHelper.sanitizeSlug, slugConfig)])(value);
}
function slugFormatter(collection, entryData, slugConfig) {
const slugTemplate = collection.get('slug') || '{{slug}}';
const identifier = entryData.getIn(keyToPathArray((0, _collections.selectIdentifier)(collection)));
if (!identifier) {
throw new Error('Collection must have a field name that is a valid entry identifier, or must have `identifier_field` set');
}
const processSegment = getProcessSegment(slugConfig);
const date = new Date();
const slug = compileStringTemplate(slugTemplate, date, identifier, entryData, processSegment);
if (!collection.has('path')) {
return slug;
} else {
const pathTemplate = prepareSlug(collection.get('path'));
return compileStringTemplate(pathTemplate, date, slug, entryData, value => value === slug ? value : processSegment(value));
}
}
function previewUrlFormatter(baseUrl, collection, slug, entry, slugConfig) {
/**
* Preview URL can't be created without `baseUrl`. This makes preview URLs
* optional for backends that don't support them.
*/
if (!baseUrl) {
return;
}
const basePath = (0, _trimEnd2.default)(baseUrl, '/');
const isFileCollection = collection.get('type') === _collectionTypes.FILES;
const file = isFileCollection ? (0, _collections.getFileFromSlug)(collection, entry.get('slug')) : undefined;
function getPathTemplate() {
var _file$get;
return (_file$get = file === null || file === void 0 ? void 0 : file.get('preview_path')) !== null && _file$get !== void 0 ? _file$get : collection.get('preview_path');
}
function getDateField() {
var _file$get2;
return (_file$get2 = file === null || file === void 0 ? void 0 : file.get('preview_path_date_field')) !== null && _file$get2 !== void 0 ? _file$get2 : collection.get('preview_path_date_field');
}
/**
* If a `previewPath` is provided for the collection/file, use it to construct the
* URL path.
*/
const pathTemplate = getPathTemplate();
/**
* Without a `previewPath` for the collection/file (via config), the preview URL
* will be the URL provided by the backend.
*/
if (!pathTemplate) {
return baseUrl;
}
let fields = entry.get('data');
fields = addFileTemplateFields(entry.get('path'), fields, collection.get('folder'));
const dateFieldName = getDateField() || (0, _collections.selectInferredField)(collection, 'date');
const date = parseDateFromEntry(entry, dateFieldName);
// Prepare and sanitize slug variables only, leave the rest of the
// `preview_path` template as is.
const processSegment = getProcessSegment(slugConfig, [fields.get('dirname')]);
let compiledPath;
try {
compiledPath = compileStringTemplate(pathTemplate, date, slug, fields, processSegment);
} catch (err) {
// Print an error and ignore `preview_path` if both:
// 1. Date is invalid (according to DayJs), and
// 2. A date expression (eg. `{{year}}`) is used in `preview_path`
if (err.name === SLUG_MISSING_REQUIRED_DATE) {
console.error((0, _commonTags.stripIndent)`
Collection "${collection.get('name')}" configuration error:
\`preview_path_date_field\` must be a field with a valid date. Ignoring \`preview_path\`.
`);
return basePath;
}
throw err;
}
const previewPath = (0, _trimStart2.default)(compiledPath, ' /');
return `${basePath}/${previewPath}`;
}
function summaryFormatter(summaryTemplate, entry, collection) {
let entryData = entry.get('data');
const date = parseDateFromEntry(entry, (0, _collections.selectInferredField)(collection, 'date')) || null;
const identifier = entryData.getIn(keyToPathArray((0, _collections.selectIdentifier)(collection)));
entryData = addFileTemplateFields(entry.get('path'), entryData, collection.get('folder'));
// allow commit information in summary template
if (entry.get('author') && !(0, _collections.selectField)(collection, _commitProps.COMMIT_AUTHOR)) {
entryData = entryData.set(_commitProps.COMMIT_AUTHOR, entry.get('author'));
}
if (entry.get('updatedOn') && !(0, _collections.selectField)(collection, _commitProps.COMMIT_DATE)) {
entryData = entryData.set(_commitProps.COMMIT_DATE, entry.get('updatedOn'));
}
const summary = compileStringTemplate(summaryTemplate, date, identifier, entryData);
return summary;
}
function folderFormatter(folderTemplate, entry, collection, defaultFolder, folderKey, slugConfig) {
if (!entry || !entry.get('data')) {
return folderTemplate;
}
let fields = entry.get('data').set(folderKey, defaultFolder);
fields = addFileTemplateFields(entry.get('path'), fields, collection.get('folder'));
const date = parseDateFromEntry(entry, (0, _collections.selectInferredField)(collection, 'date')) || null;
const identifier = fields.getIn(keyToPathArray((0, _collections.selectIdentifier)(collection)));
const processSegment = getProcessSegment(slugConfig, [defaultFolder, fields.get('dirname')]);
const mediaFolder = compileStringTemplate(folderTemplate, date, identifier, fields, processSegment);
return mediaFolder;
}

378
node_modules/decap-cms-core/dist/esm/lib/i18n.js generated vendored Normal file
View File

@@ -0,0 +1,378 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.I18N_STRUCTURE = exports.I18N_FIELD = exports.I18N = void 0;
exports.duplicateDefaultI18nFields = duplicateDefaultI18nFields;
exports.duplicateI18nFields = duplicateI18nFields;
exports.formatI18nBackup = formatI18nBackup;
exports.getDataPath = getDataPath;
exports.getFilePath = getFilePath;
exports.getFilePaths = getFilePaths;
exports.getI18nBackup = getI18nBackup;
exports.getI18nDataFiles = getI18nDataFiles;
exports.getI18nEntry = getI18nEntry;
exports.getI18nFiles = getI18nFiles;
exports.getI18nFilesDepth = getI18nFilesDepth;
exports.getI18nInfo = getI18nInfo;
exports.getLocaleDataPath = getLocaleDataPath;
exports.getLocaleFromPath = getLocaleFromPath;
exports.getPreviewEntry = getPreviewEntry;
exports.groupEntries = groupEntries;
exports.hasI18n = hasI18n;
exports.isFieldDuplicate = isFieldDuplicate;
exports.isFieldHidden = isFieldHidden;
exports.isFieldTranslatable = isFieldTranslatable;
exports.normalizeFilePath = normalizeFilePath;
exports.serializeI18n = serializeI18n;
var _escapeRegExp2 = _interopRequireDefault(require("lodash/escapeRegExp"));
var _groupBy2 = _interopRequireDefault(require("lodash/groupBy"));
var _set2 = _interopRequireDefault(require("lodash/set"));
var _immutable = require("immutable");
var _collections = require("../reducers/collections");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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; }
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; }
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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
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); }
const I18N = exports.I18N = 'i18n';
let I18N_STRUCTURE = exports.I18N_STRUCTURE = /*#__PURE__*/function (I18N_STRUCTURE) {
I18N_STRUCTURE["MULTIPLE_FOLDERS"] = "multiple_folders";
I18N_STRUCTURE["MULTIPLE_FILES"] = "multiple_files";
I18N_STRUCTURE["SINGLE_FILE"] = "single_file";
return I18N_STRUCTURE;
}({});
let I18N_FIELD = exports.I18N_FIELD = /*#__PURE__*/function (I18N_FIELD) {
I18N_FIELD["TRANSLATE"] = "translate";
I18N_FIELD["DUPLICATE"] = "duplicate";
I18N_FIELD["NONE"] = "none";
return I18N_FIELD;
}({});
function hasI18n(collection) {
return collection.has(I18N);
}
function getI18nInfo(collection) {
if (!hasI18n(collection)) {
return {};
}
const {
structure,
locales,
default_locale: defaultLocale
} = collection.get(I18N).toJS();
return {
structure,
locales,
defaultLocale
};
}
function getI18nFilesDepth(collection, depth) {
const {
structure
} = getI18nInfo(collection);
if (structure === I18N_STRUCTURE.MULTIPLE_FOLDERS) {
return depth + 1;
}
return depth;
}
function isFieldTranslatable(field, locale, defaultLocale) {
const isTranslatable = locale !== defaultLocale && field.get(I18N) === I18N_FIELD.TRANSLATE;
return isTranslatable;
}
function isFieldDuplicate(field, locale, defaultLocale) {
const isDuplicate = locale !== defaultLocale && field.get(I18N) === I18N_FIELD.DUPLICATE;
return isDuplicate;
}
function isFieldHidden(field, locale, defaultLocale) {
const isHidden = locale !== defaultLocale && field.get(I18N) === I18N_FIELD.NONE;
return isHidden;
}
function getLocaleDataPath(locale) {
return [I18N, locale, 'data'];
}
function getDataPath(locale, defaultLocale) {
const dataPath = locale !== defaultLocale ? getLocaleDataPath(locale) : ['data'];
return dataPath;
}
function getFilePath(structure, extension, path, slug, locale) {
switch (structure) {
case I18N_STRUCTURE.MULTIPLE_FOLDERS:
return path.replace(`/${slug}`, `/${locale}/${slug}`);
case I18N_STRUCTURE.MULTIPLE_FILES:
return path.replace(new RegExp(`${(0, _escapeRegExp2.default)(extension)}$`), `${locale}.${extension}`);
case I18N_STRUCTURE.SINGLE_FILE:
default:
return path;
}
}
function getLocaleFromPath(structure, extension, path) {
switch (structure) {
case I18N_STRUCTURE.MULTIPLE_FOLDERS:
{
const parts = path.split('/');
// filename
parts.pop();
// locale
return parts.pop();
}
case I18N_STRUCTURE.MULTIPLE_FILES:
{
const parts = path.slice(0, -`.${extension}`.length);
return parts.split('.').pop();
}
case I18N_STRUCTURE.SINGLE_FILE:
default:
return '';
}
}
function getFilePaths(collection, extension, path, slug) {
const {
structure,
locales
} = getI18nInfo(collection);
if (structure === I18N_STRUCTURE.SINGLE_FILE) {
return [path];
}
const paths = locales.map(locale => getFilePath(structure, extension, path, slug, locale));
return paths;
}
function normalizeFilePath(structure, path, locale) {
switch (structure) {
case I18N_STRUCTURE.MULTIPLE_FOLDERS:
return path.replace(`${locale}/`, '');
case I18N_STRUCTURE.MULTIPLE_FILES:
return path.replace(`.${locale}`, '');
case I18N_STRUCTURE.SINGLE_FILE:
default:
return path;
}
}
function getI18nFiles(collection, extension, entryDraft, entryToRaw, path, slug, newPath) {
const {
structure,
defaultLocale,
locales
} = getI18nInfo(collection);
if (structure === I18N_STRUCTURE.SINGLE_FILE) {
const data = locales.reduce((map, locale) => {
const dataPath = getDataPath(locale, defaultLocale);
return map.set(locale, entryDraft.getIn(dataPath));
}, (0, _immutable.Map)({}));
const draft = entryDraft.set('data', data);
return [_objectSpread({
path: getFilePath(structure, extension, path, slug, locales[0]),
slug,
raw: entryToRaw(draft)
}, newPath && {
newPath: getFilePath(structure, extension, newPath, slug, locales[0])
})];
}
const dataFiles = locales.map(locale => {
const dataPath = getDataPath(locale, defaultLocale);
const draft = entryDraft.set('data', entryDraft.getIn(dataPath));
return _objectSpread({
path: getFilePath(structure, extension, path, slug, locale),
slug,
raw: draft.get('data') ? entryToRaw(draft) : ''
}, newPath && {
newPath: getFilePath(structure, extension, newPath, slug, locale)
});
}).filter(dataFile => dataFile.raw);
return dataFiles;
}
function getI18nBackup(collection, entry, entryToRaw) {
const {
locales,
defaultLocale
} = getI18nInfo(collection);
const i18nBackup = locales.filter(l => l !== defaultLocale).reduce((acc, locale) => {
const dataPath = getDataPath(locale, defaultLocale);
const data = entry.getIn(dataPath);
if (!data) {
return acc;
}
const draft = entry.set('data', data);
return _objectSpread(_objectSpread({}, acc), {}, {
[locale]: {
raw: entryToRaw(draft)
}
});
}, {});
return i18nBackup;
}
function formatI18nBackup(i18nBackup, formatRawData) {
const i18n = Object.entries(i18nBackup).reduce((acc, [locale, {
raw
}]) => {
const entry = formatRawData(raw);
return _objectSpread(_objectSpread({}, acc), {}, {
[locale]: {
data: entry.data
}
});
}, {});
return i18n;
}
function mergeValues(collection, structure, defaultLocale, values) {
let defaultEntry = values.find(e => e.locale === defaultLocale);
if (!defaultEntry) {
defaultEntry = values[0];
console.warn(`Could not locale entry for default locale '${defaultLocale}'`);
}
const i18n = values.filter(e => e.locale !== defaultEntry.locale).reduce((acc, {
locale,
value
}) => {
const dataPath = getLocaleDataPath(locale);
return (0, _set2.default)(acc, dataPath, value.data);
}, {});
const path = normalizeFilePath(structure, defaultEntry.value.path, defaultLocale);
const slug = (0, _collections.selectEntrySlug)(collection, path);
const entryValue = _objectSpread(_objectSpread(_objectSpread({}, defaultEntry.value), {}, {
raw: ''
}, i18n), {}, {
path,
slug
});
return entryValue;
}
function mergeSingleFileValue(entryValue, defaultLocale, locales) {
const data = entryValue.data[defaultLocale] || {};
const i18n = locales.filter(l => l !== defaultLocale).map(l => ({
locale: l,
value: entryValue.data[l]
})).filter(e => e.value).reduce((acc, e) => {
return _objectSpread(_objectSpread({}, acc), {}, {
[e.locale]: {
data: e.value
}
});
}, {});
return _objectSpread(_objectSpread({}, entryValue), {}, {
data,
i18n,
raw: ''
});
}
async function getI18nEntry(collection, extension, path, slug, getEntryValue) {
const {
structure,
locales,
defaultLocale
} = getI18nInfo(collection);
let entryValue;
if (structure === I18N_STRUCTURE.SINGLE_FILE) {
entryValue = mergeSingleFileValue(await getEntryValue(path), defaultLocale, locales);
} else {
const entryValues = await Promise.all(locales.map(async locale => {
const entryPath = getFilePath(structure, extension, path, slug, locale);
const value = await getEntryValue(entryPath).catch(() => null);
return {
value,
locale
};
}));
const nonNullValues = entryValues.filter(e => e.value !== null);
entryValue = mergeValues(collection, structure, defaultLocale, nonNullValues);
}
return entryValue;
}
function groupEntries(collection, extension, entries) {
const {
structure,
defaultLocale,
locales
} = getI18nInfo(collection);
if (structure === I18N_STRUCTURE.SINGLE_FILE) {
return entries.map(e => mergeSingleFileValue(e, defaultLocale, locales));
}
const grouped = (0, _groupBy2.default)(entries.map(e => ({
locale: getLocaleFromPath(structure, extension, e.path),
value: e
})), ({
locale,
value: e
}) => {
return normalizeFilePath(structure, e.path, locale);
});
const groupedEntries = Object.values(grouped).reduce((acc, values) => {
const entryValue = mergeValues(collection, structure, defaultLocale, values);
return [...acc, entryValue];
}, []);
return groupedEntries;
}
function getI18nDataFiles(collection, extension, path, slug, diffFiles) {
const {
structure
} = getI18nInfo(collection);
if (structure === I18N_STRUCTURE.SINGLE_FILE) {
return diffFiles;
}
const paths = getFilePaths(collection, extension, path, slug);
const dataFiles = paths.reduce((acc, path) => {
const dataFile = diffFiles.find(file => file.path === path);
if (dataFile) {
return [...acc, dataFile];
} else {
return [...acc, {
path,
id: '',
newFile: false
}];
}
}, []);
return dataFiles;
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function duplicateDefaultI18nFields(collection, dataFields) {
const {
locales,
defaultLocale
} = getI18nInfo(collection);
const i18nFields = Object.fromEntries(locales.filter(locale => locale !== defaultLocale).map(locale => [locale, {
data: dataFields
}]));
return i18nFields;
}
function duplicateI18nFields(entryDraft, field, locales, defaultLocale, fieldPath = [field.get('name')]) {
const value = entryDraft.getIn(['entry', 'data', ...fieldPath]);
if (field.get(I18N) === I18N_FIELD.DUPLICATE) {
locales.filter(l => l !== defaultLocale).forEach(l => {
entryDraft = entryDraft.setIn(['entry', ...getDataPath(l, defaultLocale), ...fieldPath], value);
});
}
if (field.has('field') && !_immutable.List.isList(value)) {
const fields = [field.get('field')];
fields.forEach(field => {
entryDraft = duplicateI18nFields(entryDraft, field, locales, defaultLocale, [...fieldPath, field.get('name')]);
});
} else if (field.has('fields') && !_immutable.List.isList(value)) {
const fields = field.get('fields').toArray();
fields.forEach(field => {
entryDraft = duplicateI18nFields(entryDraft, field, locales, defaultLocale, [...fieldPath, field.get('name')]);
});
}
return entryDraft;
}
function getPreviewEntry(entry, locale, defaultLocale) {
if (locale === defaultLocale) {
return entry;
}
return entry.set('data', entry.getIn([I18N, locale, 'data']));
}
function serializeI18n(collection, entry,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
serializeValues) {
const {
locales,
defaultLocale
} = getI18nInfo(collection);
locales.filter(locale => locale !== defaultLocale).forEach(locale => {
const dataPath = getLocaleDataPath(locale);
entry = entry.setIn(dataPath, serializeValues(entry.getIn(dataPath)));
});
return entry;
}

13
node_modules/decap-cms-core/dist/esm/lib/phrases.js generated vendored Normal file
View File

@@ -0,0 +1,13 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getPhrases = getPhrases;
var _merge2 = _interopRequireDefault(require("lodash/merge"));
var _registry = require("./registry");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function getPhrases(locale) {
const phrases = (0, _merge2.default)({}, (0, _registry.getLocale)('en'), (0, _registry.getLocale)(locale));
return phrases;
}

364
node_modules/decap-cms-core/dist/esm/lib/registry.js generated vendored Normal file
View File

@@ -0,0 +1,364 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
exports.getBackend = getBackend;
exports.getCustomFormats = getCustomFormats;
exports.getCustomFormatsExtensions = getCustomFormatsExtensions;
exports.getCustomFormatsFormatters = getCustomFormatsFormatters;
exports.getEditorComponents = getEditorComponents;
exports.getEventListeners = getEventListeners;
exports.getFormatter = getFormatter;
exports.getLocale = getLocale;
exports.getMediaLibrary = getMediaLibrary;
exports.getPreviewStyles = getPreviewStyles;
exports.getPreviewTemplate = getPreviewTemplate;
exports.getRemarkPlugins = getRemarkPlugins;
exports.getWidget = getWidget;
exports.getWidgetValueSerializer = getWidgetValueSerializer;
exports.getWidgets = getWidgets;
exports.invokeEvent = invokeEvent;
exports.registerBackend = registerBackend;
exports.registerCustomFormat = registerCustomFormat;
exports.registerEditorComponent = registerEditorComponent;
exports.registerEventListener = registerEventListener;
exports.registerLocale = registerLocale;
exports.registerMediaLibrary = registerMediaLibrary;
exports.registerPreviewStyle = registerPreviewStyle;
exports.registerPreviewTemplate = registerPreviewTemplate;
exports.registerRemarkPlugin = registerRemarkPlugin;
exports.registerWidget = registerWidget;
exports.registerWidgetValueSerializer = registerWidgetValueSerializer;
exports.removeEventListener = removeEventListener;
exports.resolveWidget = resolveWidget;
var _immutable = require("immutable");
var _immer = require("immer");
var _commonTags = require("common-tags");
var _EditorComponent = _interopRequireDefault(require("../valueObjects/EditorComponent"));
const _excluded = ["name", "controlComponent", "previewComponent", "schema", "allowMapValue", "globalStyles"];
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
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; }
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; }
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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
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); }
const allowedEvents = ['prePublish', 'postPublish', 'preUnpublish', 'postUnpublish', 'preSave', 'postSave'];
const eventHandlers = {};
allowedEvents.forEach(e => {
eventHandlers[e] = [];
});
/**
* Global Registry Object
*/
const registry = {
backends: {},
templates: {},
previewStyles: [],
widgets: {},
editorComponents: (0, _immutable.Map)(),
remarkPlugins: [],
widgetValueSerializers: {},
mediaLibraries: [],
locales: {},
eventHandlers,
formats: {}
};
var _default = exports.default = {
registerPreviewStyle,
getPreviewStyles,
registerPreviewTemplate,
getPreviewTemplate,
registerWidget,
getWidget,
getWidgets,
resolveWidget,
registerEditorComponent,
getEditorComponents,
registerRemarkPlugin,
getRemarkPlugins,
registerWidgetValueSerializer,
getWidgetValueSerializer,
registerBackend,
getBackend,
registerMediaLibrary,
getMediaLibrary,
registerLocale,
getLocale,
registerEventListener,
removeEventListener,
getEventListeners,
invokeEvent,
registerCustomFormat,
getCustomFormats,
getCustomFormatsExtensions,
getCustomFormatsFormatters
};
/**
* Preview Styles
*
* Valid options:
* - raw {boolean} if `true`, `style` value is expected to be a CSS string
*/
function registerPreviewStyle(style, opts) {
registry.previewStyles.push(_objectSpread(_objectSpread({}, opts), {}, {
value: style
}));
}
function getPreviewStyles() {
return registry.previewStyles;
}
/**
* Preview Templates
*/
function registerPreviewTemplate(name, component) {
registry.templates[name] = component;
}
function getPreviewTemplate(name) {
return registry.templates[name];
}
/**
* Editor Widgets
*/
function registerWidget(name, control, preview, schema = {}) {
if (Array.isArray(name)) {
name.forEach(widget => {
if (typeof widget !== 'object') {
console.error(`Cannot register widget: ${widget}`);
} else {
registerWidget(widget);
}
});
} else if (typeof name === 'string') {
// A registered widget control can be reused by a new widget, allowing
// multiple copies with different previews.
const newControl = typeof control === 'string' ? registry.widgets[control].control : control;
registry.widgets[name] = {
control: newControl,
preview,
schema
};
} else if (typeof name === 'object') {
const {
name: widgetName,
controlComponent: control,
previewComponent: preview,
schema = {},
allowMapValue,
globalStyles
} = name,
options = _objectWithoutProperties(name, _excluded);
if (registry.widgets[widgetName]) {
console.warn((0, _commonTags.oneLine)`
Multiple widgets registered with name "${widgetName}". Only the last widget registered with
this name will be used.
`);
}
if (!control) {
throw Error(`Widget "${widgetName}" registered without \`controlComponent\`.`);
}
registry.widgets[widgetName] = _objectSpread({
control,
preview,
schema,
globalStyles,
allowMapValue
}, options);
} else {
console.error('`registerWidget` failed, called with incorrect arguments.');
}
}
function getWidget(name) {
return registry.widgets[name];
}
function getWidgets() {
return (0, _immer.produce)(Object.entries(registry.widgets), draft => {
return draft.map(([key, value]) => _objectSpread({
name: key
}, value));
});
}
function resolveWidget(name) {
return getWidget(name || 'string') || getWidget('unknown');
}
/**
* Markdown Editor Custom Components
*/
function registerEditorComponent(component) {
const plugin = (0, _EditorComponent.default)(component);
if (plugin.type === 'code-block') {
const codeBlock = registry.editorComponents.find(c => c.type === 'code-block');
if (codeBlock) {
console.warn((0, _commonTags.oneLine)`
Only one editor component of type "code-block" may be registered. Previously registered code
block component(s) will be overwritten.
`);
registry.editorComponents = registry.editorComponents.delete(codeBlock.id);
}
}
registry.editorComponents = registry.editorComponents.set(plugin.id, plugin);
}
function getEditorComponents() {
return registry.editorComponents;
}
/**
* Remark plugins
*/
/** @typedef {import('unified').Pluggable} RemarkPlugin */
/** @type {(plugin: RemarkPlugin) => void} */
function registerRemarkPlugin(plugin) {
registry.remarkPlugins.push(plugin);
}
/** @type {() => Array<RemarkPlugin>} */
function getRemarkPlugins() {
return registry.remarkPlugins;
}
/**
* Widget Serializers
*/
function registerWidgetValueSerializer(widgetName, serializer) {
registry.widgetValueSerializers[widgetName] = serializer;
}
function getWidgetValueSerializer(widgetName) {
return registry.widgetValueSerializers[widgetName];
}
/**
* Backend API
*/
function registerBackend(name, BackendClass) {
if (!name || !BackendClass) {
console.error("Backend parameters invalid. example: CMS.registerBackend('myBackend', BackendClass)");
} else if (registry.backends[name]) {
console.error(`Backend [${name}] already registered. Please choose a different name.`);
} else {
registry.backends[name] = {
init: (...args) => new BackendClass(...args)
};
}
}
function getBackend(name) {
return registry.backends[name];
}
/**
* Media Libraries
*/
function registerMediaLibrary(mediaLibrary, options) {
if (registry.mediaLibraries.find(ml => mediaLibrary.name === ml.name)) {
throw new Error(`A media library named ${mediaLibrary.name} has already been registered.`);
}
registry.mediaLibraries.push(_objectSpread(_objectSpread({}, mediaLibrary), {}, {
options
}));
}
function getMediaLibrary(name) {
return registry.mediaLibraries.find(ml => ml.name === name);
}
function validateEventName(name) {
if (!allowedEvents.includes(name)) {
throw new Error(`Invalid event name '${name}'`);
}
}
function getEventListeners(name) {
validateEventName(name);
return [...registry.eventHandlers[name]];
}
function registerEventListener({
name,
handler
}, options = {}) {
validateEventName(name);
registry.eventHandlers[name].push({
handler,
options
});
}
async function invokeEvent({
name,
data
}) {
validateEventName(name);
const handlers = registry.eventHandlers[name];
let _data = _objectSpread({}, data);
for (const {
handler,
options
} of handlers) {
const result = await handler(_data, options);
if (result !== undefined) {
const entry = _data.entry.set('data', result);
_data = _objectSpread(_objectSpread({}, data), {}, {
entry
});
}
}
return _data.entry.get('data');
}
function removeEventListener({
name,
handler
}) {
validateEventName(name);
if (handler) {
registry.eventHandlers[name] = registry.eventHandlers[name].filter(item => item.handler !== handler);
} else {
registry.eventHandlers[name] = [];
}
}
/**
* Locales
*/
function registerLocale(locale, phrases) {
if (!locale || !phrases) {
console.error("Locale parameters invalid. example: CMS.registerLocale('locale', phrases)");
} else {
registry.locales[locale] = phrases;
}
}
function getLocale(locale) {
return registry.locales[locale];
}
function registerCustomFormat(name, extension, formatter) {
registry.formats[name] = {
extension,
formatter
};
}
function getCustomFormats() {
return registry.formats;
}
function getCustomFormatsExtensions() {
return Object.entries(registry.formats).reduce(function (acc, [name, {
extension
}]) {
return _objectSpread(_objectSpread({}, acc), {}, {
[name]: extension
});
}, {});
}
/** @type {() => Record<string, unknown>} */
function getCustomFormatsFormatters() {
return Object.entries(registry.formats).reduce(function (acc, [name, {
formatter
}]) {
return _objectSpread(_objectSpread({}, acc), {}, {
[name]: formatter
});
}, {});
}
function getFormatter(name) {
var _registry$formats$nam;
return (_registry$formats$nam = registry.formats[name]) === null || _registry$formats$nam === void 0 ? void 0 : _registry$formats$nam.formatter;
}

View File

@@ -0,0 +1,74 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.deserializeValues = deserializeValues;
exports.serializeValues = serializeValues;
var _isNil2 = _interopRequireDefault(require("lodash/isNil"));
var _immutable = require("immutable");
var _registry = require("./registry");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Methods for serializing/deserializing entry field values. Most widgets don't
* require this for their values, and those that do can typically serialize/
* deserialize on every change from within the widget. The serialization
* handlers here are for widgets whose values require heavy serialization that
* would hurt performance if run for every change.
* An example of this is the markdown widget, whose value is stored as a
* markdown string. Instead of stringifying on every change of that field, a
* deserialization method is registered from the widget's control module that
* converts the stored markdown string to an AST, and that AST serves as the
* widget model during editing.
*
* Serialization handlers should be registered for each widget that requires
* them, and the registration method is exposed through the registry. Any
* registered deserialization handlers run on entry load, and serialization
* handlers run on persist.
*/
function runSerializer(values, fields, method) {
/**
* Reduce the list of fields to a map where keys are field names and values
* are field values, serializing the values of fields whose widgets have
* registered serializers. If the field is a list or object, call recursively
* for nested fields.
*/
let serializedData = fields.reduce((acc, field) => {
const fieldName = field.get('name');
const value = values.get(fieldName);
const serializer = (0, _registry.getWidgetValueSerializer)(field.get('widget'));
const nestedFields = field.get('fields');
// Call recursively for fields within lists
if (nestedFields && _immutable.List.isList(value)) {
return acc.set(fieldName, value.map(val => runSerializer(val, nestedFields, method)));
}
// Call recursively for fields within objects
if (nestedFields && _immutable.Map.isMap(value)) {
return acc.set(fieldName, runSerializer(value, nestedFields, method));
}
// Run serialization method on value if not null or undefined
if (serializer && !(0, _isNil2.default)(value)) {
return acc.set(fieldName, serializer[method](value));
}
// If no serializer is registered for the field's widget, use the field as is
if (!(0, _isNil2.default)(value)) {
return acc.set(fieldName, value);
}
return acc;
}, (0, _immutable.Map)());
//preserve unknown fields value
serializedData = values.mergeDeep(serializedData);
return serializedData;
}
function serializeValues(values, fields) {
return runSerializer(values, fields, 'serialize');
}
function deserializeValues(values, fields) {
return runSerializer(values, fields, 'deserialize');
}

15
node_modules/decap-cms-core/dist/esm/lib/textHelper.js generated vendored Normal file
View File

@@ -0,0 +1,15 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.stringToRGB = stringToRGB;
function stringToRGB(str) {
if (!str) return '000000';
let hash = 0;
for (let i = 0; i < str.length; i++) {
hash = str.charCodeAt(i) + ((hash << 5) - hash);
}
const c = (hash & 0x00ffffff).toString(16).toUpperCase();
return `00000${c}`.slice(-6);
}

128
node_modules/decap-cms-core/dist/esm/lib/urlHelper.js generated vendored Normal file
View File

@@ -0,0 +1,128 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.addParams = addParams;
exports.getCharReplacer = getCharReplacer;
exports.getCollectionUrl = getCollectionUrl;
exports.getNewEntryUrl = getNewEntryUrl;
exports.joinUrlPath = joinUrlPath;
exports.sanitizeChar = sanitizeChar;
exports.sanitizeSlug = sanitizeSlug;
exports.sanitizeURI = sanitizeURI;
exports.stripProtocol = stripProtocol;
var _partialRight2 = _interopRequireDefault(require("lodash/partialRight"));
var _flow2 = _interopRequireDefault(require("lodash/flow"));
var _escapeRegExp2 = _interopRequireDefault(require("lodash/escapeRegExp"));
var _isString2 = _interopRequireDefault(require("lodash/isString"));
var _url = _interopRequireDefault(require("url"));
var _urlJoin = _interopRequireDefault(require("url-join"));
var _diacritics = _interopRequireDefault(require("diacritics"));
var _sanitizeFilename = _interopRequireDefault(require("sanitize-filename"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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; }
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; }
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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
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); }
function getUrl(urlString, direct) {
return `${direct ? '/#' : ''}${urlString}`;
}
function getCollectionUrl(collectionName, direct) {
return getUrl(`/collections/${collectionName}`, direct);
}
function getNewEntryUrl(collectionName, direct) {
return getUrl(`/collections/${collectionName}/new`, direct);
}
function addParams(urlString, params) {
const parsedUrl = _url.default.parse(urlString, true);
parsedUrl.query = _objectSpread(_objectSpread({}, parsedUrl.query), params);
return _url.default.format(parsedUrl);
}
function stripProtocol(urlString) {
const protocolEndIndex = urlString.indexOf('//');
return protocolEndIndex > -1 ? urlString.slice(protocolEndIndex + 2) : urlString;
}
/* See https://www.w3.org/International/articles/idn-and-iri/#path.
* According to the new IRI (Internationalized Resource Identifier) spec, RFC 3987,
* ASCII chars should be kept the same way as in standard URIs (letters digits _ - . ~).
* Non-ASCII chars (unless they are not in the allowed "ucschars" list) should be percent-encoded.
* If the string is not encoded in Unicode, it should be converted to UTF-8 and normalized first,
* but JS stores strings as UTF-16/UCS-2 internally, so we should not normalize or re-encode.
*/
const uriChars = /[\w\-.~]/i;
const ucsChars = /[\xA0-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFEF}\u{10000}-\u{1FFFD}\u{20000}-\u{2FFFD}\u{30000}-\u{3FFFD}\u{40000}-\u{4FFFD}\u{50000}-\u{5FFFD}\u{60000}-\u{6FFFD}\u{70000}-\u{7FFFD}\u{80000}-\u{8FFFD}\u{90000}-\u{9FFFD}\u{A0000}-\u{AFFFD}\u{B0000}-\u{BFFFD}\u{C0000}-\u{CFFFD}\u{D0000}-\u{DFFFD}\u{E1000}-\u{EFFFD}]/u;
function validURIChar(char) {
return uriChars.test(char);
}
function validIRIChar(char) {
return uriChars.test(char) || ucsChars.test(char);
}
function getCharReplacer(encoding, replacement) {
let validChar;
if (encoding === 'unicode') {
validChar = validIRIChar;
} else if (encoding === 'ascii') {
validChar = validURIChar;
} else {
throw new Error('`options.encoding` must be "unicode" or "ascii".');
}
// Check and make sure the replacement character is actually a safe char itself.
if (!Array.from(replacement).every(validChar)) {
throw new Error('The replacement character(s) (options.replacement) is itself unsafe.');
}
return char => validChar(char) ? char : replacement;
}
// `sanitizeURI` does not actually URI-encode the chars (that is the browser's and server's job), just removes the ones that are not allowed.
function sanitizeURI(str, options) {
const {
replacement = '',
encoding = 'unicode'
} = options || {};
if (!(0, _isString2.default)(str)) {
throw new Error('The input slug must be a string.');
}
if (!(0, _isString2.default)(replacement)) {
throw new Error('`options.replacement` must be a string.');
}
// `Array.from` must be used instead of `String.split` because
// `split` converts things like emojis into UTF-16 surrogate pairs.
return Array.from(str).map(getCharReplacer(encoding, replacement)).join('');
}
function sanitizeChar(char, options) {
const {
encoding = 'unicode',
sanitize_replacement: replacement = ''
} = options || {};
return getCharReplacer(encoding, replacement)(char);
}
function sanitizeSlug(str, options) {
if (!(0, _isString2.default)(str)) {
throw new Error('The input slug must be a string.');
}
const {
encoding,
clean_accents: stripDiacritics,
sanitize_replacement: replacement
} = options || {};
const sanitizedSlug = (0, _flow2.default)([...(stripDiacritics ? [_diacritics.default.remove] : []), (0, _partialRight2.default)(sanitizeURI, {
replacement,
encoding
}), (0, _partialRight2.default)(_sanitizeFilename.default, {
replacement
})])(str);
// Remove any doubled or leading/trailing replacement characters (that were added in the sanitizers).
const doubleReplacement = new RegExp(`(?:${(0, _escapeRegExp2.default)(replacement)})+`, 'g');
const trailingReplacement = new RegExp(`${(0, _escapeRegExp2.default)(replacement)}$`);
const leadingReplacement = new RegExp(`^${(0, _escapeRegExp2.default)(replacement)}`);
const normalizedSlug = sanitizedSlug.replace(doubleReplacement, replacement).replace(leadingReplacement, '').replace(trailingReplacement, '');
return normalizedSlug;
}
function joinUrlPath(base, ...path) {
return (0, _urlJoin.default)(base, ...path);
}

42
node_modules/decap-cms-core/dist/esm/mediaLibrary.js generated vendored Normal file
View File

@@ -0,0 +1,42 @@
"use strict";
var _once2 = _interopRequireDefault(require("lodash/once"));
var _registry = require("./lib/registry");
var _redux = require("./redux");
var _config = require("./actions/config");
var _mediaLibrary = require("./actions/mediaLibrary");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* This module is currently concerned only with external media libraries
* registered via `registerMediaLibrary`.
*/
function handleInsert(url) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
return _redux.store.dispatch((0, _mediaLibrary.insertMedia)(url, undefined));
}
const initializeMediaLibrary = (0, _once2.default)(async function initializeMediaLibrary(name, options) {
const lib = (0, _registry.getMediaLibrary)(name);
if (!lib) {
const err = new Error(`Missing external media library '${name}'. Please use 'registerMediaLibrary' to register it.`);
_redux.store.dispatch((0, _config.configFailed)(err));
} else {
const instance = await lib.init({
options,
handleInsert
});
_redux.store.dispatch((0, _mediaLibrary.createMediaLibrary)(instance));
}
});
_redux.store.subscribe(() => {
const state = _redux.store.getState();
if (state) {
var _state$config$media_l;
const mediaLibraryName = (_state$config$media_l = state.config.media_library) === null || _state$config$media_l === void 0 ? void 0 : _state$config$media_l.name;
if (mediaLibraryName && !state.mediaLibrary.get('externalLibrary')) {
const mediaLibraryConfig = state.config.media_library;
initializeMediaLibrary(mediaLibraryName, mediaLibraryConfig);
}
}
});

33
node_modules/decap-cms-core/dist/esm/reducers/auth.js generated vendored Normal file
View File

@@ -0,0 +1,33 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.defaultState = exports.default = void 0;
var _immer = require("immer");
var _auth = require("../actions/auth");
const defaultState = exports.defaultState = {
isFetching: false,
user: undefined,
error: undefined
};
const auth = (0, _immer.produce)((state, action) => {
switch (action.type) {
case _auth.AUTH_REQUEST:
state.isFetching = true;
break;
case _auth.AUTH_SUCCESS:
state.user = action.payload;
break;
case _auth.AUTH_FAILURE:
state.error = action.payload && action.payload.toString();
break;
case _auth.AUTH_REQUEST_DONE:
state.isFetching = false;
break;
case _auth.LOGOUT:
state.user = undefined;
state.isFetching = false;
}
}, defaultState);
var _default = exports.default = auth;

View File

@@ -0,0 +1,427 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
exports.getFieldsNames = getFieldsNames;
exports.getFileFromSlug = getFileFromSlug;
exports.selectAllowDeletion = selectAllowDeletion;
exports.selectAllowNewEntries = selectAllowNewEntries;
exports.selectDefaultSortableFields = selectDefaultSortableFields;
exports.selectEntryCollectionTitle = selectEntryCollectionTitle;
exports.selectEntryPath = selectEntryPath;
exports.selectEntrySlug = selectEntrySlug;
exports.selectField = selectField;
exports.selectFields = selectFields;
exports.selectFieldsComments = selectFieldsComments;
exports.selectFieldsWithMediaFolders = selectFieldsWithMediaFolders;
exports.selectFileEntryLabel = selectFileEntryLabel;
exports.selectFolderEntryExtension = selectFolderEntryExtension;
exports.selectHasMetaPath = selectHasMetaPath;
exports.selectIdentifier = selectIdentifier;
exports.selectInferredField = selectInferredField;
exports.selectMediaFolders = selectMediaFolders;
exports.selectSortDataPath = selectSortDataPath;
exports.selectSortableFields = selectSortableFields;
exports.selectTemplateName = selectTemplateName;
exports.selectViewFilters = selectViewFilters;
exports.selectViewGroups = selectViewGroups;
exports.traverseFields = traverseFields;
exports.updateFieldByKey = updateFieldByKey;
var _escapeRegExp2 = _interopRequireDefault(require("lodash/escapeRegExp"));
var _get2 = _interopRequireDefault(require("lodash/get"));
var _immutable = require("immutable");
var _decapCmsLibWidgets = require("decap-cms-lib-widgets");
var _consoleError = _interopRequireDefault(require("../lib/consoleError"));
var _config = require("../actions/config");
var _collectionTypes = require("../constants/collectionTypes");
var _commitProps = require("../constants/commitProps");
var _fieldInference = require("../constants/fieldInference");
var _formats = require("../formats/formats");
var _entries = require("./entries");
var _formatters = require("../lib/formatters");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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; }
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; }
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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
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); }
const {
keyToPathArray
} = _decapCmsLibWidgets.stringTemplate;
const defaultState = (0, _immutable.fromJS)({});
function collections(state = defaultState, action) {
switch (action.type) {
case _config.CONFIG_SUCCESS:
{
const collections = action.payload.collections;
let newState = (0, _immutable.OrderedMap)({});
collections.forEach(collection => {
newState = newState.set(collection.name, (0, _immutable.fromJS)(collection));
});
return newState;
}
default:
return state;
}
}
const selectors = {
[_collectionTypes.FOLDER]: {
entryExtension(collection) {
const ext = collection.get('extension') || (0, _get2.default)((0, _formats.getFormatExtensions)(), collection.get('format') || 'frontmatter');
if (!ext) {
throw new Error(`No extension found for format ${collection.get('format')}`);
}
return ext.replace(/^\./, '');
},
fields(collection) {
return collection.get('fields');
},
entryPath(collection, slug) {
const folder = collection.get('folder').replace(/\/$/, '');
return `${folder}/${slug}.${this.entryExtension(collection)}`;
},
entrySlug(collection, path) {
var _path$split$pop;
const folder = collection.get('folder').replace(/\/$/, '');
const slug = (_path$split$pop = path.split(folder + '/').pop()) === null || _path$split$pop === void 0 ? void 0 : _path$split$pop.replace(new RegExp(`\\.${(0, _escapeRegExp2.default)(this.entryExtension(collection))}$`), '');
return slug;
},
allowNewEntries(collection) {
return collection.get('create');
},
allowDeletion(collection) {
return collection.get('delete', true);
},
templateName(collection) {
return collection.get('name');
}
},
[_collectionTypes.FILES]: {
fileForEntry(collection, slug) {
const files = collection.get('files');
return files && files.filter(f => (f === null || f === void 0 ? void 0 : f.get('name')) === slug).get(0);
},
fields(collection, slug) {
const file = this.fileForEntry(collection, slug);
return file && file.get('fields');
},
entryPath(collection, slug) {
const file = this.fileForEntry(collection, slug);
return file && file.get('file');
},
entrySlug(collection, path) {
const file = collection.get('files').filter(f => (f === null || f === void 0 ? void 0 : f.get('file')) === path).get(0);
return file && file.get('name');
},
entryLabel(collection, slug) {
const file = this.fileForEntry(collection, slug);
return file && file.get('label');
},
allowNewEntries() {
return false;
},
allowDeletion(collection) {
return collection.get('delete', false);
},
templateName(_collection, slug) {
return slug;
}
}
};
function getFieldsWithMediaFolders(fields) {
const fieldsWithMediaFolders = fields.reduce((acc, f) => {
if (f.has('media_folder')) {
acc = [...acc, f];
}
if (f.has('fields')) {
var _f$get;
const fields = (_f$get = f.get('fields')) === null || _f$get === void 0 ? void 0 : _f$get.toArray();
acc = [...acc, ...getFieldsWithMediaFolders(fields)];
} else if (f.has('field')) {
const field = f.get('field');
acc = [...acc, ...getFieldsWithMediaFolders([field])];
} else if (f.has('types')) {
var _f$get2;
const types = (_f$get2 = f.get('types')) === null || _f$get2 === void 0 ? void 0 : _f$get2.toArray();
acc = [...acc, ...getFieldsWithMediaFolders(types)];
}
return acc;
}, []);
return fieldsWithMediaFolders;
}
function getFileFromSlug(collection, slug) {
var _collection$get;
return (_collection$get = collection.get('files')) === null || _collection$get === void 0 ? void 0 : _collection$get.toArray().find(f => f.get('name') === slug);
}
function selectFieldsWithMediaFolders(collection, slug) {
if (collection.has('folder')) {
const fields = collection.get('fields').toArray();
return getFieldsWithMediaFolders(fields);
} else if (collection.has('files')) {
var _getFileFromSlug;
const fields = ((_getFileFromSlug = getFileFromSlug(collection, slug)) === null || _getFileFromSlug === void 0 ? void 0 : _getFileFromSlug.get('fields').toArray()) || [];
return getFieldsWithMediaFolders(fields);
}
return [];
}
function selectMediaFolders(config, collection, entry) {
const fields = selectFieldsWithMediaFolders(collection, entry.get('slug'));
const folders = fields.map(f => (0, _entries.selectMediaFolder)(config, collection, entry, f));
if (collection.has('files')) {
const file = getFileFromSlug(collection, entry.get('slug'));
if (file) {
folders.unshift((0, _entries.selectMediaFolder)(config, collection, entry, undefined));
}
}
if (collection.has('media_folder')) {
// stop evaluating media folders at collection level
collection = collection.delete('files');
folders.unshift((0, _entries.selectMediaFolder)(config, collection, entry, undefined));
}
return (0, _immutable.Set)(folders).toArray();
}
function selectFields(collection, slug) {
return selectors[collection.get('type')].fields(collection, slug);
}
function selectFolderEntryExtension(collection) {
return selectors[_collectionTypes.FOLDER].entryExtension(collection);
}
function selectFileEntryLabel(collection, slug) {
return selectors[_collectionTypes.FILES].entryLabel(collection, slug);
}
function selectEntryPath(collection, slug) {
return selectors[collection.get('type')].entryPath(collection, slug);
}
function selectEntrySlug(collection, path) {
return selectors[collection.get('type')].entrySlug(collection, path);
}
function selectAllowNewEntries(collection) {
return selectors[collection.get('type')].allowNewEntries(collection);
}
function selectAllowDeletion(collection) {
return selectors[collection.get('type')].allowDeletion(collection);
}
function selectTemplateName(collection, slug) {
return selectors[collection.get('type')].templateName(collection, slug);
}
function getFieldsNames(fields, prefix = '') {
let names = fields.map(f => `${prefix}${f.get('name')}`);
fields.forEach((f, index) => {
if (f.has('fields')) {
var _f$get3;
const fields = (_f$get3 = f.get('fields')) === null || _f$get3 === void 0 ? void 0 : _f$get3.toArray();
names = [...names, ...getFieldsNames(fields, `${names[index]}.`)];
} else if (f.has('field')) {
const field = f.get('field');
names = [...names, ...getFieldsNames([field], `${names[index]}.`)];
} else if (f.has('types')) {
var _f$get4;
const types = (_f$get4 = f.get('types')) === null || _f$get4 === void 0 ? void 0 : _f$get4.toArray();
names = [...names, ...getFieldsNames(types, `${names[index]}.`)];
}
});
return names;
}
function selectField(collection, key) {
const array = keyToPathArray(key);
let name;
let field;
let fields = collection.get('fields', (0, _immutable.List)()).toArray();
while ((name = array.shift()) && fields) {
var _field, _field3, _field5;
field = fields.find(f => f.get('name') === name);
if ((_field = field) !== null && _field !== void 0 && _field.has('fields')) {
var _field2, _field2$get;
fields = (_field2 = field) === null || _field2 === void 0 ? void 0 : (_field2$get = _field2.get('fields')) === null || _field2$get === void 0 ? void 0 : _field2$get.toArray();
} else if ((_field3 = field) !== null && _field3 !== void 0 && _field3.has('field')) {
var _field4;
fields = [(_field4 = field) === null || _field4 === void 0 ? void 0 : _field4.get('field')];
} else if ((_field5 = field) !== null && _field5 !== void 0 && _field5.has('types')) {
var _field6, _field6$get;
fields = (_field6 = field) === null || _field6 === void 0 ? void 0 : (_field6$get = _field6.get('types')) === null || _field6$get === void 0 ? void 0 : _field6$get.toArray();
}
}
return field;
}
function traverseFields(fields, updater, done = () => false) {
if (done()) {
return fields;
}
fields = fields.map(f => {
const field = updater(f);
if (done()) {
return field;
} else if (field.has('fields')) {
return field.set('fields', traverseFields(field.get('fields'), updater, done));
} else if (field.has('field')) {
return field.set('field', traverseFields((0, _immutable.List)([field.get('field')]), updater, done).get(0));
} else if (field.has('types')) {
return field.set('types', traverseFields(field.get('types'), updater, done));
} else {
return field;
}
}).toList();
return fields;
}
function updateFieldByKey(collection, key, updater) {
const selected = selectField(collection, key);
if (!selected) {
return collection;
}
let updated = false;
function updateAndBreak(f) {
const field = f;
if (field === selected) {
updated = true;
return updater(field);
} else {
return field;
}
}
collection = collection.set('fields', traverseFields(collection.get('fields', (0, _immutable.List)()), updateAndBreak, () => updated));
return collection;
}
function selectIdentifier(collection) {
const identifier = collection.get('identifier_field');
const identifierFields = identifier ? [identifier, ..._fieldInference.IDENTIFIER_FIELDS] : [..._fieldInference.IDENTIFIER_FIELDS];
const fieldNames = getFieldsNames(collection.get('fields', (0, _immutable.List)()).toArray());
return identifierFields.find(id => fieldNames.find(name => name.toLowerCase().trim() === id.toLowerCase().trim()));
}
function selectInferredField(collection, fieldName) {
if (fieldName === 'title' && collection.get('identifier_field')) {
return selectIdentifier(collection);
}
const inferableField = _fieldInference.INFERABLE_FIELDS[fieldName];
const fields = collection.get('fields');
let field;
// If collection has no fields or fieldName is not defined within inferables list, return null
if (!fields || !inferableField) return null;
// Try to return a field of the specified type with one of the synonyms
const mainTypeFields = fields.filter(f => (f === null || f === void 0 ? void 0 : f.get('widget', 'string')) === inferableField.type).map(f => f === null || f === void 0 ? void 0 : f.get('name'));
field = mainTypeFields.filter(f => inferableField.synonyms.indexOf(f) !== -1);
if (field && field.size > 0) return field.first();
// Try to return a field for each of the specified secondary types
const secondaryTypeFields = fields.filter(f => inferableField.secondaryTypes.indexOf(f === null || f === void 0 ? void 0 : f.get('widget', 'string')) !== -1).map(f => f === null || f === void 0 ? void 0 : f.get('name'));
field = secondaryTypeFields.filter(f => inferableField.synonyms.indexOf(f) !== -1);
if (field && field.size > 0) return field.first();
// Try to return the first field of the specified type
if (inferableField.fallbackToFirstField && mainTypeFields.size > 0) return mainTypeFields.first();
// Coundn't infer the field. Show error and return null.
if (inferableField.showError) {
(0, _consoleError.default)(`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.`);
}
return null;
}
function selectEntryCollectionTitle(collection, entry) {
// prefer formatted summary over everything else
const summaryTemplate = collection.get('summary');
if (summaryTemplate) return (0, _formatters.summaryFormatter)(summaryTemplate, entry, collection);
// if the collection is a file collection return the label of the entry
if (collection.get('type') == _collectionTypes.FILES) {
const label = selectFileEntryLabel(collection, entry.get('slug'));
if (label) return label;
}
// try to infer a title field from the entry data
const entryData = entry.get('data');
const titleField = selectInferredField(collection, 'title');
const result = titleField && entryData.getIn(keyToPathArray(titleField));
// if the custom field does not yield a result, fallback to 'title'
if (!result && titleField !== 'title') {
return entryData.getIn(keyToPathArray('title'));
}
return result;
}
function selectDefaultSortableFields(collection, backend, hasIntegration) {
let defaultSortable = _fieldInference.SORTABLE_FIELDS.map(type => {
const field = selectInferredField(collection, type);
if (backend.isGitBackend() && type === 'author' && !field && !hasIntegration) {
// default to commit author if not author field is found
return _commitProps.COMMIT_AUTHOR;
}
return field;
}).filter(Boolean);
if (backend.isGitBackend() && !hasIntegration) {
// always have commit date by default
defaultSortable = [_commitProps.COMMIT_DATE, ...defaultSortable];
}
return defaultSortable;
}
function selectSortableFields(collection, t) {
const fields = collection.get('sortable_fields').toArray().map(key => {
if (key === _commitProps.COMMIT_DATE) {
return {
key,
field: {
name: key,
label: t('collection.defaultFields.updatedOn.label')
}
};
}
const field = selectField(collection, key);
if (key === _commitProps.COMMIT_AUTHOR && !field) {
return {
key,
field: {
name: key,
label: t('collection.defaultFields.author.label')
}
};
}
return {
key,
field: field === null || field === void 0 ? void 0 : field.toJS()
};
}).filter(item => !!item.field).map(item => _objectSpread(_objectSpread({}, item.field), {}, {
key: item.key
}));
return fields;
}
function selectSortDataPath(collection, key) {
if (key === _commitProps.COMMIT_DATE) {
return 'updatedOn';
} else if (key === _commitProps.COMMIT_AUTHOR && !selectField(collection, key)) {
return 'author';
} else {
return `data.${key}`;
}
}
function selectViewFilters(collection) {
const viewFilters = collection.get('view_filters').toJS();
return viewFilters;
}
function selectViewGroups(collection) {
const viewGroups = collection.get('view_groups').toJS();
return viewGroups;
}
function selectFieldsComments(collection, entryMap) {
let fields = [];
if (collection.has('folder')) {
fields = collection.get('fields').toArray();
} else if (collection.has('files')) {
const file = collection.get('files').find(f => (f === null || f === void 0 ? void 0 : f.get('name')) === entryMap.get('slug'));
fields = file.get('fields').toArray();
}
const comments = {};
const names = getFieldsNames(fields);
names.forEach(name => {
const field = selectField(collection, name);
if (field !== null && field !== void 0 && field.has('comment')) {
comments[name] = field.get('comment');
}
});
return comments;
}
function selectHasMetaPath(collection) {
var _collection$get2;
return collection.has('folder') && collection.get('type') === _collectionTypes.FOLDER && collection.has('meta') && ((_collection$get2 = collection.get('meta')) === null || _collection$get2 === void 0 ? void 0 : _collection$get2.has('path'));
}
var _default = exports.default = collections;

View File

@@ -0,0 +1,18 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _redux = require("redux");
var _index = _interopRequireDefault(require("./index"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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; }
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; }
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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
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); }
function createRootReducer() {
return (0, _redux.combineReducers)(_objectSpread({}, _index.default));
}
var _default = exports.default = createRootReducer;

View File

@@ -0,0 +1,41 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
exports.selectLocale = selectLocale;
exports.selectUseWorkflow = selectUseWorkflow;
var _immer = require("immer");
var _config = require("../actions/config");
var _publishModes = require("../constants/publishModes");
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; }
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; }
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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
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); }
const defaultState = {
isFetching: true
};
const config = (0, _immer.produce)((state, action) => {
switch (action.type) {
case _config.CONFIG_REQUEST:
state.isFetching = true;
break;
case _config.CONFIG_SUCCESS:
return _objectSpread(_objectSpread({}, action.payload), {}, {
isFetching: false,
error: undefined
});
case _config.CONFIG_FAILURE:
state.isFetching = false;
state.error = action.payload.toString();
}
}, defaultState);
function selectLocale(state) {
return state.locale || 'en';
}
function selectUseWorkflow(state) {
return state.publish_mode === _publishModes.EDITORIAL_WORKFLOW;
}
var _default = exports.default = config;

View File

@@ -0,0 +1,37 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
exports.selectCollectionEntriesCursor = selectCollectionEntriesCursor;
var _immutable = require("immutable");
var _decapCmsLibUtil = require("decap-cms-lib-util");
var _entries = require("../actions/entries");
// Since pagination can be used for a variety of views (collections
// and searches are the most common examples), we namespace cursors by
// their type before storing them in the state.
function selectCollectionEntriesCursor(state, collectionName) {
return new _decapCmsLibUtil.Cursor(state.getIn(['cursorsByType', 'collectionEntries', collectionName]));
}
function cursors(state = (0, _immutable.fromJS)({
cursorsByType: {
collectionEntries: {}
}
}), action) {
switch (action.type) {
case _entries.ENTRIES_SUCCESS:
{
return state.setIn(['cursorsByType', 'collectionEntries', action.payload.collection], _decapCmsLibUtil.Cursor.create(action.payload.cursor).store);
}
case _entries.FILTER_ENTRIES_SUCCESS:
case _entries.GROUP_ENTRIES_SUCCESS:
case _entries.SORT_ENTRIES_SUCCESS:
{
return state.deleteIn(['cursorsByType', 'collectionEntries', action.payload.collection]);
}
default:
return state;
}
}
var _default = exports.default = cursors;

Some files were not shown because too many files have changed in this diff Show More