Release 2.7.3
Publish Docker Image / build-and-push (./build/Dockerfile, git.lzstealth.com/lzstealth/pulse-signage-web, web) (push) Successful in 1m15s
Publish Docker Image / build-and-push (./build/Dockerfile.player, git.lzstealth.com/lzstealth/pulse-signage-player, player) (push) Successful in 32s
Publish Docker Image / build-and-push (./build/Dockerfile, git.lzstealth.com/lzstealth/pulse-signage-web, web) (push) Successful in 1m15s
Publish Docker Image / build-and-push (./build/Dockerfile.player, git.lzstealth.com/lzstealth/pulse-signage-player, player) (push) Successful in 32s
This commit is contained in:
@@ -8,6 +8,8 @@ export function createSlideFormEditorController(options) {
|
||||
var fontStylesheetHref = String(settings.fontStylesheetHref || '').trim();
|
||||
var defaultEditorFontFamily = 'Arial, Helvetica, sans-serif';
|
||||
var editorInstances = new Map();
|
||||
var editorHeights = new Map();
|
||||
var editorSizeControlsBound = false;
|
||||
var getRegionTypeModule = typeof settings.getRegionTypeModule === 'function' ? settings.getRegionTypeModule : function () {
|
||||
return null;
|
||||
};
|
||||
@@ -15,9 +17,13 @@ export function createSlideFormEditorController(options) {
|
||||
var imageUploadMaxBytes = Math.max(1, Number(settings.imageUploadMaxBytes || 2 * 1024 * 1024));
|
||||
var imageUploadLimitLabel = String(settings.imageUploadLimitLabel || '').trim() || Math.max(1, Math.round(imageUploadMaxBytes / (1024 * 1024))) + ' MB';
|
||||
var imageUploadContext = String(settings.imageUploadContext || 'wysiwyg').trim() || 'wysiwyg';
|
||||
var imageUploadAllowedExtensions = ['png', 'jpg', 'jpeg', 'gif', 'webp', 'bmp', 'avif', 'tif', 'tiff'];
|
||||
var imageUploadAllowedMimeTypes = ['image/png', 'image/jpeg', 'image/gif', 'image/webp', 'image/bmp', 'image/avif', 'image/tiff'];
|
||||
var imageUploadAllowedExtensions = ['png', 'jpg', 'jpeg', 'gif', 'webp', 'svg'];
|
||||
var imageUploadAllowedMimeTypes = ['image/png', 'image/jpeg', 'image/gif', 'image/webp', 'image/svg+xml'];
|
||||
var imageUploadFileTypes = imageUploadAllowedExtensions.join(',');
|
||||
var wysiwygEditorHeightStep = Math.max(1, Number(settings.wysiwygEditorHeightStep || 80));
|
||||
var wysiwygEditorHeightMin = Math.max(1, Number(settings.wysiwygEditorHeightMin || 240));
|
||||
var wysiwygEditorHeightMax = Math.max(wysiwygEditorHeightMin, Number(settings.wysiwygEditorHeightMax || 960));
|
||||
var wysiwygEditorHeightDefault = Math.max(wysiwygEditorHeightMin, Number(settings.wysiwygEditorHeightDefault || 360));
|
||||
var editorImageUploadPaths = new Set();
|
||||
var committedEditorImageUploadPaths = new Set();
|
||||
var pendingEditorImageUploadCleanupPaths = new Set();
|
||||
@@ -64,6 +70,99 @@ export function createSlideFormEditorController(options) {
|
||||
return '';
|
||||
}
|
||||
|
||||
function normalizeEditorHeightValue(value) {
|
||||
var numericValue = Number(value);
|
||||
if (!Number.isFinite(numericValue) || numericValue <= 0) {
|
||||
numericValue = wysiwygEditorHeightDefault;
|
||||
}
|
||||
|
||||
return Math.min(wysiwygEditorHeightMax, Math.max(wysiwygEditorHeightMin, Math.round(numericValue)));
|
||||
}
|
||||
|
||||
function getEditorHolder(regionId) {
|
||||
if (!templateFields) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return templateFields.querySelector('.editor-holder[data-region-id="' + regionId + '"]');
|
||||
}
|
||||
|
||||
function getEditorHeight(regionId) {
|
||||
var key = String(regionId || '');
|
||||
var storedHeight = editorHeights.get(key);
|
||||
if (storedHeight !== undefined && storedHeight !== null) {
|
||||
return normalizeEditorHeightValue(storedHeight);
|
||||
}
|
||||
|
||||
var holder = getEditorHolder(key);
|
||||
var holderHeight = holder && holder.dataset ? holder.dataset.editorHeight : '';
|
||||
var normalizedHeight = normalizeEditorHeightValue(holderHeight || wysiwygEditorHeightDefault);
|
||||
editorHeights.set(key, normalizedHeight);
|
||||
return normalizedHeight;
|
||||
}
|
||||
|
||||
function applyEditorHeight(regionId, height, options) {
|
||||
var key = String(regionId || '');
|
||||
var normalizedHeight = normalizeEditorHeightValue(height);
|
||||
var holder = getEditorHolder(key);
|
||||
var editor = editorInstances.get(key);
|
||||
var container = editor && typeof editor.getContainer === 'function' ? editor.getContainer() : null;
|
||||
var shouldRequestPreview = !(options && options.silent);
|
||||
|
||||
editorHeights.set(key, normalizedHeight);
|
||||
|
||||
if (holder) {
|
||||
holder.dataset.editorHeight = String(normalizedHeight);
|
||||
holder.style.height = normalizedHeight + 'px';
|
||||
holder.style.minHeight = normalizedHeight + 'px';
|
||||
}
|
||||
|
||||
if (container) {
|
||||
container.style.height = normalizedHeight + 'px';
|
||||
container.style.minHeight = normalizedHeight + 'px';
|
||||
}
|
||||
|
||||
if (editor && typeof editor.dispatch === 'function') {
|
||||
editor.dispatch('ResizeEditor');
|
||||
}
|
||||
|
||||
if (shouldRequestPreview) {
|
||||
requestPreviewRender();
|
||||
}
|
||||
}
|
||||
|
||||
function adjustEditorHeight(regionId, delta) {
|
||||
applyEditorHeight(regionId, getEditorHeight(regionId) + Number(delta || 0));
|
||||
}
|
||||
|
||||
function bindEditorSizeControls() {
|
||||
if (editorSizeControlsBound || !templateFields) {
|
||||
return;
|
||||
}
|
||||
|
||||
editorSizeControlsBound = true;
|
||||
templateFields.addEventListener('click', function (event) {
|
||||
var button = event.target && typeof event.target.closest === 'function' ? event.target.closest('[data-editor-size-action]') : null;
|
||||
if (!button) {
|
||||
return;
|
||||
}
|
||||
|
||||
var action = String(button.getAttribute('data-editor-size-action') || '').trim();
|
||||
if (action !== 'increase' && action !== 'decrease') {
|
||||
return;
|
||||
}
|
||||
|
||||
var card = typeof button.closest === 'function' ? button.closest('[data-region-id]') : null;
|
||||
var regionId = card ? card.getAttribute('data-region-id') : '';
|
||||
if (!regionId) {
|
||||
return;
|
||||
}
|
||||
|
||||
event.preventDefault();
|
||||
adjustEditorHeight(regionId, action === 'increase' ? wysiwygEditorHeightStep : -wysiwygEditorHeightStep);
|
||||
});
|
||||
}
|
||||
|
||||
function getEditorHiddenInput(regionId) {
|
||||
if (!templateFields) {
|
||||
return null;
|
||||
@@ -314,15 +413,15 @@ export function createSlideFormEditorController(options) {
|
||||
}
|
||||
|
||||
if (mimeType && imageUploadAllowedMimeTypes.indexOf(mimeType) === -1) {
|
||||
return 'This editor accepts PNG, JPG, GIF, WebP, BMP, AVIF, or TIFF images.';
|
||||
return 'This editor accepts PNG, JPG, GIF, WebP, or SVG images.';
|
||||
}
|
||||
|
||||
if (!mimeType && extension && imageUploadAllowedExtensions.indexOf(extension) === -1) {
|
||||
return 'This editor accepts PNG, JPG, GIF, WebP, BMP, AVIF, or TIFF images.';
|
||||
return 'This editor accepts PNG, JPG, GIF, WebP, or SVG images.';
|
||||
}
|
||||
|
||||
if (!mimeType && !extension) {
|
||||
return 'This editor accepts PNG, JPG, GIF, WebP, BMP, AVIF, or TIFF images.';
|
||||
return 'This editor accepts PNG, JPG, GIF, WebP, or SVG images.';
|
||||
}
|
||||
|
||||
return '';
|
||||
@@ -470,6 +569,8 @@ export function createSlideFormEditorController(options) {
|
||||
source.id = 'slide-editor-region-' + regionId;
|
||||
}
|
||||
|
||||
applyEditorHeight(regionId, getEditorHeight(regionId), { silent: true });
|
||||
|
||||
function registerInlineFormat(editor, formatName, styles) {
|
||||
editor.formatter.register(formatName, {
|
||||
inline: 'span',
|
||||
@@ -515,6 +616,8 @@ export function createSlideFormEditorController(options) {
|
||||
toolbar: 'undo redo | fontfamily fontsizeinput | forecolor backcolor bold italic underlineformats removeformat | align lineheight indent outdent bullist numlist table image chip | fullscreen',
|
||||
toolbar_mode: 'sliding',
|
||||
license_key: 'gpl',
|
||||
height: getEditorHeight(regionId),
|
||||
min_height: wysiwygEditorHeightMin,
|
||||
table_default_attributes: {
|
||||
border: '1',
|
||||
cellpadding: '0',
|
||||
@@ -601,6 +704,7 @@ export function createSlideFormEditorController(options) {
|
||||
}
|
||||
|
||||
editorInstances.set(regionId, editor);
|
||||
applyEditorHeight(regionId, getEditorHeight(regionId), { silent: true });
|
||||
if (editor.targetElm) {
|
||||
editor.targetElm.value = editor.getContent({ format: 'html' });
|
||||
}
|
||||
@@ -617,6 +721,7 @@ export function createSlideFormEditorController(options) {
|
||||
return Promise.resolve([]);
|
||||
}
|
||||
|
||||
bindEditorSizeControls();
|
||||
watchThemeChanges();
|
||||
|
||||
var holders = Array.prototype.slice.call(templateFields.querySelectorAll('.editor-holder'));
|
||||
|
||||
Reference in New Issue
Block a user