New:Socket for Asana Is Now Available.Learn more
Get Started

M2 Zaubertool Add-On

Package Overview
Versions
2
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

zaubertool@example.local - firefox Package Compare versions

Comparing version
1.2.3
to
1.2.15
+1
-1
background.js

@@ -1,1 +0,1 @@

(()=>{"use strict";const e=globalThis;!function(){if(e.browser)return e.browser;if(!e.chrome)return;const t=e.chrome,r=Object.create(null);r.runtime=t.runtime,r.tabs={},t.tabs&&(r.tabs.query=e=>new Promise((r,o)=>{try{t.tabs.query(e,e=>r(e))}catch(e){o(e)}}),r.tabs.sendMessage=(e,r)=>new Promise((o,s)=>{try{t.tabs.sendMessage(e,r,e=>o(e))}catch(e){s(e)}}),t.tabs.executeScript&&(r.tabs.executeScript=(e,r)=>new Promise((o,s)=>{try{t.tabs.executeScript(e,r,e=>o(e))}catch(e){s(e)}}))),r.storage={},t.storage&&t.storage.local&&(r.storage.local={get:e=>new Promise((r,o)=>{try{t.storage.local.get(e,e=>{const s=t.runtime&&t.runtime.lastError;if(s)return o(s);r(e)})}catch(e){o(e)}}),set:e=>new Promise((r,o)=>{try{t.storage.local.set(e,()=>{const e=t.runtime&&t.runtime.lastError;if(e)return o(e);r()})}catch(e){o(e)}}),remove:e=>new Promise((r,o)=>{try{t.storage.local.remove(e,()=>{const e=t.runtime&&t.runtime.lastError;if(e)return o(e);r()})}catch(e){o(e)}})}),e.browser=r}();const t=/https:\/\/(team|team-staging)\.m2-loesung\.de\/cases\/[^/]+\/processing\//i,r=new Map;function o(e){try{return t.test(e||"")}catch(t){return console.warn("Zaubertool[bg]: invalid URL",e,t),!1}}async function s(e,t){if(o(t)){if(r.get(e)!==t)if(await async function(e){try{const t=await function(e,t){return"undefined"!=typeof browser&&browser.tabs&&browser.tabs.sendMessage?browser.tabs.sendMessage(e,t):new Promise(r=>{try{chrome.tabs.sendMessage(e,t,e=>{if(chrome.runtime&&chrome.runtime.lastError)return r(void 0);r(e)})}catch(e){r(void 0)}})}(e,{id:"zt_ping"});return!(!t||!t.pong)}catch(e){return!1}}(e))r.set(e,t||"");else try{await function(e,t){return"undefined"!=typeof browser&&browser.scripting&&browser.scripting.executeScript?browser.scripting.executeScript({target:{tabId:e},files:t}):"undefined"!=typeof chrome&&chrome.scripting&&chrome.scripting.executeScript?new Promise((r,o)=>{try{chrome.scripting.executeScript({target:{tabId:e},files:t},e=>{const t=chrome.runtime&&chrome.runtime.lastError;if(t)return o(t);r(e)})}catch(e){o(e)}}):"undefined"!=typeof browser&&browser.tabs&&browser.tabs.executeScript?browser.tabs.executeScript(e,{file:t[0],allFrames:!0}):"undefined"!=typeof chrome&&chrome.tabs&&chrome.tabs.executeScript?new Promise((r,o)=>{try{chrome.tabs.executeScript(e,{file:t[0],allFrames:!0},e=>{const t=chrome.runtime&&chrome.runtime.lastError;if(t)return o(t);r(e)})}catch(e){o(e)}}):Promise.reject(new Error("No scripting API available"))}(e,["content_scripts_case.js"]),r.set(e,t||""),console.debug("Zaubertool[bg]: injected case bundle",{tabId:e,url:t})}catch(r){console.warn("Zaubertool[bg]: injection failed",{tabId:e,url:t,err:r})}}else r.delete(e)}"undefined"!=typeof browser&&browser.webNavigation&&browser.webNavigation.onHistoryStateUpdated?browser.webNavigation.onHistoryStateUpdated.addListener(e=>{0===e.frameId&&o(e.url)&&s(e.tabId,e.url)},{url:[{hostSuffix:"team.m2-loesung.de"},{hostSuffix:"team-staging.m2-loesung.de"}]}):"undefined"!=typeof chrome&&chrome.webNavigation&&chrome.webNavigation.onHistoryStateUpdated&&chrome.webNavigation.onHistoryStateUpdated.addListener(e=>{0===e.frameId&&o(e.url)&&s(e.tabId,e.url)}),"undefined"!=typeof browser&&browser.tabs&&browser.tabs.onUpdated?browser.tabs.onUpdated.addListener((e,t,r)=>{"complete"===t.status&&s(e,r?.url??"")}):"undefined"!=typeof chrome&&chrome.tabs&&chrome.tabs.onUpdated&&chrome.tabs.onUpdated.addListener((e,t,r)=>{"complete"===t.status&&s(e,r&&r.url||"")}),"undefined"!=typeof browser&&browser.tabs&&browser.tabs.onRemoved?browser.tabs.onRemoved.addListener(e=>r.delete(e)):"undefined"!=typeof chrome&&chrome.tabs&&chrome.tabs.onRemoved&&chrome.tabs.onRemoved.addListener(e=>r.delete(e)),console.debug("Zaubertool[bg]: background service worker started")})();
(()=>{"use strict";const e=globalThis;function r(e){const r=(e||"").trim();return(r.normalize&&r.normalize("NFKD")?r.normalize("NFKD"):r).replace(/[\u0300-\u036f]/g,"").toLowerCase()}function t(e){return r(e).toUpperCase().replace(/[^A-Z0-9\-\/]/g,"")}function o(e){return(e||"").trim().replace(/[^0-9+]/g,"")}function n(e){return r(e)}!function(){if(e.browser)return e.browser;if(!e.chrome)return;const r=e.chrome,t=Object.create(null);t.runtime=r.runtime,t.tabs={},r.tabs&&(t.tabs.query=e=>new Promise((t,o)=>{try{r.tabs.query(e,e=>t(e))}catch(e){o(e)}}),t.tabs.sendMessage=(e,t)=>new Promise((o,n)=>{try{r.tabs.sendMessage(e,t,e=>o(e))}catch(e){n(e)}}),r.tabs.executeScript&&(t.tabs.executeScript=(e,t)=>new Promise((o,n)=>{try{r.tabs.executeScript(e,t,e=>o(e))}catch(e){n(e)}}))),t.storage={},r.storage&&r.storage.local&&(t.storage.local={get:e=>new Promise((t,o)=>{try{r.storage.local.get(e,e=>{const n=r.runtime&&r.runtime.lastError;if(n)return o(n);t(e)})}catch(e){o(e)}}),set:e=>new Promise((t,o)=>{try{r.storage.local.set(e,()=>{const e=r.runtime&&r.runtime.lastError;if(e)return o(e);t()})}catch(e){o(e)}}),remove:e=>new Promise((t,o)=>{try{r.storage.local.remove(e,()=>{const e=r.runtime&&r.runtime.lastError;if(e)return o(e);t()})}catch(e){o(e)}})}),e.browser=t}();const s="cases";let a=null;function c(e){return"number"==typeof e&&Number.isFinite(e)?e:Date.now()}async function i(e){if(!e.caseId)return null;const i=(await(a||(a=new Promise((e,r)=>{const t=indexedDB.open("zt_case_search_db",1);t.onupgradeneeded=()=>{const e=t.result,r=e.objectStoreNames.contains(s)?t.transaction.objectStore(s):e.createObjectStore(s,{keyPath:"caseId"});r.indexNames.contains("fullNameNorm")||r.createIndex("fullNameNorm","fullNameNorm",{unique:!1}),r.indexNames.contains("filesNumberNorm")||r.createIndex("filesNumberNorm","filesNumberNorm",{unique:!1}),r.indexNames.contains("telephoneNorm")||r.createIndex("telephoneNorm","telephoneNorm",{unique:!1}),r.indexNames.contains("updatedAt")||r.createIndex("updatedAt","updatedAt",{unique:!1}),r.indexNames.contains("progressState")||r.createIndex("progressState","progressState",{unique:!1}),r.indexNames.contains("lastSeenAt")||r.createIndex("lastSeenAt","lastSeenAt",{unique:!1})},t.onsuccess=()=>e(t.result),t.onerror=()=>r(t.error||new Error("IndexedDB open failed"))}),a))).transaction(s,"readwrite"),u=i.objectStore(s),d=function(e,s){const a=(e.firstName??s?.firstName??"").trim(),i=(e.lastName??s?.lastName??"").trim(),u=`${a} ${i}`.trim(),d=(e.fullName??s?.fullName??u).trim(),l=(e.filesNumber??s?.filesNumber??"").trim(),m=(e.telephone??s?.telephone??"").trim(),b=(e.email??s?.email??"").trim(),f=(e.policyholderName??s?.policyholderName??"").trim(),p=(e.conflictPartnerName??s?.conflictPartnerName??"").trim(),g=(e.policyholderSearchText??s?.policyholderSearchText??"").trim(),w=(e.conflictPartnerSearchText??s?.conflictPartnerSearchText??"").trim(),h=Date.now(),N=s?.firstSeenAt||h,y=c(e.lastSeenAt)||h,S=c(e.updatedAt)||h,x=(e.caseUrl??s?.caseUrl??"").trim()||`/cases/${e.caseId}/processing/overview`;return{caseId:e.caseId,caseUrl:x,firstName:a,lastName:i,fullName:d,filesNumber:l,telephone:m,email:b,policyholderName:f,conflictPartnerName:p,policyholderSearchText:g,conflictPartnerSearchText:w,progressState:e.progressState??s?.progressState??null,updatedAt:S,firstSeenAt:N,lastSeenAt:y,fullNameNorm:(I=d,r(I).replace(/\s+/g," ").trim()),filesNumberNorm:t(l),telephoneNorm:o(m),emailNorm:n(b)};var I}(e,await(l=u.get(e.caseId),new Promise((e,r)=>{l.onsuccess=()=>e(l.result),l.onerror=()=>r(l.error||new Error("IndexedDB request failed"))}))||null);var l;return u.put(d),await function(e){return new Promise((r,t)=>{e.oncomplete=()=>r(),e.onabort=()=>t(e.error||new Error("IndexedDB transaction aborted")),e.onerror=()=>t(e.error||new Error("IndexedDB transaction failed"))})}(i),d}const u=/https:\/\/(team|team-staging)\.m2-loesung\.de\/cases\/[^/]+\/processing\//i,d=/\/cases\/([^/]+)/i,l=new Map,m=new Map;async function b(e,r){if(!f(e))return;const t=function(e){const r=(e||"").trim();if(!r)return null;const t=r.match(d);return t&&t[1]?t[1]:null}(e);if(t)try{await i({caseId:t,caseUrl:e,updatedAt:Date.now(),lastSeenAt:Date.now()}),console.debug("Zaubertool[bg]: case record touched",{caseId:t,reason:r})}catch(e){console.warn("Zaubertool[bg]: touch case record failed",{caseId:t,reason:r,err:e})}}function f(e){try{return u.test(e||"")}catch(r){return console.warn("Zaubertool[bg]: invalid URL",e,r),!1}}async function p(e,r){if(!f(r))return m.delete(e),void l.delete(e);if(m.set(e,r||""),l.get(e)!==r)if(await async function(e){try{const r=await function(e,r){return"undefined"!=typeof browser&&browser.tabs&&browser.tabs.sendMessage?browser.tabs.sendMessage(e,r):new Promise(t=>{try{chrome.tabs.sendMessage(e,r,e=>{if(chrome.runtime&&chrome.runtime.lastError)return t(void 0);t(e)})}catch(e){t(void 0)}})}(e,{id:"zt_ping"});return!(!r||!r.pong)}catch(e){return!1}}(e))l.set(e,r||"");else try{await function(e,r){return"undefined"!=typeof browser&&browser.scripting&&browser.scripting.executeScript?browser.scripting.executeScript({target:{tabId:e},files:r}):"undefined"!=typeof chrome&&chrome.scripting&&chrome.scripting.executeScript?new Promise((t,o)=>{try{chrome.scripting.executeScript({target:{tabId:e},files:r},e=>{const r=chrome.runtime&&chrome.runtime.lastError;if(r)return o(r);t(e)})}catch(e){o(e)}}):"undefined"!=typeof browser&&browser.tabs&&browser.tabs.executeScript?browser.tabs.executeScript(e,{file:r[0],allFrames:!0}):"undefined"!=typeof chrome&&chrome.tabs&&chrome.tabs.executeScript?new Promise((t,o)=>{try{chrome.tabs.executeScript(e,{file:r[0],allFrames:!0},e=>{const r=chrome.runtime&&chrome.runtime.lastError;if(r)return o(r);t(e)})}catch(e){o(e)}}):Promise.reject(new Error("No scripting API available"))}(e,["content_scripts_case.js"]),l.set(e,r||""),console.debug("Zaubertool[bg]: injected case bundle",{tabId:e,url:r})}catch(t){console.warn("Zaubertool[bg]: injection failed",{tabId:e,url:r,err:t})}}"undefined"!=typeof browser&&browser.webNavigation&&browser.webNavigation.onHistoryStateUpdated?browser.webNavigation.onHistoryStateUpdated.addListener(e=>{0===e.frameId&&f(e.url)&&(b(e.url,"history"),p(e.tabId,e.url))},{url:[{hostSuffix:"team.m2-loesung.de"},{hostSuffix:"team-staging.m2-loesung.de"}]}):"undefined"!=typeof chrome&&chrome.webNavigation&&chrome.webNavigation.onHistoryStateUpdated&&chrome.webNavigation.onHistoryStateUpdated.addListener(e=>{0===e.frameId&&f(e.url)&&(b(e.url,"history"),p(e.tabId,e.url))}),"undefined"!=typeof browser&&browser.tabs&&browser.tabs.onUpdated?browser.tabs.onUpdated.addListener((e,r,t)=>{if("complete"!==r.status)return;const o=t?.url??"";b(o,"open"),p(e,o)}):"undefined"!=typeof chrome&&chrome.tabs&&chrome.tabs.onUpdated&&chrome.tabs.onUpdated.addListener((e,r,t)=>{if("complete"!==r.status)return;const o=t&&t.url||"";b(o,"open"),p(e,o)}),"undefined"!=typeof browser&&browser.tabs&&browser.tabs.onRemoved?browser.tabs.onRemoved.addListener(e=>{b(m.get(e)||l.get(e),"close"),m.delete(e),l.delete(e)}):"undefined"!=typeof chrome&&chrome.tabs&&chrome.tabs.onRemoved&&chrome.tabs.onRemoved.addListener(e=>{b(m.get(e)||l.get(e),"close"),m.delete(e),l.delete(e)});const g=(e,r,t)=>((async()=>{try{if("upsert_case_record"===e.action){const r=e.caseData;console.debug("zt-bg: received upsert_case_record",{caseId:r.caseId});const o=await i({...r,updatedAt:Date.now(),lastSeenAt:Date.now()});console.debug("zt-bg: upsert complete",{caseId:o?.caseId}),t({success:!0,result:o})}else if("update_case_record_status"===e.action){const{caseId:r,progressState:o}=e;console.debug("zt-bg: received update_case_record_status",{caseId:r,progressState:o}),await async function(e,r){e&&await i({caseId:e,progressState:r,updatedAt:Date.now(),lastSeenAt:Date.now()})}(r,o),t({success:!0})}}catch(e){console.error("zt-bg: message handler error",e),t({success:!1,error:String(e)})}})(),!0);if("undefined"!=typeof browser&&browser.runtime&&browser.runtime.onMessage)try{browser.runtime.onMessage.addListener(g)}catch(e){console.debug("zt-bg: browser.runtime.onMessage not available",e)}if("undefined"!=typeof chrome&&chrome.runtime&&chrome.runtime.onMessage)try{chrome.runtime.onMessage.addListener(g)}catch(e){console.error("zt-bg: chrome.runtime.onMessage registration failed",e)}console.debug("Zaubertool[bg]: background service worker started")})();

@@ -1,1 +0,1 @@

(()=>{"use strict";const e=globalThis;!function(){if(e.browser)return e.browser;if(!e.chrome)return;const t=e.chrome,n=Object.create(null);n.runtime=t.runtime,n.tabs={},t.tabs&&(n.tabs.query=e=>new Promise((n,c)=>{try{t.tabs.query(e,e=>n(e))}catch(e){c(e)}}),n.tabs.sendMessage=(e,n)=>new Promise((c,o)=>{try{t.tabs.sendMessage(e,n,e=>c(e))}catch(e){o(e)}}),t.tabs.executeScript&&(n.tabs.executeScript=(e,n)=>new Promise((c,o)=>{try{t.tabs.executeScript(e,n,e=>c(e))}catch(e){o(e)}}))),n.storage={},t.storage&&t.storage.local&&(n.storage.local={get:e=>new Promise((n,c)=>{try{t.storage.local.get(e,e=>{const o=t.runtime&&t.runtime.lastError;if(o)return c(o);n(e)})}catch(e){c(e)}}),set:e=>new Promise((n,c)=>{try{t.storage.local.set(e,()=>{const e=t.runtime&&t.runtime.lastError;if(e)return c(e);n()})}catch(e){c(e)}}),remove:e=>new Promise((n,c)=>{try{t.storage.local.remove(e,()=>{const e=t.runtime&&t.runtime.lastError;if(e)return c(e);n()})}catch(e){c(e)}})}),e.browser=n}();const t=async e=>{try{if("function"==typeof browser.tabs.query){const t=await browser.tabs.query({active:!0,currentWindow:!0}),n=t&&t.length?t[0]:null;if(n)try{browser.tabs.sendMessage(n.id,e)}catch(e){}}}catch(t){try{browser.tabs.query({active:!0,currentWindow:!0},t=>{const n=t[0];browser.tabs.sendMessage(n.id,e)})}catch(e){}}},n=async(e,t)=>{try{const n=browser.storage.local.set({[e]:t});n&&"function"==typeof n.then?await n.then(()=>console.debug(`zt: storage set success ${e}=${String(t)}`)).catch(e=>console.warn("zt: browser.storage.local.set error",e)):console.debug(`zt: storage set attempted (no promise): ${e}=${String(t)}`)}catch(e){console.warn("zt: storage set failed (fallback)",e)}},c=["https://team.m2-loesung.de/*","https://team-staging.m2-loesung.de/*"],o={largeComments:!1,gamification:!1,emailAutocomplete:!1,draggableModals:!1,relationSuggestions:!1,darkMode:!1,stylefix:!1,copyCaseButton:!0,gamificationAnimation:"random"};let a={...o};const s=document.getElementById("gamification-animation-select"),r=document.getElementById("comments-large-checkbox"),i=document.getElementById("comments-large-checkbox-value");i&&(i.textContent=a.largeComments?"On":"Off"),r?.addEventListener("change",e=>{const c=e.target.checked;i&&(i.textContent=c?"On":"Off"),n("largeComments",c),t({id:"large-comments",value:c?"On":"Off"})});const l=document.getElementById("gamification-checkbox"),d=document.getElementById("gamification-checkbox-value");d&&(d.textContent=a.gamification?"On":"Off"),l?.addEventListener("change",e=>{const c=e.target.checked;d&&(d.textContent=c?"On":"Off"),n("gamification",c),t({id:"gamification",value:c?"On":"Off"})}),s?.addEventListener("change",e=>{const c=e.target.value;n("gamificationAnimation",c),t({id:"gamification-animation",value:c})});const g=document.getElementById("email-autocomplete-checkbox"),m=document.getElementById("email-autocomplete-checkbox-value");m&&(m.textContent=a.emailAutocomplete?"On":"Off");const u=document.getElementById("copy-case-checkbox"),f=document.getElementById("copy-case-checkbox-value");f&&(f.textContent=a.copyCaseButton?"On":"Off"),u?.addEventListener("change",async e=>{const t=e.target.checked;f&&(f.textContent=t?"On":"Off"),await n("copyCaseButton",t);try{const e=await browser.tabs.query({url:c});for(const n of e)try{browser.tabs.sendMessage(n.id,{id:"copy-case-button",value:t?"On":"Off"}).catch(()=>{})}catch(e){}}catch(e){}});const h=document.getElementById("darkmode-checkbox"),b=document.getElementById("darkmode-checkbox-value");b&&(b.textContent=a.darkMode?"On":"Off"),h?.addEventListener("change",async e=>{const t=e.target.checked;b&&(b.textContent=t?"On":"Off"),await n("darkMode",t);try{const e=await browser.tabs.query({url:c});for(const n of e)try{browser.tabs.sendMessage(n.id,{id:"dark-mode",value:t?"On":"Off"}).catch(()=>{})}catch(e){}}catch(e){}});const y=document.getElementById("stylefix-checkbox"),O=document.getElementById("stylefix-checkbox-value");O&&(O.textContent=a.stylefix?"On":"Off"),y?.addEventListener("change",async e=>{const t=e.target.checked;O&&(O.textContent=t?"On":"Off"),await n("stylefix",t);try{const e=await browser.tabs.query({url:c});for(const n of e)try{browser.tabs.sendMessage(n.id,{id:"stylefix",value:t?"On":"Off"}).catch(()=>{})}catch(e){}}catch(e){}}),g?.addEventListener("change",e=>{const c=e.target.checked;m&&(m.textContent=c?"On":"Off"),n("emailAutocomplete",c),t({id:"email-autocomplete",value:c?"On":"Off"})});const x=document.getElementById("relation-suggestions-checkbox"),k=document.getElementById("relation-suggestions-checkbox-value");k&&(k.textContent=a.relationSuggestions?"On":"Off"),x?.addEventListener("change",e=>{const c=e.target.checked;k&&(k.textContent=c?"On":"Off"),n("relationSuggestions",c),t({id:"relation-suggestions",value:c?"On":"Off"})});const w=document.getElementById("draggable-modals-checkbox");if(w){const e=document.getElementById("draggable-modals-checkbox-value"),t=!!a.draggableModals;e&&(e.textContent=t?"On":"Off"),w.addEventListener("change",async()=>{const t=w.checked;e&&(e.textContent=t?"On":"Off"),await n("draggableModals",t);try{const e=await browser.tabs.query({url:c});for(const n of e)try{browser.tabs.sendMessage(n.id,{id:"draggable-modals",value:t?"On":"Off"}).catch(()=>{})}catch(e){}}catch(e){}})}const v=document.getElementById("clear-cache-button");let C=!1,E=null;v&&v.addEventListener("click",async()=>{if(!C)return C=!0,v.textContent="Nochmal klicken um Cache zu löschen",v.classList.add("confirm"),void(E=setTimeout(()=>{C=!1,v.textContent="Cache löschen",v.classList.remove("confirm"),E=null},5e3));C=!1,v.classList.remove("confirm"),E&&(E=clearTimeout(E)),t({id:"clear-cache",value:"request"});try{const e=await browser.tabs.query({active:!0,currentWindow:!0}),t=e&&e.length?e[0]:null;if(t&&browser.tabs&&browser.tabs.executeScript)try{browser.tabs.executeScript(t.id,{file:"clear-cache.js"})}catch(e){}}catch(e){}window.close()}),async function(){try{const e=await browser.storage.local.get(o);if(a={...o,...e||{}},r&&(r.checked=!!a.largeComments,r.toggleAttribute("checked",!!a.largeComments)),i&&(i.textContent=a.largeComments?"On":"Off"),l&&(l.checked=!!a.gamification,l.toggleAttribute("checked",!!a.gamification)),d&&(d.textContent=a.gamification?"On":"Off"),g&&(g.checked=!!a.emailAutocomplete,g.toggleAttribute("checked",!!a.emailAutocomplete)),m&&(m.textContent=a.emailAutocomplete?"On":"Off"),u&&(u.checked=!!a.copyCaseButton,u.toggleAttribute("checked",!!a.copyCaseButton)),f&&(f.textContent=a.copyCaseButton?"On":"Off"),w){const e=!!a.draggableModals;w.checked=e;const t=document.getElementById("draggable-modals-checkbox-value");t&&(t.textContent=e?"On":"Off")}h&&(h.checked=!!a.darkMode,h.toggleAttribute("checked",!!a.darkMode)),b&&(b.textContent=a.darkMode?"On":"Off");const t=document.getElementById("stylefix-checkbox"),n=document.getElementById("stylefix-checkbox-value");t&&(t.checked=!!a.stylefix,t.toggleAttribute("checked",!!a.stylefix)),n&&(n.textContent=a.stylefix?"On":"Off"),x&&(x.checked=!!a.relationSuggestions,x.toggleAttribute("checked",!!a.relationSuggestions)),k&&(k.textContent=a.relationSuggestions?"On":"Off");try{const t=e&&e.gamificationAnimation||"random";s&&(s.value=t)}catch(e){}}catch(e){console.warn("zt: initPopupSettings error",e)}}(),(()=>{const e=document.getElementById("popup-version-value");if(e)try{const t=browser.runtime.getManifest();e.textContent=t.version??"N/A"}catch(t){e.textContent="unknown"}})()})();
(()=>{"use strict";const e=globalThis;function t(e){const t=(e||"").trim();return(t.normalize&&t.normalize("NFKD")?t.normalize("NFKD"):t).replace(/[\u0300-\u036f]/g,"").toLowerCase()}function n(e){return t(e).replace(/\s+/g," ").trim()}function o(e){return t(e).toUpperCase().replace(/[^A-Z0-9\-\/]/g,"")}function c(e){return(e||"").trim().replace(/[^0-9+]/g,"")}!function(){if(e.browser)return e.browser;if(!e.chrome)return;const t=e.chrome,n=Object.create(null);n.runtime=t.runtime,n.tabs={},t.tabs&&(n.tabs.query=e=>new Promise((n,o)=>{try{t.tabs.query(e,e=>n(e))}catch(e){o(e)}}),n.tabs.sendMessage=(e,n)=>new Promise((o,c)=>{try{t.tabs.sendMessage(e,n,e=>o(e))}catch(e){c(e)}}),t.tabs.executeScript&&(n.tabs.executeScript=(e,n)=>new Promise((o,c)=>{try{t.tabs.executeScript(e,n,e=>o(e))}catch(e){c(e)}}))),n.storage={},t.storage&&t.storage.local&&(n.storage.local={get:e=>new Promise((n,o)=>{try{t.storage.local.get(e,e=>{const c=t.runtime&&t.runtime.lastError;if(c)return o(c);n(e)})}catch(e){o(e)}}),set:e=>new Promise((n,o)=>{try{t.storage.local.set(e,()=>{const e=t.runtime&&t.runtime.lastError;if(e)return o(e);n()})}catch(e){o(e)}}),remove:e=>new Promise((n,o)=>{try{t.storage.local.remove(e,()=>{const e=t.runtime&&t.runtime.lastError;if(e)return o(e);n()})}catch(e){o(e)}})}),e.browser=n}();const a="cases";let r=null;async function s(e={}){const t=(await(r||(r=new Promise((e,t)=>{const n=indexedDB.open("zt_case_search_db",1);n.onupgradeneeded=()=>{const e=n.result,t=e.objectStoreNames.contains(a)?n.transaction.objectStore(a):e.createObjectStore(a,{keyPath:"caseId"});t.indexNames.contains("fullNameNorm")||t.createIndex("fullNameNorm","fullNameNorm",{unique:!1}),t.indexNames.contains("filesNumberNorm")||t.createIndex("filesNumberNorm","filesNumberNorm",{unique:!1}),t.indexNames.contains("telephoneNorm")||t.createIndex("telephoneNorm","telephoneNorm",{unique:!1}),t.indexNames.contains("updatedAt")||t.createIndex("updatedAt","updatedAt",{unique:!1}),t.indexNames.contains("progressState")||t.createIndex("progressState","progressState",{unique:!1}),t.indexNames.contains("lastSeenAt")||t.createIndex("lastSeenAt","lastSeenAt",{unique:!1})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error||new Error("IndexedDB open failed"))}),r))).transaction(a,"readonly"),n=t.objectStore(a),o=await(c=n.getAll(),new Promise((e,t)=>{c.onsuccess=()=>e(c.result),c.onerror=()=>t(c.error||new Error("IndexedDB request failed"))}));var c;await function(e){return new Promise((t,n)=>{e.oncomplete=()=>t(),e.onabort=()=>n(e.error||new Error("IndexedDB transaction aborted")),e.onerror=()=>n(e.error||new Error("IndexedDB transaction failed"))})}(t);const s=e.sortBy||"updatedAt",i=e.sortDir||"desc";return o.sort((e,t)=>{const n=e[s]||0,o=t[s]||0;return"asc"===i?n-o:o-n}),e.limit&&e.limit>0?o.slice(0,e.limit):o}const i=async e=>{try{if("function"==typeof browser.tabs.query){const t=await browser.tabs.query({active:!0,currentWindow:!0}),n=t&&t.length?t[0]:null;if(n)try{browser.tabs.sendMessage(n.id,e)}catch(e){}}}catch(t){try{browser.tabs.query({active:!0,currentWindow:!0},t=>{const n=t[0];browser.tabs.sendMessage(n.id,e)})}catch(e){}}},l=async(e,t)=>{try{const n=browser.storage.local.set({[e]:t});n&&"function"==typeof n.then?await n.then(()=>console.debug(`zt: storage set success ${e}=${String(t)}`)).catch(e=>console.warn("zt: browser.storage.local.set error",e)):console.debug(`zt: storage set attempted (no promise): ${e}=${String(t)}`)}catch(e){console.warn("zt: storage set failed (fallback)",e)}},d=["https://team.m2-loesung.de/*","https://team-staging.m2-loesung.de/*"],u={largeComments:!1,gamification:!1,emailAutocomplete:!1,draggableModals:!1,relationSuggestions:!1,darkMode:!1,stylefix:!1,copyCaseButton:!0,gamificationAnimation:"random"};let m={...u},f=[],g=null;const h=document.getElementById("search-view"),b=document.getElementById("settings-view"),y=document.getElementById("open-settings-button"),p=document.getElementById("back-to-search-button"),x=document.getElementById("case-search-input"),w=document.getElementById("case-search-status"),N=document.getElementById("case-search-results");function k(e){if(h){const t="search"===e;h.hidden=!t,h.classList.toggle("view-active",t)}if(b){const t="settings"===e;b.hidden=!t,b.classList.toggle("view-active",t)}}function O(e){w&&(w.textContent=e)}function C(e){return`${(e.policyholderName||"").trim()||"?"} ./. ${(e.conflictPartnerName||"").trim()||"~"}`}function v(e,t){const a=n(t),r=o(t),s=c(t);if(a){const t=(e.policyholderName||"").trim(),o=(e.conflictPartnerName||"").trim(),c=(e.policyholderSearchText||"").trim(),r=(e.conflictPartnerSearchText||"").trim(),s=(e.fullName||"").trim();if(c&&n(c).includes(a))return{fieldName:"Versicherungsnehmer",fieldValue:c};if(r&&n(r).includes(a))return{fieldName:"Konfliktpartner",fieldValue:r};if(t&&n(t).includes(a))return{fieldName:"Versicherungsnehmer",fieldValue:t};if(o&&n(o).includes(a))return{fieldName:"Konfliktpartner",fieldValue:o};if(s&&n(s).includes(a))return{fieldName:"Name",fieldValue:s};const i=C(e);if(n(i).includes(a))return{fieldName:"Fallname",fieldValue:i}}return r&&(e.filesNumberNorm||"").includes(r)?{fieldName:"Aktenzeichen",fieldValue:e.filesNumber||""}:s&&(e.telephoneNorm||"").includes(s)?{fieldName:"Telefon",fieldValue:e.telephone||""}:{fieldName:"ID",fieldValue:e.caseId}}function E(e,t){const n=document.createElement("div");if(!t||!e)return n.textContent=e,n;const o=e.toLowerCase(),c=t.toLowerCase(),a=o.indexOf(c);if(-1===a)return n.textContent=e,n;const r=e.substring(0,a),s=e.substring(a,a+t.length),i=e.substring(a+t.length);r&&n.appendChild(document.createTextNode(r));const l=document.createElement("mark");return l.style.backgroundColor="#ffd700",l.style.fontWeight="bold",l.textContent=s,n.appendChild(l),i&&n.appendChild(document.createTextNode(i)),n}function I(){const e=(x?.value||"").trim();if(e.length<3)return N&&(N.innerHTML=""),void O("Bitte mindestens 3 Zeichen eingeben.");!function(e,t=""){if(N)if(N.innerHTML="",e.length){O(`${e.length} Treffer`);for(const n of e){const e=document.createElement("li"),o=document.createElement("button");o.type="button",o.className="search-result-button",o.setAttribute("data-case-url",n.caseUrl||"");const c=document.createElement("div");c.className="result-title",c.textContent=C(n);const a=document.createElement("div");a.className="result-meta",a.textContent=n.filesNumber?`AZ: ${n.filesNumber}`:"";const r=v(n,t),s=document.createElement("div");s.className="result-match";const i=document.createElement("strong");i.textContent=r.fieldName+": ",s.appendChild(i);const l=E(r.fieldValue,t);s.appendChild(l),o.appendChild(c),a.textContent&&o.appendChild(a),o.appendChild(s),e.appendChild(o),N.appendChild(e)}}else O("Keine Treffer gefunden.")}(function(e){const t=n(e),a=o(e),r=c(e);return console.debug("zt-popup: filter search",{queryRaw:e,qText:t,qFiles:a,qPhone:r,totalRecords:f.length}),f.filter(e=>t&&function(e){return n([e.fullName||"",e.firstName||"",e.lastName||"",e.policyholderName||"",e.conflictPartnerName||"",e.policyholderSearchText||"",e.conflictPartnerSearchText||"",C(e)].join(" "))}(e).includes(t)?(console.debug("zt-popup: text match",{caseId:e.caseId,fullName:e.fullName,policyholderName:e.policyholderName,conflictPartnerName:e.conflictPartnerName,qText:t}),!0):a&&(e.filesNumberNorm||"").includes(a)?(console.debug("zt-popup: filesNumber match",{caseId:e.caseId,qFiles:a}),!0):!(!r||!(e.telephoneNorm||"").includes(r)||(console.debug("zt-popup: phone match",{caseId:e.caseId,qPhone:r}),0)))}(e).slice(0,100),e)}y?.addEventListener("click",()=>k("settings")),p?.addEventListener("click",()=>{k("search"),x?.focus()}),x?.addEventListener("input",()=>{g&&window.clearTimeout(g),g=window.setTimeout(()=>I(),120)}),N?.addEventListener("click",e=>{const t=e.target;if(!t)return;const n=t.closest("button[data-case-url]");if(!n)return;const o=(n.getAttribute("data-case-url")||"").trim();o&&async function(e){try{const t=await async function(e){if(/^https?:\/\//i.test(e))return e;let t="https://team.m2-loesung.de";try{const e=await browser.tabs.query({active:!0,currentWindow:!0}),n=e&&e.length&&e[0].url?e[0].url:"";if(n){const e=new URL(n);"team.m2-loesung.de"!==e.hostname&&"team-staging.m2-loesung.de"!==e.hostname||(t=`${e.protocol}//${e.host}`)}}catch(e){}return e.startsWith("/")?`${t}${e}`:`${t}/${e}`}(e);await browser.tabs.create({url:t,active:!0}),window.close()}catch(t){console.warn("zt: unable to open case url",e,t)}}(o)});const B=document.getElementById("gamification-animation-select"),A=document.getElementById("comments-large-checkbox"),S=document.getElementById("comments-large-checkbox-value");S&&(S.textContent=m.largeComments?"On":"Off"),A?.addEventListener("change",e=>{const t=e.target.checked;S&&(S.textContent=t?"On":"Off"),l("largeComments",t),i({id:"large-comments",value:t?"On":"Off"})});const q=document.getElementById("gamification-checkbox"),L=document.getElementById("gamification-checkbox-value");L&&(L.textContent=m.gamification?"On":"Off"),q?.addEventListener("change",e=>{const t=e.target.checked;L&&(L.textContent=t?"On":"Off"),l("gamification",t),i({id:"gamification",value:t?"On":"Off"})}),B?.addEventListener("change",e=>{const t=e.target.value;l("gamificationAnimation",t),i({id:"gamification-animation",value:t})});const M=document.getElementById("email-autocomplete-checkbox"),P=document.getElementById("email-autocomplete-checkbox-value");P&&(P.textContent=m.emailAutocomplete?"On":"Off");const z=document.getElementById("copy-case-checkbox"),T=document.getElementById("copy-case-checkbox-value");T&&(T.textContent=m.copyCaseButton?"On":"Off"),z?.addEventListener("change",async e=>{const t=e.target.checked;T&&(T.textContent=t?"On":"Off"),await l("copyCaseButton",t);try{const e=await browser.tabs.query({url:d});for(const n of e)try{browser.tabs.sendMessage(n.id,{id:"copy-case-button",value:t?"On":"Off"}).catch(()=>{})}catch(e){}}catch(e){}});const $=document.getElementById("darkmode-checkbox"),V=document.getElementById("darkmode-checkbox-value");V&&(V.textContent=m.darkMode?"On":"Off"),$?.addEventListener("change",async e=>{const t=e.target.checked;V&&(V.textContent=t?"On":"Off"),await l("darkMode",t);try{const e=await browser.tabs.query({url:d});for(const n of e)try{browser.tabs.sendMessage(n.id,{id:"dark-mode",value:t?"On":"Off"}).catch(()=>{})}catch(e){}}catch(e){}});const D=document.getElementById("stylefix-checkbox"),j=document.getElementById("stylefix-checkbox-value");j&&(j.textContent=m.stylefix?"On":"Off"),D?.addEventListener("change",async e=>{const t=e.target.checked;j&&(j.textContent=t?"On":"Off"),await l("stylefix",t);try{const e=await browser.tabs.query({url:d});for(const n of e)try{browser.tabs.sendMessage(n.id,{id:"stylefix",value:t?"On":"Off"}).catch(()=>{})}catch(e){}}catch(e){}}),M?.addEventListener("change",e=>{const t=e.target.checked;P&&(P.textContent=t?"On":"Off"),l("emailAutocomplete",t),i({id:"email-autocomplete",value:t?"On":"Off"})});const F=document.getElementById("relation-suggestions-checkbox"),W=document.getElementById("relation-suggestions-checkbox-value");W&&(W.textContent=m.relationSuggestions?"On":"Off"),F?.addEventListener("change",e=>{const t=e.target.checked;W&&(W.textContent=t?"On":"Off"),l("relationSuggestions",t),i({id:"relation-suggestions",value:t?"On":"Off"})});const K=document.getElementById("draggable-modals-checkbox");if(K){const e=document.getElementById("draggable-modals-checkbox-value"),t=!!m.draggableModals;e&&(e.textContent=t?"On":"Off"),K.addEventListener("change",async()=>{const t=K.checked;e&&(e.textContent=t?"On":"Off"),await l("draggableModals",t);try{const e=await browser.tabs.query({url:d});for(const n of e)try{browser.tabs.sendMessage(n.id,{id:"draggable-modals",value:t?"On":"Off"}).catch(()=>{})}catch(e){}}catch(e){}})}const R=document.getElementById("clear-cache-button");let U=!1,Z=null;R&&R.addEventListener("click",async()=>{if(!U)return U=!0,R.textContent="Nochmal klicken um Cache zu löschen",R.classList.add("confirm"),void(Z=setTimeout(()=>{U=!1,R.textContent="Cache löschen",R.classList.remove("confirm"),Z=null},5e3));U=!1,R.classList.remove("confirm"),Z&&(Z=clearTimeout(Z)),i({id:"clear-cache",value:"request"});try{const e=await browser.tabs.query({active:!0,currentWindow:!0}),t=e&&e.length?e[0]:null;if(t&&browser.tabs&&browser.tabs.executeScript)try{browser.tabs.executeScript(t.id,{file:"clear-cache.js"})}catch(e){}}catch(e){}window.close()}),k("search"),async function(){try{f=await s({limit:2e3,sortBy:"updatedAt",sortDir:"desc"});const e=f.length;console.debug(`zt-popup: loaded ${e} case records from index`),O(`Index bereit: ${e} Fälle`)}catch(e){f=[],console.error("zt-popup: case search db error",e),O("Fallindex konnte nicht geladen werden.")}}(),async function(){try{const e=await browser.storage.local.get(u);if(m={...u,...e||{}},A&&(A.checked=!!m.largeComments,A.toggleAttribute("checked",!!m.largeComments)),S&&(S.textContent=m.largeComments?"On":"Off"),q&&(q.checked=!!m.gamification,q.toggleAttribute("checked",!!m.gamification)),L&&(L.textContent=m.gamification?"On":"Off"),M&&(M.checked=!!m.emailAutocomplete,M.toggleAttribute("checked",!!m.emailAutocomplete)),P&&(P.textContent=m.emailAutocomplete?"On":"Off"),z&&(z.checked=!!m.copyCaseButton,z.toggleAttribute("checked",!!m.copyCaseButton)),T&&(T.textContent=m.copyCaseButton?"On":"Off"),K){const e=!!m.draggableModals;K.checked=e;const t=document.getElementById("draggable-modals-checkbox-value");t&&(t.textContent=e?"On":"Off")}$&&($.checked=!!m.darkMode,$.toggleAttribute("checked",!!m.darkMode)),V&&(V.textContent=m.darkMode?"On":"Off");const t=document.getElementById("stylefix-checkbox"),n=document.getElementById("stylefix-checkbox-value");t&&(t.checked=!!m.stylefix,t.toggleAttribute("checked",!!m.stylefix)),n&&(n.textContent=m.stylefix?"On":"Off"),F&&(F.checked=!!m.relationSuggestions,F.toggleAttribute("checked",!!m.relationSuggestions)),W&&(W.textContent=m.relationSuggestions?"On":"Off");try{const t=e&&e.gamificationAnimation||"random";B&&(B.value=t)}catch(e){}}catch(e){console.warn("zt: initPopupSettings error",e)}}(),(()=>{const e=document.getElementById("popup-version-value");if(e)try{const t=browser.runtime.getManifest();e.textContent=t.version??"N/A"}catch(t){e.textContent="unknown"}})()})();
{
"manifest_version": 3,
"name": "Zaubertool Add-On",
"version": "1.2.3",
"version": "1.2.15",
"description": "Add-On für das M2-Zaubertool",

@@ -6,0 +6,0 @@ "icons": {

{
"manifest_version": 3,
"name": "Zaubertool Add-On",
"version": "1.2.3",
"version": "1.2.15",
"description": "Add-On für das M2-Zaubertool",

@@ -6,0 +6,0 @@ "icons": {

{
"manifest_version": 3,
"name": "Zaubertool Add-On",
"version": "1.2.3",
"version": "1.2.15",
"description": "Add-On f\u00fcr das M2-Zaubertool",

@@ -6,0 +6,0 @@ "icons": {

@@ -1,1 +0,1 @@

*{box-sizing:border-box}html,body{margin:0;padding:0;font-size:14px;line-height:1.5;color:#333;font-family:"Arial";border:none;padding-top:0}body{padding-top:0;width:300px;padding:10px}h3{margin:0;padding:0;font-size:16px;font-weight:600;margin-bottom:10px}#comments-large-checkbox-value{display:block}#gamification-checkbox-value{display:block}.switch-label{display:flex;align-items:center;justify-content:space-between}.switch-label .label-text{font-weight:500;color:#222}.switch-area{display:flex;gap:8px;align-items:center}.switch-area input[type=checkbox]{display:none}.switch-style{display:inline-block;width:40px;height:20px;background-color:#ccc;border-radius:20px;position:relative;cursor:pointer;transition:background-color .2s}.switch-style:hover{background-color:#bfbfbf}.switch-style:before{content:"";position:absolute;width:20px;height:20px;border-radius:50%;top:0;left:0;background-color:#fff;box-shadow:0 0 5px rgba(0,0,0,.2);transition:left .2s}.switch-area input[type=checkbox]:checked+.switch-style{background-color:#2ecc71}.switch-area input[type=checkbox]:checked+.switch-style:before{left:20px}#email-autocomplete-checkbox-value{display:block}.clear-cache-btn{display:block;width:100%;border:none;padding:8px 10px;background-color:#e74c3c;color:#fff;cursor:pointer;border-radius:6px;font-weight:600}.clear-cache-btn.confirm{background-color:#c0392b}
*{box-sizing:border-box}html,body{margin:0;padding:0;font-size:14px;line-height:1.45;color:#1f2a37;font-family:"Segoe UI",Tahoma,sans-serif;border:none}body{width:360px;min-height:420px;padding:12px;background:linear-gradient(160deg, #f6fbff 0%, #eef5ff 100%)}.popup-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:10px}h3{margin:0;font-size:18px;font-weight:700}.popup-sub{margin:2px 0 0;color:#516173;font-size:12px}.icon-button{border:none;border-radius:8px;width:32px;height:32px;background:#e1ebff;color:#254a87;cursor:pointer;font-size:18px;font-weight:700}.icon-button:hover{background:#d0ddfb}.view{display:none}.view.view-active{display:block}.search-input{width:100%;border:1px solid #b5c9ef;border-radius:10px;padding:10px;background:#fff;font-size:14px}.search-input:focus{outline:none;border-color:#3b6fbd;box-shadow:0 0 0 2px rgba(59,111,189,.16)}.search-status{margin:10px 0 8px;color:#5c6a7d;font-size:12px}.search-results{margin:0;padding:0;list-style:none;max-height:320px;overflow-y:auto;display:grid;gap:8px}.search-result-button{width:100%;text-align:left;border:1px solid #d8e4fb;border-radius:10px;padding:9px 10px;background:#fff;cursor:pointer}.search-result-button:hover{border-color:#8eadde;background:#f8fbff}.result-title{font-weight:700;color:#11284b;margin-bottom:2px}.result-meta{font-size:12px;color:#5a6b80}.result-match{font-size:12px;color:#2d5a3d;margin-top:4px;padding:4px 6px;background:#f0f9f5;border-radius:4px;border-left:3px solid #4a9d6f}.result-match strong{color:#1a3a24;font-weight:600}.result-match mark{background-color:gold;color:inherit;font-weight:bold;padding:0 2px}.settings-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.settings-header h4{margin:0;font-size:15px}.text-button{border:none;background:rgba(0,0,0,0);color:#2a5ca8;font-weight:600;cursor:pointer}.controls{display:grid;gap:8px}.control-group{background:#fff;border:1px solid #d8e4fb;border-radius:10px;padding:8px 10px}#comments-large-checkbox-value,#gamification-checkbox-value,#email-autocomplete-checkbox-value{display:block}.switch-label{display:flex;align-items:center;justify-content:space-between;gap:8px}.switch-label .label-text{font-weight:500;color:#1f2a37}.switch-area{display:flex;gap:8px;align-items:center}.switch-area input[type=checkbox]{display:none}.switch-style{display:inline-block;width:40px;height:20px;background-color:#bec9dd;border-radius:20px;position:relative;cursor:pointer;transition:background-color .2s}.switch-style:before{content:"";position:absolute;width:20px;height:20px;border-radius:50%;top:0;left:0;background-color:#fff;box-shadow:0 0 5px rgba(0,0,0,.2);transition:left .2s}.switch-area input[type=checkbox]:checked+.switch-style{background-color:#2ea96d}.switch-area input[type=checkbox]:checked+.switch-style:before{left:20px}.clear-cache-btn{display:block;width:100%;border:none;padding:8px 10px;background-color:#e74c3c;color:#fff;cursor:pointer;border-radius:8px;font-weight:600}.clear-cache-btn.confirm{background-color:#c0392b}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}
+117
-101

@@ -10,116 +10,132 @@ <!doctype html>

<header class="popup-header">
<h3>🚀 Zaubertool Tweaks</h3>
<p class="popup-sub">Kleine Helfer für das Zaubertool</p>
<div>
<h3>Fallsuche</h3>
<p class="popup-sub">Name, Aktenzeichen oder Telefon</p>
</div>
<button id="open-settings-button" class="icon-button" title="Einstellungen" aria-label="Einstellungen">&#9881;</button>
</header>
<div class="controls">
<div class="control-group">
<label for="comments-large-checkbox" class="switch-label">
<span class="label-text">Größeres Feld Sachverhalt</span>
<span class="switch-area">
<span id="comments-large-checkbox-value"></span>
<input type="checkbox" id="comments-large-checkbox" name="comments-large-checkbox" />
<span class="switch-style" id="comments-large-checkbox-style"></span>
</span>
</label>
</div>
<div class="control-group">
<label for="draggable-modals-checkbox" class="switch-label">
<span class="label-text">Verschiebbare Dialoge</span>
<span class="switch-area">
<span id="draggable-modals-checkbox-value"></span>
<input type="checkbox" id="draggable-modals-checkbox" name="draggable-modals-checkbox" />
<span class="switch-style" id="draggable-modals-checkbox-style"></span>
</span>
</label>
</div>
<!-- <div class="control-group">
<label for="darkmode-checkbox" class="switch-label">
<span class="label-text">Dunkler Modus</span>
<span class="switch-area">
<span id="darkmode-checkbox-value"></span>
<input type="checkbox" id="darkmode-checkbox" name="darkmode-checkbox" />
<span class="switch-style" id="darkmode-checkbox-style"></span>
</span>
</label>
</div> -->
<section id="search-view" class="view view-active">
<label for="case-search-input" class="sr-only">Fall suchen</label>
<input id="case-search-input" class="search-input" type="search" placeholder="Mindestens 3 Zeichen" autocomplete="off" />
<p id="case-search-status" class="search-status">Bitte mindestens 3 Zeichen eingeben.</p>
<ul id="case-search-results" class="search-results"></ul>
</section>
<div class="control-group">
<label for="stylefix-checkbox" class="switch-label">
<span class="label-text">Stylefixes</span>
<span class="switch-area">
<span id="stylefix-checkbox-value"></span>
<input type="checkbox" id="stylefix-checkbox" name="stylefix-checkbox" />
<span class="switch-style" id="stylefix-checkbox-style"></span>
</span>
</label>
</div>
<section id="settings-view" class="view" hidden>
<header class="settings-header">
<h4>Einstellungen</h4>
<button id="back-to-search-button" class="text-button" type="button">Zur Suche</button>
</header>
<div class="control-group">
<label for="email-autocomplete-checkbox" class="switch-label">
<span class="label-text">E-Mail Vorschläge</span>
<span class="switch-area">
<span id="email-autocomplete-checkbox-value"></span>
<input type="checkbox" id="email-autocomplete-checkbox" name="email-autocomplete-checkbox" />
<span class="switch-style" id="email-autocomplete-checkbox-style"></span>
</span>
</label>
</div>
<div class="controls">
<div class="control-group">
<label for="comments-large-checkbox" class="switch-label">
<span class="label-text">Größeres Feld Sachverhalt</span>
<span class="switch-area">
<span id="comments-large-checkbox-value"></span>
<input type="checkbox" id="comments-large-checkbox" name="comments-large-checkbox" />
<span class="switch-style" id="comments-large-checkbox-style"></span>
</span>
</label>
</div>
<div class="control-group">
<label for="draggable-modals-checkbox" class="switch-label">
<span class="label-text">Verschiebbare Dialoge</span>
<span class="switch-area">
<span id="draggable-modals-checkbox-value"></span>
<input type="checkbox" id="draggable-modals-checkbox" name="draggable-modals-checkbox" />
<span class="switch-style" id="draggable-modals-checkbox-style"></span>
</span>
</label>
</div>
<div class="control-group">
<label for="copy-case-checkbox" class="switch-label">
<span class="label-text">Kopier-Button anzeigen</span>
<span class="switch-area">
<span id="copy-case-checkbox-value"></span>
<input type="checkbox" id="copy-case-checkbox" name="copy-case-checkbox" />
<span class="switch-style" id="copy-case-checkbox-style"></span>
</span>
</label>
<!-- <div class="control-group">
<label for="darkmode-checkbox" class="switch-label">
<span class="label-text">Dunkler Modus</span>
<span class="switch-area">
<span id="darkmode-checkbox-value"></span>
<input type="checkbox" id="darkmode-checkbox" name="darkmode-checkbox" />
<span class="switch-style" id="darkmode-checkbox-style"></span>
</span>
</label>
</div> -->
<div class="control-group">
<label for="stylefix-checkbox" class="switch-label">
<span class="label-text">Stylefixes</span>
<span class="switch-area">
<span id="stylefix-checkbox-value"></span>
<input type="checkbox" id="stylefix-checkbox" name="stylefix-checkbox" />
<span class="switch-style" id="stylefix-checkbox-style"></span>
</span>
</label>
</div>
<div class="control-group">
<label for="email-autocomplete-checkbox" class="switch-label">
<span class="label-text">E-Mail Vorschläge</span>
<span class="switch-area">
<span id="email-autocomplete-checkbox-value"></span>
<input type="checkbox" id="email-autocomplete-checkbox" name="email-autocomplete-checkbox" />
<span class="switch-style" id="email-autocomplete-checkbox-style"></span>
</span>
</label>
</div>
<div class="control-group">
<label for="copy-case-checkbox" class="switch-label">
<span class="label-text">Kopier-Button anzeigen</span>
<span class="switch-area">
<span id="copy-case-checkbox-value"></span>
<input type="checkbox" id="copy-case-checkbox" name="copy-case-checkbox" />
<span class="switch-style" id="copy-case-checkbox-style"></span>
</span>
</label>
</div>
<div class="control-group">
<label for="gamification-checkbox" class="switch-label">
<span class="label-text">Feiern</span>
<span class="switch-area">
<span id="gamification-checkbox-value"></span>
<input type="checkbox" id="gamification-checkbox" name="gamification-checkbox" />
<span class="switch-style" id="gamification-checkbox-style"></span>
</span>
</label>
</div>
<div class="control-group">
<label for="gamification-animation-select" class="switch-label">
<span class="label-text">Feier-Animation</span>
<span class="switch-area">
<select id="gamification-animation-select" name="gamification-animation-select">
<option value="firework">Feuerwerk</option>
<option value="confetti">Konfetti</option>
<option value="stars">Sterne</option>
<option value="random">Zufall</option>
</select>
</span>
</label>
</div>
<div class="control-group">
<label for="relation-suggestions-checkbox" class="switch-label">
<span class="label-text">Beziehung Vorschläge</span>
<span class="switch-area">
<span id="relation-suggestions-checkbox-value"></span>
<input type="checkbox" id="relation-suggestions-checkbox" name="relation-suggestions-checkbox" />
<span class="switch-style" id="relation-suggestions-checkbox-style"></span>
</span>
</label>
</div>
</div>
<div class="control-group">
<label for="gamification-checkbox" class="switch-label">
<span class="label-text">Feiern</span>
<span class="switch-area">
<span id="gamification-checkbox-value"></span>
<input type="checkbox" id="gamification-checkbox" name="gamification-checkbox" />
<span class="switch-style" id="gamification-checkbox-style"></span>
</span>
</label>
<button id="clear-cache-button" class="clear-cache-btn">Cache löschen</button>
</div>
<div class="control-group">
<label for="gamification-animation-select" class="switch-label">
<span class="label-text">Feier-Animation</span>
<span class="switch-area">
<select id="gamification-animation-select" name="gamification-animation-select">
<option value="firework">Feuerwerk</option>
<option value="confetti">Konfetti</option>
<option value="stars">Sterne</option>
<option value="random">Zufall</option>
</select>
</span>
</label>
</div>
<div class="control-group">
<label for="relation-suggestions-checkbox" class="switch-label">
<span class="label-text">Beziehung Vorschläge</span>
<span class="switch-area">
<span id="relation-suggestions-checkbox-value"></span>
<input type="checkbox" id="relation-suggestions-checkbox" name="relation-suggestions-checkbox" />
<span class="switch-style" id="relation-suggestions-checkbox-style"></span>
</span>
</label>
</div>
</div>
<br />
<p id="popup-version" style="font-size: small">Version: <span id="popup-version-value">—</span></p>
</section>
<div class="control-group">
<button id="clear-cache-button" class="clear-cache-btn">Cache löschen</button>
</div>
<script async src="browser_action.js"></script>
<p id="popup-version" style="font-size: small">Version: <span id="popup-version-value">—</span></p>
</body>
</html>

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet