(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(` 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(` 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(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); } set position(value) { throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); } get boundaries() { throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); } set boundaries(value) { throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); } get focusDot() { return this.$$.ctx[3]; } set focusDot(value) { throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); } } /* 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(" 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(` 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(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); } set position(value) { throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); } } 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(" 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(` 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(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); } set isOpen(value) { throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); } get title() { throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); } set title(value) { throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); } get content() { throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); } set content(value) { throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); } get items() { throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); } set items(value) { throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); } get onClose() { throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); } set onClose(value) { throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); } get currentTheme() { throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); } set currentTheme(value) { throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); } } /* 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(` 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(` 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(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); } set ChangedContentPlaceholder(value) { throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); } } // 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(` 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(` 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(` 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(` 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(` 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(` 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(" 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(` 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(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); } set name(value) { throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); } } const app = new App({ target: document.body, props: { name: 'world' } }); return app; })(); //# sourceMappingURL=bundle.js.map