TestSvelteStatic / bundle.js
kwabs22
Interval Repeat and Themes, storyline mechanism figured out
f5bd528
raw
history blame
236 kB
(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document);
var app = (function () {
'use strict';
function noop() { }
function add_location(element, file, line, column, char) {
element.__svelte_meta = {
loc: { file, line, column, char }
};
}
function run(fn) {
return fn();
}
function blank_object() {
return 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');
}
let src_url_equal_anchor;
function src_url_equal(element_src, url) {
if (!src_url_equal_anchor) {
src_url_equal_anchor = document.createElement('a');
}
src_url_equal_anchor.href = url;
return element_src === src_url_equal_anchor.href;
}
function is_empty(obj) {
return Object.keys(obj).length === 0;
}
function validate_store(store, name) {
if (store != null && typeof store.subscribe !== 'function') {
throw new Error(`'${name}' is not a store with a 'subscribe' method`);
}
}
function subscribe(store, ...callbacks) {
if (store == null) {
return noop;
}
const unsub = store.subscribe(...callbacks);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
function component_subscribe(component, store, callback) {
component.$$.on_destroy.push(subscribe(store, callback));
}
function null_to_empty(value) {
return value == null ? '' : value;
}
const globals = (typeof window !== 'undefined'
? window
: typeof globalThis !== 'undefined'
? globalThis
: global);
function append(target, node) {
target.appendChild(node);
}
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();
// @ts-ignore
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 to_number(value) {
return value === '' ? null : +value;
}
function children(element) {
return Array.from(element.childNodes);
}
function set_input_value(input, value) {
input.value = value == null ? '' : value;
}
function set_style(node, key, value, important) {
if (value == null) {
node.style.removeProperty(key);
}
else {
node.style.setProperty(key, value, important ? 'important' : '');
}
}
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 !== undefined) {
select.selectedIndex = -1; // no option should be selected
}
}
function select_value(select) {
const selected_option = select.querySelector(':checked');
return selected_option && selected_option.__value;
}
function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {
const e = document.createEvent('CustomEvent');
e.initCustomEvent(type, bubbles, cancelable, detail);
return e;
}
let 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;
}
/**
* The `onMount` function schedules a callback to run as soon as the component has been mounted to the DOM.
* It must be called during the component's initialisation (but doesn't need to live *inside* the component;
* it can be called from an external module).
*
* `onMount` does not run inside a [server-side component](/docs#run-time-server-side-component-api).
*
* https://svelte.dev/docs#run-time-svelte-onmount
*/
function onMount(fn) {
get_current_component().$$.on_mount.push(fn);
}
/**
* Schedules a callback to run immediately before the component is unmounted.
*
* Out of `onMount`, `beforeUpdate`, `afterUpdate` and `onDestroy`, this is the
* only one that runs inside a server-side component.
*
* https://svelte.dev/docs#run-time-svelte-ondestroy
*/
function onDestroy(fn) {
get_current_component().$$.on_destroy.push(fn);
}
/**
* Creates an event dispatcher that can be used to dispatch [component events](/docs#template-syntax-component-directives-on-eventname).
* Event dispatchers are functions that can take two arguments: `name` and `detail`.
*
* Component events created with `createEventDispatcher` create a
* [CustomEvent](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent).
* These events do not [bubble](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#Event_bubbling_and_capture).
* The `detail` argument corresponds to the [CustomEvent.detail](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/detail)
* property and can contain any type of data.
*
* https://svelte.dev/docs#run-time-svelte-createeventdispatcher
*/
function createEventDispatcher() {
const component = get_current_component();
return (type, detail, { cancelable = false } = {}) => {
const callbacks = component.$$.callbacks[type];
if (callbacks) {
// TODO are there situations where events could be dispatched
// in a server (non-DOM) environment?
const event = custom_event(type, detail, { cancelable });
callbacks.slice().forEach(fn => {
fn.call(component, event);
});
return !event.defaultPrevented;
}
return true;
};
}
const dirty_components = [];
const binding_callbacks = [];
let render_callbacks = [];
const flush_callbacks = [];
const resolved_promise = /* @__PURE__ */ Promise.resolve();
let update_scheduled = false;
function schedule_update() {
if (!update_scheduled) {
update_scheduled = true;
resolved_promise.then(flush);
}
}
function add_render_callback(fn) {
render_callbacks.push(fn);
}
// flush() calls callbacks in this order:
// 1. All beforeUpdate callbacks, in order: parents before children
// 2. All bind:this callbacks, in reverse order: children before parents.
// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT
// for afterUpdates called during the initial onMount, which are called in
// reverse order: children before parents.
// Since callbacks might update component values, which could trigger another
// call to flush(), the following steps guard against this:
// 1. During beforeUpdate, any updated components will be added to the
// dirty_components array and will cause a reentrant call to flush(). Because
// the flush index is kept outside the function, the reentrant call will pick
// up where the earlier call left off and go through all dirty components. The
// current_component value is saved and restored so that the reentrant call will
// not interfere with the "parent" flush() call.
// 2. bind:this callbacks cannot trigger new flush() calls.
// 3. During afterUpdate, any updated components will NOT have their afterUpdate
// callback called a second time; the seen_callbacks set, outside the flush()
// function, guarantees this behavior.
const seen_callbacks = new Set();
let flushidx = 0; // Do *not* move this inside the flush() function
function flush() {
// Do not reenter flush while dirty components are updated, as this can
// result in an infinite loop. Instead, let the inner flush handle it.
// Reentrancy is ok afterwards for bindings etc.
if (flushidx !== 0) {
return;
}
const saved_component = current_component;
do {
// first, call beforeUpdate functions
// and update components
try {
while (flushidx < dirty_components.length) {
const component = dirty_components[flushidx];
flushidx++;
set_current_component(component);
update(component.$$);
}
}
catch (e) {
// reset dirty state to not end up in a deadlocked state and then rethrow
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()();
// then, once components are updated, call
// afterUpdate functions. This may cause
// subsequent updates...
for (let i = 0; i < render_callbacks.length; i += 1) {
const callback = render_callbacks[i];
if (!seen_callbacks.has(callback)) {
// ...so guard against infinite loops
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);
}
}
/**
* Useful for example to execute remaining `afterUpdate` callbacks before executing `destroy`.
*/
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;
}
const outroing = new Set();
let 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, detach, callback) {
if (block && block.o) {
if (outroing.has(block))
return;
outroing.add(block);
outros.c.push(() => {
outroing.delete(block);
if (callback) {
if (detach)
block.d(1);
callback();
}
});
block.o(local);
}
else if (callback) {
callback();
}
}
function destroy_block(block, lookup) {
block.d(1);
lookup.delete(block.key);
}
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_block, 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 = new Map();
const deltas = 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_block(key, child_ctx);
block.c();
}
else if (dynamic) {
// defer updates until all the DOM shuffling is done
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 = new Set();
const did_move = new Set();
function insert(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) {
// do nothing
next = new_block.first;
o--;
n--;
}
else if (!new_lookup.has(old_key)) {
// remove old block
destroy(old_block, lookup);
o--;
}
else if (!lookup.has(new_key) || will_move.has(new_key)) {
insert(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);
insert(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)
insert(new_blocks[n - 1]);
run_all(updates);
return new_blocks;
}
function validate_each_keys(ctx, list, get_context, get_key) {
const keys = new Set();
for (let i = 0; i < list.length; i++) {
const key = get_key(get_context(ctx, list, i));
if (keys.has(key)) {
throw new Error('Cannot have duplicate keys in a keyed each');
}
keys.add(key);
}
}
function create_component(block) {
block && block.c();
}
function mount_component(component, target, anchor, customElement) {
const { fragment, after_update } = component.$$;
fragment && fragment.m(target, anchor);
if (!customElement) {
// onMount happens before the initial afterUpdate
add_render_callback(() => {
const new_on_destroy = component.$$.on_mount.map(run).filter(is_function);
// if the component was destroyed immediately
// it will update the `$$.on_destroy` reference to `null`.
// the destructured on_destroy may still reference to the old array
if (component.$$.on_destroy) {
component.$$.on_destroy.push(...new_on_destroy);
}
else {
// Edge case - component was destroyed immediately,
// most likely as a result of a binding initialising
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);
// TODO null out other refs, including component.$$ (but need to
// preserve final state?)
$$.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, instance, create_fragment, not_equal, props, append_styles, 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_styles && append_styles($$.root);
let ready = false;
$$.ctx = instance
? instance(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);
// `false` as a special case of no DOM component
$$.fragment = create_fragment ? create_fragment($$.ctx) : false;
if (options.target) {
if (options.hydrate) {
const nodes = children(options.target);
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
$$.fragment && $$.fragment.l(nodes);
nodes.forEach(detach);
}
else {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
$$.fragment && $$.fragment.c();
}
if (options.intro)
transition_in(component.$$.fragment);
mount_component(component, options.target, options.anchor, options.customElement);
flush();
}
set_current_component(parent_component);
}
/**
* Base class for Svelte components. Used when dev=false.
*/
class SvelteComponent {
$destroy() {
destroy_component(this, 1);
this.$destroy = noop;
}
$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);
};
}
$set($$props) {
if (this.$$set && !is_empty($$props)) {
this.$$.skip_bound = true;
this.$$set($$props);
this.$$.skip_bound = false;
}
}
}
function dispatch_dev(type, detail) {
document.dispatchEvent(custom_event(type, Object.assign({ version: '3.59.2' }, detail), { bubbles: true }));
}
function append_dev(target, node) {
dispatch_dev('SvelteDOMInsert', { target, node });
append(target, node);
}
function insert_dev(target, node, anchor) {
dispatch_dev('SvelteDOMInsert', { target, node, anchor });
insert(target, node, anchor);
}
function detach_dev(node) {
dispatch_dev('SvelteDOMRemove', { node });
detach(node);
}
function listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation, has_stop_immediate_propagation) {
const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : [];
if (has_prevent_default)
modifiers.push('preventDefault');
if (has_stop_propagation)
modifiers.push('stopPropagation');
if (has_stop_immediate_propagation)
modifiers.push('stopImmediatePropagation');
dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers });
const dispose = listen(node, event, handler, options);
return () => {
dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers });
dispose();
};
}
function attr_dev(node, attribute, value) {
attr(node, attribute, value);
if (value == null)
dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute });
else
dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value });
}
function prop_dev(node, property, value) {
node[property] = value;
dispatch_dev('SvelteDOMSetProperty', { node, property, value });
}
function set_data_dev(text, data) {
data = '' + data;
if (text.data === data)
return;
dispatch_dev('SvelteDOMSetData', { node: text, data });
text.data = data;
}
function validate_each_argument(arg) {
if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) {
let msg = '{#each} only iterates over array-like objects.';
if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) {
msg += ' You can use a spread to convert this iterable into an array.';
}
throw new Error(msg);
}
}
function validate_slots(name, slot, keys) {
for (const slot_key of Object.keys(slot)) {
if (!~keys.indexOf(slot_key)) {
console.warn(`<${name}> received an unexpected slot "${slot_key}".`);
}
}
}
/**
* Base class for Svelte components with some minor dev-enhancements. Used when dev=true.
*/
class SvelteComponentDev extends SvelteComponent {
constructor(options) {
if (!options || (!options.target && !options.$$inline)) {
throw new Error("'target' is a required option");
}
super();
}
$destroy() {
super.$destroy();
this.$destroy = () => {
console.warn('Component was already destroyed'); // eslint-disable-line no-console
};
}
$capture_state() { }
$inject_state() { }
}
/* src\VideoGradioComponentBrainstorming.svelte generated by Svelte v3.59.2 */
const { console: console_1$6 } = globals;
const file$c = "src\\VideoGradioComponentBrainstorming.svelte";
function get_each_context$6(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[15] = list[i];
return child_ctx;
}
// (85:4) {#each kitchenOptions as option}
function create_each_block$6(ctx) {
let option;
let t_value = /*option*/ ctx[15] + "";
let t;
const block = {
c: function create() {
option = element("option");
t = text(t_value);
option.__value = /*option*/ ctx[15];
option.value = option.__value;
add_location(option, file$c, 85, 6, 2561);
},
m: function mount(target, anchor) {
insert_dev(target, option, anchor);
append_dev(option, t);
},
p: noop,
d: function destroy(detaching) {
if (detaching) detach_dev(option);
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_each_block$6.name,
type: "each",
source: "(85:4) {#each kitchenOptions as option}",
ctx
});
return block;
}
function create_fragment$c(ctx) {
let h1;
let t1;
let div1;
let video;
let track;
let track_src_value;
let t2;
let div0;
let t3;
let t4;
let t5;
let canvas_1;
let t6;
let input;
let t7;
let div2;
let button;
let t9;
let select;
let mounted;
let dispose;
let each_value = /*kitchenOptions*/ ctx[4];
validate_each_argument(each_value);
let each_blocks = [];
for (let i = 0; i < each_value.length; i += 1) {
each_blocks[i] = create_each_block$6(get_each_context$6(ctx, each_value, i));
}
const block = {
c: function create() {
h1 = element("h1");
h1.textContent = "AI Vision Assistant - Auto prompt HF agent + Cohere + Object detection - Text write on screen test";
t1 = space();
div1 = element("div");
video = element("video");
track = element("track");
t2 = space();
div0 = element("div");
t3 = text("Text Overlay Test and ");
t4 = text(/*TestVerb*/ ctx[3]);
t5 = space();
canvas_1 = element("canvas");
t6 = space();
input = element("input");
t7 = space();
div2 = element("div");
button = element("button");
button.textContent = "Verb Test";
t9 = space();
select = element("select");
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
add_location(h1, file$c, 66, 0, 1800);
attr_dev(track, "kind", "captions");
if (!src_url_equal(track.src, track_src_value = "path/to/your/captions/file.vtt")) attr_dev(track, "src", track_src_value);
attr_dev(track, "srclang", "en");
attr_dev(track, "label", "English");
add_location(track, file$c, 72, 4, 2006);
attr_dev(video, "id", "videoCanvas");
video.autoplay = true;
attr_dev(video, "class", "svelte-ufd3fo");
add_location(video, file$c, 70, 2, 1965);
attr_dev(div0, "id", "overlayText");
attr_dev(div0, "class", "svelte-ufd3fo");
add_location(div0, file$c, 74, 2, 2111);
attr_dev(div1, "id", "videoContainer");
attr_dev(div1, "class", "svelte-ufd3fo");
add_location(div1, file$c, 68, 0, 1911);
attr_dev(canvas_1, "id", "myCanvas");
set_style(canvas_1, "border", "2px solid black");
attr_dev(canvas_1, "width", "500");
attr_dev(canvas_1, "height", "500");
add_location(canvas_1, file$c, 77, 0, 2186);
attr_dev(input, "type", "text");
add_location(input, file$c, 78, 0, 2294);
add_location(button, file$c, 82, 2, 2429);
if (/*selectedOption*/ ctx[0] === void 0) add_render_callback(() => /*select_change_handler*/ ctx[9].call(select));
add_location(select, file$c, 83, 2, 2479);
attr_dev(div2, "id", "frameForButtons");
add_location(div2, file$c, 81, 0, 2399);
},
l: function claim(nodes) {
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
},
m: function mount(target, anchor) {
insert_dev(target, h1, anchor);
insert_dev(target, t1, anchor);
insert_dev(target, div1, anchor);
append_dev(div1, video);
append_dev(video, track);
append_dev(div1, t2);
append_dev(div1, div0);
append_dev(div0, t3);
append_dev(div0, t4);
insert_dev(target, t5, anchor);
insert_dev(target, canvas_1, anchor);
/*canvas_1_binding*/ ctx[7](canvas_1);
insert_dev(target, t6, anchor);
insert_dev(target, input, anchor);
set_input_value(input, /*textToDisplay*/ ctx[2]);
insert_dev(target, t7, anchor);
insert_dev(target, div2, anchor);
append_dev(div2, button);
append_dev(div2, t9);
append_dev(div2, select);
for (let i = 0; i < each_blocks.length; i += 1) {
if (each_blocks[i]) {
each_blocks[i].m(select, null);
}
}
select_option(select, /*selectedOption*/ ctx[0], true);
if (!mounted) {
dispose = [
listen_dev(input, "input", /*input_input_handler*/ ctx[8]),
listen_dev(input, "input", /*updateText*/ ctx[6], false, false, false, false),
listen_dev(button, "click", /*testText*/ ctx[5], false, false, false, false),
listen_dev(select, "change", /*select_change_handler*/ ctx[9])
];
mounted = true;
}
},
p: function update(ctx, [dirty]) {
if (dirty & /*TestVerb*/ 8) set_data_dev(t4, /*TestVerb*/ ctx[3]);
if (dirty & /*textToDisplay*/ 4 && input.value !== /*textToDisplay*/ ctx[2]) {
set_input_value(input, /*textToDisplay*/ ctx[2]);
}
if (dirty & /*kitchenOptions*/ 16) {
each_value = /*kitchenOptions*/ ctx[4];
validate_each_argument(each_value);
let i;
for (i = 0; i < each_value.length; i += 1) {
const child_ctx = get_each_context$6(ctx, each_value, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
} else {
each_blocks[i] = create_each_block$6(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 & /*selectedOption, kitchenOptions*/ 17) {
select_option(select, /*selectedOption*/ ctx[0]);
}
},
i: noop,
o: noop,
d: function destroy(detaching) {
if (detaching) detach_dev(h1);
if (detaching) detach_dev(t1);
if (detaching) detach_dev(div1);
if (detaching) detach_dev(t5);
if (detaching) detach_dev(canvas_1);
/*canvas_1_binding*/ ctx[7](null);
if (detaching) detach_dev(t6);
if (detaching) detach_dev(input);
if (detaching) detach_dev(t7);
if (detaching) detach_dev(div2);
destroy_each(each_blocks, detaching);
mounted = false;
run_all(dispose);
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_fragment$c.name,
type: "component",
source: "",
ctx
});
return block;
}
function ocrTest() {
} // Logic for 'Test OCR' button
function instance$c($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
validate_slots('VideoGradioComponentBrainstorming', slots, []);
let selectedOption = 'Stove - lu'; // default value
let kitchenOptions = ['Stove - lu', 'Refrigerator - bingxiang', 'Spoon - shao']; /* ... other options ... */
let canvas;
let ctx;
let textToDisplay = 'Initial Text';
let counter = 0;
let hud_text;
let TestVerb = "|Test verb|";
// Functions for button commands
function testText() {
// Logic for 'verb test' button
const randomIndex = Math.floor(Math.random() * kitchenOptions.length);
$$invalidate(3, TestVerb = kitchenOptions[randomIndex]);
}
// Image source
let imageSrc = 'path_to_your_image/Blooms-Taxonomy-650x366.jpg';
// Video stream setup
onMount(() => {
// Initialize video stream here
ctx = canvas.getContext('2d');
setInterval(
() => {
drawText(textToDisplay);
},
1000
); // Update every second
});
function drawText(hud_info) {
if (ctx) {
hud_text = "HUD Info Update: " + counter++ + " " + hud_info;
ctx.clearRect(0, 0, canvas.width, canvas.height); // Clear the canvas
ctx.font = '30px Arial';
ctx.fillStyle = 'black';
ctx.fillText(hud_text, 50, 50);
}
}
function updateText(event) {
$$invalidate(2, textToDisplay = event.target.value);
drawText();
}
// Camera as Video Stream
navigator.mediaDevices.getUserMedia({ video: true }).then(stream => {
const video = document.getElementById('videoCanvas');
video.srcObject = stream;
}).catch(err => {
console.error("Error accessing the camera: ", err);
});
const writable_props = [];
Object.keys($$props).forEach(key => {
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1$6.warn(`<VideoGradioComponentBrainstorming> was created with unknown prop '${key}'`);
});
function canvas_1_binding($$value) {
binding_callbacks[$$value ? 'unshift' : 'push'](() => {
canvas = $$value;
$$invalidate(1, canvas);
});
}
function input_input_handler() {
textToDisplay = this.value;
$$invalidate(2, textToDisplay);
}
function select_change_handler() {
selectedOption = select_value(this);
$$invalidate(0, selectedOption);
$$invalidate(4, kitchenOptions);
}
$$self.$capture_state = () => ({
onMount,
selectedOption,
kitchenOptions,
canvas,
ctx,
textToDisplay,
counter,
hud_text,
TestVerb,
testText,
ocrTest,
imageSrc,
drawText,
updateText
});
$$self.$inject_state = $$props => {
if ('selectedOption' in $$props) $$invalidate(0, selectedOption = $$props.selectedOption);
if ('kitchenOptions' in $$props) $$invalidate(4, kitchenOptions = $$props.kitchenOptions);
if ('canvas' in $$props) $$invalidate(1, canvas = $$props.canvas);
if ('ctx' in $$props) ctx = $$props.ctx;
if ('textToDisplay' in $$props) $$invalidate(2, textToDisplay = $$props.textToDisplay);
if ('counter' in $$props) counter = $$props.counter;
if ('hud_text' in $$props) hud_text = $$props.hud_text;
if ('TestVerb' in $$props) $$invalidate(3, TestVerb = $$props.TestVerb);
if ('imageSrc' in $$props) imageSrc = $$props.imageSrc;
};
if ($$props && "$$inject" in $$props) {
$$self.$inject_state($$props.$$inject);
}
return [
selectedOption,
canvas,
textToDisplay,
TestVerb,
kitchenOptions,
testText,
updateText,
canvas_1_binding,
input_input_handler,
select_change_handler
];
}
class VideoGradioComponentBrainstorming extends SvelteComponentDev {
constructor(options) {
super(options);
init(this, options, instance$c, create_fragment$c, safe_not_equal, {});
dispatch_dev("SvelteRegisterComponent", {
component: this,
tagName: "VideoGradioComponentBrainstorming",
options,
id: create_fragment$c.name
});
}
}
const subscriber_queue = [];
/**
* Create a `Writable` store that allows both updating and reading by subscription.
* @param {*=}value initial value
* @param {StartStopNotifier=} start
*/
function writable(value, start = noop) {
let stop;
const subscribers = new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) { // store is ready
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(value));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set) || noop;
}
run(value);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
/* src\MovingDotPortfromReact.svelte generated by Svelte v3.59.2 */
const file$b = "src\\MovingDotPortfromReact.svelte";
function create_fragment$b(ctx) {
let button;
const block = {
c: function create() {
button = element("button");
attr_dev(button, "class", "MovingDot svelte-1mg0qyd");
set_style(button, "left", /*position*/ ctx[0].x + "px");
set_style(button, "top", /*position*/ ctx[0].y + "px");
attr_dev(button, "tabindex", "0");
add_location(button, file$b, 48, 0, 1573);
},
l: function claim(nodes) {
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
},
m: function mount(target, anchor) {
insert_dev(target, button, anchor);
/*button_binding*/ ctx[4](button);
},
p: function update(ctx, [dirty]) {
if (dirty & /*position*/ 1) {
set_style(button, "left", /*position*/ ctx[0].x + "px");
}
if (dirty & /*position*/ 1) {
set_style(button, "top", /*position*/ ctx[0].y + "px");
}
},
i: noop,
o: noop,
d: function destroy(detaching) {
if (detaching) detach_dev(button);
/*button_binding*/ ctx[4](null);
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_fragment$b.name,
type: "component",
source: "",
ctx
});
return block;
}
const step = 10;
function instance$b($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
validate_slots('MovingDotPortfromReact', slots, []);
let { position = { x: 0, y: 0 } } = $$props;
let { boundaries = { minX: 0, maxX: 100, minY: 0, maxY: 100 } } = $$props;
const dispatch = createEventDispatcher();
let dotElement; // Reference to the dot element
function moveDot(newX, newY) {
// Update position with a new object for Svelte reactivity
let boundedX = Math.max(boundaries.minX, Math.min(newX, boundaries.maxX));
let boundedY = Math.max(boundaries.minY, Math.min(newY, boundaries.maxY));
// Update position
$$invalidate(0, position = { x: boundedX, y: boundedY });
// Dispatch the move event with the new position
dispatch('move', position);
}
const handleKeyPress = e => {
e.preventDefault();
let newX = position.x;
let newY = position.y;
switch (e.key) {
case 'ArrowLeft':
newX -= step;
break;
case 'ArrowRight':
newX += step;
break;
case 'ArrowUp':
newY -= step;
break;
case 'ArrowDown':
newY += step;
break;
}
moveDot(newX, newY);
};
function focusDot() {
//On click for the space its imported into
dotElement.focus();
}
onMount(() => {
dotElement.addEventListener('keydown', handleKeyPress);
});
onDestroy(() => {
dotElement.removeEventListener('keydown', handleKeyPress);
});
const writable_props = ['position', 'boundaries'];
Object.keys($$props).forEach(key => {
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(`<MovingDotPortfromReact> was created with unknown prop '${key}'`);
});
function button_binding($$value) {
binding_callbacks[$$value ? 'unshift' : 'push'](() => {
dotElement = $$value;
$$invalidate(1, dotElement);
});
}
$$self.$$set = $$props => {
if ('position' in $$props) $$invalidate(0, position = $$props.position);
if ('boundaries' in $$props) $$invalidate(2, boundaries = $$props.boundaries);
};
$$self.$capture_state = () => ({
onMount,
onDestroy,
createEventDispatcher,
position,
boundaries,
step,
dispatch,
dotElement,
moveDot,
handleKeyPress,
focusDot
});
$$self.$inject_state = $$props => {
if ('position' in $$props) $$invalidate(0, position = $$props.position);
if ('boundaries' in $$props) $$invalidate(2, boundaries = $$props.boundaries);
if ('dotElement' in $$props) $$invalidate(1, dotElement = $$props.dotElement);
};
if ($$props && "$$inject" in $$props) {
$$self.$inject_state($$props.$$inject);
}
return [position, dotElement, boundaries, focusDot, button_binding];
}
class MovingDotPortfromReact extends SvelteComponentDev {
constructor(options) {
super(options);
init(this, options, instance$b, create_fragment$b, safe_not_equal, { position: 0, boundaries: 2, focusDot: 3 });
dispatch_dev("SvelteRegisterComponent", {
component: this,
tagName: "MovingDotPortfromReact",
options,
id: create_fragment$b.name
});
}
get position() {
throw new Error("<MovingDotPortfromReact>: Props cannot be read directly from the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
}
set position(value) {
throw new Error("<MovingDotPortfromReact>: Props cannot be set directly on the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
}
get boundaries() {
throw new Error("<MovingDotPortfromReact>: Props cannot be read directly from the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
}
set boundaries(value) {
throw new Error("<MovingDotPortfromReact>: Props cannot be set directly on the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
}
get focusDot() {
return this.$$.ctx[3];
}
set focusDot(value) {
throw new Error("<MovingDotPortfromReact>: Props cannot be set directly on the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
}
}
/* src\MovingDotTargetPortfromReact.svelte generated by Svelte v3.59.2 */
const file$a = "src\\MovingDotTargetPortfromReact.svelte";
function create_fragment$a(ctx) {
let div;
const block = {
c: function create() {
div = element("div");
attr_dev(div, "class", "target svelte-4yc66h");
set_style(div, "left", /*position*/ ctx[0].x + "px");
set_style(div, "top", /*position*/ ctx[0].y + "px");
add_location(div, file$a, 4, 0, 49);
},
l: function claim(nodes) {
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
},
m: function mount(target, anchor) {
insert_dev(target, div, anchor);
},
p: function update(ctx, [dirty]) {
if (dirty & /*position*/ 1) {
set_style(div, "left", /*position*/ ctx[0].x + "px");
}
if (dirty & /*position*/ 1) {
set_style(div, "top", /*position*/ ctx[0].y + "px");
}
},
i: noop,
o: noop,
d: function destroy(detaching) {
if (detaching) detach_dev(div);
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_fragment$a.name,
type: "component",
source: "",
ctx
});
return block;
}
function instance$a($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
validate_slots('MovingDotTargetPortfromReact', slots, []);
let { position } = $$props;
$$self.$$.on_mount.push(function () {
if (position === undefined && !('position' in $$props || $$self.$$.bound[$$self.$$.props['position']])) {
console.warn("<MovingDotTargetPortfromReact> was created without expected prop 'position'");
}
});
const writable_props = ['position'];
Object.keys($$props).forEach(key => {
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(`<MovingDotTargetPortfromReact> was created with unknown prop '${key}'`);
});
$$self.$$set = $$props => {
if ('position' in $$props) $$invalidate(0, position = $$props.position);
};
$$self.$capture_state = () => ({ position });
$$self.$inject_state = $$props => {
if ('position' in $$props) $$invalidate(0, position = $$props.position);
};
if ($$props && "$$inject" in $$props) {
$$self.$inject_state($$props.$$inject);
}
return [position];
}
class MovingDotTargetPortfromReact extends SvelteComponentDev {
constructor(options) {
super(options);
init(this, options, instance$a, create_fragment$a, safe_not_equal, { position: 0 });
dispatch_dev("SvelteRegisterComponent", {
component: this,
tagName: "MovingDotTargetPortfromReact",
options,
id: create_fragment$a.name
});
}
get position() {
throw new Error("<MovingDotTargetPortfromReact>: Props cannot be read directly from the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
}
set position(value) {
throw new Error("<MovingDotTargetPortfromReact>: Props cannot be set directly on the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
}
}
const health = writable(100);
const mana = writable(50);
const strength = writable(10);
const agility = writable(10);
const intelligence = writable(10);
const charisma = writable(10);
const luck = writable(10);
const money = writable(1000);
const inventory = writable([
// Sample inventory items
{ type: "weapon", name: "Sword", description: "A sharp blade." },
{ type: "armor", name: "Shield", description: "Protects against attacks." },
{ type: "consumable", name: "Health Potion", description: "Restores health." },
// Add more items as needed
]);
const skills = writable([
// Sample skills
{ branch: "Combat", name: "Basic Attack", learned: false },
{ branch: "Magic", name: "Fireball", learned: false },
{ branch: "Stealth", name: "Sneak", learned: false },
// Add more skills as needed
]);
const objectives = writable([
// Sample objectives
{ branch: "Seperate", name: "Visit Mountain Peak", complete: false },
{ branch: "Mission 1", name: "Intercept The Courier (Search the Locations)", complete: false },
{ branch: "Mission 1", name: "Deliver the package to Market Stall", complete: false },
// Add more objectives as needed
]);
const targets = writable([
{ name: "Target 1", x: 50, y: 50, collisionType: "alert", collisiontext: "First Test"},
{ name: "Target 2", x: 100, y: 100, collisionType: "", collisiontext: ""},
{ name: "Entrance", x: 995, y: 660, collisionType: "modal", modalConfig: {
title: "Entrance",
content: "You've reached the Entrance. What's your next step?",
actions: [
{
label: "Ask for guidance on next move",
action: "askforDirections"
},
{
label: "Buy an Axe",
action: "buyAxeAlert"
}
// ... more actions if necessary
]},
},
{ name: "Market Stall", x: 200, y: 300, collisionType: "", collisiontext: "" }, // A market stall in the bustling market area.
{ name: "Inn Entrance", x: 400, y: 450, collisionType: "", collisiontext: "" }, // The entrance to the inn for rest or information.
{ name: "Town Hall", x: 600, y: 350, collisionType: "", collisiontext: "" }, // The entrance to the town hall for quests.
{ name: "Fountain", x: 500, y: 500, collisionType: "", collisiontext: "" }, // A fountain in the town square as a meeting point.
{ name: "Bridge", x: 1100, y: 700, collisionType: "", collisiontext: "" }, // A bridge in the mystical forest area.
{ name: "Waterfall", x: 1300, y: 800, collisionType: "", collisiontext: "" }, // A waterfall that could hide secrets or treasures.
{ name: "Mountain Peak", x: 1500, y: 100, collisionType: "", collisiontext: "" },
]);
function addInventoryItem(item) {
inventory.update(items => {
return [...items, item];
});
}
// actions.js
const themeActions = {
'Default': {
buyAxeAlert() {
money.update(h => h - 10 > 0 ? h - 10 : 0); // Decreases health but never below 0
const newItem = {type: "weapon", name: "Axe", description: "A heavy, sharp axe."};
addInventoryItem(newItem);
},
askforDirections() {
alert("Stranger: Go back to the fountain");
}
},
'Space Odyssey': {
refuelShip() {
// Logic to refuel the ship
},
tradeGoods() {
// Logic to trade goods
},
// ... add more space-specific actions
},
'Medieval Fantasy': {
defendCastle() {
// Logic to defend the castle
},
slayDragon() {
// Logic to slay the dragon
},
// ... add more medieval-specific actions
},
'Cyberpunk': {
hackSystem() {
// Logic to hack a system
alert("it worked");
},
navigateNeonStreets() {
// Logic for navigating neon streets
},
// ... add more cyberpunk-specific actions
}
// ... other themes with their specific actions
};
/* src\MovingDotSpaceSimpleModal.svelte generated by Svelte v3.59.2 */
const { console: console_1$5 } = globals;
const file$9 = "src\\MovingDotSpaceSimpleModal.svelte";
function get_each_context$5(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[9] = list[i];
return child_ctx;
}
// (49:0) {#if isOpen}
function create_if_block$4(ctx) {
let div3;
let div2;
let div0;
let h2;
let t0;
let t1;
let button;
let t3;
let div1;
let t4;
let t5;
let ul;
let mounted;
let dispose;
let each_value = /*items*/ ctx[3];
validate_each_argument(each_value);
let each_blocks = [];
for (let i = 0; i < each_value.length; i += 1) {
each_blocks[i] = create_each_block$5(get_each_context$5(ctx, each_value, i));
}
const block = {
c: function create() {
div3 = element("div");
div2 = element("div");
div0 = element("div");
h2 = element("h2");
t0 = text(/*title*/ ctx[1]);
t1 = space();
button = element("button");
button.textContent = "×";
t3 = space();
div1 = element("div");
t4 = text(/*content*/ ctx[2]);
t5 = space();
ul = element("ul");
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
add_location(h2, file$9, 52, 8, 1640);
add_location(button, file$9, 53, 8, 1666);
attr_dev(div0, "class", "modal-header svelte-m51ous");
add_location(div0, file$9, 51, 6, 1604);
attr_dev(ul, "class", "modal-items");
add_location(ul, file$9, 57, 8, 1790);
attr_dev(div1, "class", "modal-content svelte-m51ous");
add_location(div1, file$9, 55, 6, 1734);
attr_dev(div2, "class", "modal svelte-m51ous");
add_location(div2, file$9, 50, 4, 1577);
attr_dev(div3, "class", "modal-overlay svelte-m51ous");
add_location(div3, file$9, 49, 2, 1544);
},
m: function mount(target, anchor) {
insert_dev(target, div3, anchor);
append_dev(div3, div2);
append_dev(div2, div0);
append_dev(div0, h2);
append_dev(h2, t0);
append_dev(div0, t1);
append_dev(div0, button);
append_dev(div2, t3);
append_dev(div2, div1);
append_dev(div1, t4);
append_dev(div1, t5);
append_dev(div1, ul);
for (let i = 0; i < each_blocks.length; i += 1) {
if (each_blocks[i]) {
each_blocks[i].m(ul, null);
}
}
if (!mounted) {
dispose = listen_dev(button, "click", /*closeModal*/ ctx[4], false, false, false, false);
mounted = true;
}
},
p: function update(ctx, dirty) {
if (dirty & /*title*/ 2) set_data_dev(t0, /*title*/ ctx[1]);
if (dirty & /*content*/ 4) set_data_dev(t4, /*content*/ ctx[2]);
if (dirty & /*handleItemClick, items*/ 40) {
each_value = /*items*/ ctx[3];
validate_each_argument(each_value);
let i;
for (i = 0; i < each_value.length; i += 1) {
const child_ctx = get_each_context$5(ctx, each_value, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
} else {
each_blocks[i] = create_each_block$5(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;
}
},
d: function destroy(detaching) {
if (detaching) detach_dev(div3);
destroy_each(each_blocks, detaching);
mounted = false;
dispose();
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_if_block$4.name,
type: "if",
source: "(49:0) {#if isOpen}",
ctx
});
return block;
}
// (59:10) {#each items as item}
function create_each_block$5(ctx) {
let button;
let t_value = /*item*/ ctx[9].label + "";
let t;
let mounted;
let dispose;
function click_handler() {
return /*click_handler*/ ctx[8](/*item*/ ctx[9]);
}
const block = {
c: function create() {
button = element("button");
t = text(t_value);
add_location(button, file$9, 59, 12, 1861);
},
m: function mount(target, anchor) {
insert_dev(target, button, anchor);
append_dev(button, t);
if (!mounted) {
dispose = listen_dev(button, "click", click_handler, false, false, false, false);
mounted = true;
}
},
p: function update(new_ctx, dirty) {
ctx = new_ctx;
if (dirty & /*items*/ 8 && t_value !== (t_value = /*item*/ ctx[9].label + "")) set_data_dev(t, t_value);
},
d: function destroy(detaching) {
if (detaching) detach_dev(button);
mounted = false;
dispose();
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_each_block$5.name,
type: "each",
source: "(59:10) {#each items as item}",
ctx
});
return block;
}
function create_fragment$9(ctx) {
let if_block_anchor;
let if_block = /*isOpen*/ ctx[0] && create_if_block$4(ctx);
const block = {
c: function create() {
if (if_block) if_block.c();
if_block_anchor = empty();
},
l: function claim(nodes) {
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
},
m: function mount(target, anchor) {
if (if_block) if_block.m(target, anchor);
insert_dev(target, if_block_anchor, anchor);
},
p: function update(ctx, [dirty]) {
if (/*isOpen*/ ctx[0]) {
if (if_block) {
if_block.p(ctx, dirty);
} else {
if_block = create_if_block$4(ctx);
if_block.c();
if_block.m(if_block_anchor.parentNode, if_block_anchor);
}
} else if (if_block) {
if_block.d(1);
if_block = null;
}
},
i: noop,
o: noop,
d: function destroy(detaching) {
if (if_block) if_block.d(detaching);
if (detaching) detach_dev(if_block_anchor);
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_fragment$9.name,
type: "component",
source: "",
ctx
});
return block;
}
function instance$9($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
validate_slots('MovingDotSpaceSimpleModal', slots, []);
let { isOpen = false } = $$props;
let { title = '' } = $$props;
let { content = '' } = $$props;
let { items = [] } = $$props;
let { onClose } = $$props;
let { currentTheme = '' } = $$props;
function closeModal() {
if (onClose) {
onClose();
}
}
function handleItemClick(item) {
// You can define what happens when an item is clicked, e.g., close modal, trigger an event, etc.
console.log("Item clicked:", item);
closeModal();
if (themeActions[currentTheme] && themeActions[currentTheme][item.action]) {
themeActions[currentTheme][item.action]();
} else {
switch (item.action) {
case "revealCaveLocation":
{
alert("The cave is revealed");
break;
}
case "giveHistory":
{
alert("The History is revealed");
break;
}
case "buyAxe":
{
money.update(h => h - 10 > 0 ? h - 10 : 0); // Decreases health but never below 0
const newItem = {
type: "weapon",
name: "Axe",
description: "A heavy, sharp axe."
};
addInventoryItem(newItem);
}
default:
console.error(`Action "${item.action}" not found for theme "${currentTheme}".`);
break;
}
}
}
$$self.$$.on_mount.push(function () {
if (onClose === undefined && !('onClose' in $$props || $$self.$$.bound[$$self.$$.props['onClose']])) {
console_1$5.warn("<MovingDotSpaceSimpleModal> was created without expected prop 'onClose'");
}
});
const writable_props = ['isOpen', 'title', 'content', 'items', 'onClose', 'currentTheme'];
Object.keys($$props).forEach(key => {
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1$5.warn(`<MovingDotSpaceSimpleModal> was created with unknown prop '${key}'`);
});
const click_handler = item => handleItemClick(item);
$$self.$$set = $$props => {
if ('isOpen' in $$props) $$invalidate(0, isOpen = $$props.isOpen);
if ('title' in $$props) $$invalidate(1, title = $$props.title);
if ('content' in $$props) $$invalidate(2, content = $$props.content);
if ('items' in $$props) $$invalidate(3, items = $$props.items);
if ('onClose' in $$props) $$invalidate(6, onClose = $$props.onClose);
if ('currentTheme' in $$props) $$invalidate(7, currentTheme = $$props.currentTheme);
};
$$self.$capture_state = () => ({
isOpen,
title,
content,
items,
onClose,
currentTheme,
themeActions,
money,
addInventoryItem,
closeModal,
handleItemClick
});
$$self.$inject_state = $$props => {
if ('isOpen' in $$props) $$invalidate(0, isOpen = $$props.isOpen);
if ('title' in $$props) $$invalidate(1, title = $$props.title);
if ('content' in $$props) $$invalidate(2, content = $$props.content);
if ('items' in $$props) $$invalidate(3, items = $$props.items);
if ('onClose' in $$props) $$invalidate(6, onClose = $$props.onClose);
if ('currentTheme' in $$props) $$invalidate(7, currentTheme = $$props.currentTheme);
};
if ($$props && "$$inject" in $$props) {
$$self.$inject_state($$props.$$inject);
}
return [
isOpen,
title,
content,
items,
closeModal,
handleItemClick,
onClose,
currentTheme,
click_handler
];
}
class MovingDotSpaceSimpleModal extends SvelteComponentDev {
constructor(options) {
super(options);
init(this, options, instance$9, create_fragment$9, safe_not_equal, {
isOpen: 0,
title: 1,
content: 2,
items: 3,
onClose: 6,
currentTheme: 7
});
dispatch_dev("SvelteRegisterComponent", {
component: this,
tagName: "MovingDotSpaceSimpleModal",
options,
id: create_fragment$9.name
});
}
get isOpen() {
throw new Error("<MovingDotSpaceSimpleModal>: Props cannot be read directly from the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
}
set isOpen(value) {
throw new Error("<MovingDotSpaceSimpleModal>: Props cannot be set directly on the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
}
get title() {
throw new Error("<MovingDotSpaceSimpleModal>: Props cannot be read directly from the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
}
set title(value) {
throw new Error("<MovingDotSpaceSimpleModal>: Props cannot be set directly on the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
}
get content() {
throw new Error("<MovingDotSpaceSimpleModal>: Props cannot be read directly from the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
}
set content(value) {
throw new Error("<MovingDotSpaceSimpleModal>: Props cannot be set directly on the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
}
get items() {
throw new Error("<MovingDotSpaceSimpleModal>: Props cannot be read directly from the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
}
set items(value) {
throw new Error("<MovingDotSpaceSimpleModal>: Props cannot be set directly on the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
}
get onClose() {
throw new Error("<MovingDotSpaceSimpleModal>: Props cannot be read directly from the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
}
set onClose(value) {
throw new Error("<MovingDotSpaceSimpleModal>: Props cannot be set directly on the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
}
get currentTheme() {
throw new Error("<MovingDotSpaceSimpleModal>: Props cannot be read directly from the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
}
set currentTheme(value) {
throw new Error("<MovingDotSpaceSimpleModal>: Props cannot be set directly on the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
}
}
/* src\MovingDotStatStoreandDisplay.svelte generated by Svelte v3.59.2 */
const file$8 = "src\\MovingDotStatStoreandDisplay.svelte";
function get_each_context$4(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[13] = list[i];
return child_ctx;
}
function get_each_context_1$1(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[16] = list[i];
return child_ctx;
}
function get_each_context_2(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[16] = list[i];
return child_ctx;
}
// (22:6) {#each $objectives as item}
function create_each_block_2(ctx) {
let li;
let t0_value = /*item*/ ctx[16].id + "";
let t0;
let t1;
let t2_value = /*item*/ ctx[16].name + "";
let t2;
const block = {
c: function create() {
li = element("li");
t0 = text(t0_value);
t1 = text(": ");
t2 = text(t2_value);
add_location(li, file$8, 22, 8, 712);
},
m: function mount(target, anchor) {
insert_dev(target, li, anchor);
append_dev(li, t0);
append_dev(li, t1);
append_dev(li, t2);
},
p: function update(ctx, dirty) {
if (dirty & /*$objectives*/ 256 && t0_value !== (t0_value = /*item*/ ctx[16].id + "")) set_data_dev(t0, t0_value);
if (dirty & /*$objectives*/ 256 && t2_value !== (t2_value = /*item*/ ctx[16].name + "")) set_data_dev(t2, t2_value);
},
d: function destroy(detaching) {
if (detaching) detach_dev(li);
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_each_block_2.name,
type: "each",
source: "(22:6) {#each $objectives as item}",
ctx
});
return block;
}
// (32:8) {#each $inventory as item}
function create_each_block_1$1(ctx) {
let li;
let t0_value = /*item*/ ctx[16].name + "";
let t0;
let t1;
let t2_value = /*item*/ ctx[16].description + "";
let t2;
const block = {
c: function create() {
li = element("li");
t0 = text(t0_value);
t1 = text(": ");
t2 = text(t2_value);
add_location(li, file$8, 32, 10, 928);
},
m: function mount(target, anchor) {
insert_dev(target, li, anchor);
append_dev(li, t0);
append_dev(li, t1);
append_dev(li, t2);
},
p: function update(ctx, dirty) {
if (dirty & /*$inventory*/ 512 && t0_value !== (t0_value = /*item*/ ctx[16].name + "")) set_data_dev(t0, t0_value);
if (dirty & /*$inventory*/ 512 && t2_value !== (t2_value = /*item*/ ctx[16].description + "")) set_data_dev(t2, t2_value);
},
d: function destroy(detaching) {
if (detaching) detach_dev(li);
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_each_block_1$1.name,
type: "each",
source: "(32:8) {#each $inventory as item}",
ctx
});
return block;
}
// (42:6) {#each $skills as skill}
function create_each_block$4(ctx) {
let button;
let t0_value = /*skill*/ ctx[13].name + "";
let t0;
let t1;
let t2_value = /*skill*/ ctx[13].branch + "";
let t2;
let t3;
let t4_value = (/*skill*/ ctx[13].learned ? 'Yes' : 'No') + "";
let t4;
let t5;
let mounted;
let dispose;
function click_handler() {
return /*click_handler*/ ctx[12](/*skill*/ ctx[13]);
}
const block = {
c: function create() {
button = element("button");
t0 = text(t0_value);
t1 = text(" - ");
t2 = text(t2_value);
t3 = text(" - Learned: ");
t4 = text(t4_value);
t5 = space();
attr_dev(button, "class", "skill");
add_location(button, file$8, 42, 8, 1167);
},
m: function mount(target, anchor) {
insert_dev(target, button, anchor);
append_dev(button, t0);
append_dev(button, t1);
append_dev(button, t2);
append_dev(button, t3);
append_dev(button, t4);
append_dev(button, t5);
if (!mounted) {
dispose = listen_dev(button, "click", click_handler, false, false, false, false);
mounted = true;
}
},
p: function update(new_ctx, dirty) {
ctx = new_ctx;
if (dirty & /*$skills*/ 1024 && t0_value !== (t0_value = /*skill*/ ctx[13].name + "")) set_data_dev(t0, t0_value);
if (dirty & /*$skills*/ 1024 && t2_value !== (t2_value = /*skill*/ ctx[13].branch + "")) set_data_dev(t2, t2_value);
if (dirty & /*$skills*/ 1024 && t4_value !== (t4_value = (/*skill*/ ctx[13].learned ? 'Yes' : 'No') + "")) set_data_dev(t4, t4_value);
},
d: function destroy(detaching) {
if (detaching) detach_dev(button);
mounted = false;
dispose();
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_each_block$4.name,
type: "each",
source: "(42:6) {#each $skills as skill}",
ctx
});
return block;
}
function create_fragment$8(ctx) {
let div10;
let div4;
let div3;
let span;
let b;
let t1;
let div0;
let t2;
let t3;
let t4;
let t5;
let t6;
let t7;
let t8;
let t9;
let t10;
let t11;
let t12;
let t13;
let t14;
let div1;
let t15;
let t16;
let t17;
let div2;
let t18;
let t19;
let t20;
let div5;
let ul0;
let t21;
let div7;
let div6;
let h20;
let t23;
let ul1;
let t24;
let div9;
let div8;
let h21;
let t26;
let each_value_2 = /*$objectives*/ ctx[8];
validate_each_argument(each_value_2);
let each_blocks_2 = [];
for (let i = 0; i < each_value_2.length; i += 1) {
each_blocks_2[i] = create_each_block_2(get_each_context_2(ctx, each_value_2, i));
}
let each_value_1 = /*$inventory*/ ctx[9];
validate_each_argument(each_value_1);
let each_blocks_1 = [];
for (let i = 0; i < each_value_1.length; i += 1) {
each_blocks_1[i] = create_each_block_1$1(get_each_context_1$1(ctx, each_value_1, i));
}
let each_value = /*$skills*/ ctx[10];
validate_each_argument(each_value);
let each_blocks = [];
for (let i = 0; i < each_value.length; i += 1) {
each_blocks[i] = create_each_block$4(get_each_context$4(ctx, each_value, i));
}
const block = {
c: function create() {
div10 = element("div");
div4 = element("div");
div3 = element("div");
span = element("span");
b = element("b");
b.textContent = "Player Stats";
t1 = space();
div0 = element("div");
t2 = text("Health: ");
t3 = text(/*$health*/ ctx[0]);
t4 = text(" Mana: ");
t5 = text(/*$mana*/ ctx[1]);
t6 = text(" Strength: ");
t7 = text(/*$strength*/ ctx[2]);
t8 = text(" Agility: ");
t9 = text(/*$agility*/ ctx[3]);
t10 = text(" Intelligence: ");
t11 = text(/*$intelligence*/ ctx[4]);
t12 = text(" Charisma: ");
t13 = text(/*$charisma*/ ctx[5]);
t14 = space();
div1 = element("div");
t15 = text("Luck: ");
t16 = text(/*$luck*/ ctx[6]);
t17 = space();
div2 = element("div");
t18 = text("Money: ");
t19 = text(/*$money*/ ctx[7]);
t20 = space();
div5 = element("div");
ul0 = element("ul");
for (let i = 0; i < each_blocks_2.length; i += 1) {
each_blocks_2[i].c();
}
t21 = space();
div7 = element("div");
div6 = element("div");
h20 = element("h2");
h20.textContent = "Inventory";
t23 = space();
ul1 = element("ul");
for (let i = 0; i < each_blocks_1.length; i += 1) {
each_blocks_1[i].c();
}
t24 = space();
div9 = element("div");
div8 = element("div");
h21 = element("h2");
h21.textContent = "Skill Tree / Abilities";
t26 = space();
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
add_location(b, file$8, 12, 13, 363);
add_location(span, file$8, 12, 6, 356);
add_location(div0, file$8, 13, 6, 399);
add_location(div1, file$8, 14, 6, 543);
add_location(div2, file$8, 15, 6, 575);
attr_dev(div3, "class", "stats svelte-1d8rshd");
add_location(div3, file$8, 11, 4, 329);
attr_dev(div4, "class", "grid-statsitem svelte-1d8rshd");
add_location(div4, file$8, 10, 2, 295);
add_location(ul0, file$8, 20, 4, 663);
attr_dev(div5, "class", "grid-statsitem svelte-1d8rshd");
add_location(div5, file$8, 19, 2, 629);
add_location(h20, file$8, 29, 6, 850);
add_location(ul1, file$8, 30, 6, 876);
attr_dev(div6, "class", "inventory svelte-1d8rshd");
add_location(div6, file$8, 28, 4, 819);
attr_dev(div7, "class", "grid-statsitem svelte-1d8rshd");
add_location(div7, file$8, 27, 2, 785);
add_location(h21, file$8, 40, 6, 1094);
attr_dev(div8, "class", "skill-tree svelte-1d8rshd");
add_location(div8, file$8, 39, 4, 1062);
attr_dev(div9, "class", "grid-statsitem svelte-1d8rshd");
add_location(div9, file$8, 38, 2, 1028);
attr_dev(div10, "class", "grid-statsContainer svelte-1d8rshd");
add_location(div10, file$8, 9, 0, 258);
},
l: function claim(nodes) {
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
},
m: function mount(target, anchor) {
insert_dev(target, div10, anchor);
append_dev(div10, div4);
append_dev(div4, div3);
append_dev(div3, span);
append_dev(span, b);
append_dev(div3, t1);
append_dev(div3, div0);
append_dev(div0, t2);
append_dev(div0, t3);
append_dev(div0, t4);
append_dev(div0, t5);
append_dev(div0, t6);
append_dev(div0, t7);
append_dev(div0, t8);
append_dev(div0, t9);
append_dev(div0, t10);
append_dev(div0, t11);
append_dev(div0, t12);
append_dev(div0, t13);
append_dev(div3, t14);
append_dev(div3, div1);
append_dev(div1, t15);
append_dev(div1, t16);
append_dev(div3, t17);
append_dev(div3, div2);
append_dev(div2, t18);
append_dev(div2, t19);
append_dev(div10, t20);
append_dev(div10, div5);
append_dev(div5, ul0);
for (let i = 0; i < each_blocks_2.length; i += 1) {
if (each_blocks_2[i]) {
each_blocks_2[i].m(ul0, null);
}
}
append_dev(div10, t21);
append_dev(div10, div7);
append_dev(div7, div6);
append_dev(div6, h20);
append_dev(div6, t23);
append_dev(div6, ul1);
for (let i = 0; i < each_blocks_1.length; i += 1) {
if (each_blocks_1[i]) {
each_blocks_1[i].m(ul1, null);
}
}
append_dev(div10, t24);
append_dev(div10, div9);
append_dev(div9, div8);
append_dev(div8, h21);
append_dev(div8, t26);
for (let i = 0; i < each_blocks.length; i += 1) {
if (each_blocks[i]) {
each_blocks[i].m(div8, null);
}
}
},
p: function update(ctx, [dirty]) {
if (dirty & /*$health*/ 1) set_data_dev(t3, /*$health*/ ctx[0]);
if (dirty & /*$mana*/ 2) set_data_dev(t5, /*$mana*/ ctx[1]);
if (dirty & /*$strength*/ 4) set_data_dev(t7, /*$strength*/ ctx[2]);
if (dirty & /*$agility*/ 8) set_data_dev(t9, /*$agility*/ ctx[3]);
if (dirty & /*$intelligence*/ 16) set_data_dev(t11, /*$intelligence*/ ctx[4]);
if (dirty & /*$charisma*/ 32) set_data_dev(t13, /*$charisma*/ ctx[5]);
if (dirty & /*$luck*/ 64) set_data_dev(t16, /*$luck*/ ctx[6]);
if (dirty & /*$money*/ 128) set_data_dev(t19, /*$money*/ ctx[7]);
if (dirty & /*$objectives*/ 256) {
each_value_2 = /*$objectives*/ ctx[8];
validate_each_argument(each_value_2);
let i;
for (i = 0; i < each_value_2.length; i += 1) {
const child_ctx = get_each_context_2(ctx, each_value_2, i);
if (each_blocks_2[i]) {
each_blocks_2[i].p(child_ctx, dirty);
} else {
each_blocks_2[i] = create_each_block_2(child_ctx);
each_blocks_2[i].c();
each_blocks_2[i].m(ul0, null);
}
}
for (; i < each_blocks_2.length; i += 1) {
each_blocks_2[i].d(1);
}
each_blocks_2.length = each_value_2.length;
}
if (dirty & /*$inventory*/ 512) {
each_value_1 = /*$inventory*/ ctx[9];
validate_each_argument(each_value_1);
let i;
for (i = 0; i < each_value_1.length; i += 1) {
const child_ctx = get_each_context_1$1(ctx, each_value_1, i);
if (each_blocks_1[i]) {
each_blocks_1[i].p(child_ctx, dirty);
} else {
each_blocks_1[i] = create_each_block_1$1(child_ctx);
each_blocks_1[i].c();
each_blocks_1[i].m(ul1, null);
}
}
for (; i < each_blocks_1.length; i += 1) {
each_blocks_1[i].d(1);
}
each_blocks_1.length = each_value_1.length;
}
if (dirty & /*toggleSkill, $skills*/ 3072) {
each_value = /*$skills*/ ctx[10];
validate_each_argument(each_value);
let i;
for (i = 0; i < each_value.length; i += 1) {
const child_ctx = get_each_context$4(ctx, each_value, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
} else {
each_blocks[i] = create_each_block$4(child_ctx);
each_blocks[i].c();
each_blocks[i].m(div8, null);
}
}
for (; i < each_blocks.length; i += 1) {
each_blocks[i].d(1);
}
each_blocks.length = each_value.length;
}
},
i: noop,
o: noop,
d: function destroy(detaching) {
if (detaching) detach_dev(div10);
destroy_each(each_blocks_2, detaching);
destroy_each(each_blocks_1, detaching);
destroy_each(each_blocks, detaching);
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_fragment$8.name,
type: "component",
source: "",
ctx
});
return block;
}
function instance$8($$self, $$props, $$invalidate) {
let $health;
let $mana;
let $strength;
let $agility;
let $intelligence;
let $charisma;
let $luck;
let $money;
let $objectives;
let $inventory;
let $skills;
validate_store(health, 'health');
component_subscribe($$self, health, $$value => $$invalidate(0, $health = $$value));
validate_store(mana, 'mana');
component_subscribe($$self, mana, $$value => $$invalidate(1, $mana = $$value));
validate_store(strength, 'strength');
component_subscribe($$self, strength, $$value => $$invalidate(2, $strength = $$value));
validate_store(agility, 'agility');
component_subscribe($$self, agility, $$value => $$invalidate(3, $agility = $$value));
validate_store(intelligence, 'intelligence');
component_subscribe($$self, intelligence, $$value => $$invalidate(4, $intelligence = $$value));
validate_store(charisma, 'charisma');
component_subscribe($$self, charisma, $$value => $$invalidate(5, $charisma = $$value));
validate_store(luck, 'luck');
component_subscribe($$self, luck, $$value => $$invalidate(6, $luck = $$value));
validate_store(money, 'money');
component_subscribe($$self, money, $$value => $$invalidate(7, $money = $$value));
validate_store(objectives, 'objectives');
component_subscribe($$self, objectives, $$value => $$invalidate(8, $objectives = $$value));
validate_store(inventory, 'inventory');
component_subscribe($$self, inventory, $$value => $$invalidate(9, $inventory = $$value));
validate_store(skills, 'skills');
component_subscribe($$self, skills, $$value => $$invalidate(10, $skills = $$value));
let { $$slots: slots = {}, $$scope } = $$props;
validate_slots('MovingDotStatStoreandDisplay', slots, []);
function toggleSkill(skill) {
skill.learned = !skill.learned;
skills.update(n => n);
}
const writable_props = [];
Object.keys($$props).forEach(key => {
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(`<MovingDotStatStoreandDisplay> was created with unknown prop '${key}'`);
});
const click_handler = skill => toggleSkill(skill);
$$self.$capture_state = () => ({
health,
mana,
strength,
agility,
intelligence,
charisma,
luck,
money,
inventory,
skills,
objectives,
toggleSkill,
$health,
$mana,
$strength,
$agility,
$intelligence,
$charisma,
$luck,
$money,
$objectives,
$inventory,
$skills
});
return [
$health,
$mana,
$strength,
$agility,
$intelligence,
$charisma,
$luck,
$money,
$objectives,
$inventory,
$skills,
toggleSkill,
click_handler
];
}
class MovingDotStatStoreandDisplay extends SvelteComponentDev {
constructor(options) {
super(options);
init(this, options, instance$8, create_fragment$8, safe_not_equal, {});
dispatch_dev("SvelteRegisterComponent", {
component: this,
tagName: "MovingDotStatStoreandDisplay",
options,
id: create_fragment$8.name
});
}
}
/* src\MovingDotSpaceThemeManager.svelte generated by Svelte v3.59.2 */
const file$7 = "src\\MovingDotSpaceThemeManager.svelte";
function create_fragment$7(ctx) {
let form;
let input0;
let t0;
let input1;
let t1;
let input2;
let t2;
let button0;
let t4;
let button1;
let t6;
let input3;
let t7;
let label;
let t9;
let div5;
let div0;
let t10;
let t11;
let br0;
let t12;
let t13;
let div1;
let t15;
let div2;
let t16;
let br1;
let t17;
let br2;
let t18;
let t19;
let div3;
let t20;
let br3;
let t21;
let t22;
let div4;
let mounted;
let dispose;
const block = {
c: function create() {
form = element("form");
input0 = element("input");
t0 = space();
input1 = element("input");
t1 = space();
input2 = element("input");
t2 = space();
button0 = element("button");
button0.textContent = "Add Item";
t4 = space();
button1 = element("button");
button1.textContent = "Download Configuration";
t6 = space();
input3 = element("input");
t7 = space();
label = element("label");
label.textContent = "Upload Configuration";
t9 = space();
div5 = element("div");
div0 = element("div");
t10 = text(/*ChangedContentPlaceholder*/ ctx[0]);
t11 = space();
br0 = element("br");
t12 = text("\r\n Example - Write a story where the main event are in this order: gosomewhere getsomething makeobservation getsomething talktosomeone makeobservation getsomething talktosomeone gosomewhere fight talktosomeone fight fight talktosomeone talktosomeone talktosomeone gosomewhere talktosomeone");
t13 = space();
div1 = element("div");
div1.textContent = "Event Trigger - Collisions\r\n Combat Mechanics - Modal (aka anything)\r\n objectives = boolean\r\n Story = conflict and resolution towards solving a larger conflict\r\n basic story elements fight getsomething gosomewhere talktosomeone makeobservation - use the random count component above";
t15 = space();
div2 = element("div");
t16 = text("Extra Stats ");
br1 = element("br");
t17 = text(" \r\n Save State ");
br2 = element("br");
t18 = text("\r\n Clock System - based on the user movement?");
t19 = space();
div3 = element("div");
t20 = text("Story Line ");
br3 = element("br");
t21 = text("\r\n Hard as it combines skills, targets, inventory, objectives and player interaction = = = Give ChatGPT a sample config then ask for a story and then ask to turn that story into config format");
t22 = space();
div4 = element("div");
div4.textContent = "Themes inside themes = storyline aka multiple situational themes = a story";
attr_dev(input0, "type", "text");
attr_dev(input0, "placeholder", "Type (weapon, armor, consumable)");
add_location(input0, file$7, 67, 4, 2591);
attr_dev(input1, "type", "text");
attr_dev(input1, "placeholder", "Name");
add_location(input1, file$7, 68, 4, 2691);
attr_dev(input2, "type", "text");
attr_dev(input2, "placeholder", "Description");
add_location(input2, file$7, 69, 4, 2763);
attr_dev(button0, "type", "submit");
add_location(button0, file$7, 70, 4, 2849);
add_location(form, file$7, 66, 0, 2544);
add_location(button1, file$7, 76, 0, 3028);
attr_dev(input3, "type", "file");
attr_dev(input3, "id", "fileInput");
set_style(input3, "display", "none");
add_location(input3, file$7, 77, 0, 3102);
attr_dev(label, "for", "fileInput");
attr_dev(label, "class", "btn");
add_location(label, file$7, 78, 0, 3191);
add_location(br0, file$7, 82, 38, 3346);
add_location(div0, file$7, 81, 4, 3301);
add_location(div1, file$7, 86, 4, 3667);
add_location(br1, file$7, 95, 20, 4040);
add_location(br2, file$7, 96, 19, 4069);
add_location(div2, file$7, 94, 4, 4012);
add_location(br3, file$7, 101, 19, 4174);
add_location(div3, file$7, 100, 4, 4148);
add_location(div4, file$7, 105, 4, 4396);
attr_dev(div5, "class", "grid-themegridContainer svelte-1b47i4k");
add_location(div5, file$7, 80, 0, 3258);
},
l: function claim(nodes) {
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
},
m: function mount(target, anchor) {
insert_dev(target, form, anchor);
append_dev(form, input0);
set_input_value(input0, /*newItem*/ ctx[1].type);
append_dev(form, t0);
append_dev(form, input1);
set_input_value(input1, /*newItem*/ ctx[1].name);
append_dev(form, t1);
append_dev(form, input2);
set_input_value(input2, /*newItem*/ ctx[1].description);
append_dev(form, t2);
append_dev(form, button0);
insert_dev(target, t4, anchor);
insert_dev(target, button1, anchor);
insert_dev(target, t6, anchor);
insert_dev(target, input3, anchor);
insert_dev(target, t7, anchor);
insert_dev(target, label, anchor);
insert_dev(target, t9, anchor);
insert_dev(target, div5, anchor);
append_dev(div5, div0);
append_dev(div0, t10);
append_dev(div0, t11);
append_dev(div0, br0);
append_dev(div0, t12);
append_dev(div5, t13);
append_dev(div5, div1);
append_dev(div5, t15);
append_dev(div5, div2);
append_dev(div2, t16);
append_dev(div2, br1);
append_dev(div2, t17);
append_dev(div2, br2);
append_dev(div2, t18);
append_dev(div5, t19);
append_dev(div5, div3);
append_dev(div3, t20);
append_dev(div3, br3);
append_dev(div3, t21);
append_dev(div5, t22);
append_dev(div5, div4);
if (!mounted) {
dispose = [
listen_dev(input0, "input", /*input0_input_handler*/ ctx[5]),
listen_dev(input1, "input", /*input1_input_handler*/ ctx[6]),
listen_dev(input2, "input", /*input2_input_handler*/ ctx[7]),
listen_dev(form, "submit", prevent_default(/*addItem*/ ctx[2]), false, true, false, false),
listen_dev(button1, "click", /*downloadConfiguration*/ ctx[3], false, false, false, false),
listen_dev(input3, "change", /*handleFileUpload*/ ctx[4], false, false, false, false)
];
mounted = true;
}
},
p: function update(ctx, [dirty]) {
if (dirty & /*newItem*/ 2 && input0.value !== /*newItem*/ ctx[1].type) {
set_input_value(input0, /*newItem*/ ctx[1].type);
}
if (dirty & /*newItem*/ 2 && input1.value !== /*newItem*/ ctx[1].name) {
set_input_value(input1, /*newItem*/ ctx[1].name);
}
if (dirty & /*newItem*/ 2 && input2.value !== /*newItem*/ ctx[1].description) {
set_input_value(input2, /*newItem*/ ctx[1].description);
}
if (dirty & /*ChangedContentPlaceholder*/ 1) set_data_dev(t10, /*ChangedContentPlaceholder*/ ctx[0]);
},
i: noop,
o: noop,
d: function destroy(detaching) {
if (detaching) detach_dev(form);
if (detaching) detach_dev(t4);
if (detaching) detach_dev(button1);
if (detaching) detach_dev(t6);
if (detaching) detach_dev(input3);
if (detaching) detach_dev(t7);
if (detaching) detach_dev(label);
if (detaching) detach_dev(t9);
if (detaching) detach_dev(div5);
mounted = false;
run_all(dispose);
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_fragment$7.name,
type: "component",
source: "",
ctx
});
return block;
}
function instance$7($$self, $$props, $$invalidate) {
let $targets;
let $objectives;
let $skills;
let $inventory;
validate_store(targets, 'targets');
component_subscribe($$self, targets, $$value => $$invalidate(10, $targets = $$value));
validate_store(objectives, 'objectives');
component_subscribe($$self, objectives, $$value => $$invalidate(11, $objectives = $$value));
validate_store(skills, 'skills');
component_subscribe($$self, skills, $$value => $$invalidate(12, $skills = $$value));
validate_store(inventory, 'inventory');
component_subscribe($$self, inventory, $$value => $$invalidate(13, $inventory = $$value));
let { $$slots: slots = {}, $$scope } = $$props;
validate_slots('MovingDotSpaceThemeManager', slots, []);
let { ChangedContentPlaceholder = "" } = $$props;
let newItem = { type: "", name: "", description: "" };
let newSkill = { branch: "", name: "", learned: false };
let newObjective = { branch: "", name: "", complete: false };
// ... similarly for targets
function addItem() {
inventory.update(items => [...items, newItem]);
$$invalidate(1, newItem = { type: "", name: "", description: "" }); // Reset form
}
function addSkill() {
skills.update(skills => [...skills, newSkill]);
newSkill = { branch: "", name: "", learned: false }; // Reset form
}
function addObjective() {
objectives.update(objectives => [...objectives, newObjective]);
newObjective = { branch: "", name: "", complete: false }; // Reset form
}
// ... similarly for targets
// Functions to save and load configurations to/from localStorage or a backend would also be defined here
// Function to download the current configuration as a JSON file
function downloadConfiguration() {
const gameConfig = {
inventory: $inventory,
skills: $skills,
objectives: $objectives,
targets: $targets
};
const blob = new Blob([JSON.stringify(gameConfig, null, 2)], { type: 'application/json' });
const href = URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = href;
link.download = 'gameConfig.json';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
// Function to load configuration from an uploaded JSON file
function handleFileUpload(event) {
const file = event.target.files[0];
if (file) {
const reader = new FileReader();
reader.onload = e => {
const fileContent = e.target.result;
const { inventory: loadedInventory, skills: loadedSkills, objectives: loadedObjectives, targets: loadedTargets } = JSON.parse(fileContent);
inventory.set(loadedInventory);
skills.set(loadedSkills);
objectives.set(loadedObjectives);
targets.set(loadedTargets);
alert('Configuration loaded!');
};
reader.readAsText(file);
}
}
const writable_props = ['ChangedContentPlaceholder'];
Object.keys($$props).forEach(key => {
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(`<MovingDotSpaceThemeManager> was created with unknown prop '${key}'`);
});
function input0_input_handler() {
newItem.type = this.value;
$$invalidate(1, newItem);
}
function input1_input_handler() {
newItem.name = this.value;
$$invalidate(1, newItem);
}
function input2_input_handler() {
newItem.description = this.value;
$$invalidate(1, newItem);
}
$$self.$$set = $$props => {
if ('ChangedContentPlaceholder' in $$props) $$invalidate(0, ChangedContentPlaceholder = $$props.ChangedContentPlaceholder);
};
$$self.$capture_state = () => ({
ChangedContentPlaceholder,
inventory,
skills,
objectives,
targets,
newItem,
newSkill,
newObjective,
addItem,
addSkill,
addObjective,
downloadConfiguration,
handleFileUpload,
$targets,
$objectives,
$skills,
$inventory
});
$$self.$inject_state = $$props => {
if ('ChangedContentPlaceholder' in $$props) $$invalidate(0, ChangedContentPlaceholder = $$props.ChangedContentPlaceholder);
if ('newItem' in $$props) $$invalidate(1, newItem = $$props.newItem);
if ('newSkill' in $$props) newSkill = $$props.newSkill;
if ('newObjective' in $$props) newObjective = $$props.newObjective;
};
if ($$props && "$$inject" in $$props) {
$$self.$inject_state($$props.$$inject);
}
return [
ChangedContentPlaceholder,
newItem,
addItem,
downloadConfiguration,
handleFileUpload,
input0_input_handler,
input1_input_handler,
input2_input_handler
];
}
class MovingDotSpaceThemeManager extends SvelteComponentDev {
constructor(options) {
super(options);
init(this, options, instance$7, create_fragment$7, safe_not_equal, { ChangedContentPlaceholder: 0 });
dispatch_dev("SvelteRegisterComponent", {
component: this,
tagName: "MovingDotSpaceThemeManager",
options,
id: create_fragment$7.name
});
}
get ChangedContentPlaceholder() {
throw new Error("<MovingDotSpaceThemeManager>: Props cannot be read directly from the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
}
set ChangedContentPlaceholder(value) {
throw new Error("<MovingDotSpaceThemeManager>: Props cannot be set directly on the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
}
}
// themeConfig.js
const themes = {
'User Custom': {
background: '/path/to/space_background.png',
inventory: [
{ type: "weapon", name: "Laser Gun", description: "A powerful laser weapon." },
// ... more space items
],
skills: [
{ branch: "Skill Group 1", name: "Skill One", learned: false },
// ... more space skills
],
objectives: [
{ branch: "Mission 1", name: "Mission Details", complete: false },
// ... more space objectives
],
// ... and so on for targets
targets: [
{ name: "Target 1", x: 50, y: 50, collisionType: "alert", collisiontext: "First Test"},
],
},
'Default': {
background: '/AutoGameBackgrounds/1stGameLoc123.png',
inventory: [
{ type: "weapon", name: "Sword", description: "A sharp blade." },
{ type: "armor", name: "Shield", description: "Protects against attacks." },
{ type: "consumable", name: "Health Potion", description: "Restores health." },
// ... more space items
],
skills: [
{ branch: "Combat", name: "Basic Attack", learned: false },
{ branch: "Magic", name: "Fireball", learned: false },
{ branch: "Stealth", name: "Sneak", learned: false },
// ... more space skills
],
objectives: [
{ branch: "Seperate", name: "Visit Mountain Peak", complete: false },
{ branch: "Mission 1", name: "Intercept The Courier (Search the Locations)", complete: false },
{ branch: "Mission 1", name: "Deliver the package to Market Stall", complete: false },
// ... more space objectives
],
// ... and so on for targets
targets: [
{ name: "Target 1", x: 50, y: 50, collisionType: "alert", collisiontext: "First Test"},
{ name: "Target 2", x: 100, y: 100, collisionType: "", collisiontext: ""},
{ name: "Entrance", x: 995, y: 660, collisionType: "modal", modalConfig: {
title: "Entrance",
content: "You've reached the Entrance. What's your next step?",
actions: [
{
label: "Ask for guidance on next move",
action: "askforDirections"
},
{
label: "Buy an Axe",
action: "buyAxeAlert"
}
// ... more actions if necessary
]},
},
{ name: "Market Stall", x: 200, y: 300, collisionType: "", collisiontext: "" }, // A market stall in the bustling market area.
{ name: "Inn Entrance", x: 400, y: 450, collisionType: "", collisiontext: "" }, // The entrance to the inn for rest or information.
{ name: "Town Hall", x: 600, y: 350, collisionType: "", collisiontext: "" }, // The entrance to the town hall for quests.
{ name: "Fountain", x: 500, y: 500, collisionType: "", collisiontext: "" }, // A fountain in the town square as a meeting point.
{ name: "Bridge", x: 1100, y: 700, collisionType: "", collisiontext: "" }, // A bridge in the mystical forest area.
{ name: "Waterfall", x: 1300, y: 800, collisionType: "", collisiontext: "" }, // A waterfall that could hide secrets or treasures.
{ name: "Mountain Peak", x: 1500, y: 100, collisionType: "", collisiontext: "" },
//{ name: "Mysterious Stranger", x: 350, y: 550, collisionType: "alert", collisiontext: "Beware the hidden caves in the north." },
//{ name: "Hidden Cave", x: 1200, y: 400, collisionType: "changeBackgroundColor", color: "#0B3D91" },
//{ name: "Ancient Tree", x: 300, y: 700, collisionType: "playSound", soundUrl: "tree_whisper.mp3" },
//{ name: "Forgotten Monument", x: 700, y: 800, collisionType: "startAnimation", elementId: "monument", animationClass: "glow" },
//{ name: "Wizard's Tower", x: 950, y: 150, collisionType: "rotateDot" },
//{ name: "Lakeside", x: 1400, y: 600, collisionType: "changeDotColor", color: "#00BFFF" },
//{ name: "Dragon's Lair", x: 1600, y: 200, collisionType: "incrementScore", incrementValue: 50 },
//{ name: "Abandoned Shipwreck", x: 1300, y: 500, collisionType: "shrinkDot" },
],
},
'Space Odyssey': {
background: '/AutoGameBackgrounds/SpaceOdysseyGameLoc.png',
inventory: [
{ type: "weapon", name: "Laser Gun", description: "A powerful laser weapon." },
// ... more space items
],
skills: [
{ branch: "Piloting", name: "Astro Navigation", learned: false },
// ... more space skills
],
objectives: [
{ id: 1, name: "Dock at the Space Station", complete: false, progress: 0 },
{ id: 2, name: "Repair the Communication Array", complete: false, progress: 0 },
{ id: 3, name: "Collect Rare Asteroid Minerals", complete: false, progress: 0 },
{ id: 4, name: "Negotiate Peace with the Alien Species", complete: false, progress: 0 },
{ id: 5, name: "Explore the Abandoned Spaceship", complete: false, progress: 0 },
{ id: 6, name: "Survive the Meteor Shower", complete: false, progress: 0 },
{ id: 7, name: "Decrypt the Ancient Space Map", complete: false, progress: 0 },
{ id: 8, name: "Win the Space Race", complete: false, progress: 0 },
{ id: 9, name: "Defend the Colony from Space Pirates", complete: false, progress: 0 },
{ id: 10, name: "Discover a New Lifeform", complete: false, progress: 0 }
// ... more space objectives
],
targets: [
{ name: "Target 1", x: 50, y: 50, collisionType: "alert", collisiontext: "First Test"},
],
},
'Medieval Fantasy': {
background: '/AutoGameBackgrounds/MedievalFantasyGameLoc.png',
inventory: [
{ type: "weapon", name: "Longsword", description: "A sturdy steel blade." },
// ... more medieval items
],
skills: [
{ branch: "Piloting", name: "Astro Navigation", learned: false },
// ... more space skills
],
objectives: [
{ id: 1, name: "Rescue the Captured Knight", complete: false, progress: 0 },
{ id: 2, name: "Find the Lost Artifact", complete: false, progress: 0 },
{ id: 3, name: "Defeat the Dragon", complete: false, progress: 0 },
{ id: 4, name: "Win the Archery Tournament", complete: false, progress: 0 },
{ id: 5, name: "Break the Evil Curse", complete: false, progress: 0 },
{ id: 6, name: "Uncover the Secret of the Ancient Ruins", complete: false, progress: 0 },
{ id: 7, name: "Protect the Village from Bandits", complete: false, progress: 0 },
{ id: 8, name: "Retrieve the Stolen Royal Jewels", complete: false, progress: 0 },
{ id: 9, name: "Discover the Hidden Enchanted Forest", complete: false, progress: 0 },
{ id: 10, name: "Master the Forbidden Magic Spell", complete: false, progress: 0 }
// ... more space objectives
],
targets: [
{ name: "Target 1", x: 50, y: 50, collisionType: "alert", collisiontext: "First Test"},
],
// ... skills, objectives, and targets for medieval theme
},
'Cyberpunk': {
background: '/AutoGameBackgrounds/CyberpunkGameLoc.png',
inventory: [
{ type: "weapon", name: "Plasma Rifle", description: "A high-tech firearm with plasma rounds." },
{ type: "armor", name: "NanoSuit", description: "Protects with reactive nano technology." },
{ type: "consumable", name: "Stim Pack", description: "Enhances reflexes temporarily." },
// ... more cyberpunk items
],
// ... skills, objectives, and targets for cyberpunk theme
skills: [
{ branch: "Hacking", name: "Cyber Intrusion", learned: false },
{ branch: "Combat", name: "Gun Kata", learned: false },
{ branch: "Stealth", name: "Cloaking", learned: false },
// ... more space skills
],
objectives: [
{ id: 1, name: "Hack the Mainframe", complete: false, progress: 0 },
{ id: 2, name: "Escape the Megacorp Security", complete: false, progress: 0 },
{ id: 3, name: "Infiltrate the Underground Hacker Group", complete: false, progress: 0 },
{ id: 4, name: "Negotiate a Truce with the Rival Gang", complete: false, progress: 0 },
{ id: 5, name: "Expose the Corrupt Politician", complete: false, progress: 0 },
{ id: 6, name: "Survive the Drone Assault", complete: false, progress: 0 },
{ id: 7, name: "Retrieve the Stolen Cybernetic Tech", complete: false, progress: 0 },
{ id: 8, name: "Win the Street Race in Neo-Tokyo", complete: false, progress: 0 },
{ id: 9, name: "Decrypt the Corporate Data Files", complete: false, progress: 0 },
{ id: 10, name: "Disarm the City-Wide Neural Bomb", complete: false, progress: 0 }
// ... more space objectives
],
targets: [
{ name: "Target 1", x: 50, y: 50, collisionType: "alert", collisiontext: "First Test"},
{ name: "MegaCorp Server", x: 200, y: 50, collisionType: "modal", collisiontext: "First Test"},
{ name: "City Police", x: 50, y: 250, collisionType: "modal", collisiontext: "First Test"},
{ name: "Rival Gang", x: 550, y: 550, collisionType: "modal", collisiontext: "First Test"},
],
}
};
/* src\MovingDotSpacePortfromReact.svelte generated by Svelte v3.59.2 */
const { Object: Object_1$1, console: console_1$4 } = globals;
const file$6 = "src\\MovingDotSpacePortfromReact.svelte";
function get_each_context$3(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[23] = list[i];
return child_ctx;
}
function get_each_context_1(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[26] = list[i];
return child_ctx;
}
// (149:4) {#each themeKeys as key}
function create_each_block_1(ctx) {
let option;
let t_value = /*key*/ ctx[26] + "";
let t;
const block = {
c: function create() {
option = element("option");
t = text(t_value);
option.__value = /*key*/ ctx[26];
option.value = option.__value;
add_location(option, file$6, 149, 8, 5561);
},
m: function mount(target, anchor) {
insert_dev(target, option, anchor);
append_dev(option, t);
},
p: noop,
d: function destroy(detaching) {
if (detaching) detach_dev(option);
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_each_block_1.name,
type: "each",
source: "(149:4) {#each themeKeys as key}",
ctx
});
return block;
}
// (159:4) {#each $targets as target (target.name)}
function create_each_block$3(key_1, ctx) {
let first;
let target;
let t0;
let span;
let t1_value = /*target*/ ctx[23].name + "";
let t1;
let current;
target = new MovingDotTargetPortfromReact({
props: { position: /*target*/ ctx[23] },
$$inline: true
});
const block = {
key: key_1,
first: null,
c: function create() {
first = empty();
create_component(target.$$.fragment);
t0 = space();
span = element("span");
t1 = text(t1_value);
set_style(span, "position", "absolute");
set_style(span, "left", /*target*/ ctx[23].x + "px");
set_style(span, "top", /*target*/ ctx[23].y + "px");
add_location(span, file$6, 160, 8, 6607);
this.first = first;
},
m: function mount(target$1, anchor) {
insert_dev(target$1, first, anchor);
mount_component(target, target$1, anchor);
insert_dev(target$1, t0, anchor);
insert_dev(target$1, span, anchor);
append_dev(span, t1);
current = true;
},
p: function update(new_ctx, dirty) {
ctx = new_ctx;
const target_changes = {};
if (dirty & /*$targets*/ 512) target_changes.position = /*target*/ ctx[23];
target.$set(target_changes);
if ((!current || dirty & /*$targets*/ 512) && t1_value !== (t1_value = /*target*/ ctx[23].name + "")) set_data_dev(t1, t1_value);
if (!current || dirty & /*$targets*/ 512) {
set_style(span, "left", /*target*/ ctx[23].x + "px");
}
if (!current || dirty & /*$targets*/ 512) {
set_style(span, "top", /*target*/ ctx[23].y + "px");
}
},
i: function intro(local) {
if (current) return;
transition_in(target.$$.fragment, local);
current = true;
},
o: function outro(local) {
transition_out(target.$$.fragment, local);
current = false;
},
d: function destroy(detaching) {
if (detaching) detach_dev(first);
destroy_component(target, detaching);
if (detaching) detach_dev(t0);
if (detaching) detach_dev(span);
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_each_block$3.name,
type: "each",
source: "(159:4) {#each $targets as target (target.name)}",
ctx
});
return block;
}
// (165:4) {#if isModalOpen}
function create_if_block$3(ctx) {
let modal;
let current;
modal = new MovingDotSpaceSimpleModal({
props: {
isOpen: /*isModalOpen*/ ctx[3],
onClose: /*handleModalClose*/ ctx[15],
title: "Test Collision",
content: /*currentcollisiontext*/ ctx[4],
items: /*currentcollisionitems*/ ctx[5],
currentTheme: /*currentTheme*/ ctx[7]
},
$$inline: true
});
const block = {
c: function create() {
create_component(modal.$$.fragment);
},
m: function mount(target, anchor) {
mount_component(modal, target, anchor);
current = true;
},
p: function update(ctx, dirty) {
const modal_changes = {};
if (dirty & /*isModalOpen*/ 8) modal_changes.isOpen = /*isModalOpen*/ ctx[3];
if (dirty & /*currentcollisiontext*/ 16) modal_changes.content = /*currentcollisiontext*/ ctx[4];
if (dirty & /*currentcollisionitems*/ 32) modal_changes.items = /*currentcollisionitems*/ ctx[5];
if (dirty & /*currentTheme*/ 128) modal_changes.currentTheme = /*currentTheme*/ ctx[7];
modal.$set(modal_changes);
},
i: function intro(local) {
if (current) return;
transition_in(modal.$$.fragment, local);
current = true;
},
o: function outro(local) {
transition_out(modal.$$.fragment, local);
current = false;
},
d: function destroy(detaching) {
destroy_component(modal, detaching);
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_if_block$3.name,
type: "if",
source: "(165:4) {#if isModalOpen}",
ctx
});
return block;
}
function create_fragment$6(ctx) {
let select;
let t0;
let dotgamethememanager;
let t1;
let div1;
let canvas_1;
let t2;
let movingdot;
let t3;
let div0;
let t4;
let t5_value = /*$dotPosition*/ ctx[0].x + "";
let t5;
let t6;
let t7_value = /*$dotPosition*/ ctx[0].y + "";
let t7;
let t8;
let t9;
let each_blocks = [];
let each1_lookup = new Map();
let t10;
let t11;
let movingdotstats;
let current;
let mounted;
let dispose;
let each_value_1 = /*themeKeys*/ ctx[12];
validate_each_argument(each_value_1);
let each_blocks_1 = [];
for (let i = 0; i < each_value_1.length; i += 1) {
each_blocks_1[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i));
}
dotgamethememanager = new MovingDotSpaceThemeManager({
props: {
ChangedContentPlaceholder: /*ChangedContentPlaceholdertoSend*/ ctx[1]
},
$$inline: true
});
let movingdot_props = {
position: /*$dotPosition*/ ctx[0],
boundaries: /*boundaries*/ ctx[11]
};
movingdot = new MovingDotPortfromReact({ props: movingdot_props, $$inline: true });
/*movingdot_binding*/ ctx[19](movingdot);
movingdot.$on("move", /*move_handler*/ ctx[20]);
let each_value = /*$targets*/ ctx[9];
validate_each_argument(each_value);
const get_key = ctx => /*target*/ ctx[23].name;
validate_each_keys(ctx, each_value, get_each_context$3, get_key);
for (let i = 0; i < each_value.length; i += 1) {
let child_ctx = get_each_context$3(ctx, each_value, i);
let key = get_key(child_ctx);
each1_lookup.set(key, each_blocks[i] = create_each_block$3(key, child_ctx));
}
let if_block = /*isModalOpen*/ ctx[3] && create_if_block$3(ctx);
movingdotstats = new MovingDotStatStoreandDisplay({ $$inline: true });
const block = {
c: function create() {
select = element("select");
for (let i = 0; i < each_blocks_1.length; i += 1) {
each_blocks_1[i].c();
}
t0 = space();
create_component(dotgamethememanager.$$.fragment);
t1 = space();
div1 = element("div");
canvas_1 = element("canvas");
t2 = space();
create_component(movingdot.$$.fragment);
t3 = space();
div0 = element("div");
t4 = text("Minor Game Events Log for player ||| Position for Developer ");
t5 = text(t5_value);
t6 = space();
t7 = text(t7_value);
t8 = text(" - TODO - Story Line / Avatars? / Clock System ||| For Job Experience focused Stats can be Emotions Stress Frustration Relief Tiredness Confidence (Percieved Skill) Experience (Actual Skill)");
t9 = space();
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
t10 = space();
if (if_block) if_block.c();
t11 = space();
create_component(movingdotstats.$$.fragment);
if (/*currentTheme*/ ctx[7] === void 0) add_render_callback(() => /*select_change_handler*/ ctx[17].call(select));
add_location(select, file$6, 147, 0, 5463);
set_style(canvas_1, "width", "100%");
set_style(canvas_1, "height", "100%");
attr_dev(canvas_1, "tabindex", "0");
add_location(canvas_1, file$6, 155, 4, 5943);
attr_dev(div0, "id", "overlayText");
attr_dev(div0, "class", "svelte-c2nwl9");
add_location(div0, file$6, 157, 4, 6201);
attr_dev(div1, "id", "game-container");
set_style(div1, "position", "relative");
set_style(div1, "width", "100%");
set_style(div1, "height", "100vh");
set_style(div1, "border", "1px solid black");
set_style(div1, "overflow", "hidden");
set_style(div1, "background-image", "url('" + /*CurrentGameBackground*/ ctx[8] + "')");
set_style(div1, "background-size", "cover");
set_style(div1, "background-position", "center");
add_location(div1, file$6, 154, 0, 5710);
},
l: function claim(nodes) {
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
},
m: function mount(target, anchor) {
insert_dev(target, select, anchor);
for (let i = 0; i < each_blocks_1.length; i += 1) {
if (each_blocks_1[i]) {
each_blocks_1[i].m(select, null);
}
}
select_option(select, /*currentTheme*/ ctx[7], true);
insert_dev(target, t0, anchor);
mount_component(dotgamethememanager, target, anchor);
insert_dev(target, t1, anchor);
insert_dev(target, div1, anchor);
append_dev(div1, canvas_1);
/*canvas_1_binding*/ ctx[18](canvas_1);
append_dev(div1, t2);
mount_component(movingdot, div1, null);
append_dev(div1, t3);
append_dev(div1, div0);
append_dev(div0, t4);
append_dev(div0, t5);
append_dev(div0, t6);
append_dev(div0, t7);
append_dev(div0, t8);
append_dev(div1, t9);
for (let i = 0; i < each_blocks.length; i += 1) {
if (each_blocks[i]) {
each_blocks[i].m(div1, null);
}
}
append_dev(div1, t10);
if (if_block) if_block.m(div1, null);
insert_dev(target, t11, anchor);
mount_component(movingdotstats, target, anchor);
current = true;
if (!mounted) {
dispose = [
listen_dev(select, "change", /*select_change_handler*/ ctx[17]),
listen_dev(select, "change", /*changeTheme*/ ctx[13], false, false, false, false),
listen_dev(canvas_1, "click", /*handleSpaceClick*/ ctx[14], false, false, false, false)
];
mounted = true;
}
},
p: function update(ctx, [dirty]) {
if (dirty & /*themeKeys*/ 4096) {
each_value_1 = /*themeKeys*/ ctx[12];
validate_each_argument(each_value_1);
let i;
for (i = 0; i < each_value_1.length; i += 1) {
const child_ctx = get_each_context_1(ctx, each_value_1, i);
if (each_blocks_1[i]) {
each_blocks_1[i].p(child_ctx, dirty);
} else {
each_blocks_1[i] = create_each_block_1(child_ctx);
each_blocks_1[i].c();
each_blocks_1[i].m(select, null);
}
}
for (; i < each_blocks_1.length; i += 1) {
each_blocks_1[i].d(1);
}
each_blocks_1.length = each_value_1.length;
}
if (dirty & /*currentTheme, themeKeys*/ 4224) {
select_option(select, /*currentTheme*/ ctx[7]);
}
const dotgamethememanager_changes = {};
if (dirty & /*ChangedContentPlaceholdertoSend*/ 2) dotgamethememanager_changes.ChangedContentPlaceholder = /*ChangedContentPlaceholdertoSend*/ ctx[1];
dotgamethememanager.$set(dotgamethememanager_changes);
const movingdot_changes = {};
if (dirty & /*$dotPosition*/ 1) movingdot_changes.position = /*$dotPosition*/ ctx[0];
movingdot.$set(movingdot_changes);
if ((!current || dirty & /*$dotPosition*/ 1) && t5_value !== (t5_value = /*$dotPosition*/ ctx[0].x + "")) set_data_dev(t5, t5_value);
if ((!current || dirty & /*$dotPosition*/ 1) && t7_value !== (t7_value = /*$dotPosition*/ ctx[0].y + "")) set_data_dev(t7, t7_value);
if (dirty & /*$targets*/ 512) {
each_value = /*$targets*/ ctx[9];
validate_each_argument(each_value);
group_outros();
validate_each_keys(ctx, each_value, get_each_context$3, get_key);
each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx, each_value, each1_lookup, div1, outro_and_destroy_block, create_each_block$3, t10, get_each_context$3);
check_outros();
}
if (/*isModalOpen*/ ctx[3]) {
if (if_block) {
if_block.p(ctx, dirty);
if (dirty & /*isModalOpen*/ 8) {
transition_in(if_block, 1);
}
} else {
if_block = create_if_block$3(ctx);
if_block.c();
transition_in(if_block, 1);
if_block.m(div1, null);
}
} else if (if_block) {
group_outros();
transition_out(if_block, 1, 1, () => {
if_block = null;
});
check_outros();
}
if (!current || dirty & /*CurrentGameBackground*/ 256) {
set_style(div1, "background-image", "url('" + /*CurrentGameBackground*/ ctx[8] + "')");
}
},
i: function intro(local) {
if (current) return;
transition_in(dotgamethememanager.$$.fragment, local);
transition_in(movingdot.$$.fragment, local);
for (let i = 0; i < each_value.length; i += 1) {
transition_in(each_blocks[i]);
}
transition_in(if_block);
transition_in(movingdotstats.$$.fragment, local);
current = true;
},
o: function outro(local) {
transition_out(dotgamethememanager.$$.fragment, local);
transition_out(movingdot.$$.fragment, local);
for (let i = 0; i < each_blocks.length; i += 1) {
transition_out(each_blocks[i]);
}
transition_out(if_block);
transition_out(movingdotstats.$$.fragment, local);
current = false;
},
d: function destroy(detaching) {
if (detaching) detach_dev(select);
destroy_each(each_blocks_1, detaching);
if (detaching) detach_dev(t0);
destroy_component(dotgamethememanager, detaching);
if (detaching) detach_dev(t1);
if (detaching) detach_dev(div1);
/*canvas_1_binding*/ ctx[18](null);
/*movingdot_binding*/ ctx[19](null);
destroy_component(movingdot);
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].d();
}
if (if_block) if_block.d();
if (detaching) detach_dev(t11);
destroy_component(movingdotstats, detaching);
mounted = false;
run_all(dispose);
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_fragment$6.name,
type: "component",
source: "",
ctx
});
return block;
}
function instance$6($$self, $$props, $$invalidate) {
let $dotPosition;
let $targets;
validate_store(targets, 'targets');
component_subscribe($$self, targets, $$value => $$invalidate(9, $targets = $$value));
let { $$slots: slots = {}, $$scope } = $$props;
validate_slots('MovingDotSpacePortfromReact', slots, []);
let ChangedContentPlaceholdertoSend = "No changes";
let canvas;
let dotPosition = writable({ x: 900, y: 450 });
validate_store(dotPosition, 'dotPosition');
component_subscribe($$self, dotPosition, value => $$invalidate(0, $dotPosition = value));
let boundaries = { maxX: 1835, maxY: 890, minX: 0, minY: 0 };
let isModalOpen = false;
let currentcollisiontext;
let currentcollisionitems = [];
let movingDotElement;
let currentTheme = 'Default'; // default theme
let themeKeys = Object.keys(themes);
let CurrentGameBackground = themes["Default"].background; //GameBackgrounds[0].url;
function changeTheme(event) {
$$invalidate(7, currentTheme = event.target.value);
const theme = themes[currentTheme];
inventory.set(theme.inventory);
skills.set(theme.skills);
objectives.set(theme.objectives);
targets.set(theme.targets);
// ... and so on for other stores
$$invalidate(8, CurrentGameBackground = theme.background);
$$invalidate(1, ChangedContentPlaceholdertoSend = "TODO is all other variables to change");
}
function handleSpaceClick() {
//console.log('Container clicked!', event);
movingDotElement.focusDot();
}
function handleModalClose() {
$$invalidate(3, isModalOpen = false);
movingDotElement.focusDot();
}
function updateDotPosition(newX, newY) {
dotPosition.set({ x: newX, y: newY });
}
// Collision check function
const checkCollision = dotPos => {
$targets.forEach(target => {
if (dotPos.x < target.x + 10 && dotPos.x + 10 > target.x && dotPos.y < target.y + 10 && dotPos.y + 10 > target.y) {
handleCollision(target);
}
});
};
// Handle collision based on the target object
const handleCollision = target => {
switch (target.collisionType) {
case "":
console.log("Nothing Happenedddd");
break;
case "alert":
alert(target.collisiontext);
break;
case "modal":
$$invalidate(3, isModalOpen = true);
$$invalidate(4, currentcollisiontext = target.collisiontext);
$$invalidate(5, currentcollisionitems = target.modalConfig.actions);
break;
} // Handle other permanent UI elements here
}; // ...
//ChatGPT Suggested Options
// Change the background color of the canvas or a specific element.
// case "changeBackgroundColor":
const writable_props = [];
Object_1$1.keys($$props).forEach(key => {
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1$4.warn(`<MovingDotSpacePortfromReact> was created with unknown prop '${key}'`);
});
function select_change_handler() {
currentTheme = select_value(this);
$$invalidate(7, currentTheme);
$$invalidate(12, themeKeys);
}
function canvas_1_binding($$value) {
binding_callbacks[$$value ? 'unshift' : 'push'](() => {
canvas = $$value;
$$invalidate(2, canvas);
});
}
function movingdot_binding($$value) {
binding_callbacks[$$value ? 'unshift' : 'push'](() => {
movingDotElement = $$value;
$$invalidate(6, movingDotElement);
});
}
const move_handler = e => updateDotPosition(e.detail.x, e.detail.y);
$$self.$capture_state = () => ({
onMount,
writable,
MovingDot: MovingDotPortfromReact,
Target: MovingDotTargetPortfromReact,
Modal: MovingDotSpaceSimpleModal,
MovingDotStats: MovingDotStatStoreandDisplay,
DotGameThemeManager: MovingDotSpaceThemeManager,
themes,
themeActions,
inventory,
skills,
objectives,
targets,
ChangedContentPlaceholdertoSend,
canvas,
dotPosition,
boundaries,
isModalOpen,
currentcollisiontext,
currentcollisionitems,
movingDotElement,
currentTheme,
themeKeys,
CurrentGameBackground,
changeTheme,
handleSpaceClick,
handleModalClose,
updateDotPosition,
checkCollision,
handleCollision,
$dotPosition,
$targets
});
$$self.$inject_state = $$props => {
if ('ChangedContentPlaceholdertoSend' in $$props) $$invalidate(1, ChangedContentPlaceholdertoSend = $$props.ChangedContentPlaceholdertoSend);
if ('canvas' in $$props) $$invalidate(2, canvas = $$props.canvas);
if ('dotPosition' in $$props) $$invalidate(10, dotPosition = $$props.dotPosition);
if ('boundaries' in $$props) $$invalidate(11, boundaries = $$props.boundaries);
if ('isModalOpen' in $$props) $$invalidate(3, isModalOpen = $$props.isModalOpen);
if ('currentcollisiontext' in $$props) $$invalidate(4, currentcollisiontext = $$props.currentcollisiontext);
if ('currentcollisionitems' in $$props) $$invalidate(5, currentcollisionitems = $$props.currentcollisionitems);
if ('movingDotElement' in $$props) $$invalidate(6, movingDotElement = $$props.movingDotElement);
if ('currentTheme' in $$props) $$invalidate(7, currentTheme = $$props.currentTheme);
if ('themeKeys' in $$props) $$invalidate(12, themeKeys = $$props.themeKeys);
if ('CurrentGameBackground' in $$props) $$invalidate(8, CurrentGameBackground = $$props.CurrentGameBackground);
};
if ($$props && "$$inject" in $$props) {
$$self.$inject_state($$props.$$inject);
}
$$self.$$.update = () => {
if ($$self.$$.dirty & /*$dotPosition*/ 1) {
// document.body.style.backgroundColor = target.color;
// break;
// Play a sound effect. You'll need to pre-load these sounds.
// case "playSound":
// new Audio(target.soundUrl).play();
// break;
// Redirect the user to a different URL.
// case "redirect":
// window.location.href = target.url;
// break;
// Increase the size of the dot.
// case "enlargeDot":
// dotElement.style.transform = "scale(1.5)";
// break;
// Decrease the size of the dot.
// case "shrinkDot":
// dotElement.style.transform = "scale(0.5)";
// break;
// Apply a rotation to the dot.
// case "rotateDot":
// dotElement.style.transform = "rotate(45deg)";
// break;
// Toggle the visibility of a specific element on the page.
// case "toggleVisibility":
// let elem = document.getElementById(target.elementId);
// elem.style.display = elem.style.display === 'none' ? 'block' : 'none';
// break;
// Trigger a CSS animation on a specific element.
// case "startAnimation":
// let animElem = document.getElementById(target.elementId);
// animElem.classList.add(target.animationClass);
// break;
// Increase a score or counter displayed on the screen.
// case "incrementScore":
// score += target.incrementValue;
// updateScoreDisplay(); // Assuming you have a function to update the score display
// break;
// Change the color of the dot.
// case "changeDotColor":
// dotElement.style.backgroundColor = target.color;
// break;
// Reactive statement to check collision whenever dotPosition changes
$dotPosition && checkCollision($dotPosition);
}
};
return [
$dotPosition,
ChangedContentPlaceholdertoSend,
canvas,
isModalOpen,
currentcollisiontext,
currentcollisionitems,
movingDotElement,
currentTheme,
CurrentGameBackground,
$targets,
dotPosition,
boundaries,
themeKeys,
changeTheme,
handleSpaceClick,
handleModalClose,
updateDotPosition,
select_change_handler,
canvas_1_binding,
movingdot_binding,
move_handler
];
}
class MovingDotSpacePortfromReact extends SvelteComponentDev {
constructor(options) {
super(options);
init(this, options, instance$6, create_fragment$6, safe_not_equal, {});
dispatch_dev("SvelteRegisterComponent", {
component: this,
tagName: "MovingDotSpacePortfromReact",
options,
id: create_fragment$6.name
});
}
}
/* src\YoutubeIframeAPICustomInterface.svelte generated by Svelte v3.59.2 */
const { console: console_1$3 } = globals;
const file$5 = "src\\YoutubeIframeAPICustomInterface.svelte";
function create_fragment$5(ctx) {
let h1;
let t1;
let label;
let t2;
let input0;
let t3;
let input1;
let t4;
let textarea;
let t5;
let button0;
let t7;
let pre;
let t8;
let t9;
let div3;
let div0;
let t10;
let div1;
let t11;
let t12_value = /*currentTime*/ ctx[4].toFixed(2) + "";
let t12;
let t13;
let t14;
let div2;
let t15;
let t16;
let br0;
let t17;
let t18;
let t19;
let button1;
let t23;
let button2;
let t27;
let t28;
let t29;
let t30_value = /*timestamps*/ ctx[11].length + "";
let t30;
let t31;
let br1;
let t32;
let button3;
let t34;
let button4;
let t35;
let button4_class_value;
let button4_disabled_value;
let t36;
let button5;
let t37;
let button5_class_value;
let button5_disabled_value;
let t38;
let button6;
let t39;
let button6_class_value;
let button6_disabled_value;
let t40;
let t41;
let t42;
let t43_value = /*userTimestamps*/ ctx[1].length + "";
let t43;
let t44;
let br2;
let t45;
let t46;
let t47;
let t48_value = /*r2userTimestamps*/ ctx[12].length + "";
let t48;
let t49;
let br3;
let t50;
let br4;
let t51;
let button7;
let t53;
let button8;
let t55;
let input2;
let t56;
let br5;
let t57;
let input3;
let t58;
let input4;
let t59;
let input5;
let t60;
let input6;
let mounted;
let dispose;
const block = {
c: function create() {
h1 = element("h1");
h1.textContent = "Custom Youtube Player for learning Video and music";
t1 = space();
label = element("label");
t2 = text("Current Video Id (mwO6v4BlgZQ | IVJkOHTBPn0 ) (test - qEpmiA3XkX8 hardcoded)\r\n ");
input0 = element("input");
t3 = text("\r\n Start/Stop Word Update (Dummy Transcript as default)\r\n ");
input1 = element("input");
t4 = space();
textarea = element("textarea");
t5 = space();
button0 = element("button");
button0.textContent = "Convert to JSON";
t7 = space();
pre = element("pre");
t8 = text(/*jsonOutput*/ ctx[6]);
t9 = space();
div3 = element("div");
div0 = element("div");
t10 = space();
div1 = element("div");
t11 = text("Current Time: ");
t12 = text(t12_value);
t13 = text(" seconds");
t14 = space();
div2 = element("div");
t15 = text(/*line*/ ctx[8]);
t16 = space();
br0 = element("br");
t17 = space();
t18 = text(/*currentWord*/ ctx[7]);
t19 = space();
button1 = element("button");
button1.textContent = `Previous Auto Timestamp - ${/*interval*/ ctx[19]}s`;
t23 = space();
button2 = element("button");
button2.textContent = `Next Auto Timestamp - ${/*interval*/ ctx[19]}s`;
t27 = text("\r\nAuto Timestamps: ");
t28 = text(/*currentIndex*/ ctx[10]);
t29 = text(" / ");
t30 = text(t30_value);
t31 = space();
br1 = element("br");
t32 = space();
button3 = element("button");
button3.textContent = "Add Timestamp";
t34 = space();
button4 = element("button");
t35 = text("Current User Timestamp (incomplete)");
t36 = space();
button5 = element("button");
t37 = text("Previous User Timestamp");
t38 = space();
button6 = element("button");
t39 = text("Next User Timestamp");
t40 = text("\r\nUser Timestamps: ");
t41 = text(/*currentuserIndex*/ ctx[0]);
t42 = text(" / ");
t43 = text(t43_value);
t44 = space();
br2 = element("br");
t45 = text(" Round 2 (/n) User Timestamps: ");
t46 = text(/*currentuserIndex*/ ctx[0]);
t47 = text(" / ");
t48 = text(t48_value);
t49 = space();
br3 = element("br");
t50 = text("A list of one messes up the logic for the counter in conjuction with the user timestamp button reactivity ");
br4 = element("br");
t51 = space();
button7 = element("button");
button7.textContent = "Export Timestamps";
t53 = space();
button8 = element("button");
button8.textContent = "Export Round 2 Timestamps";
t55 = text(" Import Timestamps (Incomplete) ");
input2 = element("input");
t56 = space();
br5 = element("br");
t57 = text(" Interval Repeat ");
input3 = element("input");
t58 = text(" ||| Start ");
input4 = element("input");
t59 = text(" End ");
input5 = element("input");
t60 = text(" Reps ");
input6 = element("input");
add_location(h1, file$5, 333, 0, 11319);
attr_dev(input0, "type", "text");
add_location(input0, file$5, 337, 4, 11477);
attr_dev(input1, "type", "checkbox");
add_location(input1, file$5, 339, 4, 11588);
attr_dev(textarea, "placeholder", "Enter transcript here...");
add_location(textarea, file$5, 344, 4, 11911);
add_location(button0, file$5, 345, 4, 12001);
attr_dev(pre, "class", "transcriptpre svelte-alwc6b");
add_location(pre, file$5, 346, 4, 12067);
add_location(label, file$5, 335, 0, 11382);
attr_dev(div0, "id", "youtube-player");
set_style(div0, "height", "90vh");
set_style(div0, "width", "90%");
add_location(div0, file$5, 350, 4, 12165);
set_style(div1, "position", "absolute");
set_style(div1, "top", "0%");
set_style(div1, "left", "40%");
set_style(div1, "color", "white");
set_style(div1, "background-color", "rgba(0, 0, 0, 0.5)");
add_location(div1, file$5, 351, 4, 12235);
add_location(br0, file$5, 355, 15, 12555);
set_style(div2, "position", "absolute");
set_style(div2, "top", "50%");
set_style(div2, "left", "20%");
set_style(div2, "color", "white");
set_style(div2, "background-color", "rgba(0, 0, 0, 0.5)");
set_style(div2, "font-size", "100px");
add_location(div2, file$5, 354, 4, 12414);
set_style(div3, "position", "relative");
add_location(div3, file$5, 349, 0, 12126);
add_location(button1, file$5, 361, 0, 12681);
add_location(button2, file$5, 362, 0, 12774);
add_location(br1, file$5, 365, 0, 12916);
add_location(button3, file$5, 366, 0, 12922);
attr_dev(button4, "class", button4_class_value = "" + (null_to_empty(/*currentindexButtonClass*/ ctx[16]) + " svelte-alwc6b"));
button4.disabled = button4_disabled_value = /*currentuserIndex*/ ctx[0] <= 0;
add_location(button4, file$5, 367, 0, 12982);
attr_dev(button5, "class", button5_class_value = "" + (null_to_empty(/*previousindexButtonClass*/ ctx[17]) + " svelte-alwc6b"));
button5.disabled = button5_disabled_value = /*currentuserIndex*/ ctx[0] <= 0;
add_location(button5, file$5, 368, 0, 13137);
attr_dev(button6, "class", button6_class_value = "" + (null_to_empty(/*nextindexButtonClass*/ ctx[18]) + " svelte-alwc6b"));
button6.disabled = button6_disabled_value = /*currentuserIndex*/ ctx[0] >= /*userTimestamps*/ ctx[1].length - 1;
add_location(button6, file$5, 369, 0, 13282);
add_location(br2, file$5, 372, 0, 13505);
add_location(br3, file$5, 372, 82, 13587);
add_location(br4, file$5, 372, 192, 13697);
add_location(button7, file$5, 373, 0, 13703);
add_location(button8, file$5, 373, 63, 13766);
attr_dev(input2, "type", "file");
attr_dev(input2, "accept", ".json");
add_location(input2, file$5, 373, 167, 13870);
add_location(br5, file$5, 374, 0, 13935);
attr_dev(input3, "type", "checkbox");
add_location(input3, file$5, 374, 21, 13956);
attr_dev(input4, "type", "number");
attr_dev(input4, "class", "numberinput svelte-alwc6b");
attr_dev(input4, "min", "0");
add_location(input4, file$5, 374, 82, 14017);
attr_dev(input5, "type", "number");
attr_dev(input5, "class", "numberinput svelte-alwc6b");
attr_dev(input5, "min", "0");
add_location(input5, file$5, 374, 162, 14097);
attr_dev(input6, "type", "number");
attr_dev(input6, "class", "numberinput svelte-alwc6b");
attr_dev(input6, "min", "0");
add_location(input6, file$5, 374, 241, 14176);
},
l: function claim(nodes) {
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
},
m: function mount(target, anchor) {
insert_dev(target, h1, anchor);
insert_dev(target, t1, anchor);
insert_dev(target, label, anchor);
append_dev(label, t2);
append_dev(label, input0);
set_input_value(input0, /*currentvideoId*/ ctx[2]);
append_dev(label, t3);
append_dev(label, input1);
input1.checked = /*isUpdating*/ ctx[9];
append_dev(label, t4);
append_dev(label, textarea);
set_input_value(textarea, /*transcript*/ ctx[5]);
append_dev(label, t5);
append_dev(label, button0);
append_dev(label, t7);
append_dev(label, pre);
append_dev(pre, t8);
insert_dev(target, t9, anchor);
insert_dev(target, div3, anchor);
append_dev(div3, div0);
append_dev(div3, t10);
append_dev(div3, div1);
append_dev(div1, t11);
append_dev(div1, t12);
append_dev(div1, t13);
append_dev(div3, t14);
append_dev(div3, div2);
append_dev(div2, t15);
append_dev(div2, t16);
append_dev(div2, br0);
append_dev(div2, t17);
append_dev(div2, t18);
insert_dev(target, t19, anchor);
insert_dev(target, button1, anchor);
insert_dev(target, t23, anchor);
insert_dev(target, button2, anchor);
insert_dev(target, t27, anchor);
insert_dev(target, t28, anchor);
insert_dev(target, t29, anchor);
insert_dev(target, t30, anchor);
insert_dev(target, t31, anchor);
insert_dev(target, br1, anchor);
insert_dev(target, t32, anchor);
insert_dev(target, button3, anchor);
insert_dev(target, t34, anchor);
insert_dev(target, button4, anchor);
append_dev(button4, t35);
insert_dev(target, t36, anchor);
insert_dev(target, button5, anchor);
append_dev(button5, t37);
insert_dev(target, t38, anchor);
insert_dev(target, button6, anchor);
append_dev(button6, t39);
insert_dev(target, t40, anchor);
insert_dev(target, t41, anchor);
insert_dev(target, t42, anchor);
insert_dev(target, t43, anchor);
insert_dev(target, t44, anchor);
insert_dev(target, br2, anchor);
insert_dev(target, t45, anchor);
insert_dev(target, t46, anchor);
insert_dev(target, t47, anchor);
insert_dev(target, t48, anchor);
insert_dev(target, t49, anchor);
insert_dev(target, br3, anchor);
insert_dev(target, t50, anchor);
insert_dev(target, br4, anchor);
insert_dev(target, t51, anchor);
insert_dev(target, button7, anchor);
insert_dev(target, t53, anchor);
insert_dev(target, button8, anchor);
insert_dev(target, t55, anchor);
insert_dev(target, input2, anchor);
insert_dev(target, t56, anchor);
insert_dev(target, br5, anchor);
insert_dev(target, t57, anchor);
insert_dev(target, input3, anchor);
input3.checked = /*isRepeating*/ ctx[3];
insert_dev(target, t58, anchor);
insert_dev(target, input4, anchor);
set_input_value(input4, /*repstartTime*/ ctx[13]);
insert_dev(target, t59, anchor);
insert_dev(target, input5, anchor);
set_input_value(input5, /*rependTime*/ ctx[14]);
insert_dev(target, t60, anchor);
insert_dev(target, input6, anchor);
set_input_value(input6, /*repetitions*/ ctx[15]);
if (!mounted) {
dispose = [
listen_dev(input0, "input", /*input0_input_handler*/ ctx[31]),
listen_dev(input1, "change", /*input1_change_handler*/ ctx[32]),
listen_dev(input1, "click", /*toggleUpdate*/ ctx[20], false, false, false, false),
listen_dev(textarea, "input", /*textarea_input_handler*/ ctx[33]),
listen_dev(button0, "click", /*transcriptToJson*/ ctx[30], false, false, false, false),
listen_dev(button1, "click", /*goToPreviousAutoTimestamp*/ ctx[22], false, false, false, false),
listen_dev(button2, "click", /*goToNextAutoTimestamp*/ ctx[21], false, false, false, false),
listen_dev(button3, "click", /*addUserTimestamp*/ ctx[23], false, false, false, false),
listen_dev(button4, "click", /*goToCurrentUserTimestamp*/ ctx[24], false, false, false, false),
listen_dev(button5, "click", /*goToPreviousUserTimestamp*/ ctx[26], false, false, false, false),
listen_dev(button6, "click", /*goToNextUserTimestamp*/ ctx[25], false, false, false, false),
listen_dev(button7, "click", /*exportTimestamps*/ ctx[27], false, false, false, false),
listen_dev(button8, "click", /*exportr2Timestamps*/ ctx[28], false, false, false, false),
listen_dev(input2, "change", /*importTimestamps*/ ctx[29], false, false, false, false),
listen_dev(input3, "change", /*input3_change_handler*/ ctx[34]),
listen_dev(input4, "input", /*input4_input_handler*/ ctx[35]),
listen_dev(input5, "input", /*input5_input_handler*/ ctx[36]),
listen_dev(input6, "input", /*input6_input_handler*/ ctx[37])
];
mounted = true;
}
},
p: function update(ctx, dirty) {
if (dirty[0] & /*currentvideoId*/ 4 && input0.value !== /*currentvideoId*/ ctx[2]) {
set_input_value(input0, /*currentvideoId*/ ctx[2]);
}
if (dirty[0] & /*isUpdating*/ 512) {
input1.checked = /*isUpdating*/ ctx[9];
}
if (dirty[0] & /*transcript*/ 32) {
set_input_value(textarea, /*transcript*/ ctx[5]);
}
if (dirty[0] & /*jsonOutput*/ 64) set_data_dev(t8, /*jsonOutput*/ ctx[6]);
if (dirty[0] & /*currentTime*/ 16 && t12_value !== (t12_value = /*currentTime*/ ctx[4].toFixed(2) + "")) set_data_dev(t12, t12_value);
if (dirty[0] & /*line*/ 256) set_data_dev(t15, /*line*/ ctx[8]);
if (dirty[0] & /*currentWord*/ 128) set_data_dev(t18, /*currentWord*/ ctx[7]);
if (dirty[0] & /*currentIndex*/ 1024) set_data_dev(t28, /*currentIndex*/ ctx[10]);
if (dirty[0] & /*timestamps*/ 2048 && t30_value !== (t30_value = /*timestamps*/ ctx[11].length + "")) set_data_dev(t30, t30_value);
if (dirty[0] & /*currentindexButtonClass*/ 65536 && button4_class_value !== (button4_class_value = "" + (null_to_empty(/*currentindexButtonClass*/ ctx[16]) + " svelte-alwc6b"))) {
attr_dev(button4, "class", button4_class_value);
}
if (dirty[0] & /*currentuserIndex*/ 1 && button4_disabled_value !== (button4_disabled_value = /*currentuserIndex*/ ctx[0] <= 0)) {
prop_dev(button4, "disabled", button4_disabled_value);
}
if (dirty[0] & /*previousindexButtonClass*/ 131072 && button5_class_value !== (button5_class_value = "" + (null_to_empty(/*previousindexButtonClass*/ ctx[17]) + " svelte-alwc6b"))) {
attr_dev(button5, "class", button5_class_value);
}
if (dirty[0] & /*currentuserIndex*/ 1 && button5_disabled_value !== (button5_disabled_value = /*currentuserIndex*/ ctx[0] <= 0)) {
prop_dev(button5, "disabled", button5_disabled_value);
}
if (dirty[0] & /*nextindexButtonClass*/ 262144 && button6_class_value !== (button6_class_value = "" + (null_to_empty(/*nextindexButtonClass*/ ctx[18]) + " svelte-alwc6b"))) {
attr_dev(button6, "class", button6_class_value);
}
if (dirty[0] & /*currentuserIndex, userTimestamps*/ 3 && button6_disabled_value !== (button6_disabled_value = /*currentuserIndex*/ ctx[0] >= /*userTimestamps*/ ctx[1].length - 1)) {
prop_dev(button6, "disabled", button6_disabled_value);
}
if (dirty[0] & /*currentuserIndex*/ 1) set_data_dev(t41, /*currentuserIndex*/ ctx[0]);
if (dirty[0] & /*userTimestamps*/ 2 && t43_value !== (t43_value = /*userTimestamps*/ ctx[1].length + "")) set_data_dev(t43, t43_value);
if (dirty[0] & /*currentuserIndex*/ 1) set_data_dev(t46, /*currentuserIndex*/ ctx[0]);
if (dirty[0] & /*r2userTimestamps*/ 4096 && t48_value !== (t48_value = /*r2userTimestamps*/ ctx[12].length + "")) set_data_dev(t48, t48_value);
if (dirty[0] & /*isRepeating*/ 8) {
input3.checked = /*isRepeating*/ ctx[3];
}
if (dirty[0] & /*repstartTime*/ 8192 && to_number(input4.value) !== /*repstartTime*/ ctx[13]) {
set_input_value(input4, /*repstartTime*/ ctx[13]);
}
if (dirty[0] & /*rependTime*/ 16384 && to_number(input5.value) !== /*rependTime*/ ctx[14]) {
set_input_value(input5, /*rependTime*/ ctx[14]);
}
if (dirty[0] & /*repetitions*/ 32768 && to_number(input6.value) !== /*repetitions*/ ctx[15]) {
set_input_value(input6, /*repetitions*/ ctx[15]);
}
},
i: noop,
o: noop,
d: function destroy(detaching) {
if (detaching) detach_dev(h1);
if (detaching) detach_dev(t1);
if (detaching) detach_dev(label);
if (detaching) detach_dev(t9);
if (detaching) detach_dev(div3);
if (detaching) detach_dev(t19);
if (detaching) detach_dev(button1);
if (detaching) detach_dev(t23);
if (detaching) detach_dev(button2);
if (detaching) detach_dev(t27);
if (detaching) detach_dev(t28);
if (detaching) detach_dev(t29);
if (detaching) detach_dev(t30);
if (detaching) detach_dev(t31);
if (detaching) detach_dev(br1);
if (detaching) detach_dev(t32);
if (detaching) detach_dev(button3);
if (detaching) detach_dev(t34);
if (detaching) detach_dev(button4);
if (detaching) detach_dev(t36);
if (detaching) detach_dev(button5);
if (detaching) detach_dev(t38);
if (detaching) detach_dev(button6);
if (detaching) detach_dev(t40);
if (detaching) detach_dev(t41);
if (detaching) detach_dev(t42);
if (detaching) detach_dev(t43);
if (detaching) detach_dev(t44);
if (detaching) detach_dev(br2);
if (detaching) detach_dev(t45);
if (detaching) detach_dev(t46);
if (detaching) detach_dev(t47);
if (detaching) detach_dev(t48);
if (detaching) detach_dev(t49);
if (detaching) detach_dev(br3);
if (detaching) detach_dev(t50);
if (detaching) detach_dev(br4);
if (detaching) detach_dev(t51);
if (detaching) detach_dev(button7);
if (detaching) detach_dev(t53);
if (detaching) detach_dev(button8);
if (detaching) detach_dev(t55);
if (detaching) detach_dev(input2);
if (detaching) detach_dev(t56);
if (detaching) detach_dev(br5);
if (detaching) detach_dev(t57);
if (detaching) detach_dev(input3);
if (detaching) detach_dev(t58);
if (detaching) detach_dev(input4);
if (detaching) detach_dev(t59);
if (detaching) detach_dev(input5);
if (detaching) detach_dev(t60);
if (detaching) detach_dev(input6);
mounted = false;
run_all(dispose);
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_fragment$5.name,
type: "component",
source: "",
ctx
});
return block;
}
function getRandomWord(line) {
let words = line.split(" ");
return words[Math.floor(Math.random() * words.length)];
}
function instance$5($$self, $$props, $$invalidate) {
let nextindexButtonClass;
let previousindexButtonClass;
let currentindexButtonClass;
let { $$slots: slots = {}, $$scope } = $$props;
validate_slots('YoutubeIframeAPICustomInterface', slots, []);
let player;
let interval = 20; // Define your interval
let currentTime = 0;
let timeUpdateInterval;
// Assuming 'transcript' contains your video transcript
let transcript = `Line 1 of the transcript.
Line 2 of the transcript.
Line 3 food
Line 4 foodest
Line 5 foods
Line 6 fooder
Line 7 foodz
Line 8 fooding
...`; // Replace with your actual transcript
let jsonOutput = '';
let lines = transcript.split("\n");
let currentWord = "";
let line = "";
let isUpdating = false;
let updateInterval;
let currentIndex = 0; // Assuming this is initialized appropriately
let currentuserIndex = 0; // Assuming this is initialized appropriately
let timestamps = []; // Array of timestamps
let userTimestamps = []; // Array of user timestamps
let r2userTimestamps = []; // Array of user timestamps
let currentvideoId = 'qEpmiA3XkX8';
let youTubeApiLoaded = false;
let currentvideoduration;
let regeneratedautotimestamps = false;
let repstartTime = 10;
let rependTime = 20;
let repetitions = 20;
let intervalId;
let isRepeating = false;
window.onYouTubeIframeAPIReady = function () {
youTubeApiLoaded = true;
initYouTubePlayer();
};
// Function to initialize the YouTube player
function initYouTubePlayer() {
if (!youTubeApiLoaded) {
console.error("YouTube API is not ready yet.");
return;
}
regeneratedautotimestamps = false;
// Clear existing interval
clearInterval(timeUpdateInterval);
// Reinitialize player with new video ID
if (player) {
player.loadVideoById(currentvideoId);
} else {
player = new YT.Player('youtube-player',
{
height: '360',
width: '640',
videoId: currentvideoId,
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
// Reset and start the interval to update current time
timeUpdateInterval = setInterval(updateCurrentTime, 1000);
}
onMount(() => {
// Load the YouTube IFrame Player API
const tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
const firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
// Update the current time every second
timeUpdateInterval = setInterval(updateCurrentTime, 1000);
});
function autogeneratedtimestamps() {
currentvideoduration = player.getDuration();
//console.log("Video Duration: ", currentvideoduration);
const generatedTimestamps = [];
for (let i = interval; i < currentvideoduration; i += interval) {
generatedTimestamps.push(i);
}
$$invalidate(11, timestamps = generatedTimestamps);
// Do something with the timestamps
//console.log("Generated Timestamps: ", generatedTimestamps);
regeneratedautotimestamps = true;
}
// Event handler for when the player is ready
function onPlayerReady(event) {
autogeneratedtimestamps();
}
function onPlayerStateChange(event) {
if (event.data === YT.PlayerState.PLAYING || event.data === YT.PlayerState.PAUSED) {
updateCurrentIndex();
}
// Check if the video has just started playing
if (event.data === YT.PlayerState.PLAYING && !regeneratedautotimestamps) {
autogeneratedtimestamps();
}
}
function updateCurrentIndex() {
const currentTime = player.getCurrentTime();
// Find the closest timestamp
let closest = timestamps.reduce((prev, curr) => Math.abs(curr - currentTime) < Math.abs(prev - currentTime)
? curr
: prev);
$$invalidate(10, currentIndex = timestamps.indexOf(closest));
}
function updateCurrentTime() {
if (player && player.getCurrentTime) {
$$invalidate(4, currentTime = player.getCurrentTime());
}
}
onDestroy(() => {
clearInterval(timeUpdateInterval);
});
function updateWord() {
if (isUpdating) {
$$invalidate(8, line = lines[Math.floor(Math.random() * lines.length)]);
$$invalidate(7, currentWord = getRandomWord(line));
}
}
function toggleUpdate() {
lines = transcript.split("\n");
$$invalidate(9, isUpdating = !isUpdating);
if (isUpdating) {
updateWord(); // Immediately update once
updateInterval = setInterval(updateWord, 3000); // Update every 3 seconds
} else {
clearInterval(updateInterval);
$$invalidate(8, line = '');
$$invalidate(7, currentWord = '');
}
}
function goToNextAutoTimestamp() {
if (currentIndex < timestamps.length - 1) {
$$invalidate(10, currentIndex += 1);
player.seekTo(timestamps[currentIndex], true);
}
}
function goToPreviousAutoTimestamp() {
if (currentIndex > 0) {
$$invalidate(10, currentIndex -= 1);
player.seekTo(timestamps[currentIndex], true);
}
}
function addUserTimestamp() {
const currentTime = Math.floor(player.getCurrentTime());
$$invalidate(1, userTimestamps = [...userTimestamps, currentTime].sort((a, b) => a - b));
}
function addr2UserTimestamp() {
const currentTime = Math.floor(player.getCurrentTime());
$$invalidate(12, r2userTimestamps = [...r2userTimestamps, currentTime].sort((a, b) => a - b));
}
function goToCurrentUserTimestamp() {
if (currentuserIndex === 0 && currentIndex < 0) {
player.seekTo(userTimestamps[currentIndex], true);
} else if (currentuserIndex < 0) {
player.seekTo(userTimestamps[currentuserIndex], true);
} else {
// Handle the end of the list here
console.log("No selected user timestamp.");
} // You can also disable the "next" button or loop to the start if needed.
}
function goToNextUserTimestamp() {
if (currentuserIndex < userTimestamps.length - 1) {
$$invalidate(0, currentuserIndex += 1);
player.seekTo(userTimestamps[currentuserIndex], true);
} else {
// Handle the end of the list here
console.log("Reached the end of user timestamps.");
} // You can also disable the "next" button or loop to the start if needed.
}
function goToPreviousUserTimestamp() {
if (currentuserIndex > 0) {
$$invalidate(0, currentuserIndex -= 1);
player.seekTo(userTimestamps[currentuserIndex], true);
} else {
// Handle the beginning of the list here
console.log("Reached the start of user timestamps.");
} // You can also disable the "previous" button or loop to the end if needed.
}
function exportTimestamps() {
const data = JSON.stringify({
currentvideoId,
timestamps: userTimestamps
});
const blob = new Blob([data], { type: 'application/json' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.style.display = 'none';
const filename = `${currentvideoId}_timestamps.json`;
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
window.URL.revokeObjectURL(url);
}
function exportr2Timestamps() {
const data = JSON.stringify({
currentvideoId,
timestamps: r2userTimestamps
});
const blob = new Blob([data], { type: 'application/json' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.style.display = 'none';
const filename = `${currentvideoId}_round2timestamps.json`;
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
window.URL.revokeObjectURL(url);
}
function importTimestamps(event) {
// Check if the file input is not empty
const file = event.target.files[0];
if (!event.target.files || event.target.files.length === 0) {
alert('No file selected.');
return;
}
// Check if the file is a Blob (File objects inherit from Blob)
if (!(file instanceof Blob)) {
alert('Selected item is not a file.');
return;
}
const reader = new FileReader();
reader.onload = e => {
try {
const data = JSON.parse(e.target.result);
if (!Array.isArray(data.timestamps)) {
alert('Invalid file structure: timestamps should be an array.');
return;
}
$$invalidate(2, currentvideoId = data.currentvideoId || '');
$$invalidate(1, userTimestamps = data.timestamps);
} catch(error) {
alert('An error occurred while importing timestamps.'); //regeneratedautotimestamps = false; = true
}
};
reader.readAsText(file);
}
function transcriptToJson() {
const lines = transcript.split('\n').filter(line => line.trim() !== '');
const result = [];
for (let i = 0; i < lines.length; i += 2) {
const timestampLine = lines[i];
const textLine = lines[i + 1] || ''; // Ensure there's a line for text
const timestampParts = timestampLine.split(' ');
const timestamp = timestampParts.shift();
const timeParts = timestamp.split(':');
const seconds = parseInt(timeParts[0], 10) * 60 + parseInt(timeParts[1], 10);
result.push({ time: seconds, text: textLine.trim() });
}
$$invalidate(6, jsonOutput = JSON.stringify(result, null, 2));
}
function startRepetition() {
let count = 0;
player.seekTo(repstartTime, true);
player.playVideo();
intervalId = setInterval(
() => {
if (count < repetitions) {
player.seekTo(repstartTime, true);
count++;
} else {
stopRepetition();
}
},
(rependTime - repstartTime) * 1000
);
}
function stopRepetition() {
clearInterval(intervalId);
} //player.pauseVideo();
const writable_props = [];
Object.keys($$props).forEach(key => {
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1$3.warn(`<YoutubeIframeAPICustomInterface> was created with unknown prop '${key}'`);
});
function input0_input_handler() {
currentvideoId = this.value;
$$invalidate(2, currentvideoId);
}
function input1_change_handler() {
isUpdating = this.checked;
$$invalidate(9, isUpdating);
}
function textarea_input_handler() {
transcript = this.value;
$$invalidate(5, transcript);
}
function input3_change_handler() {
isRepeating = this.checked;
$$invalidate(3, isRepeating);
}
function input4_input_handler() {
repstartTime = to_number(this.value);
$$invalidate(13, repstartTime);
}
function input5_input_handler() {
rependTime = to_number(this.value);
$$invalidate(14, rependTime);
}
function input6_input_handler() {
repetitions = to_number(this.value);
$$invalidate(15, repetitions);
}
$$self.$capture_state = () => ({
onMount,
onDestroy,
player,
interval,
currentTime,
timeUpdateInterval,
transcript,
jsonOutput,
lines,
currentWord,
line,
isUpdating,
updateInterval,
currentIndex,
currentuserIndex,
timestamps,
userTimestamps,
r2userTimestamps,
currentvideoId,
youTubeApiLoaded,
currentvideoduration,
regeneratedautotimestamps,
repstartTime,
rependTime,
repetitions,
intervalId,
isRepeating,
initYouTubePlayer,
autogeneratedtimestamps,
onPlayerReady,
onPlayerStateChange,
updateCurrentIndex,
updateCurrentTime,
getRandomWord,
updateWord,
toggleUpdate,
goToNextAutoTimestamp,
goToPreviousAutoTimestamp,
addUserTimestamp,
addr2UserTimestamp,
goToCurrentUserTimestamp,
goToNextUserTimestamp,
goToPreviousUserTimestamp,
exportTimestamps,
exportr2Timestamps,
importTimestamps,
transcriptToJson,
startRepetition,
stopRepetition,
currentindexButtonClass,
previousindexButtonClass,
nextindexButtonClass
});
$$self.$inject_state = $$props => {
if ('player' in $$props) player = $$props.player;
if ('interval' in $$props) $$invalidate(19, interval = $$props.interval);
if ('currentTime' in $$props) $$invalidate(4, currentTime = $$props.currentTime);
if ('timeUpdateInterval' in $$props) timeUpdateInterval = $$props.timeUpdateInterval;
if ('transcript' in $$props) $$invalidate(5, transcript = $$props.transcript);
if ('jsonOutput' in $$props) $$invalidate(6, jsonOutput = $$props.jsonOutput);
if ('lines' in $$props) lines = $$props.lines;
if ('currentWord' in $$props) $$invalidate(7, currentWord = $$props.currentWord);
if ('line' in $$props) $$invalidate(8, line = $$props.line);
if ('isUpdating' in $$props) $$invalidate(9, isUpdating = $$props.isUpdating);
if ('updateInterval' in $$props) updateInterval = $$props.updateInterval;
if ('currentIndex' in $$props) $$invalidate(10, currentIndex = $$props.currentIndex);
if ('currentuserIndex' in $$props) $$invalidate(0, currentuserIndex = $$props.currentuserIndex);
if ('timestamps' in $$props) $$invalidate(11, timestamps = $$props.timestamps);
if ('userTimestamps' in $$props) $$invalidate(1, userTimestamps = $$props.userTimestamps);
if ('r2userTimestamps' in $$props) $$invalidate(12, r2userTimestamps = $$props.r2userTimestamps);
if ('currentvideoId' in $$props) $$invalidate(2, currentvideoId = $$props.currentvideoId);
if ('youTubeApiLoaded' in $$props) youTubeApiLoaded = $$props.youTubeApiLoaded;
if ('currentvideoduration' in $$props) currentvideoduration = $$props.currentvideoduration;
if ('regeneratedautotimestamps' in $$props) regeneratedautotimestamps = $$props.regeneratedautotimestamps;
if ('repstartTime' in $$props) $$invalidate(13, repstartTime = $$props.repstartTime);
if ('rependTime' in $$props) $$invalidate(14, rependTime = $$props.rependTime);
if ('repetitions' in $$props) $$invalidate(15, repetitions = $$props.repetitions);
if ('intervalId' in $$props) intervalId = $$props.intervalId;
if ('isRepeating' in $$props) $$invalidate(3, isRepeating = $$props.isRepeating);
if ('currentindexButtonClass' in $$props) $$invalidate(16, currentindexButtonClass = $$props.currentindexButtonClass);
if ('previousindexButtonClass' in $$props) $$invalidate(17, previousindexButtonClass = $$props.previousindexButtonClass);
if ('nextindexButtonClass' in $$props) $$invalidate(18, nextindexButtonClass = $$props.nextindexButtonClass);
};
if ($$props && "$$inject" in $$props) {
$$self.$inject_state($$props.$$inject);
}
$$self.$$.update = () => {
if ($$self.$$.dirty[0] & /*currentvideoId*/ 4) {
if (currentvideoId) {
initYouTubePlayer();
}
}
if ($$self.$$.dirty[0] & /*currentuserIndex, userTimestamps*/ 3) {
$$invalidate(18, nextindexButtonClass = currentuserIndex >= userTimestamps.length - 1
? 'button-at-end'
: 'button');
}
if ($$self.$$.dirty[0] & /*currentuserIndex*/ 1) {
$$invalidate(17, previousindexButtonClass = currentuserIndex <= 0 ? 'button-at-end' : 'button');
}
if ($$self.$$.dirty[0] & /*currentuserIndex*/ 1) {
$$invalidate(16, currentindexButtonClass = currentuserIndex <= 0 ? 'button-at-end' : 'button');
}
if ($$self.$$.dirty[0] & /*isRepeating*/ 8) {
if (isRepeating) {
startRepetition();
} else {
stopRepetition();
}
}
};
return [
currentuserIndex,
userTimestamps,
currentvideoId,
isRepeating,
currentTime,
transcript,
jsonOutput,
currentWord,
line,
isUpdating,
currentIndex,
timestamps,
r2userTimestamps,
repstartTime,
rependTime,
repetitions,
currentindexButtonClass,
previousindexButtonClass,
nextindexButtonClass,
interval,
toggleUpdate,
goToNextAutoTimestamp,
goToPreviousAutoTimestamp,
addUserTimestamp,
goToCurrentUserTimestamp,
goToNextUserTimestamp,
goToPreviousUserTimestamp,
exportTimestamps,
exportr2Timestamps,
importTimestamps,
transcriptToJson,
input0_input_handler,
input1_change_handler,
textarea_input_handler,
input3_change_handler,
input4_input_handler,
input5_input_handler,
input6_input_handler
];
}
class YoutubeIframeAPICustomInterface extends SvelteComponentDev {
constructor(options) {
super(options);
init(this, options, instance$5, create_fragment$5, safe_not_equal, {}, null, [-1, -1]);
dispatch_dev("SvelteRegisterComponent", {
component: this,
tagName: "YoutubeIframeAPICustomInterface",
options,
id: create_fragment$5.name
});
}
}
// Unique ID creation requires a high quality random # generator. In the browser we therefore
// require the crypto API and do not support built-in fallback to lower quality random number
// generators (like Math.random()).
let getRandomValues;
const rnds8 = new Uint8Array(16);
function rng() {
// lazy load so that environments that need to polyfill have a chance to do so
if (!getRandomValues) {
// getRandomValues needs to be invoked in a context where "this" is a Crypto implementation.
getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);
if (!getRandomValues) {
throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
}
}
return getRandomValues(rnds8);
}
/**
* Convert array of 16 byte values to UUID string format of the form:
* XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
*/
const byteToHex = [];
for (let i = 0; i < 256; ++i) {
byteToHex.push((i + 0x100).toString(16).slice(1));
}
function unsafeStringify(arr, offset = 0) {
// Note: Be careful editing this code! It's been tuned for performance
// and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];
}
const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
var native = {
randomUUID
};
function v4(options, buf, offset) {
if (native.randomUUID && !buf && !options) {
return native.randomUUID();
}
options = options || {};
const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
rnds[6] = rnds[6] & 0x0f | 0x40;
rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
if (buf) {
offset = offset || 0;
for (let i = 0; i < 16; ++i) {
buf[offset + i] = rnds[i];
}
return buf;
}
return unsafeStringify(rnds);
}
/* src\RecursiveNestedCommentsElement.svelte generated by Svelte v3.59.2 */
const { console: console_1$2 } = globals;
const file$4 = "src\\RecursiveNestedCommentsElement.svelte";
function get_each_context$2(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[14] = list[i];
child_ctx[15] = list;
child_ctx[16] = i;
return child_ctx;
}
// (123:16) {#if showReplyInput[comment.id]}
function create_if_block$2(ctx) {
let div;
let input;
let t0;
let button;
let mounted;
let dispose;
function input_input_handler() {
/*input_input_handler*/ ctx[11].call(input, /*comment*/ ctx[14]);
}
function click_handler_1() {
return /*click_handler_1*/ ctx[12](/*comment*/ ctx[14]);
}
const block = {
c: function create() {
div = element("div");
input = element("input");
t0 = space();
button = element("button");
button.textContent = "Post Reply";
attr_dev(input, "placeholder", "Write a reply...");
add_location(input, file$4, 124, 24, 4690);
add_location(button, file$4, 125, 24, 4791);
attr_dev(div, "class", "reply-input");
add_location(div, file$4, 123, 20, 4639);
},
m: function mount(target, anchor) {
insert_dev(target, div, anchor);
append_dev(div, input);
set_input_value(input, /*replyText*/ ctx[2][/*comment*/ ctx[14].id]);
append_dev(div, t0);
append_dev(div, button);
if (!mounted) {
dispose = [
listen_dev(input, "input", input_input_handler),
listen_dev(button, "click", click_handler_1, false, false, false, false)
];
mounted = true;
}
},
p: function update(new_ctx, dirty) {
ctx = new_ctx;
if (dirty & /*replyText, flattenedComments*/ 6 && input.value !== /*replyText*/ ctx[2][/*comment*/ ctx[14].id]) {
set_input_value(input, /*replyText*/ ctx[2][/*comment*/ ctx[14].id]);
}
},
d: function destroy(detaching) {
if (detaching) detach_dev(div);
mounted = false;
run_all(dispose);
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_if_block$2.name,
type: "if",
source: "(123:16) {#if showReplyInput[comment.id]}",
ctx
});
return block;
}
// (119:8) {#each flattenedComments as comment}
function create_each_block$2(ctx) {
let div;
let span;
let t0_value = /*comment*/ ctx[14].title + "";
let t0;
let t1;
let button;
let t3;
let t4;
let div_class_value;
let mounted;
let dispose;
function click_handler() {
return /*click_handler*/ ctx[10](/*comment*/ ctx[14]);
}
let if_block = /*showReplyInput*/ ctx[3][/*comment*/ ctx[14].id] && create_if_block$2(ctx);
const block = {
c: function create() {
div = element("div");
span = element("span");
t0 = text(t0_value);
t1 = space();
button = element("button");
button.textContent = "Reply";
t3 = space();
if (if_block) if_block.c();
t4 = space();
add_location(span, file$4, 120, 16, 4453);
add_location(button, file$4, 121, 16, 4499);
attr_dev(div, "class", div_class_value = "" + (null_to_empty(/*comment*/ ctx[14].level === 0
? 'top-level-comment'
: 'comment') + " svelte-bsj1sx"));
set_style(div, "margin-left", /*comment*/ ctx[14].level * 20 + "px");
add_location(div, file$4, 119, 12, 4323);
},
m: function mount(target, anchor) {
insert_dev(target, div, anchor);
append_dev(div, span);
append_dev(span, t0);
append_dev(div, t1);
append_dev(div, button);
append_dev(div, t3);
if (if_block) if_block.m(div, null);
append_dev(div, t4);
if (!mounted) {
dispose = listen_dev(button, "click", click_handler, false, false, false, false);
mounted = true;
}
},
p: function update(new_ctx, dirty) {
ctx = new_ctx;
if (dirty & /*flattenedComments*/ 2 && t0_value !== (t0_value = /*comment*/ ctx[14].title + "")) set_data_dev(t0, t0_value);
if (/*showReplyInput*/ ctx[3][/*comment*/ ctx[14].id]) {
if (if_block) {
if_block.p(ctx, dirty);
} else {
if_block = create_if_block$2(ctx);
if_block.c();
if_block.m(div, t4);
}
} else if (if_block) {
if_block.d(1);
if_block = null;
}
if (dirty & /*flattenedComments*/ 2 && div_class_value !== (div_class_value = "" + (null_to_empty(/*comment*/ ctx[14].level === 0
? 'top-level-comment'
: 'comment') + " svelte-bsj1sx"))) {
attr_dev(div, "class", div_class_value);
}
if (dirty & /*flattenedComments*/ 2) {
set_style(div, "margin-left", /*comment*/ ctx[14].level * 20 + "px");
}
},
d: function destroy(detaching) {
if (detaching) detach_dev(div);
if (if_block) if_block.d();
mounted = false;
dispose();
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_each_block$2.name,
type: "each",
source: "(119:8) {#each flattenedComments as comment}",
ctx
});
return block;
}
function create_fragment$4(ctx) {
let h1;
let t1;
let h4;
let t3;
let div2;
let div0;
let button0;
let t5;
let input0;
let t6;
let input1;
let t7;
let button1;
let t9;
let br;
let t10;
let div1;
let mounted;
let dispose;
let each_value = /*flattenedComments*/ ctx[1];
validate_each_argument(each_value);
let each_blocks = [];
for (let i = 0; i < each_value.length; i += 1) {
each_blocks[i] = create_each_block$2(get_each_context$2(ctx, each_value, i));
}
const block = {
c: function create() {
h1 = element("h1");
h1.textContent = "Reddit based Nested Comments Idea for LMM responses that need further branching responses";
t1 = space();
h4 = element("h4");
h4.textContent = "Inspired by Vijay Bhati - https://github.com/vj98/Frontend-Machine-Coding/tree/main/nested-comments https://youtu.be/a4OA7QbHEho?list=PLBygUld3s6x8sI_H8UYROVMIVcuxUre1e";
t3 = space();
div2 = element("div");
div0 = element("div");
button0 = element("button");
button0.textContent = "Export Comments";
t5 = text("\r\n | Import Exported Comments \r\n ");
input0 = element("input");
t6 = text("\r\n | \r\n ");
input1 = element("input");
t7 = space();
button1 = element("button");
button1.textContent = "Post Comment";
t9 = space();
br = element("br");
t10 = space();
div1 = element("div");
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
add_location(h1, file$4, 104, 0, 3512);
add_location(h4, file$4, 105, 0, 3614);
add_location(button0, file$4, 108, 8, 3897);
attr_dev(input0, "type", "file");
add_location(input0, file$4, 110, 8, 4000);
attr_dev(input1, "placeholder", "Add a comment...");
add_location(input1, file$4, 112, 8, 4072);
add_location(button1, file$4, 113, 8, 4146);
add_location(div0, file$4, 107, 4, 3882);
add_location(br, file$4, 116, 4, 4225);
attr_dev(div1, "id", "comment-container");
add_location(div1, file$4, 117, 4, 4235);
attr_dev(div2, "class", "component-containter svelte-bsj1sx");
set_style(div2, "border", "1px solid black");
set_style(div2, "padding", "4px");
add_location(div2, file$4, 106, 0, 3795);
},
l: function claim(nodes) {
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
},
m: function mount(target, anchor) {
insert_dev(target, h1, anchor);
insert_dev(target, t1, anchor);
insert_dev(target, h4, anchor);
insert_dev(target, t3, anchor);
insert_dev(target, div2, anchor);
append_dev(div2, div0);
append_dev(div0, button0);
append_dev(div0, t5);
append_dev(div0, input0);
append_dev(div0, t6);
append_dev(div0, input1);
set_input_value(input1, /*newComment*/ ctx[0]);
append_dev(div0, t7);
append_dev(div0, button1);
append_dev(div2, t9);
append_dev(div2, br);
append_dev(div2, t10);
append_dev(div2, div1);
for (let i = 0; i < each_blocks.length; i += 1) {
if (each_blocks[i]) {
each_blocks[i].m(div1, null);
}
}
if (!mounted) {
dispose = [
listen_dev(button0, "click", /*exportToJson*/ ctx[7], false, false, false, false),
listen_dev(input0, "change", /*handleFileUpload*/ ctx[8], false, false, false, false),
listen_dev(input1, "input", /*input1_input_handler*/ ctx[9]),
listen_dev(button1, "click", /*addComment*/ ctx[4], false, false, false, false)
];
mounted = true;
}
},
p: function update(ctx, [dirty]) {
if (dirty & /*newComment*/ 1 && input1.value !== /*newComment*/ ctx[0]) {
set_input_value(input1, /*newComment*/ ctx[0]);
}
if (dirty & /*flattenedComments, addReply, replyText, toggleReplyInput, showReplyInput*/ 110) {
each_value = /*flattenedComments*/ ctx[1];
validate_each_argument(each_value);
let i;
for (i = 0; i < each_value.length; i += 1) {
const child_ctx = get_each_context$2(ctx, each_value, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
} else {
each_blocks[i] = create_each_block$2(child_ctx);
each_blocks[i].c();
each_blocks[i].m(div1, null);
}
}
for (; i < each_blocks.length; i += 1) {
each_blocks[i].d(1);
}
each_blocks.length = each_value.length;
}
},
i: noop,
o: noop,
d: function destroy(detaching) {
if (detaching) detach_dev(h1);
if (detaching) detach_dev(t1);
if (detaching) detach_dev(h4);
if (detaching) detach_dev(t3);
if (detaching) detach_dev(div2);
destroy_each(each_blocks, detaching);
mounted = false;
run_all(dispose);
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_fragment$4.name,
type: "component",
source: "",
ctx
});
return block;
}
function flattenStructure(items, level = 0, parentId = null, processedIds = new Set()) {
let result = [];
items.forEach(item => {
if (processedIds.has(item.id)) return;
result.push({ ...item, level, parentId });
processedIds.add(item.id);
if (item.items && Array.isArray(item.items)) {
const childItems = flattenStructure(item.items, level + 1, item.id, processedIds);
result = result.concat(childItems);
}
});
return result;
}
function instance$4($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
validate_slots('RecursiveNestedCommentsElement', slots, []);
let comments = [];
let newComment = '';
let flattenedComments = [];
let replyText = {};
let showReplyInput = {};
const addComment = () => {
comments = [
...comments,
{
id: v4(),
title: newComment,
items: []
}
];
$$invalidate(0, newComment = '');
$$invalidate(1, flattenedComments = flattenStructure(comments));
};
const addReply = (parentId, replyText) => {
const findAndAddReply = (items, id) => {
for (let item of items) {
if (item.id === id) {
item.items.push({
id: v4(),
title: replyText,
items: []
});
return true;
}
if (item.items.length && findAndAddReply(item.items, id)) {
return true;
}
}
return false;
};
findAndAddReply(comments, parentId);
$$invalidate(1, flattenedComments = flattenStructure(comments));
};
// Function to toggle reply input
function toggleReplyInput(commentId) {
$$invalidate(3, showReplyInput[commentId] = !showReplyInput[commentId], showReplyInput);
}
function exportToJson() {
const dataStr = "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(comments));
const downloadAnchorNode = document.createElement('a');
downloadAnchorNode.setAttribute("href", dataStr);
downloadAnchorNode.setAttribute("download", "comments.json");
document.body.appendChild(downloadAnchorNode);
downloadAnchorNode.click();
downloadAnchorNode.remove();
}
function handleFileUpload(event) {
const file = event.target.files[0];
if (!file) return;
const reader = new FileReader();
reader.onload = e => {
const text = e.target.result;
try {
comments = JSON.parse(text);
$$invalidate(1, flattenedComments = flattenStructure(comments));
} catch(error) {
console.error("Error parsing JSON:", error);
}
};
reader.readAsText(file);
}
const writable_props = [];
Object.keys($$props).forEach(key => {
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1$2.warn(`<RecursiveNestedCommentsElement> was created with unknown prop '${key}'`);
});
function input1_input_handler() {
newComment = this.value;
$$invalidate(0, newComment);
}
const click_handler = comment => toggleReplyInput(comment.id);
function input_input_handler(comment) {
replyText[comment.id] = this.value;
$$invalidate(2, replyText);
}
const click_handler_1 = comment => {
addReply(comment.id, replyText[comment.id]);
toggleReplyInput(comment.id);
};
$$self.$capture_state = () => ({
uuidv4: v4,
comments,
newComment,
flattenedComments,
replyText,
showReplyInput,
flattenStructure,
addComment,
addReply,
toggleReplyInput,
exportToJson,
handleFileUpload
});
$$self.$inject_state = $$props => {
if ('comments' in $$props) comments = $$props.comments;
if ('newComment' in $$props) $$invalidate(0, newComment = $$props.newComment);
if ('flattenedComments' in $$props) $$invalidate(1, flattenedComments = $$props.flattenedComments);
if ('replyText' in $$props) $$invalidate(2, replyText = $$props.replyText);
if ('showReplyInput' in $$props) $$invalidate(3, showReplyInput = $$props.showReplyInput);
};
if ($$props && "$$inject" in $$props) {
$$self.$inject_state($$props.$$inject);
}
return [
newComment,
flattenedComments,
replyText,
showReplyInput,
addComment,
addReply,
toggleReplyInput,
exportToJson,
handleFileUpload,
input1_input_handler,
click_handler,
input_input_handler,
click_handler_1
];
}
class RecursiveNestedCommentsElement extends SvelteComponentDev {
constructor(options) {
super(options);
init(this, options, instance$4, create_fragment$4, safe_not_equal, {});
dispatch_dev("SvelteRegisterComponent", {
component: this,
tagName: "RecursiveNestedCommentsElement",
options,
id: create_fragment$4.name
});
}
}
/* src\CopyandRemoveListComponent.svelte generated by Svelte v3.59.2 */
const { console: console_1$1 } = globals;
const file$3 = "src\\CopyandRemoveListComponent.svelte";
function get_each_context$1(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[6] = list[i];
return child_ctx;
}
// (26:0) {:else}
function create_else_block(ctx) {
let each_blocks = [];
let each_1_lookup = new Map();
let each_1_anchor;
let each_value = /*items*/ ctx[1];
validate_each_argument(each_value);
const get_key = ctx => /*item*/ ctx[6].id;
validate_each_keys(ctx, each_value, get_each_context$1, get_key);
for (let i = 0; i < each_value.length; i += 1) {
let child_ctx = get_each_context$1(ctx, each_value, i);
let key = get_key(child_ctx);
each_1_lookup.set(key, each_blocks[i] = create_each_block$1(key, child_ctx));
}
const block = {
c: function create() {
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
each_1_anchor = empty();
},
m: function mount(target, anchor) {
for (let i = 0; i < each_blocks.length; i += 1) {
if (each_blocks[i]) {
each_blocks[i].m(target, anchor);
}
}
insert_dev(target, each_1_anchor, anchor);
},
p: function update(ctx, dirty) {
if (dirty & /*copyAndRemoveItem, items*/ 10) {
each_value = /*items*/ ctx[1];
validate_each_argument(each_value);
validate_each_keys(ctx, each_value, get_each_context$1, get_key);
each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx, each_value, each_1_lookup, each_1_anchor.parentNode, destroy_block, create_each_block$1, each_1_anchor, get_each_context$1);
}
},
d: function destroy(detaching) {
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].d(detaching);
}
if (detaching) detach_dev(each_1_anchor);
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_else_block.name,
type: "else",
source: "(26:0) {:else}",
ctx
});
return block;
}
// (24:0) {#if items.length === 0}
function create_if_block$1(ctx) {
let p;
const block = {
c: function create() {
p = element("p");
p.textContent = "All items have been copied! (or none entered yet)";
add_location(p, file$3, 24, 4, 732);
},
m: function mount(target, anchor) {
insert_dev(target, p, anchor);
},
p: noop,
d: function destroy(detaching) {
if (detaching) detach_dev(p);
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_if_block$1.name,
type: "if",
source: "(24:0) {#if items.length === 0}",
ctx
});
return block;
}
// (27:4) {#each items as item (item.id)}
function create_each_block$1(key_1, ctx) {
let button;
let t0_value = /*item*/ ctx[6].text + "";
let t0;
let t1;
let mounted;
let dispose;
function click_handler() {
return /*click_handler*/ ctx[5](/*item*/ ctx[6]);
}
const block = {
key: key_1,
first: null,
c: function create() {
button = element("button");
t0 = text(t0_value);
t1 = space();
attr_dev(button, "class", "item svelte-bmbf24");
add_location(button, file$3, 27, 8, 844);
this.first = button;
},
m: function mount(target, anchor) {
insert_dev(target, button, anchor);
append_dev(button, t0);
append_dev(button, t1);
if (!mounted) {
dispose = listen_dev(button, "click", click_handler, false, false, false, false);
mounted = true;
}
},
p: function update(new_ctx, dirty) {
ctx = new_ctx;
if (dirty & /*items*/ 2 && t0_value !== (t0_value = /*item*/ ctx[6].text + "")) set_data_dev(t0, t0_value);
},
d: function destroy(detaching) {
if (detaching) detach_dev(button);
mounted = false;
dispose();
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_each_block$1.name,
type: "each",
source: "(27:4) {#each items as item (item.id)}",
ctx
});
return block;
}
function create_fragment$3(ctx) {
let h1;
let t1;
let textarea;
let t2;
let if_block_anchor;
let mounted;
let dispose;
function select_block_type(ctx, dirty) {
if (/*items*/ ctx[1].length === 0) return create_if_block$1;
return create_else_block;
}
let current_block_type = select_block_type(ctx);
let if_block = current_block_type(ctx);
const block = {
c: function create() {
h1 = element("h1");
h1.textContent = "Copy items for prompts by clicking buttons below";
t1 = space();
textarea = element("textarea");
t2 = space();
if_block.c();
if_block_anchor = empty();
add_location(h1, file$3, 19, 0, 537);
attr_dev(textarea, "placeholder", "Enter text here...");
attr_dev(textarea, "class", "svelte-bmbf24");
add_location(textarea, file$3, 21, 0, 598);
},
l: function claim(nodes) {
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
},
m: function mount(target, anchor) {
insert_dev(target, h1, anchor);
insert_dev(target, t1, anchor);
insert_dev(target, textarea, anchor);
set_input_value(textarea, /*textInput*/ ctx[0]);
insert_dev(target, t2, anchor);
if_block.m(target, anchor);
insert_dev(target, if_block_anchor, anchor);
if (!mounted) {
dispose = [
listen_dev(textarea, "input", /*textarea_input_handler*/ ctx[4]),
listen_dev(textarea, "input", /*updateItems*/ ctx[2], false, false, false, false)
];
mounted = true;
}
},
p: function update(ctx, [dirty]) {
if (dirty & /*textInput*/ 1) {
set_input_value(textarea, /*textInput*/ ctx[0]);
}
if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) {
if_block.p(ctx, dirty);
} else {
if_block.d(1);
if_block = current_block_type(ctx);
if (if_block) {
if_block.c();
if_block.m(if_block_anchor.parentNode, if_block_anchor);
}
}
},
i: noop,
o: noop,
d: function destroy(detaching) {
if (detaching) detach_dev(h1);
if (detaching) detach_dev(t1);
if (detaching) detach_dev(textarea);
if (detaching) detach_dev(t2);
if_block.d(detaching);
if (detaching) detach_dev(if_block_anchor);
mounted = false;
run_all(dispose);
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_fragment$3.name,
type: "component",
source: "",
ctx
});
return block;
}
function instance$3($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
validate_slots('CopyandRemoveListComponent', slots, []);
let textInput = '';
let items = [];
function updateItems() {
$$invalidate(1, items = textInput.split('\n').filter(line => line.trim() !== '').map((line, index) => ({ id: index + line, text: line })));
}
async function copyAndRemoveItem(item) {
try {
await navigator.clipboard.writeText(item.text);
$$invalidate(1, items = items.filter(i => i.id !== item.id));
} catch(err) {
console.error('Failed to copy text: ', err);
}
}
const writable_props = [];
Object.keys($$props).forEach(key => {
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1$1.warn(`<CopyandRemoveListComponent> was created with unknown prop '${key}'`);
});
function textarea_input_handler() {
textInput = this.value;
$$invalidate(0, textInput);
}
const click_handler = item => copyAndRemoveItem(item);
$$self.$capture_state = () => ({
textInput,
items,
updateItems,
copyAndRemoveItem
});
$$self.$inject_state = $$props => {
if ('textInput' in $$props) $$invalidate(0, textInput = $$props.textInput);
if ('items' in $$props) $$invalidate(1, items = $$props.items);
};
if ($$props && "$$inject" in $$props) {
$$self.$inject_state($$props.$$inject);
}
return [
textInput,
items,
updateItems,
copyAndRemoveItem,
textarea_input_handler,
click_handler
];
}
class CopyandRemoveListComponent extends SvelteComponentDev {
constructor(options) {
super(options);
init(this, options, instance$3, create_fragment$3, safe_not_equal, {});
dispatch_dev("SvelteRegisterComponent", {
component: this,
tagName: "CopyandRemoveListComponent",
options,
id: create_fragment$3.name
});
}
}
/* src\ReadingStateCounter.svelte generated by Svelte v3.59.2 */
const file$2 = "src\\ReadingStateCounter.svelte";
function get_each_context(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[8] = list[i];
child_ctx[10] = i;
return child_ctx;
}
// (66:4) {#each words as wordObj, index (wordObj.word)}
function create_each_block(key_1, ctx) {
let button;
let t0_value = /*wordObj*/ ctx[8].word + "";
let t0;
let t1;
let t2_value = /*wordObj*/ ctx[8].count + "";
let t2;
let t3;
let mounted;
let dispose;
function click_handler() {
return /*click_handler*/ ctx[7](/*index*/ ctx[10]);
}
const block = {
key: key_1,
first: null,
c: function create() {
button = element("button");
t0 = text(t0_value);
t1 = text(" (");
t2 = text(t2_value);
t3 = text(")\r\n ");
attr_dev(button, "class", "word-button svelte-13vjncp");
set_style(button, "background-color", getColor(/*wordObj*/ ctx[8].count));
add_location(button, file$2, 66, 8, 1940);
this.first = button;
},
m: function mount(target, anchor) {
insert_dev(target, button, anchor);
append_dev(button, t0);
append_dev(button, t1);
append_dev(button, t2);
append_dev(button, t3);
if (!mounted) {
dispose = listen_dev(button, "click", click_handler, false, false, false, false);
mounted = true;
}
},
p: function update(new_ctx, dirty) {
ctx = new_ctx;
if (dirty & /*words*/ 2 && t0_value !== (t0_value = /*wordObj*/ ctx[8].word + "")) set_data_dev(t0, t0_value);
if (dirty & /*words*/ 2 && t2_value !== (t2_value = /*wordObj*/ ctx[8].count + "")) set_data_dev(t2, t2_value);
if (dirty & /*words*/ 2) {
set_style(button, "background-color", getColor(/*wordObj*/ ctx[8].count));
}
},
d: function destroy(detaching) {
if (detaching) detach_dev(button);
mounted = false;
dispose();
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_each_block.name,
type: "each",
source: "(66:4) {#each words as wordObj, index (wordObj.word)}",
ctx
});
return block;
}
function create_fragment$2(ctx) {
let div0;
let h1;
let t1;
let input0;
let t2;
let button0;
let t4;
let button1;
let t6;
let input1;
let t7;
let div1;
let each_blocks = [];
let each_1_lookup = new Map();
let mounted;
let dispose;
let each_value = /*words*/ ctx[1];
validate_each_argument(each_value);
const get_key = ctx => /*wordObj*/ ctx[8].word;
validate_each_keys(ctx, each_value, get_each_context, get_key);
for (let i = 0; i < each_value.length; i += 1) {
let child_ctx = get_each_context(ctx, each_value, i);
let key = get_key(child_ctx);
each_1_lookup.set(key, each_blocks[i] = create_each_block(key, child_ctx));
}
const block = {
c: function create() {
div0 = element("div");
h1 = element("h1");
h1.textContent = "Stateful Reader Brainstorm";
t1 = space();
input0 = element("input");
t2 = space();
button0 = element("button");
button0.textContent = "Submit Text";
t4 = space();
button1 = element("button");
button1.textContent = "Export to JSON";
t6 = space();
input1 = element("input");
t7 = space();
div1 = element("div");
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
add_location(h1, file$2, 57, 4, 1576);
attr_dev(input0, "type", "text");
attr_dev(input0, "placeholder", "Enter text here");
attr_dev(input0, "class", "svelte-13vjncp");
add_location(input0, file$2, 58, 4, 1617);
attr_dev(button0, "class", "svelte-13vjncp");
add_location(button0, file$2, 59, 4, 1696);
attr_dev(button1, "class", "svelte-13vjncp");
add_location(button1, file$2, 60, 4, 1752);
attr_dev(input1, "type", "file");
attr_dev(input1, "class", "svelte-13vjncp");
add_location(input1, file$2, 61, 4, 1813);
add_location(div0, file$2, 56, 0, 1565);
add_location(div1, file$2, 64, 0, 1873);
},
l: function claim(nodes) {
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
},
m: function mount(target, anchor) {
insert_dev(target, div0, anchor);
append_dev(div0, h1);
append_dev(div0, t1);
append_dev(div0, input0);
set_input_value(input0, /*inputText*/ ctx[0]);
append_dev(div0, t2);
append_dev(div0, button0);
append_dev(div0, t4);
append_dev(div0, button1);
append_dev(div0, t6);
append_dev(div0, input1);
insert_dev(target, t7, anchor);
insert_dev(target, div1, anchor);
for (let i = 0; i < each_blocks.length; i += 1) {
if (each_blocks[i]) {
each_blocks[i].m(div1, null);
}
}
if (!mounted) {
dispose = [
listen_dev(input0, "input", /*input0_input_handler*/ ctx[6]),
listen_dev(button0, "click", /*submitText*/ ctx[2], false, false, false, false),
listen_dev(button1, "click", /*exportToJson*/ ctx[4], false, false, false, false),
listen_dev(input1, "change", /*importFromJson*/ ctx[5], false, false, false, false)
];
mounted = true;
}
},
p: function update(ctx, [dirty]) {
if (dirty & /*inputText*/ 1 && input0.value !== /*inputText*/ ctx[0]) {
set_input_value(input0, /*inputText*/ ctx[0]);
}
if (dirty & /*getColor, words, handleClick*/ 10) {
each_value = /*words*/ ctx[1];
validate_each_argument(each_value);
validate_each_keys(ctx, each_value, get_each_context, get_key);
each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx, each_value, each_1_lookup, div1, destroy_block, create_each_block, null, get_each_context);
}
},
i: noop,
o: noop,
d: function destroy(detaching) {
if (detaching) detach_dev(div0);
if (detaching) detach_dev(t7);
if (detaching) detach_dev(div1);
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].d();
}
mounted = false;
run_all(dispose);
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_fragment$2.name,
type: "component",
source: "",
ctx
});
return block;
}
function getColor(count) {
const colors = [
'#1a1a1a',
'#333333',
'#4d4d4d',
'#666666',
'#808080',
'#999999',
'#b3b3b3',
'#cccccc',
'#e6e6e6',
'#ffffff'
];
return colors[Math.min(Math.floor(count / 10), 9)];
}
function instance$2($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
validate_slots('ReadingStateCounter', slots, []);
let inputText = "";
let words = [];
function submitText() {
$$invalidate(1, words = inputText.split(/\s+/).map(word => ({ word, count: 0 })));
}
function handleClick(index) {
$$invalidate(1, words[index].count += 1, words);
$$invalidate(1, words = [...words]); // Ensures Svelte detects the change
}
// Function to export data to JSON
function exportToJson() {
const jsonData = JSON.stringify(words);
const blob = new Blob([jsonData], { type: "application/json" });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'statefulwords.json';
a.click();
URL.revokeObjectURL(url);
}
// Function to handle file import
function importFromJson(event) {
const file = event.target.files[0];
if (file) {
const reader = new FileReader();
reader.onload = e => {
const json = e.target.result;
$$invalidate(1, words = JSON.parse(json));
};
reader.readAsText(file);
}
}
const writable_props = [];
Object.keys($$props).forEach(key => {
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(`<ReadingStateCounter> was created with unknown prop '${key}'`);
});
function input0_input_handler() {
inputText = this.value;
$$invalidate(0, inputText);
}
const click_handler = index => handleClick(index);
$$self.$capture_state = () => ({
inputText,
words,
submitText,
handleClick,
getColor,
exportToJson,
importFromJson
});
$$self.$inject_state = $$props => {
if ('inputText' in $$props) $$invalidate(0, inputText = $$props.inputText);
if ('words' in $$props) $$invalidate(1, words = $$props.words);
};
if ($$props && "$$inject" in $$props) {
$$self.$inject_state($$props.$$inject);
}
return [
inputText,
words,
submitText,
handleClick,
exportToJson,
importFromJson,
input0_input_handler,
click_handler
];
}
class ReadingStateCounter extends SvelteComponentDev {
constructor(options) {
super(options);
init(this, options, instance$2, create_fragment$2, safe_not_equal, {});
dispatch_dev("SvelteRegisterComponent", {
component: this,
tagName: "ReadingStateCounter",
options,
id: create_fragment$2.name
});
}
}
/* src\DeliberateSubconciousRepititionPractice.svelte generated by Svelte v3.59.2 */
const { Object: Object_1, console: console_1 } = globals;
const file$1 = "src\\DeliberateSubconciousRepititionPractice.svelte";
// (156:0) {#if selectedItem}
function create_if_block_1(ctx) {
let div;
let strong0;
let t1;
let t2_value = /*selectedItem*/ ctx[1].text + "";
let t2;
let t3;
let strong1;
let t5;
let t6_value = /*counts*/ ctx[2][/*selectedItem*/ ctx[1].id] + "";
let t6;
const block = {
c: function create() {
div = element("div");
strong0 = element("strong");
strong0.textContent = "Current Word:";
t1 = space();
t2 = text(t2_value);
t3 = space();
strong1 = element("strong");
strong1.textContent = "Count:";
t5 = space();
t6 = text(t6_value);
add_location(strong0, file$1, 157, 8, 5744);
add_location(strong1, file$1, 158, 8, 5805);
add_location(div, file$1, 156, 4, 5729);
},
m: function mount(target, anchor) {
insert_dev(target, div, anchor);
append_dev(div, strong0);
append_dev(div, t1);
append_dev(div, t2);
append_dev(div, t3);
append_dev(div, strong1);
append_dev(div, t5);
append_dev(div, t6);
},
p: function update(ctx, dirty) {
if (dirty & /*selectedItem*/ 2 && t2_value !== (t2_value = /*selectedItem*/ ctx[1].text + "")) set_data_dev(t2, t2_value);
if (dirty & /*counts, selectedItem*/ 6 && t6_value !== (t6_value = /*counts*/ ctx[2][/*selectedItem*/ ctx[1].id] + "")) set_data_dev(t6, t6_value);
},
d: function destroy(detaching) {
if (detaching) detach_dev(div);
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_if_block_1.name,
type: "if",
source: "(156:0) {#if selectedItem}",
ctx
});
return block;
}
// (163:0) {#if allWordsLimitReached}
function create_if_block(ctx) {
let div;
const block = {
c: function create() {
div = element("div");
div.textContent = "All words have reached the count limit.";
attr_dev(div, "class", "alert svelte-fb2ql8");
add_location(div, file$1, 163, 4, 5910);
},
m: function mount(target, anchor) {
insert_dev(target, div, anchor);
},
d: function destroy(detaching) {
if (detaching) detach_dev(div);
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_if_block.name,
type: "if",
source: "(163:0) {#if allWordsLimitReached}",
ctx
});
return block;
}
function create_fragment$1(ctx) {
let h1;
let t1;
let input0;
let t2;
let button0;
let t4;
let br;
let t5;
let textarea0;
let t6;
let hr0;
let t7;
let div;
let label;
let t9;
let input1;
let t10;
let t11;
let t12;
let button1;
let t14;
let button2;
let t16;
let hr1;
let t17;
let button3;
let t19;
let textarea1;
let mounted;
let dispose;
let if_block0 = /*selectedItem*/ ctx[1] && create_if_block_1(ctx);
let if_block1 = /*allWordsLimitReached*/ ctx[4] && create_if_block(ctx);
const block = {
c: function create() {
h1 = element("h1");
h1.textContent = "Random Word till appearance count reached for TTS";
t1 = space();
input0 = element("input");
t2 = space();
button0 = element("button");
button0.textContent = "Export Counts";
t4 = space();
br = element("br");
t5 = space();
textarea0 = element("textarea");
t6 = space();
hr0 = element("hr");
t7 = space();
div = element("div");
label = element("label");
label.textContent = "Total Count Limit:";
t9 = space();
input1 = element("input");
t10 = space();
if (if_block0) if_block0.c();
t11 = space();
if (if_block1) if_block1.c();
t12 = space();
button1 = element("button");
button1.textContent = "Start";
t14 = space();
button2 = element("button");
button2.textContent = "Stop";
t16 = space();
hr1 = element("hr");
t17 = space();
button3 = element("button");
button3.textContent = "Simulate one hour or limit Counts";
t19 = space();
textarea1 = element("textarea");
add_location(h1, file$1, 141, 0, 5255);
attr_dev(input0, "type", "file");
add_location(input0, file$1, 143, 0, 5317);
add_location(button0, file$1, 144, 0, 5365);
add_location(br, file$1, 145, 0, 5421);
attr_dev(textarea0, "placeholder", "Enter text here...");
add_location(textarea0, file$1, 146, 0, 5427);
add_location(hr0, file$1, 148, 0, 5531);
attr_dev(label, "for", "totalCountLimit");
add_location(label, file$1, 151, 4, 5550);
attr_dev(input1, "type", "number");
attr_dev(input1, "min", "1");
attr_dev(input1, "id", "totalCountLimit");
add_location(input1, file$1, 152, 4, 5612);
add_location(div, file$1, 150, 0, 5539);
add_location(button1, file$1, 168, 0, 6001);
add_location(button2, file$1, 169, 0, 6042);
add_location(hr1, file$1, 171, 0, 6083);
add_location(button3, file$1, 173, 0, 6091);
textarea1.readOnly = true;
attr_dev(textarea1, "placeholder", "Simulation result will be shown here...");
add_location(textarea1, file$1, 174, 0, 6168);
},
l: function claim(nodes) {
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
},
m: function mount(target, anchor) {
insert_dev(target, h1, anchor);
insert_dev(target, t1, anchor);
insert_dev(target, input0, anchor);
insert_dev(target, t2, anchor);
insert_dev(target, button0, anchor);
insert_dev(target, t4, anchor);
insert_dev(target, br, anchor);
insert_dev(target, t5, anchor);
insert_dev(target, textarea0, anchor);
set_input_value(textarea0, /*textInput*/ ctx[0]);
insert_dev(target, t6, anchor);
insert_dev(target, hr0, anchor);
insert_dev(target, t7, anchor);
insert_dev(target, div, anchor);
append_dev(div, label);
append_dev(div, t9);
append_dev(div, input1);
set_input_value(input1, /*totalCountLimit*/ ctx[3]);
insert_dev(target, t10, anchor);
if (if_block0) if_block0.m(target, anchor);
insert_dev(target, t11, anchor);
if (if_block1) if_block1.m(target, anchor);
insert_dev(target, t12, anchor);
insert_dev(target, button1, anchor);
insert_dev(target, t14, anchor);
insert_dev(target, button2, anchor);
insert_dev(target, t16, anchor);
insert_dev(target, hr1, anchor);
insert_dev(target, t17, anchor);
insert_dev(target, button3, anchor);
insert_dev(target, t19, anchor);
insert_dev(target, textarea1, anchor);
set_input_value(textarea1, /*simulationResult*/ ctx[5]);
if (!mounted) {
dispose = [
listen_dev(input0, "change", /*importCounts*/ ctx[10], false, false, false, false),
listen_dev(button0, "click", /*exportCounts*/ ctx[9], false, false, false, false),
listen_dev(textarea0, "input", /*textarea0_input_handler*/ ctx[12]),
listen_dev(textarea0, "input", /*updateItems*/ ctx[6], false, false, false, false),
listen_dev(input1, "input", /*input1_input_handler*/ ctx[13]),
listen_dev(button1, "click", /*start*/ ctx[7], false, false, false, false),
listen_dev(button2, "click", /*stop*/ ctx[8], false, false, false, false),
listen_dev(button3, "click", /*simulateCount*/ ctx[11], false, false, false, false),
listen_dev(textarea1, "input", /*textarea1_input_handler*/ ctx[14])
];
mounted = true;
}
},
p: function update(ctx, [dirty]) {
if (dirty & /*textInput*/ 1) {
set_input_value(textarea0, /*textInput*/ ctx[0]);
}
if (dirty & /*totalCountLimit*/ 8 && to_number(input1.value) !== /*totalCountLimit*/ ctx[3]) {
set_input_value(input1, /*totalCountLimit*/ ctx[3]);
}
if (/*selectedItem*/ ctx[1]) {
if (if_block0) {
if_block0.p(ctx, dirty);
} else {
if_block0 = create_if_block_1(ctx);
if_block0.c();
if_block0.m(t11.parentNode, t11);
}
} else if (if_block0) {
if_block0.d(1);
if_block0 = null;
}
if (/*allWordsLimitReached*/ ctx[4]) {
if (if_block1) ; else {
if_block1 = create_if_block(ctx);
if_block1.c();
if_block1.m(t12.parentNode, t12);
}
} else if (if_block1) {
if_block1.d(1);
if_block1 = null;
}
if (dirty & /*simulationResult*/ 32) {
set_input_value(textarea1, /*simulationResult*/ ctx[5]);
}
},
i: noop,
o: noop,
d: function destroy(detaching) {
if (detaching) detach_dev(h1);
if (detaching) detach_dev(t1);
if (detaching) detach_dev(input0);
if (detaching) detach_dev(t2);
if (detaching) detach_dev(button0);
if (detaching) detach_dev(t4);
if (detaching) detach_dev(br);
if (detaching) detach_dev(t5);
if (detaching) detach_dev(textarea0);
if (detaching) detach_dev(t6);
if (detaching) detach_dev(hr0);
if (detaching) detach_dev(t7);
if (detaching) detach_dev(div);
if (detaching) detach_dev(t10);
if (if_block0) if_block0.d(detaching);
if (detaching) detach_dev(t11);
if (if_block1) if_block1.d(detaching);
if (detaching) detach_dev(t12);
if (detaching) detach_dev(button1);
if (detaching) detach_dev(t14);
if (detaching) detach_dev(button2);
if (detaching) detach_dev(t16);
if (detaching) detach_dev(hr1);
if (detaching) detach_dev(t17);
if (detaching) detach_dev(button3);
if (detaching) detach_dev(t19);
if (detaching) detach_dev(textarea1);
mounted = false;
run_all(dispose);
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_fragment$1.name,
type: "component",
source: "",
ctx
});
return block;
}
function instance$1($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
validate_slots('DeliberateSubconciousRepititionPractice', slots, []);
let textInput = '';
let items = [];
let running = false;
let selectedItem = null;
let intervalId = null;
let counts = {};
let totalCountLimit = 10; // Default limit, can be changed by the user
let allWordsLimitReached = false;
let simulationResult = ''; // Variable to hold the result of the simulation
function updateItems() {
items = textInput.split(/\W+/).filter(word => word.trim() !== '').map(word => ({ id: word, text: word })); // Use word itself as the ID
$$invalidate(2, counts = items.reduce((acc, item) => ({ ...acc, [item.id]: 0 }), {}));
}
function start() {
if (!running && items.length > 0) {
running = true;
intervalId = setInterval(
() => {
// Filter out items that have reached the totalCountLimit
const eligibleItems = items.filter(item => counts[item.id] < totalCountLimit);
// If there are no eligible items left, stop the timer
if (eligibleItems.length === 0) {
stop();
$$invalidate(4, allWordsLimitReached = true); // Set when all words reach the limit
return;
}
// Select a random item from the eligible items
const randomIndex = Math.floor(Math.random() * eligibleItems.length);
$$invalidate(1, selectedItem = eligibleItems[randomIndex]);
$$invalidate(2, counts[selectedItem.id]++, counts);
},
1000
);
}
}
function stop() {
if (running) {
clearInterval(intervalId);
running = false;
intervalId = null;
}
}
function exportCounts() {
const dataStr = JSON.stringify(counts);
const blob = new Blob([dataStr], { type: "application/json" });
const url = URL.createObjectURL(blob);
const link = document.createElement("a");
link.download = "counts.json";
link.href = url;
link.click();
}
function importCounts(event) {
const fileReader = new FileReader();
fileReader.onload = e => {
const data = JSON.parse(e.target.result);
$$invalidate(2, counts = { ...counts, ...data });
items = Object.keys(data).map((word, index) => ({
id: word, // Use word itself as the ID
text: word
}));
// Ensure existing items are updated if they are not in the imported data
items.forEach(item => {
if (!counts[item.id]) {
$$invalidate(2, counts[item.id] = 0, counts);
}
});
};
fileReader.readAsText(event.target.files[0]);
}
// ... (other variables and functions remain unchanged)
function simulateCount() {
let simulatedTime = 0;
let maxSimulatedSeconds = 3600; // 3600 seconds = 1 hour
let simulationOutput = ""; // Accumulate output here
// Reset the allWordsLimitReached flag and simulationResult
$$invalidate(4, allWordsLimitReached = false);
$$invalidate(5, simulationResult = '');
// Simulate until max time is reached or all words hit the limit
while (simulatedTime < maxSimulatedSeconds && !allWordsLimitReached) {
const eligibleItems = items.filter(item => counts[item.id] < totalCountLimit);
if (eligibleItems.length === 0) {
$$invalidate(4, allWordsLimitReached = true); // Set when all words reach the limit
break; // Exit the loop if all words hit the limit
}
// Select a random item and increment its count
const randomIndex = Math.floor(Math.random() * eligibleItems.length);
$$invalidate(1, selectedItem = eligibleItems[randomIndex]);
$$invalidate(2, counts[selectedItem.id]++, counts);
simulationOutput += selectedItem.text + " "; // Append selected word to output
// Increment simulated time (equivalent to the time between iterations in the real scenario)
simulatedTime++;
}
// Update simulationResult with a message
if (allWordsLimitReached) {
$$invalidate(5, simulationResult = "All words have reached the count limit during simulation.");
} else {
$$invalidate(5, simulationResult = `Simulation finished after ${simulatedTime} seconds.`);
}
// Export the simulation output to a text file
exportSimulationOutput(simulationOutput);
}
function exportSimulationOutput(output) {
if (output) {
const blob = new Blob([output], { type: "text/plain" });
const url = URL.createObjectURL(blob);
const link = document.createElement("a");
link.download = "simulation_output.txt";
link.href = url;
link.click();
} else {
console.error("No simulation output to export.");
$$invalidate(5, simulationResult = "No simulation output to export.");
}
}
onDestroy(() => {
if (intervalId) {
clearInterval(intervalId);
}
});
const writable_props = [];
Object_1.keys($$props).forEach(key => {
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1.warn(`<DeliberateSubconciousRepititionPractice> was created with unknown prop '${key}'`);
});
function textarea0_input_handler() {
textInput = this.value;
$$invalidate(0, textInput);
}
function input1_input_handler() {
totalCountLimit = to_number(this.value);
$$invalidate(3, totalCountLimit);
}
function textarea1_input_handler() {
simulationResult = this.value;
$$invalidate(5, simulationResult);
}
$$self.$capture_state = () => ({
onDestroy,
textInput,
items,
running,
selectedItem,
intervalId,
counts,
totalCountLimit,
allWordsLimitReached,
simulationResult,
updateItems,
start,
stop,
exportCounts,
importCounts,
simulateCount,
exportSimulationOutput
});
$$self.$inject_state = $$props => {
if ('textInput' in $$props) $$invalidate(0, textInput = $$props.textInput);
if ('items' in $$props) items = $$props.items;
if ('running' in $$props) running = $$props.running;
if ('selectedItem' in $$props) $$invalidate(1, selectedItem = $$props.selectedItem);
if ('intervalId' in $$props) intervalId = $$props.intervalId;
if ('counts' in $$props) $$invalidate(2, counts = $$props.counts);
if ('totalCountLimit' in $$props) $$invalidate(3, totalCountLimit = $$props.totalCountLimit);
if ('allWordsLimitReached' in $$props) $$invalidate(4, allWordsLimitReached = $$props.allWordsLimitReached);
if ('simulationResult' in $$props) $$invalidate(5, simulationResult = $$props.simulationResult);
};
if ($$props && "$$inject" in $$props) {
$$self.$inject_state($$props.$$inject);
}
return [
textInput,
selectedItem,
counts,
totalCountLimit,
allWordsLimitReached,
simulationResult,
updateItems,
start,
stop,
exportCounts,
importCounts,
simulateCount,
textarea0_input_handler,
input1_input_handler,
textarea1_input_handler
];
}
class DeliberateSubconciousRepititionPractice extends SvelteComponentDev {
constructor(options) {
super(options);
init(this, options, instance$1, create_fragment$1, safe_not_equal, {});
dispatch_dev("SvelteRegisterComponent", {
component: this,
tagName: "DeliberateSubconciousRepititionPractice",
options,
id: create_fragment$1.name
});
}
}
/* src\App.svelte generated by Svelte v3.59.2 */
const file = "src\\App.svelte";
function create_fragment(ctx) {
let main;
let h10;
let t0;
let t1;
let t2;
let t3;
let p;
let t4;
let a;
let t6;
let t7;
let h11;
let t9;
let h30;
let t11;
let h31;
let t13;
let div0;
let subrepprac;
let t14;
let div1;
let readingstatecounter;
let t15;
let div2;
let copyremove;
let t16;
let nestedcommentssvelte;
let t17;
let myyoutube;
let t18;
let h12;
let t20;
let dotgame;
let current;
subrepprac = new DeliberateSubconciousRepititionPractice({ $$inline: true });
readingstatecounter = new ReadingStateCounter({ $$inline: true });
copyremove = new CopyandRemoveListComponent({ $$inline: true });
nestedcommentssvelte = new RecursiveNestedCommentsElement({ $$inline: true });
myyoutube = new YoutubeIframeAPICustomInterface({ $$inline: true });
dotgame = new MovingDotSpacePortfromReact({ $$inline: true });
const block = {
c: function create() {
main = element("main");
h10 = element("h1");
t0 = text("Hello ");
t1 = text(/*name*/ ctx[0]);
t2 = text("!");
t3 = space();
p = element("p");
t4 = text("Visit the ");
a = element("a");
a.textContent = "Svelte tutorial";
t6 = text(" to learn how to build Svelte apps.");
t7 = space();
h11 = element("h1");
h11.textContent = "Brainstorm for Educational Interfaces to add LLM and other models into";
t9 = space();
h30 = element("h3");
h30.textContent = "(Through Gradio and Custom Components)";
t11 = space();
h31 = element("h3");
h31.textContent = "Gradio client Test in another space due to incompatabilitiess with default svelte and @gradio/client";
t13 = space();
div0 = element("div");
create_component(subrepprac.$$.fragment);
t14 = space();
div1 = element("div");
create_component(readingstatecounter.$$.fragment);
t15 = space();
div2 = element("div");
create_component(copyremove.$$.fragment);
t16 = space();
create_component(nestedcommentssvelte.$$.fragment);
t17 = space();
create_component(myyoutube.$$.fragment);
t18 = space();
h12 = element("h1");
h12.textContent = "Themeable Game Brainstorm - Image + Lists - Game as Universal Translator for any subject";
t20 = space();
create_component(dotgame.$$.fragment);
attr_dev(h10, "class", "svelte-1gz1mpc");
add_location(h10, file, 24, 1, 668);
attr_dev(a, "href", "https://svelte.dev/tutorial");
add_location(a, file, 25, 14, 705);
add_location(p, file, 25, 1, 692);
attr_dev(h11, "class", "svelte-1gz1mpc");
add_location(h11, file, 27, 1, 804);
add_location(h30, file, 28, 1, 887);
add_location(h31, file, 30, 1, 939);
attr_dev(div0, "class", "componentborder svelte-1gz1mpc");
add_location(div0, file, 32, 1, 1052);
attr_dev(div1, "class", "componentborder svelte-1gz1mpc");
add_location(div1, file, 34, 1, 1104);
attr_dev(div2, "class", "componentborder svelte-1gz1mpc");
add_location(div2, file, 36, 1, 1166);
attr_dev(h12, "class", "svelte-1gz1mpc");
add_location(h12, file, 43, 1, 1310);
attr_dev(main, "class", "svelte-1gz1mpc");
add_location(main, file, 22, 0, 659);
},
l: function claim(nodes) {
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
},
m: function mount(target, anchor) {
insert_dev(target, main, anchor);
append_dev(main, h10);
append_dev(h10, t0);
append_dev(h10, t1);
append_dev(h10, t2);
append_dev(main, t3);
append_dev(main, p);
append_dev(p, t4);
append_dev(p, a);
append_dev(p, t6);
append_dev(main, t7);
append_dev(main, h11);
append_dev(main, t9);
append_dev(main, h30);
append_dev(main, t11);
append_dev(main, h31);
append_dev(main, t13);
append_dev(main, div0);
mount_component(subrepprac, div0, null);
append_dev(main, t14);
append_dev(main, div1);
mount_component(readingstatecounter, div1, null);
append_dev(main, t15);
append_dev(main, div2);
mount_component(copyremove, div2, null);
append_dev(main, t16);
mount_component(nestedcommentssvelte, main, null);
append_dev(main, t17);
mount_component(myyoutube, main, null);
append_dev(main, t18);
append_dev(main, h12);
append_dev(main, t20);
mount_component(dotgame, main, null);
current = true;
},
p: function update(ctx, [dirty]) {
if (!current || dirty & /*name*/ 1) set_data_dev(t1, /*name*/ ctx[0]);
},
i: function intro(local) {
if (current) return;
transition_in(subrepprac.$$.fragment, local);
transition_in(readingstatecounter.$$.fragment, local);
transition_in(copyremove.$$.fragment, local);
transition_in(nestedcommentssvelte.$$.fragment, local);
transition_in(myyoutube.$$.fragment, local);
transition_in(dotgame.$$.fragment, local);
current = true;
},
o: function outro(local) {
transition_out(subrepprac.$$.fragment, local);
transition_out(readingstatecounter.$$.fragment, local);
transition_out(copyremove.$$.fragment, local);
transition_out(nestedcommentssvelte.$$.fragment, local);
transition_out(myyoutube.$$.fragment, local);
transition_out(dotgame.$$.fragment, local);
current = false;
},
d: function destroy(detaching) {
if (detaching) detach_dev(main);
destroy_component(subrepprac);
destroy_component(readingstatecounter);
destroy_component(copyremove);
destroy_component(nestedcommentssvelte);
destroy_component(myyoutube);
destroy_component(dotgame);
}
};
dispatch_dev("SvelteRegisterBlock", {
block,
id: create_fragment.name,
type: "component",
source: "",
ctx
});
return block;
}
function instance($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
validate_slots('App', slots, []);
let { name } = $$props;
let showModal = false;
function openModal() {
showModal = true;
}
function closeModal() {
showModal = false;
}
$$self.$$.on_mount.push(function () {
if (name === undefined && !('name' in $$props || $$self.$$.bound[$$self.$$.props['name']])) {
console.warn("<App> was created without expected prop 'name'");
}
});
const writable_props = ['name'];
Object.keys($$props).forEach(key => {
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(`<App> was created with unknown prop '${key}'`);
});
$$self.$$set = $$props => {
if ('name' in $$props) $$invalidate(0, name = $$props.name);
};
$$self.$capture_state = () => ({
name,
VideoGradioComponentBrainstorming,
DotGame: MovingDotSpacePortfromReact,
MyYoutube: YoutubeIframeAPICustomInterface,
NestedCommentsSvelte: RecursiveNestedCommentsElement,
CopyRemove: CopyandRemoveListComponent,
ReadingStateCounter,
SubRepPrac: DeliberateSubconciousRepititionPractice,
showModal,
openModal,
closeModal
});
$$self.$inject_state = $$props => {
if ('name' in $$props) $$invalidate(0, name = $$props.name);
if ('showModal' in $$props) showModal = $$props.showModal;
};
if ($$props && "$$inject" in $$props) {
$$self.$inject_state($$props.$$inject);
}
return [name];
}
class App extends SvelteComponentDev {
constructor(options) {
super(options);
init(this, options, instance, create_fragment, safe_not_equal, { name: 0 });
dispatch_dev("SvelteRegisterComponent", {
component: this,
tagName: "App",
options,
id: create_fragment.name
});
}
get name() {
throw new Error("<App>: Props cannot be read directly from the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
}
set name(value) {
throw new Error("<App>: Props cannot be set directly on the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
}
}
const app = new App({
target: document.body,
props: {
name: 'world'
}
});
return app;
})();
//# sourceMappingURL=bundle.js.map