Spaces:
Running
Running
(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 to_number(value) { | |
return value === '' ? null : +value; | |
} | |
function children(element) { | |
return Array.from(element.childNodes); | |
} | |
function set_input_value(input, value) { | |
input.value = value == null ? '' : value; | |
} | |
function set_style(node, key, value, important) { | |
if (value == null) { | |
node.style.removeProperty(key); | |
} | |
else { | |
node.style.setProperty(key, value, important ? 'important' : ''); | |
} | |
} | |
function select_option(select, value, mounting) { | |
for (let i = 0; i < select.options.length; i += 1) { | |
const option = select.options[i]; | |
if (option.__value === value) { | |
option.selected = true; | |
return; | |
} | |
} | |
if (!mounting || value !== undefined) { | |
select.selectedIndex = -1; // no option should be selected | |
} | |
} | |
function select_value(select) { | |
const selected_option = select.querySelector(':checked'); | |
return selected_option && selected_option.__value; | |
} | |
function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) { | |
const e = document.createEvent('CustomEvent'); | |
e.initCustomEvent(type, bubbles, cancelable, detail); | |
return e; | |
} | |
let current_component; | |
function set_current_component(component) { | |
current_component = component; | |
} | |
function get_current_component() { | |
if (!current_component) | |
throw new Error('Function called outside component initialization'); | |
return current_component; | |
} | |
/** | |
* The `onMount` function schedules a callback to run as soon as the component has been mounted to the DOM. | |
* It must be called during the component's initialisation (but doesn't need to live *inside* the component; | |
* it can be called from an external module). | |
* | |
* `onMount` does not run inside a [server-side component](/docs#run-time-server-side-component-api). | |
* | |
* https://svelte.dev/docs#run-time-svelte-onmount | |
*/ | |
function onMount(fn) { | |
get_current_component().$$.on_mount.push(fn); | |
} | |
/** | |
* Schedules a callback to run immediately before the component is unmounted. | |
* | |
* Out of `onMount`, `beforeUpdate`, `afterUpdate` and `onDestroy`, this is the | |
* only one that runs inside a server-side component. | |
* | |
* https://svelte.dev/docs#run-time-svelte-ondestroy | |
*/ | |
function onDestroy(fn) { | |
get_current_component().$$.on_destroy.push(fn); | |
} | |
/** | |
* Creates an event dispatcher that can be used to dispatch [component events](/docs#template-syntax-component-directives-on-eventname). | |
* Event dispatchers are functions that can take two arguments: `name` and `detail`. | |
* | |
* Component events created with `createEventDispatcher` create a | |
* [CustomEvent](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent). | |
* These events do not [bubble](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#Event_bubbling_and_capture). | |
* The `detail` argument corresponds to the [CustomEvent.detail](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/detail) | |
* property and can contain any type of data. | |
* | |
* https://svelte.dev/docs#run-time-svelte-createeventdispatcher | |
*/ | |
function createEventDispatcher() { | |
const component = get_current_component(); | |
return (type, detail, { cancelable = false } = {}) => { | |
const callbacks = component.$$.callbacks[type]; | |
if (callbacks) { | |
// TODO are there situations where events could be dispatched | |
// in a server (non-DOM) environment? | |
const event = custom_event(type, detail, { cancelable }); | |
callbacks.slice().forEach(fn => { | |
fn.call(component, event); | |
}); | |
return !event.defaultPrevented; | |
} | |
return true; | |
}; | |
} | |
const dirty_components = []; | |
const binding_callbacks = []; | |
let render_callbacks = []; | |
const flush_callbacks = []; | |
const resolved_promise = /* @__PURE__ */ Promise.resolve(); | |
let update_scheduled = false; | |
function schedule_update() { | |
if (!update_scheduled) { | |
update_scheduled = true; | |
resolved_promise.then(flush); | |
} | |
} | |
function add_render_callback(fn) { | |
render_callbacks.push(fn); | |
} | |
// flush() calls callbacks in this order: | |
// 1. All beforeUpdate callbacks, in order: parents before children | |
// 2. All bind:this callbacks, in reverse order: children before parents. | |
// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT | |
// for afterUpdates called during the initial onMount, which are called in | |
// reverse order: children before parents. | |
// Since callbacks might update component values, which could trigger another | |
// call to flush(), the following steps guard against this: | |
// 1. During beforeUpdate, any updated components will be added to the | |
// dirty_components array and will cause a reentrant call to flush(). Because | |
// the flush index is kept outside the function, the reentrant call will pick | |
// up where the earlier call left off and go through all dirty components. The | |
// current_component value is saved and restored so that the reentrant call will | |
// not interfere with the "parent" flush() call. | |
// 2. bind:this callbacks cannot trigger new flush() calls. | |
// 3. During afterUpdate, any updated components will NOT have their afterUpdate | |
// callback called a second time; the seen_callbacks set, outside the flush() | |
// function, guarantees this behavior. | |
const seen_callbacks = new Set(); | |
let flushidx = 0; // Do *not* move this inside the flush() function | |
function flush() { | |
// Do not reenter flush while dirty components are updated, as this can | |
// result in an infinite loop. Instead, let the inner flush handle it. | |
// Reentrancy is ok afterwards for bindings etc. | |
if (flushidx !== 0) { | |
return; | |
} | |
const saved_component = current_component; | |
do { | |
// first, call beforeUpdate functions | |
// and update components | |
try { | |
while (flushidx < dirty_components.length) { | |
const component = dirty_components[flushidx]; | |
flushidx++; | |
set_current_component(component); | |
update(component.$$); | |
} | |
} | |
catch (e) { | |
// reset dirty state to not end up in a deadlocked state and then rethrow | |
dirty_components.length = 0; | |
flushidx = 0; | |
throw e; | |
} | |
set_current_component(null); | |
dirty_components.length = 0; | |
flushidx = 0; | |
while (binding_callbacks.length) | |
binding_callbacks.pop()(); | |
// then, once components are updated, call | |
// afterUpdate functions. This may cause | |
// subsequent updates... | |
for (let i = 0; i < render_callbacks.length; i += 1) { | |
const callback = render_callbacks[i]; | |
if (!seen_callbacks.has(callback)) { | |
// ...so guard against infinite loops | |
seen_callbacks.add(callback); | |
callback(); | |
} | |
} | |
render_callbacks.length = 0; | |
} while (dirty_components.length); | |
while (flush_callbacks.length) { | |
flush_callbacks.pop()(); | |
} | |
update_scheduled = false; | |
seen_callbacks.clear(); | |
set_current_component(saved_component); | |
} | |
function update($$) { | |
if ($$.fragment !== null) { | |
$$.update(); | |
run_all($$.before_update); | |
const dirty = $$.dirty; | |
$$.dirty = [-1]; | |
$$.fragment && $$.fragment.p($$.ctx, dirty); | |
$$.after_update.forEach(add_render_callback); | |
} | |
} | |
/** | |
* Useful for example to execute remaining `afterUpdate` callbacks before executing `destroy`. | |
*/ | |
function flush_render_callbacks(fns) { | |
const filtered = []; | |
const targets = []; | |
render_callbacks.forEach((c) => fns.indexOf(c) === -1 ? filtered.push(c) : targets.push(c)); | |
targets.forEach((c) => c()); | |
render_callbacks = filtered; | |
} | |
const outroing = new Set(); | |
let outros; | |
function group_outros() { | |
outros = { | |
r: 0, | |
c: [], | |
p: outros // parent group | |
}; | |
} | |
function check_outros() { | |
if (!outros.r) { | |
run_all(outros.c); | |
} | |
outros = outros.p; | |
} | |
function transition_in(block, local) { | |
if (block && block.i) { | |
outroing.delete(block); | |
block.i(local); | |
} | |
} | |
function transition_out(block, local, detach, callback) { | |
if (block && block.o) { | |
if (outroing.has(block)) | |
return; | |
outroing.add(block); | |
outros.c.push(() => { | |
outroing.delete(block); | |
if (callback) { | |
if (detach) | |
block.d(1); | |
callback(); | |
} | |
}); | |
block.o(local); | |
} | |
else if (callback) { | |
callback(); | |
} | |
} | |
function destroy_block(block, lookup) { | |
block.d(1); | |
lookup.delete(block.key); | |
} | |
function outro_and_destroy_block(block, lookup) { | |
transition_out(block, 1, 1, () => { | |
lookup.delete(block.key); | |
}); | |
} | |
function update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) { | |
let o = old_blocks.length; | |
let n = list.length; | |
let i = o; | |
const old_indexes = {}; | |
while (i--) | |
old_indexes[old_blocks[i].key] = i; | |
const new_blocks = []; | |
const new_lookup = new Map(); | |
const deltas = new Map(); | |
const updates = []; | |
i = n; | |
while (i--) { | |
const child_ctx = get_context(ctx, list, i); | |
const key = get_key(child_ctx); | |
let block = lookup.get(key); | |
if (!block) { | |
block = create_each_block(key, child_ctx); | |
block.c(); | |
} | |
else if (dynamic) { | |
// defer updates until all the DOM shuffling is done | |
updates.push(() => block.p(child_ctx, dirty)); | |
} | |
new_lookup.set(key, new_blocks[i] = block); | |
if (key in old_indexes) | |
deltas.set(key, Math.abs(i - old_indexes[key])); | |
} | |
const will_move = new Set(); | |
const did_move = new Set(); | |
function insert(block) { | |
transition_in(block, 1); | |
block.m(node, next); | |
lookup.set(block.key, block); | |
next = block.first; | |
n--; | |
} | |
while (o && n) { | |
const new_block = new_blocks[n - 1]; | |
const old_block = old_blocks[o - 1]; | |
const new_key = new_block.key; | |
const old_key = old_block.key; | |
if (new_block === old_block) { | |
// do nothing | |
next = new_block.first; | |
o--; | |
n--; | |
} | |
else if (!new_lookup.has(old_key)) { | |
// remove old block | |
destroy(old_block, lookup); | |
o--; | |
} | |
else if (!lookup.has(new_key) || will_move.has(new_key)) { | |
insert(new_block); | |
} | |
else if (did_move.has(old_key)) { | |
o--; | |
} | |
else if (deltas.get(new_key) > deltas.get(old_key)) { | |
did_move.add(new_key); | |
insert(new_block); | |
} | |
else { | |
will_move.add(old_key); | |
o--; | |
} | |
} | |
while (o--) { | |
const old_block = old_blocks[o]; | |
if (!new_lookup.has(old_block.key)) | |
destroy(old_block, lookup); | |
} | |
while (n) | |
insert(new_blocks[n - 1]); | |
run_all(updates); | |
return new_blocks; | |
} | |
function validate_each_keys(ctx, list, get_context, get_key) { | |
const keys = new Set(); | |
for (let i = 0; i < list.length; i++) { | |
const key = get_key(get_context(ctx, list, i)); | |
if (keys.has(key)) { | |
throw new Error('Cannot have duplicate keys in a keyed each'); | |
} | |
keys.add(key); | |
} | |
} | |
function create_component(block) { | |
block && block.c(); | |
} | |
function mount_component(component, target, anchor, customElement) { | |
const { fragment, after_update } = component.$$; | |
fragment && fragment.m(target, anchor); | |
if (!customElement) { | |
// onMount happens before the initial afterUpdate | |
add_render_callback(() => { | |
const new_on_destroy = component.$$.on_mount.map(run).filter(is_function); | |
// if the component was destroyed immediately | |
// it will update the `$$.on_destroy` reference to `null`. | |
// the destructured on_destroy may still reference to the old array | |
if (component.$$.on_destroy) { | |
component.$$.on_destroy.push(...new_on_destroy); | |
} | |
else { | |
// Edge case - component was destroyed immediately, | |
// most likely as a result of a binding initialising | |
run_all(new_on_destroy); | |
} | |
component.$$.on_mount = []; | |
}); | |
} | |
after_update.forEach(add_render_callback); | |
} | |
function destroy_component(component, detaching) { | |
const $$ = component.$$; | |
if ($$.fragment !== null) { | |
flush_render_callbacks($$.after_update); | |
run_all($$.on_destroy); | |
$$.fragment && $$.fragment.d(detaching); | |
// TODO null out other refs, including component.$$ (but need to | |
// preserve final state?) | |
$$.on_destroy = $$.fragment = null; | |
$$.ctx = []; | |
} | |
} | |
function make_dirty(component, i) { | |
if (component.$$.dirty[0] === -1) { | |
dirty_components.push(component); | |
schedule_update(); | |
component.$$.dirty.fill(0); | |
} | |
component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31)); | |
} | |
function init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) { | |
const parent_component = current_component; | |
set_current_component(component); | |
const $$ = component.$$ = { | |
fragment: null, | |
ctx: [], | |
// state | |
props, | |
update: noop, | |
not_equal, | |
bound: blank_object(), | |
// lifecycle | |
on_mount: [], | |
on_destroy: [], | |
on_disconnect: [], | |
before_update: [], | |
after_update: [], | |
context: new Map(options.context || (parent_component ? parent_component.$$.context : [])), | |
// everything else | |
callbacks: blank_object(), | |
dirty, | |
skip_bound: false, | |
root: options.target || parent_component.$$.root | |
}; | |
append_styles && append_styles($$.root); | |
let ready = false; | |
$$.ctx = instance | |
? instance(component, options.props || {}, (i, ret, ...rest) => { | |
const value = rest.length ? rest[0] : ret; | |
if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { | |
if (!$$.skip_bound && $$.bound[i]) | |
$$.bound[i](value); | |
if (ready) | |
make_dirty(component, i); | |
} | |
return ret; | |
}) | |
: []; | |
$$.update(); | |
ready = true; | |
run_all($$.before_update); | |
// `false` as a special case of no DOM component | |
$$.fragment = create_fragment ? create_fragment($$.ctx) : false; | |
if (options.target) { | |
if (options.hydrate) { | |
const nodes = children(options.target); | |
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion | |
$$.fragment && $$.fragment.l(nodes); | |
nodes.forEach(detach); | |
} | |
else { | |
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion | |
$$.fragment && $$.fragment.c(); | |
} | |
if (options.intro) | |
transition_in(component.$$.fragment); | |
mount_component(component, options.target, options.anchor, options.customElement); | |
flush(); | |
} | |
set_current_component(parent_component); | |
} | |
/** | |
* Base class for Svelte components. Used when dev=false. | |
*/ | |
class SvelteComponent { | |
$destroy() { | |
destroy_component(this, 1); | |
this.$destroy = noop; | |
} | |
$on(type, callback) { | |
if (!is_function(callback)) { | |
return noop; | |
} | |
const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); | |
callbacks.push(callback); | |
return () => { | |
const index = callbacks.indexOf(callback); | |
if (index !== -1) | |
callbacks.splice(index, 1); | |
}; | |
} | |
$set($$props) { | |
if (this.$$set && !is_empty($$props)) { | |
this.$$.skip_bound = true; | |
this.$$set($$props); | |
this.$$.skip_bound = false; | |
} | |
} | |
} | |
function dispatch_dev(type, detail) { | |
document.dispatchEvent(custom_event(type, Object.assign({ version: '3.59.2' }, detail), { bubbles: true })); | |
} | |
function append_dev(target, node) { | |
dispatch_dev('SvelteDOMInsert', { target, node }); | |
append(target, node); | |
} | |
function insert_dev(target, node, anchor) { | |
dispatch_dev('SvelteDOMInsert', { target, node, anchor }); | |
insert(target, node, anchor); | |
} | |
function detach_dev(node) { | |
dispatch_dev('SvelteDOMRemove', { node }); | |
detach(node); | |
} | |
function listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation, has_stop_immediate_propagation) { | |
const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : []; | |
if (has_prevent_default) | |
modifiers.push('preventDefault'); | |
if (has_stop_propagation) | |
modifiers.push('stopPropagation'); | |
if (has_stop_immediate_propagation) | |
modifiers.push('stopImmediatePropagation'); | |
dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers }); | |
const dispose = listen(node, event, handler, options); | |
return () => { | |
dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers }); | |
dispose(); | |
}; | |
} | |
function attr_dev(node, attribute, value) { | |
attr(node, attribute, value); | |
if (value == null) | |
dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute }); | |
else | |
dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value }); | |
} | |
function prop_dev(node, property, value) { | |
node[property] = value; | |
dispatch_dev('SvelteDOMSetProperty', { node, property, value }); | |
} | |
function set_data_dev(text, data) { | |
data = '' + data; | |
if (text.data === data) | |
return; | |
dispatch_dev('SvelteDOMSetData', { node: text, data }); | |
text.data = data; | |
} | |
function validate_each_argument(arg) { | |
if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) { | |
let msg = '{#each} only iterates over array-like objects.'; | |
if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) { | |
msg += ' You can use a spread to convert this iterable into an array.'; | |
} | |
throw new Error(msg); | |
} | |
} | |
function validate_slots(name, slot, keys) { | |
for (const slot_key of Object.keys(slot)) { | |
if (!~keys.indexOf(slot_key)) { | |
console.warn(`<${name}> received an unexpected slot "${slot_key}".`); | |
} | |
} | |
} | |
/** | |
* Base class for Svelte components with some minor dev-enhancements. Used when dev=true. | |
*/ | |
class SvelteComponentDev extends SvelteComponent { | |
constructor(options) { | |
if (!options || (!options.target && !options.$$inline)) { | |
throw new Error("'target' is a required option"); | |
} | |
super(); | |
} | |
$destroy() { | |
super.$destroy(); | |
this.$destroy = () => { | |
console.warn('Component was already destroyed'); // eslint-disable-line no-console | |
}; | |
} | |
$capture_state() { } | |
$inject_state() { } | |
} | |
/* src\VideoGradioComponentBrainstorming.svelte generated by Svelte v3.59.2 */ | |
const { console: console_1$6 } = globals; | |
const file$b = "src\\VideoGradioComponentBrainstorming.svelte"; | |
function get_each_context$6(ctx, list, i) { | |
const child_ctx = ctx.slice(); | |
child_ctx[15] = list[i]; | |
return child_ctx; | |
} | |
// (85:4) {#each kitchenOptions as option} | |
function create_each_block$6(ctx) { | |
let option; | |
let t_value = /*option*/ ctx[15] + ""; | |
let t; | |
const block = { | |
c: function create() { | |
option = element("option"); | |
t = text(t_value); | |
option.__value = /*option*/ ctx[15]; | |
option.value = option.__value; | |
add_location(option, file$b, 85, 6, 2561); | |
}, | |
m: function mount(target, anchor) { | |
insert_dev(target, option, anchor); | |
append_dev(option, t); | |
}, | |
p: noop, | |
d: function destroy(detaching) { | |
if (detaching) detach_dev(option); | |
} | |
}; | |
dispatch_dev("SvelteRegisterBlock", { | |
block, | |
id: create_each_block$6.name, | |
type: "each", | |
source: "(85:4) {#each kitchenOptions as option}", | |
ctx | |
}); | |
return block; | |
} | |
function create_fragment$b(ctx) { | |
let h1; | |
let t1; | |
let div1; | |
let video; | |
let track; | |
let track_src_value; | |
let t2; | |
let div0; | |
let t3; | |
let t4; | |
let t5; | |
let canvas_1; | |
let t6; | |
let input; | |
let t7; | |
let div2; | |
let button; | |
let t9; | |
let select; | |
let mounted; | |
let dispose; | |
let each_value = /*kitchenOptions*/ ctx[4]; | |
validate_each_argument(each_value); | |
let each_blocks = []; | |
for (let i = 0; i < each_value.length; i += 1) { | |
each_blocks[i] = create_each_block$6(get_each_context$6(ctx, each_value, i)); | |
} | |
const block = { | |
c: function create() { | |
h1 = element("h1"); | |
h1.textContent = "AI Vision Assistant - Auto prompt HF agent + Cohere + Object detection - Text write on screen test"; | |
t1 = space(); | |
div1 = element("div"); | |
video = element("video"); | |
track = element("track"); | |
t2 = space(); | |
div0 = element("div"); | |
t3 = text("Text Overlay Test and "); | |
t4 = text(/*TestVerb*/ ctx[3]); | |
t5 = space(); | |
canvas_1 = element("canvas"); | |
t6 = space(); | |
input = element("input"); | |
t7 = space(); | |
div2 = element("div"); | |
button = element("button"); | |
button.textContent = "Verb Test"; | |
t9 = space(); | |
select = element("select"); | |
for (let i = 0; i < each_blocks.length; i += 1) { | |
each_blocks[i].c(); | |
} | |
add_location(h1, file$b, 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$b, 72, 4, 2006); | |
attr_dev(video, "id", "videoCanvas"); | |
video.autoplay = true; | |
attr_dev(video, "class", "svelte-ufd3fo"); | |
add_location(video, file$b, 70, 2, 1965); | |
attr_dev(div0, "id", "overlayText"); | |
attr_dev(div0, "class", "svelte-ufd3fo"); | |
add_location(div0, file$b, 74, 2, 2111); | |
attr_dev(div1, "id", "videoContainer"); | |
attr_dev(div1, "class", "svelte-ufd3fo"); | |
add_location(div1, file$b, 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$b, 77, 0, 2186); | |
attr_dev(input, "type", "text"); | |
add_location(input, file$b, 78, 0, 2294); | |
add_location(button, file$b, 82, 2, 2429); | |
if (/*selectedOption*/ ctx[0] === void 0) add_render_callback(() => /*select_change_handler*/ ctx[9].call(select)); | |
add_location(select, file$b, 83, 2, 2479); | |
attr_dev(div2, "id", "frameForButtons"); | |
add_location(div2, file$b, 81, 0, 2399); | |
}, | |
l: function claim(nodes) { | |
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); | |
}, | |
m: function mount(target, anchor) { | |
insert_dev(target, h1, anchor); | |
insert_dev(target, t1, anchor); | |
insert_dev(target, div1, anchor); | |
append_dev(div1, video); | |
append_dev(video, track); | |
append_dev(div1, t2); | |
append_dev(div1, div0); | |
append_dev(div0, t3); | |
append_dev(div0, t4); | |
insert_dev(target, t5, anchor); | |
insert_dev(target, canvas_1, anchor); | |
/*canvas_1_binding*/ ctx[7](canvas_1); | |
insert_dev(target, t6, anchor); | |
insert_dev(target, input, anchor); | |
set_input_value(input, /*textToDisplay*/ ctx[2]); | |
insert_dev(target, t7, anchor); | |
insert_dev(target, div2, anchor); | |
append_dev(div2, button); | |
append_dev(div2, t9); | |
append_dev(div2, select); | |
for (let i = 0; i < each_blocks.length; i += 1) { | |
if (each_blocks[i]) { | |
each_blocks[i].m(select, null); | |
} | |
} | |
select_option(select, /*selectedOption*/ ctx[0], true); | |
if (!mounted) { | |
dispose = [ | |
listen_dev(input, "input", /*input_input_handler*/ ctx[8]), | |
listen_dev(input, "input", /*updateText*/ ctx[6], false, false, false, false), | |
listen_dev(button, "click", /*testText*/ ctx[5], false, false, false, false), | |
listen_dev(select, "change", /*select_change_handler*/ ctx[9]) | |
]; | |
mounted = true; | |
} | |
}, | |
p: function update(ctx, [dirty]) { | |
if (dirty & /*TestVerb*/ 8) set_data_dev(t4, /*TestVerb*/ ctx[3]); | |
if (dirty & /*textToDisplay*/ 4 && input.value !== /*textToDisplay*/ ctx[2]) { | |
set_input_value(input, /*textToDisplay*/ ctx[2]); | |
} | |
if (dirty & /*kitchenOptions*/ 16) { | |
each_value = /*kitchenOptions*/ ctx[4]; | |
validate_each_argument(each_value); | |
let i; | |
for (i = 0; i < each_value.length; i += 1) { | |
const child_ctx = get_each_context$6(ctx, each_value, i); | |
if (each_blocks[i]) { | |
each_blocks[i].p(child_ctx, dirty); | |
} else { | |
each_blocks[i] = create_each_block$6(child_ctx); | |
each_blocks[i].c(); | |
each_blocks[i].m(select, null); | |
} | |
} | |
for (; i < each_blocks.length; i += 1) { | |
each_blocks[i].d(1); | |
} | |
each_blocks.length = each_value.length; | |
} | |
if (dirty & /*selectedOption, kitchenOptions*/ 17) { | |
select_option(select, /*selectedOption*/ ctx[0]); | |
} | |
}, | |
i: noop, | |
o: noop, | |
d: function destroy(detaching) { | |
if (detaching) detach_dev(h1); | |
if (detaching) detach_dev(t1); | |
if (detaching) detach_dev(div1); | |
if (detaching) detach_dev(t5); | |
if (detaching) detach_dev(canvas_1); | |
/*canvas_1_binding*/ ctx[7](null); | |
if (detaching) detach_dev(t6); | |
if (detaching) detach_dev(input); | |
if (detaching) detach_dev(t7); | |
if (detaching) detach_dev(div2); | |
destroy_each(each_blocks, detaching); | |
mounted = false; | |
run_all(dispose); | |
} | |
}; | |
dispatch_dev("SvelteRegisterBlock", { | |
block, | |
id: create_fragment$b.name, | |
type: "component", | |
source: "", | |
ctx | |
}); | |
return block; | |
} | |
function ocrTest() { | |
} // Logic for 'Test OCR' button | |
function instance$b($$self, $$props, $$invalidate) { | |
let { $$slots: slots = {}, $$scope } = $$props; | |
validate_slots('VideoGradioComponentBrainstorming', slots, []); | |
let selectedOption = 'Stove - lu'; // default value | |
let kitchenOptions = ['Stove - lu', 'Refrigerator - bingxiang', 'Spoon - shao']; /* ... other options ... */ | |
let canvas; | |
let ctx; | |
let textToDisplay = 'Initial Text'; | |
let counter = 0; | |
let hud_text; | |
let TestVerb = "|Test verb|"; | |
// Functions for button commands | |
function testText() { | |
// Logic for 'verb test' button | |
const randomIndex = Math.floor(Math.random() * kitchenOptions.length); | |
$$invalidate(3, TestVerb = kitchenOptions[randomIndex]); | |
} | |
// Image source | |
let imageSrc = 'path_to_your_image/Blooms-Taxonomy-650x366.jpg'; | |
// Video stream setup | |
onMount(() => { | |
// Initialize video stream here | |
ctx = canvas.getContext('2d'); | |
setInterval( | |
() => { | |
drawText(textToDisplay); | |
}, | |
1000 | |
); // Update every second | |
}); | |
function drawText(hud_info) { | |
if (ctx) { | |
hud_text = "HUD Info Update: " + counter++ + " " + hud_info; | |
ctx.clearRect(0, 0, canvas.width, canvas.height); // Clear the canvas | |
ctx.font = '30px Arial'; | |
ctx.fillStyle = 'black'; | |
ctx.fillText(hud_text, 50, 50); | |
} | |
} | |
function updateText(event) { | |
$$invalidate(2, textToDisplay = event.target.value); | |
drawText(); | |
} | |
// Camera as Video Stream | |
navigator.mediaDevices.getUserMedia({ video: true }).then(stream => { | |
const video = document.getElementById('videoCanvas'); | |
video.srcObject = stream; | |
}).catch(err => { | |
console.error("Error accessing the camera: ", err); | |
}); | |
const writable_props = []; | |
Object.keys($$props).forEach(key => { | |
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1$6.warn(`<VideoGradioComponentBrainstorming> was created with unknown prop '${key}'`); | |
}); | |
function canvas_1_binding($$value) { | |
binding_callbacks[$$value ? 'unshift' : 'push'](() => { | |
canvas = $$value; | |
$$invalidate(1, canvas); | |
}); | |
} | |
function input_input_handler() { | |
textToDisplay = this.value; | |
$$invalidate(2, textToDisplay); | |
} | |
function select_change_handler() { | |
selectedOption = select_value(this); | |
$$invalidate(0, selectedOption); | |
$$invalidate(4, kitchenOptions); | |
} | |
$$self.$capture_state = () => ({ | |
onMount, | |
selectedOption, | |
kitchenOptions, | |
canvas, | |
ctx, | |
textToDisplay, | |
counter, | |
hud_text, | |
TestVerb, | |
testText, | |
ocrTest, | |
imageSrc, | |
drawText, | |
updateText | |
}); | |
$$self.$inject_state = $$props => { | |
if ('selectedOption' in $$props) $$invalidate(0, selectedOption = $$props.selectedOption); | |
if ('kitchenOptions' in $$props) $$invalidate(4, kitchenOptions = $$props.kitchenOptions); | |
if ('canvas' in $$props) $$invalidate(1, canvas = $$props.canvas); | |
if ('ctx' in $$props) ctx = $$props.ctx; | |
if ('textToDisplay' in $$props) $$invalidate(2, textToDisplay = $$props.textToDisplay); | |
if ('counter' in $$props) counter = $$props.counter; | |
if ('hud_text' in $$props) hud_text = $$props.hud_text; | |
if ('TestVerb' in $$props) $$invalidate(3, TestVerb = $$props.TestVerb); | |
if ('imageSrc' in $$props) imageSrc = $$props.imageSrc; | |
}; | |
if ($$props && "$$inject" in $$props) { | |
$$self.$inject_state($$props.$$inject); | |
} | |
return [ | |
selectedOption, | |
canvas, | |
textToDisplay, | |
TestVerb, | |
kitchenOptions, | |
testText, | |
updateText, | |
canvas_1_binding, | |
input_input_handler, | |
select_change_handler | |
]; | |
} | |
class VideoGradioComponentBrainstorming extends SvelteComponentDev { | |
constructor(options) { | |
super(options); | |
init(this, options, instance$b, create_fragment$b, safe_not_equal, {}); | |
dispatch_dev("SvelteRegisterComponent", { | |
component: this, | |
tagName: "VideoGradioComponentBrainstorming", | |
options, | |
id: create_fragment$b.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$a = "src\\MovingDotPortfromReact.svelte"; | |
function create_fragment$a(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$a, 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$a.name, | |
type: "component", | |
source: "", | |
ctx | |
}); | |
return block; | |
} | |
const step = 10; | |
function instance$a($$self, $$props, $$invalidate) { | |
let { $$slots: slots = {}, $$scope } = $$props; | |
validate_slots('MovingDotPortfromReact', slots, []); | |
let { position = { x: 0, y: 0 } } = $$props; | |
let { boundaries = { minX: 0, maxX: 100, minY: 0, maxY: 100 } } = $$props; | |
const dispatch = createEventDispatcher(); | |
let dotElement; // Reference to the dot element | |
function moveDot(newX, newY) { | |
// Update position with a new object for Svelte reactivity | |
let boundedX = Math.max(boundaries.minX, Math.min(newX, boundaries.maxX)); | |
let boundedY = Math.max(boundaries.minY, Math.min(newY, boundaries.maxY)); | |
// Update position | |
$$invalidate(0, position = { x: boundedX, y: boundedY }); | |
// Dispatch the move event with the new position | |
dispatch('move', position); | |
} | |
const handleKeyPress = e => { | |
e.preventDefault(); | |
let newX = position.x; | |
let newY = position.y; | |
switch (e.key) { | |
case 'ArrowLeft': | |
newX -= step; | |
break; | |
case 'ArrowRight': | |
newX += step; | |
break; | |
case 'ArrowUp': | |
newY -= step; | |
break; | |
case 'ArrowDown': | |
newY += step; | |
break; | |
} | |
moveDot(newX, newY); | |
}; | |
function focusDot() { | |
//On click for the space its imported into | |
dotElement.focus(); | |
} | |
onMount(() => { | |
dotElement.addEventListener('keydown', handleKeyPress); | |
}); | |
onDestroy(() => { | |
dotElement.removeEventListener('keydown', handleKeyPress); | |
}); | |
const writable_props = ['position', 'boundaries']; | |
Object.keys($$props).forEach(key => { | |
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(`<MovingDotPortfromReact> was created with unknown prop '${key}'`); | |
}); | |
function button_binding($$value) { | |
binding_callbacks[$$value ? 'unshift' : 'push'](() => { | |
dotElement = $$value; | |
$$invalidate(1, dotElement); | |
}); | |
} | |
$$self.$$set = $$props => { | |
if ('position' in $$props) $$invalidate(0, position = $$props.position); | |
if ('boundaries' in $$props) $$invalidate(2, boundaries = $$props.boundaries); | |
}; | |
$$self.$capture_state = () => ({ | |
onMount, | |
onDestroy, | |
createEventDispatcher, | |
position, | |
boundaries, | |
step, | |
dispatch, | |
dotElement, | |
moveDot, | |
handleKeyPress, | |
focusDot | |
}); | |
$$self.$inject_state = $$props => { | |
if ('position' in $$props) $$invalidate(0, position = $$props.position); | |
if ('boundaries' in $$props) $$invalidate(2, boundaries = $$props.boundaries); | |
if ('dotElement' in $$props) $$invalidate(1, dotElement = $$props.dotElement); | |
}; | |
if ($$props && "$$inject" in $$props) { | |
$$self.$inject_state($$props.$$inject); | |
} | |
return [position, dotElement, boundaries, focusDot, button_binding]; | |
} | |
class MovingDotPortfromReact extends SvelteComponentDev { | |
constructor(options) { | |
super(options); | |
init(this, options, instance$a, create_fragment$a, safe_not_equal, { position: 0, boundaries: 2, focusDot: 3 }); | |
dispatch_dev("SvelteRegisterComponent", { | |
component: this, | |
tagName: "MovingDotPortfromReact", | |
options, | |
id: create_fragment$a.name | |
}); | |
} | |
get position() { | |
throw new Error("<MovingDotPortfromReact>: Props cannot be read directly from the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'"); | |
} | |
set position(value) { | |
throw new Error("<MovingDotPortfromReact>: Props cannot be set directly on the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'"); | |
} | |
get boundaries() { | |
throw new Error("<MovingDotPortfromReact>: Props cannot be read directly from the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'"); | |
} | |
set boundaries(value) { | |
throw new Error("<MovingDotPortfromReact>: Props cannot be set directly on the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'"); | |
} | |
get focusDot() { | |
return this.$$.ctx[3]; | |
} | |
set focusDot(value) { | |
throw new Error("<MovingDotPortfromReact>: Props cannot be set directly on the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'"); | |
} | |
} | |
/* src\MovingDotTargetPortfromReact.svelte generated by Svelte v3.59.2 */ | |
const file$9 = "src\\MovingDotTargetPortfromReact.svelte"; | |
function create_fragment$9(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$9, 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$9.name, | |
type: "component", | |
source: "", | |
ctx | |
}); | |
return block; | |
} | |
function instance$9($$self, $$props, $$invalidate) { | |
let { $$slots: slots = {}, $$scope } = $$props; | |
validate_slots('MovingDotTargetPortfromReact', slots, []); | |
let { position } = $$props; | |
$$self.$$.on_mount.push(function () { | |
if (position === undefined && !('position' in $$props || $$self.$$.bound[$$self.$$.props['position']])) { | |
console.warn("<MovingDotTargetPortfromReact> was created without expected prop 'position'"); | |
} | |
}); | |
const writable_props = ['position']; | |
Object.keys($$props).forEach(key => { | |
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(`<MovingDotTargetPortfromReact> was created with unknown prop '${key}'`); | |
}); | |
$$self.$$set = $$props => { | |
if ('position' in $$props) $$invalidate(0, position = $$props.position); | |
}; | |
$$self.$capture_state = () => ({ position }); | |
$$self.$inject_state = $$props => { | |
if ('position' in $$props) $$invalidate(0, position = $$props.position); | |
}; | |
if ($$props && "$$inject" in $$props) { | |
$$self.$inject_state($$props.$$inject); | |
} | |
return [position]; | |
} | |
class MovingDotTargetPortfromReact extends SvelteComponentDev { | |
constructor(options) { | |
super(options); | |
init(this, options, instance$9, create_fragment$9, safe_not_equal, { position: 0 }); | |
dispatch_dev("SvelteRegisterComponent", { | |
component: this, | |
tagName: "MovingDotTargetPortfromReact", | |
options, | |
id: create_fragment$9.name | |
}); | |
} | |
get position() { | |
throw new Error("<MovingDotTargetPortfromReact>: Props cannot be read directly from the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'"); | |
} | |
set position(value) { | |
throw new Error("<MovingDotTargetPortfromReact>: Props cannot be set directly on the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'"); | |
} | |
} | |
/* src\MovingDotSpaceSimpleModal.svelte generated by Svelte v3.59.2 */ | |
const { console: console_1$5 } = globals; | |
const file$8 = "src\\MovingDotSpaceSimpleModal.svelte"; | |
function get_each_context$5(ctx, list, i) { | |
const child_ctx = ctx.slice(); | |
child_ctx[8] = list[i]; | |
return child_ctx; | |
} | |
// (32:0) {#if isOpen} | |
function create_if_block$4(ctx) { | |
let div3; | |
let div2; | |
let div0; | |
let h2; | |
let t0; | |
let t1; | |
let button; | |
let t3; | |
let div1; | |
let t4; | |
let t5; | |
let ul; | |
let mounted; | |
let dispose; | |
let each_value = /*items*/ ctx[3]; | |
validate_each_argument(each_value); | |
let each_blocks = []; | |
for (let i = 0; i < each_value.length; i += 1) { | |
each_blocks[i] = create_each_block$5(get_each_context$5(ctx, each_value, i)); | |
} | |
const block = { | |
c: function create() { | |
div3 = element("div"); | |
div2 = element("div"); | |
div0 = element("div"); | |
h2 = element("h2"); | |
t0 = text(/*title*/ ctx[1]); | |
t1 = space(); | |
button = element("button"); | |
button.textContent = "×"; | |
t3 = space(); | |
div1 = element("div"); | |
t4 = text(/*content*/ ctx[2]); | |
t5 = space(); | |
ul = element("ul"); | |
for (let i = 0; i < each_blocks.length; i += 1) { | |
each_blocks[i].c(); | |
} | |
add_location(h2, file$8, 35, 8, 882); | |
add_location(button, file$8, 36, 8, 908); | |
attr_dev(div0, "class", "modal-header svelte-m51ous"); | |
add_location(div0, file$8, 34, 6, 846); | |
attr_dev(ul, "class", "modal-items"); | |
add_location(ul, file$8, 40, 8, 1032); | |
attr_dev(div1, "class", "modal-content svelte-m51ous"); | |
add_location(div1, file$8, 38, 6, 976); | |
attr_dev(div2, "class", "modal svelte-m51ous"); | |
add_location(div2, file$8, 33, 4, 819); | |
attr_dev(div3, "class", "modal-overlay svelte-m51ous"); | |
add_location(div3, file$8, 32, 2, 786); | |
}, | |
m: function mount(target, anchor) { | |
insert_dev(target, div3, anchor); | |
append_dev(div3, div2); | |
append_dev(div2, div0); | |
append_dev(div0, h2); | |
append_dev(h2, t0); | |
append_dev(div0, t1); | |
append_dev(div0, button); | |
append_dev(div2, t3); | |
append_dev(div2, div1); | |
append_dev(div1, t4); | |
append_dev(div1, t5); | |
append_dev(div1, ul); | |
for (let i = 0; i < each_blocks.length; i += 1) { | |
if (each_blocks[i]) { | |
each_blocks[i].m(ul, null); | |
} | |
} | |
if (!mounted) { | |
dispose = listen_dev(button, "click", /*closeModal*/ ctx[4], false, false, false, false); | |
mounted = true; | |
} | |
}, | |
p: function update(ctx, dirty) { | |
if (dirty & /*title*/ 2) set_data_dev(t0, /*title*/ ctx[1]); | |
if (dirty & /*content*/ 4) set_data_dev(t4, /*content*/ ctx[2]); | |
if (dirty & /*handleItemClick, items*/ 40) { | |
each_value = /*items*/ ctx[3]; | |
validate_each_argument(each_value); | |
let i; | |
for (i = 0; i < each_value.length; i += 1) { | |
const child_ctx = get_each_context$5(ctx, each_value, i); | |
if (each_blocks[i]) { | |
each_blocks[i].p(child_ctx, dirty); | |
} else { | |
each_blocks[i] = create_each_block$5(child_ctx); | |
each_blocks[i].c(); | |
each_blocks[i].m(ul, null); | |
} | |
} | |
for (; i < each_blocks.length; i += 1) { | |
each_blocks[i].d(1); | |
} | |
each_blocks.length = each_value.length; | |
} | |
}, | |
d: function destroy(detaching) { | |
if (detaching) detach_dev(div3); | |
destroy_each(each_blocks, detaching); | |
mounted = false; | |
dispose(); | |
} | |
}; | |
dispatch_dev("SvelteRegisterBlock", { | |
block, | |
id: create_if_block$4.name, | |
type: "if", | |
source: "(32:0) {#if isOpen}", | |
ctx | |
}); | |
return block; | |
} | |
// (42:10) {#each items as item} | |
function create_each_block$5(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$8, 42, 12, 1103); | |
}, | |
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$5.name, | |
type: "each", | |
source: "(42:10) {#each items as item}", | |
ctx | |
}); | |
return block; | |
} | |
function create_fragment$8(ctx) { | |
let if_block_anchor; | |
let if_block = /*isOpen*/ ctx[0] && create_if_block$4(ctx); | |
const block = { | |
c: function create() { | |
if (if_block) if_block.c(); | |
if_block_anchor = empty(); | |
}, | |
l: function claim(nodes) { | |
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); | |
}, | |
m: function mount(target, anchor) { | |
if (if_block) if_block.m(target, anchor); | |
insert_dev(target, if_block_anchor, anchor); | |
}, | |
p: function update(ctx, [dirty]) { | |
if (/*isOpen*/ ctx[0]) { | |
if (if_block) { | |
if_block.p(ctx, dirty); | |
} else { | |
if_block = create_if_block$4(ctx); | |
if_block.c(); | |
if_block.m(if_block_anchor.parentNode, if_block_anchor); | |
} | |
} else if (if_block) { | |
if_block.d(1); | |
if_block = null; | |
} | |
}, | |
i: noop, | |
o: noop, | |
d: function destroy(detaching) { | |
if (if_block) if_block.d(detaching); | |
if (detaching) detach_dev(if_block_anchor); | |
} | |
}; | |
dispatch_dev("SvelteRegisterBlock", { | |
block, | |
id: create_fragment$8.name, | |
type: "component", | |
source: "", | |
ctx | |
}); | |
return block; | |
} | |
function instance$8($$self, $$props, $$invalidate) { | |
let { $$slots: slots = {}, $$scope } = $$props; | |
validate_slots('MovingDotSpaceSimpleModal', slots, []); | |
let { isOpen = false } = $$props; | |
let { title = '' } = $$props; | |
let { content = '' } = $$props; | |
let { items = [] } = $$props; | |
let { onClose } = $$props; | |
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(); | |
switch (item.action) { | |
case "revealCaveLocation": | |
{ | |
alert("The cave is revealed"); | |
break; | |
} | |
case "giveHistory": | |
{ | |
alert("The History is revealed"); | |
break; | |
} | |
} | |
} | |
$$self.$$.on_mount.push(function () { | |
if (onClose === undefined && !('onClose' in $$props || $$self.$$.bound[$$self.$$.props['onClose']])) { | |
console_1$5.warn("<MovingDotSpaceSimpleModal> was created without expected prop 'onClose'"); | |
} | |
}); | |
const writable_props = ['isOpen', 'title', 'content', 'items', 'onClose']; | |
Object.keys($$props).forEach(key => { | |
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1$5.warn(`<MovingDotSpaceSimpleModal> was created with unknown prop '${key}'`); | |
}); | |
const click_handler = item => handleItemClick(item); | |
$$self.$$set = $$props => { | |
if ('isOpen' in $$props) $$invalidate(0, isOpen = $$props.isOpen); | |
if ('title' in $$props) $$invalidate(1, title = $$props.title); | |
if ('content' in $$props) $$invalidate(2, content = $$props.content); | |
if ('items' in $$props) $$invalidate(3, items = $$props.items); | |
if ('onClose' in $$props) $$invalidate(6, onClose = $$props.onClose); | |
}; | |
$$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 MovingDotSpaceSimpleModal extends SvelteComponentDev { | |
constructor(options) { | |
super(options); | |
init(this, options, instance$8, create_fragment$8, safe_not_equal, { | |
isOpen: 0, | |
title: 1, | |
content: 2, | |
items: 3, | |
onClose: 6 | |
}); | |
dispatch_dev("SvelteRegisterComponent", { | |
component: this, | |
tagName: "MovingDotSpaceSimpleModal", | |
options, | |
id: create_fragment$8.name | |
}); | |
} | |
get isOpen() { | |
throw new Error("<MovingDotSpaceSimpleModal>: Props cannot be read directly from the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'"); | |
} | |
set isOpen(value) { | |
throw new Error("<MovingDotSpaceSimpleModal>: Props cannot be set directly on the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'"); | |
} | |
get title() { | |
throw new Error("<MovingDotSpaceSimpleModal>: Props cannot be read directly from the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'"); | |
} | |
set title(value) { | |
throw new Error("<MovingDotSpaceSimpleModal>: Props cannot be set directly on the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'"); | |
} | |
get content() { | |
throw new Error("<MovingDotSpaceSimpleModal>: Props cannot be read directly from the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'"); | |
} | |
set content(value) { | |
throw new Error("<MovingDotSpaceSimpleModal>: Props cannot be set directly on the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'"); | |
} | |
get items() { | |
throw new Error("<MovingDotSpaceSimpleModal>: Props cannot be read directly from the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'"); | |
} | |
set items(value) { | |
throw new Error("<MovingDotSpaceSimpleModal>: Props cannot be set directly on the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'"); | |
} | |
get onClose() { | |
throw new Error("<MovingDotSpaceSimpleModal>: Props cannot be read directly from the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'"); | |
} | |
set onClose(value) { | |
throw new Error("<MovingDotSpaceSimpleModal>: Props cannot be set directly on the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'"); | |
} | |
} | |
const health = writable(100); | |
const mana = writable(50); | |
const strength = writable(10); | |
const agility = writable(10); | |
const intelligence = writable(10); | |
const charisma = writable(10); | |
const luck = writable(10); | |
const inventory = writable([ | |
// Sample inventory items | |
{ type: "weapon", name: "Sword", description: "A sharp blade." }, | |
{ type: "armor", name: "Shield", description: "Protects against attacks." }, | |
{ type: "consumable", name: "Health Potion", description: "Restores health." }, | |
// Add more items as needed | |
]); | |
const skills = writable([ | |
// Sample skills | |
{ branch: "Combat", name: "Basic Attack", learned: false }, | |
{ branch: "Magic", name: "Fireball", learned: false }, | |
{ branch: "Stealth", name: "Sneak", learned: false }, | |
// Add more skills as needed | |
]); | |
/* src\MovingDotStatStoreandDisplay.svelte generated by Svelte v3.59.2 */ | |
const file$7 = "src\\MovingDotStatStoreandDisplay.svelte"; | |
function get_each_context$4(ctx, list, i) { | |
const child_ctx = ctx.slice(); | |
child_ctx[11] = list[i]; | |
return child_ctx; | |
} | |
function get_each_context_1(ctx, list, i) { | |
const child_ctx = ctx.slice(); | |
child_ctx[14] = list[i]; | |
return child_ctx; | |
} | |
// (23:8) {#each $inventory as item} | |
function create_each_block_1(ctx) { | |
let li; | |
let t0_value = /*item*/ ctx[14].name + ""; | |
let t0; | |
let t1; | |
let t2_value = /*item*/ ctx[14].description + ""; | |
let t2; | |
const block = { | |
c: function create() { | |
li = element("li"); | |
t0 = text(t0_value); | |
t1 = text(": "); | |
t2 = text(t2_value); | |
add_location(li, file$7, 23, 10, 705); | |
}, | |
m: function mount(target, anchor) { | |
insert_dev(target, li, anchor); | |
append_dev(li, t0); | |
append_dev(li, t1); | |
append_dev(li, t2); | |
}, | |
p: function update(ctx, dirty) { | |
if (dirty & /*$inventory*/ 128 && t0_value !== (t0_value = /*item*/ ctx[14].name + "")) set_data_dev(t0, t0_value); | |
if (dirty & /*$inventory*/ 128 && t2_value !== (t2_value = /*item*/ ctx[14].description + "")) set_data_dev(t2, t2_value); | |
}, | |
d: function destroy(detaching) { | |
if (detaching) detach_dev(li); | |
} | |
}; | |
dispatch_dev("SvelteRegisterBlock", { | |
block, | |
id: create_each_block_1.name, | |
type: "each", | |
source: "(23:8) {#each $inventory as item}", | |
ctx | |
}); | |
return block; | |
} | |
// (33:6) {#each $skills as skill} | |
function create_each_block$4(ctx) { | |
let button; | |
let t0_value = /*skill*/ ctx[11].name + ""; | |
let t0; | |
let t1; | |
let t2_value = /*skill*/ ctx[11].branch + ""; | |
let t2; | |
let t3; | |
let t4_value = (/*skill*/ ctx[11].learned ? 'Yes' : 'No') + ""; | |
let t4; | |
let t5; | |
let mounted; | |
let dispose; | |
function click_handler() { | |
return /*click_handler*/ ctx[10](/*skill*/ ctx[11]); | |
} | |
const block = { | |
c: function create() { | |
button = element("button"); | |
t0 = text(t0_value); | |
t1 = text(" - "); | |
t2 = text(t2_value); | |
t3 = text(" - Learned: "); | |
t4 = text(t4_value); | |
t5 = space(); | |
attr_dev(button, "class", "skill"); | |
add_location(button, file$7, 33, 8, 932); | |
}, | |
m: function mount(target, anchor) { | |
insert_dev(target, button, anchor); | |
append_dev(button, t0); | |
append_dev(button, t1); | |
append_dev(button, t2); | |
append_dev(button, t3); | |
append_dev(button, t4); | |
append_dev(button, t5); | |
if (!mounted) { | |
dispose = listen_dev(button, "click", click_handler, false, false, false, false); | |
mounted = true; | |
} | |
}, | |
p: function update(new_ctx, dirty) { | |
ctx = new_ctx; | |
if (dirty & /*$skills*/ 256 && t0_value !== (t0_value = /*skill*/ ctx[11].name + "")) set_data_dev(t0, t0_value); | |
if (dirty & /*$skills*/ 256 && t2_value !== (t2_value = /*skill*/ ctx[11].branch + "")) set_data_dev(t2, t2_value); | |
if (dirty & /*$skills*/ 256 && t4_value !== (t4_value = (/*skill*/ ctx[11].learned ? 'Yes' : 'No') + "")) set_data_dev(t4, t4_value); | |
}, | |
d: function destroy(detaching) { | |
if (detaching) detach_dev(button); | |
mounted = false; | |
dispose(); | |
} | |
}; | |
dispatch_dev("SvelteRegisterBlock", { | |
block, | |
id: create_each_block$4.name, | |
type: "each", | |
source: "(33:6) {#each $skills as skill}", | |
ctx | |
}); | |
return block; | |
} | |
function create_fragment$7(ctx) { | |
let div8; | |
let div3; | |
let div2; | |
let h20; | |
let t1; | |
let div0; | |
let t2; | |
let t3; | |
let t4; | |
let t5; | |
let t6; | |
let t7; | |
let t8; | |
let t9; | |
let t10; | |
let t11; | |
let t12; | |
let t13; | |
let t14; | |
let div1; | |
let t15; | |
let t16; | |
let t17; | |
let div5; | |
let div4; | |
let h21; | |
let t19; | |
let ul; | |
let t20; | |
let div7; | |
let div6; | |
let h22; | |
let t22; | |
let each_value_1 = /*$inventory*/ ctx[7]; | |
validate_each_argument(each_value_1); | |
let each_blocks_1 = []; | |
for (let i = 0; i < each_value_1.length; i += 1) { | |
each_blocks_1[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i)); | |
} | |
let each_value = /*$skills*/ ctx[8]; | |
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() { | |
div8 = element("div"); | |
div3 = element("div"); | |
div2 = element("div"); | |
h20 = element("h2"); | |
h20.textContent = "Player Stats"; | |
t1 = space(); | |
div0 = element("div"); | |
t2 = text("Health: "); | |
t3 = text(/*$health*/ ctx[0]); | |
t4 = text(" Mana: "); | |
t5 = text(/*$mana*/ ctx[1]); | |
t6 = text(" Strength: "); | |
t7 = text(/*$strength*/ ctx[2]); | |
t8 = text(" Agility: "); | |
t9 = text(/*$agility*/ ctx[3]); | |
t10 = text(" Intelligence: "); | |
t11 = text(/*$intelligence*/ ctx[4]); | |
t12 = text(" Charisma: "); | |
t13 = text(/*$charisma*/ ctx[5]); | |
t14 = space(); | |
div1 = element("div"); | |
t15 = text("Luck: "); | |
t16 = text(/*$luck*/ ctx[6]); | |
t17 = space(); | |
div5 = element("div"); | |
div4 = element("div"); | |
h21 = element("h2"); | |
h21.textContent = "Inventory"; | |
t19 = space(); | |
ul = element("ul"); | |
for (let i = 0; i < each_blocks_1.length; i += 1) { | |
each_blocks_1[i].c(); | |
} | |
t20 = space(); | |
div7 = element("div"); | |
div6 = element("div"); | |
h22 = element("h2"); | |
h22.textContent = "Skill Tree"; | |
t22 = space(); | |
for (let i = 0; i < each_blocks.length; i += 1) { | |
each_blocks[i].c(); | |
} | |
add_location(h20, file$7, 12, 6, 337); | |
add_location(div0, file$7, 13, 6, 366); | |
add_location(div1, file$7, 14, 6, 510); | |
attr_dev(div2, "class", "stats svelte-10basrm"); | |
add_location(div2, file$7, 11, 4, 310); | |
attr_dev(div3, "class", "grid-statsitem svelte-10basrm"); | |
add_location(div3, file$7, 10, 2, 276); | |
add_location(h21, file$7, 20, 6, 627); | |
add_location(ul, file$7, 21, 6, 653); | |
attr_dev(div4, "class", "inventory svelte-10basrm"); | |
add_location(div4, file$7, 19, 4, 596); | |
attr_dev(div5, "class", "grid-statsitem svelte-10basrm"); | |
add_location(div5, file$7, 18, 2, 562); | |
add_location(h22, file$7, 31, 6, 871); | |
attr_dev(div6, "class", "skill-tree svelte-10basrm"); | |
add_location(div6, file$7, 30, 4, 839); | |
attr_dev(div7, "class", "grid-statsitem svelte-10basrm"); | |
add_location(div7, file$7, 29, 2, 805); | |
attr_dev(div8, "class", "grid-statsContainer svelte-10basrm"); | |
add_location(div8, file$7, 9, 0, 239); | |
}, | |
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, div8, anchor); | |
append_dev(div8, div3); | |
append_dev(div3, div2); | |
append_dev(div2, h20); | |
append_dev(div2, t1); | |
append_dev(div2, div0); | |
append_dev(div0, t2); | |
append_dev(div0, t3); | |
append_dev(div0, t4); | |
append_dev(div0, t5); | |
append_dev(div0, t6); | |
append_dev(div0, t7); | |
append_dev(div0, t8); | |
append_dev(div0, t9); | |
append_dev(div0, t10); | |
append_dev(div0, t11); | |
append_dev(div0, t12); | |
append_dev(div0, t13); | |
append_dev(div2, t14); | |
append_dev(div2, div1); | |
append_dev(div1, t15); | |
append_dev(div1, t16); | |
append_dev(div8, t17); | |
append_dev(div8, div5); | |
append_dev(div5, div4); | |
append_dev(div4, h21); | |
append_dev(div4, t19); | |
append_dev(div4, ul); | |
for (let i = 0; i < each_blocks_1.length; i += 1) { | |
if (each_blocks_1[i]) { | |
each_blocks_1[i].m(ul, null); | |
} | |
} | |
append_dev(div8, t20); | |
append_dev(div8, div7); | |
append_dev(div7, div6); | |
append_dev(div6, h22); | |
append_dev(div6, t22); | |
for (let i = 0; i < each_blocks.length; i += 1) { | |
if (each_blocks[i]) { | |
each_blocks[i].m(div6, null); | |
} | |
} | |
}, | |
p: function update(ctx, [dirty]) { | |
if (dirty & /*$health*/ 1) set_data_dev(t3, /*$health*/ ctx[0]); | |
if (dirty & /*$mana*/ 2) set_data_dev(t5, /*$mana*/ ctx[1]); | |
if (dirty & /*$strength*/ 4) set_data_dev(t7, /*$strength*/ ctx[2]); | |
if (dirty & /*$agility*/ 8) set_data_dev(t9, /*$agility*/ ctx[3]); | |
if (dirty & /*$intelligence*/ 16) set_data_dev(t11, /*$intelligence*/ ctx[4]); | |
if (dirty & /*$charisma*/ 32) set_data_dev(t13, /*$charisma*/ ctx[5]); | |
if (dirty & /*$luck*/ 64) set_data_dev(t16, /*$luck*/ ctx[6]); | |
if (dirty & /*$inventory*/ 128) { | |
each_value_1 = /*$inventory*/ ctx[7]; | |
validate_each_argument(each_value_1); | |
let i; | |
for (i = 0; i < each_value_1.length; i += 1) { | |
const child_ctx = get_each_context_1(ctx, each_value_1, i); | |
if (each_blocks_1[i]) { | |
each_blocks_1[i].p(child_ctx, dirty); | |
} else { | |
each_blocks_1[i] = create_each_block_1(child_ctx); | |
each_blocks_1[i].c(); | |
each_blocks_1[i].m(ul, null); | |
} | |
} | |
for (; i < each_blocks_1.length; i += 1) { | |
each_blocks_1[i].d(1); | |
} | |
each_blocks_1.length = each_value_1.length; | |
} | |
if (dirty & /*toggleSkill, $skills*/ 768) { | |
each_value = /*$skills*/ ctx[8]; | |
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(div6, 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(div8); | |
destroy_each(each_blocks_1, detaching); | |
destroy_each(each_blocks, detaching); | |
} | |
}; | |
dispatch_dev("SvelteRegisterBlock", { | |
block, | |
id: create_fragment$7.name, | |
type: "component", | |
source: "", | |
ctx | |
}); | |
return block; | |
} | |
function instance$7($$self, $$props, $$invalidate) { | |
let $health; | |
let $mana; | |
let $strength; | |
let $agility; | |
let $intelligence; | |
let $charisma; | |
let $luck; | |
let $inventory; | |
let $skills; | |
validate_store(health, 'health'); | |
component_subscribe($$self, health, $$value => $$invalidate(0, $health = $$value)); | |
validate_store(mana, 'mana'); | |
component_subscribe($$self, mana, $$value => $$invalidate(1, $mana = $$value)); | |
validate_store(strength, 'strength'); | |
component_subscribe($$self, strength, $$value => $$invalidate(2, $strength = $$value)); | |
validate_store(agility, 'agility'); | |
component_subscribe($$self, agility, $$value => $$invalidate(3, $agility = $$value)); | |
validate_store(intelligence, 'intelligence'); | |
component_subscribe($$self, intelligence, $$value => $$invalidate(4, $intelligence = $$value)); | |
validate_store(charisma, 'charisma'); | |
component_subscribe($$self, charisma, $$value => $$invalidate(5, $charisma = $$value)); | |
validate_store(luck, 'luck'); | |
component_subscribe($$self, luck, $$value => $$invalidate(6, $luck = $$value)); | |
validate_store(inventory, 'inventory'); | |
component_subscribe($$self, inventory, $$value => $$invalidate(7, $inventory = $$value)); | |
validate_store(skills, 'skills'); | |
component_subscribe($$self, skills, $$value => $$invalidate(8, $skills = $$value)); | |
let { $$slots: slots = {}, $$scope } = $$props; | |
validate_slots('MovingDotStatStoreandDisplay', slots, []); | |
function toggleSkill(skill) { | |
skill.learned = !skill.learned; | |
skills.update(n => n); | |
} | |
const writable_props = []; | |
Object.keys($$props).forEach(key => { | |
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(`<MovingDotStatStoreandDisplay> was created with unknown prop '${key}'`); | |
}); | |
const click_handler = skill => toggleSkill(skill); | |
$$self.$capture_state = () => ({ | |
health, | |
mana, | |
strength, | |
agility, | |
intelligence, | |
charisma, | |
luck, | |
inventory, | |
skills, | |
toggleSkill, | |
$health, | |
$mana, | |
$strength, | |
$agility, | |
$intelligence, | |
$charisma, | |
$luck, | |
$inventory, | |
$skills | |
}); | |
return [ | |
$health, | |
$mana, | |
$strength, | |
$agility, | |
$intelligence, | |
$charisma, | |
$luck, | |
$inventory, | |
$skills, | |
toggleSkill, | |
click_handler | |
]; | |
} | |
class MovingDotStatStoreandDisplay extends SvelteComponentDev { | |
constructor(options) { | |
super(options); | |
init(this, options, instance$7, create_fragment$7, safe_not_equal, {}); | |
dispatch_dev("SvelteRegisterComponent", { | |
component: this, | |
tagName: "MovingDotStatStoreandDisplay", | |
options, | |
id: create_fragment$7.name | |
}); | |
} | |
} | |
/* src\MovingDotSpacePortfromReact.svelte generated by Svelte v3.59.2 */ | |
const { console: console_1$4 } = globals; | |
const file$6 = "src\\MovingDotSpacePortfromReact.svelte"; | |
function get_each_context$3(ctx, list, i) { | |
const child_ctx = ctx.slice(); | |
child_ctx[19] = list[i]; | |
return child_ctx; | |
} | |
// (159:4) {#each $targets as target (target.name)} | |
function create_each_block$3(key_1, ctx) { | |
let first; | |
let target; | |
let t0; | |
let span; | |
let t1_value = /*target*/ ctx[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$6, 160, 8, 7871); | |
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: "(159:4) {#each $targets as target (target.name)}", | |
ctx | |
}); | |
return block; | |
} | |
// (165:4) {#if isModalOpen} | |
function create_if_block$3(ctx) { | |
let modal; | |
let current; | |
modal = new MovingDotSpaceSimpleModal({ | |
props: { | |
isOpen: /*isModalOpen*/ ctx[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$3.name, | |
type: "if", | |
source: "(165:4) {#if isModalOpen}", | |
ctx | |
}); | |
return block; | |
} | |
function create_fragment$6(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 t8; | |
let movingdotstats; | |
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$3(ctx); | |
movingdotstats = new MovingDotStatStoreandDisplay({ $$inline: true }); | |
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(); | |
t8 = space(); | |
create_component(movingdotstats.$$.fragment); | |
set_style(canvas_1, "width", "100%"); | |
set_style(canvas_1, "height", "100%"); | |
attr_dev(canvas_1, "tabindex", "0"); | |
add_location(canvas_1, file$6, 155, 4, 7397); | |
attr_dev(div0, "id", "overlayText"); | |
attr_dev(div0, "class", "svelte-c2nwl9"); | |
add_location(div0, file$6, 157, 4, 7655); | |
attr_dev(div1, "id", "game-container"); | |
attr_dev(div1, "style", /*spaceStyle*/ ctx[13]); | |
add_location(div1, file$6, 154, 0, 7311); | |
}, | |
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); | |
insert_dev(target, t8, anchor); | |
mount_component(movingdotstats, target, anchor); | |
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$3(ctx); | |
if_block.c(); | |
transition_in(if_block, 1); | |
if_block.m(div1, null); | |
} | |
} else if (if_block) { | |
group_outros(); | |
transition_out(if_block, 1, 1, () => { | |
if_block = null; | |
}); | |
check_outros(); | |
} | |
}, | |
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); | |
transition_in(movingdotstats.$$.fragment, local); | |
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); | |
transition_out(movingdotstats.$$.fragment, local); | |
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(); | |
if (detaching) detach_dev(t8); | |
destroy_component(movingdotstats, detaching); | |
mounted = false; | |
dispose(); | |
} | |
}; | |
dispatch_dev("SvelteRegisterBlock", { | |
block, | |
id: create_fragment$6.name, | |
type: "component", | |
source: "", | |
ctx | |
}); | |
return block; | |
} | |
function instance$6($$self, $$props, $$invalidate) { | |
let $dotPosition; | |
let $targets; | |
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); | |
health.update(h => h - 10 > 0 ? h - 10 : 0); | |
$$invalidate(3, currentcollisiontext = target.collisiontext); | |
$$invalidate(4, currentcollisionitems = [ | |
{ | |
label: "Ask about the hidden cave", // Decreases health but never below 0 | |
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$4.warn(`<MovingDotSpacePortfromReact> 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: MovingDotSpaceSimpleModal, | |
MovingDotStats: MovingDotStatStoreandDisplay, | |
health, | |
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$6, create_fragment$6, safe_not_equal, {}); | |
dispatch_dev("SvelteRegisterComponent", { | |
component: this, | |
tagName: "MovingDotSpacePortfromReact", | |
options, | |
id: create_fragment$6.name | |
}); | |
} | |
} | |
/* src\YoutubeIframeAPICustomInterface.svelte generated by Svelte v3.59.2 */ | |
const { console: console_1$3 } = globals; | |
const file$5 = "src\\YoutubeIframeAPICustomInterface.svelte"; | |
function create_fragment$5(ctx) { | |
let h1; | |
let t1; | |
let label; | |
let t2; | |
let input0; | |
let t3; | |
let input1; | |
let t4; | |
let 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$5, 286, 0, 9769); | |
attr_dev(input0, "type", "text"); | |
add_location(input0, file$5, 290, 4, 9927); | |
attr_dev(input1, "type", "checkbox"); | |
add_location(input1, file$5, 292, 4, 10035); | |
add_location(label, file$5, 288, 0, 9832); | |
attr_dev(div0, "id", "youtube-player"); | |
set_style(div0, "height", "90vh"); | |
set_style(div0, "width", "90%"); | |
add_location(div0, file$5, 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$5, 301, 4, 10475); | |
add_location(br0, file$5, 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$5, 304, 4, 10654); | |
set_style(div3, "position", "relative"); | |
add_location(div3, file$5, 299, 0, 10366); | |
add_location(button0, file$5, 311, 0, 10921); | |
add_location(button1, file$5, 312, 0, 11014); | |
add_location(br1, file$5, 315, 0, 11156); | |
add_location(button2, file$5, 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$5, 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$5, 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$5, 319, 0, 11522); | |
add_location(br2, file$5, 322, 0, 11745); | |
add_location(br3, file$5, 322, 82, 11827); | |
add_location(br4, file$5, 322, 192, 11937); | |
add_location(button6, file$5, 323, 0, 11943); | |
add_location(button7, file$5, 323, 63, 12006); | |
attr_dev(input2, "type", "file"); | |
attr_dev(input2, "accept", ".json"); | |
add_location(input2, file$5, 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$5.name, | |
type: "component", | |
source: "", | |
ctx | |
}); | |
return block; | |
} | |
function getRandomWord(line) { | |
let words = line.split(" "); | |
return words[Math.floor(Math.random() * words.length)]; | |
} | |
function instance$5($$self, $$props, $$invalidate) { | |
let nextindexButtonClass; | |
let previousindexButtonClass; | |
let currentindexButtonClass; | |
let { $$slots: slots = {}, $$scope } = $$props; | |
validate_slots('YoutubeIframeAPICustomInterface', slots, []); | |
let player; | |
let interval = 20; // Define your interval | |
let currentTime = 0; | |
let timeUpdateInterval; | |
// Assuming 'transcript' contains your video transcript | |
let transcript = `Line 1 of the transcript. | |
Line 2 of the transcript. | |
Line 3 food | |
Line 4 foodest | |
Line 5 foods | |
Line 6 fooder | |
Line 7 foodz | |
Line 8 fooding | |
...`; // Replace with your actual transcript | |
let 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$3.warn(`<YoutubeIframeAPICustomInterface> was created with unknown prop '${key}'`); | |
}); | |
function input0_input_handler() { | |
currentvideoId = this.value; | |
$$invalidate(2, currentvideoId); | |
} | |
function input1_change_handler() { | |
isUpdating = this.checked; | |
$$invalidate(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$5, create_fragment$5, safe_not_equal, {}, null, [-1, -1]); | |
dispatch_dev("SvelteRegisterComponent", { | |
component: this, | |
tagName: "YoutubeIframeAPICustomInterface", | |
options, | |
id: create_fragment$5.name | |
}); | |
} | |
} | |
// Unique ID creation requires a high quality random # generator. In the browser we therefore | |
// require the crypto API and do not support built-in fallback to lower quality random number | |
// generators (like Math.random()). | |
let getRandomValues; | |
const rnds8 = new Uint8Array(16); | |
function rng() { | |
// lazy load so that environments that need to polyfill have a chance to do so | |
if (!getRandomValues) { | |
// getRandomValues needs to be invoked in a context where "this" is a Crypto implementation. | |
getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto); | |
if (!getRandomValues) { | |
throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported'); | |
} | |
} | |
return getRandomValues(rnds8); | |
} | |
/** | |
* Convert array of 16 byte values to UUID string format of the form: | |
* XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX | |
*/ | |
const byteToHex = []; | |
for (let i = 0; i < 256; ++i) { | |
byteToHex.push((i + 0x100).toString(16).slice(1)); | |
} | |
function unsafeStringify(arr, offset = 0) { | |
// Note: Be careful editing this code! It's been tuned for performance | |
// and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 | |
return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]; | |
} | |
const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto); | |
var native = { | |
randomUUID | |
}; | |
function v4(options, buf, offset) { | |
if (native.randomUUID && !buf && !options) { | |
return native.randomUUID(); | |
} | |
options = options || {}; | |
const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` | |
rnds[6] = rnds[6] & 0x0f | 0x40; | |
rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided | |
if (buf) { | |
offset = offset || 0; | |
for (let i = 0; i < 16; ++i) { | |
buf[offset + i] = rnds[i]; | |
} | |
return buf; | |
} | |
return unsafeStringify(rnds); | |
} | |
/* src\RecursiveNestedCommentsElement.svelte generated by Svelte v3.59.2 */ | |
const { console: console_1$2 } = globals; | |
const file$4 = "src\\RecursiveNestedCommentsElement.svelte"; | |
function get_each_context$2(ctx, list, i) { | |
const child_ctx = ctx.slice(); | |
child_ctx[14] = list[i]; | |
child_ctx[15] = list; | |
child_ctx[16] = i; | |
return child_ctx; | |
} | |
// (123:16) {#if showReplyInput[comment.id]} | |
function create_if_block$2(ctx) { | |
let div; | |
let input; | |
let t0; | |
let button; | |
let mounted; | |
let dispose; | |
function input_input_handler() { | |
/*input_input_handler*/ ctx[11].call(input, /*comment*/ ctx[14]); | |
} | |
function click_handler_1() { | |
return /*click_handler_1*/ ctx[12](/*comment*/ ctx[14]); | |
} | |
const block = { | |
c: function create() { | |
div = element("div"); | |
input = element("input"); | |
t0 = space(); | |
button = element("button"); | |
button.textContent = "Post Reply"; | |
attr_dev(input, "placeholder", "Write a reply..."); | |
add_location(input, file$4, 124, 24, 4690); | |
add_location(button, file$4, 125, 24, 4791); | |
attr_dev(div, "class", "reply-input"); | |
add_location(div, file$4, 123, 20, 4639); | |
}, | |
m: function mount(target, anchor) { | |
insert_dev(target, div, anchor); | |
append_dev(div, input); | |
set_input_value(input, /*replyText*/ ctx[2][/*comment*/ ctx[14].id]); | |
append_dev(div, t0); | |
append_dev(div, button); | |
if (!mounted) { | |
dispose = [ | |
listen_dev(input, "input", input_input_handler), | |
listen_dev(button, "click", click_handler_1, false, false, false, false) | |
]; | |
mounted = true; | |
} | |
}, | |
p: function update(new_ctx, dirty) { | |
ctx = new_ctx; | |
if (dirty & /*replyText, flattenedComments*/ 6 && input.value !== /*replyText*/ ctx[2][/*comment*/ ctx[14].id]) { | |
set_input_value(input, /*replyText*/ ctx[2][/*comment*/ ctx[14].id]); | |
} | |
}, | |
d: function destroy(detaching) { | |
if (detaching) detach_dev(div); | |
mounted = false; | |
run_all(dispose); | |
} | |
}; | |
dispatch_dev("SvelteRegisterBlock", { | |
block, | |
id: create_if_block$2.name, | |
type: "if", | |
source: "(123:16) {#if showReplyInput[comment.id]}", | |
ctx | |
}); | |
return block; | |
} | |
// (119:8) {#each flattenedComments as comment} | |
function create_each_block$2(ctx) { | |
let div; | |
let span; | |
let t0_value = /*comment*/ ctx[14].title + ""; | |
let t0; | |
let t1; | |
let button; | |
let t3; | |
let t4; | |
let div_class_value; | |
let mounted; | |
let dispose; | |
function click_handler() { | |
return /*click_handler*/ ctx[10](/*comment*/ ctx[14]); | |
} | |
let if_block = /*showReplyInput*/ ctx[3][/*comment*/ ctx[14].id] && create_if_block$2(ctx); | |
const block = { | |
c: function create() { | |
div = element("div"); | |
span = element("span"); | |
t0 = text(t0_value); | |
t1 = space(); | |
button = element("button"); | |
button.textContent = "Reply"; | |
t3 = space(); | |
if (if_block) if_block.c(); | |
t4 = space(); | |
add_location(span, file$4, 120, 16, 4453); | |
add_location(button, file$4, 121, 16, 4499); | |
attr_dev(div, "class", div_class_value = "" + (null_to_empty(/*comment*/ ctx[14].level === 0 | |
? 'top-level-comment' | |
: 'comment') + " svelte-bsj1sx")); | |
set_style(div, "margin-left", /*comment*/ ctx[14].level * 20 + "px"); | |
add_location(div, file$4, 119, 12, 4323); | |
}, | |
m: function mount(target, anchor) { | |
insert_dev(target, div, anchor); | |
append_dev(div, span); | |
append_dev(span, t0); | |
append_dev(div, t1); | |
append_dev(div, button); | |
append_dev(div, t3); | |
if (if_block) if_block.m(div, null); | |
append_dev(div, t4); | |
if (!mounted) { | |
dispose = listen_dev(button, "click", click_handler, false, false, false, false); | |
mounted = true; | |
} | |
}, | |
p: function update(new_ctx, dirty) { | |
ctx = new_ctx; | |
if (dirty & /*flattenedComments*/ 2 && t0_value !== (t0_value = /*comment*/ ctx[14].title + "")) set_data_dev(t0, t0_value); | |
if (/*showReplyInput*/ ctx[3][/*comment*/ ctx[14].id]) { | |
if (if_block) { | |
if_block.p(ctx, dirty); | |
} else { | |
if_block = create_if_block$2(ctx); | |
if_block.c(); | |
if_block.m(div, t4); | |
} | |
} else if (if_block) { | |
if_block.d(1); | |
if_block = null; | |
} | |
if (dirty & /*flattenedComments*/ 2 && div_class_value !== (div_class_value = "" + (null_to_empty(/*comment*/ ctx[14].level === 0 | |
? 'top-level-comment' | |
: 'comment') + " svelte-bsj1sx"))) { | |
attr_dev(div, "class", div_class_value); | |
} | |
if (dirty & /*flattenedComments*/ 2) { | |
set_style(div, "margin-left", /*comment*/ ctx[14].level * 20 + "px"); | |
} | |
}, | |
d: function destroy(detaching) { | |
if (detaching) detach_dev(div); | |
if (if_block) if_block.d(); | |
mounted = false; | |
dispose(); | |
} | |
}; | |
dispatch_dev("SvelteRegisterBlock", { | |
block, | |
id: create_each_block$2.name, | |
type: "each", | |
source: "(119:8) {#each flattenedComments as comment}", | |
ctx | |
}); | |
return block; | |
} | |
function create_fragment$4(ctx) { | |
let h1; | |
let t1; | |
let h4; | |
let t3; | |
let div2; | |
let div0; | |
let button0; | |
let t5; | |
let input0; | |
let t6; | |
let input1; | |
let t7; | |
let button1; | |
let t9; | |
let br; | |
let t10; | |
let div1; | |
let mounted; | |
let dispose; | |
let each_value = /*flattenedComments*/ ctx[1]; | |
validate_each_argument(each_value); | |
let each_blocks = []; | |
for (let i = 0; i < each_value.length; i += 1) { | |
each_blocks[i] = create_each_block$2(get_each_context$2(ctx, each_value, i)); | |
} | |
const block = { | |
c: function create() { | |
h1 = element("h1"); | |
h1.textContent = "Reddit based Nested Comments Idea for LMM responses that need further branching responses"; | |
t1 = space(); | |
h4 = element("h4"); | |
h4.textContent = "Inspired by Vijay Bhati - https://github.com/vj98/Frontend-Machine-Coding/tree/main/nested-comments https://youtu.be/a4OA7QbHEho?list=PLBygUld3s6x8sI_H8UYROVMIVcuxUre1e"; | |
t3 = space(); | |
div2 = element("div"); | |
div0 = element("div"); | |
button0 = element("button"); | |
button0.textContent = "Export Comments"; | |
t5 = text("\r\n | Import Exported Comments \r\n "); | |
input0 = element("input"); | |
t6 = text("\r\n | \r\n "); | |
input1 = element("input"); | |
t7 = space(); | |
button1 = element("button"); | |
button1.textContent = "Post Comment"; | |
t9 = space(); | |
br = element("br"); | |
t10 = space(); | |
div1 = element("div"); | |
for (let i = 0; i < each_blocks.length; i += 1) { | |
each_blocks[i].c(); | |
} | |
add_location(h1, file$4, 104, 0, 3512); | |
add_location(h4, file$4, 105, 0, 3614); | |
add_location(button0, file$4, 108, 8, 3897); | |
attr_dev(input0, "type", "file"); | |
add_location(input0, file$4, 110, 8, 4000); | |
attr_dev(input1, "placeholder", "Add a comment..."); | |
add_location(input1, file$4, 112, 8, 4072); | |
add_location(button1, file$4, 113, 8, 4146); | |
add_location(div0, file$4, 107, 4, 3882); | |
add_location(br, file$4, 116, 4, 4225); | |
attr_dev(div1, "id", "comment-container"); | |
add_location(div1, file$4, 117, 4, 4235); | |
attr_dev(div2, "class", "component-containter svelte-bsj1sx"); | |
set_style(div2, "border", "1px solid black"); | |
set_style(div2, "padding", "4px"); | |
add_location(div2, file$4, 106, 0, 3795); | |
}, | |
l: function claim(nodes) { | |
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); | |
}, | |
m: function mount(target, anchor) { | |
insert_dev(target, h1, anchor); | |
insert_dev(target, t1, anchor); | |
insert_dev(target, h4, anchor); | |
insert_dev(target, t3, anchor); | |
insert_dev(target, div2, anchor); | |
append_dev(div2, div0); | |
append_dev(div0, button0); | |
append_dev(div0, t5); | |
append_dev(div0, input0); | |
append_dev(div0, t6); | |
append_dev(div0, input1); | |
set_input_value(input1, /*newComment*/ ctx[0]); | |
append_dev(div0, t7); | |
append_dev(div0, button1); | |
append_dev(div2, t9); | |
append_dev(div2, br); | |
append_dev(div2, t10); | |
append_dev(div2, div1); | |
for (let i = 0; i < each_blocks.length; i += 1) { | |
if (each_blocks[i]) { | |
each_blocks[i].m(div1, null); | |
} | |
} | |
if (!mounted) { | |
dispose = [ | |
listen_dev(button0, "click", /*exportToJson*/ ctx[7], false, false, false, false), | |
listen_dev(input0, "change", /*handleFileUpload*/ ctx[8], false, false, false, false), | |
listen_dev(input1, "input", /*input1_input_handler*/ ctx[9]), | |
listen_dev(button1, "click", /*addComment*/ ctx[4], false, false, false, false) | |
]; | |
mounted = true; | |
} | |
}, | |
p: function update(ctx, [dirty]) { | |
if (dirty & /*newComment*/ 1 && input1.value !== /*newComment*/ ctx[0]) { | |
set_input_value(input1, /*newComment*/ ctx[0]); | |
} | |
if (dirty & /*flattenedComments, addReply, replyText, toggleReplyInput, showReplyInput*/ 110) { | |
each_value = /*flattenedComments*/ ctx[1]; | |
validate_each_argument(each_value); | |
let i; | |
for (i = 0; i < each_value.length; i += 1) { | |
const child_ctx = get_each_context$2(ctx, each_value, i); | |
if (each_blocks[i]) { | |
each_blocks[i].p(child_ctx, dirty); | |
} else { | |
each_blocks[i] = create_each_block$2(child_ctx); | |
each_blocks[i].c(); | |
each_blocks[i].m(div1, null); | |
} | |
} | |
for (; i < each_blocks.length; i += 1) { | |
each_blocks[i].d(1); | |
} | |
each_blocks.length = each_value.length; | |
} | |
}, | |
i: noop, | |
o: noop, | |
d: function destroy(detaching) { | |
if (detaching) detach_dev(h1); | |
if (detaching) detach_dev(t1); | |
if (detaching) detach_dev(h4); | |
if (detaching) detach_dev(t3); | |
if (detaching) detach_dev(div2); | |
destroy_each(each_blocks, detaching); | |
mounted = false; | |
run_all(dispose); | |
} | |
}; | |
dispatch_dev("SvelteRegisterBlock", { | |
block, | |
id: create_fragment$4.name, | |
type: "component", | |
source: "", | |
ctx | |
}); | |
return block; | |
} | |
function flattenStructure(items, level = 0, parentId = null, processedIds = new Set()) { | |
let result = []; | |
items.forEach(item => { | |
if (processedIds.has(item.id)) return; | |
result.push({ ...item, level, parentId }); | |
processedIds.add(item.id); | |
if (item.items && Array.isArray(item.items)) { | |
const childItems = flattenStructure(item.items, level + 1, item.id, processedIds); | |
result = result.concat(childItems); | |
} | |
}); | |
return result; | |
} | |
function instance$4($$self, $$props, $$invalidate) { | |
let { $$slots: slots = {}, $$scope } = $$props; | |
validate_slots('RecursiveNestedCommentsElement', slots, []); | |
let comments = []; | |
let newComment = ''; | |
let flattenedComments = []; | |
let replyText = {}; | |
let showReplyInput = {}; | |
const addComment = () => { | |
comments = [ | |
...comments, | |
{ | |
id: v4(), | |
title: newComment, | |
items: [] | |
} | |
]; | |
$$invalidate(0, newComment = ''); | |
$$invalidate(1, flattenedComments = flattenStructure(comments)); | |
}; | |
const addReply = (parentId, replyText) => { | |
const findAndAddReply = (items, id) => { | |
for (let item of items) { | |
if (item.id === id) { | |
item.items.push({ | |
id: v4(), | |
title: replyText, | |
items: [] | |
}); | |
return true; | |
} | |
if (item.items.length && findAndAddReply(item.items, id)) { | |
return true; | |
} | |
} | |
return false; | |
}; | |
findAndAddReply(comments, parentId); | |
$$invalidate(1, flattenedComments = flattenStructure(comments)); | |
}; | |
// Function to toggle reply input | |
function toggleReplyInput(commentId) { | |
$$invalidate(3, showReplyInput[commentId] = !showReplyInput[commentId], showReplyInput); | |
} | |
function exportToJson() { | |
const dataStr = "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(comments)); | |
const downloadAnchorNode = document.createElement('a'); | |
downloadAnchorNode.setAttribute("href", dataStr); | |
downloadAnchorNode.setAttribute("download", "comments.json"); | |
document.body.appendChild(downloadAnchorNode); | |
downloadAnchorNode.click(); | |
downloadAnchorNode.remove(); | |
} | |
function handleFileUpload(event) { | |
const file = event.target.files[0]; | |
if (!file) return; | |
const reader = new FileReader(); | |
reader.onload = e => { | |
const text = e.target.result; | |
try { | |
comments = JSON.parse(text); | |
$$invalidate(1, flattenedComments = flattenStructure(comments)); | |
} catch(error) { | |
console.error("Error parsing JSON:", error); | |
} | |
}; | |
reader.readAsText(file); | |
} | |
const writable_props = []; | |
Object.keys($$props).forEach(key => { | |
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1$2.warn(`<RecursiveNestedCommentsElement> was created with unknown prop '${key}'`); | |
}); | |
function input1_input_handler() { | |
newComment = this.value; | |
$$invalidate(0, newComment); | |
} | |
const click_handler = comment => toggleReplyInput(comment.id); | |
function input_input_handler(comment) { | |
replyText[comment.id] = this.value; | |
$$invalidate(2, replyText); | |
} | |
const click_handler_1 = comment => { | |
addReply(comment.id, replyText[comment.id]); | |
toggleReplyInput(comment.id); | |
}; | |
$$self.$capture_state = () => ({ | |
uuidv4: v4, | |
comments, | |
newComment, | |
flattenedComments, | |
replyText, | |
showReplyInput, | |
flattenStructure, | |
addComment, | |
addReply, | |
toggleReplyInput, | |
exportToJson, | |
handleFileUpload | |
}); | |
$$self.$inject_state = $$props => { | |
if ('comments' in $$props) comments = $$props.comments; | |
if ('newComment' in $$props) $$invalidate(0, newComment = $$props.newComment); | |
if ('flattenedComments' in $$props) $$invalidate(1, flattenedComments = $$props.flattenedComments); | |
if ('replyText' in $$props) $$invalidate(2, replyText = $$props.replyText); | |
if ('showReplyInput' in $$props) $$invalidate(3, showReplyInput = $$props.showReplyInput); | |
}; | |
if ($$props && "$$inject" in $$props) { | |
$$self.$inject_state($$props.$$inject); | |
} | |
return [ | |
newComment, | |
flattenedComments, | |
replyText, | |
showReplyInput, | |
addComment, | |
addReply, | |
toggleReplyInput, | |
exportToJson, | |
handleFileUpload, | |
input1_input_handler, | |
click_handler, | |
input_input_handler, | |
click_handler_1 | |
]; | |
} | |
class RecursiveNestedCommentsElement extends SvelteComponentDev { | |
constructor(options) { | |
super(options); | |
init(this, options, instance$4, create_fragment$4, safe_not_equal, {}); | |
dispatch_dev("SvelteRegisterComponent", { | |
component: this, | |
tagName: "RecursiveNestedCommentsElement", | |
options, | |
id: create_fragment$4.name | |
}); | |
} | |
} | |
/* src\CopyandRemoveListComponent.svelte generated by Svelte v3.59.2 */ | |
const { console: console_1$1 } = globals; | |
const file$3 = "src\\CopyandRemoveListComponent.svelte"; | |
function get_each_context$1(ctx, list, i) { | |
const child_ctx = ctx.slice(); | |
child_ctx[6] = list[i]; | |
return child_ctx; | |
} | |
// (26:0) {:else} | |
function create_else_block(ctx) { | |
let each_blocks = []; | |
let each_1_lookup = new Map(); | |
let each_1_anchor; | |
let each_value = /*items*/ ctx[1]; | |
validate_each_argument(each_value); | |
const get_key = ctx => /*item*/ ctx[6].id; | |
validate_each_keys(ctx, each_value, get_each_context$1, get_key); | |
for (let i = 0; i < each_value.length; i += 1) { | |
let child_ctx = get_each_context$1(ctx, each_value, i); | |
let key = get_key(child_ctx); | |
each_1_lookup.set(key, each_blocks[i] = create_each_block$1(key, child_ctx)); | |
} | |
const block = { | |
c: function create() { | |
for (let i = 0; i < each_blocks.length; i += 1) { | |
each_blocks[i].c(); | |
} | |
each_1_anchor = empty(); | |
}, | |
m: function mount(target, anchor) { | |
for (let i = 0; i < each_blocks.length; i += 1) { | |
if (each_blocks[i]) { | |
each_blocks[i].m(target, anchor); | |
} | |
} | |
insert_dev(target, each_1_anchor, anchor); | |
}, | |
p: function update(ctx, dirty) { | |
if (dirty & /*copyAndRemoveItem, items*/ 10) { | |
each_value = /*items*/ ctx[1]; | |
validate_each_argument(each_value); | |
validate_each_keys(ctx, each_value, get_each_context$1, get_key); | |
each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx, each_value, each_1_lookup, each_1_anchor.parentNode, destroy_block, create_each_block$1, each_1_anchor, get_each_context$1); | |
} | |
}, | |
d: function destroy(detaching) { | |
for (let i = 0; i < each_blocks.length; i += 1) { | |
each_blocks[i].d(detaching); | |
} | |
if (detaching) detach_dev(each_1_anchor); | |
} | |
}; | |
dispatch_dev("SvelteRegisterBlock", { | |
block, | |
id: create_else_block.name, | |
type: "else", | |
source: "(26:0) {:else}", | |
ctx | |
}); | |
return block; | |
} | |
// (24:0) {#if items.length === 0} | |
function create_if_block$1(ctx) { | |
let p; | |
const block = { | |
c: function create() { | |
p = element("p"); | |
p.textContent = "All items have been copied! (or none entered yet)"; | |
add_location(p, file$3, 24, 4, 732); | |
}, | |
m: function mount(target, anchor) { | |
insert_dev(target, p, anchor); | |
}, | |
p: noop, | |
d: function destroy(detaching) { | |
if (detaching) detach_dev(p); | |
} | |
}; | |
dispatch_dev("SvelteRegisterBlock", { | |
block, | |
id: create_if_block$1.name, | |
type: "if", | |
source: "(24:0) {#if items.length === 0}", | |
ctx | |
}); | |
return block; | |
} | |
// (27:4) {#each items as item (item.id)} | |
function create_each_block$1(key_1, ctx) { | |
let button; | |
let t0_value = /*item*/ ctx[6].text + ""; | |
let t0; | |
let t1; | |
let mounted; | |
let dispose; | |
function click_handler() { | |
return /*click_handler*/ ctx[5](/*item*/ ctx[6]); | |
} | |
const block = { | |
key: key_1, | |
first: null, | |
c: function create() { | |
button = element("button"); | |
t0 = text(t0_value); | |
t1 = space(); | |
attr_dev(button, "class", "item svelte-bmbf24"); | |
add_location(button, file$3, 27, 8, 844); | |
this.first = button; | |
}, | |
m: function mount(target, anchor) { | |
insert_dev(target, button, anchor); | |
append_dev(button, t0); | |
append_dev(button, t1); | |
if (!mounted) { | |
dispose = listen_dev(button, "click", click_handler, false, false, false, false); | |
mounted = true; | |
} | |
}, | |
p: function update(new_ctx, dirty) { | |
ctx = new_ctx; | |
if (dirty & /*items*/ 2 && t0_value !== (t0_value = /*item*/ ctx[6].text + "")) set_data_dev(t0, t0_value); | |
}, | |
d: function destroy(detaching) { | |
if (detaching) detach_dev(button); | |
mounted = false; | |
dispose(); | |
} | |
}; | |
dispatch_dev("SvelteRegisterBlock", { | |
block, | |
id: create_each_block$1.name, | |
type: "each", | |
source: "(27:4) {#each items as item (item.id)}", | |
ctx | |
}); | |
return block; | |
} | |
function create_fragment$3(ctx) { | |
let h1; | |
let t1; | |
let textarea; | |
let t2; | |
let if_block_anchor; | |
let mounted; | |
let dispose; | |
function select_block_type(ctx, dirty) { | |
if (/*items*/ ctx[1].length === 0) return create_if_block$1; | |
return create_else_block; | |
} | |
let current_block_type = select_block_type(ctx); | |
let if_block = current_block_type(ctx); | |
const block = { | |
c: function create() { | |
h1 = element("h1"); | |
h1.textContent = "Copy items for prompts by clicking buttons below"; | |
t1 = space(); | |
textarea = element("textarea"); | |
t2 = space(); | |
if_block.c(); | |
if_block_anchor = empty(); | |
add_location(h1, file$3, 19, 0, 537); | |
attr_dev(textarea, "placeholder", "Enter text here..."); | |
attr_dev(textarea, "class", "svelte-bmbf24"); | |
add_location(textarea, file$3, 21, 0, 598); | |
}, | |
l: function claim(nodes) { | |
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); | |
}, | |
m: function mount(target, anchor) { | |
insert_dev(target, h1, anchor); | |
insert_dev(target, t1, anchor); | |
insert_dev(target, textarea, anchor); | |
set_input_value(textarea, /*textInput*/ ctx[0]); | |
insert_dev(target, t2, anchor); | |
if_block.m(target, anchor); | |
insert_dev(target, if_block_anchor, anchor); | |
if (!mounted) { | |
dispose = [ | |
listen_dev(textarea, "input", /*textarea_input_handler*/ ctx[4]), | |
listen_dev(textarea, "input", /*updateItems*/ ctx[2], false, false, false, false) | |
]; | |
mounted = true; | |
} | |
}, | |
p: function update(ctx, [dirty]) { | |
if (dirty & /*textInput*/ 1) { | |
set_input_value(textarea, /*textInput*/ ctx[0]); | |
} | |
if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) { | |
if_block.p(ctx, dirty); | |
} else { | |
if_block.d(1); | |
if_block = current_block_type(ctx); | |
if (if_block) { | |
if_block.c(); | |
if_block.m(if_block_anchor.parentNode, if_block_anchor); | |
} | |
} | |
}, | |
i: noop, | |
o: noop, | |
d: function destroy(detaching) { | |
if (detaching) detach_dev(h1); | |
if (detaching) detach_dev(t1); | |
if (detaching) detach_dev(textarea); | |
if (detaching) detach_dev(t2); | |
if_block.d(detaching); | |
if (detaching) detach_dev(if_block_anchor); | |
mounted = false; | |
run_all(dispose); | |
} | |
}; | |
dispatch_dev("SvelteRegisterBlock", { | |
block, | |
id: create_fragment$3.name, | |
type: "component", | |
source: "", | |
ctx | |
}); | |
return block; | |
} | |
function instance$3($$self, $$props, $$invalidate) { | |
let { $$slots: slots = {}, $$scope } = $$props; | |
validate_slots('CopyandRemoveListComponent', slots, []); | |
let textInput = ''; | |
let items = []; | |
function updateItems() { | |
$$invalidate(1, items = textInput.split('\n').filter(line => line.trim() !== '').map((line, index) => ({ id: index + line, text: line }))); | |
} | |
async function copyAndRemoveItem(item) { | |
try { | |
await navigator.clipboard.writeText(item.text); | |
$$invalidate(1, items = items.filter(i => i.id !== item.id)); | |
} catch(err) { | |
console.error('Failed to copy text: ', err); | |
} | |
} | |
const writable_props = []; | |
Object.keys($$props).forEach(key => { | |
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1$1.warn(`<CopyandRemoveListComponent> was created with unknown prop '${key}'`); | |
}); | |
function textarea_input_handler() { | |
textInput = this.value; | |
$$invalidate(0, textInput); | |
} | |
const click_handler = item => copyAndRemoveItem(item); | |
$$self.$capture_state = () => ({ | |
textInput, | |
items, | |
updateItems, | |
copyAndRemoveItem | |
}); | |
$$self.$inject_state = $$props => { | |
if ('textInput' in $$props) $$invalidate(0, textInput = $$props.textInput); | |
if ('items' in $$props) $$invalidate(1, items = $$props.items); | |
}; | |
if ($$props && "$$inject" in $$props) { | |
$$self.$inject_state($$props.$$inject); | |
} | |
return [ | |
textInput, | |
items, | |
updateItems, | |
copyAndRemoveItem, | |
textarea_input_handler, | |
click_handler | |
]; | |
} | |
class CopyandRemoveListComponent extends SvelteComponentDev { | |
constructor(options) { | |
super(options); | |
init(this, options, instance$3, create_fragment$3, safe_not_equal, {}); | |
dispatch_dev("SvelteRegisterComponent", { | |
component: this, | |
tagName: "CopyandRemoveListComponent", | |
options, | |
id: create_fragment$3.name | |
}); | |
} | |
} | |
/* src\ReadingStateCounter.svelte generated by Svelte v3.59.2 */ | |
const file$2 = "src\\ReadingStateCounter.svelte"; | |
function get_each_context(ctx, list, i) { | |
const child_ctx = ctx.slice(); | |
child_ctx[8] = list[i]; | |
child_ctx[10] = i; | |
return child_ctx; | |
} | |
// (66:4) {#each words as wordObj, index (wordObj.word)} | |
function create_each_block(key_1, ctx) { | |
let button; | |
let t0_value = /*wordObj*/ ctx[8].word + ""; | |
let t0; | |
let t1; | |
let t2_value = /*wordObj*/ ctx[8].count + ""; | |
let t2; | |
let t3; | |
let mounted; | |
let dispose; | |
function click_handler() { | |
return /*click_handler*/ ctx[7](/*index*/ ctx[10]); | |
} | |
const block = { | |
key: key_1, | |
first: null, | |
c: function create() { | |
button = element("button"); | |
t0 = text(t0_value); | |
t1 = text(" ("); | |
t2 = text(t2_value); | |
t3 = text(")\r\n "); | |
attr_dev(button, "class", "word-button svelte-13vjncp"); | |
set_style(button, "background-color", getColor(/*wordObj*/ ctx[8].count)); | |
add_location(button, file$2, 66, 8, 1940); | |
this.first = button; | |
}, | |
m: function mount(target, anchor) { | |
insert_dev(target, button, anchor); | |
append_dev(button, t0); | |
append_dev(button, t1); | |
append_dev(button, t2); | |
append_dev(button, t3); | |
if (!mounted) { | |
dispose = listen_dev(button, "click", click_handler, false, false, false, false); | |
mounted = true; | |
} | |
}, | |
p: function update(new_ctx, dirty) { | |
ctx = new_ctx; | |
if (dirty & /*words*/ 2 && t0_value !== (t0_value = /*wordObj*/ ctx[8].word + "")) set_data_dev(t0, t0_value); | |
if (dirty & /*words*/ 2 && t2_value !== (t2_value = /*wordObj*/ ctx[8].count + "")) set_data_dev(t2, t2_value); | |
if (dirty & /*words*/ 2) { | |
set_style(button, "background-color", getColor(/*wordObj*/ ctx[8].count)); | |
} | |
}, | |
d: function destroy(detaching) { | |
if (detaching) detach_dev(button); | |
mounted = false; | |
dispose(); | |
} | |
}; | |
dispatch_dev("SvelteRegisterBlock", { | |
block, | |
id: create_each_block.name, | |
type: "each", | |
source: "(66:4) {#each words as wordObj, index (wordObj.word)}", | |
ctx | |
}); | |
return block; | |
} | |
function create_fragment$2(ctx) { | |
let div0; | |
let h1; | |
let t1; | |
let input0; | |
let t2; | |
let button0; | |
let t4; | |
let button1; | |
let t6; | |
let input1; | |
let t7; | |
let div1; | |
let each_blocks = []; | |
let each_1_lookup = new Map(); | |
let mounted; | |
let dispose; | |
let each_value = /*words*/ ctx[1]; | |
validate_each_argument(each_value); | |
const get_key = ctx => /*wordObj*/ ctx[8].word; | |
validate_each_keys(ctx, each_value, get_each_context, get_key); | |
for (let i = 0; i < each_value.length; i += 1) { | |
let child_ctx = get_each_context(ctx, each_value, i); | |
let key = get_key(child_ctx); | |
each_1_lookup.set(key, each_blocks[i] = create_each_block(key, child_ctx)); | |
} | |
const block = { | |
c: function create() { | |
div0 = element("div"); | |
h1 = element("h1"); | |
h1.textContent = "Stateful Reader Brainstorm"; | |
t1 = space(); | |
input0 = element("input"); | |
t2 = space(); | |
button0 = element("button"); | |
button0.textContent = "Submit Text"; | |
t4 = space(); | |
button1 = element("button"); | |
button1.textContent = "Export to JSON"; | |
t6 = space(); | |
input1 = element("input"); | |
t7 = space(); | |
div1 = element("div"); | |
for (let i = 0; i < each_blocks.length; i += 1) { | |
each_blocks[i].c(); | |
} | |
add_location(h1, file$2, 57, 4, 1576); | |
attr_dev(input0, "type", "text"); | |
attr_dev(input0, "placeholder", "Enter text here"); | |
attr_dev(input0, "class", "svelte-13vjncp"); | |
add_location(input0, file$2, 58, 4, 1617); | |
attr_dev(button0, "class", "svelte-13vjncp"); | |
add_location(button0, file$2, 59, 4, 1696); | |
attr_dev(button1, "class", "svelte-13vjncp"); | |
add_location(button1, file$2, 60, 4, 1752); | |
attr_dev(input1, "type", "file"); | |
attr_dev(input1, "class", "svelte-13vjncp"); | |
add_location(input1, file$2, 61, 4, 1813); | |
add_location(div0, file$2, 56, 0, 1565); | |
add_location(div1, file$2, 64, 0, 1873); | |
}, | |
l: function claim(nodes) { | |
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); | |
}, | |
m: function mount(target, anchor) { | |
insert_dev(target, div0, anchor); | |
append_dev(div0, h1); | |
append_dev(div0, t1); | |
append_dev(div0, input0); | |
set_input_value(input0, /*inputText*/ ctx[0]); | |
append_dev(div0, t2); | |
append_dev(div0, button0); | |
append_dev(div0, t4); | |
append_dev(div0, button1); | |
append_dev(div0, t6); | |
append_dev(div0, input1); | |
insert_dev(target, t7, anchor); | |
insert_dev(target, div1, anchor); | |
for (let i = 0; i < each_blocks.length; i += 1) { | |
if (each_blocks[i]) { | |
each_blocks[i].m(div1, null); | |
} | |
} | |
if (!mounted) { | |
dispose = [ | |
listen_dev(input0, "input", /*input0_input_handler*/ ctx[6]), | |
listen_dev(button0, "click", /*submitText*/ ctx[2], false, false, false, false), | |
listen_dev(button1, "click", /*exportToJson*/ ctx[4], false, false, false, false), | |
listen_dev(input1, "change", /*importFromJson*/ ctx[5], false, false, false, false) | |
]; | |
mounted = true; | |
} | |
}, | |
p: function update(ctx, [dirty]) { | |
if (dirty & /*inputText*/ 1 && input0.value !== /*inputText*/ ctx[0]) { | |
set_input_value(input0, /*inputText*/ ctx[0]); | |
} | |
if (dirty & /*getColor, words, handleClick*/ 10) { | |
each_value = /*words*/ ctx[1]; | |
validate_each_argument(each_value); | |
validate_each_keys(ctx, each_value, get_each_context, get_key); | |
each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx, each_value, each_1_lookup, div1, destroy_block, create_each_block, null, get_each_context); | |
} | |
}, | |
i: noop, | |
o: noop, | |
d: function destroy(detaching) { | |
if (detaching) detach_dev(div0); | |
if (detaching) detach_dev(t7); | |
if (detaching) detach_dev(div1); | |
for (let i = 0; i < each_blocks.length; i += 1) { | |
each_blocks[i].d(); | |
} | |
mounted = false; | |
run_all(dispose); | |
} | |
}; | |
dispatch_dev("SvelteRegisterBlock", { | |
block, | |
id: create_fragment$2.name, | |
type: "component", | |
source: "", | |
ctx | |
}); | |
return block; | |
} | |
function getColor(count) { | |
const colors = [ | |
'#1a1a1a', | |
'#333333', | |
'#4d4d4d', | |
'#666666', | |
'#808080', | |
'#999999', | |
'#b3b3b3', | |
'#cccccc', | |
'#e6e6e6', | |
'#ffffff' | |
]; | |
return colors[Math.min(Math.floor(count / 10), 9)]; | |
} | |
function instance$2($$self, $$props, $$invalidate) { | |
let { $$slots: slots = {}, $$scope } = $$props; | |
validate_slots('ReadingStateCounter', slots, []); | |
let inputText = ""; | |
let words = []; | |
function submitText() { | |
$$invalidate(1, words = inputText.split(/\s+/).map(word => ({ word, count: 0 }))); | |
} | |
function handleClick(index) { | |
$$invalidate(1, words[index].count += 1, words); | |
$$invalidate(1, words = [...words]); // Ensures Svelte detects the change | |
} | |
// Function to export data to JSON | |
function exportToJson() { | |
const jsonData = JSON.stringify(words); | |
const blob = new Blob([jsonData], { type: "application/json" }); | |
const url = URL.createObjectURL(blob); | |
const a = document.createElement('a'); | |
a.href = url; | |
a.download = 'statefulwords.json'; | |
a.click(); | |
URL.revokeObjectURL(url); | |
} | |
// Function to handle file import | |
function importFromJson(event) { | |
const file = event.target.files[0]; | |
if (file) { | |
const reader = new FileReader(); | |
reader.onload = e => { | |
const json = e.target.result; | |
$$invalidate(1, words = JSON.parse(json)); | |
}; | |
reader.readAsText(file); | |
} | |
} | |
const writable_props = []; | |
Object.keys($$props).forEach(key => { | |
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(`<ReadingStateCounter> was created with unknown prop '${key}'`); | |
}); | |
function input0_input_handler() { | |
inputText = this.value; | |
$$invalidate(0, inputText); | |
} | |
const click_handler = index => handleClick(index); | |
$$self.$capture_state = () => ({ | |
inputText, | |
words, | |
submitText, | |
handleClick, | |
getColor, | |
exportToJson, | |
importFromJson | |
}); | |
$$self.$inject_state = $$props => { | |
if ('inputText' in $$props) $$invalidate(0, inputText = $$props.inputText); | |
if ('words' in $$props) $$invalidate(1, words = $$props.words); | |
}; | |
if ($$props && "$$inject" in $$props) { | |
$$self.$inject_state($$props.$$inject); | |
} | |
return [ | |
inputText, | |
words, | |
submitText, | |
handleClick, | |
exportToJson, | |
importFromJson, | |
input0_input_handler, | |
click_handler | |
]; | |
} | |
class ReadingStateCounter extends SvelteComponentDev { | |
constructor(options) { | |
super(options); | |
init(this, options, instance$2, create_fragment$2, safe_not_equal, {}); | |
dispatch_dev("SvelteRegisterComponent", { | |
component: this, | |
tagName: "ReadingStateCounter", | |
options, | |
id: create_fragment$2.name | |
}); | |
} | |
} | |
/* src\DeliberateSubconciousRepititionPractice.svelte generated by Svelte v3.59.2 */ | |
const { Object: Object_1, console: console_1 } = globals; | |
const file$1 = "src\\DeliberateSubconciousRepititionPractice.svelte"; | |
// (156:0) {#if selectedItem} | |
function create_if_block_1(ctx) { | |
let div; | |
let strong0; | |
let t1; | |
let t2_value = /*selectedItem*/ ctx[1].text + ""; | |
let t2; | |
let t3; | |
let strong1; | |
let t5; | |
let t6_value = /*counts*/ ctx[2][/*selectedItem*/ ctx[1].id] + ""; | |
let t6; | |
const block = { | |
c: function create() { | |
div = element("div"); | |
strong0 = element("strong"); | |
strong0.textContent = "Current Word:"; | |
t1 = space(); | |
t2 = text(t2_value); | |
t3 = space(); | |
strong1 = element("strong"); | |
strong1.textContent = "Count:"; | |
t5 = space(); | |
t6 = text(t6_value); | |
add_location(strong0, file$1, 157, 8, 5744); | |
add_location(strong1, file$1, 158, 8, 5805); | |
add_location(div, file$1, 156, 4, 5729); | |
}, | |
m: function mount(target, anchor) { | |
insert_dev(target, div, anchor); | |
append_dev(div, strong0); | |
append_dev(div, t1); | |
append_dev(div, t2); | |
append_dev(div, t3); | |
append_dev(div, strong1); | |
append_dev(div, t5); | |
append_dev(div, t6); | |
}, | |
p: function update(ctx, dirty) { | |
if (dirty & /*selectedItem*/ 2 && t2_value !== (t2_value = /*selectedItem*/ ctx[1].text + "")) set_data_dev(t2, t2_value); | |
if (dirty & /*counts, selectedItem*/ 6 && t6_value !== (t6_value = /*counts*/ ctx[2][/*selectedItem*/ ctx[1].id] + "")) set_data_dev(t6, t6_value); | |
}, | |
d: function destroy(detaching) { | |
if (detaching) detach_dev(div); | |
} | |
}; | |
dispatch_dev("SvelteRegisterBlock", { | |
block, | |
id: create_if_block_1.name, | |
type: "if", | |
source: "(156:0) {#if selectedItem}", | |
ctx | |
}); | |
return block; | |
} | |
// (163:0) {#if allWordsLimitReached} | |
function create_if_block(ctx) { | |
let div; | |
const block = { | |
c: function create() { | |
div = element("div"); | |
div.textContent = "All words have reached the count limit."; | |
attr_dev(div, "class", "alert svelte-fb2ql8"); | |
add_location(div, file$1, 163, 4, 5910); | |
}, | |
m: function mount(target, anchor) { | |
insert_dev(target, div, anchor); | |
}, | |
d: function destroy(detaching) { | |
if (detaching) detach_dev(div); | |
} | |
}; | |
dispatch_dev("SvelteRegisterBlock", { | |
block, | |
id: create_if_block.name, | |
type: "if", | |
source: "(163:0) {#if allWordsLimitReached}", | |
ctx | |
}); | |
return block; | |
} | |
function create_fragment$1(ctx) { | |
let h1; | |
let t1; | |
let input0; | |
let t2; | |
let button0; | |
let t4; | |
let br; | |
let t5; | |
let textarea0; | |
let t6; | |
let hr0; | |
let t7; | |
let div; | |
let label; | |
let t9; | |
let input1; | |
let t10; | |
let t11; | |
let t12; | |
let button1; | |
let t14; | |
let button2; | |
let t16; | |
let hr1; | |
let t17; | |
let button3; | |
let t19; | |
let textarea1; | |
let mounted; | |
let dispose; | |
let if_block0 = /*selectedItem*/ ctx[1] && create_if_block_1(ctx); | |
let if_block1 = /*allWordsLimitReached*/ ctx[4] && create_if_block(ctx); | |
const block = { | |
c: function create() { | |
h1 = element("h1"); | |
h1.textContent = "Random Word till appearance count reached for TTS"; | |
t1 = space(); | |
input0 = element("input"); | |
t2 = space(); | |
button0 = element("button"); | |
button0.textContent = "Export Counts"; | |
t4 = space(); | |
br = element("br"); | |
t5 = space(); | |
textarea0 = element("textarea"); | |
t6 = space(); | |
hr0 = element("hr"); | |
t7 = space(); | |
div = element("div"); | |
label = element("label"); | |
label.textContent = "Total Count Limit:"; | |
t9 = space(); | |
input1 = element("input"); | |
t10 = space(); | |
if (if_block0) if_block0.c(); | |
t11 = space(); | |
if (if_block1) if_block1.c(); | |
t12 = space(); | |
button1 = element("button"); | |
button1.textContent = "Start"; | |
t14 = space(); | |
button2 = element("button"); | |
button2.textContent = "Stop"; | |
t16 = space(); | |
hr1 = element("hr"); | |
t17 = space(); | |
button3 = element("button"); | |
button3.textContent = "Simulate one hour or limit Counts"; | |
t19 = space(); | |
textarea1 = element("textarea"); | |
add_location(h1, file$1, 141, 0, 5255); | |
attr_dev(input0, "type", "file"); | |
add_location(input0, file$1, 143, 0, 5317); | |
add_location(button0, file$1, 144, 0, 5365); | |
add_location(br, file$1, 145, 0, 5421); | |
attr_dev(textarea0, "placeholder", "Enter text here..."); | |
add_location(textarea0, file$1, 146, 0, 5427); | |
add_location(hr0, file$1, 148, 0, 5531); | |
attr_dev(label, "for", "totalCountLimit"); | |
add_location(label, file$1, 151, 4, 5550); | |
attr_dev(input1, "type", "number"); | |
attr_dev(input1, "min", "1"); | |
attr_dev(input1, "id", "totalCountLimit"); | |
add_location(input1, file$1, 152, 4, 5612); | |
add_location(div, file$1, 150, 0, 5539); | |
add_location(button1, file$1, 168, 0, 6001); | |
add_location(button2, file$1, 169, 0, 6042); | |
add_location(hr1, file$1, 171, 0, 6083); | |
add_location(button3, file$1, 173, 0, 6091); | |
textarea1.readOnly = true; | |
attr_dev(textarea1, "placeholder", "Simulation result will be shown here..."); | |
add_location(textarea1, file$1, 174, 0, 6168); | |
}, | |
l: function claim(nodes) { | |
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); | |
}, | |
m: function mount(target, anchor) { | |
insert_dev(target, h1, anchor); | |
insert_dev(target, t1, anchor); | |
insert_dev(target, input0, anchor); | |
insert_dev(target, t2, anchor); | |
insert_dev(target, button0, anchor); | |
insert_dev(target, t4, anchor); | |
insert_dev(target, br, anchor); | |
insert_dev(target, t5, anchor); | |
insert_dev(target, textarea0, anchor); | |
set_input_value(textarea0, /*textInput*/ ctx[0]); | |
insert_dev(target, t6, anchor); | |
insert_dev(target, hr0, anchor); | |
insert_dev(target, t7, anchor); | |
insert_dev(target, div, anchor); | |
append_dev(div, label); | |
append_dev(div, t9); | |
append_dev(div, input1); | |
set_input_value(input1, /*totalCountLimit*/ ctx[3]); | |
insert_dev(target, t10, anchor); | |
if (if_block0) if_block0.m(target, anchor); | |
insert_dev(target, t11, anchor); | |
if (if_block1) if_block1.m(target, anchor); | |
insert_dev(target, t12, anchor); | |
insert_dev(target, button1, anchor); | |
insert_dev(target, t14, anchor); | |
insert_dev(target, button2, anchor); | |
insert_dev(target, t16, anchor); | |
insert_dev(target, hr1, anchor); | |
insert_dev(target, t17, anchor); | |
insert_dev(target, button3, anchor); | |
insert_dev(target, t19, anchor); | |
insert_dev(target, textarea1, anchor); | |
set_input_value(textarea1, /*simulationResult*/ ctx[5]); | |
if (!mounted) { | |
dispose = [ | |
listen_dev(input0, "change", /*importCounts*/ ctx[10], false, false, false, false), | |
listen_dev(button0, "click", /*exportCounts*/ ctx[9], false, false, false, false), | |
listen_dev(textarea0, "input", /*textarea0_input_handler*/ ctx[12]), | |
listen_dev(textarea0, "input", /*updateItems*/ ctx[6], false, false, false, false), | |
listen_dev(input1, "input", /*input1_input_handler*/ ctx[13]), | |
listen_dev(button1, "click", /*start*/ ctx[7], false, false, false, false), | |
listen_dev(button2, "click", /*stop*/ ctx[8], false, false, false, false), | |
listen_dev(button3, "click", /*simulateCount*/ ctx[11], false, false, false, false), | |
listen_dev(textarea1, "input", /*textarea1_input_handler*/ ctx[14]) | |
]; | |
mounted = true; | |
} | |
}, | |
p: function update(ctx, [dirty]) { | |
if (dirty & /*textInput*/ 1) { | |
set_input_value(textarea0, /*textInput*/ ctx[0]); | |
} | |
if (dirty & /*totalCountLimit*/ 8 && to_number(input1.value) !== /*totalCountLimit*/ ctx[3]) { | |
set_input_value(input1, /*totalCountLimit*/ ctx[3]); | |
} | |
if (/*selectedItem*/ ctx[1]) { | |
if (if_block0) { | |
if_block0.p(ctx, dirty); | |
} else { | |
if_block0 = create_if_block_1(ctx); | |
if_block0.c(); | |
if_block0.m(t11.parentNode, t11); | |
} | |
} else if (if_block0) { | |
if_block0.d(1); | |
if_block0 = null; | |
} | |
if (/*allWordsLimitReached*/ ctx[4]) { | |
if (if_block1) ; else { | |
if_block1 = create_if_block(ctx); | |
if_block1.c(); | |
if_block1.m(t12.parentNode, t12); | |
} | |
} else if (if_block1) { | |
if_block1.d(1); | |
if_block1 = null; | |
} | |
if (dirty & /*simulationResult*/ 32) { | |
set_input_value(textarea1, /*simulationResult*/ ctx[5]); | |
} | |
}, | |
i: noop, | |
o: noop, | |
d: function destroy(detaching) { | |
if (detaching) detach_dev(h1); | |
if (detaching) detach_dev(t1); | |
if (detaching) detach_dev(input0); | |
if (detaching) detach_dev(t2); | |
if (detaching) detach_dev(button0); | |
if (detaching) detach_dev(t4); | |
if (detaching) detach_dev(br); | |
if (detaching) detach_dev(t5); | |
if (detaching) detach_dev(textarea0); | |
if (detaching) detach_dev(t6); | |
if (detaching) detach_dev(hr0); | |
if (detaching) detach_dev(t7); | |
if (detaching) detach_dev(div); | |
if (detaching) detach_dev(t10); | |
if (if_block0) if_block0.d(detaching); | |
if (detaching) detach_dev(t11); | |
if (if_block1) if_block1.d(detaching); | |
if (detaching) detach_dev(t12); | |
if (detaching) detach_dev(button1); | |
if (detaching) detach_dev(t14); | |
if (detaching) detach_dev(button2); | |
if (detaching) detach_dev(t16); | |
if (detaching) detach_dev(hr1); | |
if (detaching) detach_dev(t17); | |
if (detaching) detach_dev(button3); | |
if (detaching) detach_dev(t19); | |
if (detaching) detach_dev(textarea1); | |
mounted = false; | |
run_all(dispose); | |
} | |
}; | |
dispatch_dev("SvelteRegisterBlock", { | |
block, | |
id: create_fragment$1.name, | |
type: "component", | |
source: "", | |
ctx | |
}); | |
return block; | |
} | |
function instance$1($$self, $$props, $$invalidate) { | |
let { $$slots: slots = {}, $$scope } = $$props; | |
validate_slots('DeliberateSubconciousRepititionPractice', slots, []); | |
let textInput = ''; | |
let items = []; | |
let running = false; | |
let selectedItem = null; | |
let intervalId = null; | |
let counts = {}; | |
let totalCountLimit = 10; // Default limit, can be changed by the user | |
let allWordsLimitReached = false; | |
let simulationResult = ''; // Variable to hold the result of the simulation | |
function updateItems() { | |
items = textInput.split(/\W+/).filter(word => word.trim() !== '').map(word => ({ id: word, text: word })); // Use word itself as the ID | |
$$invalidate(2, counts = items.reduce((acc, item) => ({ ...acc, [item.id]: 0 }), {})); | |
} | |
function start() { | |
if (!running && items.length > 0) { | |
running = true; | |
intervalId = setInterval( | |
() => { | |
// Filter out items that have reached the totalCountLimit | |
const eligibleItems = items.filter(item => counts[item.id] < totalCountLimit); | |
// If there are no eligible items left, stop the timer | |
if (eligibleItems.length === 0) { | |
stop(); | |
$$invalidate(4, allWordsLimitReached = true); // Set when all words reach the limit | |
return; | |
} | |
// Select a random item from the eligible items | |
const randomIndex = Math.floor(Math.random() * eligibleItems.length); | |
$$invalidate(1, selectedItem = eligibleItems[randomIndex]); | |
$$invalidate(2, counts[selectedItem.id]++, counts); | |
}, | |
1000 | |
); | |
} | |
} | |
function stop() { | |
if (running) { | |
clearInterval(intervalId); | |
running = false; | |
intervalId = null; | |
} | |
} | |
function exportCounts() { | |
const dataStr = JSON.stringify(counts); | |
const blob = new Blob([dataStr], { type: "application/json" }); | |
const url = URL.createObjectURL(blob); | |
const link = document.createElement("a"); | |
link.download = "counts.json"; | |
link.href = url; | |
link.click(); | |
} | |
function importCounts(event) { | |
const fileReader = new FileReader(); | |
fileReader.onload = e => { | |
const data = JSON.parse(e.target.result); | |
$$invalidate(2, counts = { ...counts, ...data }); | |
items = Object.keys(data).map((word, index) => ({ | |
id: word, // Use word itself as the ID | |
text: word | |
})); | |
// Ensure existing items are updated if they are not in the imported data | |
items.forEach(item => { | |
if (!counts[item.id]) { | |
$$invalidate(2, counts[item.id] = 0, counts); | |
} | |
}); | |
}; | |
fileReader.readAsText(event.target.files[0]); | |
} | |
// ... (other variables and functions remain unchanged) | |
function simulateCount() { | |
let simulatedTime = 0; | |
let maxSimulatedSeconds = 3600; // 3600 seconds = 1 hour | |
let simulationOutput = ""; // Accumulate output here | |
// Reset the allWordsLimitReached flag and simulationResult | |
$$invalidate(4, allWordsLimitReached = false); | |
$$invalidate(5, simulationResult = ''); | |
// Simulate until max time is reached or all words hit the limit | |
while (simulatedTime < maxSimulatedSeconds && !allWordsLimitReached) { | |
const eligibleItems = items.filter(item => counts[item.id] < totalCountLimit); | |
if (eligibleItems.length === 0) { | |
$$invalidate(4, allWordsLimitReached = true); // Set when all words reach the limit | |
break; // Exit the loop if all words hit the limit | |
} | |
// Select a random item and increment its count | |
const randomIndex = Math.floor(Math.random() * eligibleItems.length); | |
$$invalidate(1, selectedItem = eligibleItems[randomIndex]); | |
$$invalidate(2, counts[selectedItem.id]++, counts); | |
simulationOutput += selectedItem.text + " "; // Append selected word to output | |
// Increment simulated time (equivalent to the time between iterations in the real scenario) | |
simulatedTime++; | |
} | |
// Update simulationResult with a message | |
if (allWordsLimitReached) { | |
$$invalidate(5, simulationResult = "All words have reached the count limit during simulation."); | |
} else { | |
$$invalidate(5, simulationResult = `Simulation finished after ${simulatedTime} seconds.`); | |
} | |
// Export the simulation output to a text file | |
exportSimulationOutput(simulationOutput); | |
} | |
function exportSimulationOutput(output) { | |
if (output) { | |
const blob = new Blob([output], { type: "text/plain" }); | |
const url = URL.createObjectURL(blob); | |
const link = document.createElement("a"); | |
link.download = "simulation_output.txt"; | |
link.href = url; | |
link.click(); | |
} else { | |
console.error("No simulation output to export."); | |
$$invalidate(5, simulationResult = "No simulation output to export."); | |
} | |
} | |
onDestroy(() => { | |
if (intervalId) { | |
clearInterval(intervalId); | |
} | |
}); | |
const writable_props = []; | |
Object_1.keys($$props).forEach(key => { | |
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1.warn(`<DeliberateSubconciousRepititionPractice> was created with unknown prop '${key}'`); | |
}); | |
function textarea0_input_handler() { | |
textInput = this.value; | |
$$invalidate(0, textInput); | |
} | |
function input1_input_handler() { | |
totalCountLimit = to_number(this.value); | |
$$invalidate(3, totalCountLimit); | |
} | |
function textarea1_input_handler() { | |
simulationResult = this.value; | |
$$invalidate(5, simulationResult); | |
} | |
$$self.$capture_state = () => ({ | |
onDestroy, | |
textInput, | |
items, | |
running, | |
selectedItem, | |
intervalId, | |
counts, | |
totalCountLimit, | |
allWordsLimitReached, | |
simulationResult, | |
updateItems, | |
start, | |
stop, | |
exportCounts, | |
importCounts, | |
simulateCount, | |
exportSimulationOutput | |
}); | |
$$self.$inject_state = $$props => { | |
if ('textInput' in $$props) $$invalidate(0, textInput = $$props.textInput); | |
if ('items' in $$props) items = $$props.items; | |
if ('running' in $$props) running = $$props.running; | |
if ('selectedItem' in $$props) $$invalidate(1, selectedItem = $$props.selectedItem); | |
if ('intervalId' in $$props) intervalId = $$props.intervalId; | |
if ('counts' in $$props) $$invalidate(2, counts = $$props.counts); | |
if ('totalCountLimit' in $$props) $$invalidate(3, totalCountLimit = $$props.totalCountLimit); | |
if ('allWordsLimitReached' in $$props) $$invalidate(4, allWordsLimitReached = $$props.allWordsLimitReached); | |
if ('simulationResult' in $$props) $$invalidate(5, simulationResult = $$props.simulationResult); | |
}; | |
if ($$props && "$$inject" in $$props) { | |
$$self.$inject_state($$props.$$inject); | |
} | |
return [ | |
textInput, | |
selectedItem, | |
counts, | |
totalCountLimit, | |
allWordsLimitReached, | |
simulationResult, | |
updateItems, | |
start, | |
stop, | |
exportCounts, | |
importCounts, | |
simulateCount, | |
textarea0_input_handler, | |
input1_input_handler, | |
textarea1_input_handler | |
]; | |
} | |
class DeliberateSubconciousRepititionPractice extends SvelteComponentDev { | |
constructor(options) { | |
super(options); | |
init(this, options, instance$1, create_fragment$1, safe_not_equal, {}); | |
dispatch_dev("SvelteRegisterComponent", { | |
component: this, | |
tagName: "DeliberateSubconciousRepititionPractice", | |
options, | |
id: create_fragment$1.name | |
}); | |
} | |
} | |
/* src\App.svelte generated by Svelte v3.59.2 */ | |
const file = "src\\App.svelte"; | |
function create_fragment(ctx) { | |
let main; | |
let h10; | |
let t0; | |
let t1; | |
let t2; | |
let t3; | |
let p; | |
let t4; | |
let a; | |
let t6; | |
let t7; | |
let h11; | |
let t9; | |
let h30; | |
let t11; | |
let h31; | |
let t13; | |
let div0; | |
let subrepprac; | |
let t14; | |
let div1; | |
let readingstatecounter; | |
let t15; | |
let div2; | |
let copyremove; | |
let t16; | |
let nestedcommentssvelte; | |
let t17; | |
let myyoutube; | |
let t18; | |
let h12; | |
let t20; | |
let dotgame; | |
let current; | |
subrepprac = new DeliberateSubconciousRepititionPractice({ $$inline: true }); | |
readingstatecounter = new ReadingStateCounter({ $$inline: true }); | |
copyremove = new CopyandRemoveListComponent({ $$inline: true }); | |
nestedcommentssvelte = new RecursiveNestedCommentsElement({ $$inline: true }); | |
myyoutube = new YoutubeIframeAPICustomInterface({ $$inline: true }); | |
dotgame = new MovingDotSpacePortfromReact({ $$inline: true }); | |
const block = { | |
c: function create() { | |
main = element("main"); | |
h10 = element("h1"); | |
t0 = text("Hello "); | |
t1 = text(/*name*/ ctx[0]); | |
t2 = text("!"); | |
t3 = space(); | |
p = element("p"); | |
t4 = text("Visit the "); | |
a = element("a"); | |
a.textContent = "Svelte tutorial"; | |
t6 = text(" to learn how to build Svelte apps."); | |
t7 = space(); | |
h11 = element("h1"); | |
h11.textContent = "Brainstorm for Educational Interfaces to add LLM and other models into"; | |
t9 = space(); | |
h30 = element("h3"); | |
h30.textContent = "(Through Gradio and Custom Components)"; | |
t11 = space(); | |
h31 = element("h3"); | |
h31.textContent = "Gradio client Test in another space due to incompatabilitiess with default svelte and @gradio/client"; | |
t13 = space(); | |
div0 = element("div"); | |
create_component(subrepprac.$$.fragment); | |
t14 = space(); | |
div1 = element("div"); | |
create_component(readingstatecounter.$$.fragment); | |
t15 = space(); | |
div2 = element("div"); | |
create_component(copyremove.$$.fragment); | |
t16 = space(); | |
create_component(nestedcommentssvelte.$$.fragment); | |
t17 = space(); | |
create_component(myyoutube.$$.fragment); | |
t18 = space(); | |
h12 = element("h1"); | |
h12.textContent = "Themeable Game Brainstorm - Image + Lists"; | |
t20 = space(); | |
create_component(dotgame.$$.fragment); | |
attr_dev(h10, "class", "svelte-1gz1mpc"); | |
add_location(h10, file, 24, 1, 668); | |
attr_dev(a, "href", "https://svelte.dev/tutorial"); | |
add_location(a, file, 25, 14, 705); | |
add_location(p, file, 25, 1, 692); | |
attr_dev(h11, "class", "svelte-1gz1mpc"); | |
add_location(h11, file, 27, 1, 804); | |
add_location(h30, file, 28, 1, 887); | |
add_location(h31, file, 30, 1, 939); | |
attr_dev(div0, "class", "componentborder svelte-1gz1mpc"); | |
add_location(div0, file, 32, 1, 1052); | |
attr_dev(div1, "class", "componentborder svelte-1gz1mpc"); | |
add_location(div1, file, 34, 1, 1104); | |
attr_dev(div2, "class", "componentborder svelte-1gz1mpc"); | |
add_location(div2, file, 36, 1, 1166); | |
attr_dev(h12, "class", "svelte-1gz1mpc"); | |
add_location(h12, file, 43, 1, 1310); | |
attr_dev(main, "class", "svelte-1gz1mpc"); | |
add_location(main, file, 22, 0, 659); | |
}, | |
l: function claim(nodes) { | |
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); | |
}, | |
m: function mount(target, anchor) { | |
insert_dev(target, main, anchor); | |
append_dev(main, h10); | |
append_dev(h10, t0); | |
append_dev(h10, t1); | |
append_dev(h10, t2); | |
append_dev(main, t3); | |
append_dev(main, p); | |
append_dev(p, t4); | |
append_dev(p, a); | |
append_dev(p, t6); | |
append_dev(main, t7); | |
append_dev(main, h11); | |
append_dev(main, t9); | |
append_dev(main, h30); | |
append_dev(main, t11); | |
append_dev(main, h31); | |
append_dev(main, t13); | |
append_dev(main, div0); | |
mount_component(subrepprac, div0, null); | |
append_dev(main, t14); | |
append_dev(main, div1); | |
mount_component(readingstatecounter, div1, null); | |
append_dev(main, t15); | |
append_dev(main, div2); | |
mount_component(copyremove, div2, null); | |
append_dev(main, t16); | |
mount_component(nestedcommentssvelte, main, null); | |
append_dev(main, t17); | |
mount_component(myyoutube, main, null); | |
append_dev(main, t18); | |
append_dev(main, h12); | |
append_dev(main, t20); | |
mount_component(dotgame, main, null); | |
current = true; | |
}, | |
p: function update(ctx, [dirty]) { | |
if (!current || dirty & /*name*/ 1) set_data_dev(t1, /*name*/ ctx[0]); | |
}, | |
i: function intro(local) { | |
if (current) return; | |
transition_in(subrepprac.$$.fragment, local); | |
transition_in(readingstatecounter.$$.fragment, local); | |
transition_in(copyremove.$$.fragment, local); | |
transition_in(nestedcommentssvelte.$$.fragment, local); | |
transition_in(myyoutube.$$.fragment, local); | |
transition_in(dotgame.$$.fragment, local); | |
current = true; | |
}, | |
o: function outro(local) { | |
transition_out(subrepprac.$$.fragment, local); | |
transition_out(readingstatecounter.$$.fragment, local); | |
transition_out(copyremove.$$.fragment, local); | |
transition_out(nestedcommentssvelte.$$.fragment, local); | |
transition_out(myyoutube.$$.fragment, local); | |
transition_out(dotgame.$$.fragment, local); | |
current = false; | |
}, | |
d: function destroy(detaching) { | |
if (detaching) detach_dev(main); | |
destroy_component(subrepprac); | |
destroy_component(readingstatecounter); | |
destroy_component(copyremove); | |
destroy_component(nestedcommentssvelte); | |
destroy_component(myyoutube); | |
destroy_component(dotgame); | |
} | |
}; | |
dispatch_dev("SvelteRegisterBlock", { | |
block, | |
id: create_fragment.name, | |
type: "component", | |
source: "", | |
ctx | |
}); | |
return block; | |
} | |
function instance($$self, $$props, $$invalidate) { | |
let { $$slots: slots = {}, $$scope } = $$props; | |
validate_slots('App', slots, []); | |
let { name } = $$props; | |
let showModal = false; | |
function openModal() { | |
showModal = true; | |
} | |
function closeModal() { | |
showModal = false; | |
} | |
$$self.$$.on_mount.push(function () { | |
if (name === undefined && !('name' in $$props || $$self.$$.bound[$$self.$$.props['name']])) { | |
console.warn("<App> was created without expected prop 'name'"); | |
} | |
}); | |
const writable_props = ['name']; | |
Object.keys($$props).forEach(key => { | |
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(`<App> was created with unknown prop '${key}'`); | |
}); | |
$$self.$$set = $$props => { | |
if ('name' in $$props) $$invalidate(0, name = $$props.name); | |
}; | |
$$self.$capture_state = () => ({ | |
name, | |
VideoGradioComponentBrainstorming, | |
DotGame: MovingDotSpacePortfromReact, | |
MyYoutube: YoutubeIframeAPICustomInterface, | |
NestedCommentsSvelte: RecursiveNestedCommentsElement, | |
CopyRemove: CopyandRemoveListComponent, | |
ReadingStateCounter, | |
SubRepPrac: DeliberateSubconciousRepititionPractice, | |
showModal, | |
openModal, | |
closeModal | |
}); | |
$$self.$inject_state = $$props => { | |
if ('name' in $$props) $$invalidate(0, name = $$props.name); | |
if ('showModal' in $$props) showModal = $$props.showModal; | |
}; | |
if ($$props && "$$inject" in $$props) { | |
$$self.$inject_state($$props.$$inject); | |
} | |
return [name]; | |
} | |
class App extends SvelteComponentDev { | |
constructor(options) { | |
super(options); | |
init(this, options, instance, create_fragment, safe_not_equal, { name: 0 }); | |
dispatch_dev("SvelteRegisterComponent", { | |
component: this, | |
tagName: "App", | |
options, | |
id: create_fragment.name | |
}); | |
} | |
get name() { | |
throw new Error("<App>: Props cannot be read directly from the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'"); | |
} | |
set name(value) { | |
throw new Error("<App>: Props cannot be set directly on the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'"); | |
} | |
} | |
const app = new App({ | |
target: document.body, | |
props: { | |
name: 'world' | |
} | |
}); | |
return app; | |
})(); | |
//# sourceMappingURL=bundle.js.map | |