142 lines
15 KiB
JavaScript
142 lines
15 KiB
JavaScript
/*
|
|
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
if you want to view the source, please visit the github repository of this plugin
|
|
*/
|
|
|
|
var __defProp = Object.defineProperty;
|
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
var __export = (target, all) => {
|
|
for (var name in all)
|
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
};
|
|
var __copyProps = (to, from, except, desc) => {
|
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
for (let key of __getOwnPropNames(from))
|
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
}
|
|
return to;
|
|
};
|
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
|
|
// main.ts
|
|
var main_exports = {};
|
|
__export(main_exports, {
|
|
default: () => lineArrange
|
|
});
|
|
module.exports = __toCommonJS(main_exports);
|
|
var import_obsidian = require("obsidian");
|
|
var lineArrange = class extends import_obsidian.Plugin {
|
|
// Method called when the plugin is loaded
|
|
async onload() {
|
|
this.addCommand({
|
|
id: "lexisort-lines",
|
|
name: "Lexisort lines",
|
|
editorCallback: (editor) => {
|
|
const selection = editor.getSelection();
|
|
editor.replaceSelection(lexiSortLines(selection));
|
|
}
|
|
});
|
|
this.addCommand({
|
|
id: "reverse-lines",
|
|
name: "Reverse lines",
|
|
editorCallback: (editor) => {
|
|
const selection = editor.getSelection();
|
|
editor.replaceSelection(reverseLines(selection));
|
|
}
|
|
});
|
|
this.addCommand({
|
|
id: "sort-lines",
|
|
name: "Sort lines",
|
|
editorCallback: (editor) => {
|
|
const selection = editor.getSelection();
|
|
editor.replaceSelection(sortLines(selection));
|
|
}
|
|
});
|
|
this.addCommand({
|
|
id: "shuffle-lines",
|
|
name: "Shuffle lines",
|
|
editorCallback: (editor) => {
|
|
const selection = editor.getSelection();
|
|
editor.replaceSelection(shuffleLines(selection));
|
|
}
|
|
});
|
|
}
|
|
};
|
|
var textSize = getComputedStyle(document.body).getPropertyValue("--font-text-size");
|
|
var textFont = getComputedStyle(document.body).getPropertyValue("--font-text");
|
|
function lexiSortLines(orgText) {
|
|
const lines = orgText.split("\n");
|
|
lines.sort();
|
|
let srtLines = "";
|
|
lines.forEach((line) => {
|
|
if (line.length > 0) {
|
|
srtLines += line + "\n";
|
|
} else {
|
|
srtLines = "\n" + srtLines;
|
|
}
|
|
});
|
|
return srtLines.trimEnd();
|
|
}
|
|
function reverseLines(orgText) {
|
|
const lines = orgText.split("\n");
|
|
lines.reverse();
|
|
let revLines = "";
|
|
lines.forEach((line) => {
|
|
if (line.length > 0) {
|
|
revLines += line + "\n";
|
|
} else {
|
|
revLines = "\n" + revLines;
|
|
}
|
|
});
|
|
return revLines.trimEnd();
|
|
}
|
|
function sortLines(orgText) {
|
|
const lines = orgText.split("\n");
|
|
const arr1 = new Arrangement(lines, realLineWidth);
|
|
return orderedText(arr1);
|
|
}
|
|
function realLineWidth(line) {
|
|
const canvas = document.createElement("canvas");
|
|
const context = canvas.getContext("2d");
|
|
if (!context) {
|
|
throw new Error("Failed to get 2D context");
|
|
}
|
|
context.font = textSize + " " + textFont;
|
|
return Math.round(1e4 * context.measureText(line).width);
|
|
}
|
|
function shuffleLines(orgText) {
|
|
const lines = orgText.split("\n");
|
|
const arr2 = new Arrangement(lines, randomLineWidth);
|
|
return orderedText(arr2);
|
|
}
|
|
function randomLineWidth(line) {
|
|
if (line.length > 0)
|
|
return Math.round(1e4 * (Math.random() + 1));
|
|
else
|
|
return 0;
|
|
}
|
|
var Arrangement = class {
|
|
// Creates a key for each unique line-width and associates line to respective slot
|
|
constructor(linesList, lineFunction) {
|
|
linesList.forEach((line) => {
|
|
const width = lineFunction(line);
|
|
if (!(width in this)) {
|
|
this[width] = line;
|
|
} else {
|
|
this[width] = this[width].concat("\n" + line);
|
|
}
|
|
});
|
|
}
|
|
};
|
|
function orderedText(orderedLines) {
|
|
let finalText = "";
|
|
for (const lineKey in orderedLines) {
|
|
finalText += orderedLines[lineKey] + "\n";
|
|
}
|
|
return finalText.trimEnd();
|
|
}
|
|
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibWFpbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgRWRpdG9yLCBQbHVnaW4gfSBmcm9tICdvYnNpZGlhbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGxpbmVBcnJhbmdlIGV4dGVuZHMgUGx1Z2luIHtcbiAgICAvLyBNZXRob2QgY2FsbGVkIHdoZW4gdGhlIHBsdWdpbiBpcyBsb2FkZWRcbiAgICBhc3luYyBvbmxvYWQoKSB7XG5cbiAgICAgICAgLy8gQWRkIGEgY29tbWFuZCB0byBsZXhpY2FsbHkgc29ydCBsaW5lcyBpbiB0aGUgZWRpdG9yXG4gICAgICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICAgICAgICBpZDogJ2xleGlzb3J0LWxpbmVzJyxcbiAgICAgICAgICAgIG5hbWU6ICdMZXhpc29ydCBsaW5lcycsXG4gICAgICAgICAgICBlZGl0b3JDYWxsYmFjazogKGVkaXRvcjogRWRpdG9yKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gZWRpdG9yLmdldFNlbGVjdGlvbigpOyAvLyBHZXQgdGhlIHNlbGVjdGVkIHRleHRcbiAgICAgICAgICAgICAgICBlZGl0b3IucmVwbGFjZVNlbGVjdGlvbihsZXhpU29ydExpbmVzKHNlbGVjdGlvbikpOyAvLyBSZXBsYWNlIHNlbGVjdGlvbiB3aXRoIGxleGljYWxseSBzb3J0ZWQgbGluZXNcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEFkZCBhIGNvbW1hbmQgdG8gcmV2ZXJzZSBsaW5lcyBpbiB0aGUgZWRpdG9yXG4gICAgICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICAgICAgICBpZDogJ3JldmVyc2UtbGluZXMnLFxuICAgICAgICAgICAgbmFtZTogJ1JldmVyc2UgbGluZXMnLFxuICAgICAgICAgICAgZWRpdG9yQ2FsbGJhY2s6IChlZGl0b3I6IEVkaXRvcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IGVkaXRvci5nZXRTZWxlY3Rpb24oKTsgLy8gR2V0IHRoZSBzZWxlY3RlZCB0ZXh0XG4gICAgICAgICAgICAgICAgZWRpdG9yLnJlcGxhY2VTZWxlY3Rpb24ocmV2ZXJzZUxpbmVzKHNlbGVjdGlvbikpOyAvLyBSZXBsYWNlIHNlbGVjdGlvbiB3aXRoIHJldmVyc2VkIGxpbmVzXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBBZGQgYSBjb21tYW5kIHRvIHNvcnQgbGluZXMgaW4gdGhlIGVkaXRvclxuICAgICAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgICAgICAgaWQ6ICdzb3J0LWxpbmVzJyxcbiAgICAgICAgICAgIG5hbWU6ICdTb3J0IGxpbmVzJyxcbiAgICAgICAgICAgIGVkaXRvckNhbGxiYWNrOiAoZWRpdG9yOiBFZGl0b3IpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSBlZGl0b3IuZ2V0U2VsZWN0aW9uKCk7IC8vIEdldCB0aGUgc2VsZWN0ZWQgdGV4dFxuICAgICAgICAgICAgICAgIGVkaXRvci5yZXBsYWNlU2VsZWN0aW9uKHNvcnRMaW5lcyhzZWxlY3Rpb24pKTsgLy8gUmVwbGFjZSBzZWxlY3Rpb24gd2l0aCBzb3J0ZWQgbGluZXNcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEFkZCBhIGNvbW1hbmQgdG8gc2h1ZmZsZSBsaW5lcyBpbiB0aGUgZWRpdG9yXG4gICAgICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICAgICAgICBpZDogJ3NodWZmbGUtbGluZXMnLFxuICAgICAgICAgICAgbmFtZTogJ1NodWZmbGUgbGluZXMnLFxuICAgICAgICAgICAgZWRpdG9yQ2FsbGJhY2s6IChlZGl0b3I6IEVkaXRvcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IGVkaXRvci5nZXRTZWxlY3Rpb24oKTsgLy8gR2V0IHRoZSBzZWxlY3RlZCB0ZXh0XG4gICAgICAgICAgICAgICAgZWRpdG9yLnJlcGxhY2VTZWxlY3Rpb24oc2h1ZmZsZUxpbmVzKHNlbGVjdGlvbikpOyAvLyBSZXBsYWNlIHNlbGVjdGlvbiB3aXRoIHNodWZmbGVkIGxpbmVzXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmNvbnN0IHRleHRTaXplID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1mb250LXRleHQtc2l6ZVwiKTtcbmNvbnN0IHRleHRGb250ID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1mb250LXRleHRcIik7XG5cbi8vIEZ1bmN0aW9uIHRvIGxleGljYWxseSBzb3J0IHRoZSBzZWxlY3RlZCBsaW5lcyBvZiB0ZXh0XG5mdW5jdGlvbiBsZXhpU29ydExpbmVzKG9yZ1RleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbGluZXMgPSBvcmdUZXh0LnNwbGl0KFwiXFxuXCIpOyAvLyBTcGxpdCB0aGUgb3JpZ2luYWwgdGV4dCBpbnRvIGxpbmVzXG4gICAgbGluZXMuc29ydCgpOyAvLyBTb3J0IHRoZSBhcnJheSBvZiBsaW5lc1xuICAgIGxldCBzcnRMaW5lcyA9IFwiXCI7XG4gICAgbGluZXMuZm9yRWFjaChsaW5lID0+IHtcbiAgICAgICAgaWYgKGxpbmUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgc3J0TGluZXMgKz0gKGxpbmUgKyAnXFxuJyk7IC8vIEFkZCBlYWNoIGxpbmUgdG8gdGhlIHJldHVybmluZyB0ZXh0IHN0cmluZ1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc3J0TGluZXMgPSAoJ1xcbicgKyBzcnRMaW5lcyk7IFxuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHNydExpbmVzLnRyaW1FbmQoKTsgLy8gUmV0dXJuIHRoZSBsZXhpY2FsbHkgc29ydGVkIGxpbmVzXG59XG5cbi8vIEZ1bmN0aW9uIHRvIHJldmVyc2UgdGhlIHNlbGVjdGVkIGxpbmVzIG9mIHRleHRcbmZ1bmN0aW9uIHJldmVyc2VMaW5lcyhvcmdUZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxpbmVzID0gb3JnVGV4dC5zcGxpdChcIlxcblwiKTsgLy8gU3BsaXQgdGhlIG9yaWdpbmFsIHRleHQgaW50byBsaW5lc1xuICAgIGxpbmVzLnJldmVyc2UoKTsgLy8gUmV2ZXJzZSB0aGUgYXJyYXkgb2YgbGluZXNcbiAgICBsZXQgcmV2TGluZXMgPSBcIlwiO1xuICAgIGxpbmVzLmZvckVhY2gobGluZSA9PiB7XG4gICAgICAgIGlmIChsaW5lLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldkxpbmVzICs9IChsaW5lICsgJ1xcbicpOyAvLyBBZGQgZWFjaCBsaW5lIHRvIHRoZSByZXR1cm5pbmcgdGV4dCBzdHJpbmdcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldkxpbmVzID0gKCdcXG4nICsgcmV2TGluZXMpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJldkxpbmVzLnRyaW1FbmQoKTsgLy8gUmV0dXJuIHRoZSByZXZlcnNlZCBsaW5lc1xufVxuXG4vLyBGdW5jdGlvbiB0byBzb3J0IGxpbmVzIGJhc2VkIG9uIHRoZWlyIHZpc3VhbCB3aWR0aFxuZnVuY3Rpb24gc29ydExpbmVzKG9yZ1RleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbGluZXMgPSBvcmdUZXh0LnNwbGl0KFwiXFxuXCIpOyAvLyBTcGxpdCB0aGUgb3JpZ2luYWwgdGV4dCBpbnRvIGxpbmVzXG4gICAgY29uc3QgYXJyMSA9IG5ldyBBcnJhbmdlbWVudChsaW5lcywgcmVhbExpbmVXaWR0aCk7IC8vIENyZWF0ZSBhbiBhcnJhbmdlbWVudCBiYXNlZCBvbiByZWFsIGxpbmUgd2lkdGhcbiAgICByZXR1cm4gb3JkZXJlZFRleHQoYXJyMSk7IC8vIFJldHVybiB0aGUgb3JkZXJlZCB0ZXh0IGZyb20gdGhlIGFycmFuZ2VtZW50XG59XG5cbi8vIEZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSB0aGUgdmlzdWFsIHdpZHRoIG9mIGEgbGluZVxuZnVuY3Rpb24gcmVhbExpbmVXaWR0aChsaW5lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICBpZiAoIWNvbnRleHQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZ2V0IDJEIGNvbnRleHQnKTtcbiAgICB9XG4gICAgY29udGV4dC5mb250ID0gdGV4dFNpemUgKyBcIiBcIiArIHRleHRGb250O1xuICAgIHJldHVybiBNYXRoLnJvdW5kKDEwMDAwICogKGNvbnRleHQubWVhc3VyZVRleHQobGluZSkud2lkdGgpKTsgLy8gUmV0dXJuIHRoZSB3aWR0aCBhcyBhIG5vcm1hbGlzZWQgaW50ZWdlclxufVxuXG4vLyBGdW5jdGlvbiB0byBzaHVmZmxlIGxpbmVzIHJhbmRvbWx5XG5mdW5jdGlvbiBzaHVmZmxlTGluZXMob3JnVGV4dDogc3RyaW5nKSB7XG4gICAgY29uc3QgbGluZXMgPSBvcmdUZXh0LnNwbGl0KFwiXFxuXCIpOyAvLyBTcGxpdCB0aGUgb3JpZ2luYWwgdGV4dCBpbnRvIGxpbmVzXG4gICAgY29uc3QgYXJyMiA9IG5ldyBBcnJhbmdlbWVudChsaW5lcywgcmFuZG9tTGluZVdpZHRoKTsgLy8gQ3JlYXRlIGFuIGFycmFuZ2VtZW50IGJhc2VkIG9uIHJhbmRvbSBsaW5lIHdpZHRoXG4gICAgcmV0dXJuIG9yZGVyZWRUZXh0KGFycjIpOyAvLyBSZXR1cm4gdGhlIG9yZGVyZWQgdGV4dCBmcm9tIHRoZSBhcnJhbmdlbWVudFxufVxuXG4vLyBGdW5jdGlvbiB0byBnZW5lcmF0ZSBhIHJhbmRvbSB3aWR0aCBmb3IgYSBsaW5lXG5mdW5jdGlvbiByYW5kb21MaW5lV2lkdGgobGluZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBpZiAobGluZS5sZW5ndGggPiAwKVxuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCgxMDAwMCAqIChNYXRoLnJhbmRvbSgpICsgMSkpOyAvLyBSZXR1cm4gYSByYW5kb20gbnVtYmVyIGFzIGEgbm9ybWFsaXNlZCBpbnRlZ2VyXG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gMDsgLy8gUmV0dXJuIDAgZm9yIGVtcHR5IGxpbmVzXG59XG5cbi8vIENsYXNzIHRvIGFycmFuZ2UgbGluZXMgYmFzZWQgb24gdGhlaXIgY2FsY3VsYXRlZCB3aWR0aHNcbmNsYXNzIEFycmFuZ2VtZW50IHtcbiAgICBbd2lkdGg6IG51bWJlcl06IHN0cmluZztcblxuICAgIC8vIENyZWF0ZXMgYSBrZXkgZm9yIGVhY2ggdW5pcXVlIGxpbmUtd2lkdGggYW5kIGFzc29jaWF0ZXMgbGluZSB0byByZXNwZWN0aXZlIHNsb3RcbiAgICBjb25zdHJ1Y3RvcihsaW5lc0xpc3Q6IHN0cmluZ1tdLCBsaW5lRnVuY3Rpb246IChsaW5lOiBzdHJpbmcpID0+IG51bWJlcikge1xuICAgICAgICBsaW5lc0xpc3QuZm9yRWFjaChsaW5lID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gbGluZUZ1bmN0aW9uKGxpbmUpO1xuICAgICAgICAgICAgaWYgKCEod2lkdGggaW4gdGhpcykpIHtcbiAgICAgICAgICAgICAgICB0aGlzW3dpZHRoXSA9IGxpbmU7IC8vIFN0b3JlIHRoZSBsaW5lIGlmIHRoZSB3aWR0aCBrZXkgZG9lc24ndCBleGlzdFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzW3dpZHRoXSA9IHRoaXNbd2lkdGhdLmNvbmNhdChcIlxcblwiICsgbGluZSk7IC8vIENvbmNhdGVuYXRlIGxpbmVzIHdpdGggdGhlIHNhbWUgd2lkdGggc2xvdFxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbi8vIEZ1bmN0aW9uIHRvIGdlbmVyYXRlIHRoZSBmaW5hbCBvcmRlcmVkIHRleHQgZnJvbSB0aGUgYXJyYW5nZW1lbnRcbmZ1bmN0aW9uIG9yZGVyZWRUZXh0KG9yZGVyZWRMaW5lczogQXJyYW5nZW1lbnQpOiBzdHJpbmcge1xuICAgIGxldCBmaW5hbFRleHQgPSBcIlwiO1xuICAgIGZvciAoY29uc3QgbGluZUtleSBpbiBvcmRlcmVkTGluZXMpIHtcbiAgICAgICAgZmluYWxUZXh0ICs9IChvcmRlcmVkTGluZXNbbGluZUtleV0gKyAnXFxuJyk7IC8vIEFwcGVuZCBlYWNoIGxpbmUgZm9sbG93ZWQgYnkgYSBuZXdsaW5lIGNoYXJhY3RlclxuICAgIH1cbiAgICByZXR1cm4gZmluYWxUZXh0LnRyaW1FbmQoKTsgLy8gVHJpbSB0aGUgZmluYWwgdGV4dCB0byByZW1vdmUgdHJhaWxpbmcgbmV3bGluZXNcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxzQkFBK0I7QUFFL0IsSUFBcUIsY0FBckIsY0FBeUMsdUJBQU87QUFBQTtBQUFBLEVBRTVDLE1BQU0sU0FBUztBQUdYLFNBQUssV0FBVztBQUFBLE1BQ1osSUFBSTtBQUFBLE1BQ0osTUFBTTtBQUFBLE1BQ04sZ0JBQWdCLENBQUMsV0FBbUI7QUFDaEMsY0FBTSxZQUFZLE9BQU8sYUFBYTtBQUN0QyxlQUFPLGlCQUFpQixjQUFjLFNBQVMsQ0FBQztBQUFBLE1BQ3BEO0FBQUEsSUFDSixDQUFDO0FBR0QsU0FBSyxXQUFXO0FBQUEsTUFDWixJQUFJO0FBQUEsTUFDSixNQUFNO0FBQUEsTUFDTixnQkFBZ0IsQ0FBQyxXQUFtQjtBQUNoQyxjQUFNLFlBQVksT0FBTyxhQUFhO0FBQ3RDLGVBQU8saUJBQWlCLGFBQWEsU0FBUyxDQUFDO0FBQUEsTUFDbkQ7QUFBQSxJQUNKLENBQUM7QUFHRCxTQUFLLFdBQVc7QUFBQSxNQUNaLElBQUk7QUFBQSxN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
|