bug fixing

This commit is contained in:
maru21 2023-10-29 21:20:40 +01:00
parent 74469b9087
commit 8bfa4d4c3f
4 changed files with 246 additions and 219 deletions

View File

@ -419,6 +419,8 @@ function buildLongTextInput(source, textarea, label) {
"bold", "bold",
"italic", "italic",
"underline", "underline",
"strikethrough",
"paragraph",
"heading1", "heading1",
"heading2", "heading2",
{ {
@ -434,8 +436,6 @@ function buildLongTextInput(source, textarea, label) {
}, },
}); });
activeState.editor = editor;
let actionBar = editor.getElementsByClassName("pell-actionbar")[0]; let actionBar = editor.getElementsByClassName("pell-actionbar")[0];
let content = editor.getElementsByClassName("pell-content")[0]; let content = editor.getElementsByClassName("pell-content")[0];

View File

@ -59,13 +59,13 @@ function insertTextBlocks(t) {
if (element === null) { if (element === null) {
return; return;
} }
element.value += insert; element.value += " "+insert;
let tB = document.getElementById("navTb"); let tB = document.getElementById("navTb");
tB.className.replace(" w3-show", ""); tB.className.replace(" w3-show", "");
if (element.parentElement != undefined) { if (element.parentElement != undefined) {
if (element.parentElement.getElementsByClassName("pell-content")[0] != undefined) { if (element.parentElement.getElementsByClassName("pell-content")[0] != undefined) {
activeState.editor.content.innerHTML = element.value; element.parentElement.getElementsByClassName("pell-content")[0].innerHTML = element.value;
element = element.parentElement.getElementsByClassName("pell-content")[0]; element = element.parentElement.getElementsByClassName("pell-content")[0];
} }
} }

View File

@ -46,8 +46,7 @@ window.activeState = {
"markup", "markup",
], ],
markups: ["title", "link", "italic", "green_highlighted", "highlighted"], markups: ["title", "link", "italic", "green_highlighted", "highlighted"],
storage: [], storage: []
editor: null
}; };
function init() { function init() {

View File

@ -1,226 +1,254 @@
(function (global, factory) { (function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof exports === "object" && typeof module !== "undefined"
typeof define === 'function' && define.amd ? define(['exports'], factory) : ? factory(exports)
(factory((globalThis.pell = {}))); : typeof define === "function" && define.amd
}(this, (function (exports) { 'use strict'; ? define(["exports"], factory)
: factory((globalThis.pell = {}));
})(this, function (exports) {
"use strict";
var _extends = Object.assign || 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; }; var _extends =
Object.assign ||
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;
};
var defaultParagraphSeparatorString = 'defaultParagraphSeparator'; var defaultParagraphSeparatorString = "defaultParagraphSeparator";
var formatBlock = 'formatBlock'; var formatBlock = "formatBlock";
var addEventListener = function addEventListener(parent, type, listener) { var addEventListener = function addEventListener(parent, type, listener) {
return parent.addEventListener(type, listener); return parent.addEventListener(type, listener);
}; };
var appendChild = function appendChild(parent, child) { var appendChild = function appendChild(parent, child) {
return parent.appendChild(child); return parent.appendChild(child);
}; };
var createElement = function createElement(tag) { var createElement = function createElement(tag) {
return document.createElement(tag); return document.createElement(tag);
}; };
var queryCommandState = function queryCommandState(command) { var queryCommandState = function queryCommandState(command) {
return document.queryCommandState(command); return document.queryCommandState(command);
}; };
var queryCommandValue = function queryCommandValue(command) { var queryCommandValue = function queryCommandValue(command) {
return document.queryCommandValue(command); return document.queryCommandValue(command);
}; };
var exec = function exec(command) {
var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; var exec = function exec(command) {
var value =
arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
return document.execCommand(command, false, value); return document.execCommand(command, false, value);
}; };
var defaultActions = { var defaultActions = {
bold: { bold: {
icon: '<b>B</b>', icon: "<b>B</b>",
title: 'Bold', title: "Bold",
state: function state() { state: function state() {
return queryCommandState('bold'); return queryCommandState("bold");
}, },
result: function result() { result: function result() {
return exec('bold'); return exec("bold");
} },
}, },
italic: { italic: {
icon: '<i>I</i>', icon: "<i>I</i>",
title: 'Italic', title: "Italic",
state: function state() { state: function state() {
return queryCommandState('italic'); return queryCommandState("italic");
}, },
result: function result() { result: function result() {
return exec('italic'); return exec("italic");
} },
}, },
underline: { underline: {
icon: '<u>U</u>', icon: "<u>U</u>",
title: 'Underline', title: "Underline",
state: function state() { state: function state() {
return queryCommandState('underline'); return queryCommandState("underline");
}, },
result: function result() { result: function result() {
return exec('underline'); return exec("underline");
} },
}, },
strikethrough: { strikethrough: {
icon: '<strike>S</strike>', icon: "<strike>S</strike>",
title: 'Strike-through', title: "Strike-through",
state: function state() { state: function state() {
return queryCommandState('strikeThrough'); return queryCommandState("strikeThrough");
}, },
result: function result() { result: function result() {
return exec('strikeThrough'); return exec("strikeThrough");
} },
}, },
heading1: { heading1: {
icon: '<b>H<sub>1</sub></b>', icon: "<b>H<sub>1</sub></b>",
title: 'Heading 1', title: "Heading 1",
result: function result() { result: function result() {
return exec(formatBlock, '<h1>'); return exec(formatBlock, "<h1>");
} },
}, },
heading2: { heading2: {
icon: '<b>H<sub>2</sub></b>', icon: "<b>H<sub>2</sub></b>",
title: 'Heading 2', title: "Heading 2",
result: function result() { result: function result() {
return exec(formatBlock, '<h2>'); return exec(formatBlock, "<h2>");
} },
}, },
paragraph: { paragraph: {
icon: '&#182;', icon: "&#182;",
title: 'Paragraph', title: "Paragraph",
result: function result() { result: function result() {
return exec(formatBlock, '<p>'); return exec(formatBlock, "<p>");
} },
}, },
quote: { quote: {
icon: '&#8220; &#8221;', icon: "&#8220; &#8221;",
title: 'Quote', title: "Quote",
result: function result() { result: function result() {
return exec(formatBlock, '<blockquote>'); return exec(formatBlock, "<blockquote>");
} },
}, },
olist: { olist: {
icon: '&#35;', icon: "&#35;",
title: 'Ordered List', title: "Ordered List",
result: function result() { result: function result() {
return exec('insertOrderedList'); return exec("insertOrderedList");
} },
}, },
ulist: { ulist: {
icon: '&#8226;', icon: "&#8226;",
title: 'Unordered List', title: "Unordered List",
result: function result() { result: function result() {
return exec('insertUnorderedList'); return exec("insertUnorderedList");
} },
}, },
code: { code: {
icon: '&lt;/&gt;', icon: "&lt;/&gt;",
title: 'Code', title: "Code",
result: function result() { result: function result() {
return exec(formatBlock, '<pre>'); return exec(formatBlock, "<pre>");
} },
}, },
line: { line: {
icon: '&#8213;', icon: "&#8213;",
title: 'Horizontal Line', title: "Horizontal Line",
result: function result() { result: function result() {
return exec('insertHorizontalRule'); return exec("insertHorizontalRule");
} },
}, },
link: { link: {
icon: '&#128279;', icon: "&#128279;",
title: 'Link', title: "Link",
result: function result() { result: function result() {
var url = window.prompt('Enter the link URL'); var url = window.prompt("Enter the link URL");
if (url) exec('createLink', url); if (url) exec("createLink", url);
} },
}, },
image: { image: {
icon: '&#128247;', icon: "&#128247;",
title: 'Image', title: "Image",
result: function result() { result: function result() {
var url = window.prompt('Enter the image URL'); var url = window.prompt("Enter the image URL");
if (url) exec('insertImage', url); if (url) exec("insertImage", url);
} },
} },
}; };
var defaultClasses = { var defaultClasses = {
actionbar: 'pell-actionbar', actionbar: "pell-actionbar",
button: 'pell-button', button: "pell-button",
content: 'pell-content', content: "pell-content",
selected: 'pell-button-selected' selected: "pell-button-selected",
}; };
var init = function init(settings) { var init = function init(settings) {
var actions = settings.actions ? settings.actions.map(function (action) { var actions = settings.actions
if (typeof action === 'string') return defaultActions[action];else if (defaultActions[action.name]) return _extends({}, defaultActions[action.name], action); ? settings.actions.map(function (action) {
if (typeof action === "string") return defaultActions[action];
else if (defaultActions[action.name])
return _extends({}, defaultActions[action.name], action);
return action; return action;
}) : Object.keys(defaultActions).map(function (action) { })
: Object.keys(defaultActions).map(function (action) {
return defaultActions[action]; return defaultActions[action];
}); });
var classes = _extends({}, defaultClasses, settings.classes); var classes = _extends({}, defaultClasses, settings.classes);
var defaultParagraphSeparator = settings[defaultParagraphSeparatorString] || 'div'; var defaultParagraphSeparator =
settings[defaultParagraphSeparatorString] || "div";
var actionbar = createElement('div'); var actionbar = createElement("div");
actionbar.className = classes.actionbar; actionbar.className = classes.actionbar;
appendChild(settings.element, actionbar); appendChild(settings.element, actionbar);
var content = settings.element.content = createElement('div'); var content = (settings.element.content = createElement("div"));
content.contentEditable = true; content.contentEditable = true;
content.className = classes.content; content.className = classes.content;
content.oninput = function (_ref) { content.oninput = function (_ref) {
var firstChild = _ref.target.firstChild; var firstChild = _ref.target.firstChild;
if (firstChild && firstChild.nodeType === 3) exec(formatBlock, '<' + defaultParagraphSeparator + '>');else if (content.innerHTML === '<br>') content.innerHTML = ''; if (firstChild && firstChild.nodeType === 3)
exec(formatBlock, "<" + defaultParagraphSeparator + ">");
else if (content.innerHTML === "<br>") content.innerHTML = "";
settings.onChange(content.innerHTML); settings.onChange(content.innerHTML);
}; };
content.onkeydown = function (event) { content.onkeydown = function (event) {
if (event.key === 'Enter' && queryCommandValue(formatBlock) === 'blockquote') { if (
event.key === "Enter" &&
queryCommandValue(formatBlock) === "blockquote"
) {
setTimeout(function () { setTimeout(function () {
return exec(formatBlock, '<' + defaultParagraphSeparator + '>'); return exec(formatBlock, "<" + defaultParagraphSeparator + ">");
}, 0); }, 0);
} }
}; };
appendChild(settings.element, content); appendChild(settings.element, content);
actions.forEach(function (action) { actions.forEach(function (action) {
var button = createElement('button'); var button = createElement("button");
button.className = classes.button; button.className = classes.button;
button.innerHTML = action.icon; button.innerHTML = action.icon;
button.title = action.title; button.title = action.title;
button.setAttribute('type', 'button'); button.setAttribute("type", "button");
button.onclick = function () { button.onclick = function () {
return action.result() && content.focus(); return action.result() && content.focus();
}; };
if (action.state) { if (action.state) {
var handler = function handler() { var handler = function handler() {
return button.classList[action.state() ? 'add' : 'remove'](classes.selected); return button.classList[action.state() ? "add" : "remove"](
classes.selected
);
}; };
addEventListener(content, 'keyup', handler); addEventListener(content, "keyup", handler);
addEventListener(content, 'mouseup', handler); addEventListener(content, "mouseup", handler);
addEventListener(button, 'click', handler); addEventListener(button, "click", handler);
} }
appendChild(actionbar, button); appendChild(actionbar, button);
}); });
if (settings.styleWithCSS) exec('styleWithCSS'); if (settings.styleWithCSS) exec("styleWithCSS");
exec(defaultParagraphSeparatorString, defaultParagraphSeparator); exec(defaultParagraphSeparatorString, defaultParagraphSeparator);
return settings.element; return settings.element;
}; };
var pell = { exec: exec, init: init }; var pell = { exec: exec, init: init };
exports.exec = exec; exports.exec = exec;
exports.init = init; exports.init = init;
exports['default'] = pell; exports["default"] = pell;
Object.defineProperty(exports, '__esModule', { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
});
})));
export default pell; export default pell;