fix: table getting converted to raw html

This commit is contained in:
thecodrr
2021-12-29 14:33:29 +05:00
parent c2df49809c
commit 278d1681ca
6 changed files with 35 additions and 9 deletions

View File

@@ -119,12 +119,14 @@ describe.each([
).toBeTruthy(); ).toBeTruthy();
const tableContent = allContent.find((a) => a.data.includes("<table")); const tableContent = allContent.find((a) => a.data.includes("<table"));
if (tableContent) if (tableContent) {
console.log(tableContent.data);
expect( expect(
tableContent.data.includes( tableContent.data.startsWith(
`<div class="table-container" contenteditable="false">` `<div class="table-container" contenteditable="false">`
) )
); );
}
}); });
}); });

View File

@@ -53,7 +53,7 @@ export const EVENTS = {
vaultLocked: "vault:locked", vaultLocked: "vault:locked",
}; };
export const CURRENT_DATABASE_VERSION = 5.3; export const CURRENT_DATABASE_VERSION = 5.4;
export function setUserPersonalizationBytes(userSalt) { export function setUserPersonalizationBytes(userSalt) {
USER_PERSONALIZATION_HASH = new Uint8Array( USER_PERSONALIZATION_HASH = new Uint8Array(

View File

@@ -92,8 +92,9 @@ export default class Backup {
switch (version) { switch (version) {
case CURRENT_DATABASE_VERSION: case CURRENT_DATABASE_VERSION:
case 5.1: case 5.3:
case 5.2: case 5.2:
case 5.1:
case 5.0: { case 5.0: {
return backup; return backup;
} }

View File

@@ -1,4 +1,5 @@
import { parseHTML } from "./utils/html-parser"; import { parseHTML } from "./utils/html-parser";
import { decodeHTML5 } from "entities";
export const migrations = { export const migrations = {
5.0: {}, 5.0: {},
@@ -20,6 +21,13 @@ export const migrations = {
settings: replaceDateEditedWithDateModified(true), settings: replaceDateEditedWithDateModified(true),
}, },
5.3: { 5.3: {
tiny: (item) => {
if (!item.data || item.data.iv) return item;
item.data = decodeWrappedTableHtml(item.data);
return item;
},
},
5.4: {
note: false, note: false,
notebook: false, notebook: false,
tag: false, tag: false,
@@ -44,9 +52,11 @@ function wrapTablesWithDiv(html) {
const tables = document.getElementsByTagName("table"); const tables = document.getElementsByTagName("table");
for (let table of tables) { for (let table of tables) {
table.setAttribute("contenteditable", "true"); table.setAttribute("contenteditable", "true");
table.replaceWith( const div = document.createElement("div");
`<div class="table-container" contenteditable="false">${table.outerHTML}</div>` div.setAttribute("contenteditable", "false");
); div.innerHTML = table.outerHTML;
div.classList.add("table-container");
table.replaceWith(div);
} }
return document.outerHTML || document.body.innerHTML; return document.outerHTML || document.body.innerHTML;
} }
@@ -65,3 +75,14 @@ function removeToxClassFromChecklist(html) {
} }
return document.outerHTML || document.body.innerHTML; return document.outerHTML || document.body.innerHTML;
} }
const regex = /&lt;div class="table-container".*&lt;\/table&gt;&lt;\/div&gt;/gm;
function decodeWrappedTableHtml(html) {
return html.replaceAll(
/&lt;div class="table-container".*\/div&gt;$/gm,
(match) => {
const html = decodeHTML5(match);
return html;
}
);
}

View File

@@ -1,17 +1,18 @@
{ {
"name": "notes-core", "name": "notes-core",
"version": "6.16.0", "version": "6.16.2",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "notes-core", "name": "notes-core",
"version": "6.16.0", "version": "6.16.2",
"dependencies": { "dependencies": {
"@stablelib/blake2s": "^1.0.1", "@stablelib/blake2s": "^1.0.1",
"async-mutex": "^0.3.2", "async-mutex": "^0.3.2",
"base64-arraybuffer": "^1.0.1", "base64-arraybuffer": "^1.0.1",
"dayjs": "^1.10.6", "dayjs": "^1.10.6",
"entities": "^3.0.1",
"fast-sort": "^2.0.1", "fast-sort": "^2.0.1",
"fflate": "^0.7.1", "fflate": "^0.7.1",
"liqe": "^1.13.0", "liqe": "^1.13.0",

View File

@@ -28,6 +28,7 @@
"async-mutex": "^0.3.2", "async-mutex": "^0.3.2",
"base64-arraybuffer": "^1.0.1", "base64-arraybuffer": "^1.0.1",
"dayjs": "^1.10.6", "dayjs": "^1.10.6",
"entities": "^3.0.1",
"fast-sort": "^2.0.1", "fast-sort": "^2.0.1",
"fflate": "^0.7.1", "fflate": "^0.7.1",
"liqe": "^1.13.0", "liqe": "^1.13.0",