diff --git "a/bundle.js" "b/bundle.js" --- "a/bundle.js" +++ "b/bundle.js" @@ -138,6 +138,9 @@ var app = (function () { const selected_option = select.querySelector(':checked'); return selected_option && selected_option.__value; } + function toggle_class(element, name, toggle) { + element.classList[toggle ? 'add' : 'remove'](name); + } function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) { const e = document.createEvent('CustomEvent'); e.initCustomEvent(type, bubbles, cancelable, detail); @@ -670,17 +673,17 @@ var app = (function () { /* src\VideoGradioComponentBrainstorming.svelte generated by Svelte v3.59.2 */ - const { console: console_1$6 } = globals; - const file$d = "src\\VideoGradioComponentBrainstorming.svelte"; + const { console: console_1$7 } = globals; + const file$h = "src\\VideoGradioComponentBrainstorming.svelte"; - function get_each_context$6(ctx, list, i) { + function get_each_context$a(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) { + function create_each_block$a(ctx) { let option; let t_value = /*option*/ ctx[15] + ""; let t; @@ -691,7 +694,7 @@ var app = (function () { t = text(t_value); option.__value = /*option*/ ctx[15]; option.value = option.__value; - add_location(option, file$d, 85, 6, 2561); + add_location(option, file$h, 85, 6, 2561); }, m: function mount(target, anchor) { insert_dev(target, option, anchor); @@ -705,7 +708,7 @@ var app = (function () { dispatch_dev("SvelteRegisterBlock", { block, - id: create_each_block$6.name, + id: create_each_block$a.name, type: "each", source: "(85:4) {#each kitchenOptions as option}", ctx @@ -714,7 +717,7 @@ var app = (function () { return block; } - function create_fragment$d(ctx) { + function create_fragment$h(ctx) { let h1; let t1; let div1; @@ -741,7 +744,7 @@ var app = (function () { 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)); + each_blocks[i] = create_each_block$a(get_each_context$a(ctx, each_value, i)); } const block = { @@ -771,34 +774,34 @@ var app = (function () { each_blocks[i].c(); } - add_location(h1, file$d, 66, 0, 1800); + add_location(h1, file$h, 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$d, 72, 4, 2006); + add_location(track, file$h, 72, 4, 2006); attr_dev(video, "id", "videoCanvas"); video.autoplay = true; attr_dev(video, "class", "svelte-ufd3fo"); - add_location(video, file$d, 70, 2, 1965); + add_location(video, file$h, 70, 2, 1965); attr_dev(div0, "id", "overlayText"); attr_dev(div0, "class", "svelte-ufd3fo"); - add_location(div0, file$d, 74, 2, 2111); + add_location(div0, file$h, 74, 2, 2111); attr_dev(div1, "id", "videoContainer"); attr_dev(div1, "class", "svelte-ufd3fo"); - add_location(div1, file$d, 68, 0, 1911); + add_location(div1, file$h, 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$d, 77, 0, 2186); + add_location(canvas_1, file$h, 77, 0, 2186); attr_dev(input, "type", "text"); - add_location(input, file$d, 78, 0, 2294); - add_location(button, file$d, 82, 2, 2429); + add_location(input, file$h, 78, 0, 2294); + add_location(button, file$h, 82, 2, 2429); if (/*selectedOption*/ ctx[0] === void 0) add_render_callback(() => /*select_change_handler*/ ctx[9].call(select)); - add_location(select, file$d, 83, 2, 2479); + add_location(select, file$h, 83, 2, 2479); attr_dev(div2, "id", "frameForButtons"); - add_location(div2, file$d, 81, 0, 2399); + add_location(div2, file$h, 81, 0, 2399); }, l: function claim(nodes) { throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); @@ -857,12 +860,12 @@ var app = (function () { let i; for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context$6(ctx, each_value, i); + const child_ctx = get_each_context$a(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] = create_each_block$a(child_ctx); each_blocks[i].c(); each_blocks[i].m(select, null); } @@ -900,7 +903,7 @@ var app = (function () { dispatch_dev("SvelteRegisterBlock", { block, - id: create_fragment$d.name, + id: create_fragment$h.name, type: "component", source: "", ctx @@ -913,7 +916,7 @@ var app = (function () { } // Logic for 'Test OCR' button - function instance$d($$self, $$props, $$invalidate) { + function instance$h($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; validate_slots('VideoGradioComponentBrainstorming', slots, []); let selectedOption = 'Stove - lu'; // default value @@ -975,7 +978,7 @@ var app = (function () { const writable_props = []; Object.keys($$props).forEach(key => { - if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1$6.warn(` was created with unknown prop '${key}'`); + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1$7.warn(` was created with unknown prop '${key}'`); }); function canvas_1_binding($$value) { @@ -1046,13 +1049,13 @@ var app = (function () { class VideoGradioComponentBrainstorming extends SvelteComponentDev { constructor(options) { super(options); - init(this, options, instance$d, create_fragment$d, safe_not_equal, {}); + init(this, options, instance$h, create_fragment$h, safe_not_equal, {}); dispatch_dev("SvelteRegisterComponent", { component: this, tagName: "VideoGradioComponentBrainstorming", options, - id: create_fragment$d.name + id: create_fragment$h.name }); } } @@ -1106,9 +1109,9 @@ var app = (function () { } /* src\MovingDotPortfromReact.svelte generated by Svelte v3.59.2 */ - const file$c = "src\\MovingDotPortfromReact.svelte"; + const file$g = "src\\MovingDotPortfromReact.svelte"; - function create_fragment$c(ctx) { + function create_fragment$g(ctx) { let button; const block = { @@ -1118,7 +1121,7 @@ var app = (function () { 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$c, 48, 0, 1573); + add_location(button, file$g, 48, 0, 1573); }, l: function claim(nodes) { throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); @@ -1146,7 +1149,7 @@ var app = (function () { dispatch_dev("SvelteRegisterBlock", { block, - id: create_fragment$c.name, + id: create_fragment$g.name, type: "component", source: "", ctx @@ -1157,7 +1160,7 @@ var app = (function () { const step = 10; - function instance$c($$self, $$props, $$invalidate) { + function instance$g($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; validate_slots('MovingDotPortfromReact', slots, []); let { position = { x: 0, y: 0 } } = $$props; @@ -1262,13 +1265,13 @@ var app = (function () { class MovingDotPortfromReact extends SvelteComponentDev { constructor(options) { super(options); - init(this, options, instance$c, create_fragment$c, safe_not_equal, { position: 0, boundaries: 2, focusDot: 3 }); + init(this, options, instance$g, create_fragment$g, safe_not_equal, { position: 0, boundaries: 2, focusDot: 3 }); dispatch_dev("SvelteRegisterComponent", { component: this, tagName: "MovingDotPortfromReact", options, - id: create_fragment$c.name + id: create_fragment$g.name }); } @@ -1299,9 +1302,9 @@ var app = (function () { /* src\MovingDotTargetPortfromReact.svelte generated by Svelte v3.59.2 */ - const file$b = "src\\MovingDotTargetPortfromReact.svelte"; + const file$f = "src\\MovingDotTargetPortfromReact.svelte"; - function create_fragment$b(ctx) { + function create_fragment$f(ctx) { let div; const block = { @@ -1310,7 +1313,7 @@ var app = (function () { 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$b, 4, 0, 49); + add_location(div, file$f, 4, 0, 49); }, l: function claim(nodes) { throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); @@ -1336,7 +1339,7 @@ var app = (function () { dispatch_dev("SvelteRegisterBlock", { block, - id: create_fragment$b.name, + id: create_fragment$f.name, type: "component", source: "", ctx @@ -1345,7 +1348,7 @@ var app = (function () { return block; } - function instance$b($$self, $$props, $$invalidate) { + function instance$f($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; validate_slots('MovingDotTargetPortfromReact', slots, []); let { position } = $$props; @@ -1382,13 +1385,13 @@ var app = (function () { class MovingDotTargetPortfromReact extends SvelteComponentDev { constructor(options) { super(options); - init(this, options, instance$b, create_fragment$b, safe_not_equal, { position: 0 }); + init(this, options, instance$f, create_fragment$f, safe_not_equal, { position: 0 }); dispatch_dev("SvelteRegisterComponent", { component: this, tagName: "MovingDotTargetPortfromReact", options, - id: create_fragment$b.name + id: create_fragment$f.name }); } @@ -1425,7 +1428,7 @@ var app = (function () { }); } - const inventory = writable([ + const inventory$1 = writable([ // Sample inventory items { type: "weapon", name: "Sword", description: "A sharp blade." }, { type: "armor", name: "Shield", description: "Protects against attacks." }, @@ -1433,7 +1436,7 @@ var app = (function () { // Add more items as needed ]); - const skills = writable([ + const skills$1 = writable([ // Sample skills { branch: "Combat", name: "Basic Attack", learned: false }, { branch: "Magic", name: "Fireball", learned: false }, @@ -1477,7 +1480,7 @@ var app = (function () { ]); function addInventoryItem(item) { - inventory.update(items => { + inventory$1.update(items => { return [...items, item]; }); } @@ -1487,7 +1490,7 @@ var app = (function () { const themeActions = { //Editing this schema affects the change theme function in MovingDotSpace and MovingDotModal handleitemclick and the default theme in gamethemeConfig and the configuration manager in theme manager 'Default': { buyAxeAlert() { - money.update(h => h - 10 > 0 ? h - 10 : 0); // Decreases health but never below 0 + money.update(h => h - 10 > 0 ? h - 10 : 0); // Decreases money but never below 0 const newItem = {type: "weapon", name: "Axe", description: "A heavy, sharp axe."}; addInventoryItem(newItem); }, @@ -1505,11 +1508,17 @@ var app = (function () { // ... add more space-specific actions }, 'Medieval Fantasy': { + knightalert() { + alert("The armourer said he went to see the mini waterfall for some relaxtion"); + }, buyAxeAlert() { - money.update(h => h - 10 > 0 ? h - 10 : 0); // Decreases health but never below 0 + money.update(h => h - 10 > 0 ? h - 10 : 0); // Decreases money but never below 0 const newItem = {type: "weapon", name: "Axe", description: "A heavy, sharp axe."}; addInventoryItem(newItem); }, + askforDirections() { + alert("Stranger: Go back to the fountain"); + }, defendCastle() { // Logic to defend the castle }, @@ -1568,22 +1577,81 @@ var app = (function () { alert("You delve into the Artefact's secrets, seeking knowledge and truths long forgotten."); } }, + approachAncientOak() { + if (objectives["LeaveEldoria"].complete === "true") { + alert("The Ancient Oak stands before you, its presence both imposing and inviting."); + intelligence.update(h => h + 10 > 100 ? h + 10 : 0); // Decreases money but never below 0 + alert("Your wisdom increases as the forest spirit imparts its knowledge."); + } else { + alert("You feel drawn to the Ancient Oak, but something tells you it's not yet time."); + } + }, + + acquireMagicalAcorn() { + const newItem = {type: "artifact", name: "Magical Acorn", description: "A gift from the forest spirit, promising future aid."}; + addInventoryItem(newItem); + alert("The forest spirit bestows upon you a Magical Acorn."); + }, + + exploreCrystalClearing() { + if (skills["Ancient Lore"].learned) { + alert("The Crystal Clearing reveals visions of the future, guiding your path."); + } else { + alert("The visions in the Crystal Clearing are cryptic, hinting at knowledge you have yet to acquire."); + } + }, + + discoverShrineRelic() { + const newItem = {type: "relic", name: "Shrine Relic", description: "A powerful artifact that enhances magical abilities, found in the Ruined Shrine."}; + addInventoryItem(newItem); + alert("You've found a Shrine Relic among the ancient ruins."); + learnSkill("Ancient Lore"); + }, + + navigateEchoingCaves() { + if (skills["Stealth Movement"].learned) { + const newItem = {type: "record", name: "Echoing Cave Echoes", description: "A recording of whispers from the Echoing Caves, revealing secrets and hidden paths."}; + addInventoryItem(newItem); + alert("Using your stealth, you navigate the caves and capture their whispers."); + } else { + alert("The caves are treacherous without the aid of stealth. You retreat, vowing to return."); + } + }, + + converseWithGraveyardSpirits() { + if (skills["Negotiation"].learned) { + increaseStats("endurance"); + increaseStats("intelligence"); + alert("Your words resonate with the spirits, granting you their blessing."); + } else { + alert("The spirits demand a tribute of words you do not yet possess."); + } + }, + + masterArtifacts() { + if (objectives["UncoverForgottenGraveyard"].complete && inventory.some(item => item.type === "relic" || item.type === "artifact")) { + learnSkill("Artifact Mastery"); + alert("With the relics and artifacts in your possession, you gain mastery over their ancient powers."); + } else { + alert("You ponder the artifacts you've collected, feeling the weight of their history and the potential of their power."); + } + }, }, }; /* src\MovingDotSpaceSimpleModal.svelte generated by Svelte v3.59.2 */ - const { console: console_1$5 } = globals; - const file$a = "src\\MovingDotSpaceSimpleModal.svelte"; + const { console: console_1$6 } = globals; + const file$e = "src\\MovingDotSpaceSimpleModal.svelte"; - function get_each_context$5(ctx, list, i) { + function get_each_context$9(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[9] = list[i]; return child_ctx; } // (31:0) {#if isOpen} - function create_if_block$5(ctx) { + function create_if_block$7(ctx) { let div3; let div2; let div0; @@ -1603,7 +1671,7 @@ var app = (function () { 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)); + each_blocks[i] = create_each_block$9(get_each_context$9(ctx, each_value, i)); } const block = { @@ -1626,18 +1694,18 @@ var app = (function () { each_blocks[i].c(); } - add_location(h2, file$a, 34, 8, 1031); - add_location(button, file$a, 35, 8, 1057); + add_location(h2, file$e, 34, 8, 1031); + add_location(button, file$e, 35, 8, 1057); attr_dev(div0, "class", "modal-header svelte-m51ous"); - add_location(div0, file$a, 33, 6, 995); + add_location(div0, file$e, 33, 6, 995); attr_dev(ul, "class", "modal-items"); - add_location(ul, file$a, 39, 8, 1181); + add_location(ul, file$e, 39, 8, 1181); attr_dev(div1, "class", "modal-content svelte-m51ous"); - add_location(div1, file$a, 37, 6, 1125); + add_location(div1, file$e, 37, 6, 1125); attr_dev(div2, "class", "modal svelte-m51ous"); - add_location(div2, file$a, 32, 4, 968); + add_location(div2, file$e, 32, 4, 968); attr_dev(div3, "class", "modal-overlay svelte-m51ous"); - add_location(div3, file$a, 31, 2, 935); + add_location(div3, file$e, 31, 2, 935); }, m: function mount(target, anchor) { insert_dev(target, div3, anchor); @@ -1674,12 +1742,12 @@ var app = (function () { let i; for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context$5(ctx, each_value, i); + const child_ctx = get_each_context$9(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] = create_each_block$9(child_ctx); each_blocks[i].c(); each_blocks[i].m(ul, null); } @@ -1702,7 +1770,7 @@ var app = (function () { dispatch_dev("SvelteRegisterBlock", { block, - id: create_if_block$5.name, + id: create_if_block$7.name, type: "if", source: "(31:0) {#if isOpen}", ctx @@ -1712,7 +1780,7 @@ var app = (function () { } // (41:10) {#each items as item} - function create_each_block$5(ctx) { + function create_each_block$9(ctx) { let button; let t_value = /*item*/ ctx[9].label + ""; let t; @@ -1727,7 +1795,7 @@ var app = (function () { c: function create() { button = element("button"); t = text(t_value); - add_location(button, file$a, 41, 12, 1252); + add_location(button, file$e, 41, 12, 1252); }, m: function mount(target, anchor) { insert_dev(target, button, anchor); @@ -1751,7 +1819,7 @@ var app = (function () { dispatch_dev("SvelteRegisterBlock", { block, - id: create_each_block$5.name, + id: create_each_block$9.name, type: "each", source: "(41:10) {#each items as item}", ctx @@ -1760,9 +1828,9 @@ var app = (function () { return block; } - function create_fragment$a(ctx) { + function create_fragment$e(ctx) { let if_block_anchor; - let if_block = /*isOpen*/ ctx[0] && create_if_block$5(ctx); + let if_block = /*isOpen*/ ctx[0] && create_if_block$7(ctx); const block = { c: function create() { @@ -1781,7 +1849,7 @@ var app = (function () { if (if_block) { if_block.p(ctx, dirty); } else { - if_block = create_if_block$5(ctx); + if_block = create_if_block$7(ctx); if_block.c(); if_block.m(if_block_anchor.parentNode, if_block_anchor); } @@ -1800,7 +1868,7 @@ var app = (function () { dispatch_dev("SvelteRegisterBlock", { block, - id: create_fragment$a.name, + id: create_fragment$e.name, type: "component", source: "", ctx @@ -1809,7 +1877,7 @@ var app = (function () { return block; } - function instance$a($$self, $$props, $$invalidate) { + function instance$e($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; validate_slots('MovingDotSpaceSimpleModal', slots, []); let { isOpen = false } = $$props; @@ -1840,14 +1908,14 @@ var app = (function () { $$self.$$.on_mount.push(function () { if (onClose === undefined && !('onClose' in $$props || $$self.$$.bound[$$self.$$.props['onClose']])) { - console_1$5.warn(" was created without expected prop 'onClose'"); + console_1$6.warn(" was created without expected prop 'onClose'"); } }); const writable_props = ['isOpen', 'title', 'content', 'items', 'onClose', 'currentTheme']; Object.keys($$props).forEach(key => { - if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1$5.warn(` was created with unknown prop '${key}'`); + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1$6.warn(` was created with unknown prop '${key}'`); }); const click_handler = item => handleItemClick(item); @@ -1903,7 +1971,7 @@ var app = (function () { constructor(options) { super(options); - init(this, options, instance$a, create_fragment$a, safe_not_equal, { + init(this, options, instance$e, create_fragment$e, safe_not_equal, { isOpen: 0, title: 1, content: 2, @@ -1916,7 +1984,7 @@ var app = (function () { component: this, tagName: "MovingDotSpaceSimpleModal", options, - id: create_fragment$a.name + id: create_fragment$e.name }); } @@ -1971,15 +2039,15 @@ var app = (function () { /* src\MovingDotStatDisplay.svelte generated by Svelte v3.59.2 */ - const file$9 = "src\\MovingDotStatDisplay.svelte"; + const file$d = "src\\MovingDotStatDisplay.svelte"; - function get_each_context$4(ctx, list, i) { + function get_each_context$8(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[13] = list[i]; return child_ctx; } - function get_each_context_1$1(ctx, list, i) { + function get_each_context_1$3(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[16] = list[i]; return child_ctx; @@ -1999,6 +2067,10 @@ var app = (function () { let t1; let t2_value = /*item*/ ctx[16].name + ""; let t2; + let t3; + let t4_value = (/*item*/ ctx[16].complete ? '(Completed)' : '') + ""; + let t4; + let li_class_value; const block = { c: function create() { @@ -2006,17 +2078,27 @@ var app = (function () { t0 = text(t0_value); t1 = text(": "); t2 = text(t2_value); - add_location(li, file$9, 22, 8, 712); + t3 = space(); + t4 = text(t4_value); + attr_dev(li, "class", li_class_value = "" + (null_to_empty(/*item*/ ctx[16].complete ? 'completedobjetive' : '') + " svelte-w7krpq")); + add_location(li, file$d, 23, 8, 762); }, m: function mount(target, anchor) { insert_dev(target, li, anchor); append_dev(li, t0); append_dev(li, t1); append_dev(li, t2); + append_dev(li, t3); + append_dev(li, t4); }, p: function update(ctx, dirty) { if (dirty & /*$objectives*/ 256 && t0_value !== (t0_value = /*item*/ ctx[16].id + "")) set_data_dev(t0, t0_value); if (dirty & /*$objectives*/ 256 && t2_value !== (t2_value = /*item*/ ctx[16].name + "")) set_data_dev(t2, t2_value); + if (dirty & /*$objectives*/ 256 && t4_value !== (t4_value = (/*item*/ ctx[16].complete ? '(Completed)' : '') + "")) set_data_dev(t4, t4_value); + + if (dirty & /*$objectives*/ 256 && li_class_value !== (li_class_value = "" + (null_to_empty(/*item*/ ctx[16].complete ? 'completedobjetive' : '') + " svelte-w7krpq"))) { + attr_dev(li, "class", li_class_value); + } }, d: function destroy(detaching) { if (detaching) detach_dev(li); @@ -2034,52 +2116,62 @@ var app = (function () { return block; } - // (32:8) {#each $inventory as item} - function create_each_block_1$1(ctx) { - let li; + // (33:8) {#each $inventory as item} + function create_each_block_1$3(ctx) { + let button; let t0_value = /*item*/ ctx[16].name + ""; let t0; let t1; - let t2_value = /*item*/ ctx[16].description + ""; - let t2; + let mounted; + let dispose; + + function click_handler() { + return /*click_handler*/ ctx[12](/*item*/ ctx[16]); + } const block = { c: function create() { - li = element("li"); + button = element("button"); t0 = text(t0_value); - t1 = text(": "); - t2 = text(t2_value); - add_location(li, file$9, 32, 10, 928); + t1 = space(); + attr_dev(button, "class", "skill"); + add_location(button, file$d, 33, 10, 1064); }, m: function mount(target, anchor) { - insert_dev(target, li, anchor); - append_dev(li, t0); - append_dev(li, t1); - append_dev(li, t2); + 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(ctx, dirty) { + p: function update(new_ctx, dirty) { + ctx = new_ctx; if (dirty & /*$inventory*/ 512 && t0_value !== (t0_value = /*item*/ ctx[16].name + "")) set_data_dev(t0, t0_value); - if (dirty & /*$inventory*/ 512 && t2_value !== (t2_value = /*item*/ ctx[16].description + "")) set_data_dev(t2, t2_value); }, d: function destroy(detaching) { - if (detaching) detach_dev(li); + if (detaching) detach_dev(button); + mounted = false; + dispose(); } }; dispatch_dev("SvelteRegisterBlock", { block, - id: create_each_block_1$1.name, + id: create_each_block_1$3.name, type: "each", - source: "(32:8) {#each $inventory as item}", + source: "(33:8) {#each $inventory as item}", ctx }); return block; } - // (42:6) {#each $skills as skill} - function create_each_block$4(ctx) { - let button; + // (46:8) {#each $skills as skill} + function create_each_block$8(ctx) { + let li; let t0_value = /*skill*/ ctx[13].name + ""; let t0; let t1; @@ -2088,65 +2180,47 @@ var app = (function () { let t3; let t4_value = (/*skill*/ ctx[13].learned ? 'Yes' : 'No') + ""; let t4; - let t5; - let mounted; - let dispose; - - function click_handler() { - return /*click_handler*/ ctx[12](/*skill*/ ctx[13]); - } const block = { c: function create() { - button = element("button"); + li = element("li"); t0 = text(t0_value); - t1 = text(" - "); + t1 = text(": "); t2 = text(t2_value); t3 = text(" - Learned: "); t4 = text(t4_value); - t5 = space(); - attr_dev(button, "class", "skill"); - add_location(button, file$9, 42, 8, 1167); + add_location(li, file$d, 46, 10, 1413); }, 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; - } + insert_dev(target, li, anchor); + append_dev(li, t0); + append_dev(li, t1); + append_dev(li, t2); + append_dev(li, t3); + append_dev(li, t4); }, - p: function update(new_ctx, dirty) { - ctx = new_ctx; + p: function update(ctx, dirty) { if (dirty & /*$skills*/ 1024 && t0_value !== (t0_value = /*skill*/ ctx[13].name + "")) set_data_dev(t0, t0_value); if (dirty & /*$skills*/ 1024 && t2_value !== (t2_value = /*skill*/ ctx[13].branch + "")) set_data_dev(t2, t2_value); if (dirty & /*$skills*/ 1024 && t4_value !== (t4_value = (/*skill*/ ctx[13].learned ? 'Yes' : 'No') + "")) set_data_dev(t4, t4_value); }, d: function destroy(detaching) { - if (detaching) detach_dev(button); - mounted = false; - dispose(); + if (detaching) detach_dev(li); } }; dispatch_dev("SvelteRegisterBlock", { block, - id: create_each_block$4.name, + id: create_each_block$8.name, type: "each", - source: "(42:6) {#each $skills as skill}", + source: "(46:8) {#each $skills as skill}", ctx }); return block; } - function create_fragment$9(ctx) { + function create_fragment$d(ctx) { let div10; let div4; let div3; @@ -2188,6 +2262,7 @@ var app = (function () { let div8; let h21; let t26; + let ul2; let each_value_2 = /*$objectives*/ ctx[8]; validate_each_argument(each_value_2); let each_blocks_2 = []; @@ -2201,7 +2276,7 @@ var app = (function () { let each_blocks_1 = []; for (let i = 0; i < each_value_1.length; i += 1) { - each_blocks_1[i] = create_each_block_1$1(get_each_context_1$1(ctx, each_value_1, i)); + each_blocks_1[i] = create_each_block_1$3(get_each_context_1$3(ctx, each_value_1, i)); } let each_value = /*$skills*/ ctx[10]; @@ -2209,7 +2284,7 @@ var app = (function () { 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)); + each_blocks[i] = create_each_block$8(get_each_context$8(ctx, each_value, i)); } const block = { @@ -2268,36 +2343,38 @@ var app = (function () { h21 = element("h2"); h21.textContent = "Skill Tree / Abilities"; t26 = space(); + ul2 = element("ul"); for (let i = 0; i < each_blocks.length; i += 1) { each_blocks[i].c(); } - add_location(b, file$9, 12, 13, 363); - add_location(span, file$9, 12, 6, 356); - add_location(div0, file$9, 13, 6, 399); - add_location(div1, file$9, 14, 6, 543); - add_location(div2, file$9, 15, 6, 575); - attr_dev(div3, "class", "stats svelte-1d8rshd"); - add_location(div3, file$9, 11, 4, 329); - attr_dev(div4, "class", "grid-statsitem svelte-1d8rshd"); - add_location(div4, file$9, 10, 2, 295); - add_location(ul0, file$9, 20, 4, 663); - attr_dev(div5, "class", "grid-statsitem svelte-1d8rshd"); - add_location(div5, file$9, 19, 2, 629); - add_location(h20, file$9, 29, 6, 850); - add_location(ul1, file$9, 30, 6, 876); - attr_dev(div6, "class", "inventory svelte-1d8rshd"); - add_location(div6, file$9, 28, 4, 819); - attr_dev(div7, "class", "grid-statsitem svelte-1d8rshd"); - add_location(div7, file$9, 27, 2, 785); - add_location(h21, file$9, 40, 6, 1094); - attr_dev(div8, "class", "skill-tree svelte-1d8rshd"); - add_location(div8, file$9, 39, 4, 1062); - attr_dev(div9, "class", "grid-statsitem svelte-1d8rshd"); - add_location(div9, file$9, 38, 2, 1028); - attr_dev(div10, "class", "grid-statsContainer svelte-1d8rshd"); - add_location(div10, file$9, 9, 0, 258); + add_location(b, file$d, 12, 13, 363); + add_location(span, file$d, 12, 6, 356); + add_location(div0, file$d, 13, 6, 399); + add_location(div1, file$d, 14, 6, 543); + add_location(div2, file$d, 15, 6, 575); + attr_dev(div3, "class", "stats svelte-w7krpq"); + add_location(div3, file$d, 11, 4, 329); + attr_dev(div4, "class", "grid-statsitem svelte-w7krpq"); + add_location(div4, file$d, 10, 2, 295); + add_location(ul0, file$d, 20, 4, 663); + attr_dev(div5, "class", "grid-statsitem svelte-w7krpq"); + add_location(div5, file$d, 19, 2, 629); + add_location(h20, file$d, 30, 6, 986); + add_location(ul1, file$d, 31, 6, 1012); + attr_dev(div6, "class", "inventory svelte-w7krpq"); + add_location(div6, file$d, 29, 4, 955); + attr_dev(div7, "class", "grid-statsitem svelte-w7krpq"); + add_location(div7, file$d, 28, 2, 921); + add_location(h21, file$d, 43, 6, 1324); + add_location(ul2, file$d, 44, 6, 1363); + attr_dev(div8, "class", "skill-tree svelte-w7krpq"); + add_location(div8, file$d, 42, 4, 1292); + attr_dev(div9, "class", "grid-statsitem svelte-w7krpq"); + add_location(div9, file$d, 41, 2, 1258); + attr_dev(div10, "class", "grid-statsContainer svelte-w7krpq"); + add_location(div10, file$d, 9, 0, 258); }, l: function claim(nodes) { throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); @@ -2358,10 +2435,11 @@ var app = (function () { append_dev(div9, div8); append_dev(div8, h21); append_dev(div8, t26); + append_dev(div8, ul2); for (let i = 0; i < each_blocks.length; i += 1) { if (each_blocks[i]) { - each_blocks[i].m(div8, null); + each_blocks[i].m(ul2, null); } } }, @@ -2399,18 +2477,18 @@ var app = (function () { each_blocks_2.length = each_value_2.length; } - if (dirty & /*$inventory*/ 512) { + if (dirty & /*toggleSkill, alert, $inventory*/ 2560) { each_value_1 = /*$inventory*/ ctx[9]; validate_each_argument(each_value_1); let i; for (i = 0; i < each_value_1.length; i += 1) { - const child_ctx = get_each_context_1$1(ctx, each_value_1, i); + const child_ctx = get_each_context_1$3(ctx, each_value_1, i); if (each_blocks_1[i]) { each_blocks_1[i].p(child_ctx, dirty); } else { - each_blocks_1[i] = create_each_block_1$1(child_ctx); + each_blocks_1[i] = create_each_block_1$3(child_ctx); each_blocks_1[i].c(); each_blocks_1[i].m(ul1, null); } @@ -2423,20 +2501,20 @@ var app = (function () { each_blocks_1.length = each_value_1.length; } - if (dirty & /*toggleSkill, $skills*/ 3072) { + if (dirty & /*$skills*/ 1024) { each_value = /*$skills*/ ctx[10]; validate_each_argument(each_value); let i; for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context$4(ctx, each_value, i); + const child_ctx = get_each_context$8(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] = create_each_block$8(child_ctx); each_blocks[i].c(); - each_blocks[i].m(div8, null); + each_blocks[i].m(ul2, null); } } @@ -2459,7 +2537,7 @@ var app = (function () { dispatch_dev("SvelteRegisterBlock", { block, - id: create_fragment$9.name, + id: create_fragment$d.name, type: "component", source: "", ctx @@ -2468,7 +2546,7 @@ var app = (function () { return block; } - function instance$9($$self, $$props, $$invalidate) { + function instance$d($$self, $$props, $$invalidate) { let $health; let $mana; let $strength; @@ -2498,16 +2576,16 @@ var app = (function () { component_subscribe($$self, money, $$value => $$invalidate(7, $money = $$value)); validate_store(objectives, 'objectives'); component_subscribe($$self, objectives, $$value => $$invalidate(8, $objectives = $$value)); - validate_store(inventory, 'inventory'); - component_subscribe($$self, inventory, $$value => $$invalidate(9, $inventory = $$value)); - validate_store(skills, 'skills'); - component_subscribe($$self, skills, $$value => $$invalidate(10, $skills = $$value)); + validate_store(inventory$1, 'inventory'); + component_subscribe($$self, inventory$1, $$value => $$invalidate(9, $inventory = $$value)); + validate_store(skills$1, 'skills'); + component_subscribe($$self, skills$1, $$value => $$invalidate(10, $skills = $$value)); let { $$slots: slots = {}, $$scope } = $$props; validate_slots('MovingDotStatDisplay', slots, []); function toggleSkill(skill) { skill.learned = !skill.learned; - skills.update(n => n); + skills$1.update(n => n); } const writable_props = []; @@ -2516,7 +2594,7 @@ var app = (function () { if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); }); - const click_handler = skill => toggleSkill(skill); + const click_handler = item => toggleSkill(alert(item.description, item.type)); $$self.$capture_state = () => ({ health, @@ -2527,8 +2605,8 @@ var app = (function () { charisma, luck, money, - inventory, - skills, + inventory: inventory$1, + skills: skills$1, objectives, toggleSkill, $health, @@ -2564,215 +2642,174 @@ var app = (function () { class MovingDotStatDisplay extends SvelteComponentDev { constructor(options) { super(options); - init(this, options, instance$9, create_fragment$9, safe_not_equal, {}); + init(this, options, instance$d, create_fragment$d, safe_not_equal, {}); dispatch_dev("SvelteRegisterComponent", { component: this, tagName: "MovingDotStatDisplay", options, - id: create_fragment$9.name + id: create_fragment$d.name }); } } /* src\MovingDotSpaceThemeManager.svelte generated by Svelte v3.59.2 */ - const file$8 = "src\\MovingDotSpaceThemeManager.svelte"; + const file$c = "src\\MovingDotSpaceThemeManager.svelte"; - function create_fragment$8(ctx) { + function create_fragment$c(ctx) { + let hr; + let t0; let form; let input0; - let t0; - let input1; let t1; - let input2; + let input1; let t2; + let input2; + let t3; let button0; - let t4; + let t5; let button1; - let t6; - let input3; let t7; + let input3; + let t8; let label; - let t9; - let div5; - let div0; let t10; - let br0; + let div3; + let div0; let t11; - let br1; + let br0; let t12; - let br2; + let br1; let t13; - let br3; let t14; let div1; let t15; let t16; - let br4; + let br2; let t17; + let br3; + let br4; let t18; + let t19; let div2; - let t20; - let div3; - let t21; - let br5; - let t22; - let br6; - let t23; - let br7; - let t24; - let t25; - let div4; - let t26; - let br8; - let t27; let mounted; let dispose; const block = { c: function create() { + hr = element("hr"); + t0 = text("\r\nIncomplete Custom game setting assistant\r\n\r\n"); form = element("form"); input0 = element("input"); - t0 = space(); - input1 = element("input"); t1 = space(); - input2 = element("input"); + input1 = element("input"); t2 = space(); + input2 = element("input"); + t3 = space(); button0 = element("button"); button0.textContent = "Add Item"; - t4 = space(); + t5 = space(); button1 = element("button"); button1.textContent = "Download Configuration"; - t6 = space(); - input3 = element("input"); t7 = space(); + input3 = element("input"); + t8 = space(); label = element("label"); label.textContent = "Upload Configuration"; - t9 = space(); - div5 = element("div"); + t10 = space(); + div3 = element("div"); div0 = element("div"); - t10 = text("Website = multilingual support in chrome "); + t11 = text("Website = multilingual support in chrome "); br0 = element("br"); - t11 = text("\r\n All Alert version of the game then think of modal to extend "); + t12 = text("\r\n The mechanics here are location based so story should be location based "); br1 = element("br"); - t12 = text("\r\n ChatGPT = Random event to story then Graph with rectangles and diamonds then alert based config settings"); - br2 = element("br"); - t13 = text("\r\n Modal = Component for each game mechanic "); - br3 = element("br"); + t13 = text("\r\n Simultaneous relationships between multiple items = complexity - eg. player location and objectives"); t14 = space(); div1 = element("div"); t15 = text(/*ChangedContentPlaceholder*/ ctx[0]); t16 = space(); + br2 = element("br"); + t17 = text("\r\n Most stories for games are about a character that lacks something to beat their problems and the 90% inbetween the begining and the end is acquiring\r\n "); + br3 = element("br"); br4 = element("br"); - t17 = text("\r\n Example - Write a story where the main event are in this order: gosomewhere getsomething makeobservation getsomething talktosomeone makeobservation getsomething talktosomeone gosomewhere fight talktosomeone fight fight talktosomeone talktosomeone talktosomeone gosomewhere talktosomeone"); - t18 = space(); + t18 = text("\r\n Example - Write a story where the main event are in this order: gosomewhere getsomething makeobservation getsomething talktosomeone makeobservation getsomething talktosomeone gosomewhere fight talktosomeone fight fight talktosomeone talktosomeone talktosomeone gosomewhere talktosomeone"); + t19 = space(); div2 = element("div"); - div2.textContent = "Event Trigger - Collisions\r\n Combat Mechanics - Modal (aka anything)\r\n objectives = boolean\r\n Story = conflict and resolution towards solving a larger conflict\r\n basic story elements fight getsomething gosomewhere talktosomeone makeobservation - use the random count component above"; - t20 = space(); - div3 = element("div"); - t21 = text("Extra Stats "); - br5 = element("br"); - t22 = text(" \r\n Save State "); - br6 = element("br"); - t23 = text("\r\n Clock System - based on the user movement? "); - br7 = element("br"); - t24 = text("\r\n For Learning Purposes make school, bank and retail store versions"); - t25 = space(); - div4 = element("div"); - t26 = text("Story Line "); - br8 = element("br"); - t27 = text("\r\n Hard as it combines skills, targets, inventory, objectives and player interaction = = = Give ChatGPT a sample config then ask for a story and then ask to turn that story into config format"); + div2.textContent = "lets write the story to fit this order - stats location stats inventory stats location location skills inventory stats inventory skills skills skills stats stats skills"; + add_location(hr, file$c, 66, 0, 2505); attr_dev(input0, "type", "text"); attr_dev(input0, "placeholder", "Type (weapon, armor, consumable)"); - add_location(input0, file$8, 67, 4, 2591); + add_location(input0, file$c, 70, 4, 2641); attr_dev(input1, "type", "text"); attr_dev(input1, "placeholder", "Name"); - add_location(input1, file$8, 68, 4, 2691); + add_location(input1, file$c, 71, 4, 2741); attr_dev(input2, "type", "text"); attr_dev(input2, "placeholder", "Description"); - add_location(input2, file$8, 69, 4, 2763); + add_location(input2, file$c, 72, 4, 2813); attr_dev(button0, "type", "submit"); - add_location(button0, file$8, 70, 4, 2849); - add_location(form, file$8, 66, 0, 2544); - add_location(button1, file$8, 76, 0, 3028); + add_location(button0, file$c, 73, 4, 2899); + add_location(form, file$c, 69, 0, 2594); + add_location(button1, file$c, 79, 0, 3078); attr_dev(input3, "type", "file"); attr_dev(input3, "id", "fileInput"); set_style(input3, "display", "none"); - add_location(input3, file$8, 77, 0, 3102); + add_location(input3, file$c, 80, 0, 3152); attr_dev(label, "for", "fileInput"); attr_dev(label, "class", "btn"); - add_location(label, file$8, 78, 0, 3191); - add_location(br0, file$8, 82, 49, 3357); - add_location(br1, file$8, 83, 68, 3431); - add_location(br2, file$8, 84, 112, 3549); - add_location(br3, file$8, 85, 49, 3604); - add_location(div0, file$8, 81, 4, 3301); - add_location(br4, file$8, 89, 38, 3673); - add_location(div1, file$8, 88, 4, 3628); - add_location(div2, file$8, 93, 4, 3994); - add_location(br5, file$8, 102, 20, 4367); - add_location(br6, file$8, 103, 19, 4396); - add_location(br7, file$8, 104, 53, 4455); - add_location(div3, file$8, 101, 4, 4339); - add_location(br8, file$8, 109, 19, 4580); - add_location(div4, file$8, 108, 4, 4554); - attr_dev(div5, "class", "grid-themegridContainer svelte-1b47i4k"); - add_location(div5, file$8, 80, 0, 3258); + add_location(label, file$c, 81, 0, 3241); + add_location(br0, file$c, 85, 49, 3407); + add_location(br1, file$c, 86, 80, 3493); + add_location(div0, file$c, 84, 4, 3351); + add_location(br2, file$c, 91, 38, 3671); + add_location(br3, file$c, 93, 8, 3843); + add_location(br4, file$c, 93, 12, 3847); + add_location(div1, file$c, 90, 4, 3626); + add_location(div2, file$c, 97, 4, 4168); + attr_dev(div3, "class", "grid-themegridContainer svelte-a95t5t"); + add_location(div3, file$c, 83, 0, 3308); }, 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, hr, anchor); + insert_dev(target, t0, anchor); insert_dev(target, form, anchor); append_dev(form, input0); set_input_value(input0, /*newItem*/ ctx[1].type); - append_dev(form, t0); + append_dev(form, t1); append_dev(form, input1); set_input_value(input1, /*newItem*/ ctx[1].name); - append_dev(form, t1); + append_dev(form, t2); append_dev(form, input2); set_input_value(input2, /*newItem*/ ctx[1].description); - append_dev(form, t2); + append_dev(form, t3); append_dev(form, button0); - insert_dev(target, t4, anchor); + insert_dev(target, t5, anchor); insert_dev(target, button1, anchor); - insert_dev(target, t6, anchor); - insert_dev(target, input3, anchor); insert_dev(target, t7, anchor); + insert_dev(target, input3, anchor); + insert_dev(target, t8, anchor); insert_dev(target, label, anchor); - insert_dev(target, t9, anchor); - insert_dev(target, div5, anchor); - append_dev(div5, div0); - append_dev(div0, t10); - append_dev(div0, br0); + insert_dev(target, t10, anchor); + insert_dev(target, div3, anchor); + append_dev(div3, div0); append_dev(div0, t11); - append_dev(div0, br1); + append_dev(div0, br0); append_dev(div0, t12); - append_dev(div0, br2); + append_dev(div0, br1); append_dev(div0, t13); - append_dev(div0, br3); - append_dev(div5, t14); - append_dev(div5, div1); + append_dev(div3, t14); + append_dev(div3, div1); append_dev(div1, t15); append_dev(div1, t16); - append_dev(div1, br4); + append_dev(div1, br2); append_dev(div1, t17); - append_dev(div5, t18); - append_dev(div5, div2); - append_dev(div5, t20); - append_dev(div5, div3); - append_dev(div3, t21); - append_dev(div3, br5); - append_dev(div3, t22); - append_dev(div3, br6); - append_dev(div3, t23); - append_dev(div3, br7); - append_dev(div3, t24); - append_dev(div5, t25); - append_dev(div5, div4); - append_dev(div4, t26); - append_dev(div4, br8); - append_dev(div4, t27); + append_dev(div1, br3); + append_dev(div1, br4); + append_dev(div1, t18); + append_dev(div3, t19); + append_dev(div3, div2); if (!mounted) { dispose = [ @@ -2805,15 +2842,17 @@ var app = (function () { i: noop, o: noop, d: function destroy(detaching) { + if (detaching) detach_dev(hr); + if (detaching) detach_dev(t0); if (detaching) detach_dev(form); - if (detaching) detach_dev(t4); + if (detaching) detach_dev(t5); if (detaching) detach_dev(button1); - if (detaching) detach_dev(t6); - if (detaching) detach_dev(input3); if (detaching) detach_dev(t7); + if (detaching) detach_dev(input3); + if (detaching) detach_dev(t8); if (detaching) detach_dev(label); - if (detaching) detach_dev(t9); - if (detaching) detach_dev(div5); + if (detaching) detach_dev(t10); + if (detaching) detach_dev(div3); mounted = false; run_all(dispose); } @@ -2821,7 +2860,7 @@ var app = (function () { dispatch_dev("SvelteRegisterBlock", { block, - id: create_fragment$8.name, + id: create_fragment$c.name, type: "component", source: "", ctx @@ -2830,7 +2869,7 @@ var app = (function () { return block; } - function instance$8($$self, $$props, $$invalidate) { + function instance$c($$self, $$props, $$invalidate) { let $targets; let $objectives; let $skills; @@ -2839,10 +2878,10 @@ var app = (function () { component_subscribe($$self, targets, $$value => $$invalidate(10, $targets = $$value)); validate_store(objectives, 'objectives'); component_subscribe($$self, objectives, $$value => $$invalidate(11, $objectives = $$value)); - validate_store(skills, 'skills'); - component_subscribe($$self, skills, $$value => $$invalidate(12, $skills = $$value)); - validate_store(inventory, 'inventory'); - component_subscribe($$self, inventory, $$value => $$invalidate(13, $inventory = $$value)); + validate_store(skills$1, 'skills'); + component_subscribe($$self, skills$1, $$value => $$invalidate(12, $skills = $$value)); + validate_store(inventory$1, 'inventory'); + component_subscribe($$self, inventory$1, $$value => $$invalidate(13, $inventory = $$value)); let { $$slots: slots = {}, $$scope } = $$props; validate_slots('MovingDotSpaceThemeManager', slots, []); let { ChangedContentPlaceholder = "" } = $$props; @@ -2852,12 +2891,12 @@ var app = (function () { // ... similarly for targets function addItem() { - inventory.update(items => [...items, newItem]); + inventory$1.update(items => [...items, newItem]); $$invalidate(1, newItem = { type: "", name: "", description: "" }); // Reset form } function addSkill() { - skills.update(skills => [...skills, newSkill]); + skills$1.update(skills => [...skills, newSkill]); newSkill = { branch: "", name: "", learned: false }; // Reset form } @@ -2897,8 +2936,8 @@ var app = (function () { reader.onload = e => { const fileContent = e.target.result; const { inventory: loadedInventory, skills: loadedSkills, objectives: loadedObjectives, targets: loadedTargets } = JSON.parse(fileContent); - inventory.set(loadedInventory); - skills.set(loadedSkills); + inventory$1.set(loadedInventory); + skills$1.set(loadedSkills); objectives.set(loadedObjectives); targets.set(loadedTargets); alert('Configuration loaded!'); @@ -2935,8 +2974,8 @@ var app = (function () { $$self.$capture_state = () => ({ ChangedContentPlaceholder, - inventory, - skills, + inventory: inventory$1, + skills: skills$1, objectives, targets, newItem, @@ -2979,13 +3018,13 @@ var app = (function () { class MovingDotSpaceThemeManager extends SvelteComponentDev { constructor(options) { super(options); - init(this, options, instance$8, create_fragment$8, safe_not_equal, { ChangedContentPlaceholder: 0 }); + init(this, options, instance$c, create_fragment$c, safe_not_equal, { ChangedContentPlaceholder: 0 }); dispatch_dev("SvelteRegisterComponent", { component: this, tagName: "MovingDotSpaceThemeManager", options, - id: create_fragment$8.name + id: create_fragment$c.name }); } @@ -3000,10 +3039,10 @@ var app = (function () { /* src\MovingDotSpaceGameFight.svelte generated by Svelte v3.59.2 */ - const file$7 = "src\\MovingDotSpaceGameFight.svelte"; + const file$b = "src\\MovingDotSpaceGameFight.svelte"; // (88:8) {#if $fightcurrentTurn === 'human'} - function create_if_block$4(ctx) { + function create_if_block$6(ctx) { let button0; let t1; let button1; @@ -3022,9 +3061,9 @@ var app = (function () { t3 = space(); button2 = element("button"); button2.textContent = "Block"; - add_location(button0, file$7, 88, 12, 3623); - add_location(button1, file$7, 89, 12, 3730); - add_location(button2, file$7, 90, 12, 3856); + add_location(button0, file$b, 88, 12, 3623); + add_location(button1, file$b, 89, 12, 3730); + add_location(button2, file$b, 90, 12, 3856); }, m: function mount(target, anchor) { insert_dev(target, button0, anchor); @@ -3057,7 +3096,7 @@ var app = (function () { dispatch_dev("SvelteRegisterBlock", { block: block_1, - id: create_if_block$4.name, + id: create_if_block$6.name, type: "if", source: "(88:8) {#if $fightcurrentTurn === 'human'}", ctx @@ -3066,7 +3105,7 @@ var app = (function () { return block_1; } - function create_fragment$7(ctx) { + function create_fragment$b(ctx) { let div4; let div0; let t0; @@ -3133,7 +3172,7 @@ var app = (function () { let t28; let t29; let br9; - let if_block = /*$fightcurrentTurn*/ ctx[0] === 'human' && create_if_block$4(ctx); + let if_block = /*$fightcurrentTurn*/ ctx[0] === 'human' && create_if_block$6(ctx); const block_1 = { c: function create() { @@ -3183,22 +3222,22 @@ var app = (function () { t28 = text(t28_value); t29 = text("s "); br9 = element("br"); - add_location(br0, file$7, 76, 17, 3171); - add_location(br1, file$7, 77, 48, 3225); - add_location(br2, file$7, 78, 50, 3281); - add_location(br3, file$7, 79, 62, 3349); - add_location(br4, file$7, 80, 70, 3425); - add_location(div0, file$7, 75, 4, 3147); - add_location(div1, file$7, 84, 8, 3464); - add_location(div2, file$7, 83, 4, 3449); - add_location(br5, file$7, 95, 17, 3978); - add_location(br6, file$7, 96, 51, 4035); - add_location(br7, file$7, 97, 53, 4094); - add_location(br8, file$7, 98, 65, 4165); - add_location(br9, file$7, 99, 73, 4244); - add_location(div3, file$7, 94, 4, 3954); + add_location(br0, file$b, 76, 17, 3171); + add_location(br1, file$b, 77, 48, 3225); + add_location(br2, file$b, 78, 50, 3281); + add_location(br3, file$b, 79, 62, 3349); + add_location(br4, file$b, 80, 70, 3425); + add_location(div0, file$b, 75, 4, 3147); + add_location(div1, file$b, 84, 8, 3464); + add_location(div2, file$b, 83, 4, 3449); + add_location(br5, file$b, 95, 17, 3978); + add_location(br6, file$b, 96, 51, 4035); + add_location(br7, file$b, 97, 53, 4094); + add_location(br8, file$b, 98, 65, 4165); + add_location(br9, file$b, 99, 73, 4244); + add_location(div3, file$b, 94, 4, 3954); attr_dev(div4, "class", "statscontainer svelte-izilsr"); - add_location(div4, file$7, 74, 0, 3113); + add_location(div4, file$b, 74, 0, 3113); }, l: function claim(nodes) { throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); @@ -3269,7 +3308,7 @@ var app = (function () { if (if_block) { if_block.p(ctx, dirty); } else { - if_block = create_if_block$4(ctx); + if_block = create_if_block$6(ctx); if_block.c(); if_block.m(div2, null); } @@ -3297,7 +3336,7 @@ var app = (function () { dispatch_dev("SvelteRegisterBlock", { block: block_1, - id: create_fragment$7.name, + id: create_fragment$b.name, type: "component", source: "", ctx @@ -3312,7 +3351,7 @@ var app = (function () { }); } - function instance$7($$self, $$props, $$invalidate) { + function instance$b($$self, $$props, $$invalidate) { let $fightcurrentTurn; let $fightplayerHuman; let $fightplayerComputer; @@ -3445,485 +3484,1793 @@ var app = (function () { class MovingDotSpaceGameFight extends SvelteComponentDev { constructor(options) { super(options); - init(this, options, instance$7, create_fragment$7, safe_not_equal, {}); + init(this, options, instance$b, create_fragment$b, safe_not_equal, {}); dispatch_dev("SvelteRegisterComponent", { component: this, tagName: "MovingDotSpaceGameFight", options, - id: create_fragment$7.name + id: create_fragment$b.name }); } } - // themeConfig.js - const themes = { - 'User Custom': { - background: '/AutoGameBackgrounds/space_background.png', - inventory: [ - { type: "weapon", name: "Laser Gun", description: "A powerful laser weapon." }, - // ... more space items - ], - skills: [ - { branch: "Skill Group 1", name: "Skill One", learned: false }, - // ... more space skills - ], - objectives: [ - { id: "Mission 1", name: "Mission Details", complete: false }, - // ... more space objectives - ], - // ... and so on for targets - storyparttargets: { - 0: [ - { name: "Target 1", x: 50, y: 50, collisionType: "alert", collisiontext: "First Test"}, - ], - } - }, - 'Default': { - background: '/AutoGameBackgrounds/1stGameLoc123.png', - inventory: [ - { type: "weapon", name: "Sword", description: "A sharp blade." }, - { type: "armor", name: "Shield", description: "Protects against attacks." }, - { type: "consumable", name: "Health Potion", description: "Restores health." }, - // ... more space items - ], - skills: [ - { branch: "Combat", name: "Basic Attack", learned: false }, - { branch: "Magic", name: "Fireball", learned: false }, - { branch: "Stealth", name: "Sneak", learned: false }, - // ... more space skills - ], - objectives: [ - { id: "Seperate", name: "Visit Mountain Peak", complete: false }, - { id: "Mission 1", name: "Intercept The Courier (Search the Locations)", complete: false }, - { id: "Mission 1", name: "Deliver the package to Market Stall", complete: false }, - // ... more space objectives - ], - // ... and so on for targets - storyparttargets: { - 0: [ - { name: "Target 1", x: 50, y: 50, collisionType: "alert", collisiontext: "First Test"}, - { name: "Target 2", x: 100, y: 100, collisionType: "", collisiontext: ""}, - { name: "Entrance", x: 995, y: 660, collisionType: "modal", modalConfig: { - title: "Entrance", - content: "You've reached the Entrance. What's your next step?", - actions: [ - {label: "Ask for guidance on next move", action: "askforDirections"}, - {label: "Buy an Axe", action: "buyAxeAlert"}, - // ... more actions if necessary - ]}, - }, - { name: "Market Stall", x: 200, y: 300, collisionType: "", collisiontext: "" }, // A market stall in the bustling market area. - { name: "Inn Entrance", x: 400, y: 450, collisionType: "", collisiontext: "" }, // The entrance to the inn for rest or information. - { name: "Town Hall", x: 600, y: 350, collisionType: "", collisiontext: "" }, // The entrance to the town hall for quests. - { name: "Fountain", x: 500, y: 500, collisionType: "", collisiontext: "" }, // A fountain in the town square as a meeting point. - { name: "Bridge", x: 1100, y: 700, collisionType: "", collisiontext: "" }, // A bridge in the mystical forest area. - { name: "Waterfall", x: 1300, y: 800, collisionType: "", collisiontext: "" }, // A waterfall that could hide secrets or treasures. - { name: "Mountain Peak", x: 1500, y: 100, collisionType: "", collisiontext: "" }, - //{ name: "Mysterious Stranger", x: 350, y: 550, collisionType: "alert", collisiontext: "Beware the hidden caves in the north." }, - //{ name: "Hidden Cave", x: 1200, y: 400, collisionType: "changeBackgroundColor", color: "#0B3D91" }, - //{ name: "Ancient Tree", x: 300, y: 700, collisionType: "playSound", soundUrl: "tree_whisper.mp3" }, - //{ name: "Forgotten Monument", x: 700, y: 800, collisionType: "startAnimation", elementId: "monument", animationClass: "glow" }, - //{ name: "Wizard's Tower", x: 950, y: 150, collisionType: "rotateDot" }, - //{ name: "Lakeside", x: 1400, y: 600, collisionType: "changeDotColor", color: "#00BFFF" }, - //{ name: "Dragon's Lair", x: 1600, y: 200, collisionType: "incrementScore", incrementValue: 50 }, - //{ name: "Abandoned Shipwreck", x: 1300, y: 500, collisionType: "shrinkDot" }, - - { name: "Switch Test 1", x: 700, y: 700, collisionType: "storypartchange", collisiontext: "First Test", newStage: 1}, - ], - 1: [ - { name: "Target 1", x: 50, y: 50, collisionType: "alert", collisiontext: "First Test"}, - { name: "Switch Back Test 1", x: 600, y: 400, collisionType: "storypartchange", collisiontext: "First Test", newStage: 0}, - ], - }, - }, - 'Space Odyssey': { - background: '/AutoGameBackgrounds/SpaceOdysseyGameLoc.png', - inventory: [ - { type: "weapon", name: "Laser Gun", description: "A powerful laser weapon." }, - // ... more space items - ], - skills: [ - { branch: "Piloting", name: "Astro Navigation", learned: false }, - // ... more space skills - ], - objectives: [ - { id: 1, name: "Dock at the Space Station", complete: false, progress: 0 }, - { id: 2, name: "Repair the Communication Array", complete: false, progress: 0 }, - { id: 3, name: "Collect Rare Asteroid Minerals", complete: false, progress: 0 }, - { id: 4, name: "Negotiate Peace with the Alien Species", complete: false, progress: 0 }, - { id: 5, name: "Explore the Abandoned Spaceship", complete: false, progress: 0 }, - { id: 6, name: "Survive the Meteor Shower", complete: false, progress: 0 }, - { id: 7, name: "Decrypt the Ancient Space Map", complete: false, progress: 0 }, - { id: 8, name: "Win the Space Race", complete: false, progress: 0 }, - { id: 9, name: "Defend the Colony from Space Pirates", complete: false, progress: 0 }, - { id: 10, name: "Discover a New Lifeform", complete: false, progress: 0 } - // ... more space objectives - ], - storyparttargets: { - 0: [ - { name: "Target 1", x: 50, y: 50, collisionType: "alert", collisiontext: "First Test"}, - ], - }, - }, - 'Medieval Fantasy': { - background: '/AutoGameBackgrounds/MedievalFantasyGameLoc.png', - inventory: [ - { type: "weapon", name: "Longsword", description: "A sturdy steel blade." }, - // ... more medieval items - ], - skills: [ - { branch: "Piloting", name: "Astro Navigation", learned: false }, - // ... more space skills - ], - objectives: [ - { id: 1, name: "Rescue the Captured Knight", complete: false, progress: 0 }, - { id: 2, name: "Find the Lost Artifact", complete: false, progress: 0 }, - { id: 3, name: "Defeat the Dragon", complete: false, progress: 0 }, - { id: 4, name: "Win the Archery Tournament", complete: false, progress: 0 }, - { id: 5, name: "Break the Evil Curse", complete: false, progress: 0 }, - { id: 6, name: "Uncover the Secret of the Ancient Ruins", complete: false, progress: 0 }, - { id: 7, name: "Protect the Village from Bandits", complete: false, progress: 0 }, - { id: 8, name: "Retrieve the Stolen Royal Jewels", complete: false, progress: 0 }, - { id: 9, name: "Discover the Hidden Enchanted Forest", complete: false, progress: 0 }, - { id: 10, name: "Master the Forbidden Magic Spell", complete: false, progress: 0 } - // ... more space objectives - ], - storyparttargets: { - 0: [ - { name: "Castle", x: 940, y: 460, collisionType: "alert", collisiontext: "The King of this land has summoned you to find and release his champion Daryl the Knight. Find him and free him"}, - { name: "Hidden Space", x: 460, y: 570, collisionType: "alert", collisiontext: "Seems like a hidden space. Nobody is here currently."}, - { name: "Home", x: 640, y: 500, collisionType: "modal", modalConfig: { - title: "Your Space", - content: "Rest and prepare for your tasks. Sometimes you hear noises in the area but this is the area with least interference", - actions: [ - {label: "Ask for guidance on next move", action: "askforDirections"}, - {label: "Buy an Axe", action: "buyAxeAlert"}, - // ... more actions if necessary - ]}, - }, - ], - }, - // ... skills, objectives, and targets for medieval theme - }, - 'Cyberpunk': { - background: '/AutoGameBackgrounds/CyberpunkGameLoc.png', - inventory: [ - { type: "weapon", name: "Plasma Rifle", description: "A high-tech firearm with plasma rounds." }, - { type: "armor", name: "NanoSuit", description: "Protects with reactive nano technology." }, - { type: "consumable", name: "Stim Pack", description: "Enhances reflexes temporarily." }, - // ... more cyberpunk items - ], - // ... skills, objectives, and targets for cyberpunk theme - skills: [ - { branch: "Hacking", name: "Cyber Intrusion", learned: false }, - { branch: "Combat", name: "Gun Kata", learned: false }, - { branch: "Stealth", name: "Cloaking", learned: false }, - // ... more space skills - ], - objectives: [ - { id: 1, name: "Hack the Mainframe", complete: false, progress: 0 }, - { id: 2, name: "Escape the Megacorp Security", complete: false, progress: 0 }, - { id: 3, name: "Infiltrate the Underground Hacker Group", complete: false, progress: 0 }, - { id: 4, name: "Negotiate a Truce with the Rival Gang", complete: false, progress: 0 }, - { id: 5, name: "Expose the Corrupt Politician", complete: false, progress: 0 }, - { id: 6, name: "Survive the Drone Assault", complete: false, progress: 0 }, - { id: 7, name: "Retrieve the Stolen Cybernetic Tech", complete: false, progress: 0 }, - { id: 8, name: "Win the Street Race in Neo-Tokyo", complete: false, progress: 0 }, - { id: 9, name: "Decrypt the Corporate Data Files", complete: false, progress: 0 }, - { id: 10, name: "Disarm the City-Wide Neural Bomb", complete: false, progress: 0 } - - // ... more space objectives - ], - storyparttargets: { - 0: [ - { name: "Target 1", x: 50, y: 50, collisionType: "alert", collisiontext: "First Test"}, - { name: "MegaCorp Server", x: 200, y: 50, collisionType: "alert", collisiontext: "First Test"}, - { name: "City Police", x: 50, y: 250, collisionType: "alert", collisiontext: "First Test"}, - { name: "Rival Gang", x: 550, y: 550, collisionType: "alert", collisiontext: "First Test"}, - ], - }, - }, - 'Super Teacher': { - background: '/AutoGameBackgrounds/SuperTeacherGameLoc.png', - inventory: [ - { type: "book", name: "Math Advice", description: "Useful topical knowledge." }, - { type: "book", name: "Science Advice", description: "Useful topical knowledge." }, - { type: "book", name: "English Advice", description: "Useful topical knowledge." }, - { type: "book", name: "Economics Advice", description: "Useful topical knowledge." }, - // ... more space items - ], - skills: [ - { branch: "Multitask", name: "Movement Speed", learned: false }, - { branch: "Multitask", name: "Stop Window Interference for 1 min", learned: false }, - // ... more space skills - ], - objectives: [ - { id: "Mission 1", name: "Get the children to grade one 1 level", complete: false }, - { id: "Mission 2", name: "Get the children to grade one 2 level", complete: false }, - { id: "Mission 3", name: "Get the children to grade one 3 level", complete: false }, - // ... more space objectives - ], - // ... and so on for targets - storyparttargets: { - 0: [ - { name: "Super Teacher Toolkit", x: 1000, y: 330, collisionType: "alert", collisiontext: "First Test"}, - { name: "Random Noise Interference", x: 250, y: 110, collisionType: "alert", collisiontext: "First Test"}, - { name: "Student 1", x: 310, y: 620, collisionType: "alert", collisiontext: "Attention fully restored. Needs reasoning help with english"}, - { name: "Student 2", x: 660, y: 610, collisionType: "alert", collisiontext: "Attention fully restored. Doesnt speak english."}, - { name: "Student 3", x: 1010, y: 620, collisionType: "alert", collisiontext: "Attention fully restored. Needs reasoning help with math"}, - ], - } - }, - 'Fantasy Adventure': { - background: '/AutoGameBackgrounds/eldoria_background.png', - inventory: [ - { type: "book", name: "Book of Eldrak", description: "An ancient tome containing half of a map." }, - { type: "amulet", name: "Peculiar Amulet", description: "A mysterious amulet bought in Meridia, reveals the unseen." }, - // ... more fantasy items - ], - skills: [ - { branch: "Combat", name: "Sword Mastery", learned: false }, - { branch: "Magic", name: "Elemental Control", learned: false }, - // ... more fantasy skills - ], - objectives: [ - { id: "FindBook", name: "Find the Book of Eldrak", complete: false }, - { id: "GetAmulet", name: "Acquire the Peculiar Amulet", complete: false }, - { id: "DiscoverArtefact", name: "Uncover the Artefact of Vorin", complete: false }, - // ... more fantasy objectives - ], - storyparttargets: { - 0: [ - { name: "Eldoria Main Square", x: 410, y: 590, collisionType: "alert", collisiontext: "The heart of Eldoria, bustling with townsfolk and traders."}, - { name: "Lila's Home", x: 460, y: 600, collisionType: "alert", collisiontext: "A cozy cottage where Lila's quest for knowledge begins."}, - { name: "Eldoria Library", x: 360, y: 620, collisionType: "alert", collisiontext: "A treasure trove of books and maps. Lila spends hours here."}, - { name: "Whispering Forest Edge", x: 830, y: 700, collisionType: "alert", collisiontext: "The mysterious forest that borders Eldoria. Lila feels drawn to its secrets."}, - { name: "Serene Hills", x: 520, y: 490, collisionType: "alert", collisiontext: "Gentle hills that promise adventure beyond Eldoria. Lila often gazes here, dreaming of what lies beyond."}, - { name: "Marketplace", x: 360, y: 560, collisionType: "alert", collisiontext: "A place of trade and gossip. Lila hears rumors of ancient artifacts here."}, - { name: "Eldoria", x: 490, y: 420, collisionType: "storypartchange", collisiontext: "Your journey begins in the quaint town of Eldoria.", newStage: 1}, - { name: "Old Sage's Hut", x: 600, y: 480, collisionType: "modal", collisiontext: "The home of Eldoria's oldest sage. Lila seeks his wisdom for her journey."}, - ], - 1: [ - { name: "Library of Eldrak", x: 620, y: 600, collisionType: "alert", collisiontext: "You discover the ancient Book of Eldrak."}, - { name: "Meridia Market", x: 750, y: 590, collisionType: "alert", collisiontext: "A peculiar amulet catches your eye, promising to reveal the unseen."}, - { name: "Suspicious Place", x: 810, y: 530, collisionType: "decision", collisiontext: "Do you know why you came here?"}, - ], - 2: [ - { name: "Whispering Woods", x: 400, y: 300, collisionType: "modal", collisiontext: "The woods are dense and mysterious, hiding both allies and secrets."}, - ], - 3: [ - { name: "Shadowed Caverns", x: 600, y: 400, collisionType: "fight", collisiontext: "The lair of the Keepers. A test of strength and wit awaits."}, - ], - 4: [ - { name: "Return to Eldoria", x: 100, y: 500, collisionType: "end", collisiontext: "With the Artefact of Vorin, you return, forever changed by your journey."}, - ], - // ... additional story parts as needed - } - }, - }; - - /* src\MovingDotSpacePortfromReact.svelte generated by Svelte v3.59.2 */ - - const { Object: Object_1$1, console: console_1$4 } = globals; - - const file$6 = "src\\MovingDotSpacePortfromReact.svelte"; - - function get_each_context$3(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[25] = list[i]; - return child_ctx; - } + /* src\MovingDotSpaceModalBrainstorm.svelte generated by Svelte v3.59.2 */ + const file$a = "src\\MovingDotSpaceModalBrainstorm.svelte"; - function get_each_context_1(ctx, list, i) { + function get_each_context$7(ctx, list, i) { const child_ctx = ctx.slice(); - child_ctx[28] = list[i]; + child_ctx[7] = list[i]; return child_ctx; } - // (166:4) {#each themeKeys as key} - function create_each_block_1(ctx) { - let option; - let t_value = /*key*/ ctx[28] + ""; + // (52:6) {#each options as option} + function create_each_block$7(ctx) { + let button; + let t_value = /*option*/ ctx[7].text + ""; let t; + let mounted; + let dispose; + + function click_handler() { + return /*click_handler*/ ctx[4](/*option*/ ctx[7]); + } const block = { c: function create() { - option = element("option"); + button = element("button"); t = text(t_value); - option.__value = /*key*/ ctx[28]; - option.value = option.__value; - add_location(option, file$6, 166, 8, 6409); + add_location(button, file$a, 52, 8, 2162); }, m: function mount(target, anchor) { - insert_dev(target, option, anchor); - append_dev(option, t); + 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; }, - p: noop, d: function destroy(detaching) { - if (detaching) detach_dev(option); + if (detaching) detach_dev(button); + mounted = false; + dispose(); } }; dispatch_dev("SvelteRegisterBlock", { block, - id: create_each_block_1.name, + id: create_each_block$7.name, type: "each", - source: "(166:4) {#each themeKeys as key}", + source: "(52:6) {#each options as option}", ctx }); return block; } - // (176: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[25].name + ""; + function create_fragment$a(ctx) { + let div1; + let h2; let t1; - let current; + let p0; + let t3; + let p1; + let t4; + let t5; + let div0; + let t6; + let p2; + let t7; + let each_value = /*options*/ ctx[3]; + validate_each_argument(each_value); + let each_blocks = []; - target = new MovingDotTargetPortfromReact({ - props: { position: /*target*/ ctx[25] }, - $$inline: true - }); + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block$7(get_each_context$7(ctx, each_value, i)); + } 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[25].x + "px"); - set_style(span, "top", /*target*/ ctx[25].y + "px"); - add_location(span, file$6, 177, 8, 7455); - this.first = first; + div1 = element("div"); + h2 = element("h2"); + h2.textContent = "Spatial Anomaly"; + t1 = space(); + p0 = element("p"); + p0.textContent = `${/*anomalyDescription*/ ctx[2]}`; + t3 = space(); + p1 = element("p"); + t4 = text(/*analyzeResult*/ ctx[0]); + t5 = space(); + div0 = element("div"); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + t6 = space(); + p2 = element("p"); + t7 = text(/*interactResult*/ ctx[1]); + add_location(h2, file$a, 46, 4, 1987); + add_location(p0, file$a, 47, 4, 2017); + add_location(p1, file$a, 49, 4, 2086); + add_location(div0, file$a, 50, 4, 2114); + add_location(p2, file$a, 55, 4, 2258); + add_location(div1, file$a, 45, 2, 1976); }, - 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; + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); }, - p: function update(new_ctx, dirty) { - ctx = new_ctx; - const target_changes = {}; - if (dirty & /*$targets*/ 1024) target_changes.position = /*target*/ ctx[25]; - target.$set(target_changes); - if ((!current || dirty & /*$targets*/ 1024) && t1_value !== (t1_value = /*target*/ ctx[25].name + "")) set_data_dev(t1, t1_value); + m: function mount(target, anchor) { + insert_dev(target, div1, anchor); + append_dev(div1, h2); + append_dev(div1, t1); + append_dev(div1, p0); + append_dev(div1, t3); + append_dev(div1, p1); + append_dev(p1, t4); + append_dev(div1, t5); + append_dev(div1, div0); - if (!current || dirty & /*$targets*/ 1024) { - set_style(span, "left", /*target*/ ctx[25].x + "px"); + for (let i = 0; i < each_blocks.length; i += 1) { + if (each_blocks[i]) { + each_blocks[i].m(div0, null); + } } - if (!current || dirty & /*$targets*/ 1024) { - set_style(span, "top", /*target*/ ctx[25].y + "px"); - } - }, - i: function intro(local) { - if (current) return; - transition_in(target.$$.fragment, local); - current = true; + append_dev(div1, t6); + append_dev(div1, p2); + append_dev(p2, t7); }, - o: function outro(local) { - transition_out(target.$$.fragment, local); - current = false; + p: function update(ctx, [dirty]) { + if (dirty & /*analyzeResult*/ 1) set_data_dev(t4, /*analyzeResult*/ ctx[0]); + + if (dirty & /*options*/ 8) { + each_value = /*options*/ ctx[3]; + validate_each_argument(each_value); + let i; + + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context$7(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block$7(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(div0, null); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value.length; + } + + if (dirty & /*interactResult*/ 2) set_data_dev(t7, /*interactResult*/ ctx[1]); }, + i: noop, + o: noop, d: function destroy(detaching) { - if (detaching) detach_dev(first); - destroy_component(target, detaching); - if (detaching) detach_dev(t0); - if (detaching) detach_dev(span); + if (detaching) detach_dev(div1); + destroy_each(each_blocks, detaching); } }; dispatch_dev("SvelteRegisterBlock", { block, - id: create_each_block$3.name, - type: "each", - source: "(176:4) {#each $targets as target (target.name)}", + id: create_fragment$a.name, + type: "component", + source: "", ctx }); return block; } - // (182:4) {#if isModalOpen} - function create_if_block$3(ctx) { - let modal; - let current; + function ignoreAnomaly() { + + } // Code to ignore the anomaly and continue the game + // ... - modal = new MovingDotSpaceSimpleModal({ - props: { - isOpen: /*isModalOpen*/ ctx[3], - onClose: /*handleModalClose*/ ctx[16], - title: /*currentcollisiontitletext*/ ctx[4], - content: /*currentcollisiontext*/ ctx[5], - items: /*currentcollisionitems*/ ctx[6], - currentTheme: /*currentTheme*/ ctx[8] - }, - $$inline: true - }); + function instance$a($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('MovingDotSpaceModalBrainstorm', slots, []); + let anomalyDescription = "A massive spatial anomaly has been detected in your vicinity. Scanner readings indicate it could be a wormhole or a highly unstable nebula. Proceed with caution."; - const block = { - c: function create() { - create_component(modal.$$.fragment); - }, - m: function mount(target, anchor) { - mount_component(modal, target, anchor); - current = true; - }, - p: function update(ctx, dirty) { - const modal_changes = {}; - if (dirty & /*isModalOpen*/ 8) modal_changes.isOpen = /*isModalOpen*/ ctx[3]; - if (dirty & /*currentcollisiontitletext*/ 16) modal_changes.title = /*currentcollisiontitletext*/ ctx[4]; - if (dirty & /*currentcollisiontext*/ 32) modal_changes.content = /*currentcollisiontext*/ ctx[5]; - if (dirty & /*currentcollisionitems*/ 64) modal_changes.items = /*currentcollisionitems*/ ctx[6]; - if (dirty & /*currentTheme*/ 256) modal_changes.currentTheme = /*currentTheme*/ ctx[8]; - modal.$set(modal_changes); - }, - i: function intro(local) { - if (current) return; - transition_in(modal.$$.fragment, local); - current = true; + let options = [ + { + text: "Analyze Anomaly", + action: analyzeAnomaly }, - o: function outro(local) { - transition_out(modal.$$.fragment, local); - current = false; + { + text: "Interact with Anomaly", + action: interactAnomaly }, - d: function destroy(detaching) { - destroy_component(modal, detaching); + { + text: "Ignore Anomaly", + action: ignoreAnomaly } - }; + ]; - dispatch_dev("SvelteRegisterBlock", { - block, - id: create_if_block$3.name, - type: "if", - source: "(182:4) {#if isModalOpen}", - ctx + let analyzeResult = ""; + let interactResult = ""; + + onMount(() => { + // Perform initial anomaly scan + analyzeAnomaly(); }); - return block; - } + function analyzeAnomaly() { + // Simulate anomaly analysis + setTimeout( + () => { + $$invalidate(0, analyzeResult = "Scans indicate the anomaly is a highly volatile wormhole. Tampering with it could be extremely dangerous or potentially open up new regions of space."); + }, + 2000 + ); + } - function create_fragment$6(ctx) { - let t0; - let select; - let t1; - let dotgamethememanager; - let t2; - let div1; - let canvas_1; + function interactAnomaly() { + // Simulate anomaly interaction + setTimeout( + () => { + const randomOutcome = Math.random(); + + if (randomOutcome < 0.3) { + $$invalidate(1, interactResult = "Your attempt to interact with the wormhole has destabilized it, causing severe damage to your ship's systems. You'll need to find a safe haven for repairs."); + } else if (randomOutcome < 0.6) { + $$invalidate(1, interactResult = "The wormhole seems to have transported you to an unknown region of space. Your navigational systems are scrambled, and you'll need to find a way to recalibrate them."); + } else { + $$invalidate(1, interactResult = "Your interaction with the wormhole appears to have been successful. You've discovered a hidden sector filled with valuable resources and advanced technology."); + } + }, + 3000 + ); + } + + const writable_props = []; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + const click_handler = option => option.action(); + + $$self.$capture_state = () => ({ + onMount, + anomalyDescription, + options, + analyzeResult, + interactResult, + analyzeAnomaly, + interactAnomaly, + ignoreAnomaly + }); + + $$self.$inject_state = $$props => { + if ('anomalyDescription' in $$props) $$invalidate(2, anomalyDescription = $$props.anomalyDescription); + if ('options' in $$props) $$invalidate(3, options = $$props.options); + if ('analyzeResult' in $$props) $$invalidate(0, analyzeResult = $$props.analyzeResult); + if ('interactResult' in $$props) $$invalidate(1, interactResult = $$props.interactResult); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [analyzeResult, interactResult, anomalyDescription, options, click_handler]; + } + + class MovingDotSpaceModalBrainstorm extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$a, create_fragment$a, safe_not_equal, {}); + + dispatch_dev("SvelteRegisterComponent", { + component: this, + tagName: "MovingDotSpaceModalBrainstorm", + options, + id: create_fragment$a.name + }); + } + } + + /* src\MovingDotSpaceGameFind.svelte generated by Svelte v3.59.2 */ + + const file$9 = "src\\MovingDotSpaceGameFind.svelte"; + + function get_each_context$6(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[9] = list[i]; + child_ctx[11] = i; + return child_ctx; + } + + function get_each_context_1$2(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[12] = list[i]; + child_ctx[14] = i; + return child_ctx; + } + + // (63:4) {:else} + function create_else_block$1(ctx) { + let p; + + const block = { + c: function create() { + p = element("p"); + p.textContent = "Game over. Try again!"; + add_location(p, file$9, 63, 6, 1832); + }, + 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_else_block$1.name, + type: "else", + source: "(63:4) {:else}", + ctx + }); + + return block; + } + + // (61:34) + function create_if_block_1$2(ctx) { + let p; + + const block = { + c: function create() { + p = element("p"); + p.textContent = "You won! 🎉"; + add_location(p, file$9, 61, 6, 1793); + }, + 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$2.name, + type: "if", + source: "(61:34) ", + ctx + }); + + return block; + } + + // (59:4) {#if gameState === 'playing'} + function create_if_block$5(ctx) { + let p; + let t0; + let t1; + + const block = { + c: function create() { + p = element("p"); + t0 = text("Presses Remaining: "); + t1 = text(/*pressesRemaining*/ ctx[0]); + add_location(p, file$9, 59, 6, 1705); + }, + m: function mount(target, anchor) { + insert_dev(target, p, anchor); + append_dev(p, t0); + append_dev(p, t1); + }, + p: function update(ctx, dirty) { + if (dirty & /*pressesRemaining*/ 1) set_data_dev(t1, /*pressesRemaining*/ ctx[0]); + }, + d: function destroy(detaching) { + if (detaching) detach_dev(p); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block$5.name, + type: "if", + source: "(59:4) {#if gameState === 'playing'}", + ctx + }); + + return block; + } + + // (71:6) {#each row as cell, colIndex} + function create_each_block_1$2(ctx) { + let button; + + let t0_value = (/*cell*/ ctx[12].pressed + ? /*rowIndex*/ ctx[11] === /*correctItem*/ ctx[1].row && /*colIndex*/ ctx[14] === /*correctItem*/ ctx[1].col + ? '✅' + : '❌' + : '') + ""; + + let t0; + let t1; + let button_disabled_value; + let mounted; + let dispose; + + function click_handler() { + return /*click_handler*/ ctx[6](/*rowIndex*/ ctx[11], /*colIndex*/ ctx[14]); + } + + const block = { + c: function create() { + button = element("button"); + t0 = text(t0_value); + t1 = space(); + button.disabled = button_disabled_value = /*gameState*/ ctx[2] !== 'playing'; + attr_dev(button, "class", "svelte-p3ubim"); + toggle_class(button, "pressed", /*cell*/ ctx[12].pressed); + add_location(button, file$9, 71, 8, 2045); + }, + 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 & /*grid, correctItem*/ 10 && t0_value !== (t0_value = (/*cell*/ ctx[12].pressed + ? /*rowIndex*/ ctx[11] === /*correctItem*/ ctx[1].row && /*colIndex*/ ctx[14] === /*correctItem*/ ctx[1].col + ? '✅' + : '❌' + : '') + "")) set_data_dev(t0, t0_value); + + if (dirty & /*gameState*/ 4 && button_disabled_value !== (button_disabled_value = /*gameState*/ ctx[2] !== 'playing')) { + prop_dev(button, "disabled", button_disabled_value); + } + + if (dirty & /*grid*/ 8) { + toggle_class(button, "pressed", /*cell*/ ctx[12].pressed); + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(button); + mounted = false; + dispose(); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block_1$2.name, + type: "each", + source: "(71:6) {#each row as cell, colIndex}", + ctx + }); + + return block; + } + + // (70:4) {#each grid as row, rowIndex} + function create_each_block$6(ctx) { + let each_1_anchor; + let each_value_1 = /*row*/ ctx[9]; + validate_each_argument(each_value_1); + let each_blocks = []; + + for (let i = 0; i < each_value_1.length; i += 1) { + each_blocks[i] = create_each_block_1$2(get_each_context_1$2(ctx, each_value_1, i)); + } + + 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 & /*gameState, grid, pressButton, correctItem*/ 30) { + each_value_1 = /*row*/ ctx[9]; + validate_each_argument(each_value_1); + let i; + + for (i = 0; i < each_value_1.length; i += 1) { + const child_ctx = get_each_context_1$2(ctx, each_value_1, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block_1$2(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value_1.length; + } + }, + d: function destroy(detaching) { + destroy_each(each_blocks, detaching); + if (detaching) detach_dev(each_1_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block$6.name, + type: "each", + source: "(70:4) {#each grid as row, rowIndex}", + ctx + }); + + return block; + } + + function create_fragment$9(ctx) { + let div0; + let t0; + let button; + let t2; + let div1; + let mounted; + let dispose; + + function select_block_type(ctx, dirty) { + if (/*gameState*/ ctx[2] === 'playing') return create_if_block$5; + if (/*gameState*/ ctx[2] === 'won') return create_if_block_1$2; + return create_else_block$1; + } + + let current_block_type = select_block_type(ctx); + let if_block = current_block_type(ctx); + let each_value = /*grid*/ 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$6(get_each_context$6(ctx, each_value, i)); + } + + const block = { + c: function create() { + div0 = element("div"); + if_block.c(); + t0 = space(); + button = element("button"); + button.textContent = "Restart Game"; + t2 = space(); + div1 = element("div"); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + attr_dev(button, "class", "svelte-p3ubim"); + add_location(button, file$9, 65, 4, 1877); + add_location(div0, file$9, 57, 2, 1657); + attr_dev(div1, "class", "grid svelte-p3ubim"); + add_location(div1, file$9, 68, 2, 1945); + }, + 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); + if_block.m(div0, null); + append_dev(div0, t0); + append_dev(div0, button); + insert_dev(target, t2, 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(button, "click", /*resetGame*/ ctx[5], false, false, false, false); + mounted = true; + } + }, + p: function update(ctx, [dirty]) { + 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(div0, t0); + } + } + + if (dirty & /*grid, gameState, pressButton, correctItem*/ 30) { + each_value = /*grid*/ ctx[3]; + 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(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(div0); + if_block.d(); + if (detaching) detach_dev(t2); + if (detaching) detach_dev(div1); + destroy_each(each_blocks, detaching); + mounted = false; + dispose(); + } + }; + + 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('MovingDotSpaceGameFind', slots, []); + let gridSize = 10; + let maxPresses = 20; // Maximum number of presses allowed + let pressesRemaining = maxPresses; + + let correctItem = { + row: Math.floor(Math.random() * gridSize), + col: Math.floor(Math.random() * gridSize) + }; + + let gameState = "playing"; // Can be "playing", "won", or "lost" + + // Generate initial grid state + let grid = Array(gridSize).fill().map(() => Array(gridSize).fill().map(() => ({ pressed: false }))); + + function pressButton(row, col) { + if (grid[row][col].pressed || pressesRemaining === 0 || gameState !== "playing") { + return; // Ignore if already pressed or no presses left or game not in playing state + } + + $$invalidate(3, grid[row][col].pressed = true, grid); + $$invalidate(0, pressesRemaining -= 1); + + // Check for win condition + if (row === correctItem.row && col === correctItem.col) { + $$invalidate(2, gameState = "won"); + } else if (pressesRemaining === 0) { + $$invalidate(2, gameState = "lost"); + } + } + + function resetGame() { + $$invalidate(0, pressesRemaining = maxPresses); + + $$invalidate(1, correctItem = { + row: Math.floor(Math.random() * gridSize), + col: Math.floor(Math.random() * gridSize) + }); + + $$invalidate(3, grid = Array(gridSize).fill().map(() => Array(gridSize).fill().map(() => ({ pressed: false })))); + $$invalidate(2, gameState = "playing"); + } + + const writable_props = []; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + const click_handler = (rowIndex, colIndex) => pressButton(rowIndex, colIndex); + + $$self.$capture_state = () => ({ + gridSize, + maxPresses, + pressesRemaining, + correctItem, + gameState, + grid, + pressButton, + resetGame + }); + + $$self.$inject_state = $$props => { + if ('gridSize' in $$props) gridSize = $$props.gridSize; + if ('maxPresses' in $$props) maxPresses = $$props.maxPresses; + if ('pressesRemaining' in $$props) $$invalidate(0, pressesRemaining = $$props.pressesRemaining); + if ('correctItem' in $$props) $$invalidate(1, correctItem = $$props.correctItem); + if ('gameState' in $$props) $$invalidate(2, gameState = $$props.gameState); + if ('grid' in $$props) $$invalidate(3, grid = $$props.grid); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [ + pressesRemaining, + correctItem, + gameState, + grid, + pressButton, + resetGame, + click_handler + ]; + } + + class MovingDotSpaceGameFind extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$9, create_fragment$9, safe_not_equal, {}); + + dispatch_dev("SvelteRegisterComponent", { + component: this, + tagName: "MovingDotSpaceGameFind", + options, + id: create_fragment$9.name + }); + } + } + + /* src\MovingDotSpaceGameOrder.svelte generated by Svelte v3.59.2 */ + + const file$8 = "src\\MovingDotSpaceGameOrder.svelte"; + + function get_each_context$5(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[10] = list[i]; + child_ctx[12] = i; + return child_ctx; + } + + // (72:39) + function create_if_block_2(ctx) { + let p; + + const block = { + c: function create() { + p = element("p"); + p.textContent = "Incorrect order. Try again!"; + add_location(p, file$8, 72, 4, 2206); + }, + m: function mount(target, anchor) { + insert_dev(target, p, anchor); + }, + d: function destroy(detaching) { + if (detaching) detach_dev(p); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_2.name, + type: "if", + source: "(72:39) ", + ctx + }); + + return block; + } + + // (70:2) {#if gameStatus === "correct"} + function create_if_block_1$1(ctx) { + let p; + + const block = { + c: function create() { + p = element("p"); + p.textContent = "You guessed the correct order! 🎉"; + add_location(p, file$8, 70, 4, 2119); + }, + m: function mount(target, anchor) { + insert_dev(target, p, anchor); + }, + d: function destroy(detaching) { + if (detaching) detach_dev(p); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_1$1.name, + type: "if", + source: "(70:2) {#if gameStatus === \\\"correct\\\"}", + ctx + }); + + return block; + } + + // (79:4) {#each Array(gridSize) as _, i} + function create_each_block$5(ctx) { + let button; + let t0_value = /*i*/ ctx[12] + 1 + ""; + let t0; + let t1; + let mounted; + let dispose; + + function click_handler() { + return /*click_handler*/ ctx[8](/*i*/ ctx[12]); + } + + const block = { + c: function create() { + button = element("button"); + t0 = text(t0_value); + t1 = space(); + attr_dev(button, "data-number", /*i*/ ctx[12] + 1); + attr_dev(button, "class", "svelte-7k1yf9"); + toggle_class(button, "pressed", /*userOrder*/ ctx[0].includes(/*i*/ ctx[12] + 1)); + add_location(button, file$8, 79, 6, 2378); + }, + 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 & /*userOrder*/ 1) { + toggle_class(button, "pressed", /*userOrder*/ ctx[0].includes(/*i*/ ctx[12] + 1)); + } + }, + 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: "(79:4) {#each Array(gridSize) as _, i}", + ctx + }); + + return block; + } + + // (86:2) {#if !checkOnEveryPress && gameStatus === ""} + function create_if_block$4(ctx) { + let button; + let t; + let button_disabled_value; + let mounted; + let dispose; + + const block = { + c: function create() { + button = element("button"); + t = text("Check Order"); + button.disabled = button_disabled_value = /*userOrder*/ ctx[0].length !== /*gridSize*/ ctx[3]; + attr_dev(button, "class", "svelte-7k1yf9"); + add_location(button, file$8, 86, 4, 2600); + }, + m: function mount(target, anchor) { + insert_dev(target, button, anchor); + append_dev(button, t); + + if (!mounted) { + dispose = listen_dev(button, "click", /*checkOrder*/ ctx[5], false, false, false, false); + mounted = true; + } + }, + p: function update(ctx, dirty) { + if (dirty & /*userOrder*/ 1 && button_disabled_value !== (button_disabled_value = /*userOrder*/ ctx[0].length !== /*gridSize*/ ctx[3])) { + prop_dev(button, "disabled", button_disabled_value); + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(button); + mounted = false; + dispose(); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block$4.name, + type: "if", + source: "(86:2) {#if !checkOnEveryPress && gameStatus === \\\"\\\"}", + ctx + }); + + return block; + } + + function create_fragment$8(ctx) { + let div0; + let input; + let t0; + let label; + let t2; + let t3; + let button; + let t5; + let div1; + let t6; + let if_block1_anchor; + let mounted; + let dispose; + + function select_block_type(ctx, dirty) { + if (/*gameStatus*/ ctx[2] === "correct") return create_if_block_1$1; + if (/*gameStatus*/ ctx[2] === "incorrect") return create_if_block_2; + } + + let current_block_type = select_block_type(ctx); + let if_block0 = current_block_type && current_block_type(ctx); + let each_value = Array(/*gridSize*/ 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)); + } + + let if_block1 = !/*checkOnEveryPress*/ ctx[1] && /*gameStatus*/ ctx[2] === "" && create_if_block$4(ctx); + + const block = { + c: function create() { + div0 = element("div"); + input = element("input"); + t0 = space(); + label = element("label"); + label.textContent = "Check order on every press"; + t2 = space(); + if (if_block0) if_block0.c(); + t3 = space(); + button = element("button"); + button.textContent = "Restart Game"; + t5 = space(); + div1 = element("div"); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + t6 = space(); + if (if_block1) if_block1.c(); + if_block1_anchor = empty(); + attr_dev(input, "type", "checkbox"); + add_location(input, file$8, 65, 4, 1962); + add_location(label, file$8, 66, 4, 2024); + attr_dev(div0, "class", "controls svelte-7k1yf9"); + add_location(div0, file$8, 64, 2, 1934); + attr_dev(button, "class", "svelte-7k1yf9"); + add_location(button, file$8, 75, 2, 2257); + attr_dev(div1, "class", "grid svelte-7k1yf9"); + add_location(div1, file$8, 77, 2, 2315); + }, + 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, input); + input.checked = /*checkOnEveryPress*/ ctx[1]; + append_dev(div0, t0); + append_dev(div0, label); + insert_dev(target, t2, anchor); + if (if_block0) if_block0.m(target, anchor); + insert_dev(target, t3, anchor); + insert_dev(target, button, anchor); + insert_dev(target, t5, 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); + } + } + + insert_dev(target, t6, anchor); + if (if_block1) if_block1.m(target, anchor); + insert_dev(target, if_block1_anchor, anchor); + + if (!mounted) { + dispose = [ + listen_dev(input, "change", /*input_change_handler*/ ctx[7]), + listen_dev(button, "click", /*resetGame*/ ctx[6], false, false, false, false) + ]; + + mounted = true; + } + }, + p: function update(ctx, [dirty]) { + if (dirty & /*checkOnEveryPress*/ 2) { + input.checked = /*checkOnEveryPress*/ ctx[1]; + } + + if (current_block_type !== (current_block_type = select_block_type(ctx))) { + if (if_block0) if_block0.d(1); + if_block0 = current_block_type && current_block_type(ctx); + + if (if_block0) { + if_block0.c(); + if_block0.m(t3.parentNode, t3); + } + } + + if (dirty & /*userOrder, handlePress*/ 17) { + each_value = Array(/*gridSize*/ 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(div1, null); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value.length; + } + + if (!/*checkOnEveryPress*/ ctx[1] && /*gameStatus*/ ctx[2] === "") { + if (if_block1) { + if_block1.p(ctx, dirty); + } else { + if_block1 = create_if_block$4(ctx); + if_block1.c(); + if_block1.m(if_block1_anchor.parentNode, if_block1_anchor); + } + } else if (if_block1) { + if_block1.d(1); + if_block1 = null; + } + }, + i: noop, + o: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(div0); + if (detaching) detach_dev(t2); + + if (if_block0) { + if_block0.d(detaching); + } + + if (detaching) detach_dev(t3); + if (detaching) detach_dev(button); + if (detaching) detach_dev(t5); + if (detaching) detach_dev(div1); + destroy_each(each_blocks, detaching); + if (detaching) detach_dev(t6); + if (if_block1) if_block1.d(detaching); + if (detaching) detach_dev(if_block1_anchor); + mounted = false; + run_all(dispose); + } + }; + + 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('MovingDotSpaceGameOrder', slots, []); + let gridSize = 4; // Grid size for simplicity + let correctOrder = Array.from({ length: gridSize }, (_, i) => i + 1).sort(() => 0.5 - Math.random()); // Randomized correct order + let userOrder = []; // User's order + let checkOnEveryPress = false; // Start with manual check + let gameStatus = ""; // "", "correct", or "incorrect" + + function handlePress(number) { + if (userOrder.includes(number) || gameStatus) return; // Ignore if already pressed or game has ended + userOrder.push(number); + + if (!checkOnEveryPress) { + // Add the "pressed" class to the pressed button + const pressedButton = document.querySelector(`button[data-number="${number}"]`); + + pressedButton.classList.add("pressed"); + } else { + checkOrder(); + } + } + + function checkOrder() { + for (let i = 0; i < userOrder.length; i++) { + if (userOrder[i] !== correctOrder[i]) { + $$invalidate(2, gameStatus = "incorrect"); + return; + } + } + + if (userOrder.length === correctOrder.length) { + $$invalidate(2, gameStatus = "correct"); + } + } + + function resetGame() { + $$invalidate(0, userOrder = []); + $$invalidate(2, gameStatus = ""); + correctOrder.sort(() => 0.5 - Math.random()); // Shuffle for a new game + + // Remove the "pressed" class from all buttons + const pressedButtons = document.querySelectorAll(".pressed"); + + pressedButtons.forEach(button => button.classList.remove("pressed")); + } + + const writable_props = []; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + function input_change_handler() { + checkOnEveryPress = this.checked; + $$invalidate(1, checkOnEveryPress); + } + + const click_handler = i => handlePress(i + 1); + + $$self.$capture_state = () => ({ + gridSize, + correctOrder, + userOrder, + checkOnEveryPress, + gameStatus, + handlePress, + checkOrder, + resetGame + }); + + $$self.$inject_state = $$props => { + if ('gridSize' in $$props) $$invalidate(3, gridSize = $$props.gridSize); + if ('correctOrder' in $$props) correctOrder = $$props.correctOrder; + if ('userOrder' in $$props) $$invalidate(0, userOrder = $$props.userOrder); + if ('checkOnEveryPress' in $$props) $$invalidate(1, checkOnEveryPress = $$props.checkOnEveryPress); + if ('gameStatus' in $$props) $$invalidate(2, gameStatus = $$props.gameStatus); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [ + userOrder, + checkOnEveryPress, + gameStatus, + gridSize, + handlePress, + checkOrder, + resetGame, + input_change_handler, + click_handler + ]; + } + + class MovingDotSpaceGameOrder extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$8, create_fragment$8, safe_not_equal, {}); + + dispatch_dev("SvelteRegisterComponent", { + component: this, + tagName: "MovingDotSpaceGameOrder", + options, + id: create_fragment$8.name + }); + } + } + + // themeConfig.js + const themes = { + 'User Custom': { + background: '/AutoGameBackgrounds/space_background.png', + inventory: [ + { type: "weapon", name: "Random waepon", description: "A powerful weapon." }, + // ... more space items + ], + skills: [ + { branch: "Skill Group 1", name: "Skill One", learned: false }, + // ... more space skills + ], + objectives: [ + { id: "Mission 1", name: "Mission Details", complete: false }, + // ... more space objectives + ], + // ... and so on for targets + storyparttargets: { + 0: [ + { name: "Target 1", x: 50, y: 50, collisionType: "alert", collisiontext: "First Test"}, + ], + } + }, + 'Default': { + background: '/AutoGameBackgrounds/1stGameLoc123.png', + inventory: [ + { type: "weapon", name: "Sword", description: "A sharp blade." }, + { type: "armor", name: "Shield", description: "Protects against attacks." }, + { type: "consumable", name: "Health Potion", description: "Restores health." }, + // ... more space items + ], + skills: [ + { branch: "Combat", name: "Basic Attack", learned: false }, + { branch: "Magic", name: "Fireball", learned: false }, + { branch: "Stealth", name: "Sneak", learned: false }, + // ... more space skills + ], + objectives: [ + { id: "Seperate", name: "Visit Mountain Peak", complete: false }, + { id: "Mission 1", name: "Intercept The Courier (Search the Locations)", complete: false }, + { id: "Mission 1", name: "Deliver the package to Market Stall", complete: false }, + // ... more space objectives + ], + // ... and so on for targets + storyparttargets: { + 0: [ + { name: "Target 1", x: 50, y: 50, collisionType: "alert", collisiontext: "First Test"}, + { name: "Target 2", x: 100, y: 100, collisionType: "", collisiontext: ""}, + { name: "Entrance", x: 995, y: 660, collisionType: "modal", modalConfig: { + title: "Entrance", + content: "You've reached the Entrance. What's your next step?", + actions: [ + {label: "Ask for guidance on next move", action: "askforDirections"}, + {label: "Buy an Axe", action: "buyAxeAlert"}, + // ... more actions if necessary + ]}, + }, + { name: "Market Stall", x: 200, y: 300, collisionType: "", collisiontext: "" }, // A market stall in the bustling market area. + { name: "Inn Entrance", x: 400, y: 450, collisionType: "", collisiontext: "" }, // The entrance to the inn for rest or information. + { name: "Town Hall", x: 600, y: 350, collisionType: "", collisiontext: "" }, // The entrance to the town hall for quests. + { name: "Fountain", x: 500, y: 500, collisionType: "", collisiontext: "" }, // A fountain in the town square as a meeting point. + { name: "Bridge", x: 1100, y: 700, collisionType: "", collisiontext: "" }, // A bridge in the mystical forest area. + { name: "Waterfall", x: 1300, y: 800, collisionType: "", collisiontext: "" }, // A waterfall that could hide secrets or treasures. + { name: "Mountain Peak", x: 1500, y: 100, collisionType: "", collisiontext: "" }, + //{ name: "Mysterious Stranger", x: 350, y: 550, collisionType: "alert", collisiontext: "Beware the hidden caves in the north." }, + //{ name: "Hidden Cave", x: 1200, y: 400, collisionType: "changeBackgroundColor", color: "#0B3D91" }, + //{ name: "Ancient Tree", x: 300, y: 700, collisionType: "playSound", soundUrl: "tree_whisper.mp3" }, + //{ name: "Forgotten Monument", x: 700, y: 800, collisionType: "startAnimation", elementId: "monument", animationClass: "glow" }, + //{ name: "Wizard's Tower", x: 950, y: 150, collisionType: "rotateDot" }, + //{ name: "Lakeside", x: 1400, y: 600, collisionType: "changeDotColor", color: "#00BFFF" }, + //{ name: "Dragon's Lair", x: 1600, y: 200, collisionType: "incrementScore", incrementValue: 50 }, + //{ name: "Abandoned Shipwreck", x: 1300, y: 500, collisionType: "shrinkDot" }, + + { name: "Switch Test 1", x: 700, y: 700, collisionType: "storypartchange", collisiontext: "First Test", newStage: 1}, + ], + 1: [ + { name: "Target 1", x: 50, y: 50, collisionType: "alert", collisiontext: "First Test"}, + { name: "Switch Back Test 1", x: 600, y: 400, collisionType: "storypartchange", collisiontext: "First Test", newStage: 0}, + ], + }, + }, + 'Space Odyssey': { + background: '/AutoGameBackgrounds/SpaceOdysseyGameLoc.png', + inventory: [ + { type: "weapon", name: "Laser Gun", description: "A powerful laser weapon." }, + // ... more space items + ], + skills: [ + { branch: "Piloting", name: "Astro Navigation", learned: false }, + // ... more space skills + ], + objectives: [ + { id: 1, name: "Dock at the Space Station", complete: false, progress: 0 }, + { id: 2, name: "Repair the Communication Array", complete: false, progress: 0 }, + { id: 3, name: "Collect Rare Asteroid Minerals", complete: false, progress: 0 }, + { id: 4, name: "Negotiate Peace with the Alien Species", complete: false, progress: 0 }, + { id: 5, name: "Explore the Abandoned Spaceship", complete: false, progress: 0 }, + { id: 6, name: "Survive the Meteor Shower", complete: false, progress: 0 }, + { id: 7, name: "Decrypt the Ancient Space Map", complete: false, progress: 0 }, + { id: 8, name: "Win the Space Race", complete: false, progress: 0 }, + { id: 9, name: "Defend the Colony from Space Pirates", complete: false, progress: 0 }, + { id: 10, name: "Discover a New Lifeform", complete: false, progress: 0 } + // ... more space objectives + ], + storyparttargets: { + 0: [ + { name: "Target 1", x: 50, y: 50, collisionType: "alert", collisiontext: "First Test"}, + ], + }, + }, + 'Medieval Fantasy': { + background: '/AutoGameBackgrounds/MedievalFantasyGameLoc.png', + inventory: [ + { type: "weapon", name: "Longsword", description: "A sturdy steel blade." }, + // ... more medieval items + ], + skills: [ + { branch: "Piloting", name: "Astro Navigation", learned: false }, + // ... more space skills + ], + objectives: [ + { id: 1, name: "Rescue the Captured Knight", complete: false, progress: 0 }, + { id: 2, name: "Find the Lost Artifact", complete: false, progress: 0 }, + { id: 3, name: "Defeat the Dragon", complete: false, progress: 0 }, + { id: 4, name: "Win the Archery Tournament", complete: false, progress: 0 }, + { id: 5, name: "Break the Evil Curse", complete: false, progress: 0 }, + { id: 6, name: "Uncover the Secret of the Ancient Ruins", complete: false, progress: 0 }, + { id: 7, name: "Protect the Village from Bandits", complete: false, progress: 0 }, + { id: 8, name: "Retrieve the Stolen Royal Jewels", complete: false, progress: 0 }, + { id: 9, name: "Discover the Hidden Enchanted Forest", complete: false, progress: 0 }, + { id: 10, name: "Master the Forbidden Magic Spell", complete: false, progress: 0 }, + // ... more space objectives + ], + storyparttargets: { + 0: [ + { name: "Castle", x: 940, y: 460, collisionType: "alert", collisiontext: "The King of this land has summoned you to find and release his champion Daryl the Knight. Find him and free him"}, + { name: "Hidden Space", x: 460, y: 570, collisionType: "alert", collisiontext: "Seems like a hidden space. Nobody is here currently."}, + { name: "Home", x: 640, y: 500, collisionType: "modal", modalConfig: { + title: "Your Space", + content: "Rest and prepare for your tasks. Sometimes you hear noises in the area but this is the area with least interference", + actions: [ + {label: "Ask for guidance on next move", action: "askforDirections"}, + {label: "Buy an Axe", action: "buyAxeAlert"}, + // ... more actions if necessary + ]}, + }, + { name: "Marketplace", x: 1100, y: 470, collisionType: "modal", modalConfig: { + title: "Place to find information and items", + content: "A bustling marketplace", + actions: [ + {label: "Ask for guidance on next move", action: "askforDirections"}, + {label: "Buy an Axe", action: "buyAxeAlert"}, + {label: "Ask about the knight", action: "knightalert", message: "The armourer said he went to see the mini waterfall for some relaxtion"}, + // ... more actions if necessary + ]}, + }, + { name: "Mini Waterfall", x: 500, y: 640, collisionType: "alert", collisiontext: "A weird waterfall is upfront. It strangely gives a calming vibe. Nobody is here currently but there seems to be a trail of water leading to a closeby location .... "}, + ], + }, + // ... skills, objectives, and targets for medieval theme + }, + 'Cyberpunk': { + background: '/AutoGameBackgrounds/CyberpunkGameLoc.png', + inventory: [ + { type: "weapon", name: "Plasma Rifle", description: "A high-tech firearm with plasma rounds." }, + { type: "armor", name: "NanoSuit", description: "Protects with reactive nano technology." }, + { type: "consumable", name: "Stim Pack", description: "Enhances reflexes temporarily." }, + // ... more cyberpunk items + ], + // ... skills, objectives, and targets for cyberpunk theme + skills: [ + { branch: "Hacking", name: "Cyber Intrusion", learned: false }, + { branch: "Combat", name: "Gun Kata", learned: false }, + { branch: "Stealth", name: "Cloaking", learned: false }, + // ... more space skills + ], + objectives: [ + { id: 1, name: "Hack the Mainframe", complete: false, progress: 0 }, + { id: 2, name: "Escape the Megacorp Security", complete: false, progress: 0 }, + { id: 3, name: "Infiltrate the Underground Hacker Group", complete: false, progress: 0 }, + { id: 4, name: "Negotiate a Truce with the Rival Gang", complete: false, progress: 0 }, + { id: 5, name: "Expose the Corrupt Politician", complete: false, progress: 0 }, + { id: 6, name: "Survive the Drone Assault", complete: false, progress: 0 }, + { id: 7, name: "Retrieve the Stolen Cybernetic Tech", complete: false, progress: 0 }, + { id: 8, name: "Win the Street Race in Neo-Tokyo", complete: false, progress: 0 }, + { id: 9, name: "Decrypt the Corporate Data Files", complete: false, progress: 0 }, + { id: 10, name: "Disarm the City-Wide Neural Bomb", complete: false, progress: 0 } + + // ... more space objectives + ], + storyparttargets: { + 0: [ + { name: "Target 1", x: 50, y: 50, collisionType: "alert", collisiontext: "First Test"}, + { name: "MegaCorp Server", x: 200, y: 50, collisionType: "alert", collisiontext: "First Test"}, + { name: "City Police", x: 50, y: 250, collisionType: "alert", collisiontext: "First Test"}, + { name: "Rival Gang", x: 550, y: 550, collisionType: "alert", collisiontext: "First Test"}, + ], + }, + }, + 'Super Teacher': { + background: '/AutoGameBackgrounds/SuperTeacherGameLoc.png', + inventory: [ + { type: "book", name: "Math Advice", description: "Useful topical knowledge." }, + { type: "book", name: "Science Advice", description: "Useful topical knowledge." }, + { type: "book", name: "English Advice", description: "Useful topical knowledge." }, + { type: "book", name: "Economics Advice", description: "Useful topical knowledge." }, + // ... more space items + ], + skills: [ + { branch: "Multitask", name: "Movement Speed", learned: false }, + { branch: "Multitask", name: "Stop Window Interference for 1 min", learned: false }, + // ... more space skills + ], + objectives: [ + { id: "Mission 1", name: "Get the children to grade one 1 level", complete: false }, + { id: "Mission 2", name: "Get the children to grade one 2 level", complete: false }, + { id: "Mission 3", name: "Get the children to grade one 3 level", complete: false }, + // ... more space objectives + ], + // ... and so on for targets + storyparttargets: { + 0: [ + { name: "Super Teacher Toolkit", x: 1000, y: 330, collisionType: "alert", collisiontext: "First Test"}, + { name: "Random Noise Interference", x: 250, y: 110, collisionType: "alert", collisiontext: "First Test"}, + { name: "Student 1", x: 310, y: 620, collisionType: "alert", collisiontext: "Attention fully restored. Needs reasoning help with english"}, + { name: "Student 2", x: 660, y: 610, collisionType: "alert", collisiontext: "Attention fully restored. Doesnt speak english."}, + { name: "Student 3", x: 1010, y: 620, collisionType: "alert", collisiontext: "Attention fully restored. Needs reasoning help with math"}, + ], + } + }, + 'Fantasy Adventure': { + background: '/AutoGameBackgrounds/eldoria_background.png', + inventory: [ + { type: "book", name: "Book of Eldrak", description: "An ancient tome containing half of a map." }, + { type: "amulet", name: "Peculiar Amulet", description: "A mysterious amulet bought in Meridia, reveals the unseen." }, + { type: "map", name: "Tattered Map", description: "A map hinting at significant locations within the Whispering Woods." }, + { type: "artifact", name: "Magical Acorn", description: "A gift from the forest spirit, promising future aid." }, + { type: "relic", name: "Shrine Relic", description: "A powerful artifact that enhances magical abilities, found in the Ruined Shrine." }, + { type: "record", name: "Echoing Cave Echoes", description: "A recording of whispers from the Echoing Caves, revealing secrets and hidden paths." }, + // ... more fantasy items + ], + skills: [ + { branch: "Combat", name: "Sword Mastery", learned: false }, + { branch: "Magic", name: "Elemental Control", learned: false }, + { branch: "Lore", name: "Ancient Lore", learned: true, description: "Ability to decipher old texts and understand magical artifacts, gained at the Ruined Shrine." }, + { branch: "Stealth", name: "Eavesdropping", learned: true, description: "Skill in using acoustics to eavesdrop, developed in the Echoing Caves." }, + { branch: "Stealth", name: "Stealth Movement", learned: true, description: "Improved stealth for moving unseen, honed in the Echoing Caves." }, + { branch: "Diplomacy", name: "Negotiation", learned: true, description: "Enhanced negotiation skills, honed through interaction with the spirits of the Forgotten Graveyard." }, + { branch: "Magic", name: "Artifact Mastery", learned: true, description: "Mastery over various magical artifacts collected throughout the journey." }, + // ... more fantasy skills + ], + objectives: [ + { id: "FindBook", name: "Find the Book of Eldrak", complete: false }, + { id: "GetAmulet", name: "Acquire the Peculiar Amulet", complete: false }, + { id: "DiscoverArtefact", name: "Uncover the Artefact of Vorin", complete: false }, + { id: "LeaveEldoria", name: "Leave Eldoria's Outskirts", complete: true }, + { id: "VisitAncientOak", name: "Visit the Ancient Oak", complete: true }, + { id: "ExploreCrystalClearing", name: "Explore the Crystal Clearing", complete: true }, + { id: "DiscoverRuinedShrine", name: "Discover the Ruined Shrine", complete: true }, + { id: "NavigateEchoingCaves", name: "Navigate the Echoing Caves", complete: true }, + { id: "UncoverForgottenGraveyard", name: "Uncover the Secrets of the Forgotten Graveyard", complete: true }, + { id: "MasterArtifacts", name: "Master the Use of Collected Artifacts", complete: true }, + // ... more fantasy objectives + ], + storyparttargets: { + 0: [ + { name: "Eldoria Main Square", x: 410, y: 590, collisionType: "requirementsgated", collisiontext: "The heart of Eldoria, bustling with townsfolk and traders.", requirements: (8)}, + { name: "Lila's Home", x: 460, y: 600, collisionType: "alert", collisiontext: "A cozy cottage where Lila's quest for knowledge begins."}, + { name: "Eldoria Library", x: 360, y: 620, collisionType: "alert", collisiontext: "A treasure trove of books and maps. Lila spends hours here."}, + { name: "Whispering Forest Edge", x: 830, y: 700, collisionType: "alert", collisiontext: "The mysterious forest that borders Eldoria. Lila feels drawn to its secrets."}, + { name: "Serene Hills", x: 520, y: 490, collisionType: "alert", collisiontext: "Gentle hills that promise adventure beyond Eldoria. Lila often gazes here, dreaming of what lies beyond."}, + { name: "Marketplace", x: 360, y: 560, collisionType: "alert", collisiontext: "A place of trade and gossip. Lila hears rumors of ancient artifacts here."}, + { name: "Eldoria", x: 490, y: 420, collisionType: "storypartchange", collisiontext: "Your journey begins in the quaint town of Eldoria.", newStage: 1}, + { name: "Old Sage's Hut", x: 600, y: 480, collisionType: "alert", collisiontext: "The home of Eldoria's oldest sage. Lila seeks his wisdom for her journey."}, + { name: "Eldoria's Outskirts", x: 100, y: 10, collisionType: "stats", collisiontext: "Your courage grows as you step into the unknown."}, + { name: "Tattered Map", x: 200, y: 20, collisionType: "inventory", collisiontext: "You've found a map that hints at significant locations in the Whispering Woods."}, + ], + 1: [ + { name: "Library of Eldrak", x: 620, y: 600, collisionType: "alert", collisiontext: "You discover the ancient Book of Eldrak."}, + { name: "Meridia Market", x: 750, y: 590, collisionType: "alert", collisiontext: "A peculiar amulet catches your eye, promising to reveal the unseen."}, + { name: "Suspicious Place", x: 810, y: 530, collisionType: "decision", collisiontext: "Do you know why you came here?"}, + { name: "The Ancient Oak", x: 300, y: 130, collisionType: "modal", modalConfig: { + title: "The Ancient Oak Area", + content: "The Ancient Oak stands before you,", + actions: [ + {label: "Talk to the Ancient Oak", action: "approachAncientOak"}, + // ... more actions if necessary + ]} + }, + { name: "Magical Acorn", x: 400, y: 140, collisionType: "modal", modalConfig: { + title: "Magical Acorn Area", + content: "You are drawn to the acorn but as you near it a spirit appears", + actions: [ + {label: "Talk to the spirit", action: "acquireMagicalAcorn"}, + // ... more actions if necessary + ]} + }, + ], + 2: [ + { name: "Whispering Woods", x: 400, y: 300, collisionType: "modal", collisiontext: "The woods are dense and mysterious, hiding both allies and secrets."}, + { name: "The Crystal Clearing", x: 500, y: 50, collisionType: "location", collisiontext: "Visions of potential futures flash before your eyes."}, + { name: "The Ruined Shrine", x: 600, y: 60, collisionType: "location", collisiontext: "You discover a relic among the ruins, learning about a forgotten deity."}, + ], + 3: [ + { name: "Shadowed Caverns", x: 600, y: 400, collisionType: "fight", collisiontext: "The lair of the Keepers. A test of strength and wit awaits."}, + { name: "Ancient Lore Skill", x: 370, y: 70, collisionType: "skills", collisiontext: "You've gained the skill to decipher old texts and understand magical artifacts."}, + { name: "Shrine Relic", x: 480, y: 80, collisionType: "inventory", collisiontext: "This powerful artifact enhances your magical abilities."}, + ], + 4: [ + { name: "Return to Eldoria", x: 100, y: 500, collisionType: "end", collisiontext: "With the Artefact of Vorin, you return, forever changed by your journey."}, + { name: "Echoing Cave Echoes", x: 90, y: 90, collisionType: "inventory", collisiontext: "You record the cave's whispers, a strategic item."}, + { name: "Eavesdropping Skill", x: 100, y: 100, collisionType: "skills", collisiontext: "You learn to use the cave's acoustics to eavesdrop."}, + ], + 5: [ + { name: "Stealth Skill", x: 110, y: 110, collisionType: "skills", collisiontext: "Navigating the caves, you improve your stealth."}, + { name: "Negotiation Skill", x: 120, y: 120, collisionType: "skills", collisiontext: "You've honed your negotiation skills with the spirits."}, + ], + 6: [ + { name: "Endurance Increase", x: 130, y: 130, collisionType: "stats", collisiontext: "The trials in the graveyard boost your endurance."}, + { name: "Intelligence Increase", x: 140, y: 140, collisionType: "stats", collisiontext: "Piecing together clues, your intelligence grows."}, + ], + 7: [ + { name: "Artifact Mastery Skill", x: 150, y: 150, collisionType: "skills", collisiontext: "You master the use of the artifacts you've collected."}, + ] + // ... additional story parts as needed + } + }, + }; + + /* src\MovingDotSpacePortfromReact.svelte generated by Svelte v3.59.2 */ + + const { Object: Object_1$2, console: console_1$5 } = globals; + + const file$7 = "src\\MovingDotSpacePortfromReact.svelte"; + + function get_each_context$4(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[25] = list[i]; + return child_ctx; + } + + function get_each_context_1$1(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[28] = list[i]; + return child_ctx; + } + + // (177:4) {#each themeKeys as key} + function create_each_block_1$1(ctx) { + let option; + let t_value = /*key*/ ctx[28] + ""; + let t; + + const block = { + c: function create() { + option = element("option"); + t = text(t_value); + option.__value = /*key*/ ctx[28]; + option.value = option.__value; + add_location(option, file$7, 177, 8, 6933); + }, + m: function mount(target, anchor) { + insert_dev(target, option, anchor); + append_dev(option, t); + }, + p: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(option); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block_1$1.name, + type: "each", + source: "(177:4) {#each themeKeys as key}", + ctx + }); + + return block; + } + + // (187:4) {#each $targets as target (target.name)} + function create_each_block$4(key_1, ctx) { + let first; + let target; + let t0; + let span; + let t1_value = /*target*/ ctx[25].name + ""; + let t1; + let current; + + target = new MovingDotTargetPortfromReact({ + props: { position: /*target*/ ctx[25] }, + $$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[25].x + "px"); + set_style(span, "top", /*target*/ ctx[25].y + "px"); + add_location(span, file$7, 188, 8, 7979); + 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*/ 1024) target_changes.position = /*target*/ ctx[25]; + target.$set(target_changes); + if ((!current || dirty & /*$targets*/ 1024) && t1_value !== (t1_value = /*target*/ ctx[25].name + "")) set_data_dev(t1, t1_value); + + if (!current || dirty & /*$targets*/ 1024) { + set_style(span, "left", /*target*/ ctx[25].x + "px"); + } + + if (!current || dirty & /*$targets*/ 1024) { + set_style(span, "top", /*target*/ ctx[25].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$4.name, + type: "each", + source: "(187:4) {#each $targets as target (target.name)}", + ctx + }); + + return block; + } + + // (193:4) {#if isModalOpen} + function create_if_block$3(ctx) { + let modal; + let current; + + modal = new MovingDotSpaceSimpleModal({ + props: { + isOpen: /*isModalOpen*/ ctx[3], + onClose: /*handleModalClose*/ ctx[16], + title: /*currentcollisiontitletext*/ ctx[4], + content: /*currentcollisiontext*/ ctx[5], + items: /*currentcollisionitems*/ ctx[6], + currentTheme: /*currentTheme*/ ctx[8] + }, + $$inline: true + }); + + const block = { + c: function create() { + create_component(modal.$$.fragment); + }, + m: function mount(target, anchor) { + mount_component(modal, target, anchor); + current = true; + }, + p: function update(ctx, dirty) { + const modal_changes = {}; + if (dirty & /*isModalOpen*/ 8) modal_changes.isOpen = /*isModalOpen*/ ctx[3]; + if (dirty & /*currentcollisiontitletext*/ 16) modal_changes.title = /*currentcollisiontitletext*/ ctx[4]; + if (dirty & /*currentcollisiontext*/ 32) modal_changes.content = /*currentcollisiontext*/ ctx[5]; + if (dirty & /*currentcollisionitems*/ 64) modal_changes.items = /*currentcollisionitems*/ ctx[6]; + if (dirty & /*currentTheme*/ 256) modal_changes.currentTheme = /*currentTheme*/ ctx[8]; + 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: "(193:4) {#if isModalOpen}", + ctx + }); + + return block; + } + + function create_fragment$7(ctx) { + let t0; + let select; + let t1; + let dotgamethememanager; + let t2; + let div1; + let canvas_1; let t3; let movingdot; let t4; @@ -3942,7 +5289,23 @@ var app = (function () { let t12; let movingdotstats; let t13; + let h10; + let t15; + let hr; + let t16; + let h11; + let t18; let fighttest; + let t19; + let modaltest; + let t20; + let h12; + let t22; + let findtest; + let t23; + let h13; + let t25; + let ordertest; let current; let mounted; let dispose; @@ -3951,7 +5314,7 @@ var app = (function () { 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)); + each_blocks_1[i] = create_each_block_1$1(get_each_context_1$1(ctx, each_value_1, i)); } dotgamethememanager = new MovingDotSpaceThemeManager({ @@ -3972,17 +5335,20 @@ var app = (function () { let each_value = /*$targets*/ ctx[10]; validate_each_argument(each_value); const get_key = ctx => /*target*/ ctx[25].name; - validate_each_keys(ctx, each_value, get_each_context$3, get_key); + validate_each_keys(ctx, each_value, get_each_context$4, get_key); for (let i = 0; i < each_value.length; i += 1) { - let child_ctx = get_each_context$3(ctx, each_value, i); + let child_ctx = get_each_context$4(ctx, each_value, i); let key = get_key(child_ctx); - each1_lookup.set(key, each_blocks[i] = create_each_block$3(key, child_ctx)); + each1_lookup.set(key, each_blocks[i] = create_each_block$4(key, child_ctx)); } let if_block = /*isModalOpen*/ ctx[3] && create_if_block$3(ctx); movingdotstats = new MovingDotStatDisplay({ $$inline: true }); fighttest = new MovingDotSpaceGameFight({ $$inline: true }); + modaltest = new MovingDotSpaceModalBrainstorm({ $$inline: true }); + findtest = new MovingDotSpaceGameFind({ $$inline: true }); + ordertest = new MovingDotSpaceGameOrder({ $$inline: true }); const block = { c: function create() { @@ -4018,16 +5384,36 @@ var app = (function () { t12 = space(); create_component(movingdotstats.$$.fragment); t13 = space(); + h10 = element("h1"); + h10.textContent = "Game is normally just story with fighting and traversing mechanics repeated in between videos"; + t15 = space(); + hr = element("hr"); + t16 = space(); + h11 = element("h1"); + h11.textContent = "Expand this to allow up to 100 fighters on each side"; + t18 = space(); create_component(fighttest.$$.fragment); + t19 = space(); + create_component(modaltest.$$.fragment); + t20 = space(); + h12 = element("h1"); + h12.textContent = "Find games are choices between similar looking items missing information with limited information (Luck = More Targets)"; + t22 = space(); + create_component(findtest.$$.fragment); + t23 = space(); + h13 = element("h1"); + h13.textContent = "Find out/ make sense / Resolve Conflict = order mixed up and"; + t25 = space(); + create_component(ordertest.$$.fragment); if (/*currentTheme*/ ctx[8] === void 0) add_render_callback(() => /*select_change_handler*/ ctx[18].call(select)); - add_location(select, file$6, 164, 0, 6311); + add_location(select, file$7, 175, 0, 6835); set_style(canvas_1, "width", "100%"); set_style(canvas_1, "height", "100%"); attr_dev(canvas_1, "tabindex", "0"); - add_location(canvas_1, file$6, 172, 4, 6791); + add_location(canvas_1, file$7, 183, 4, 7315); attr_dev(div0, "id", "overlayText"); attr_dev(div0, "class", "svelte-c2nwl9"); - add_location(div0, file$6, 174, 4, 7049); + add_location(div0, file$7, 185, 4, 7573); attr_dev(div1, "id", "game-container"); set_style(div1, "position", "relative"); set_style(div1, "width", "100%"); @@ -4037,7 +5423,12 @@ var app = (function () { set_style(div1, "background-image", "url('" + /*CurrentGameBackground*/ ctx[9] + "')"); set_style(div1, "background-size", "cover"); set_style(div1, "background-position", "center"); - add_location(div1, file$6, 171, 0, 6558); + add_location(div1, file$7, 182, 0, 7082); + add_location(h10, file$7, 199, 0, 8403); + add_location(hr, file$7, 200, 0, 8507); + add_location(h11, file$7, 201, 0, 8513); + add_location(h12, file$7, 204, 0, 8606); + add_location(h13, file$7, 206, 0, 8751); }, l: function claim(nodes) { throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); @@ -4081,7 +5472,23 @@ var app = (function () { insert_dev(target, t12, anchor); mount_component(movingdotstats, target, anchor); insert_dev(target, t13, anchor); + insert_dev(target, h10, anchor); + insert_dev(target, t15, anchor); + insert_dev(target, hr, anchor); + insert_dev(target, t16, anchor); + insert_dev(target, h11, anchor); + insert_dev(target, t18, anchor); mount_component(fighttest, target, anchor); + insert_dev(target, t19, anchor); + mount_component(modaltest, target, anchor); + insert_dev(target, t20, anchor); + insert_dev(target, h12, anchor); + insert_dev(target, t22, anchor); + mount_component(findtest, target, anchor); + insert_dev(target, t23, anchor); + insert_dev(target, h13, anchor); + insert_dev(target, t25, anchor); + mount_component(ordertest, target, anchor); current = true; if (!mounted) { @@ -4101,12 +5508,12 @@ var app = (function () { let i; for (i = 0; i < each_value_1.length; i += 1) { - const child_ctx = get_each_context_1(ctx, each_value_1, i); + const child_ctx = get_each_context_1$1(ctx, each_value_1, i); if (each_blocks_1[i]) { each_blocks_1[i].p(child_ctx, dirty); } else { - each_blocks_1[i] = create_each_block_1(child_ctx); + each_blocks_1[i] = create_each_block_1$1(child_ctx); each_blocks_1[i].c(); each_blocks_1[i].m(select, null); } @@ -4136,8 +5543,8 @@ var app = (function () { each_value = /*$targets*/ ctx[10]; validate_each_argument(each_value); group_outros(); - validate_each_keys(ctx, each_value, get_each_context$3, get_key); - each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx, each_value, each1_lookup, div1, outro_and_destroy_block, create_each_block$3, t11, get_each_context$3); + validate_each_keys(ctx, each_value, get_each_context$4, get_key); + each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx, each_value, each1_lookup, div1, outro_and_destroy_block, create_each_block$4, t11, get_each_context$4); check_outros(); } @@ -4180,6 +5587,9 @@ var app = (function () { transition_in(if_block); transition_in(movingdotstats.$$.fragment, local); transition_in(fighttest.$$.fragment, local); + transition_in(modaltest.$$.fragment, local); + transition_in(findtest.$$.fragment, local); + transition_in(ordertest.$$.fragment, local); current = true; }, o: function outro(local) { @@ -4193,6 +5603,9 @@ var app = (function () { transition_out(if_block); transition_out(movingdotstats.$$.fragment, local); transition_out(fighttest.$$.fragment, local); + transition_out(modaltest.$$.fragment, local); + transition_out(findtest.$$.fragment, local); + transition_out(ordertest.$$.fragment, local); current = false; }, d: function destroy(detaching) { @@ -4215,7 +5628,23 @@ var app = (function () { if (detaching) detach_dev(t12); destroy_component(movingdotstats, detaching); if (detaching) detach_dev(t13); + if (detaching) detach_dev(h10); + if (detaching) detach_dev(t15); + if (detaching) detach_dev(hr); + if (detaching) detach_dev(t16); + if (detaching) detach_dev(h11); + if (detaching) detach_dev(t18); destroy_component(fighttest, detaching); + if (detaching) detach_dev(t19); + destroy_component(modaltest, detaching); + if (detaching) detach_dev(t20); + if (detaching) detach_dev(h12); + if (detaching) detach_dev(t22); + destroy_component(findtest, detaching); + if (detaching) detach_dev(t23); + if (detaching) detach_dev(h13); + if (detaching) detach_dev(t25); + destroy_component(ordertest, detaching); mounted = false; run_all(dispose); } @@ -4223,7 +5652,7 @@ var app = (function () { dispatch_dev("SvelteRegisterBlock", { block, - id: create_fragment$6.name, + id: create_fragment$7.name, type: "component", source: "", ctx @@ -4232,7 +5661,7 @@ var app = (function () { return block; } - function instance$6($$self, $$props, $$invalidate) { + function instance$7($$self, $$props, $$invalidate) { let $dotPosition; let $targets; validate_store(targets, 'targets'); @@ -4250,20 +5679,20 @@ var app = (function () { let currentcollisiontext; let currentcollisionitems = []; let movingDotElement; - let currentTheme = 'Super Teacher'; // default theme + let currentTheme = 'Medieval Fantasy'; // default theme let currentThemeStage = 0; let themeKeys = Object.keys(themes); let CurrentGameBackground = themes[currentTheme].background; //GameBackgrounds[0].url; - inventory.set(themes[currentTheme].inventory); - skills.set(themes[currentTheme].skills); + inventory$1.set(themes[currentTheme].inventory); + skills$1.set(themes[currentTheme].skills); objectives.set(themes[currentTheme].objectives); targets.set(themes[currentTheme].storyparttargets[0]); function changeTheme(event) { $$invalidate(8, currentTheme = event.target.value); const theme = themes[currentTheme]; - inventory.set(theme.inventory); - skills.set(theme.skills); + inventory$1.set(theme.inventory); + skills$1.set(theme.skills); objectives.set(theme.objectives); currentThemeStage = 0; // Resetting currentThemeStage to 0 targets.set(theme.storyparttargets[0]); @@ -4320,6 +5749,13 @@ var app = (function () { currentThemeStage = target.newStage; targets.set(themes[currentTheme].storyparttargets[currentThemeStage]); break; + case "requirementsgated": + if (target.requirements > 5) { + alert(target.collisiontext); + } else { + alert("You have not journeyed enough to explore this area yet (Stats required: and an inventory item)"); + } + break; } // Handle other permanent UI elements here }; // ... //ChatGPT Suggested Options @@ -4328,8 +5764,8 @@ var app = (function () { const writable_props = []; - Object_1$1.keys($$props).forEach(key => { - if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1$4.warn(` was created with unknown prop '${key}'`); + Object_1$2.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1$5.warn(` was created with unknown prop '${key}'`); }); function select_change_handler() { @@ -4363,9 +5799,12 @@ var app = (function () { MovingDotStats: MovingDotStatDisplay, DotGameThemeManager: MovingDotSpaceThemeManager, FightTest: MovingDotSpaceGameFight, + ModalTest: MovingDotSpaceModalBrainstorm, + FindTest: MovingDotSpaceGameFind, + OrderTest: MovingDotSpaceGameOrder, themes, - inventory, - skills, + inventory: inventory$1, + skills: skills$1, objectives, targets, ChangedContentPlaceholdertoSend, @@ -4488,23 +5927,23 @@ var app = (function () { class MovingDotSpacePortfromReact extends SvelteComponentDev { constructor(options) { super(options); - init(this, options, instance$6, create_fragment$6, safe_not_equal, {}); + init(this, options, instance$7, create_fragment$7, safe_not_equal, {}); dispatch_dev("SvelteRegisterComponent", { component: this, tagName: "MovingDotSpacePortfromReact", options, - id: create_fragment$6.name + id: create_fragment$7.name }); } } /* src\YoutubeIframeAPICustomInterface.svelte generated by Svelte v3.59.2 */ - const { console: console_1$3 } = globals; - const file$5 = "src\\YoutubeIframeAPICustomInterface.svelte"; + const { console: console_1$4 } = globals; + const file$6 = "src\\YoutubeIframeAPICustomInterface.svelte"; - function create_fragment$5(ctx) { + function create_fragment$6(ctx) { let h1; let t1; let label; @@ -4606,7 +6045,7 @@ var app = (function () { 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 "); + t2 = text("Sample Video Ids (mwO6v4BlgZQ | IVJkOHTBPn0 )\r\n "); input0 = element("input"); t3 = text("\r\n Start/Stop Word Update (Dummy Transcript as default)\r\n "); input1 = element("input"); @@ -4635,7 +6074,7 @@ var app = (function () { t18 = text(/*currentWord*/ ctx[7]); t19 = space(); div4 = element("div"); - div4.textContent = "Placeholder for image subtitle - each word or each noun in the sentence as collage (Dall-E 3) or sentence meaning as an image"; + div4.textContent = "Placeholder for incomplete idea of image subtitle - each word or each noun in the sentence as collage (Dall-E 3) or sentence meaning as an image"; t21 = space(); button1 = element("button"); button1.textContent = `Previous Auto Timestamp - ${/*interval*/ ctx[19]}s`; @@ -4692,75 +6131,75 @@ var app = (function () { input5 = element("input"); t62 = text(" Reps "); input6 = element("input"); - add_location(h1, file$5, 333, 0, 11319); + add_location(h1, file$6, 333, 0, 11319); attr_dev(input0, "type", "text"); - add_location(input0, file$5, 337, 4, 11477); + add_location(input0, file$6, 337, 4, 11446); attr_dev(input1, "type", "checkbox"); - add_location(input1, file$5, 339, 4, 11588); + add_location(input1, file$6, 339, 4, 11557); attr_dev(textarea, "placeholder", "Enter transcript here..."); - add_location(textarea, file$5, 344, 4, 11911); - add_location(button0, file$5, 345, 4, 12001); + add_location(textarea, file$6, 344, 4, 11880); + add_location(button0, file$6, 345, 4, 11970); attr_dev(pre, "class", "transcriptpre svelte-udvqea"); - add_location(pre, file$5, 346, 4, 12067); - add_location(label, file$5, 335, 0, 11382); + add_location(pre, file$6, 346, 4, 12036); + add_location(label, file$6, 335, 0, 11382); attr_dev(div0, "id", "youtube-player"); set_style(div0, "height", "90vh"); set_style(div0, "width", "90%"); - add_location(div0, file$5, 350, 4, 12165); + add_location(div0, file$6, 350, 4, 12134); set_style(div1, "position", "absolute"); set_style(div1, "top", "0%"); set_style(div1, "left", "40%"); set_style(div1, "color", "white"); set_style(div1, "background-color", "rgba(0, 0, 0, 0.5)"); - add_location(div1, file$5, 351, 4, 12235); - add_location(br0, file$5, 355, 15, 12555); + add_location(div1, file$6, 351, 4, 12204); + add_location(br0, file$6, 355, 15, 12524); set_style(div2, "position", "absolute"); set_style(div2, "top", "50%"); set_style(div2, "left", "20%"); set_style(div2, "color", "white"); set_style(div2, "background-color", "rgba(0, 0, 0, 0.5)"); set_style(div2, "font-size", "100px"); - add_location(div2, file$5, 354, 4, 12414); + add_location(div2, file$6, 354, 4, 12383); set_style(div3, "position", "relative"); - add_location(div3, file$5, 349, 0, 12126); + add_location(div3, file$6, 349, 0, 12095); attr_dev(div4, "class", "imagesubtitle svelte-udvqea"); - add_location(div4, file$5, 359, 0, 12604); - add_location(button1, file$5, 364, 0, 12849); - add_location(button2, file$5, 365, 0, 12942); - add_location(br1, file$5, 368, 0, 13084); - add_location(button3, file$5, 369, 0, 13090); + add_location(div4, file$6, 359, 0, 12573); + add_location(button1, file$6, 364, 0, 12837); + add_location(button2, file$6, 365, 0, 12930); + add_location(br1, file$6, 368, 0, 13072); + add_location(button3, file$6, 369, 0, 13078); attr_dev(button4, "class", button4_class_value = "" + (null_to_empty(/*currentindexButtonClass*/ ctx[16]) + " svelte-udvqea")); button4.disabled = button4_disabled_value = /*currentuserIndex*/ ctx[0] <= 0; - add_location(button4, file$5, 370, 0, 13150); + add_location(button4, file$6, 370, 0, 13138); attr_dev(button5, "class", button5_class_value = "" + (null_to_empty(/*previousindexButtonClass*/ ctx[17]) + " svelte-udvqea")); button5.disabled = button5_disabled_value = /*currentuserIndex*/ ctx[0] <= 0; - add_location(button5, file$5, 371, 0, 13305); + add_location(button5, file$6, 371, 0, 13293); attr_dev(button6, "class", button6_class_value = "" + (null_to_empty(/*nextindexButtonClass*/ ctx[18]) + " svelte-udvqea")); button6.disabled = button6_disabled_value = /*currentuserIndex*/ ctx[0] >= /*userTimestamps*/ ctx[1].length - 1; - add_location(button6, file$5, 372, 0, 13450); - add_location(br2, file$5, 375, 0, 13673); - add_location(br3, file$5, 375, 82, 13755); - add_location(br4, file$5, 375, 192, 13865); - add_location(button7, file$5, 376, 0, 13871); - add_location(button8, file$5, 376, 63, 13934); + add_location(button6, file$6, 372, 0, 13438); + add_location(br2, file$6, 375, 0, 13661); + add_location(br3, file$6, 375, 82, 13743); + add_location(br4, file$6, 375, 192, 13853); + add_location(button7, file$6, 376, 0, 13859); + add_location(button8, file$6, 376, 63, 13922); attr_dev(input2, "type", "file"); attr_dev(input2, "accept", ".json"); - add_location(input2, file$5, 376, 167, 14038); - add_location(br5, file$5, 377, 0, 14103); + add_location(input2, file$6, 376, 167, 14026); + add_location(br5, file$6, 377, 0, 14091); attr_dev(input3, "type", "checkbox"); - add_location(input3, file$5, 377, 21, 14124); + add_location(input3, file$6, 377, 21, 14112); attr_dev(input4, "type", "number"); attr_dev(input4, "class", "numberinput svelte-udvqea"); attr_dev(input4, "min", "0"); - add_location(input4, file$5, 377, 82, 14185); + add_location(input4, file$6, 377, 82, 14173); attr_dev(input5, "type", "number"); attr_dev(input5, "class", "numberinput svelte-udvqea"); attr_dev(input5, "min", "0"); - add_location(input5, file$5, 377, 162, 14265); + add_location(input5, file$6, 377, 162, 14253); attr_dev(input6, "type", "number"); attr_dev(input6, "class", "numberinput svelte-udvqea"); attr_dev(input6, "min", "0"); - add_location(input6, file$5, 377, 241, 14344); + add_location(input6, file$6, 377, 241, 14332); }, l: function claim(nodes) { throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); @@ -5011,7 +6450,7 @@ var app = (function () { dispatch_dev("SvelteRegisterBlock", { block, - id: create_fragment$5.name, + id: create_fragment$6.name, type: "component", source: "", ctx @@ -5025,7 +6464,7 @@ var app = (function () { return words[Math.floor(Math.random() * words.length)]; } - function instance$5($$self, $$props, $$invalidate) { + function instance$6($$self, $$props, $$invalidate) { let nextindexButtonClass; let previousindexButtonClass; let currentindexButtonClass; @@ -5058,7 +6497,7 @@ var app = (function () { let timestamps = []; // Array of timestamps let userTimestamps = []; // Array of user timestamps let r2userTimestamps = []; // Array of user timestamps - let currentvideoId = 'qEpmiA3XkX8'; + let currentvideoId = 'IVJkOHTBPn0'; let youTubeApiLoaded = false; let currentvideoduration; let regeneratedautotimestamps = false; @@ -5361,7 +6800,7 @@ var app = (function () { const writable_props = []; Object.keys($$props).forEach(key => { - if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1$3.warn(` was created with unknown prop '${key}'`); + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1$4.warn(` was created with unknown prop '${key}'`); }); function input0_input_handler() { @@ -5564,13 +7003,13 @@ var app = (function () { class YoutubeIframeAPICustomInterface extends SvelteComponentDev { constructor(options) { super(options); - init(this, options, instance$5, create_fragment$5, safe_not_equal, {}, null, [-1, -1]); + init(this, options, instance$6, create_fragment$6, safe_not_equal, {}, null, [-1, -1]); dispatch_dev("SvelteRegisterComponent", { component: this, tagName: "YoutubeIframeAPICustomInterface", options, - id: create_fragment$5.name + id: create_fragment$6.name }); } } @@ -5642,10 +7081,10 @@ var app = (function () { /* src\RecursiveNestedCommentsElement.svelte generated by Svelte v3.59.2 */ - const { console: console_1$2 } = globals; - const file$4 = "src\\RecursiveNestedCommentsElement.svelte"; + const { console: console_1$3 } = globals; + const file$5 = "src\\RecursiveNestedCommentsElement.svelte"; - function get_each_context$2(ctx, list, i) { + function get_each_context$3(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[14] = list[i]; child_ctx[15] = list; @@ -5678,10 +7117,10 @@ var app = (function () { 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); + add_location(input, file$5, 124, 24, 4690); + add_location(button, file$5, 125, 24, 4791); attr_dev(div, "class", "reply-input"); - add_location(div, file$4, 123, 20, 4639); + add_location(div, file$5, 123, 20, 4639); }, m: function mount(target, anchor) { insert_dev(target, div, anchor); @@ -5725,7 +7164,7 @@ var app = (function () { } // (119:8) {#each flattenedComments as comment} - function create_each_block$2(ctx) { + function create_each_block$3(ctx) { let div; let span; let t0_value = /*comment*/ ctx[14].title + ""; @@ -5755,15 +7194,15 @@ var app = (function () { 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); + add_location(span, file$5, 120, 16, 4453); + add_location(button, file$5, 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); + add_location(div, file$5, 119, 12, 4323); }, m: function mount(target, anchor) { insert_dev(target, div, anchor); @@ -5817,7 +7256,7 @@ var app = (function () { dispatch_dev("SvelteRegisterBlock", { block, - id: create_each_block$2.name, + id: create_each_block$3.name, type: "each", source: "(119:8) {#each flattenedComments as comment}", ctx @@ -5826,7 +7265,7 @@ var app = (function () { return block; } - function create_fragment$4(ctx) { + function create_fragment$5(ctx) { let h1; let t1; let h4; @@ -5851,7 +7290,7 @@ var app = (function () { 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)); + each_blocks[i] = create_each_block$3(get_each_context$3(ctx, each_value, i)); } const block = { @@ -5882,22 +7321,22 @@ var app = (function () { 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); + add_location(h1, file$5, 104, 0, 3512); + add_location(h4, file$5, 105, 0, 3614); + add_location(button0, file$5, 108, 8, 3897); attr_dev(input0, "type", "file"); - add_location(input0, file$4, 110, 8, 4000); + add_location(input0, file$5, 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); + add_location(input1, file$5, 112, 8, 4072); + add_location(button1, file$5, 113, 8, 4146); + add_location(div0, file$5, 107, 4, 3882); + add_location(br, file$5, 116, 4, 4225); attr_dev(div1, "id", "comment-container"); - add_location(div1, file$4, 117, 4, 4235); + add_location(div1, file$5, 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); + add_location(div2, file$5, 106, 0, 3795); }, l: function claim(nodes) { throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); @@ -5950,12 +7389,12 @@ var app = (function () { let i; for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context$2(ctx, each_value, i); + const child_ctx = get_each_context$3(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] = create_each_block$3(child_ctx); each_blocks[i].c(); each_blocks[i].m(div1, null); } @@ -5984,7 +7423,7 @@ var app = (function () { dispatch_dev("SvelteRegisterBlock", { block, - id: create_fragment$4.name, + id: create_fragment$5.name, type: "component", source: "", ctx @@ -6010,7 +7449,7 @@ var app = (function () { return result; } - function instance$4($$self, $$props, $$invalidate) { + function instance$5($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; validate_slots('RecursiveNestedCommentsElement', slots, []); let comments = []; @@ -6095,7 +7534,7 @@ var app = (function () { const writable_props = []; Object.keys($$props).forEach(key => { - if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1$2.warn(` was created with unknown prop '${key}'`); + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1$3.warn(` was created with unknown prop '${key}'`); }); function input1_input_handler() { @@ -6162,23 +7601,23 @@ var app = (function () { class RecursiveNestedCommentsElement extends SvelteComponentDev { constructor(options) { super(options); - init(this, options, instance$4, create_fragment$4, safe_not_equal, {}); + init(this, options, instance$5, create_fragment$5, safe_not_equal, {}); dispatch_dev("SvelteRegisterComponent", { component: this, tagName: "RecursiveNestedCommentsElement", options, - id: create_fragment$4.name + id: create_fragment$5.name }); } } /* src\CopyandRemoveListComponent.svelte generated by Svelte v3.59.2 */ - const { console: console_1$1 } = globals; - const file$3 = "src\\CopyandRemoveListComponent.svelte"; + const { console: console_1$2 } = globals; + const file$4 = "src\\CopyandRemoveListComponent.svelte"; - function get_each_context$1(ctx, list, i) { + function get_each_context$2(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[6] = list[i]; return child_ctx; @@ -6192,12 +7631,12 @@ var app = (function () { 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); + validate_each_keys(ctx, each_value, get_each_context$2, get_key); for (let i = 0; i < each_value.length; i += 1) { - let child_ctx = get_each_context$1(ctx, each_value, i); + let child_ctx = get_each_context$2(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)); + each_1_lookup.set(key, each_blocks[i] = create_each_block$2(key, child_ctx)); } const block = { @@ -6221,8 +7660,8 @@ var app = (function () { 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); + validate_each_keys(ctx, each_value, get_each_context$2, 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$2, each_1_anchor, get_each_context$2); } }, d: function destroy(detaching) { @@ -6253,7 +7692,7 @@ var app = (function () { 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); + add_location(p, file$4, 24, 4, 732); }, m: function mount(target, anchor) { insert_dev(target, p, anchor); @@ -6275,17 +7714,253 @@ var app = (function () { return block; } - // (27:4) {#each items as item (item.id)} + // (27:4) {#each items as item (item.id)} + function create_each_block$2(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$4, 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$2.name, + type: "each", + source: "(27:4) {#each items as item (item.id)}", + ctx + }); + + return block; + } + + function create_fragment$4(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$4, 19, 0, 537); + attr_dev(textarea, "placeholder", "Enter text here..."); + attr_dev(textarea, "class", "svelte-bmbf24"); + add_location(textarea, file$4, 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$4.name, + type: "component", + source: "", + ctx + }); + + return block; + } + + function instance$4($$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$2.warn(` was created with unknown prop '${key}'`); + }); + + function textarea_input_handler() { + textInput = this.value; + $$invalidate(0, textInput); + } + + const click_handler = item => copyAndRemoveItem(item); + + $$self.$capture_state = () => ({ + textInput, + items, + updateItems, + copyAndRemoveItem + }); + + $$self.$inject_state = $$props => { + if ('textInput' in $$props) $$invalidate(0, textInput = $$props.textInput); + if ('items' in $$props) $$invalidate(1, items = $$props.items); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [ + textInput, + items, + updateItems, + copyAndRemoveItem, + textarea_input_handler, + click_handler + ]; + } + + class CopyandRemoveListComponent extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$4, create_fragment$4, safe_not_equal, {}); + + dispatch_dev("SvelteRegisterComponent", { + component: this, + tagName: "CopyandRemoveListComponent", + options, + id: create_fragment$4.name + }); + } + } + + /* src\ReadingStateCounter.svelte generated by Svelte v3.59.2 */ + + const file$3 = "src\\ReadingStateCounter.svelte"; + + function get_each_context$1(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$1(key_1, ctx) { let button; - let t0_value = /*item*/ ctx[6].text + ""; + 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[5](/*item*/ ctx[6]); + return /*click_handler*/ ctx[7](/*index*/ ctx[10]); } const block = { @@ -6294,15 +7969,20 @@ var app = (function () { 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); + 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$3, 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); @@ -6311,7 +7991,12 @@ var app = (function () { }, 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); + 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); @@ -6324,7 +8009,7 @@ var app = (function () { block, id: create_each_block$1.name, type: "each", - source: "(27:4) {#each items as item (item.id)}", + source: "(66:4) {#each words as wordObj, index (wordObj.word)}", ctx }); @@ -6332,83 +8017,128 @@ var app = (function () { } function create_fragment$3(ctx) { + let div0; let h1; let t1; - let textarea; + let input0; let t2; - let if_block_anchor; + 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$1, get_key); - function select_block_type(ctx, dirty) { - if (/*items*/ ctx[1].length === 0) return create_if_block$1; - return create_else_block; + 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)); } - let current_block_type = select_block_type(ctx); - let if_block = current_block_type(ctx); - const block = { c: function create() { + div0 = element("div"); h1 = element("h1"); - h1.textContent = "Copy items for prompts by clicking buttons below"; + h1.textContent = "Stateful Reader Brainstorm"; t1 = space(); - textarea = element("textarea"); + input0 = element("input"); 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); + 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$3, 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$3, 58, 4, 1617); + attr_dev(button0, "class", "svelte-13vjncp"); + add_location(button0, file$3, 59, 4, 1696); + attr_dev(button1, "class", "svelte-13vjncp"); + add_location(button1, file$3, 60, 4, 1752); + attr_dev(input1, "type", "file"); + attr_dev(input1, "class", "svelte-13vjncp"); + add_location(input1, file$3, 61, 4, 1813); + add_location(div0, file$3, 56, 0, 1565); + add_location(div1, file$3, 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, 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); + 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(textarea, "input", /*textarea_input_handler*/ ctx[4]), - listen_dev(textarea, "input", /*updateItems*/ ctx[2], false, false, false, false) + 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 & /*textInput*/ 1) { - set_input_value(textarea, /*textInput*/ ctx[0]); + if (dirty & /*inputText*/ 1 && input0.value !== /*inputText*/ ctx[0]) { + set_input_value(input0, /*inputText*/ 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); - } + 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$1, 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$1, null, get_each_context$1); } }, 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); + 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); } @@ -6425,48 +8155,92 @@ var app = (function () { 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$3($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; - validate_slots('CopyandRemoveListComponent', slots, []); - let textInput = ''; - let items = []; + validate_slots('ReadingStateCounter', slots, []); + let inputText = ""; + let words = []; - function updateItems() { - $$invalidate(1, items = textInput.split('\n').filter(line => line.trim() !== '').map((line, index) => ({ id: index + line, text: line }))); + function submitText() { + $$invalidate(1, words = inputText.split(/\s+/).map(word => ({ word, count: 0 }))); } - 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); + 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_1$1.warn(` was created with unknown prop '${key}'`); + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); }); - function textarea_input_handler() { - textInput = this.value; - $$invalidate(0, textInput); + function input0_input_handler() { + inputText = this.value; + $$invalidate(0, inputText); } - const click_handler = item => copyAndRemoveItem(item); + const click_handler = index => handleClick(index); $$self.$capture_state = () => ({ - textInput, - items, - updateItems, - copyAndRemoveItem + inputText, + words, + submitText, + handleClick, + getColor, + exportToJson, + importFromJson }); $$self.$inject_state = $$props => { - if ('textInput' in $$props) $$invalidate(0, textInput = $$props.textInput); - if ('items' in $$props) $$invalidate(1, items = $$props.items); + if ('inputText' in $$props) $$invalidate(0, inputText = $$props.inputText); + if ('words' in $$props) $$invalidate(1, words = $$props.words); }; if ($$props && "$$inject" in $$props) { @@ -6474,103 +8248,119 @@ var app = (function () { } return [ - textInput, - items, - updateItems, - copyAndRemoveItem, - textarea_input_handler, + inputText, + words, + submitText, + handleClick, + exportToJson, + importFromJson, + input0_input_handler, click_handler ]; } - class CopyandRemoveListComponent extends SvelteComponentDev { + class ReadingStateCounter extends SvelteComponentDev { constructor(options) { super(options); init(this, options, instance$3, create_fragment$3, safe_not_equal, {}); dispatch_dev("SvelteRegisterComponent", { component: this, - tagName: "CopyandRemoveListComponent", + tagName: "ReadingStateCounter", options, id: create_fragment$3.name }); } } - /* src\ReadingStateCounter.svelte generated by Svelte v3.59.2 */ - - const file$2 = "src\\ReadingStateCounter.svelte"; + /* src\DeliberateSubconciousRepititionPractice.svelte generated by Svelte v3.59.2 */ - function get_each_context(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[8] = list[i]; - child_ctx[10] = i; - return child_ctx; - } + const { Object: Object_1$1, console: console_1$1 } = globals; + const file$2 = "src\\DeliberateSubconciousRepititionPractice.svelte"; - // (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; + // (156:0) {#if selectedItem} + function create_if_block_1(ctx) { + let div; + let strong0; let t1; - let t2_value = /*wordObj*/ ctx[8].count + ""; + let t2_value = /*selectedItem*/ ctx[1].text + ""; let t2; let t3; - let mounted; - let dispose; - - function click_handler() { - return /*click_handler*/ ctx[7](/*index*/ ctx[10]); - } + let strong1; + let t5; + let t6_value = /*counts*/ ctx[2][/*selectedItem*/ ctx[1].id] + ""; + let t6; const block = { - key: key_1, - first: null, c: function create() { - button = element("button"); - t0 = text(t0_value); - t1 = text(" ("); + div = element("div"); + strong0 = element("strong"); + strong0.textContent = "Current Word:"; + t1 = space(); 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; + t3 = space(); + strong1 = element("strong"); + strong1.textContent = "Count:"; + t5 = space(); + t6 = text(t6_value); + add_location(strong0, file$2, 157, 8, 5744); + add_location(strong1, file$2, 158, 8, 5805); + add_location(div, file$2, 156, 4, 5729); }, 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; - } + 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(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); + 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); + } + }; - if (dirty & /*words*/ 2) { - set_style(button, "background-color", getColor(/*wordObj*/ ctx[8].count)); - } + 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$2, 163, 4, 5910); + }, + m: function mount(target, anchor) { + insert_dev(target, div, anchor); }, d: function destroy(detaching) { - if (detaching) detach_dev(button); - mounted = false; - dispose(); + if (detaching) detach_dev(div); } }; dispatch_dev("SvelteRegisterBlock", { block, - id: create_each_block.name, - type: "each", - source: "(66:4) {#each words as wordObj, index (wordObj.word)}", + id: create_if_block.name, + type: "if", + source: "(163:0) {#if allWordsLimitReached}", ctx }); @@ -6578,128 +8368,221 @@ var app = (function () { } function create_fragment$2(ctx) { - let div0; let h1; let t1; let input0; let t2; let button0; let t4; - let button1; + let br; + let t5; + let textarea0; let t6; - let input1; + let hr0; let t7; - let div1; - let each_blocks = []; - let each_1_lookup = new Map(); + 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 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)); - } + 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() { - div0 = element("div"); h1 = element("h1"); - h1.textContent = "Stateful Reader Brainstorm"; + h1.textContent = "Random Word till appearance count reached for TTS"; t1 = space(); input0 = element("input"); t2 = space(); button0 = element("button"); - button0.textContent = "Submit Text"; + button0.textContent = "Export Counts"; t4 = space(); - button1 = element("button"); - button1.textContent = "Export to JSON"; + br = element("br"); + t5 = space(); + textarea0 = element("textarea"); t6 = space(); - input1 = element("input"); + hr0 = element("hr"); 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); + 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$2, 141, 0, 5255); + attr_dev(input0, "type", "file"); + add_location(input0, file$2, 143, 0, 5317); + add_location(button0, file$2, 144, 0, 5365); + add_location(br, file$2, 145, 0, 5421); + attr_dev(textarea0, "placeholder", "Enter text here..."); + add_location(textarea0, file$2, 146, 0, 5427); + add_location(hr0, file$2, 148, 0, 5531); + attr_dev(label, "for", "totalCountLimit"); + add_location(label, file$2, 151, 4, 5550); + attr_dev(input1, "type", "number"); + attr_dev(input1, "min", "1"); + attr_dev(input1, "id", "totalCountLimit"); + add_location(input1, file$2, 152, 4, 5612); + add_location(div, file$2, 150, 0, 5539); + add_location(button1, file$2, 168, 0, 6001); + add_location(button2, file$2, 169, 0, 6042); + add_location(hr1, file$2, 171, 0, 6083); + add_location(button3, file$2, 173, 0, 6091); + textarea1.readOnly = true; + attr_dev(textarea1, "placeholder", "Simulation result will be shown here..."); + add_location(textarea1, file$2, 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, 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, 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, div1, anchor); - - for (let i = 0; i < each_blocks.length; i += 1) { - if (each_blocks[i]) { - each_blocks[i].m(div1, null); - } - } + 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, "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) + 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 & /*inputText*/ 1 && input0.value !== /*inputText*/ ctx[0]) { - set_input_value(input0, /*inputText*/ ctx[0]); + if (dirty & /*textInput*/ 1) { + set_input_value(textarea0, /*textInput*/ 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); + 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(div0); + 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(div1); - - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].d(); - } - + 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); } @@ -6716,92 +8599,205 @@ var app = (function () { 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 = []; + 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 submitText() { - $$invalidate(1, words = inputText.split(/\s+/).map(word => ({ word, count: 0 }))); + 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 handleClick(index) { - $$invalidate(1, words[index].count += 1, words); - $$invalidate(1, words = [...words]); // Ensures Svelte detects the change + 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 to export data to JSON - function exportToJson() { - const jsonData = JSON.stringify(words); - const blob = new Blob([jsonData], { type: "application/json" }); + 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 a = document.createElement('a'); - a.href = url; - a.download = 'statefulwords.json'; - a.click(); - URL.revokeObjectURL(url); + const link = document.createElement("a"); + link.download = "counts.json"; + link.href = url; + link.click(); } - // Function to handle file import - function importFromJson(event) { - const file = event.target.files[0]; + function importCounts(event) { + const fileReader = new FileReader(); - if (file) { - const reader = new FileReader(); + fileReader.onload = e => { + const data = JSON.parse(e.target.result); + $$invalidate(2, counts = { ...counts, ...data }); - reader.onload = e => { - const json = e.target.result; - $$invalidate(1, words = JSON.parse(json)); - }; + items = Object.keys(data).map((word, index) => ({ + id: word, // Use word itself as the ID + text: word + })); - reader.readAsText(file); + // 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.keys($$props).forEach(key => { - if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + Object_1$1.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1$1.warn(` was created with unknown prop '${key}'`); }); - function input0_input_handler() { - inputText = this.value; - $$invalidate(0, inputText); + function textarea0_input_handler() { + textInput = this.value; + $$invalidate(0, textInput); } - const click_handler = index => handleClick(index); + 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 = () => ({ - inputText, - words, - submitText, - handleClick, - getColor, - exportToJson, - importFromJson + onDestroy, + textInput, + items, + running, + selectedItem, + intervalId, + counts, + totalCountLimit, + allWordsLimitReached, + simulationResult, + updateItems, + start, + stop, + exportCounts, + importCounts, + simulateCount, + exportSimulationOutput }); $$self.$inject_state = $$props => { - if ('inputText' in $$props) $$invalidate(0, inputText = $$props.inputText); - if ('words' in $$props) $$invalidate(1, words = $$props.words); + 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) { @@ -6809,341 +8805,152 @@ var app = (function () { } return [ - inputText, - words, - submitText, - handleClick, - exportToJson, - importFromJson, - input0_input_handler, - click_handler + textInput, + selectedItem, + counts, + totalCountLimit, + allWordsLimitReached, + simulationResult, + updateItems, + start, + stop, + exportCounts, + importCounts, + simulateCount, + textarea0_input_handler, + input1_input_handler, + textarea1_input_handler ]; } - class ReadingStateCounter extends SvelteComponentDev { + class DeliberateSubconciousRepititionPractice extends SvelteComponentDev { constructor(options) { super(options); init(this, options, instance$2, create_fragment$2, safe_not_equal, {}); dispatch_dev("SvelteRegisterComponent", { component: this, - tagName: "ReadingStateCounter", + tagName: "DeliberateSubconciousRepititionPractice", options, id: create_fragment$2.name }); } } - /* src\DeliberateSubconciousRepititionPractice.svelte generated by Svelte v3.59.2 */ + /* src\LLMWorkflowTest.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); - } - }; + const file$1 = "src\\LLMWorkflowTest.svelte"; - dispatch_dev("SvelteRegisterBlock", { - block, - id: create_if_block_1.name, - type: "if", - source: "(156:0) {#if selectedItem}", - ctx - }); + function get_each_context(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[10] = list[i]; + child_ctx[11] = list; + child_ctx[12] = i; + return child_ctx; + } - return block; + function get_each_context_1(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[13] = list[i]; + return child_ctx; } - // (163:0) {#if allWordsLimitReached} - function create_if_block(ctx) { - let div; + // (87:4) {#each Object.keys(workflows) as workflow} + function create_each_block_1(ctx) { + let option; + let t_value = /*workflow*/ ctx[13] + ""; + let t; 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); + option = element("option"); + t = text(t_value); + option.__value = /*workflow*/ ctx[13]; + option.value = option.__value; + add_location(option, file$1, 87, 6, 2693); }, m: function mount(target, anchor) { - insert_dev(target, div, anchor); + insert_dev(target, option, anchor); + append_dev(option, t); }, + p: noop, 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"); + if (detaching) detach_dev(option); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block_1.name, + type: "each", + source: "(87:4) {#each Object.keys(workflows) as workflow}", + ctx + }); + + return block; + } + + // (92:2) {#each placeholderInputs as placeholder} + function create_each_block(ctx) { + let div; + let label; + let t0; + let t1_value = /*placeholder*/ ctx[10] + ""; + let t1; + let t2; + let t3; + let input; + let mounted; + let dispose; + + function input_input_handler() { + /*input_input_handler*/ ctx[8].call(input, /*placeholder*/ ctx[10]); + } + + const block = { + c: function create() { + div = element("div"); + label = element("label"); + t0 = text("Enter word for <"); + t1 = text(t1_value); + t2 = text(">"); + t3 = space(); + input = element("input"); + add_location(label, file$1, 93, 6, 2828); + attr_dev(input, "type", "text"); + add_location(input, file$1, 94, 6, 2887); + add_location(div, file$1, 92, 4, 2815); }, 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]); + append_dev(label, t0); + append_dev(label, t1); + append_dev(label, t2); + append_dev(div, t3); + append_dev(div, input); + set_input_value(input, /*placeholderValues*/ ctx[1][/*placeholder*/ ctx[10]]); 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]) + listen_dev(input, "input", input_input_handler), + listen_dev(input, "input", /*updateInputs*/ ctx[6], false, false, false, false) ]; 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; - } + p: function update(new_ctx, dirty) { + ctx = new_ctx; + if (dirty & /*placeholderInputs*/ 4 && t1_value !== (t1_value = /*placeholder*/ ctx[10] + "")) set_data_dev(t1, t1_value); - if (dirty & /*simulationResult*/ 32) { - set_input_value(textarea1, /*simulationResult*/ ctx[5]); + if (dirty & /*placeholderValues, placeholderInputs*/ 6 && input.value !== /*placeholderValues*/ ctx[1][/*placeholder*/ ctx[10]]) { + set_input_value(input, /*placeholderValues*/ ctx[1][/*placeholder*/ ctx[10]]); } }, - 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); } @@ -7151,214 +8958,303 @@ var app = (function () { dispatch_dev("SvelteRegisterBlock", { block, - id: create_fragment$1.name, - type: "component", - source: "", + id: create_each_block.name, + type: "each", + source: "(92:2) {#each placeholderInputs as placeholder}", 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 create_fragment$1(ctx) { + let div1; + let h1; + let t1; + let select; + let t2; + let t3; + let div0; + let t4; + let button; + let mounted; + let dispose; + let each_value_1 = Object.keys(/*workflows*/ ctx[3]); + validate_each_argument(each_value_1); + let each_blocks_1 = []; - 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 }), {})); + 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)); } - function start() { - if (!running && items.length > 0) { - running = true; + let each_value = /*placeholderInputs*/ ctx[2]; + validate_each_argument(each_value); + let each_blocks = []; - intervalId = setInterval( - () => { - // Filter out items that have reached the totalCountLimit - const eligibleItems = items.filter(item => counts[item.id] < totalCountLimit); + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); + } - // 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; - } + const block = { + c: function create() { + div1 = element("div"); + h1 = element("h1"); + h1.textContent = "Incompelete Workflow Interface"; + t1 = space(); + select = element("select"); - // Select a random item from the eligible items - const randomIndex = Math.floor(Math.random() * eligibleItems.length); + for (let i = 0; i < each_blocks_1.length; i += 1) { + each_blocks_1[i].c(); + } - $$invalidate(1, selectedItem = eligibleItems[randomIndex]); - $$invalidate(2, counts[selectedItem.id]++, counts); - }, - 1000 - ); - } - } + t2 = space(); - function stop() { - if (running) { - clearInterval(intervalId); - running = false; - intervalId = null; - } - } + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } - 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(); - } + t3 = space(); + div0 = element("div"); + t4 = space(); + button = element("button"); + button.textContent = "Submit"; + add_location(h1, file$1, 84, 2, 2523); + if (/*selectedWorkflow*/ ctx[0] === void 0) add_render_callback(() => /*select_change_handler*/ ctx[7].call(select)); + add_location(select, file$1, 85, 2, 2566); + attr_dev(div0, "id", "input-group"); + add_location(div0, file$1, 102, 2, 3039); + add_location(button, file$1, 104, 2, 3073); + add_location(div1, file$1, 83, 0, 2514); + }, + 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, h1); + append_dev(div1, t1); + append_dev(div1, select); + + for (let i = 0; i < each_blocks_1.length; i += 1) { + if (each_blocks_1[i]) { + each_blocks_1[i].m(select, null); + } + } + + select_option(select, /*selectedWorkflow*/ ctx[0], true); + append_dev(div1, t2); + + for (let i = 0; i < each_blocks.length; i += 1) { + if (each_blocks[i]) { + each_blocks[i].m(div1, null); + } + } - function importCounts(event) { - const fileReader = new FileReader(); + append_dev(div1, t3); + append_dev(div1, div0); + append_dev(div1, t4); + append_dev(div1, button); - fileReader.onload = e => { - const data = JSON.parse(e.target.result); - $$invalidate(2, counts = { ...counts, ...data }); + if (!mounted) { + dispose = [ + listen_dev(select, "change", /*select_change_handler*/ ctx[7]), + listen_dev(select, "change", /*handleWorkflowChange*/ ctx[4], false, false, false, false), + listen_dev(button, "click", /*processInputs*/ ctx[5], false, false, false, false) + ]; - items = Object.keys(data).map((word, index) => ({ - id: word, // Use word itself as the ID - text: word - })); + mounted = true; + } + }, + p: function update(ctx, [dirty]) { + if (dirty & /*Object, workflows*/ 8) { + each_value_1 = Object.keys(/*workflows*/ ctx[3]); + validate_each_argument(each_value_1); + let i; - // 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); + for (i = 0; i < each_value_1.length; i += 1) { + const child_ctx = get_each_context_1(ctx, each_value_1, i); + + if (each_blocks_1[i]) { + each_blocks_1[i].p(child_ctx, dirty); + } else { + each_blocks_1[i] = create_each_block_1(child_ctx); + each_blocks_1[i].c(); + each_blocks_1[i].m(select, null); + } } - }); - }; - fileReader.readAsText(event.target.files[0]); - } + for (; i < each_blocks_1.length; i += 1) { + each_blocks_1[i].d(1); + } - // ... (other variables and functions remain unchanged) - function simulateCount() { - let simulatedTime = 0; - let maxSimulatedSeconds = 3600; // 3600 seconds = 1 hour - let simulationOutput = ""; // Accumulate output here + each_blocks_1.length = each_value_1.length; + } - // Reset the allWordsLimitReached flag and simulationResult - $$invalidate(4, allWordsLimitReached = false); + if (dirty & /*selectedWorkflow, Object, workflows*/ 9) { + select_option(select, /*selectedWorkflow*/ ctx[0]); + } - $$invalidate(5, simulationResult = ''); + if (dirty & /*placeholderValues, placeholderInputs, updateInputs*/ 70) { + each_value = /*placeholderInputs*/ ctx[2]; + validate_each_argument(each_value); + let i; - // 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); + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context(ctx, each_value, i); - 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 + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(div1, t3); + } + } + + 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(div1); + destroy_each(each_blocks_1, detaching); + destroy_each(each_blocks, detaching); + mounted = false; + run_all(dispose); + } + }; - // Select a random item and increment its count - const randomIndex = Math.floor(Math.random() * eligibleItems.length); + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment$1.name, + type: "component", + source: "", + ctx + }); - $$invalidate(1, selectedItem = eligibleItems[randomIndex]); - $$invalidate(2, counts[selectedItem.id]++, counts); - simulationOutput += selectedItem.text + " "; // Append selected word to output + return block; + } - // Increment simulated time (equivalent to the time between iterations in the real scenario) - simulatedTime++; + function instance$1($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('LLMWorkflowTest', slots, []); + + let workflows = { + "Merged Spelling": { + steps: [ + "Please make an image description the meaning of the word ", + "next please find english words close in spelling to ", + "great, next make an image description using those words", + "Thanks lets now merge the two seperate image descriptions together" + ], + placeholders: { "": "much", "": "henduo" }, + timeline: [[], 1, [1], [0, 2]] + }, + "Another Workflow": { + steps: [ + "Do something with ", + "Then do something else with " + ], + placeholders: { + "": "value1", + "": "value2" + }, + timeline: [[], 1] } + }; - // 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.`); - } + let selectedWorkflow = "Merged Spelling"; + let placeholderValues = workflows[selectedWorkflow].placeholders; + let placeholderInputs = Object.keys(placeholderValues); + let timeline = workflows[selectedWorkflow].timeline; - // Export the simulation output to a text file - exportSimulationOutput(simulationOutput); + function handleWorkflowChange() { + $$invalidate(1, placeholderValues = workflows[selectedWorkflow].placeholders); + $$invalidate(2, placeholderInputs = Object.keys(placeholderValues)); + timeline = workflows[selectedWorkflow].timeline; + updateInputs(); } - 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."); - } + function processInputs() { + const inputs = document.querySelectorAll('input[type="text"]'); + console.log(`Workflow: ${selectedWorkflow}`); + + inputs.forEach((input, i) => { + console.log(`Step ${i + 1}: ${input.value}`); + }); } - onDestroy(() => { - if (intervalId) { - clearInterval(intervalId); - } + onMount(() => { + handleWorkflowChange(); + updateInputs(); }); + function updateInputs() { + const inputGroup = document.getElementById('input-group'); + inputGroup.innerHTML = ''; + const steps = workflows[selectedWorkflow].steps; + + steps.forEach((step, i) => { + const label = placeholderInputs.reduce((updatedStep, placeholder) => updatedStep.replace(new RegExp(placeholder, 'g'), placeholderValues[placeholder]), step); + + const dependencyText = Array.isArray(timeline[i]) + ? timeline[i].join(', ') + : timeline[i]; + + const inputBox = ` +
+ + + ${timeline[i].length > 0 + ? `Output depends on: ${dependencyText}` + : ''} +
+ `; + + inputGroup.innerHTML += inputBox; + }); + } + const writable_props = []; Object_1.keys($$props).forEach(key => { - if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1.warn(` was created with unknown prop '${key}'`); + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1.warn(` was created with unknown prop '${key}'`); }); - function textarea0_input_handler() { - textInput = this.value; - $$invalidate(0, textInput); - } - - function input1_input_handler() { - totalCountLimit = to_number(this.value); - $$invalidate(3, totalCountLimit); + function select_change_handler() { + selectedWorkflow = select_value(this); + $$invalidate(0, selectedWorkflow); + $$invalidate(3, workflows); } - function textarea1_input_handler() { - simulationResult = this.value; - $$invalidate(5, simulationResult); + function input_input_handler(placeholder) { + placeholderValues[placeholder] = this.value; + $$invalidate(1, placeholderValues); } $$self.$capture_state = () => ({ - onDestroy, - textInput, - items, - running, - selectedItem, - intervalId, - counts, - totalCountLimit, - allWordsLimitReached, - simulationResult, - updateItems, - start, - stop, - exportCounts, - importCounts, - simulateCount, - exportSimulationOutput + onMount, + workflows, + selectedWorkflow, + placeholderValues, + placeholderInputs, + timeline, + handleWorkflowChange, + processInputs, + updateInputs }); $$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 ('workflows' in $$props) $$invalidate(3, workflows = $$props.workflows); + if ('selectedWorkflow' in $$props) $$invalidate(0, selectedWorkflow = $$props.selectedWorkflow); + if ('placeholderValues' in $$props) $$invalidate(1, placeholderValues = $$props.placeholderValues); + if ('placeholderInputs' in $$props) $$invalidate(2, placeholderInputs = $$props.placeholderInputs); + if ('timeline' in $$props) timeline = $$props.timeline; }; if ($$props && "$$inject" in $$props) { @@ -7366,32 +9262,26 @@ var app = (function () { } return [ - textInput, - selectedItem, - counts, - totalCountLimit, - allWordsLimitReached, - simulationResult, - updateItems, - start, - stop, - exportCounts, - importCounts, - simulateCount, - textarea0_input_handler, - input1_input_handler, - textarea1_input_handler + selectedWorkflow, + placeholderValues, + placeholderInputs, + workflows, + handleWorkflowChange, + processInputs, + updateInputs, + select_change_handler, + input_input_handler ]; } - class DeliberateSubconciousRepititionPractice extends SvelteComponentDev { + class LLMWorkflowTest extends SvelteComponentDev { constructor(options) { super(options); init(this, options, instance$1, create_fragment$1, safe_not_equal, {}); dispatch_dev("SvelteRegisterComponent", { component: this, - tagName: "DeliberateSubconciousRepititionPractice", + tagName: "LLMWorkflowTest", options, id: create_fragment$1.name }); @@ -7417,28 +9307,33 @@ var app = (function () { let t9; let h30; let t11; - let h31; - let t13; + let div4; let div0; + let copyremove; + let t12; + let div1; + let llmwf; + let t13; + let div2; let subrepprac; let t14; - let div1; + let div3; let readingstatecounter; let t15; - let div2; - let copyremove; - let t16; - let nestedcommentssvelte; + let h31; let t17; - let myyoutube; + let nestedcommentssvelte; let t18; + let myyoutube; + let t19; let h12; - let t20; + let t21; let dotgame; let current; + copyremove = new CopyandRemoveListComponent({ $$inline: true }); + llmwf = new LLMWorkflowTest({ $$inline: true }); 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 }); @@ -7447,7 +9342,7 @@ var app = (function () { c: function create() { main = element("main"); h10 = element("h1"); - t0 = text("Hello "); + t0 = text("LLM Assisted Hello "); t1 = text(/*name*/ ctx[0]); t2 = text("!"); t3 = space(); @@ -7455,7 +9350,7 @@ var app = (function () { t4 = text("Visit the "); a = element("a"); a.textContent = "Svelte tutorial"; - t6 = text(" to learn how to build Svelte apps."); + t6 = text(" to learn how to build Svelte apps. (or ask Claude / GPT4 for help)"); t7 = space(); h11 = element("h1"); h11.textContent = "Brainstorm for Educational Interfaces to add LLM and other models into"; @@ -7463,45 +9358,53 @@ var app = (function () { 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(); + div4 = element("div"); div0 = element("div"); + create_component(copyremove.$$.fragment); + t12 = space(); + div1 = element("div"); + create_component(llmwf.$$.fragment); + t13 = space(); + div2 = element("div"); create_component(subrepprac.$$.fragment); t14 = space(); - div1 = element("div"); + div3 = element("div"); create_component(readingstatecounter.$$.fragment); t15 = space(); - div2 = element("div"); - create_component(copyremove.$$.fragment); - t16 = space(); - create_component(nestedcommentssvelte.$$.fragment); + h31 = element("h3"); + h31.textContent = "Gradio client Test in another space due to incompatabilitiess with default svelte and @gradio/client"; t17 = space(); - create_component(myyoutube.$$.fragment); + create_component(nestedcommentssvelte.$$.fragment); t18 = space(); + create_component(myyoutube.$$.fragment); + t19 = space(); h12 = element("h1"); h12.textContent = "Themeable Game Brainstorm - Image + Lists - Game as Universal Translator for any subject"; - t20 = space(); + t21 = space(); create_component(dotgame.$$.fragment); - attr_dev(h10, "class", "svelte-1gz1mpc"); - add_location(h10, file, 24, 1, 668); + attr_dev(h10, "class", "svelte-192gzri"); + add_location(h10, file, 25, 1, 714); 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); + add_location(a, file, 26, 14, 764); + add_location(p, file, 26, 1, 751); + attr_dev(h11, "class", "svelte-192gzri"); + add_location(h11, file, 28, 1, 895); + add_location(h30, file, 29, 1, 978); + attr_dev(div0, "class", "componentborder svelte-192gzri"); + add_location(div0, file, 32, 2, 1075); + attr_dev(div1, "class", "componentborder svelte-192gzri"); + add_location(div1, file, 33, 2, 1127); + attr_dev(div2, "class", "componentborder svelte-192gzri"); + add_location(div2, file, 34, 2, 1174); + attr_dev(div3, "class", "componentborder svelte-192gzri"); + add_location(div3, file, 35, 2, 1226); + attr_dev(div4, "class", "grid-MultiComponentContainer svelte-192gzri"); + add_location(div4, file, 31, 1, 1030); + add_location(h31, file, 38, 1, 1295); + attr_dev(h12, "class", "svelte-192gzri"); + add_location(h12, file, 45, 1, 1500); + attr_dev(main, "class", "svelte-192gzri"); + add_location(main, file, 23, 0, 705); }, l: function claim(nodes) { throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); @@ -7522,23 +9425,27 @@ var app = (function () { 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, div4); + append_dev(div4, div0); + mount_component(copyremove, div0, null); + append_dev(div4, t12); + append_dev(div4, div1); + mount_component(llmwf, div1, null); + append_dev(div4, t13); + append_dev(div4, div2); + mount_component(subrepprac, div2, null); + append_dev(div4, t14); + append_dev(div4, div3); + mount_component(readingstatecounter, div3, 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, h31); append_dev(main, t17); - mount_component(myyoutube, main, null); + mount_component(nestedcommentssvelte, main, null); append_dev(main, t18); + mount_component(myyoutube, main, null); + append_dev(main, t19); append_dev(main, h12); - append_dev(main, t20); + append_dev(main, t21); mount_component(dotgame, main, null); current = true; }, @@ -7547,18 +9454,20 @@ var app = (function () { }, i: function intro(local) { if (current) return; + transition_in(copyremove.$$.fragment, local); + transition_in(llmwf.$$.fragment, local); 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(copyremove.$$.fragment, local); + transition_out(llmwf.$$.fragment, 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); @@ -7566,9 +9475,10 @@ var app = (function () { }, d: function destroy(detaching) { if (detaching) detach_dev(main); + destroy_component(copyremove); + destroy_component(llmwf); destroy_component(subrepprac); destroy_component(readingstatecounter); - destroy_component(copyremove); destroy_component(nestedcommentssvelte); destroy_component(myyoutube); destroy_component(dotgame); @@ -7625,6 +9535,7 @@ var app = (function () { CopyRemove: CopyandRemoveListComponent, ReadingStateCounter, SubRepPrac: DeliberateSubconciousRepititionPractice, + LLMWF: LLMWorkflowTest, showModal, openModal, closeModal