3027 lines
78 KiB
JavaScript
3027 lines
78 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 __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
||
|
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);
|
||
|
var __publicField = (obj, key, value) => {
|
||
|
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
||
|
return value;
|
||
|
};
|
||
|
|
||
|
// src/main.ts
|
||
|
var main_exports = {};
|
||
|
__export(main_exports, {
|
||
|
default: () => MultiPropPlugin
|
||
|
});
|
||
|
module.exports = __toCommonJS(main_exports);
|
||
|
var import_obsidian6 = require("obsidian");
|
||
|
|
||
|
// src/AddPropModal.ts
|
||
|
var import_obsidian2 = require("obsidian");
|
||
|
|
||
|
// node_modules/svelte/src/runtime/internal/utils.js
|
||
|
function noop() {
|
||
|
}
|
||
|
function run(fn) {
|
||
|
return fn();
|
||
|
}
|
||
|
function blank_object() {
|
||
|
return /* @__PURE__ */ Object.create(null);
|
||
|
}
|
||
|
function run_all(fns) {
|
||
|
fns.forEach(run);
|
||
|
}
|
||
|
function is_function(thing) {
|
||
|
return typeof thing === "function";
|
||
|
}
|
||
|
function safe_not_equal(a, b) {
|
||
|
return a != a ? b == b : a !== b || a && typeof a === "object" || typeof a === "function";
|
||
|
}
|
||
|
function is_empty(obj) {
|
||
|
return Object.keys(obj).length === 0;
|
||
|
}
|
||
|
|
||
|
// node_modules/svelte/src/runtime/internal/globals.js
|
||
|
var globals = typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : (
|
||
|
// @ts-ignore Node typings have this
|
||
|
global
|
||
|
);
|
||
|
|
||
|
// node_modules/svelte/src/runtime/internal/ResizeObserverSingleton.js
|
||
|
var ResizeObserverSingleton = class {
|
||
|
/** @param {ResizeObserverOptions} options */
|
||
|
constructor(options) {
|
||
|
/**
|
||
|
* @private
|
||
|
* @readonly
|
||
|
* @type {WeakMap<Element, import('./private.js').Listener>}
|
||
|
*/
|
||
|
__publicField(this, "_listeners", "WeakMap" in globals ? /* @__PURE__ */ new WeakMap() : void 0);
|
||
|
/**
|
||
|
* @private
|
||
|
* @type {ResizeObserver}
|
||
|
*/
|
||
|
__publicField(this, "_observer");
|
||
|
/** @type {ResizeObserverOptions} */
|
||
|
__publicField(this, "options");
|
||
|
this.options = options;
|
||
|
}
|
||
|
/**
|
||
|
* @param {Element} element
|
||
|
* @param {import('./private.js').Listener} listener
|
||
|
* @returns {() => void}
|
||
|
*/
|
||
|
observe(element2, listener) {
|
||
|
this._listeners.set(element2, listener);
|
||
|
this._getObserver().observe(element2, this.options);
|
||
|
return () => {
|
||
|
this._listeners.delete(element2);
|
||
|
this._observer.unobserve(element2);
|
||
|
};
|
||
|
}
|
||
|
/**
|
||
|
* @private
|
||
|
*/
|
||
|
_getObserver() {
|
||
|
var _a;
|
||
|
return (_a = this._observer) != null ? _a : this._observer = new ResizeObserver((entries) => {
|
||
|
var _a2;
|
||
|
for (const entry of entries) {
|
||
|
ResizeObserverSingleton.entries.set(entry.target, entry);
|
||
|
(_a2 = this._listeners.get(entry.target)) == null ? void 0 : _a2(entry);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
};
|
||
|
ResizeObserverSingleton.entries = "WeakMap" in globals ? /* @__PURE__ */ new WeakMap() : void 0;
|
||
|
|
||
|
// node_modules/svelte/src/runtime/internal/dom.js
|
||
|
var is_hydrating = false;
|
||
|
function start_hydrating() {
|
||
|
is_hydrating = true;
|
||
|
}
|
||
|
function end_hydrating() {
|
||
|
is_hydrating = false;
|
||
|
}
|
||
|
function append(target, node) {
|
||
|
target.appendChild(node);
|
||
|
}
|
||
|
function append_styles(target, style_sheet_id, styles) {
|
||
|
const append_styles_to = get_root_for_style(target);
|
||
|
if (!append_styles_to.getElementById(style_sheet_id)) {
|
||
|
const style = element("style");
|
||
|
style.id = style_sheet_id;
|
||
|
style.textContent = styles;
|
||
|
append_stylesheet(append_styles_to, style);
|
||
|
}
|
||
|
}
|
||
|
function get_root_for_style(node) {
|
||
|
if (!node)
|
||
|
return document;
|
||
|
const root = node.getRootNode ? node.getRootNode() : node.ownerDocument;
|
||
|
if (root && /** @type {ShadowRoot} */
|
||
|
root.host) {
|
||
|
return (
|
||
|
/** @type {ShadowRoot} */
|
||
|
root
|
||
|
);
|
||
|
}
|
||
|
return node.ownerDocument;
|
||
|
}
|
||
|
function append_stylesheet(node, style) {
|
||
|
append(
|
||
|
/** @type {Document} */
|
||
|
node.head || node,
|
||
|
style
|
||
|
);
|
||
|
return style.sheet;
|
||
|
}
|
||
|
function insert(target, node, anchor) {
|
||
|
target.insertBefore(node, anchor || null);
|
||
|
}
|
||
|
function detach(node) {
|
||
|
if (node.parentNode) {
|
||
|
node.parentNode.removeChild(node);
|
||
|
}
|
||
|
}
|
||
|
function destroy_each(iterations, detaching) {
|
||
|
for (let i = 0; i < iterations.length; i += 1) {
|
||
|
if (iterations[i])
|
||
|
iterations[i].d(detaching);
|
||
|
}
|
||
|
}
|
||
|
function element(name) {
|
||
|
return document.createElement(name);
|
||
|
}
|
||
|
function text(data) {
|
||
|
return document.createTextNode(data);
|
||
|
}
|
||
|
function space() {
|
||
|
return text(" ");
|
||
|
}
|
||
|
function empty() {
|
||
|
return text("");
|
||
|
}
|
||
|
function listen(node, event, handler, options) {
|
||
|
node.addEventListener(event, handler, options);
|
||
|
return () => node.removeEventListener(event, handler, options);
|
||
|
}
|
||
|
function prevent_default(fn) {
|
||
|
return function(event) {
|
||
|
event.preventDefault();
|
||
|
return fn.call(this, event);
|
||
|
};
|
||
|
}
|
||
|
function attr(node, attribute, value) {
|
||
|
if (value == null)
|
||
|
node.removeAttribute(attribute);
|
||
|
else if (node.getAttribute(attribute) !== value)
|
||
|
node.setAttribute(attribute, value);
|
||
|
}
|
||
|
function children(element2) {
|
||
|
return Array.from(element2.childNodes);
|
||
|
}
|
||
|
function set_data(text2, data) {
|
||
|
data = "" + data;
|
||
|
if (text2.data === data)
|
||
|
return;
|
||
|
text2.data = /** @type {string} */
|
||
|
data;
|
||
|
}
|
||
|
function set_input_value(input, value) {
|
||
|
input.value = value == null ? "" : value;
|
||
|
}
|
||
|
function select_option(select, value, mounting) {
|
||
|
for (let i = 0; i < select.options.length; i += 1) {
|
||
|
const option = select.options[i];
|
||
|
if (option.__value === value) {
|
||
|
option.selected = true;
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
if (!mounting || value !== void 0) {
|
||
|
select.selectedIndex = -1;
|
||
|
}
|
||
|
}
|
||
|
function select_value(select) {
|
||
|
const selected_option = select.querySelector(":checked");
|
||
|
return selected_option && selected_option.__value;
|
||
|
}
|
||
|
function get_custom_elements_slots(element2) {
|
||
|
const result = {};
|
||
|
element2.childNodes.forEach(
|
||
|
/** @param {Element} node */
|
||
|
(node) => {
|
||
|
result[node.slot || "default"] = true;
|
||
|
}
|
||
|
);
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
// node_modules/svelte/src/runtime/internal/lifecycle.js
|
||
|
var current_component;
|
||
|
function set_current_component(component) {
|
||
|
current_component = component;
|
||
|
}
|
||
|
function get_current_component() {
|
||
|
if (!current_component)
|
||
|
throw new Error("Function called outside component initialization");
|
||
|
return current_component;
|
||
|
}
|
||
|
function onMount(fn) {
|
||
|
get_current_component().$$.on_mount.push(fn);
|
||
|
}
|
||
|
function bubble(component, event) {
|
||
|
const callbacks = component.$$.callbacks[event.type];
|
||
|
if (callbacks) {
|
||
|
callbacks.slice().forEach((fn) => fn.call(this, event));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// node_modules/svelte/src/runtime/internal/scheduler.js
|
||
|
var dirty_components = [];
|
||
|
var binding_callbacks = [];
|
||
|
var render_callbacks = [];
|
||
|
var flush_callbacks = [];
|
||
|
var resolved_promise = /* @__PURE__ */ Promise.resolve();
|
||
|
var update_scheduled = false;
|
||
|
function schedule_update() {
|
||
|
if (!update_scheduled) {
|
||
|
update_scheduled = true;
|
||
|
resolved_promise.then(flush);
|
||
|
}
|
||
|
}
|
||
|
function tick() {
|
||
|
schedule_update();
|
||
|
return resolved_promise;
|
||
|
}
|
||
|
function add_render_callback(fn) {
|
||
|
render_callbacks.push(fn);
|
||
|
}
|
||
|
function add_flush_callback(fn) {
|
||
|
flush_callbacks.push(fn);
|
||
|
}
|
||
|
var seen_callbacks = /* @__PURE__ */ new Set();
|
||
|
var flushidx = 0;
|
||
|
function flush() {
|
||
|
if (flushidx !== 0) {
|
||
|
return;
|
||
|
}
|
||
|
const saved_component = current_component;
|
||
|
do {
|
||
|
try {
|
||
|
while (flushidx < dirty_components.length) {
|
||
|
const component = dirty_components[flushidx];
|
||
|
flushidx++;
|
||
|
set_current_component(component);
|
||
|
update(component.$$);
|
||
|
}
|
||
|
} catch (e) {
|
||
|
dirty_components.length = 0;
|
||
|
flushidx = 0;
|
||
|
throw e;
|
||
|
}
|
||
|
set_current_component(null);
|
||
|
dirty_components.length = 0;
|
||
|
flushidx = 0;
|
||
|
while (binding_callbacks.length)
|
||
|
binding_callbacks.pop()();
|
||
|
for (let i = 0; i < render_callbacks.length; i += 1) {
|
||
|
const callback = render_callbacks[i];
|
||
|
if (!seen_callbacks.has(callback)) {
|
||
|
seen_callbacks.add(callback);
|
||
|
callback();
|
||
|
}
|
||
|
}
|
||
|
render_callbacks.length = 0;
|
||
|
} while (dirty_components.length);
|
||
|
while (flush_callbacks.length) {
|
||
|
flush_callbacks.pop()();
|
||
|
}
|
||
|
update_scheduled = false;
|
||
|
seen_callbacks.clear();
|
||
|
set_current_component(saved_component);
|
||
|
}
|
||
|
function update($$) {
|
||
|
if ($$.fragment !== null) {
|
||
|
$$.update();
|
||
|
run_all($$.before_update);
|
||
|
const dirty = $$.dirty;
|
||
|
$$.dirty = [-1];
|
||
|
$$.fragment && $$.fragment.p($$.ctx, dirty);
|
||
|
$$.after_update.forEach(add_render_callback);
|
||
|
}
|
||
|
}
|
||
|
function flush_render_callbacks(fns) {
|
||
|
const filtered = [];
|
||
|
const targets = [];
|
||
|
render_callbacks.forEach((c) => fns.indexOf(c) === -1 ? filtered.push(c) : targets.push(c));
|
||
|
targets.forEach((c) => c());
|
||
|
render_callbacks = filtered;
|
||
|
}
|
||
|
|
||
|
// node_modules/svelte/src/runtime/internal/transitions.js
|
||
|
var outroing = /* @__PURE__ */ new Set();
|
||
|
var outros;
|
||
|
function group_outros() {
|
||
|
outros = {
|
||
|
r: 0,
|
||
|
c: [],
|
||
|
p: outros
|
||
|
// parent group
|
||
|
};
|
||
|
}
|
||
|
function check_outros() {
|
||
|
if (!outros.r) {
|
||
|
run_all(outros.c);
|
||
|
}
|
||
|
outros = outros.p;
|
||
|
}
|
||
|
function transition_in(block, local) {
|
||
|
if (block && block.i) {
|
||
|
outroing.delete(block);
|
||
|
block.i(local);
|
||
|
}
|
||
|
}
|
||
|
function transition_out(block, local, detach2, callback) {
|
||
|
if (block && block.o) {
|
||
|
if (outroing.has(block))
|
||
|
return;
|
||
|
outroing.add(block);
|
||
|
outros.c.push(() => {
|
||
|
outroing.delete(block);
|
||
|
if (callback) {
|
||
|
if (detach2)
|
||
|
block.d(1);
|
||
|
callback();
|
||
|
}
|
||
|
});
|
||
|
block.o(local);
|
||
|
} else if (callback) {
|
||
|
callback();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// node_modules/svelte/src/runtime/internal/each.js
|
||
|
function ensure_array_like(array_like_or_iterator) {
|
||
|
return (array_like_or_iterator == null ? void 0 : array_like_or_iterator.length) !== void 0 ? array_like_or_iterator : Array.from(array_like_or_iterator);
|
||
|
}
|
||
|
function outro_and_destroy_block(block, lookup) {
|
||
|
transition_out(block, 1, 1, () => {
|
||
|
lookup.delete(block.key);
|
||
|
});
|
||
|
}
|
||
|
function update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block6, next, get_context) {
|
||
|
let o = old_blocks.length;
|
||
|
let n = list.length;
|
||
|
let i = o;
|
||
|
const old_indexes = {};
|
||
|
while (i--)
|
||
|
old_indexes[old_blocks[i].key] = i;
|
||
|
const new_blocks = [];
|
||
|
const new_lookup = /* @__PURE__ */ new Map();
|
||
|
const deltas = /* @__PURE__ */ new Map();
|
||
|
const updates = [];
|
||
|
i = n;
|
||
|
while (i--) {
|
||
|
const child_ctx = get_context(ctx, list, i);
|
||
|
const key = get_key(child_ctx);
|
||
|
let block = lookup.get(key);
|
||
|
if (!block) {
|
||
|
block = create_each_block6(key, child_ctx);
|
||
|
block.c();
|
||
|
} else if (dynamic) {
|
||
|
updates.push(() => block.p(child_ctx, dirty));
|
||
|
}
|
||
|
new_lookup.set(key, new_blocks[i] = block);
|
||
|
if (key in old_indexes)
|
||
|
deltas.set(key, Math.abs(i - old_indexes[key]));
|
||
|
}
|
||
|
const will_move = /* @__PURE__ */ new Set();
|
||
|
const did_move = /* @__PURE__ */ new Set();
|
||
|
function insert2(block) {
|
||
|
transition_in(block, 1);
|
||
|
block.m(node, next);
|
||
|
lookup.set(block.key, block);
|
||
|
next = block.first;
|
||
|
n--;
|
||
|
}
|
||
|
while (o && n) {
|
||
|
const new_block = new_blocks[n - 1];
|
||
|
const old_block = old_blocks[o - 1];
|
||
|
const new_key = new_block.key;
|
||
|
const old_key = old_block.key;
|
||
|
if (new_block === old_block) {
|
||
|
next = new_block.first;
|
||
|
o--;
|
||
|
n--;
|
||
|
} else if (!new_lookup.has(old_key)) {
|
||
|
destroy(old_block, lookup);
|
||
|
o--;
|
||
|
} else if (!lookup.has(new_key) || will_move.has(new_key)) {
|
||
|
insert2(new_block);
|
||
|
} else if (did_move.has(old_key)) {
|
||
|
o--;
|
||
|
} else if (deltas.get(new_key) > deltas.get(old_key)) {
|
||
|
did_move.add(new_key);
|
||
|
insert2(new_block);
|
||
|
} else {
|
||
|
will_move.add(old_key);
|
||
|
o--;
|
||
|
}
|
||
|
}
|
||
|
while (o--) {
|
||
|
const old_block = old_blocks[o];
|
||
|
if (!new_lookup.has(old_block.key))
|
||
|
destroy(old_block, lookup);
|
||
|
}
|
||
|
while (n)
|
||
|
insert2(new_blocks[n - 1]);
|
||
|
run_all(updates);
|
||
|
return new_blocks;
|
||
|
}
|
||
|
|
||
|
// node_modules/svelte/src/shared/boolean_attributes.js
|
||
|
var _boolean_attributes = (
|
||
|
/** @type {const} */
|
||
|
[
|
||
|
"allowfullscreen",
|
||
|
"allowpaymentrequest",
|
||
|
"async",
|
||
|
"autofocus",
|
||
|
"autoplay",
|
||
|
"checked",
|
||
|
"controls",
|
||
|
"default",
|
||
|
"defer",
|
||
|
"disabled",
|
||
|
"formnovalidate",
|
||
|
"hidden",
|
||
|
"inert",
|
||
|
"ismap",
|
||
|
"loop",
|
||
|
"multiple",
|
||
|
"muted",
|
||
|
"nomodule",
|
||
|
"novalidate",
|
||
|
"open",
|
||
|
"playsinline",
|
||
|
"readonly",
|
||
|
"required",
|
||
|
"reversed",
|
||
|
"selected"
|
||
|
]
|
||
|
);
|
||
|
var boolean_attributes = /* @__PURE__ */ new Set([..._boolean_attributes]);
|
||
|
|
||
|
// node_modules/svelte/src/runtime/internal/Component.js
|
||
|
function bind(component, name, callback) {
|
||
|
const index = component.$$.props[name];
|
||
|
if (index !== void 0) {
|
||
|
component.$$.bound[index] = callback;
|
||
|
callback(component.$$.ctx[index]);
|
||
|
}
|
||
|
}
|
||
|
function create_component(block) {
|
||
|
block && block.c();
|
||
|
}
|
||
|
function mount_component(component, target, anchor) {
|
||
|
const { fragment, after_update } = component.$$;
|
||
|
fragment && fragment.m(target, anchor);
|
||
|
add_render_callback(() => {
|
||
|
const new_on_destroy = component.$$.on_mount.map(run).filter(is_function);
|
||
|
if (component.$$.on_destroy) {
|
||
|
component.$$.on_destroy.push(...new_on_destroy);
|
||
|
} else {
|
||
|
run_all(new_on_destroy);
|
||
|
}
|
||
|
component.$$.on_mount = [];
|
||
|
});
|
||
|
after_update.forEach(add_render_callback);
|
||
|
}
|
||
|
function destroy_component(component, detaching) {
|
||
|
const $$ = component.$$;
|
||
|
if ($$.fragment !== null) {
|
||
|
flush_render_callbacks($$.after_update);
|
||
|
run_all($$.on_destroy);
|
||
|
$$.fragment && $$.fragment.d(detaching);
|
||
|
$$.on_destroy = $$.fragment = null;
|
||
|
$$.ctx = [];
|
||
|
}
|
||
|
}
|
||
|
function make_dirty(component, i) {
|
||
|
if (component.$$.dirty[0] === -1) {
|
||
|
dirty_components.push(component);
|
||
|
schedule_update();
|
||
|
component.$$.dirty.fill(0);
|
||
|
}
|
||
|
component.$$.dirty[i / 31 | 0] |= 1 << i % 31;
|
||
|
}
|
||
|
function init(component, options, instance6, create_fragment6, not_equal, props, append_styles2 = null, dirty = [-1]) {
|
||
|
const parent_component = current_component;
|
||
|
set_current_component(component);
|
||
|
const $$ = component.$$ = {
|
||
|
fragment: null,
|
||
|
ctx: [],
|
||
|
// state
|
||
|
props,
|
||
|
update: noop,
|
||
|
not_equal,
|
||
|
bound: blank_object(),
|
||
|
// lifecycle
|
||
|
on_mount: [],
|
||
|
on_destroy: [],
|
||
|
on_disconnect: [],
|
||
|
before_update: [],
|
||
|
after_update: [],
|
||
|
context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),
|
||
|
// everything else
|
||
|
callbacks: blank_object(),
|
||
|
dirty,
|
||
|
skip_bound: false,
|
||
|
root: options.target || parent_component.$$.root
|
||
|
};
|
||
|
append_styles2 && append_styles2($$.root);
|
||
|
let ready = false;
|
||
|
$$.ctx = instance6 ? instance6(component, options.props || {}, (i, ret, ...rest) => {
|
||
|
const value = rest.length ? rest[0] : ret;
|
||
|
if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {
|
||
|
if (!$$.skip_bound && $$.bound[i])
|
||
|
$$.bound[i](value);
|
||
|
if (ready)
|
||
|
make_dirty(component, i);
|
||
|
}
|
||
|
return ret;
|
||
|
}) : [];
|
||
|
$$.update();
|
||
|
ready = true;
|
||
|
run_all($$.before_update);
|
||
|
$$.fragment = create_fragment6 ? create_fragment6($$.ctx) : false;
|
||
|
if (options.target) {
|
||
|
if (options.hydrate) {
|
||
|
start_hydrating();
|
||
|
const nodes = children(options.target);
|
||
|
$$.fragment && $$.fragment.l(nodes);
|
||
|
nodes.forEach(detach);
|
||
|
} else {
|
||
|
$$.fragment && $$.fragment.c();
|
||
|
}
|
||
|
if (options.intro)
|
||
|
transition_in(component.$$.fragment);
|
||
|
mount_component(component, options.target, options.anchor);
|
||
|
end_hydrating();
|
||
|
flush();
|
||
|
}
|
||
|
set_current_component(parent_component);
|
||
|
}
|
||
|
var SvelteElement;
|
||
|
if (typeof HTMLElement === "function") {
|
||
|
SvelteElement = class extends HTMLElement {
|
||
|
constructor($$componentCtor, $$slots, use_shadow_dom) {
|
||
|
super();
|
||
|
/** The Svelte component constructor */
|
||
|
__publicField(this, "$$ctor");
|
||
|
/** Slots */
|
||
|
__publicField(this, "$$s");
|
||
|
/** The Svelte component instance */
|
||
|
__publicField(this, "$$c");
|
||
|
/** Whether or not the custom element is connected */
|
||
|
__publicField(this, "$$cn", false);
|
||
|
/** Component props data */
|
||
|
__publicField(this, "$$d", {});
|
||
|
/** `true` if currently in the process of reflecting component props back to attributes */
|
||
|
__publicField(this, "$$r", false);
|
||
|
/** @type {Record<string, CustomElementPropDefinition>} Props definition (name, reflected, type etc) */
|
||
|
__publicField(this, "$$p_d", {});
|
||
|
/** @type {Record<string, Function[]>} Event listeners */
|
||
|
__publicField(this, "$$l", {});
|
||
|
/** @type {Map<Function, Function>} Event listener unsubscribe functions */
|
||
|
__publicField(this, "$$l_u", /* @__PURE__ */ new Map());
|
||
|
this.$$ctor = $$componentCtor;
|
||
|
this.$$s = $$slots;
|
||
|
if (use_shadow_dom) {
|
||
|
this.attachShadow({ mode: "open" });
|
||
|
}
|
||
|
}
|
||
|
addEventListener(type, listener, options) {
|
||
|
this.$$l[type] = this.$$l[type] || [];
|
||
|
this.$$l[type].push(listener);
|
||
|
if (this.$$c) {
|
||
|
const unsub = this.$$c.$on(type, listener);
|
||
|
this.$$l_u.set(listener, unsub);
|
||
|
}
|
||
|
super.addEventListener(type, listener, options);
|
||
|
}
|
||
|
removeEventListener(type, listener, options) {
|
||
|
super.removeEventListener(type, listener, options);
|
||
|
if (this.$$c) {
|
||
|
const unsub = this.$$l_u.get(listener);
|
||
|
if (unsub) {
|
||
|
unsub();
|
||
|
this.$$l_u.delete(listener);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
async connectedCallback() {
|
||
|
this.$$cn = true;
|
||
|
if (!this.$$c) {
|
||
|
let create_slot = function(name) {
|
||
|
return () => {
|
||
|
let node;
|
||
|
const obj = {
|
||
|
c: function create() {
|
||
|
node = element("slot");
|
||
|
if (name !== "default") {
|
||
|
attr(node, "name", name);
|
||
|
}
|
||
|
},
|
||
|
/**
|
||
|
* @param {HTMLElement} target
|
||
|
* @param {HTMLElement} [anchor]
|
||
|
*/
|
||
|
m: function mount(target, anchor) {
|
||
|
insert(target, node, anchor);
|
||
|
},
|
||
|
d: function destroy(detaching) {
|
||
|
if (detaching) {
|
||
|
detach(node);
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
return obj;
|
||
|
};
|
||
|
};
|
||
|
await Promise.resolve();
|
||
|
if (!this.$$cn) {
|
||
|
return;
|
||
|
}
|
||
|
const $$slots = {};
|
||
|
const existing_slots = get_custom_elements_slots(this);
|
||
|
for (const name of this.$$s) {
|
||
|
if (name in existing_slots) {
|
||
|
$$slots[name] = [create_slot(name)];
|
||
|
}
|
||
|
}
|
||
|
for (const attribute of this.attributes) {
|
||
|
const name = this.$$g_p(attribute.name);
|
||
|
if (!(name in this.$$d)) {
|
||
|
this.$$d[name] = get_custom_element_value(name, attribute.value, this.$$p_d, "toProp");
|
||
|
}
|
||
|
}
|
||
|
this.$$c = new this.$$ctor({
|
||
|
target: this.shadowRoot || this,
|
||
|
props: {
|
||
|
...this.$$d,
|
||
|
$$slots,
|
||
|
$$scope: {
|
||
|
ctx: []
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
const reflect_attributes = () => {
|
||
|
this.$$r = true;
|
||
|
for (const key in this.$$p_d) {
|
||
|
this.$$d[key] = this.$$c.$$.ctx[this.$$c.$$.props[key]];
|
||
|
if (this.$$p_d[key].reflect) {
|
||
|
const attribute_value = get_custom_element_value(
|
||
|
key,
|
||
|
this.$$d[key],
|
||
|
this.$$p_d,
|
||
|
"toAttribute"
|
||
|
);
|
||
|
if (attribute_value == null) {
|
||
|
this.removeAttribute(this.$$p_d[key].attribute || key);
|
||
|
} else {
|
||
|
this.setAttribute(this.$$p_d[key].attribute || key, attribute_value);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
this.$$r = false;
|
||
|
};
|
||
|
this.$$c.$$.after_update.push(reflect_attributes);
|
||
|
reflect_attributes();
|
||
|
for (const type in this.$$l) {
|
||
|
for (const listener of this.$$l[type]) {
|
||
|
const unsub = this.$$c.$on(type, listener);
|
||
|
this.$$l_u.set(listener, unsub);
|
||
|
}
|
||
|
}
|
||
|
this.$$l = {};
|
||
|
}
|
||
|
}
|
||
|
// We don't need this when working within Svelte code, but for compatibility of people using this outside of Svelte
|
||
|
// and setting attributes through setAttribute etc, this is helpful
|
||
|
attributeChangedCallback(attr2, _oldValue, newValue) {
|
||
|
var _a;
|
||
|
if (this.$$r)
|
||
|
return;
|
||
|
attr2 = this.$$g_p(attr2);
|
||
|
this.$$d[attr2] = get_custom_element_value(attr2, newValue, this.$$p_d, "toProp");
|
||
|
(_a = this.$$c) == null ? void 0 : _a.$set({ [attr2]: this.$$d[attr2] });
|
||
|
}
|
||
|
disconnectedCallback() {
|
||
|
this.$$cn = false;
|
||
|
Promise.resolve().then(() => {
|
||
|
if (!this.$$cn) {
|
||
|
this.$$c.$destroy();
|
||
|
this.$$c = void 0;
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
$$g_p(attribute_name) {
|
||
|
return Object.keys(this.$$p_d).find(
|
||
|
(key) => this.$$p_d[key].attribute === attribute_name || !this.$$p_d[key].attribute && key.toLowerCase() === attribute_name
|
||
|
) || attribute_name;
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
function get_custom_element_value(prop, value, props_definition, transform) {
|
||
|
var _a;
|
||
|
const type = (_a = props_definition[prop]) == null ? void 0 : _a.type;
|
||
|
value = type === "Boolean" && typeof value !== "boolean" ? value != null : value;
|
||
|
if (!transform || !props_definition[prop]) {
|
||
|
return value;
|
||
|
} else if (transform === "toAttribute") {
|
||
|
switch (type) {
|
||
|
case "Object":
|
||
|
case "Array":
|
||
|
return value == null ? null : JSON.stringify(value);
|
||
|
case "Boolean":
|
||
|
return value ? "" : null;
|
||
|
case "Number":
|
||
|
return value == null ? null : value;
|
||
|
default:
|
||
|
return value;
|
||
|
}
|
||
|
} else {
|
||
|
switch (type) {
|
||
|
case "Object":
|
||
|
case "Array":
|
||
|
return value && JSON.parse(value);
|
||
|
case "Boolean":
|
||
|
return value;
|
||
|
case "Number":
|
||
|
return value != null ? +value : value;
|
||
|
default:
|
||
|
return value;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
var SvelteComponent = class {
|
||
|
constructor() {
|
||
|
/**
|
||
|
* ### PRIVATE API
|
||
|
*
|
||
|
* Do not use, may change at any time
|
||
|
*
|
||
|
* @type {any}
|
||
|
*/
|
||
|
__publicField(this, "$$");
|
||
|
/**
|
||
|
* ### PRIVATE API
|
||
|
*
|
||
|
* Do not use, may change at any time
|
||
|
*
|
||
|
* @type {any}
|
||
|
*/
|
||
|
__publicField(this, "$$set");
|
||
|
}
|
||
|
/** @returns {void} */
|
||
|
$destroy() {
|
||
|
destroy_component(this, 1);
|
||
|
this.$destroy = noop;
|
||
|
}
|
||
|
/**
|
||
|
* @template {Extract<keyof Events, string>} K
|
||
|
* @param {K} type
|
||
|
* @param {((e: Events[K]) => void) | null | undefined} callback
|
||
|
* @returns {() => void}
|
||
|
*/
|
||
|
$on(type, callback) {
|
||
|
if (!is_function(callback)) {
|
||
|
return noop;
|
||
|
}
|
||
|
const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);
|
||
|
callbacks.push(callback);
|
||
|
return () => {
|
||
|
const index = callbacks.indexOf(callback);
|
||
|
if (index !== -1)
|
||
|
callbacks.splice(index, 1);
|
||
|
};
|
||
|
}
|
||
|
/**
|
||
|
* @param {Partial<Props>} props
|
||
|
* @returns {void}
|
||
|
*/
|
||
|
$set(props) {
|
||
|
if (this.$$set && !is_empty(props)) {
|
||
|
this.$$.skip_bound = true;
|
||
|
this.$$set(props);
|
||
|
this.$$.skip_bound = false;
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
// node_modules/svelte/src/shared/version.js
|
||
|
var PUBLIC_VERSION = "4";
|
||
|
|
||
|
// node_modules/svelte/src/runtime/internal/disclose-version/index.js
|
||
|
if (typeof window !== "undefined")
|
||
|
(window.__svelte || (window.__svelte = { v: /* @__PURE__ */ new Set() })).v.add(PUBLIC_VERSION);
|
||
|
|
||
|
// node_modules/tslib/tslib.es6.js
|
||
|
function __awaiter(thisArg, _arguments, P, generator) {
|
||
|
function adopt(value) {
|
||
|
return value instanceof P ? value : new P(function(resolve) {
|
||
|
resolve(value);
|
||
|
});
|
||
|
}
|
||
|
return new (P || (P = Promise))(function(resolve, reject) {
|
||
|
function fulfilled(value) {
|
||
|
try {
|
||
|
step(generator.next(value));
|
||
|
} catch (e) {
|
||
|
reject(e);
|
||
|
}
|
||
|
}
|
||
|
function rejected(value) {
|
||
|
try {
|
||
|
step(generator["throw"](value));
|
||
|
} catch (e) {
|
||
|
reject(e);
|
||
|
}
|
||
|
}
|
||
|
function step(result) {
|
||
|
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
||
|
}
|
||
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// src/AddPropInput.svelte
|
||
|
function add_css(target) {
|
||
|
append_styles(target, "svelte-lb92c0", "input.svelte-lb92c0{max-height:25px;overflow-x:auto}select.svelte-lb92c0{height:21px}#name-input.svelte-lb92c0{flex-grow:0}.modal-input-container.svelte-lb92c0{width:95%;display:flex;flex-direction:row;align-items:center;gap:10px;margin-top:10px}.btn-inactive.svelte-lb92c0{cursor:not-allowed;pointer-events:none;opacity:0.7}");
|
||
|
}
|
||
|
function get_each_context(ctx, list, i) {
|
||
|
const child_ctx = ctx.slice();
|
||
|
child_ctx[11] = list[i];
|
||
|
return child_ctx;
|
||
|
}
|
||
|
function create_each_block(ctx) {
|
||
|
let option;
|
||
|
let t_value = (
|
||
|
/*key*/
|
||
|
ctx[11] + ""
|
||
|
);
|
||
|
let t;
|
||
|
let option_value_value;
|
||
|
return {
|
||
|
c() {
|
||
|
option = element("option");
|
||
|
t = text(t_value);
|
||
|
option.__value = option_value_value = /*options*/
|
||
|
ctx[6][
|
||
|
/*key*/
|
||
|
ctx[11]
|
||
|
];
|
||
|
set_input_value(option, option.__value);
|
||
|
},
|
||
|
m(target, anchor) {
|
||
|
insert(target, option, anchor);
|
||
|
append(option, t);
|
||
|
},
|
||
|
p: noop,
|
||
|
d(detaching) {
|
||
|
if (detaching) {
|
||
|
detach(option);
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
function create_fragment(ctx) {
|
||
|
let div;
|
||
|
let a;
|
||
|
let t0;
|
||
|
let a_class_value;
|
||
|
let a_tabindex_value;
|
||
|
let t1;
|
||
|
let select;
|
||
|
let t2;
|
||
|
let input0;
|
||
|
let t3;
|
||
|
let input1;
|
||
|
let mounted;
|
||
|
let dispose;
|
||
|
let each_value = ensure_array_like(Object.keys(
|
||
|
/*options*/
|
||
|
ctx[6]
|
||
|
));
|
||
|
let each_blocks = [];
|
||
|
for (let i = 0; i < each_value.length; i += 1) {
|
||
|
each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));
|
||
|
}
|
||
|
return {
|
||
|
c() {
|
||
|
div = element("div");
|
||
|
a = element("a");
|
||
|
t0 = text("X");
|
||
|
t1 = space();
|
||
|
select = element("select");
|
||
|
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
|
each_blocks[i].c();
|
||
|
}
|
||
|
t2 = space();
|
||
|
input0 = element("input");
|
||
|
t3 = space();
|
||
|
input1 = element("input");
|
||
|
attr(a, "id", "del-btn");
|
||
|
attr(a, "class", a_class_value = "btn-del " + /*isFirst*/
|
||
|
(ctx[1] ? "btn-inactive" : "") + " svelte-lb92c0");
|
||
|
attr(a, "tabindex", a_tabindex_value = /*isFirst*/
|
||
|
ctx[1] ? -1 : 0);
|
||
|
attr(a, "href", "href");
|
||
|
attr(select, "id", "type-input");
|
||
|
attr(select, "class", "flex-obj svelte-lb92c0");
|
||
|
if (
|
||
|
/*inputType*/
|
||
|
ctx[4] === void 0
|
||
|
)
|
||
|
add_render_callback(() => (
|
||
|
/*select_change_handler*/
|
||
|
ctx[8].call(select)
|
||
|
));
|
||
|
attr(input0, "id", "name-input");
|
||
|
attr(input0, "class", "name-input flex-obj svelte-lb92c0");
|
||
|
attr(input0, "type", "text");
|
||
|
attr(input0, "name", "name[]");
|
||
|
attr(input0, "placeholder", "name");
|
||
|
input0.required = true;
|
||
|
attr(input1, "id", "value-input");
|
||
|
attr(
|
||
|
input1,
|
||
|
"type",
|
||
|
/*inputType*/
|
||
|
ctx[4]
|
||
|
);
|
||
|
attr(input1, "name", "value[]");
|
||
|
attr(input1, "placeholder", "value");
|
||
|
attr(input1, "class", "value-input flex-obj svelte-lb92c0");
|
||
|
attr(div, "class", "modal-input-container svelte-lb92c0");
|
||
|
},
|
||
|
m(target, anchor) {
|
||
|
insert(target, div, anchor);
|
||
|
append(div, a);
|
||
|
append(a, t0);
|
||
|
append(div, t1);
|
||
|
append(div, select);
|
||
|
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
|
if (each_blocks[i]) {
|
||
|
each_blocks[i].m(select, null);
|
||
|
}
|
||
|
}
|
||
|
select_option(
|
||
|
select,
|
||
|
/*inputType*/
|
||
|
ctx[4],
|
||
|
true
|
||
|
);
|
||
|
append(div, t2);
|
||
|
append(div, input0);
|
||
|
ctx[9](input0);
|
||
|
set_input_value(
|
||
|
input0,
|
||
|
/*nameVal*/
|
||
|
ctx[0]
|
||
|
);
|
||
|
append(div, t3);
|
||
|
append(div, input1);
|
||
|
if (!mounted) {
|
||
|
dispose = [
|
||
|
listen(
|
||
|
a,
|
||
|
"click",
|
||
|
/*click_handler*/
|
||
|
ctx[7]
|
||
|
),
|
||
|
listen(
|
||
|
select,
|
||
|
"change",
|
||
|
/*select_change_handler*/
|
||
|
ctx[8]
|
||
|
),
|
||
|
listen(
|
||
|
input0,
|
||
|
"input",
|
||
|
/*input0_input_handler*/
|
||
|
ctx[10]
|
||
|
)
|
||
|
];
|
||
|
mounted = true;
|
||
|
}
|
||
|
},
|
||
|
p(ctx2, [dirty]) {
|
||
|
if (dirty & /*isFirst*/
|
||
|
2 && a_class_value !== (a_class_value = "btn-del " + /*isFirst*/
|
||
|
(ctx2[1] ? "btn-inactive" : "") + " svelte-lb92c0")) {
|
||
|
attr(a, "class", a_class_value);
|
||
|
}
|
||
|
if (dirty & /*isFirst*/
|
||
|
2 && a_tabindex_value !== (a_tabindex_value = /*isFirst*/
|
||
|
ctx2[1] ? -1 : 0)) {
|
||
|
attr(a, "tabindex", a_tabindex_value);
|
||
|
}
|
||
|
if (dirty & /*options, Object*/
|
||
|
64) {
|
||
|
each_value = ensure_array_like(Object.keys(
|
||
|
/*options*/
|
||
|
ctx2[6]
|
||
|
));
|
||
|
let i;
|
||
|
for (i = 0; i < each_value.length; i += 1) {
|
||
|
const child_ctx = get_each_context(ctx2, each_value, i);
|
||
|
if (each_blocks[i]) {
|
||
|
each_blocks[i].p(child_ctx, dirty);
|
||
|
} else {
|
||
|
each_blocks[i] = create_each_block(child_ctx);
|
||
|
each_blocks[i].c();
|
||
|
each_blocks[i].m(select, null);
|
||
|
}
|
||
|
}
|
||
|
for (; i < each_blocks.length; i += 1) {
|
||
|
each_blocks[i].d(1);
|
||
|
}
|
||
|
each_blocks.length = each_value.length;
|
||
|
}
|
||
|
if (dirty & /*inputType, options, Object*/
|
||
|
80) {
|
||
|
select_option(
|
||
|
select,
|
||
|
/*inputType*/
|
||
|
ctx2[4]
|
||
|
);
|
||
|
}
|
||
|
if (dirty & /*nameVal*/
|
||
|
1 && input0.value !== /*nameVal*/
|
||
|
ctx2[0]) {
|
||
|
set_input_value(
|
||
|
input0,
|
||
|
/*nameVal*/
|
||
|
ctx2[0]
|
||
|
);
|
||
|
}
|
||
|
if (dirty & /*inputType, options, Object*/
|
||
|
80) {
|
||
|
attr(
|
||
|
input1,
|
||
|
"type",
|
||
|
/*inputType*/
|
||
|
ctx2[4]
|
||
|
);
|
||
|
}
|
||
|
},
|
||
|
i: noop,
|
||
|
o: noop,
|
||
|
d(detaching) {
|
||
|
if (detaching) {
|
||
|
detach(div);
|
||
|
}
|
||
|
destroy_each(each_blocks, detaching);
|
||
|
ctx[9](null);
|
||
|
mounted = false;
|
||
|
run_all(dispose);
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
function instance($$self, $$props, $$invalidate) {
|
||
|
let { isFirst } = $$props;
|
||
|
let { removeInput } = $$props;
|
||
|
let { id } = $$props;
|
||
|
let { nameVal = "" } = $$props;
|
||
|
let inputType;
|
||
|
let inputEl;
|
||
|
const options = {
|
||
|
Text: "string",
|
||
|
Number: "number",
|
||
|
Checkbox: "checkbox",
|
||
|
Date: "date",
|
||
|
Datetime: "datetime-local"
|
||
|
};
|
||
|
onMount(() => __awaiter(void 0, void 0, void 0, function* () {
|
||
|
yield tick();
|
||
|
inputEl.focus();
|
||
|
inputEl.select();
|
||
|
}));
|
||
|
const click_handler = () => isFirst ? false : removeInput(id);
|
||
|
function select_change_handler() {
|
||
|
inputType = select_value(this);
|
||
|
$$invalidate(4, inputType);
|
||
|
$$invalidate(6, options);
|
||
|
}
|
||
|
function input0_binding($$value) {
|
||
|
binding_callbacks[$$value ? "unshift" : "push"](() => {
|
||
|
inputEl = $$value;
|
||
|
$$invalidate(5, inputEl);
|
||
|
});
|
||
|
}
|
||
|
function input0_input_handler() {
|
||
|
nameVal = this.value;
|
||
|
$$invalidate(0, nameVal);
|
||
|
}
|
||
|
$$self.$$set = ($$props2) => {
|
||
|
if ("isFirst" in $$props2)
|
||
|
$$invalidate(1, isFirst = $$props2.isFirst);
|
||
|
if ("removeInput" in $$props2)
|
||
|
$$invalidate(2, removeInput = $$props2.removeInput);
|
||
|
if ("id" in $$props2)
|
||
|
$$invalidate(3, id = $$props2.id);
|
||
|
if ("nameVal" in $$props2)
|
||
|
$$invalidate(0, nameVal = $$props2.nameVal);
|
||
|
};
|
||
|
return [
|
||
|
nameVal,
|
||
|
isFirst,
|
||
|
removeInput,
|
||
|
id,
|
||
|
inputType,
|
||
|
inputEl,
|
||
|
options,
|
||
|
click_handler,
|
||
|
select_change_handler,
|
||
|
input0_binding,
|
||
|
input0_input_handler
|
||
|
];
|
||
|
}
|
||
|
var AddPropInput = class extends SvelteComponent {
|
||
|
constructor(options) {
|
||
|
super();
|
||
|
init(
|
||
|
this,
|
||
|
options,
|
||
|
instance,
|
||
|
create_fragment,
|
||
|
safe_not_equal,
|
||
|
{
|
||
|
isFirst: 1,
|
||
|
removeInput: 2,
|
||
|
id: 3,
|
||
|
nameVal: 0
|
||
|
},
|
||
|
add_css
|
||
|
);
|
||
|
}
|
||
|
};
|
||
|
var AddPropInput_default = AddPropInput;
|
||
|
|
||
|
// src/helpers.ts
|
||
|
function parseValue(input, type) {
|
||
|
switch (type) {
|
||
|
case "number":
|
||
|
return Number(input.value);
|
||
|
case "checkbox":
|
||
|
return Boolean(input.checked);
|
||
|
default:
|
||
|
return input.value;
|
||
|
}
|
||
|
}
|
||
|
function removeExtraCommas(str) {
|
||
|
return str.replace(/^,*(.*?),*$/g, "$1").replace(/,{2,}/g, ",");
|
||
|
}
|
||
|
function cleanTags(str) {
|
||
|
let cleanStr = str;
|
||
|
for (let index in KNOWN_BAD_CHARACTERS) {
|
||
|
cleanStr = cleanStr.replaceAll(KNOWN_BAD_CHARACTERS[index], "");
|
||
|
}
|
||
|
return cleanStr;
|
||
|
}
|
||
|
var KNOWN_BAD_CHARACTERS = [
|
||
|
"\u2012",
|
||
|
"\u2013",
|
||
|
"\u2014",
|
||
|
"\u2015",
|
||
|
"\u204F",
|
||
|
"\u203D",
|
||
|
"\u2018",
|
||
|
"\u201A",
|
||
|
"\u201B",
|
||
|
"\u2039",
|
||
|
"\u203A",
|
||
|
"\u201C",
|
||
|
"\u201D",
|
||
|
"\u201E",
|
||
|
"\u201F",
|
||
|
"\u2045",
|
||
|
"\u2046",
|
||
|
"\u204B",
|
||
|
"\u204E",
|
||
|
"\u2051",
|
||
|
"\u2044",
|
||
|
"\u204A",
|
||
|
"\u2030",
|
||
|
"\u2031",
|
||
|
"\u2052",
|
||
|
"\u2020",
|
||
|
"\u2021",
|
||
|
"\u2022",
|
||
|
"\u2023",
|
||
|
"\u2043",
|
||
|
"\u204C",
|
||
|
"\u204D",
|
||
|
"\u2032",
|
||
|
"\u2035",
|
||
|
"\u2038",
|
||
|
"\u203B",
|
||
|
"\u2050",
|
||
|
"\u2041",
|
||
|
"\u2042",
|
||
|
"\u2016",
|
||
|
"\u2011",
|
||
|
"\u2033",
|
||
|
"\u2034",
|
||
|
"\u2057",
|
||
|
"\u2036",
|
||
|
"\u2037",
|
||
|
"`",
|
||
|
"^",
|
||
|
"\u203E",
|
||
|
"\u2017",
|
||
|
"\u2053",
|
||
|
";",
|
||
|
":",
|
||
|
"!",
|
||
|
"\u203C",
|
||
|
"\u2049",
|
||
|
"?",
|
||
|
"\u2048",
|
||
|
"\u2047",
|
||
|
".",
|
||
|
"\u2024",
|
||
|
"\u2025",
|
||
|
"\u2026",
|
||
|
"'",
|
||
|
'"',
|
||
|
"(",
|
||
|
")",
|
||
|
"[",
|
||
|
"]",
|
||
|
"{",
|
||
|
"}",
|
||
|
"@",
|
||
|
"*",
|
||
|
"&",
|
||
|
"%",
|
||
|
"\u2054",
|
||
|
"+",
|
||
|
"<",
|
||
|
"=",
|
||
|
">",
|
||
|
"|",
|
||
|
"~",
|
||
|
"$",
|
||
|
"\u2055",
|
||
|
"\u2056",
|
||
|
"\u2058",
|
||
|
"\u2059",
|
||
|
"\u205A",
|
||
|
"\u205B",
|
||
|
"\u205C",
|
||
|
"\u205D",
|
||
|
"\u205E",
|
||
|
"\u2E00",
|
||
|
"\u2E01",
|
||
|
"\u2E02",
|
||
|
"\u2E03",
|
||
|
"\u2E04",
|
||
|
"\u2E05",
|
||
|
"\u2E06",
|
||
|
"\u2E07",
|
||
|
"\u2E08",
|
||
|
"\u2E09",
|
||
|
"\u2E0A",
|
||
|
"\u2E0B",
|
||
|
"\u2E0C",
|
||
|
"\u2E0D",
|
||
|
"\u2E0E",
|
||
|
"\u2E0F",
|
||
|
"\u2E10",
|
||
|
"\u2E11",
|
||
|
"\u2E12",
|
||
|
"\u2E13",
|
||
|
"\u2E14",
|
||
|
"\u2E15",
|
||
|
"\u2E16",
|
||
|
"\u2E17",
|
||
|
"\u2E1C",
|
||
|
"\u2E1D",
|
||
|
" ",
|
||
|
"#"
|
||
|
];
|
||
|
|
||
|
// src/AddPropForm.svelte
|
||
|
var { Map: Map_1 } = globals;
|
||
|
function add_css2(target) {
|
||
|
append_styles(target, "svelte-1ied4k", ".modal-inputs-container.svelte-1ied4k{height:200px;width:100%;overflow-y:scroll;border-radius:5px;border-style:solid;display:flex;flex-direction:column;align-items:center}.modal-add-container.svelte-1ied4k{margin-top:10px}.alert-container.svelte-1ied4k{display:flex;flex-direction:column;align-items:center;justify-content:center;margin-bottom:10px;background-color:red;font-weight:bold}.hidden.svelte-1ied4k{display:none}");
|
||
|
}
|
||
|
function get_each_context2(ctx, list, i) {
|
||
|
const child_ctx = ctx.slice();
|
||
|
child_ctx[19] = list[i];
|
||
|
child_ctx[20] = list;
|
||
|
child_ctx[21] = i;
|
||
|
return child_ctx;
|
||
|
}
|
||
|
function create_each_block2(key_1, ctx) {
|
||
|
let first;
|
||
|
let propinput;
|
||
|
let updating_nameVal;
|
||
|
let current;
|
||
|
function propinput_nameVal_binding(value) {
|
||
|
ctx[14](
|
||
|
value,
|
||
|
/*input*/
|
||
|
ctx[19]
|
||
|
);
|
||
|
}
|
||
|
let propinput_props = {
|
||
|
isFirst: (
|
||
|
/*input*/
|
||
|
ctx[19].isFirst
|
||
|
),
|
||
|
id: (
|
||
|
/*input*/
|
||
|
ctx[19].id
|
||
|
),
|
||
|
removeInput: (
|
||
|
/*removeInput*/
|
||
|
ctx[8]
|
||
|
)
|
||
|
};
|
||
|
if (
|
||
|
/*input*/
|
||
|
ctx[19].nameDef !== void 0
|
||
|
) {
|
||
|
propinput_props.nameVal = /*input*/
|
||
|
ctx[19].nameDef;
|
||
|
}
|
||
|
propinput = new AddPropInput_default({ props: propinput_props });
|
||
|
binding_callbacks.push(() => bind(propinput, "nameVal", propinput_nameVal_binding));
|
||
|
return {
|
||
|
key: key_1,
|
||
|
first: null,
|
||
|
c() {
|
||
|
first = empty();
|
||
|
create_component(propinput.$$.fragment);
|
||
|
this.first = first;
|
||
|
},
|
||
|
m(target, anchor) {
|
||
|
insert(target, first, anchor);
|
||
|
mount_component(propinput, target, anchor);
|
||
|
current = true;
|
||
|
},
|
||
|
p(new_ctx, dirty) {
|
||
|
ctx = new_ctx;
|
||
|
const propinput_changes = {};
|
||
|
if (dirty & /*inputEls*/
|
||
|
32)
|
||
|
propinput_changes.isFirst = /*input*/
|
||
|
ctx[19].isFirst;
|
||
|
if (dirty & /*inputEls*/
|
||
|
32)
|
||
|
propinput_changes.id = /*input*/
|
||
|
ctx[19].id;
|
||
|
if (!updating_nameVal && dirty & /*inputEls*/
|
||
|
32) {
|
||
|
updating_nameVal = true;
|
||
|
propinput_changes.nameVal = /*input*/
|
||
|
ctx[19].nameDef;
|
||
|
add_flush_callback(() => updating_nameVal = false);
|
||
|
}
|
||
|
propinput.$set(propinput_changes);
|
||
|
},
|
||
|
i(local) {
|
||
|
if (current)
|
||
|
return;
|
||
|
transition_in(propinput.$$.fragment, local);
|
||
|
current = true;
|
||
|
},
|
||
|
o(local) {
|
||
|
transition_out(propinput.$$.fragment, local);
|
||
|
current = false;
|
||
|
},
|
||
|
d(detaching) {
|
||
|
if (detaching) {
|
||
|
detach(first);
|
||
|
}
|
||
|
destroy_component(propinput, detaching);
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
function create_fragment2(ctx) {
|
||
|
let div6;
|
||
|
let div2;
|
||
|
let div0;
|
||
|
let t1;
|
||
|
let div1;
|
||
|
let t2;
|
||
|
let t3;
|
||
|
let p0;
|
||
|
let t5;
|
||
|
let p1;
|
||
|
let t6;
|
||
|
let t7;
|
||
|
let t8;
|
||
|
let t9;
|
||
|
let p2;
|
||
|
let t11;
|
||
|
let form;
|
||
|
let label;
|
||
|
let input_1;
|
||
|
let t12_value = "Overwrite existing properties";
|
||
|
let t12;
|
||
|
let t13;
|
||
|
let div3;
|
||
|
let each_blocks = [];
|
||
|
let each_1_lookup = new Map_1();
|
||
|
let t14;
|
||
|
let div4;
|
||
|
let a;
|
||
|
let t16;
|
||
|
let div5;
|
||
|
let button;
|
||
|
let current;
|
||
|
let mounted;
|
||
|
let dispose;
|
||
|
let each_value = ensure_array_like(
|
||
|
/*inputEls*/
|
||
|
ctx[5]
|
||
|
);
|
||
|
const get_key = (ctx2) => (
|
||
|
/*input*/
|
||
|
ctx2[19].id
|
||
|
);
|
||
|
for (let i = 0; i < each_value.length; i += 1) {
|
||
|
let child_ctx = get_each_context2(ctx, each_value, i);
|
||
|
let key = get_key(child_ctx);
|
||
|
each_1_lookup.set(key, each_blocks[i] = create_each_block2(key, child_ctx));
|
||
|
}
|
||
|
return {
|
||
|
c() {
|
||
|
div6 = element("div");
|
||
|
div2 = element("div");
|
||
|
div0 = element("div");
|
||
|
div0.textContent = "ERROR";
|
||
|
t1 = space();
|
||
|
div1 = element("div");
|
||
|
t2 = text(
|
||
|
/*alertText*/
|
||
|
ctx[4]
|
||
|
);
|
||
|
t3 = space();
|
||
|
p0 = element("p");
|
||
|
p0.textContent = "Type in a property name, then value. Use the dropbox to choose what type of\r\n data you wish to store.";
|
||
|
t5 = space();
|
||
|
p1 = element("p");
|
||
|
t6 = text('If you want to make a List property, use the Text data type and separate\r\n each value with a "');
|
||
|
t7 = text(
|
||
|
/*delimiter*/
|
||
|
ctx[1]
|
||
|
);
|
||
|
t8 = text('".');
|
||
|
t9 = space();
|
||
|
p2 = element("p");
|
||
|
p2.textContent = 'If you want to add Tags, use the name "tags".';
|
||
|
t11 = space();
|
||
|
form = element("form");
|
||
|
label = element("label");
|
||
|
input_1 = element("input");
|
||
|
t12 = text(t12_value);
|
||
|
t13 = space();
|
||
|
div3 = element("div");
|
||
|
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
|
each_blocks[i].c();
|
||
|
}
|
||
|
t14 = space();
|
||
|
div4 = element("div");
|
||
|
a = element("a");
|
||
|
a.textContent = "Add";
|
||
|
t16 = space();
|
||
|
div5 = element("div");
|
||
|
button = element("button");
|
||
|
button.textContent = "Submit";
|
||
|
attr(div1, "id", "alert-text");
|
||
|
attr(div2, "id", "alert-container");
|
||
|
attr(div2, "class", "alert-container hidden svelte-1ied4k");
|
||
|
attr(input_1, "type", "checkbox");
|
||
|
input_1.checked = /*overwrite*/
|
||
|
ctx[0];
|
||
|
attr(div3, "class", "modal-inputs-container svelte-1ied4k");
|
||
|
attr(a, "class", "a-btn");
|
||
|
attr(a, "href", "href");
|
||
|
attr(div4, "class", "modal-add-container svelte-1ied4k");
|
||
|
attr(button, "class", "btn-submit");
|
||
|
attr(div5, "class", "modal-button-container");
|
||
|
attr(div6, "id", "multi-properties-modal");
|
||
|
attr(div6, "class", "modal-content");
|
||
|
},
|
||
|
m(target, anchor) {
|
||
|
insert(target, div6, anchor);
|
||
|
append(div6, div2);
|
||
|
append(div2, div0);
|
||
|
append(div2, t1);
|
||
|
append(div2, div1);
|
||
|
append(div1, t2);
|
||
|
ctx[13](div2);
|
||
|
append(div6, t3);
|
||
|
append(div6, p0);
|
||
|
append(div6, t5);
|
||
|
append(div6, p1);
|
||
|
append(p1, t6);
|
||
|
append(p1, t7);
|
||
|
append(p1, t8);
|
||
|
append(div6, t9);
|
||
|
append(div6, p2);
|
||
|
append(div6, t11);
|
||
|
append(div6, form);
|
||
|
append(form, label);
|
||
|
append(label, input_1);
|
||
|
append(label, t12);
|
||
|
append(form, t13);
|
||
|
append(form, div3);
|
||
|
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
|
if (each_blocks[i]) {
|
||
|
each_blocks[i].m(div3, null);
|
||
|
}
|
||
|
}
|
||
|
append(form, t14);
|
||
|
append(form, div4);
|
||
|
append(div4, a);
|
||
|
append(form, t16);
|
||
|
append(form, div5);
|
||
|
append(div5, button);
|
||
|
ctx[15](form);
|
||
|
current = true;
|
||
|
if (!mounted) {
|
||
|
dispose = [
|
||
|
listen(
|
||
|
input_1,
|
||
|
"change",
|
||
|
/*onCheckboxChange*/
|
||
|
ctx[6]
|
||
|
),
|
||
|
listen(
|
||
|
a,
|
||
|
"click",
|
||
|
/*addInput*/
|
||
|
ctx[7]
|
||
|
),
|
||
|
listen(
|
||
|
button,
|
||
|
"click",
|
||
|
/*onSubmit*/
|
||
|
ctx[9]
|
||
|
),
|
||
|
listen(form, "submit", prevent_default(
|
||
|
/*submit_handler*/
|
||
|
ctx[12]
|
||
|
))
|
||
|
];
|
||
|
mounted = true;
|
||
|
}
|
||
|
},
|
||
|
p(ctx2, [dirty]) {
|
||
|
if (!current || dirty & /*alertText*/
|
||
|
16)
|
||
|
set_data(
|
||
|
t2,
|
||
|
/*alertText*/
|
||
|
ctx2[4]
|
||
|
);
|
||
|
if (!current || dirty & /*delimiter*/
|
||
|
2)
|
||
|
set_data(
|
||
|
t7,
|
||
|
/*delimiter*/
|
||
|
ctx2[1]
|
||
|
);
|
||
|
if (!current || dirty & /*overwrite*/
|
||
|
1) {
|
||
|
input_1.checked = /*overwrite*/
|
||
|
ctx2[0];
|
||
|
}
|
||
|
if (dirty & /*inputEls, removeInput*/
|
||
|
288) {
|
||
|
each_value = ensure_array_like(
|
||
|
/*inputEls*/
|
||
|
ctx2[5]
|
||
|
);
|
||
|
group_outros();
|
||
|
each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, div3, outro_and_destroy_block, create_each_block2, null, get_each_context2);
|
||
|
check_outros();
|
||
|
}
|
||
|
},
|
||
|
i(local) {
|
||
|
if (current)
|
||
|
return;
|
||
|
for (let i = 0; i < each_value.length; i += 1) {
|
||
|
transition_in(each_blocks[i]);
|
||
|
}
|
||
|
current = true;
|
||
|
},
|
||
|
o(local) {
|
||
|
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
|
transition_out(each_blocks[i]);
|
||
|
}
|
||
|
current = false;
|
||
|
},
|
||
|
d(detaching) {
|
||
|
if (detaching) {
|
||
|
detach(div6);
|
||
|
}
|
||
|
ctx[13](null);
|
||
|
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
|
each_blocks[i].d();
|
||
|
}
|
||
|
ctx[15](null);
|
||
|
mounted = false;
|
||
|
run_all(dispose);
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
function instance2($$self, $$props, $$invalidate) {
|
||
|
let { submission } = $$props;
|
||
|
let { overwrite } = $$props;
|
||
|
let { delimiter = "," } = $$props;
|
||
|
let { changeBool } = $$props;
|
||
|
let countInputs = 1;
|
||
|
let formEl;
|
||
|
let errorEl;
|
||
|
let alertText = ".";
|
||
|
function onCheckboxChange() {
|
||
|
$$invalidate(0, overwrite = !overwrite);
|
||
|
changeBool(overwrite);
|
||
|
}
|
||
|
let inputEls = [{ id: 1, isFirst: true, nameDef: "" }];
|
||
|
function addInput() {
|
||
|
countInputs++;
|
||
|
const newInput = {
|
||
|
id: countInputs,
|
||
|
isFirst: false,
|
||
|
nameDef: ""
|
||
|
};
|
||
|
$$invalidate(5, inputEls = [...inputEls, newInput]);
|
||
|
}
|
||
|
function removeInput(id) {
|
||
|
return __awaiter(this, void 0, void 0, function* () {
|
||
|
$$invalidate(5, inputEls = inputEls.filter((input) => input.id !== id));
|
||
|
yield tick();
|
||
|
let inputs = formEl.querySelectorAll("input");
|
||
|
if (!inputs)
|
||
|
return;
|
||
|
inputs[inputs.length - 2].focus();
|
||
|
});
|
||
|
}
|
||
|
function checkDuplicateNames() {
|
||
|
let set = /* @__PURE__ */ new Set();
|
||
|
for (let input of inputEls)
|
||
|
set.add(input.nameDef);
|
||
|
if (set.size < inputEls.length)
|
||
|
return true;
|
||
|
else
|
||
|
return false;
|
||
|
}
|
||
|
function runError(errorText) {
|
||
|
$$invalidate(4, alertText = errorText);
|
||
|
errorEl.classList.remove("hidden");
|
||
|
}
|
||
|
function onSubmit() {
|
||
|
if (checkDuplicateNames()) {
|
||
|
runError("Duplicate property names are not allowed.");
|
||
|
return;
|
||
|
}
|
||
|
let obj = /* @__PURE__ */ new Map();
|
||
|
let inputs = formEl.querySelectorAll('input[name^="name[]"]');
|
||
|
inputs.forEach((input) => {
|
||
|
if (!(input.nextElementSibling instanceof HTMLInputElement))
|
||
|
return;
|
||
|
if (!(input.previousElementSibling instanceof HTMLSelectElement))
|
||
|
return;
|
||
|
if (!(input.previousElementSibling.children[0] instanceof HTMLOptionElement))
|
||
|
return;
|
||
|
let name = input.value;
|
||
|
if (name === "") {
|
||
|
input.reportValidity();
|
||
|
return;
|
||
|
}
|
||
|
let value = parseValue(input.nextElementSibling, input.nextElementSibling.type);
|
||
|
if (typeof value === "string") {
|
||
|
if (name === "tags") {
|
||
|
value = cleanTags(value);
|
||
|
}
|
||
|
if (value.contains(delimiter)) {
|
||
|
let str = removeExtraCommas(value);
|
||
|
value = str.split(delimiter);
|
||
|
}
|
||
|
}
|
||
|
let inputType = input.previousElementSibling.children[0].innerText.toLowerCase();
|
||
|
let propObj = {
|
||
|
type: inputType,
|
||
|
data: value,
|
||
|
overwrite: false,
|
||
|
delimiter
|
||
|
};
|
||
|
obj.set(name, propObj);
|
||
|
});
|
||
|
if (obj.size < inputs.length)
|
||
|
return;
|
||
|
submission(obj);
|
||
|
}
|
||
|
function submit_handler(event) {
|
||
|
bubble.call(this, $$self, event);
|
||
|
}
|
||
|
function div2_binding($$value) {
|
||
|
binding_callbacks[$$value ? "unshift" : "push"](() => {
|
||
|
errorEl = $$value;
|
||
|
$$invalidate(3, errorEl);
|
||
|
});
|
||
|
}
|
||
|
function propinput_nameVal_binding(value, input) {
|
||
|
if ($$self.$$.not_equal(input.nameDef, value)) {
|
||
|
input.nameDef = value;
|
||
|
$$invalidate(5, inputEls);
|
||
|
}
|
||
|
}
|
||
|
function form_binding($$value) {
|
||
|
binding_callbacks[$$value ? "unshift" : "push"](() => {
|
||
|
formEl = $$value;
|
||
|
$$invalidate(2, formEl);
|
||
|
});
|
||
|
}
|
||
|
$$self.$$set = ($$props2) => {
|
||
|
if ("submission" in $$props2)
|
||
|
$$invalidate(10, submission = $$props2.submission);
|
||
|
if ("overwrite" in $$props2)
|
||
|
$$invalidate(0, overwrite = $$props2.overwrite);
|
||
|
if ("delimiter" in $$props2)
|
||
|
$$invalidate(1, delimiter = $$props2.delimiter);
|
||
|
if ("changeBool" in $$props2)
|
||
|
$$invalidate(11, changeBool = $$props2.changeBool);
|
||
|
};
|
||
|
return [
|
||
|
overwrite,
|
||
|
delimiter,
|
||
|
formEl,
|
||
|
errorEl,
|
||
|
alertText,
|
||
|
inputEls,
|
||
|
onCheckboxChange,
|
||
|
addInput,
|
||
|
removeInput,
|
||
|
onSubmit,
|
||
|
submission,
|
||
|
changeBool,
|
||
|
submit_handler,
|
||
|
div2_binding,
|
||
|
propinput_nameVal_binding,
|
||
|
form_binding
|
||
|
];
|
||
|
}
|
||
|
var AddPropForm = class extends SvelteComponent {
|
||
|
constructor(options) {
|
||
|
super();
|
||
|
init(
|
||
|
this,
|
||
|
options,
|
||
|
instance2,
|
||
|
create_fragment2,
|
||
|
safe_not_equal,
|
||
|
{
|
||
|
submission: 10,
|
||
|
overwrite: 0,
|
||
|
delimiter: 1,
|
||
|
changeBool: 11
|
||
|
},
|
||
|
add_css2
|
||
|
);
|
||
|
}
|
||
|
};
|
||
|
var AddPropForm_default = AddPropForm;
|
||
|
|
||
|
// src/AddConfirmModal.ts
|
||
|
var import_obsidian = require("obsidian");
|
||
|
|
||
|
// src/AddConfirmForm.svelte
|
||
|
function add_css3(target) {
|
||
|
append_styles(target, "svelte-135liin", ".msg.svelte-135liin{font-weight:bold;padding-bottom:10px}");
|
||
|
}
|
||
|
function get_each_context3(ctx, list, i) {
|
||
|
const child_ctx = ctx.slice();
|
||
|
child_ctx[7] = list[i][0];
|
||
|
child_ctx[8] = list[i][1];
|
||
|
return child_ctx;
|
||
|
}
|
||
|
function create_each_block3(ctx) {
|
||
|
let li;
|
||
|
let t0_value = (
|
||
|
/*propName*/
|
||
|
ctx[7] + ""
|
||
|
);
|
||
|
let t0;
|
||
|
let t1;
|
||
|
let t2_value = (
|
||
|
/*prop*/
|
||
|
ctx[8].data + ""
|
||
|
);
|
||
|
let t2;
|
||
|
let t3;
|
||
|
return {
|
||
|
c() {
|
||
|
li = element("li");
|
||
|
t0 = text(t0_value);
|
||
|
t1 = text(": ");
|
||
|
t2 = text(t2_value);
|
||
|
t3 = space();
|
||
|
},
|
||
|
m(target, anchor) {
|
||
|
insert(target, li, anchor);
|
||
|
append(li, t0);
|
||
|
append(li, t1);
|
||
|
append(li, t2);
|
||
|
append(li, t3);
|
||
|
},
|
||
|
p(ctx2, dirty) {
|
||
|
if (dirty & /*props*/
|
||
|
1 && t0_value !== (t0_value = /*propName*/
|
||
|
ctx2[7] + ""))
|
||
|
set_data(t0, t0_value);
|
||
|
if (dirty & /*props*/
|
||
|
1 && t2_value !== (t2_value = /*prop*/
|
||
|
ctx2[8].data + ""))
|
||
|
set_data(t2, t2_value);
|
||
|
},
|
||
|
d(detaching) {
|
||
|
if (detaching) {
|
||
|
detach(li);
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
function create_fragment3(ctx) {
|
||
|
let div;
|
||
|
let form;
|
||
|
let p0;
|
||
|
let t1;
|
||
|
let p1;
|
||
|
let t3;
|
||
|
let ul;
|
||
|
let t4;
|
||
|
let p2;
|
||
|
let t6;
|
||
|
let button0;
|
||
|
let t8;
|
||
|
let button1;
|
||
|
let mounted;
|
||
|
let dispose;
|
||
|
let each_value = ensure_array_like([.../*props*/
|
||
|
ctx[0]]);
|
||
|
let each_blocks = [];
|
||
|
for (let i = 0; i < each_value.length; i += 1) {
|
||
|
each_blocks[i] = create_each_block3(get_each_context3(ctx, each_value, i));
|
||
|
}
|
||
|
return {
|
||
|
c() {
|
||
|
div = element("div");
|
||
|
form = element("form");
|
||
|
p0 = element("p");
|
||
|
p0.textContent = `${/*msg*/
|
||
|
ctx[4]}`;
|
||
|
t1 = space();
|
||
|
p1 = element("p");
|
||
|
p1.textContent = "The following props will be added:";
|
||
|
t3 = space();
|
||
|
ul = element("ul");
|
||
|
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
|
each_blocks[i].c();
|
||
|
}
|
||
|
t4 = space();
|
||
|
p2 = element("p");
|
||
|
p2.textContent = "Are you sure you wish to proceed?";
|
||
|
t6 = space();
|
||
|
button0 = element("button");
|
||
|
button0.textContent = "Confirm";
|
||
|
t8 = space();
|
||
|
button1 = element("button");
|
||
|
button1.textContent = "Cancel";
|
||
|
attr(p0, "class", "msg svelte-135liin");
|
||
|
attr(button0, "class", "mod-warning");
|
||
|
attr(button0, "type", "submit");
|
||
|
},
|
||
|
m(target, anchor) {
|
||
|
insert(target, div, anchor);
|
||
|
append(div, form);
|
||
|
append(form, p0);
|
||
|
append(form, t1);
|
||
|
append(form, p1);
|
||
|
append(form, t3);
|
||
|
append(form, ul);
|
||
|
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
|
if (each_blocks[i]) {
|
||
|
each_blocks[i].m(ul, null);
|
||
|
}
|
||
|
}
|
||
|
append(form, t4);
|
||
|
append(form, p2);
|
||
|
append(form, t6);
|
||
|
append(form, button0);
|
||
|
append(form, t8);
|
||
|
append(form, button1);
|
||
|
ctx[6](button1);
|
||
|
if (!mounted) {
|
||
|
dispose = [
|
||
|
listen(button1, "click", function() {
|
||
|
if (is_function(
|
||
|
/*cancel*/
|
||
|
ctx[2]
|
||
|
))
|
||
|
ctx[2].apply(this, arguments);
|
||
|
}),
|
||
|
listen(form, "submit", prevent_default(function() {
|
||
|
if (is_function(
|
||
|
/*submission*/
|
||
|
ctx[1]
|
||
|
))
|
||
|
ctx[1].apply(this, arguments);
|
||
|
}))
|
||
|
];
|
||
|
mounted = true;
|
||
|
}
|
||
|
},
|
||
|
p(new_ctx, [dirty]) {
|
||
|
ctx = new_ctx;
|
||
|
if (dirty & /*props*/
|
||
|
1) {
|
||
|
each_value = ensure_array_like([.../*props*/
|
||
|
ctx[0]]);
|
||
|
let i;
|
||
|
for (i = 0; i < each_value.length; i += 1) {
|
||
|
const child_ctx = get_each_context3(ctx, each_value, i);
|
||
|
if (each_blocks[i]) {
|
||
|
each_blocks[i].p(child_ctx, dirty);
|
||
|
} else {
|
||
|
each_blocks[i] = create_each_block3(child_ctx);
|
||
|
each_blocks[i].c();
|
||
|
each_blocks[i].m(ul, null);
|
||
|
}
|
||
|
}
|
||
|
for (; i < each_blocks.length; i += 1) {
|
||
|
each_blocks[i].d(1);
|
||
|
}
|
||
|
each_blocks.length = each_value.length;
|
||
|
}
|
||
|
},
|
||
|
i: noop,
|
||
|
o: noop,
|
||
|
d(detaching) {
|
||
|
if (detaching) {
|
||
|
detach(div);
|
||
|
}
|
||
|
destroy_each(each_blocks, detaching);
|
||
|
ctx[6](null);
|
||
|
mounted = false;
|
||
|
run_all(dispose);
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
function instance3($$self, $$props, $$invalidate) {
|
||
|
let { props } = $$props;
|
||
|
let { overwrite = true } = $$props;
|
||
|
let { submission } = $$props;
|
||
|
let { cancel } = $$props;
|
||
|
let btnCancel;
|
||
|
const msg = overwrite ? "Any pre-existing text props will have their values overwritten." : "Any pre-existing text props will have their values be appended to.";
|
||
|
onMount(() => {
|
||
|
btnCancel.focus();
|
||
|
});
|
||
|
function button1_binding($$value) {
|
||
|
binding_callbacks[$$value ? "unshift" : "push"](() => {
|
||
|
btnCancel = $$value;
|
||
|
$$invalidate(3, btnCancel);
|
||
|
});
|
||
|
}
|
||
|
$$self.$$set = ($$props2) => {
|
||
|
if ("props" in $$props2)
|
||
|
$$invalidate(0, props = $$props2.props);
|
||
|
if ("overwrite" in $$props2)
|
||
|
$$invalidate(5, overwrite = $$props2.overwrite);
|
||
|
if ("submission" in $$props2)
|
||
|
$$invalidate(1, submission = $$props2.submission);
|
||
|
if ("cancel" in $$props2)
|
||
|
$$invalidate(2, cancel = $$props2.cancel);
|
||
|
};
|
||
|
return [props, submission, cancel, btnCancel, msg, overwrite, button1_binding];
|
||
|
}
|
||
|
var AddConfirmForm = class extends SvelteComponent {
|
||
|
constructor(options) {
|
||
|
super();
|
||
|
init(
|
||
|
this,
|
||
|
options,
|
||
|
instance3,
|
||
|
create_fragment3,
|
||
|
safe_not_equal,
|
||
|
{
|
||
|
props: 0,
|
||
|
overwrite: 5,
|
||
|
submission: 1,
|
||
|
cancel: 2
|
||
|
},
|
||
|
add_css3
|
||
|
);
|
||
|
}
|
||
|
};
|
||
|
var AddConfirmForm_default = AddConfirmForm;
|
||
|
|
||
|
// src/AddConfirmModal.ts
|
||
|
var AddConfirmModal = class extends import_obsidian.Modal {
|
||
|
constructor(app, props, overwrite, submission) {
|
||
|
super(app);
|
||
|
this.props = props;
|
||
|
this.overwrite = overwrite;
|
||
|
this.submission = submission;
|
||
|
}
|
||
|
onSubmit() {
|
||
|
this.submission(true);
|
||
|
this.close();
|
||
|
}
|
||
|
onCancel() {
|
||
|
this.submission(false);
|
||
|
this.close();
|
||
|
}
|
||
|
onOpen() {
|
||
|
this.titleEl.createEl("h2", { text: "Add Properties" });
|
||
|
this.component = new AddConfirmForm_default({
|
||
|
target: this.contentEl,
|
||
|
props: {
|
||
|
props: this.props,
|
||
|
overwrite: this.overwrite,
|
||
|
submission: this.onSubmit.bind(this),
|
||
|
cancel: this.onCancel.bind(this)
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
};
|
||
|
|
||
|
// src/AddPropModal.ts
|
||
|
var PropModal = class extends import_obsidian2.Modal {
|
||
|
constructor(app, submission, overwrite, delimiter, changeBool) {
|
||
|
super(app);
|
||
|
this.submission = submission;
|
||
|
this.overwrite = overwrite;
|
||
|
this.delimiter = delimiter;
|
||
|
this.changeBool = changeBool;
|
||
|
}
|
||
|
//Run form submission if user clicks confirm.
|
||
|
onConfirm(bool) {
|
||
|
if (bool) {
|
||
|
this.submission(this.props);
|
||
|
this.close();
|
||
|
}
|
||
|
}
|
||
|
updateBool(bool) {
|
||
|
this.overwrite = bool;
|
||
|
this.changeBool(bool);
|
||
|
}
|
||
|
//Pull up confirmation form when user submits base form.
|
||
|
onSubmit(props) {
|
||
|
this.props = props;
|
||
|
new AddConfirmModal(
|
||
|
this.app,
|
||
|
this.props,
|
||
|
this.overwrite,
|
||
|
this.onConfirm.bind(this)
|
||
|
).open();
|
||
|
}
|
||
|
onOpen() {
|
||
|
this.titleEl.createEl("h2", { text: "Add Properties" });
|
||
|
this.component = new AddPropForm_default({
|
||
|
target: this.contentEl,
|
||
|
props: {
|
||
|
submission: this.onSubmit.bind(this),
|
||
|
overwrite: this.overwrite,
|
||
|
delimiter: this.delimiter,
|
||
|
changeBool: this.updateBool.bind(this)
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
};
|
||
|
|
||
|
// src/SettingTab.ts
|
||
|
var import_obsidian3 = require("obsidian");
|
||
|
var SettingTab = class extends import_obsidian3.PluginSettingTab {
|
||
|
constructor(app, plugin) {
|
||
|
super(app, plugin);
|
||
|
this.plugin = plugin;
|
||
|
}
|
||
|
display() {
|
||
|
let { containerEl } = this;
|
||
|
containerEl.empty();
|
||
|
new import_obsidian3.Setting(containerEl).setName("Overwrite existing text").setDesc(
|
||
|
"When adding a property with a name that already exists, the text will overwrite the prop's existing value. If left disabled, the new value will be appended to the old as a List."
|
||
|
).addToggle((toggle) => {
|
||
|
toggle.setValue(this.plugin.settings.overwrite);
|
||
|
toggle.onChange(async (value) => {
|
||
|
this.plugin.settings.overwrite = value;
|
||
|
await this.plugin.saveSettings();
|
||
|
});
|
||
|
});
|
||
|
new import_obsidian3.Setting(containerEl).setName("Recursive Iteration").setDesc(
|
||
|
"When toggled on, while looping through all files in a folder, you will also loop through any sub-folders."
|
||
|
).addToggle((toggle) => {
|
||
|
toggle.setValue(this.plugin.settings.recursive);
|
||
|
toggle.onChange(async (value) => {
|
||
|
this.plugin.settings.recursive = value;
|
||
|
await this.plugin.saveSettings();
|
||
|
});
|
||
|
});
|
||
|
new import_obsidian3.Setting(containerEl).setName("List Delimiter").setDesc(
|
||
|
"Set delimiter to use when creating a list. Commas(,) are used by default."
|
||
|
).addText((text2) => {
|
||
|
text2.setValue(this.plugin.settings.delimiter);
|
||
|
text2.onChange(async (value) => {
|
||
|
if (value.length > 1) {
|
||
|
text2.setValue(value[0]);
|
||
|
new import_obsidian3.Notice("Delimiter must be a single character.");
|
||
|
return;
|
||
|
}
|
||
|
this.plugin.settings.delimiter = value;
|
||
|
await this.plugin.saveSettings();
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
};
|
||
|
|
||
|
// src/RemoveModal.ts
|
||
|
var import_obsidian5 = require("obsidian");
|
||
|
|
||
|
// src/RemovePropForm.svelte
|
||
|
function add_css4(target) {
|
||
|
append_styles(target, "svelte-1264666", ".name-container.svelte-1264666{display:flex;flex-direction:column;gap:5px;margin-top:10px;margin-bottom:20px}.alert-container.svelte-1264666{display:flex;flex-direction:column;align-items:center;justify-content:center;margin-bottom:10px;background-color:red;font-weight:bold}.button-container.svelte-1264666{display:flex;flex-direction:row;justify-content:space-between}.hidden.svelte-1264666{display:none}");
|
||
|
}
|
||
|
function get_each_context4(ctx, list, i) {
|
||
|
const child_ctx = ctx.slice();
|
||
|
child_ctx[14] = list[i];
|
||
|
child_ctx[15] = list;
|
||
|
child_ctx[16] = i;
|
||
|
return child_ctx;
|
||
|
}
|
||
|
function create_each_block4(ctx) {
|
||
|
let label;
|
||
|
let input_1;
|
||
|
let t0;
|
||
|
let t1_value = (
|
||
|
/*input*/
|
||
|
ctx[14].name + ""
|
||
|
);
|
||
|
let t1;
|
||
|
let t2;
|
||
|
let mounted;
|
||
|
let dispose;
|
||
|
function input_1_change_handler() {
|
||
|
ctx[12].call(
|
||
|
input_1,
|
||
|
/*each_value*/
|
||
|
ctx[15],
|
||
|
/*input_index*/
|
||
|
ctx[16]
|
||
|
);
|
||
|
}
|
||
|
return {
|
||
|
c() {
|
||
|
label = element("label");
|
||
|
input_1 = element("input");
|
||
|
t0 = space();
|
||
|
t1 = text(t1_value);
|
||
|
t2 = space();
|
||
|
attr(input_1, "type", "checkbox");
|
||
|
},
|
||
|
m(target, anchor) {
|
||
|
insert(target, label, anchor);
|
||
|
append(label, input_1);
|
||
|
set_input_value(
|
||
|
input_1,
|
||
|
/*input*/
|
||
|
ctx[14].name
|
||
|
);
|
||
|
input_1.checked = /*input*/
|
||
|
ctx[14].isChecked;
|
||
|
append(label, t0);
|
||
|
append(label, t1);
|
||
|
append(label, t2);
|
||
|
if (!mounted) {
|
||
|
dispose = [
|
||
|
listen(input_1, "change", input_1_change_handler),
|
||
|
listen(
|
||
|
input_1,
|
||
|
"change",
|
||
|
/*change_handler*/
|
||
|
ctx[13]
|
||
|
)
|
||
|
];
|
||
|
mounted = true;
|
||
|
}
|
||
|
},
|
||
|
p(new_ctx, dirty) {
|
||
|
ctx = new_ctx;
|
||
|
if (dirty & /*inputs*/
|
||
|
8) {
|
||
|
set_input_value(
|
||
|
input_1,
|
||
|
/*input*/
|
||
|
ctx[14].name
|
||
|
);
|
||
|
}
|
||
|
if (dirty & /*inputs*/
|
||
|
8) {
|
||
|
input_1.checked = /*input*/
|
||
|
ctx[14].isChecked;
|
||
|
}
|
||
|
if (dirty & /*inputs*/
|
||
|
8 && t1_value !== (t1_value = /*input*/
|
||
|
ctx[14].name + ""))
|
||
|
set_data(t1, t1_value);
|
||
|
},
|
||
|
d(detaching) {
|
||
|
if (detaching) {
|
||
|
detach(label);
|
||
|
}
|
||
|
mounted = false;
|
||
|
run_all(dispose);
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
function create_fragment4(ctx) {
|
||
|
let div5;
|
||
|
let div2;
|
||
|
let div0;
|
||
|
let t1;
|
||
|
let div1;
|
||
|
let t2;
|
||
|
let t3;
|
||
|
let p;
|
||
|
let t5;
|
||
|
let form;
|
||
|
let div3;
|
||
|
let t6;
|
||
|
let div4;
|
||
|
let button0;
|
||
|
let t8;
|
||
|
let button1;
|
||
|
let t9_value = (
|
||
|
/*isMaxChecked*/
|
||
|
ctx[0] ? "Uncheck All" : "Check All"
|
||
|
);
|
||
|
let t9;
|
||
|
let mounted;
|
||
|
let dispose;
|
||
|
let each_value = ensure_array_like(
|
||
|
/*inputs*/
|
||
|
ctx[3]
|
||
|
);
|
||
|
let each_blocks = [];
|
||
|
for (let i = 0; i < each_value.length; i += 1) {
|
||
|
each_blocks[i] = create_each_block4(get_each_context4(ctx, each_value, i));
|
||
|
}
|
||
|
return {
|
||
|
c() {
|
||
|
div5 = element("div");
|
||
|
div2 = element("div");
|
||
|
div0 = element("div");
|
||
|
div0.textContent = "ERROR";
|
||
|
t1 = space();
|
||
|
div1 = element("div");
|
||
|
t2 = text(
|
||
|
/*alertText*/
|
||
|
ctx[2]
|
||
|
);
|
||
|
t3 = space();
|
||
|
p = element("p");
|
||
|
p.textContent = "Select the properties you wish to remove from the file selection.";
|
||
|
t5 = space();
|
||
|
form = element("form");
|
||
|
div3 = element("div");
|
||
|
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
|
each_blocks[i].c();
|
||
|
}
|
||
|
t6 = space();
|
||
|
div4 = element("div");
|
||
|
button0 = element("button");
|
||
|
button0.textContent = "Confirm";
|
||
|
t8 = space();
|
||
|
button1 = element("button");
|
||
|
t9 = text(t9_value);
|
||
|
attr(div1, "id", "alert-text");
|
||
|
attr(div2, "id", "alert-container");
|
||
|
attr(div2, "class", "alert-container hidden svelte-1264666");
|
||
|
attr(div3, "class", "name-container svelte-1264666");
|
||
|
attr(button0, "type", "submit");
|
||
|
attr(div4, "class", "button-container svelte-1264666");
|
||
|
},
|
||
|
m(target, anchor) {
|
||
|
insert(target, div5, anchor);
|
||
|
append(div5, div2);
|
||
|
append(div2, div0);
|
||
|
append(div2, t1);
|
||
|
append(div2, div1);
|
||
|
append(div1, t2);
|
||
|
ctx[11](div2);
|
||
|
append(div5, t3);
|
||
|
append(div5, p);
|
||
|
append(div5, t5);
|
||
|
append(div5, form);
|
||
|
append(form, div3);
|
||
|
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
|
if (each_blocks[i]) {
|
||
|
each_blocks[i].m(div3, null);
|
||
|
}
|
||
|
}
|
||
|
append(form, t6);
|
||
|
append(form, div4);
|
||
|
append(div4, button0);
|
||
|
append(div4, t8);
|
||
|
append(div4, button1);
|
||
|
append(button1, t9);
|
||
|
if (!mounted) {
|
||
|
dispose = [
|
||
|
listen(
|
||
|
button0,
|
||
|
"click",
|
||
|
/*onSubmit*/
|
||
|
ctx[6]
|
||
|
),
|
||
|
listen(
|
||
|
button1,
|
||
|
"click",
|
||
|
/*toggleAll*/
|
||
|
ctx[5]
|
||
|
),
|
||
|
listen(form, "submit", prevent_default(
|
||
|
/*submit_handler*/
|
||
|
ctx[10]
|
||
|
))
|
||
|
];
|
||
|
mounted = true;
|
||
|
}
|
||
|
},
|
||
|
p(ctx2, [dirty]) {
|
||
|
if (dirty & /*alertText*/
|
||
|
4)
|
||
|
set_data(
|
||
|
t2,
|
||
|
/*alertText*/
|
||
|
ctx2[2]
|
||
|
);
|
||
|
if (dirty & /*inputs, onCheckboxChange*/
|
||
|
24) {
|
||
|
each_value = ensure_array_like(
|
||
|
/*inputs*/
|
||
|
ctx2[3]
|
||
|
);
|
||
|
let i;
|
||
|
for (i = 0; i < each_value.length; i += 1) {
|
||
|
const child_ctx = get_each_context4(ctx2, each_value, i);
|
||
|
if (each_blocks[i]) {
|
||
|
each_blocks[i].p(child_ctx, dirty);
|
||
|
} else {
|
||
|
each_blocks[i] = create_each_block4(child_ctx);
|
||
|
each_blocks[i].c();
|
||
|
each_blocks[i].m(div3, null);
|
||
|
}
|
||
|
}
|
||
|
for (; i < each_blocks.length; i += 1) {
|
||
|
each_blocks[i].d(1);
|
||
|
}
|
||
|
each_blocks.length = each_value.length;
|
||
|
}
|
||
|
if (dirty & /*isMaxChecked*/
|
||
|
1 && t9_value !== (t9_value = /*isMaxChecked*/
|
||
|
ctx2[0] ? "Uncheck All" : "Check All"))
|
||
|
set_data(t9, t9_value);
|
||
|
},
|
||
|
i: noop,
|
||
|
o: noop,
|
||
|
d(detaching) {
|
||
|
if (detaching) {
|
||
|
detach(div5);
|
||
|
}
|
||
|
ctx[11](null);
|
||
|
destroy_each(each_blocks, detaching);
|
||
|
mounted = false;
|
||
|
run_all(dispose);
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
function instance4($$self, $$props, $$invalidate) {
|
||
|
let isMaxChecked;
|
||
|
let { names = [] } = $$props;
|
||
|
let { submission } = $$props;
|
||
|
let errorEl;
|
||
|
let alertText = ".";
|
||
|
let checkCount = 0;
|
||
|
let inputs = [];
|
||
|
for (let name of names) {
|
||
|
inputs.push({ name, isChecked: false });
|
||
|
}
|
||
|
names.sort();
|
||
|
function onCheckboxChange(event) {
|
||
|
let checked = event.target.checked;
|
||
|
checked ? $$invalidate(9, checkCount++, checkCount) : $$invalidate(9, checkCount--, checkCount);
|
||
|
}
|
||
|
function toggleAll() {
|
||
|
if (isMaxChecked) {
|
||
|
$$invalidate(3, inputs = inputs.map((input) => Object.assign(Object.assign({}, input), { isChecked: false })));
|
||
|
$$invalidate(9, checkCount = 0);
|
||
|
} else {
|
||
|
$$invalidate(3, inputs = inputs.map((input) => Object.assign(Object.assign({}, input), { isChecked: true })));
|
||
|
$$invalidate(9, checkCount = names.length);
|
||
|
}
|
||
|
}
|
||
|
function onSubmit() {
|
||
|
if (checkCount === 0) {
|
||
|
$$invalidate(2, alertText = "Please select at least one property to remove.");
|
||
|
errorEl.classList.remove("hidden");
|
||
|
return;
|
||
|
}
|
||
|
let propNames = inputs.filter((input) => input.isChecked).map((input) => input.name);
|
||
|
submission(propNames);
|
||
|
}
|
||
|
function submit_handler(event) {
|
||
|
bubble.call(this, $$self, event);
|
||
|
}
|
||
|
function div2_binding($$value) {
|
||
|
binding_callbacks[$$value ? "unshift" : "push"](() => {
|
||
|
errorEl = $$value;
|
||
|
$$invalidate(1, errorEl);
|
||
|
});
|
||
|
}
|
||
|
function input_1_change_handler(each_value, input_index) {
|
||
|
each_value[input_index].name = this.value;
|
||
|
each_value[input_index].isChecked = this.checked;
|
||
|
$$invalidate(3, inputs);
|
||
|
}
|
||
|
const change_handler = (event) => onCheckboxChange(event);
|
||
|
$$self.$$set = ($$props2) => {
|
||
|
if ("names" in $$props2)
|
||
|
$$invalidate(7, names = $$props2.names);
|
||
|
if ("submission" in $$props2)
|
||
|
$$invalidate(8, submission = $$props2.submission);
|
||
|
};
|
||
|
$$self.$$.update = () => {
|
||
|
if ($$self.$$.dirty & /*checkCount, names*/
|
||
|
640) {
|
||
|
$:
|
||
|
$$invalidate(0, isMaxChecked = checkCount >= names.length);
|
||
|
}
|
||
|
if ($$self.$$.dirty & /*isMaxChecked*/
|
||
|
1) {
|
||
|
$:
|
||
|
console.log(isMaxChecked);
|
||
|
}
|
||
|
};
|
||
|
return [
|
||
|
isMaxChecked,
|
||
|
errorEl,
|
||
|
alertText,
|
||
|
inputs,
|
||
|
onCheckboxChange,
|
||
|
toggleAll,
|
||
|
onSubmit,
|
||
|
names,
|
||
|
submission,
|
||
|
checkCount,
|
||
|
submit_handler,
|
||
|
div2_binding,
|
||
|
input_1_change_handler,
|
||
|
change_handler
|
||
|
];
|
||
|
}
|
||
|
var RemovePropForm = class extends SvelteComponent {
|
||
|
constructor(options) {
|
||
|
super();
|
||
|
init(this, options, instance4, create_fragment4, safe_not_equal, { names: 7, submission: 8 }, add_css4);
|
||
|
}
|
||
|
};
|
||
|
var RemovePropForm_default = RemovePropForm;
|
||
|
|
||
|
// src/RemoveConfirmModal.ts
|
||
|
var import_obsidian4 = require("obsidian");
|
||
|
|
||
|
// src/RemoveConfirmForm.svelte
|
||
|
function get_each_context5(ctx, list, i) {
|
||
|
const child_ctx = ctx.slice();
|
||
|
child_ctx[6] = list[i];
|
||
|
return child_ctx;
|
||
|
}
|
||
|
function create_each_block5(ctx) {
|
||
|
let li;
|
||
|
let t0_value = (
|
||
|
/*name*/
|
||
|
ctx[6] + ""
|
||
|
);
|
||
|
let t0;
|
||
|
let t1;
|
||
|
return {
|
||
|
c() {
|
||
|
li = element("li");
|
||
|
t0 = text(t0_value);
|
||
|
t1 = space();
|
||
|
},
|
||
|
m(target, anchor) {
|
||
|
insert(target, li, anchor);
|
||
|
append(li, t0);
|
||
|
append(li, t1);
|
||
|
},
|
||
|
p(ctx2, dirty) {
|
||
|
if (dirty & /*names*/
|
||
|
1 && t0_value !== (t0_value = /*name*/
|
||
|
ctx2[6] + ""))
|
||
|
set_data(t0, t0_value);
|
||
|
},
|
||
|
d(detaching) {
|
||
|
if (detaching) {
|
||
|
detach(li);
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
function create_fragment5(ctx) {
|
||
|
let div;
|
||
|
let form;
|
||
|
let p0;
|
||
|
let t3;
|
||
|
let ul;
|
||
|
let t4;
|
||
|
let p1;
|
||
|
let t6;
|
||
|
let button0;
|
||
|
let t8;
|
||
|
let button1;
|
||
|
let mounted;
|
||
|
let dispose;
|
||
|
let each_value = ensure_array_like(
|
||
|
/*names*/
|
||
|
ctx[0]
|
||
|
);
|
||
|
let each_blocks = [];
|
||
|
for (let i = 0; i < each_value.length; i += 1) {
|
||
|
each_blocks[i] = create_each_block5(get_each_context5(ctx, each_value, i));
|
||
|
}
|
||
|
return {
|
||
|
c() {
|
||
|
div = element("div");
|
||
|
form = element("form");
|
||
|
p0 = element("p");
|
||
|
p0.textContent = `The following ${/*word*/
|
||
|
ctx[4]} will be removed:`;
|
||
|
t3 = space();
|
||
|
ul = element("ul");
|
||
|
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
|
each_blocks[i].c();
|
||
|
}
|
||
|
t4 = space();
|
||
|
p1 = element("p");
|
||
|
p1.textContent = "Are you sure you wish to proceed?";
|
||
|
t6 = space();
|
||
|
button0 = element("button");
|
||
|
button0.textContent = "Delete";
|
||
|
t8 = space();
|
||
|
button1 = element("button");
|
||
|
button1.textContent = "Cancel";
|
||
|
attr(button0, "class", "mod-warning");
|
||
|
attr(button0, "type", "submit");
|
||
|
},
|
||
|
m(target, anchor) {
|
||
|
insert(target, div, anchor);
|
||
|
append(div, form);
|
||
|
append(form, p0);
|
||
|
append(form, t3);
|
||
|
append(form, ul);
|
||
|
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
|
if (each_blocks[i]) {
|
||
|
each_blocks[i].m(ul, null);
|
||
|
}
|
||
|
}
|
||
|
append(form, t4);
|
||
|
append(form, p1);
|
||
|
append(form, t6);
|
||
|
append(form, button0);
|
||
|
append(form, t8);
|
||
|
append(form, button1);
|
||
|
ctx[5](button1);
|
||
|
if (!mounted) {
|
||
|
dispose = [
|
||
|
listen(button1, "click", function() {
|
||
|
if (is_function(
|
||
|
/*cancel*/
|
||
|
ctx[2]
|
||
|
))
|
||
|
ctx[2].apply(this, arguments);
|
||
|
}),
|
||
|
listen(form, "submit", prevent_default(function() {
|
||
|
if (is_function(
|
||
|
/*submission*/
|
||
|
ctx[1]
|
||
|
))
|
||
|
ctx[1].apply(this, arguments);
|
||
|
}))
|
||
|
];
|
||
|
mounted = true;
|
||
|
}
|
||
|
},
|
||
|
p(new_ctx, [dirty]) {
|
||
|
ctx = new_ctx;
|
||
|
if (dirty & /*names*/
|
||
|
1) {
|
||
|
each_value = ensure_array_like(
|
||
|
/*names*/
|
||
|
ctx[0]
|
||
|
);
|
||
|
let i;
|
||
|
for (i = 0; i < each_value.length; i += 1) {
|
||
|
const child_ctx = get_each_context5(ctx, each_value, i);
|
||
|
if (each_blocks[i]) {
|
||
|
each_blocks[i].p(child_ctx, dirty);
|
||
|
} else {
|
||
|
each_blocks[i] = create_each_block5(child_ctx);
|
||
|
each_blocks[i].c();
|
||
|
each_blocks[i].m(ul, null);
|
||
|
}
|
||
|
}
|
||
|
for (; i < each_blocks.length; i += 1) {
|
||
|
each_blocks[i].d(1);
|
||
|
}
|
||
|
each_blocks.length = each_value.length;
|
||
|
}
|
||
|
},
|
||
|
i: noop,
|
||
|
o: noop,
|
||
|
d(detaching) {
|
||
|
if (detaching) {
|
||
|
detach(div);
|
||
|
}
|
||
|
destroy_each(each_blocks, detaching);
|
||
|
ctx[5](null);
|
||
|
mounted = false;
|
||
|
run_all(dispose);
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
function instance5($$self, $$props, $$invalidate) {
|
||
|
let { names = ["test", "test2"] } = $$props;
|
||
|
let { submission } = $$props;
|
||
|
let { cancel } = $$props;
|
||
|
let btnCancel;
|
||
|
const word = names.length > 1 ? "properties" : "property";
|
||
|
onMount(() => {
|
||
|
btnCancel.focus();
|
||
|
});
|
||
|
function button1_binding($$value) {
|
||
|
binding_callbacks[$$value ? "unshift" : "push"](() => {
|
||
|
btnCancel = $$value;
|
||
|
$$invalidate(3, btnCancel);
|
||
|
});
|
||
|
}
|
||
|
$$self.$$set = ($$props2) => {
|
||
|
if ("names" in $$props2)
|
||
|
$$invalidate(0, names = $$props2.names);
|
||
|
if ("submission" in $$props2)
|
||
|
$$invalidate(1, submission = $$props2.submission);
|
||
|
if ("cancel" in $$props2)
|
||
|
$$invalidate(2, cancel = $$props2.cancel);
|
||
|
};
|
||
|
return [names, submission, cancel, btnCancel, word, button1_binding];
|
||
|
}
|
||
|
var RemoveConfirmForm = class extends SvelteComponent {
|
||
|
constructor(options) {
|
||
|
super();
|
||
|
init(this, options, instance5, create_fragment5, safe_not_equal, { names: 0, submission: 1, cancel: 2 });
|
||
|
}
|
||
|
};
|
||
|
var RemoveConfirmForm_default = RemoveConfirmForm;
|
||
|
|
||
|
// src/RemoveConfirmModal.ts
|
||
|
var RemoveConfirmModal = class extends import_obsidian4.Modal {
|
||
|
constructor(app, names, submission) {
|
||
|
super(app);
|
||
|
this.names = names;
|
||
|
this.submission = submission;
|
||
|
}
|
||
|
onSubmit() {
|
||
|
this.submission(true);
|
||
|
this.close();
|
||
|
}
|
||
|
onCancel() {
|
||
|
this.submission(false);
|
||
|
this.close();
|
||
|
}
|
||
|
onOpen() {
|
||
|
if (!this.names || this.names.length === 0) {
|
||
|
new import_obsidian4.Notice("Please check at least one property to remove.");
|
||
|
this.close();
|
||
|
}
|
||
|
this.titleEl.createEl("h2", { text: "Remove Properties" });
|
||
|
this.component = new RemoveConfirmForm_default({
|
||
|
target: this.contentEl,
|
||
|
props: {
|
||
|
names: this.names,
|
||
|
submission: this.onSubmit.bind(this),
|
||
|
cancel: this.onCancel.bind(this)
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
};
|
||
|
|
||
|
// src/RemoveModal.ts
|
||
|
var RemoveModal = class extends import_obsidian5.Modal {
|
||
|
constructor(app, names, submission) {
|
||
|
if (!names || names.length === 0) {
|
||
|
new import_obsidian5.Notice("No properties to remove");
|
||
|
return;
|
||
|
}
|
||
|
super(app);
|
||
|
this.names = names;
|
||
|
this.submission = submission;
|
||
|
}
|
||
|
onConfirm(bool) {
|
||
|
if (bool) {
|
||
|
this.submission(this.props);
|
||
|
this.close();
|
||
|
}
|
||
|
}
|
||
|
onSubmit(props) {
|
||
|
this.props = props;
|
||
|
new RemoveConfirmModal(
|
||
|
this.app,
|
||
|
this.props,
|
||
|
this.onConfirm.bind(this)
|
||
|
).open();
|
||
|
}
|
||
|
onOpen() {
|
||
|
this.titleEl.createEl("h2", { text: "Remove Properties" });
|
||
|
this.component = new RemovePropForm_default({
|
||
|
target: this.contentEl,
|
||
|
props: {
|
||
|
names: this.names,
|
||
|
submission: this.onSubmit.bind(this)
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
};
|
||
|
|
||
|
// src/frontmatter.ts
|
||
|
function addProperties(app, file, props, overwrite) {
|
||
|
let propCache = app.metadataCache.getAllPropertyInfos();
|
||
|
app.fileManager.processFrontMatter(file, (frontmatter) => {
|
||
|
for (const [key, value] of props) {
|
||
|
if (!frontmatter[key] || overwrite) {
|
||
|
frontmatter[key] = value.data;
|
||
|
continue;
|
||
|
}
|
||
|
let type1 = value.type;
|
||
|
let type2 = propCache[key.toLowerCase()].type;
|
||
|
if (canBeAppended(type1, type2)) {
|
||
|
if (frontmatter[key] === value.data)
|
||
|
continue;
|
||
|
let arr = mergeIntoArrays(frontmatter[key], value.data);
|
||
|
frontmatter[key] = arr;
|
||
|
continue;
|
||
|
} else {
|
||
|
frontmatter[key] = value.data;
|
||
|
continue;
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
async function addPropToSet(app, set, file) {
|
||
|
await app.fileManager.processFrontMatter(file, (frontmatter) => {
|
||
|
for (const key in frontmatter) {
|
||
|
set.add(key);
|
||
|
}
|
||
|
});
|
||
|
return set;
|
||
|
}
|
||
|
function removeProperties(app, file, props) {
|
||
|
app.fileManager.processFrontMatter(file, (frontmatter) => {
|
||
|
for (const prop of props) {
|
||
|
frontmatter[prop] = void 0;
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
function canBeAppended(str1, str2) {
|
||
|
let arr = ["number", "date", "datetime", "checkbox"];
|
||
|
if (arr.includes(str1) || arr.includes(str2))
|
||
|
return false;
|
||
|
return true;
|
||
|
}
|
||
|
function mergeIntoArrays(...args) {
|
||
|
const arrays = args.map((arg) => Array.isArray(arg) ? arg : [arg]);
|
||
|
const flattened = arrays.flat();
|
||
|
const unique = [...new Set(flattened)];
|
||
|
return unique;
|
||
|
}
|
||
|
|
||
|
// src/main.ts
|
||
|
var defaultSettings = {
|
||
|
overwrite: false,
|
||
|
recursive: true,
|
||
|
delimiter: ","
|
||
|
};
|
||
|
var MultiPropPlugin = class extends import_obsidian6.Plugin {
|
||
|
async loadSettings() {
|
||
|
this.settings = Object.assign({}, defaultSettings, await this.loadData());
|
||
|
}
|
||
|
async saveSettings() {
|
||
|
await this.saveData(this.settings);
|
||
|
}
|
||
|
async changeOverwrite(bool) {
|
||
|
this.settings.overwrite = bool;
|
||
|
await this.saveSettings();
|
||
|
}
|
||
|
async onload() {
|
||
|
await this.loadSettings();
|
||
|
console.log(this.app.metadataCache);
|
||
|
this.addSettingTab(new SettingTab(this.app, this));
|
||
|
this.registerEvent(
|
||
|
this.app.workspace.on("file-menu", (menu, folder) => {
|
||
|
if (folder instanceof import_obsidian6.TFolder) {
|
||
|
menu.addItem((item) => {
|
||
|
item.setIcon("archive").setTitle("Add props to folder's notes").onClick(() => this.createPropModal(folder));
|
||
|
});
|
||
|
}
|
||
|
})
|
||
|
);
|
||
|
this.registerEvent(
|
||
|
this.app.workspace.on("file-menu", (menu, folder) => {
|
||
|
if (folder instanceof import_obsidian6.TFolder) {
|
||
|
menu.addItem((item) => {
|
||
|
item.setIcon("archive").setTitle("Remove props from folder's notes").onClick(async () => this.createRemoveModal(folder));
|
||
|
});
|
||
|
}
|
||
|
})
|
||
|
);
|
||
|
this.registerEvent(
|
||
|
this.app.workspace.on("files-menu", (menu, files) => {
|
||
|
menu.addItem((item) => {
|
||
|
item.setIcon("archive").setTitle("Add props to selected files").onClick(() => this.createPropModal(files));
|
||
|
});
|
||
|
})
|
||
|
);
|
||
|
this.registerEvent(
|
||
|
this.app.workspace.on("files-menu", (menu, files) => {
|
||
|
menu.addItem((item) => {
|
||
|
item.setIcon("archive").setTitle("Remove props from selected files").onClick(async () => this.createRemoveModal(files));
|
||
|
});
|
||
|
})
|
||
|
);
|
||
|
this.registerEvent(
|
||
|
this.app.workspace.on("search:results-menu", (menu, leaf) => {
|
||
|
menu.addItem((item) => {
|
||
|
item.setIcon("archive").setTitle("Add props to search results").onClick(() => {
|
||
|
let files = this.getFilesFromSearch(leaf);
|
||
|
if (!files.length) {
|
||
|
new import_obsidian6.Notice("No files to add properties to.", 4e3);
|
||
|
return;
|
||
|
}
|
||
|
this.createPropModal(files);
|
||
|
});
|
||
|
});
|
||
|
})
|
||
|
);
|
||
|
this.registerEvent(
|
||
|
this.app.workspace.on("search:results-menu", (menu, leaf) => {
|
||
|
menu.addItem((item) => {
|
||
|
item.setIcon("archive").setTitle("Remove props from search results").onClick(async () => {
|
||
|
let files = this.getFilesFromSearch(leaf);
|
||
|
if (!files.length) {
|
||
|
new import_obsidian6.Notice("No files to remove properties from.", 4e3);
|
||
|
return;
|
||
|
}
|
||
|
this.createRemoveModal(files);
|
||
|
});
|
||
|
});
|
||
|
})
|
||
|
);
|
||
|
}
|
||
|
async getPropsFromFolder(folder, names) {
|
||
|
for (let obj of folder.children) {
|
||
|
if (obj instanceof import_obsidian6.TFile && obj.extension === "md") {
|
||
|
names = await addPropToSet(this.app, names, obj);
|
||
|
}
|
||
|
if (obj instanceof import_obsidian6.TFolder) {
|
||
|
if (this.settings.recursive) {
|
||
|
this.getPropsFromFolder(obj, names);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return [...names];
|
||
|
}
|
||
|
async getPropsFromFiles(files, names) {
|
||
|
for (let file of files) {
|
||
|
if (file instanceof import_obsidian6.TFile && file.extension === "md") {
|
||
|
names = await addPropToSet(this.app, names, file);
|
||
|
}
|
||
|
}
|
||
|
return [...names];
|
||
|
}
|
||
|
/** Iterates through all files in a folder and runs callback on each file. */
|
||
|
searchFolders(folder, callback) {
|
||
|
for (let obj of folder.children) {
|
||
|
if (obj instanceof import_obsidian6.TFolder) {
|
||
|
if (this.settings.recursive) {
|
||
|
this.searchFolders(obj, callback);
|
||
|
}
|
||
|
}
|
||
|
if (obj instanceof import_obsidian6.TFile && obj.extension === "md") {
|
||
|
callback(obj);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
/** Iterates through selection of files and runs a given callback function on that file. */
|
||
|
searchFiles(files, callback) {
|
||
|
for (let file of files) {
|
||
|
if (file instanceof import_obsidian6.TFile && file.extension === "md") {
|
||
|
callback(file);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
/** Get all files from a search result. */
|
||
|
getFilesFromSearch(leaf) {
|
||
|
let files = [];
|
||
|
leaf.dom.vChildren.children.forEach((e) => {
|
||
|
files.push(e.file);
|
||
|
});
|
||
|
return files;
|
||
|
}
|
||
|
/** Create modal for removing properties.
|
||
|
* Will call a different function depending on whether files or a folder is used. */
|
||
|
createPropModal(iterable) {
|
||
|
let iterateFunc;
|
||
|
if (iterable instanceof import_obsidian6.TFolder) {
|
||
|
iterateFunc = (props) => this.searchFolders(iterable, this.addPropsCallback(props));
|
||
|
} else {
|
||
|
iterateFunc = (props) => this.searchFiles(iterable, this.addPropsCallback(props));
|
||
|
}
|
||
|
new PropModal(
|
||
|
this.app,
|
||
|
iterateFunc,
|
||
|
this.settings.overwrite,
|
||
|
this.settings.delimiter,
|
||
|
this.changeOverwrite.bind(this)
|
||
|
).open();
|
||
|
}
|
||
|
/** Create modal for removing properties.
|
||
|
* Will call a different function depending on whether files or a folder is used. */
|
||
|
async createRemoveModal(iterable) {
|
||
|
let names;
|
||
|
let iterateFunc;
|
||
|
if (iterable instanceof import_obsidian6.TFolder) {
|
||
|
names = await this.getPropsFromFolder(iterable, /* @__PURE__ */ new Set());
|
||
|
iterateFunc = (props) => this.searchFolders(iterable, this.removePropsCallback(props));
|
||
|
} else {
|
||
|
names = await this.getPropsFromFiles(iterable, /* @__PURE__ */ new Set());
|
||
|
iterateFunc = (props) => this.searchFiles(iterable, this.removePropsCallback(props));
|
||
|
}
|
||
|
if (names.length === 0) {
|
||
|
new import_obsidian6.Notice("No properties to remove");
|
||
|
return;
|
||
|
}
|
||
|
new RemoveModal(this.app, names, iterateFunc).open();
|
||
|
}
|
||
|
/** Callback function to run addProperties inside iterative functions.*/
|
||
|
addPropsCallback(props) {
|
||
|
return (file) => {
|
||
|
addProperties(this.app, file, props, this.settings.overwrite);
|
||
|
};
|
||
|
}
|
||
|
/** Callback function to run removeProperties inside iterative functions. */
|
||
|
removePropsCallback(props) {
|
||
|
return (file) => {
|
||
|
removeProperties(this.app, file, props);
|
||
|
};
|
||
|
}
|
||
|
};
|