@craftercms/studio-ui
Version:
Services, components, models & utils to build CrafterCMS authoring extensions.
246 lines (244 loc) • 11.9 kB
JavaScript
/*
* Copyright (C) 2007-2022 Crafter Software Corporation. All Rights Reserved.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3 as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* Copyright (C) 2007-2022 Crafter Software Corporation. All Rights Reserved.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import { nanoid as uuid } from 'nanoid';
export function setStoredGlobalMenuSiteViewPreference(value, user) {
window.localStorage.setItem(`craftercms.${user}.globalMenuSiteViewPreference`, value);
}
export function getStoredGlobalMenuSiteViewPreference(user) {
return window.localStorage.getItem(`craftercms.${user}.globalMenuSiteViewPreference`);
}
export function getStateMapFromLegacyItem(item) {
return {
new: item.isNew,
modified: item.isInProgress,
deleted: Boolean(item.isDeleted),
locked: Boolean(item.lockOwner),
systemProcessing: false,
submitted: Boolean(item.isSubmitted),
scheduled: Boolean(item.isScheduled),
publishing: false,
submittedToStaging: item.submittedToEnvironment === 'staging',
submittedToLive: item.submittedToEnvironment === 'live',
staged: item.isStaged,
live: item.isLive,
disabled: item.disabled,
translationInProgress: false,
translationPending: false,
translationUpToDate: false
};
}
export function setStoredEditModeChoice(value, user) {
window.localStorage.setItem(`craftercms.${user}.editModeChoice`, value);
}
export function getStoredEditModeChoice(user) {
const value = window.localStorage.getItem(`craftercms.${user}.editModeChoice`);
return value ? value === 'true' : null;
}
export function setStoredHighlightModeChoice(value, user) {
window.localStorage.setItem(`craftercms.${user}.highlightModeChoice`, value);
}
export function getStoredHighlightModeChoice(user) {
return window.localStorage.getItem(`craftercms.${user}.highlightModeChoice`);
}
export function setStoredEditModePadding(value, user) {
window.localStorage.setItem(`craftercms.${user}.editModePadding`, value);
}
export function getStoredEditModePadding(user) {
const value = window.localStorage.getItem(`craftercms.${user}.editModePadding`);
return value ? value === 'true' : null;
}
export function setStoredClipboard(siteIdentifier, user, value) {
window.localStorage.setItem(
`craftercms.${user}.clipboard.${siteIdentifier}`,
JSON.stringify(Object.assign(Object.assign({}, value), { timestamp: Date.now() }))
);
}
export function getStoredClipboard(siteIdentifier, user) {
return JSON.parse(window.localStorage.getItem(`craftercms.${user}.clipboard.${siteIdentifier}`));
}
export function removeStoredClipboard(siteIdentifier, user) {
return window.localStorage.removeItem(`craftercms.${user}.clipboard.${siteIdentifier}`);
}
export function setStoredPreviewToolsPanelPage(siteIdentifier, user, value) {
window.localStorage.setItem(`craftercms.${user}.previewToolsPanelPage.${siteIdentifier}`, JSON.stringify(value));
}
export function getStoredPreviewToolsPanelPage(siteIdentifier, user) {
return JSON.parse(window.localStorage.getItem(`craftercms.${user}.previewToolsPanelPage.${siteIdentifier}`));
}
export function removeStoredPreviewToolsPanelPage(siteIdentifier, user) {
return window.localStorage.removeItem(`craftercms.${user}.previewToolsPanelPage.${siteIdentifier}`);
}
export function setStoredPathNavigator(siteIdentifier, user, id, value) {
window.localStorage.setItem(`craftercms.${user}.pathNavigator.${siteIdentifier}.${id}`, JSON.stringify(value));
}
export function getStoredPathNavigator(siteIdentifier, user, id) {
return JSON.parse(window.localStorage.getItem(`craftercms.${user}.pathNavigator.${siteIdentifier}.${id}`));
}
export function removeStoredPathNavigator(siteIdentifier, user, id) {
window.localStorage.removeItem(`craftercms.${user}.pathNavigator.${siteIdentifier}.${id}`);
}
export function setStoredPathNavigatorTree(siteIdentifier, user, id, value) {
window.localStorage.setItem(`craftercms.${user}.pathNavigatorTree.${siteIdentifier}.${id}`, JSON.stringify(value));
}
export function getStoredPathNavigatorTree(siteIdentifier, user, id) {
return JSON.parse(window.localStorage.getItem(`craftercms.${user}.pathNavigatorTree.${siteIdentifier}.${id}`));
}
export function removeStoredPathNavigatorTree(siteIdentifier, user, id) {
window.localStorage.removeItem(`craftercms.${user}.pathNavigatorTree.${siteIdentifier}.${id}`);
}
export function setStoredGlobalAppOpenSidebar(user, value) {
window.localStorage.setItem(`craftercms.${user}.globalAppOpenSidebar`, JSON.stringify(value));
}
export function getStoredGlobalAppOpenSidebar(user) {
return window.localStorage.getItem(`craftercms.${user}.globalAppOpenSidebar`);
}
export function createToolsPanelPage(title, widgets, target) {
return createWidgetDescriptor({
id: 'craftercms.components.ToolsPanelPage',
configuration: {
title,
target,
widgets
}
});
}
export function createWidgetDescriptor(widget) {
return Object.assign(Object.assign({}, widget), {
// When rendering widgets dynamically and changing pages on the tools panel, if there are duplicate react key
// props across pages, react may no swap the components correctly, incurring in unexpected behaviours.
// We need a unique key for each widget.
uiKey: uuid()
});
}
export function setStoredDashboardPreferences(value, user, siteIdentifier, dashletId) {
window.localStorage.setItem(`craftercms.dashboard.${dashletId}.${siteIdentifier}.${user}`, JSON.stringify(value));
}
export function getStoredDashboardPreferences(user, siteIdentifier, dashletId) {
return JSON.parse(window.localStorage.getItem(`craftercms.dashboard.${dashletId}.${siteIdentifier}.${user}`));
}
export function setStoredLegacyComponentPanel(value, user) {
window.localStorage.setItem(`craftercms.${user}.legacyComponentPanel`, JSON.stringify(value));
}
export function getStoredLegacyComponentPanel(user) {
return JSON.parse(window.localStorage.getItem(`craftercms.${user}.legacyComponentPanel`));
}
export function setStoredShowToolsPanel(siteIdentifier, user, value) {
window.localStorage.setItem(`craftercms.${user}.openToolsPanel.${siteIdentifier}`, JSON.stringify(value));
}
export function getStoredShowToolsPanel(siteIdentifier, user) {
return JSON.parse(window.localStorage.getItem(`craftercms.${user}.openToolsPanel.${siteIdentifier}`));
}
export function setStoredPreviewToolsPanelWidth(siteIdentifier, user, value) {
window.localStorage.setItem(`craftercms.${user}.previewToolsPanelWidth.${siteIdentifier}`, value.toString());
}
export function getStoredPreviewToolsPanelWidth(siteIdentifier, user) {
const value = window.localStorage.getItem(`craftercms.${user}.previewToolsPanelWidth.${siteIdentifier}`);
return value === null ? value : parseInt(value);
}
export function setStoredICEToolsPanelWidth(siteIdentifier, user, value) {
window.localStorage.setItem(`craftercms.${user}.iceToolsPanelWidth.${siteIdentifier}`, value.toString());
}
export function getStoredICEToolsPanelWidth(siteIdentifier, user) {
const value = window.localStorage.getItem(`craftercms.${user}.iceToolsPanelWidth.${siteIdentifier}`);
return value === null ? value : parseInt(value);
}
export function setStoredICEToolsPanelPage(siteIdentifier, user, value) {
window.localStorage.setItem(`craftercms.${user}.ICEToolsPanel.${siteIdentifier}`, JSON.stringify(value));
}
export function getStoredICEToolsPanelPage(siteIdentifier, user) {
return JSON.parse(window.localStorage.getItem(`craftercms.${user}.ICEToolsPanel.${siteIdentifier}`));
}
export function removeStoredICEToolsPanelPage(siteIdentifier, user) {
window.localStorage.removeItem(`craftercms.${user}.ICEToolsPanel.${siteIdentifier}`);
}
export function commonDialogProps(specificProps) {
return Object.assign({ open: false, isSubmitting: null, isMinimized: null, hasPendingChanges: null }, specificProps);
}
export function setStoredSaveButtonSubAction(user, id, value) {
window.localStorage.setItem(`craftercms.${user}.saveButtonSubAction.${id}`, value);
}
export function getStoredSaveButtonSubAction(user, id) {
return window.localStorage.getItem(`craftercms.${user}.saveButtonSubAction.${id}`);
}
export function removeStoredSaveButtonSubAction(user, id) {
window.localStorage.removeItem(`craftercms.${user}.saveButtonSubAction.${id}`);
}
export function setStoredPushBranch(siteId, username, branchName) {
localStorage.setItem(`craftercms.${username}.${siteId}.pushBranch`, branchName);
}
export function getStoredPushBranch(siteId, username) {
return localStorage.getItem(`craftercms.${username}.${siteId}.pushBranch`);
}
export function removeStoredPushBranch(siteId, username) {
localStorage.removeItem(`craftercms.${username}.${siteId}.pushBranch`);
}
export function setStoredPullBranch(siteId, username, branchName) {
localStorage.setItem(`craftercms.${username}.${siteId}.pullBranch`, branchName);
}
export function getStoredPullBranch(siteId, username) {
return localStorage.getItem(`craftercms.${username}.${siteId}.pullBranch`);
}
export function removeStoredPullBranch(siteId, username) {
localStorage.removeItem(`craftercms.${username}.${siteId}.pullBranch`);
}
export function setStoredPullMergeStrategy(siteId, username, mergeStrategy) {
localStorage.setItem(`craftercms.${username}.${siteId}.pullMergeStrategy`, mergeStrategy);
}
export function getStoredPullMergeStrategy(siteId, username) {
return localStorage.getItem(`craftercms.${username}.${siteId}.pullMergeStrategy`);
}
export function removeStoredPullMergeStrategy(siteId, username) {
localStorage.removeItem(`craftercms.${username}.${siteId}.pullMergeStrategy`);
}
export function setStoredPreviewBackgroundMode(username, mode) {
localStorage.setItem(`craftercms.${username}.previewDialog.backgroundMode`, JSON.stringify(mode));
}
export function getStoredPreviewBackgroundMode(username) {
return JSON.parse(localStorage.getItem(`craftercms.${username}.previewDialog.backgroundMode`));
}
export function setStoredBrowseDialogCompactMode(username, compact) {
localStorage.setItem(`craftercms.${username}.browseDialog.compactMode`, String(compact));
}
export function getStoredBrowseDialogCompactMode(username) {
var _a;
return (_a = JSON.parse(localStorage.getItem(`craftercms.${username}.browseDialog.compactMode`))) !== null &&
_a !== void 0
? _a
: false;
}
export function getOutdatedXBValidationDate(siteId, username) {
const dateString = localStorage.getItem(`craftermcs.${username}.${siteId}.outdatedXBValidationDate`);
return dateString ? new Date(dateString) : null;
}
export function setOutdatedXBValidationDate(siteId, username, date) {
const dateString = date.toDateString();
localStorage.setItem(`craftermcs.${username}.${siteId}.outdatedXBValidationDate`, dateString);
}