(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 attr(node, attribute, value) { if (value == null) node.removeAttribute(attribute); else if (node.getAttribute(attribute) !== value) node.setAttribute(attribute, 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$5 } = globals; const file$9 = "src\\VideoGradioComponentBrainstorming.svelte"; function get_each_context$5(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$5(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$9, 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$5.name, type: "each", source: "(85:4) {#each kitchenOptions as option}", ctx }); return block; } function create_fragment$9(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$5(get_each_context$5(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$9, 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$9, 72, 4, 2006); attr_dev(video, "id", "videoCanvas"); video.autoplay = true; attr_dev(video, "class", "svelte-ufd3fo"); add_location(video, file$9, 70, 2, 1965); attr_dev(div0, "id", "overlayText"); attr_dev(div0, "class", "svelte-ufd3fo"); add_location(div0, file$9, 74, 2, 2111); attr_dev(div1, "id", "videoContainer"); attr_dev(div1, "class", "svelte-ufd3fo"); add_location(div1, file$9, 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$9, 77, 0, 2186); attr_dev(input, "type", "text"); add_location(input, file$9, 78, 0, 2294); add_location(button, file$9, 82, 2, 2429); if (/*selectedOption*/ ctx[0] === void 0) add_render_callback(() => /*select_change_handler*/ ctx[9].call(select)); add_location(select, file$9, 83, 2, 2479); attr_dev(div2, "id", "frameForButtons"); add_location(div2, file$9, 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$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(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$9.name, type: "component", source: "", ctx }); return block; } function ocrTest() { } // Logic for 'Test OCR' button function instance$9($$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$5.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$9, create_fragment$9, safe_not_equal, {}); dispatch_dev("SvelteRegisterComponent", { component: this, tagName: "VideoGradioComponentBrainstorming", options, id: create_fragment$9.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$8 = "src\\MovingDotPortfromReact.svelte"; function create_fragment$8(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$8, 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$8.name, type: "component", source: "", ctx }); return block; } const step = 10; function instance$8($$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$8, create_fragment$8, safe_not_equal, { position: 0, boundaries: 2, focusDot: 3 }); dispatch_dev("SvelteRegisterComponent", { component: this, tagName: "MovingDotPortfromReact", options, id: create_fragment$8.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$7 = "src\\MovingDotTargetPortfromReact.svelte"; function create_fragment$7(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$7, 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$7.name, type: "component", source: "", ctx }); return block; } function instance$7($$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$7, create_fragment$7, safe_not_equal, { position: 0 }); dispatch_dev("SvelteRegisterComponent", { component: this, tagName: "MovingDotTargetPortfromReact", options, id: create_fragment$7.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 ''"); } } /* src\SimpleModal.svelte generated by Svelte v3.59.2 */ const { console: console_1$4 } = globals; const file$6 = "src\\SimpleModal.svelte"; function get_each_context$4(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[8] = list[i]; return child_ctx; } // (22:0) {#if isOpen} function create_if_block$3(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$4(get_each_context$4(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$6, 25, 8, 651); add_location(button, file$6, 26, 8, 677); attr_dev(div0, "class", "modal-header svelte-m51ous"); add_location(div0, file$6, 24, 6, 615); attr_dev(ul, "class", "modal-items"); add_location(ul, file$6, 30, 8, 801); attr_dev(div1, "class", "modal-content svelte-m51ous"); add_location(div1, file$6, 28, 6, 745); attr_dev(div2, "class", "modal svelte-m51ous"); add_location(div2, file$6, 23, 4, 588); attr_dev(div3, "class", "modal-overlay svelte-m51ous"); add_location(div3, file$6, 22, 2, 555); }, 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$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(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$3.name, type: "if", source: "(22:0) {#if isOpen}", ctx }); return block; } // (32:10) {#each items as item} function create_each_block$4(ctx) { let button; let t_value = /*item*/ ctx[8].label + ""; let t; let mounted; let dispose; function click_handler() { return /*click_handler*/ ctx[7](/*item*/ ctx[8]); } const block = { c: function create() { button = element("button"); t = text(t_value); add_location(button, file$6, 32, 12, 872); }, 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[8].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$4.name, type: "each", source: "(32:10) {#each items as item}", ctx }); return block; } function create_fragment$6(ctx) { let if_block_anchor; let if_block = /*isOpen*/ ctx[0] && create_if_block$3(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$3(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$6.name, type: "component", source: "", ctx }); return block; } function instance$6($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; validate_slots('SimpleModal', slots, []); let { isOpen = false } = $$props; let { title = '' } = $$props; let { content = '' } = $$props; let { items = [] } = $$props; let { onClose } = $$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(); } $$self.$$.on_mount.push(function () { if (onClose === undefined && !('onClose' in $$props || $$self.$$.bound[$$self.$$.props['onClose']])) { console_1$4.warn(" was created without expected prop 'onClose'"); } }); const writable_props = ['isOpen', 'title', 'content', 'items', 'onClose']; Object.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}'`); }); 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); }; $$self.$capture_state = () => ({ isOpen, title, content, items, onClose, 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 ($$props && "$$inject" in $$props) { $$self.$inject_state($$props.$$inject); } return [ isOpen, title, content, items, closeModal, handleItemClick, onClose, click_handler ]; } class SimpleModal extends SvelteComponentDev { constructor(options) { super(options); init(this, options, instance$6, create_fragment$6, safe_not_equal, { isOpen: 0, title: 1, content: 2, items: 3, onClose: 6 }); dispatch_dev("SvelteRegisterComponent", { component: this, tagName: "SimpleModal", options, id: create_fragment$6.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 ''"); } } /* src\MovingDotSpacePortfromReact.svelte generated by Svelte v3.59.2 */ const { console: console_1$3 } = globals; const file$5 = "src\\MovingDotSpacePortfromReact.svelte"; function get_each_context$3(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[19] = list[i]; return child_ctx; } // (155: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[19].name + ""; let t1; let current; target = new MovingDotTargetPortfromReact({ props: { position: /*target*/ ctx[19] }, $$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[19].x + "px"); set_style(span, "top", /*target*/ ctx[19].y + "px"); add_location(span, file$5, 156, 8, 7641); 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*/ 64) target_changes.position = /*target*/ ctx[19]; target.$set(target_changes); if ((!current || dirty & /*$targets*/ 64) && t1_value !== (t1_value = /*target*/ ctx[19].name + "")) set_data_dev(t1, t1_value); if (!current || dirty & /*$targets*/ 64) { set_style(span, "left", /*target*/ ctx[19].x + "px"); } if (!current || dirty & /*$targets*/ 64) { set_style(span, "top", /*target*/ ctx[19].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: "(155:4) {#each $targets as target (target.name)}", ctx }); return block; } // (161:4) {#if isModalOpen} function create_if_block$2(ctx) { let modal; let current; modal = new SimpleModal({ props: { isOpen: /*isModalOpen*/ ctx[2], onClose: /*handleModalClose*/ ctx[11], title: "Test Collision", content: /*currentcollisiontext*/ ctx[3], items: /*currentcollisionitems*/ ctx[4] }, $$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*/ 4) modal_changes.isOpen = /*isModalOpen*/ ctx[2]; if (dirty & /*currentcollisiontext*/ 8) modal_changes.content = /*currentcollisiontext*/ ctx[3]; if (dirty & /*currentcollisionitems*/ 16) modal_changes.items = /*currentcollisionitems*/ ctx[4]; 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$2.name, type: "if", source: "(161:4) {#if isModalOpen}", ctx }); return block; } function create_fragment$5(ctx) { let div1; let canvas_1; let t0; let movingdot; let t1; let div0; let t2; let t3_value = /*$dotPosition*/ ctx[0].x + ""; let t3; let t4; let t5_value = /*$dotPosition*/ ctx[0].y + ""; let t5; let t6; let each_blocks = []; let each_1_lookup = new Map(); let t7; let current; let mounted; let dispose; let movingdot_props = { position: /*$dotPosition*/ ctx[0], boundaries: /*boundaries*/ ctx[9] }; movingdot = new MovingDotPortfromReact({ props: movingdot_props, $$inline: true }); /*movingdot_binding*/ ctx[15](movingdot); movingdot.$on("move", /*move_handler*/ ctx[16]); let each_value = /*$targets*/ ctx[6]; validate_each_argument(each_value); const get_key = ctx => /*target*/ ctx[19].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); each_1_lookup.set(key, each_blocks[i] = create_each_block$3(key, child_ctx)); } let if_block = /*isModalOpen*/ ctx[2] && create_if_block$2(ctx); const block = { c: function create() { div1 = element("div"); canvas_1 = element("canvas"); t0 = space(); create_component(movingdot.$$.fragment); t1 = space(); div0 = element("div"); t2 = text("Minor Game Events Log for player ||| Position for Developer "); t3 = text(t3_value); t4 = space(); t5 = text(t5_value); t6 = space(); for (let i = 0; i < each_blocks.length; i += 1) { each_blocks[i].c(); } t7 = space(); if (if_block) if_block.c(); set_style(canvas_1, "width", "100%"); set_style(canvas_1, "height", "100%"); attr_dev(canvas_1, "tabindex", "0"); add_location(canvas_1, file$5, 151, 4, 7167); attr_dev(div0, "id", "overlayText"); attr_dev(div0, "class", "svelte-c2nwl9"); add_location(div0, file$5, 153, 4, 7425); attr_dev(div1, "id", "game-container"); attr_dev(div1, "style", /*spaceStyle*/ ctx[13]); add_location(div1, file$5, 150, 0, 7081); }, 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, div1, anchor); append_dev(div1, canvas_1); /*canvas_1_binding*/ ctx[14](canvas_1); append_dev(div1, t0); mount_component(movingdot, div1, null); append_dev(div1, t1); append_dev(div1, div0); append_dev(div0, t2); append_dev(div0, t3); append_dev(div0, t4); append_dev(div0, t5); append_dev(div1, t6); for (let i = 0; i < each_blocks.length; i += 1) { if (each_blocks[i]) { each_blocks[i].m(div1, null); } } append_dev(div1, t7); if (if_block) if_block.m(div1, null); current = true; if (!mounted) { dispose = listen_dev(canvas_1, "click", /*handleSpaceClick*/ ctx[10], false, false, false, false); mounted = true; } }, p: function update(ctx, [dirty]) { const movingdot_changes = {}; if (dirty & /*$dotPosition*/ 1) movingdot_changes.position = /*$dotPosition*/ ctx[0]; movingdot.$set(movingdot_changes); if ((!current || dirty & /*$dotPosition*/ 1) && t3_value !== (t3_value = /*$dotPosition*/ ctx[0].x + "")) set_data_dev(t3, t3_value); if ((!current || dirty & /*$dotPosition*/ 1) && t5_value !== (t5_value = /*$dotPosition*/ ctx[0].y + "")) set_data_dev(t5, t5_value); if (dirty & /*$targets*/ 64) { each_value = /*$targets*/ ctx[6]; 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, each_1_lookup, div1, outro_and_destroy_block, create_each_block$3, t7, get_each_context$3); check_outros(); } if (/*isModalOpen*/ ctx[2]) { if (if_block) { if_block.p(ctx, dirty); if (dirty & /*isModalOpen*/ 4) { transition_in(if_block, 1); } } else { if_block = create_if_block$2(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(); } }, i: function intro(local) { if (current) return; transition_in(movingdot.$$.fragment, local); for (let i = 0; i < each_value.length; i += 1) { transition_in(each_blocks[i]); } transition_in(if_block); current = true; }, o: function outro(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); current = false; }, d: function destroy(detaching) { if (detaching) detach_dev(div1); /*canvas_1_binding*/ ctx[14](null); /*movingdot_binding*/ ctx[15](null); destroy_component(movingdot); for (let i = 0; i < each_blocks.length; i += 1) { each_blocks[i].d(); } if (if_block) if_block.d(); mounted = false; dispose(); } }; dispatch_dev("SvelteRegisterBlock", { block, id: create_fragment$5.name, type: "component", source: "", ctx }); return block; } function instance$5($$self, $$props, $$invalidate) { let $dotPosition; let $targets; let { $$slots: slots = {}, $$scope } = $$props; validate_slots('MovingDotSpacePortfromReact', slots, []); let canvas; let dotPosition = writable({ x: 900, y: 450 }); validate_store(dotPosition, 'dotPosition'); component_subscribe($$self, dotPosition, value => $$invalidate(0, $dotPosition = value)); let 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", collisiontext: "You arrived what now?" }, // Add more targets as needed { name: "Market Stall", x: 200, y: 300, collisionType: "", collisiontext: "" }, { name: "Inn Entrance", // A market stall in the bustling market area. x: 400, y: 450, collisionType: "", collisiontext: "" }, { name: "Town Hall", // The entrance to the inn for rest or information. x: 600, y: 350, collisionType: "", collisiontext: "" }, { name: "Fountain", // The entrance to the town hall for quests. x: 500, y: 500, collisionType: "", collisiontext: "" }, { name: "Bridge", // A fountain in the town square as a meeting point. x: 1100, y: 700, collisionType: "", collisiontext: "" }, { name: "Waterfall", // A bridge in the mystical forest area. x: 1300, y: 800, collisionType: "", collisiontext: "" }, { name: "Mountain Peak", // A waterfall that could hide secrets or treasures. 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" }, validate_store(targets, 'targets'); component_subscribe($$self, targets, value => $$invalidate(6, $targets = value)); //{ 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" }, let boundaries = { maxX: 1835, maxY: 890, minX: 0, minY: 0 }; let isModalOpen = false; let currentcollisiontext; let currentcollisionitems = []; let movingDotElement; function handleSpaceClick() { //console.log('Container clicked!', event); movingDotElement.focusDot(); } function handleModalClose() { $$invalidate(2, 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(2, isModalOpen = true); $$invalidate(3, currentcollisiontext = target.collisiontext); $$invalidate(4, currentcollisionitems = [ { label: "Ask about the hidden cave", action: "revealCaveLocation" }, { label: "Inquire about the town's history", action: "giveHistory" }, { label: "Ignore and leave", action: "closeModal" } ]); break; } // Handle other permanent UI elements here }; // ... //ChatGPT Suggested Options // Change the background color of the canvas or a specific element. // case "changeBackgroundColor": const spaceStyle = `position: relative; width: 100%; height: 100vh; border: 1px solid black; overflow: hidden; background-image: url('/AutoGameBackgrounds/1stGameLoc123.png'); background-size: cover; background-position: center;`; 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 canvas_1_binding($$value) { binding_callbacks[$$value ? 'unshift' : 'push'](() => { canvas = $$value; $$invalidate(1, canvas); }); } function movingdot_binding($$value) { binding_callbacks[$$value ? 'unshift' : 'push'](() => { movingDotElement = $$value; $$invalidate(5, movingDotElement); }); } const move_handler = e => updateDotPosition(e.detail.x, e.detail.y); $$self.$capture_state = () => ({ onMount, writable, MovingDot: MovingDotPortfromReact, Target: MovingDotTargetPortfromReact, Modal: SimpleModal, canvas, dotPosition, targets, boundaries, isModalOpen, currentcollisiontext, currentcollisionitems, movingDotElement, handleSpaceClick, handleModalClose, updateDotPosition, checkCollision, handleCollision, spaceStyle, $dotPosition, $targets }); $$self.$inject_state = $$props => { if ('canvas' in $$props) $$invalidate(1, canvas = $$props.canvas); if ('dotPosition' in $$props) $$invalidate(7, dotPosition = $$props.dotPosition); if ('targets' in $$props) $$invalidate(8, targets = $$props.targets); if ('boundaries' in $$props) $$invalidate(9, boundaries = $$props.boundaries); if ('isModalOpen' in $$props) $$invalidate(2, isModalOpen = $$props.isModalOpen); if ('currentcollisiontext' in $$props) $$invalidate(3, currentcollisiontext = $$props.currentcollisiontext); if ('currentcollisionitems' in $$props) $$invalidate(4, currentcollisionitems = $$props.currentcollisionitems); if ('movingDotElement' in $$props) $$invalidate(5, movingDotElement = $$props.movingDotElement); }; 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, canvas, isModalOpen, currentcollisiontext, currentcollisionitems, movingDotElement, $targets, dotPosition, targets, boundaries, handleSpaceClick, handleModalClose, updateDotPosition, spaceStyle, canvas_1_binding, movingdot_binding, move_handler ]; } class MovingDotSpacePortfromReact extends SvelteComponentDev { constructor(options) { super(options); init(this, options, instance$5, create_fragment$5, safe_not_equal, {}); dispatch_dev("SvelteRegisterComponent", { component: this, tagName: "MovingDotSpacePortfromReact", options, id: create_fragment$5.name }); } } /* src\YoutubeIframeAPICustomInterface.svelte generated by Svelte v3.59.2 */ const { console: console_1$2 } = globals; const file$4 = "src\\YoutubeIframeAPICustomInterface.svelte"; function create_fragment$4(ctx) { let h1; let t1; let label; let t2; let input0; let t3; let input1; let t4; let div3; let div0; let t5; let div1; let t6; let t7_value = /*currentTime*/ ctx[3].toFixed(2) + ""; let t7; let t8; let t9; let div2; let t10; let t11; let br0; let t12; let t13; let t14; let button0; let t18; let button1; let t22; let t23; let t24; let t25_value = /*timestamps*/ ctx[8].length + ""; let t25; let t26; let br1; let t27; let button2; let t29; let button3; let t30; let button3_class_value; let button3_disabled_value; let t31; let button4; let t32; let button4_class_value; let button4_disabled_value; let t33; let button5; let t34; let button5_class_value; let button5_disabled_value; let t35; let t36; let t37; let t38_value = /*userTimestamps*/ ctx[1].length + ""; let t38; let t39; let br2; let t40; let t41; let t42; let t43_value = /*r2userTimestamps*/ ctx[9].length + ""; let t43; let t44; let br3; let t45; let br4; let t46; let button6; let t48; let button7; let t50; let input2; 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 for now)\r\n "); input1 = element("input"); t4 = space(); div3 = element("div"); div0 = element("div"); t5 = space(); div1 = element("div"); t6 = text("Current Time: "); t7 = text(t7_value); t8 = text(" seconds"); t9 = space(); div2 = element("div"); t10 = text(/*line*/ ctx[5]); t11 = space(); br0 = element("br"); t12 = space(); t13 = text(/*currentWord*/ ctx[4]); t14 = space(); button0 = element("button"); button0.textContent = `Previous Auto Timestamp - ${/*interval*/ ctx[13]}s`; t18 = space(); button1 = element("button"); button1.textContent = `Next Auto Timestamp - ${/*interval*/ ctx[13]}s`; t22 = text("\r\nAuto Timestamps: "); t23 = text(/*currentIndex*/ ctx[7]); t24 = text(" / "); t25 = text(t25_value); t26 = space(); br1 = element("br"); t27 = space(); button2 = element("button"); button2.textContent = "Add Timestamp"; t29 = space(); button3 = element("button"); t30 = text("Current User Timestamp (incomplete)"); t31 = space(); button4 = element("button"); t32 = text("Previous User Timestamp"); t33 = space(); button5 = element("button"); t34 = text("Next User Timestamp"); t35 = text("\r\nUser Timestamps: "); t36 = text(/*currentuserIndex*/ ctx[0]); t37 = text(" / "); t38 = text(t38_value); t39 = space(); br2 = element("br"); t40 = text(" Round 2 (/n) User Timestamps: "); t41 = text(/*currentuserIndex*/ ctx[0]); t42 = text(" / "); t43 = text(t43_value); t44 = space(); br3 = element("br"); t45 = text("A list of one messes up the logic for the counter in conjuction with the user timestamp button reactivity "); br4 = element("br"); t46 = space(); button6 = element("button"); button6.textContent = "Export Timestamps"; t48 = space(); button7 = element("button"); button7.textContent = "Export Round 2 Timestamps"; t50 = text(" Import Timestamps (Incomplete) "); input2 = element("input"); add_location(h1, file$4, 286, 0, 9769); attr_dev(input0, "type", "text"); add_location(input0, file$4, 290, 4, 9927); attr_dev(input1, "type", "checkbox"); add_location(input1, file$4, 292, 4, 10035); add_location(label, file$4, 288, 0, 9832); attr_dev(div0, "id", "youtube-player"); set_style(div0, "height", "90vh"); set_style(div0, "width", "90%"); add_location(div0, file$4, 300, 4, 10405); 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$4, 301, 4, 10475); add_location(br0, file$4, 305, 15, 10795); 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$4, 304, 4, 10654); set_style(div3, "position", "relative"); add_location(div3, file$4, 299, 0, 10366); add_location(button0, file$4, 311, 0, 10921); add_location(button1, file$4, 312, 0, 11014); add_location(br1, file$4, 315, 0, 11156); add_location(button2, file$4, 316, 0, 11162); attr_dev(button3, "class", button3_class_value = "" + (null_to_empty(/*currentindexButtonClass*/ ctx[10]) + " svelte-cpjgti")); button3.disabled = button3_disabled_value = /*currentuserIndex*/ ctx[0] <= 0; add_location(button3, file$4, 317, 0, 11222); attr_dev(button4, "class", button4_class_value = "" + (null_to_empty(/*previousindexButtonClass*/ ctx[11]) + " svelte-cpjgti")); button4.disabled = button4_disabled_value = /*currentuserIndex*/ ctx[0] <= 0; add_location(button4, file$4, 318, 0, 11377); attr_dev(button5, "class", button5_class_value = "" + (null_to_empty(/*nextindexButtonClass*/ ctx[12]) + " svelte-cpjgti")); button5.disabled = button5_disabled_value = /*currentuserIndex*/ ctx[0] >= /*userTimestamps*/ ctx[1].length - 1; add_location(button5, file$4, 319, 0, 11522); add_location(br2, file$4, 322, 0, 11745); add_location(br3, file$4, 322, 82, 11827); add_location(br4, file$4, 322, 192, 11937); add_location(button6, file$4, 323, 0, 11943); add_location(button7, file$4, 323, 63, 12006); attr_dev(input2, "type", "file"); attr_dev(input2, "accept", ".json"); add_location(input2, file$4, 323, 167, 12110); }, 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[6]; insert_dev(target, t4, anchor); insert_dev(target, div3, anchor); append_dev(div3, div0); append_dev(div3, t5); append_dev(div3, div1); append_dev(div1, t6); append_dev(div1, t7); append_dev(div1, t8); append_dev(div3, t9); append_dev(div3, div2); append_dev(div2, t10); append_dev(div2, t11); append_dev(div2, br0); append_dev(div2, t12); append_dev(div2, t13); insert_dev(target, t14, anchor); insert_dev(target, button0, anchor); insert_dev(target, t18, anchor); insert_dev(target, button1, anchor); insert_dev(target, t22, anchor); insert_dev(target, t23, anchor); insert_dev(target, t24, anchor); insert_dev(target, t25, anchor); insert_dev(target, t26, anchor); insert_dev(target, br1, anchor); insert_dev(target, t27, anchor); insert_dev(target, button2, anchor); insert_dev(target, t29, anchor); insert_dev(target, button3, anchor); append_dev(button3, t30); insert_dev(target, t31, anchor); insert_dev(target, button4, anchor); append_dev(button4, t32); insert_dev(target, t33, anchor); insert_dev(target, button5, anchor); append_dev(button5, t34); insert_dev(target, t35, anchor); insert_dev(target, t36, anchor); insert_dev(target, t37, anchor); insert_dev(target, t38, anchor); insert_dev(target, t39, anchor); insert_dev(target, br2, anchor); 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, br3, anchor); insert_dev(target, t45, anchor); insert_dev(target, br4, anchor); insert_dev(target, t46, anchor); insert_dev(target, button6, anchor); insert_dev(target, t48, anchor); insert_dev(target, button7, anchor); insert_dev(target, t50, anchor); insert_dev(target, input2, anchor); if (!mounted) { dispose = [ listen_dev(input0, "input", /*input0_input_handler*/ ctx[24]), listen_dev(input1, "change", /*input1_change_handler*/ ctx[25]), listen_dev(input1, "click", /*toggleUpdate*/ ctx[14], false, false, false, false), listen_dev(button0, "click", /*goToPreviousAutoTimestamp*/ ctx[16], false, false, false, false), listen_dev(button1, "click", /*goToNextAutoTimestamp*/ ctx[15], false, false, false, false), listen_dev(button2, "click", /*addUserTimestamp*/ ctx[17], false, false, false, false), listen_dev(button3, "click", /*goToCurrentUserTimestamp*/ ctx[18], false, false, false, false), listen_dev(button4, "click", /*goToPreviousUserTimestamp*/ ctx[20], false, false, false, false), listen_dev(button5, "click", /*goToNextUserTimestamp*/ ctx[19], false, false, false, false), listen_dev(button6, "click", /*exportTimestamps*/ ctx[21], false, false, false, false), listen_dev(button7, "click", /*exportr2Timestamps*/ ctx[22], false, false, false, false), listen_dev(input2, "change", /*importTimestamps*/ ctx[23], false, false, false, false) ]; 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*/ 64) { input1.checked = /*isUpdating*/ ctx[6]; } if (dirty[0] & /*currentTime*/ 8 && t7_value !== (t7_value = /*currentTime*/ ctx[3].toFixed(2) + "")) set_data_dev(t7, t7_value); if (dirty[0] & /*line*/ 32) set_data_dev(t10, /*line*/ ctx[5]); if (dirty[0] & /*currentWord*/ 16) set_data_dev(t13, /*currentWord*/ ctx[4]); if (dirty[0] & /*currentIndex*/ 128) set_data_dev(t23, /*currentIndex*/ ctx[7]); if (dirty[0] & /*timestamps*/ 256 && t25_value !== (t25_value = /*timestamps*/ ctx[8].length + "")) set_data_dev(t25, t25_value); if (dirty[0] & /*currentindexButtonClass*/ 1024 && button3_class_value !== (button3_class_value = "" + (null_to_empty(/*currentindexButtonClass*/ ctx[10]) + " svelte-cpjgti"))) { attr_dev(button3, "class", button3_class_value); } if (dirty[0] & /*currentuserIndex*/ 1 && button3_disabled_value !== (button3_disabled_value = /*currentuserIndex*/ ctx[0] <= 0)) { prop_dev(button3, "disabled", button3_disabled_value); } if (dirty[0] & /*previousindexButtonClass*/ 2048 && button4_class_value !== (button4_class_value = "" + (null_to_empty(/*previousindexButtonClass*/ ctx[11]) + " svelte-cpjgti"))) { 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] & /*nextindexButtonClass*/ 4096 && button5_class_value !== (button5_class_value = "" + (null_to_empty(/*nextindexButtonClass*/ ctx[12]) + " svelte-cpjgti"))) { attr_dev(button5, "class", button5_class_value); } if (dirty[0] & /*currentuserIndex, userTimestamps*/ 3 && button5_disabled_value !== (button5_disabled_value = /*currentuserIndex*/ ctx[0] >= /*userTimestamps*/ ctx[1].length - 1)) { prop_dev(button5, "disabled", button5_disabled_value); } if (dirty[0] & /*currentuserIndex*/ 1) set_data_dev(t36, /*currentuserIndex*/ ctx[0]); if (dirty[0] & /*userTimestamps*/ 2 && t38_value !== (t38_value = /*userTimestamps*/ ctx[1].length + "")) set_data_dev(t38, t38_value); if (dirty[0] & /*currentuserIndex*/ 1) set_data_dev(t41, /*currentuserIndex*/ ctx[0]); if (dirty[0] & /*r2userTimestamps*/ 512 && t43_value !== (t43_value = /*r2userTimestamps*/ ctx[9].length + "")) set_data_dev(t43, t43_value); }, 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(t4); if (detaching) detach_dev(div3); if (detaching) detach_dev(t14); if (detaching) detach_dev(button0); if (detaching) detach_dev(t18); if (detaching) detach_dev(button1); if (detaching) detach_dev(t22); if (detaching) detach_dev(t23); if (detaching) detach_dev(t24); if (detaching) detach_dev(t25); if (detaching) detach_dev(t26); if (detaching) detach_dev(br1); if (detaching) detach_dev(t27); if (detaching) detach_dev(button2); if (detaching) detach_dev(t29); if (detaching) detach_dev(button3); if (detaching) detach_dev(t31); if (detaching) detach_dev(button4); if (detaching) detach_dev(t33); if (detaching) detach_dev(button5); if (detaching) detach_dev(t35); if (detaching) detach_dev(t36); if (detaching) detach_dev(t37); if (detaching) detach_dev(t38); if (detaching) detach_dev(t39); if (detaching) detach_dev(br2); 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(br3); if (detaching) detach_dev(t45); if (detaching) detach_dev(br4); if (detaching) detach_dev(t46); if (detaching) detach_dev(button6); if (detaching) detach_dev(t48); if (detaching) detach_dev(button7); if (detaching) detach_dev(t50); if (detaching) detach_dev(input2); mounted = false; run_all(dispose); } }; dispatch_dev("SvelteRegisterBlock", { block, id: create_fragment$4.name, type: "component", source: "", ctx }); return block; } function getRandomWord(line) { let words = line.split(" "); return words[Math.floor(Math.random() * words.length)]; } function instance$4($$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 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; 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(8, 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(7, currentIndex = timestamps.indexOf(closest)); } function updateCurrentTime() { if (player && player.getCurrentTime) { $$invalidate(3, currentTime = player.getCurrentTime()); } } onDestroy(() => { clearInterval(timeUpdateInterval); }); function updateWord() { if (isUpdating) { $$invalidate(5, line = lines[Math.floor(Math.random() * lines.length)]); $$invalidate(4, currentWord = getRandomWord(line)); } } function toggleUpdate() { $$invalidate(6, isUpdating = !isUpdating); if (isUpdating) { updateWord(); // Immediately update once updateInterval = setInterval(updateWord, 3000); // Update every 3 seconds } else { clearInterval(updateInterval); $$invalidate(5, line = ''); $$invalidate(4, currentWord = ''); } } function goToNextAutoTimestamp() { if (currentIndex < timestamps.length - 1) { $$invalidate(7, currentIndex += 1); player.seekTo(timestamps[currentIndex], true); } } function goToPreviousAutoTimestamp() { if (currentIndex > 0) { $$invalidate(7, 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(9, 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); } 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 input0_input_handler() { currentvideoId = this.value; $$invalidate(2, currentvideoId); } function input1_change_handler() { isUpdating = this.checked; $$invalidate(6, isUpdating); } $$self.$capture_state = () => ({ onMount, onDestroy, player, interval, currentTime, timeUpdateInterval, transcript, lines, currentWord, line, isUpdating, updateInterval, currentIndex, currentuserIndex, timestamps, userTimestamps, r2userTimestamps, currentvideoId, youTubeApiLoaded, currentvideoduration, regeneratedautotimestamps, initYouTubePlayer, autogeneratedtimestamps, onPlayerReady, onPlayerStateChange, updateCurrentIndex, updateCurrentTime, getRandomWord, updateWord, toggleUpdate, goToNextAutoTimestamp, goToPreviousAutoTimestamp, addUserTimestamp, addr2UserTimestamp, goToCurrentUserTimestamp, goToNextUserTimestamp, goToPreviousUserTimestamp, exportTimestamps, exportr2Timestamps, importTimestamps, currentindexButtonClass, previousindexButtonClass, nextindexButtonClass }); $$self.$inject_state = $$props => { if ('player' in $$props) player = $$props.player; if ('interval' in $$props) $$invalidate(13, interval = $$props.interval); if ('currentTime' in $$props) $$invalidate(3, currentTime = $$props.currentTime); if ('timeUpdateInterval' in $$props) timeUpdateInterval = $$props.timeUpdateInterval; if ('transcript' in $$props) transcript = $$props.transcript; if ('lines' in $$props) lines = $$props.lines; if ('currentWord' in $$props) $$invalidate(4, currentWord = $$props.currentWord); if ('line' in $$props) $$invalidate(5, line = $$props.line); if ('isUpdating' in $$props) $$invalidate(6, isUpdating = $$props.isUpdating); if ('updateInterval' in $$props) updateInterval = $$props.updateInterval; if ('currentIndex' in $$props) $$invalidate(7, currentIndex = $$props.currentIndex); if ('currentuserIndex' in $$props) $$invalidate(0, currentuserIndex = $$props.currentuserIndex); if ('timestamps' in $$props) $$invalidate(8, timestamps = $$props.timestamps); if ('userTimestamps' in $$props) $$invalidate(1, userTimestamps = $$props.userTimestamps); if ('r2userTimestamps' in $$props) $$invalidate(9, 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 ('currentindexButtonClass' in $$props) $$invalidate(10, currentindexButtonClass = $$props.currentindexButtonClass); if ('previousindexButtonClass' in $$props) $$invalidate(11, previousindexButtonClass = $$props.previousindexButtonClass); if ('nextindexButtonClass' in $$props) $$invalidate(12, 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(12, nextindexButtonClass = currentuserIndex >= userTimestamps.length - 1 ? 'button-at-end' : 'button'); } if ($$self.$$.dirty[0] & /*currentuserIndex*/ 1) { $$invalidate(11, previousindexButtonClass = currentuserIndex <= 0 ? 'button-at-end' : 'button'); } if ($$self.$$.dirty[0] & /*currentuserIndex*/ 1) { $$invalidate(10, currentindexButtonClass = currentuserIndex <= 0 ? 'button-at-end' : 'button'); } }; return [ currentuserIndex, userTimestamps, currentvideoId, currentTime, currentWord, line, isUpdating, currentIndex, timestamps, r2userTimestamps, currentindexButtonClass, previousindexButtonClass, nextindexButtonClass, interval, toggleUpdate, goToNextAutoTimestamp, goToPreviousAutoTimestamp, addUserTimestamp, goToCurrentUserTimestamp, goToNextUserTimestamp, goToPreviousUserTimestamp, exportTimestamps, exportr2Timestamps, importTimestamps, input0_input_handler, input1_change_handler ]; } class YoutubeIframeAPICustomInterface extends SvelteComponentDev { constructor(options) { super(options); init(this, options, instance$4, create_fragment$4, safe_not_equal, {}, null, [-1, -1]); dispatch_dev("SvelteRegisterComponent", { component: this, tagName: "YoutubeIframeAPICustomInterface", options, id: create_fragment$4.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$1 } = globals; const file$3 = "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$1(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$3, 124, 24, 4690); add_location(button, file$3, 125, 24, 4791); attr_dev(div, "class", "reply-input"); add_location(div, file$3, 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$1.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$1(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$3, 120, 16, 4453); add_location(button, file$3, 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$3, 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$1(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$3(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$3, 104, 0, 3512); add_location(h4, file$3, 105, 0, 3614); add_location(button0, file$3, 108, 8, 3897); attr_dev(input0, "type", "file"); add_location(input0, file$3, 110, 8, 4000); attr_dev(input1, "placeholder", "Add a comment..."); add_location(input1, file$3, 112, 8, 4072); add_location(button1, file$3, 113, 8, 4146); add_location(div0, file$3, 107, 4, 3882); add_location(br, file$3, 116, 4, 4225); attr_dev(div1, "id", "comment-container"); add_location(div1, file$3, 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$3, 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$3.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$3($$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$1.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$3, create_fragment$3, safe_not_equal, {}); dispatch_dev("SvelteRegisterComponent", { component: this, tagName: "RecursiveNestedCommentsElement", options, id: create_fragment$3.name }); } } /* src\CopyandRemoveListComponent.svelte generated by Svelte v3.59.2 */ const { console: console_1 } = globals; const file$2 = "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(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$2, 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.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$2, 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$2(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; 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$2, 19, 0, 537); attr_dev(textarea, "placeholder", "Enter text here..."); attr_dev(textarea, "class", "svelte-bmbf24"); add_location(textarea, file$2, 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$2.name, type: "component", source: "", ctx }); return block; } function instance$2($$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.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$2, create_fragment$2, safe_not_equal, {}); dispatch_dev("SvelteRegisterComponent", { component: this, tagName: "CopyandRemoveListComponent", options, id: create_fragment$2.name }); } } /* src\ReadingStateCounter.svelte generated by Svelte v3.59.2 */ const file$1 = "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$1, 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$1(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$1, 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$1, 58, 4, 1617); attr_dev(button0, "class", "svelte-13vjncp"); add_location(button0, file$1, 59, 4, 1696); attr_dev(button1, "class", "svelte-13vjncp"); add_location(button1, file$1, 60, 4, 1752); attr_dev(input1, "type", "file"); attr_dev(input1, "class", "svelte-13vjncp"); add_location(input1, file$1, 61, 4, 1813); add_location(div0, file$1, 56, 0, 1565); add_location(div1, file$1, 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$1.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$1($$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$1, create_fragment$1, safe_not_equal, {}); dispatch_dev("SvelteRegisterComponent", { component: this, tagName: "ReadingStateCounter", 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 readingstatecounter; let t14; let copyremove; let t15; let nestedcommentssvelte; let t16; let myyoutube; let t17; let h12; let t19; let dotgame; let current; 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(); create_component(readingstatecounter.$$.fragment); t14 = space(); create_component(copyremove.$$.fragment); t15 = space(); create_component(nestedcommentssvelte.$$.fragment); t16 = space(); create_component(myyoutube.$$.fragment); t17 = space(); h12 = element("h1"); h12.textContent = "Themeable Game Brainstorm - Image + Lists"; t19 = space(); create_component(dotgame.$$.fragment); attr_dev(h10, "class", "svelte-1tky8bj"); add_location(h10, file, 24, 1, 651); attr_dev(a, "href", "https://svelte.dev/tutorial"); add_location(a, file, 25, 14, 688); add_location(p, file, 25, 1, 675); attr_dev(h11, "class", "svelte-1tky8bj"); add_location(h11, file, 27, 1, 787); add_location(h30, file, 28, 1, 870); add_location(h31, file, 30, 1, 922); attr_dev(h12, "class", "svelte-1tky8bj"); add_location(h12, file, 41, 1, 1170); attr_dev(main, "class", "svelte-1tky8bj"); add_location(main, file, 22, 0, 642); }, 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); mount_component(readingstatecounter, main, null); append_dev(main, t14); mount_component(copyremove, main, null); append_dev(main, t15); mount_component(nestedcommentssvelte, main, null); append_dev(main, t16); mount_component(myyoutube, main, null); append_dev(main, t17); append_dev(main, h12); append_dev(main, t19); 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(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(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(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, ReadingState: ReadingStateCounter, ReadingStateCounter, 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