UNPKG

@craftercms/studio-ui

Version:

Services, components, models & utils to build CrafterCMS authoring extensions.

246 lines (244 loc) 11.9 kB
/* * 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); }