1
0
Fork 0
digital-art-composition-book/.obsidian/plugins/line-arrange/main.js
2024-09-14 11:25:13 -04:00

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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