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.20
to
1.2.22
+1
-1
background.js

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

(()=>{"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 r(e){return t(e).replace(/\s+/g," ").trim()}function o(e){return t(e).toUpperCase().replace(/[^A-Z0-9\-/]/g,"")}function s(e){let t=(e||"").replace(/\D+/g,"");return t?(t.startsWith("00")&&(t=t.slice(2)),t.startsWith("49")?(t.startsWith("490")&&(t=`49${t.slice(3)}`),t):t.startsWith("0")?`49${t.slice(1)}`:`49${t}`):""}!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 n="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,t)=>{const r=indexedDB.open("zt_case_search_db",1);r.onupgradeneeded=()=>{const e=r.result,t=e.objectStoreNames.contains(n)?r.transaction.objectStore(n):e.createObjectStore(n,{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})},r.onsuccess=()=>e(r.result),r.onerror=()=>t(r.error||new Error("IndexedDB open failed"))}),a))).transaction(n,"readwrite"),u=i.objectStore(n),l=function(e,n){const a=(e.firstName??n?.firstName??"").trim(),i=(e.lastName??n?.lastName??"").trim(),u=`${a} ${i}`.trim(),l=(e.fullName??n?.fullName??u).trim(),d=(e.filesNumber??n?.filesNumber??"").trim(),m=(e.conflictPartnerFilesNumber??n?.conflictPartnerFilesNumber??"").trim(),b=(e.telephone??n?.telephone??"").trim(),f=(e.email??n?.email??"").trim(),p=(e.policyholderName??n?.policyholderName??"").trim(),g=(e.conflictPartnerName??n?.conflictPartnerName??"").trim(),h=(e.policyholderSearchText??n?.policyholderSearchText??"").trim(),w=(e.conflictPartnerSearchText??n?.conflictPartnerSearchText??"").trim(),N=Date.now(),y=n?.firstSeenAt||N,S=c(e.lastSeenAt)||N,x=c(e.updatedAt)||N,I=(e.caseUrl??n?.caseUrl??"").trim()||`/cases/${e.caseId}/processing/overview`;return{caseId:e.caseId,caseUrl:I,firstName:a,lastName:i,fullName:l,filesNumber:d,conflictPartnerFilesNumber:m,telephone:b,email:f,policyholderName:p,conflictPartnerName:g,policyholderSearchText:h,conflictPartnerSearchText:w,progressState:e.progressState??n?.progressState??null,updatedAt:x,firstSeenAt:y,lastSeenAt:S,fullNameNorm:r(l),filesNumberNorm:o(d),conflictPartnerFilesNumberNorm:o(m),telephoneNorm:s(b),emailNorm:(v=f,t(v))};var v}(e,await(d=u.get(e.caseId),new Promise((e,t)=>{d.onsuccess=()=>e(d.result),d.onerror=()=>t(d.error||new Error("IndexedDB request failed"))}))||null);var d;return u.put(l),await function(e){return new Promise((t,r)=>{e.oncomplete=()=>t(),e.onabort=()=>r(e.error||new Error("IndexedDB transaction aborted")),e.onerror=()=>r(e.error||new Error("IndexedDB transaction failed"))})}(i),l}const u=/https:\/\/(team|team-staging)\.m2-loesung\.de\/cases\/[^/]+\/processing\//i,l=/\/cases\/([^/]+)/i,d=new Map,m=new Map;async function b(e,t){if(!f(e))return;const r=function(e){const t=(e||"").trim();if(!t)return null;const r=t.match(l);return r&&r[1]?r[1]:null}(e);if(r)try{await i({caseId:r,caseUrl:e,updatedAt:Date.now(),lastSeenAt:Date.now()}),console.debug("Zaubertool[bg]: case record touched",{caseId:r,reason:t})}catch(e){console.warn("Zaubertool[bg]: touch case record failed",{caseId:r,reason:t,err:e})}}function f(e){try{return u.test(e||"")}catch(t){return console.warn("Zaubertool[bg]: invalid URL",e,t),!1}}async function p(e,t){if(!f(t))return m.delete(e),void d.delete(e);if(m.set(e,t||""),d.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))d.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"]),d.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})}}"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,t,r)=>{if("complete"!==t.status)return;const o=r?.url??"";b(o,"open"),p(e,o)}):"undefined"!=typeof chrome&&chrome.tabs&&chrome.tabs.onUpdated&&chrome.tabs.onUpdated.addListener((e,t,r)=>{if("complete"!==t.status)return;const o=r&&r.url||"";b(o,"open"),p(e,o)}),"undefined"!=typeof browser&&browser.tabs&&browser.tabs.onRemoved?browser.tabs.onRemoved.addListener(e=>{b(m.get(e)||d.get(e),"close"),m.delete(e),d.delete(e)}):"undefined"!=typeof chrome&&chrome.tabs&&chrome.tabs.onRemoved&&chrome.tabs.onRemoved.addListener(e=>{b(m.get(e)||d.get(e),"close"),m.delete(e),d.delete(e)});const g=(e,t,r)=>((async()=>{try{if("upsert_case_record"===e.action){const t=e.caseData;console.debug("zt-bg: received upsert_case_record",{caseId:t.caseId});const o=await i({...t,updatedAt:Date.now(),lastSeenAt:Date.now()});console.debug("zt-bg: upsert complete",{caseId:o?.caseId}),r({success:!0,result:o})}else if("update_case_record_status"===e.action){const{caseId:t,progressState:o}=e;console.debug("zt-bg: received update_case_record_status",{caseId:t,progressState:o}),await async function(e,t){e&&await i({caseId:e,progressState:t,updatedAt:Date.now(),lastSeenAt:Date.now()})}(t,o),r({success:!0})}}catch(e){console.error("zt-bg: message handler error",e),r({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")})();
(()=>{"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).replace(/\s+/g," ").trim()}function o(e){return r(e).toUpperCase().replace(/[^A-Z0-9\-/]/g,"")}!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 n="cases";let a=null;function c(e){return"number"==typeof e&&Number.isFinite(e)?e:Date.now()}async function s(e){if(!e.caseId)return null;const s=(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(n)?t.transaction.objectStore(n):e.createObjectStore(n,{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(n,"readwrite"),i=s.objectStore(n),l=function(e,n){const a=(e.firstName??n?.firstName??"").trim(),s=(e.lastName??n?.lastName??"").trim(),i=`${a} ${s}`.trim(),l=(e.fullName??n?.fullName??i).trim(),u=(e.filesNumber??n?.filesNumber??"").trim(),m=(e.conflictPartnerFilesNumber??n?.conflictPartnerFilesNumber??"").trim(),d=(e.policyholderPhoneNumber??n?.policyholderPhoneNumber??"").trim(),b=(e.policyholderMobileNumber??n?.policyholderMobileNumber??"").trim(),f=(e.conflictPartnerPhoneNumber??n?.conflictPartnerPhoneNumber??"").trim(),p=(e.conflictPartnerMobileNumber??n?.conflictPartnerMobileNumber??"").trim(),h=(e.contactPersonPhoneNumber??n?.contactPersonPhoneNumber??"").trim(),N=(e.contactPersonMobileNumber??n?.contactPersonMobileNumber??"").trim(),g=(e.conflictContactPhoneNumber??n?.conflictContactPhoneNumber??"").trim(),w=(e.conflictContactMobileNumber??n?.conflictContactMobileNumber??"").trim(),y=[(P={policyholderPhoneNumber:d,policyholderMobileNumber:b,conflictPartnerPhoneNumber:f,conflictPartnerMobileNumber:p,contactPersonPhoneNumber:h,contactPersonMobileNumber:N,conflictContactPhoneNumber:g,conflictContactMobileNumber:w}).policyholderPhoneNumber,P.policyholderMobileNumber,P.conflictPartnerPhoneNumber,P.conflictPartnerMobileNumber,P.contactPersonPhoneNumber,P.contactPersonMobileNumber,P.conflictContactPhoneNumber,P.conflictContactMobileNumber].map(e=>(e||"").trim()).filter(Boolean);var P;const S=(e.telephone??n?.telephone??y[0]??"").trim(),x=(e.email??n?.email??"").trim(),I=(e.policyholderName??n?.policyholderName??"").trim(),M=(e.conflictPartnerName??n?.conflictPartnerName??"").trim(),v=(e.policyholderCompany??n?.policyholderCompany??"").trim(),A=(e.conflictPartnerCompany??n?.conflictPartnerCompany??"").trim(),C=(e.policyholderSearchText??n?.policyholderSearchText??"").trim(),D=(e.conflictPartnerSearchText??n?.conflictPartnerSearchText??"").trim(),_=Date.now(),U=n?.firstSeenAt||_,z=c(e.lastSeenAt)||_,E=c(e.updatedAt)||_,j=(e.caseUrl??n?.caseUrl??"").trim()||`/cases/${e.caseId}/processing/overview`;return{caseId:e.caseId,caseUrl:j,firstName:a,lastName:s,fullName:l,filesNumber:u,conflictPartnerFilesNumber:m,policyholderPhoneNumber:d,policyholderMobileNumber:b,conflictPartnerPhoneNumber:f,conflictPartnerMobileNumber:p,contactPersonPhoneNumber:h,contactPersonMobileNumber:N,conflictContactPhoneNumber:g,conflictContactMobileNumber:w,telephone:S,email:x,policyholderName:I,conflictPartnerName:M,policyholderCompany:v,conflictPartnerCompany:A,policyholderSearchText:C,conflictPartnerSearchText:D,progressState:e.progressState??n?.progressState??null,updatedAt:E,firstSeenAt:U,lastSeenAt:z,fullNameNorm:t(l),filesNumberNorm:o(u),conflictPartnerFilesNumberNorm:o(m),telephoneNorm:y.map(e=>function(e){const r=function(e){let r=(e||"").replace(/\D+/g,"");return r?(r.startsWith("00")&&(r=r.slice(2)),r.startsWith("49")?(r.startsWith("490")&&(r=`49${r.slice(3)}`),r):r.startsWith("0")?`49${r.slice(1)}`:r):""}(e);return r.length>=6?r:""}(e)).filter(Boolean).join(" "),emailNorm:(L=x,r(L))};var L}(e,await(u=i.get(e.caseId),new Promise((e,r)=>{u.onsuccess=()=>e(u.result),u.onerror=()=>r(u.error||new Error("IndexedDB request failed"))}))||null);var u;return i.put(l),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"))})}(s),l}const i=/https:\/\/(team|team-staging)\.m2-loesung\.de\/cases\/[^/]+\/processing\//i,l=/\/cases\/([^/]+)/i,u=new Map,m=new Map;async function d(e,r){if(!b(e))return;const t=function(e){const r=(e||"").trim();if(!r)return null;const t=r.match(l);return t&&t[1]?t[1]:null}(e);if(t)try{await s({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 b(e){try{return i.test(e||"")}catch(r){return console.warn("Zaubertool[bg]: invalid URL",e,r),!1}}async function f(e,r){if(!b(r))return m.delete(e),void u.delete(e);if(m.set(e,r||""),u.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))u.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"]),u.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&&b(e.url)&&(d(e.url,"history"),f(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&&b(e.url)&&(d(e.url,"history"),f(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??"";d(o,"open"),f(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||"";d(o,"open"),f(e,o)}),"undefined"!=typeof browser&&browser.tabs&&browser.tabs.onRemoved?browser.tabs.onRemoved.addListener(e=>{d(m.get(e)||u.get(e),"close"),m.delete(e),u.delete(e)}):"undefined"!=typeof chrome&&chrome.tabs&&chrome.tabs.onRemoved&&chrome.tabs.onRemoved.addListener(e=>{d(m.get(e)||u.get(e),"close"),m.delete(e),u.delete(e)});const p=(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 s({...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 s({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(p)}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(p)}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 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 r(e){return n(e).replace(/ß/g,"s").replace(/ae/g,"a").replace(/oe/g,"o").replace(/ue/g,"u").replace(/ss/g,"s")}function a(e){return t(e).toUpperCase().replace(/[^A-Z0-9\-/]/g,"")}function o(e){let t=(e||"").replace(/\D+/g,"");return t?(t.startsWith("00")&&(t=t.slice(2)),t.startsWith("49")?(t.startsWith("490")&&(t=`49${t.slice(3)}`),t):t.startsWith("0")?`49${t.slice(1)}`:`49${t}`):""}function c(e){return t(e)}!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,r)=>{try{t.tabs.query(e,e=>n(e))}catch(e){r(e)}}),n.tabs.sendMessage=(e,n)=>new Promise((r,a)=>{try{t.tabs.sendMessage(e,n,e=>r(e))}catch(e){a(e)}}),t.tabs.executeScript&&(n.tabs.executeScript=(e,n)=>new Promise((r,a)=>{try{t.tabs.executeScript(e,n,e=>r(e))}catch(e){a(e)}}))),n.storage={},t.storage&&t.storage.local&&(n.storage.local={get:e=>new Promise((n,r)=>{try{t.storage.local.get(e,e=>{const a=t.runtime&&t.runtime.lastError;if(a)return r(a);n(e)})}catch(e){r(e)}}),set:e=>new Promise((n,r)=>{try{t.storage.local.set(e,()=>{const e=t.runtime&&t.runtime.lastError;if(e)return r(e);n()})}catch(e){r(e)}}),remove:e=>new Promise((n,r)=>{try{t.storage.local.remove(e,()=>{const e=t.runtime&&t.runtime.lastError;if(e)return r(e);n()})}catch(e){r(e)}})}),e.browser=n}();const s="cases";let i=null;function l(e){return"number"==typeof e&&Number.isFinite(e)?e:Date.now()}function d(){return i||(i=new Promise((e,t)=>{const n=indexedDB.open("zt_case_search_db",1);n.onupgradeneeded=()=>{const e=n.result,t=e.objectStoreNames.contains(s)?n.transaction.objectStore(s):e.createObjectStore(s,{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"))}),i)}function u(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"))})}function m(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error||new Error("IndexedDB request failed"))})}async function f(e){if(!e.caseId)return null;const t=(await d()).transaction(s,"readwrite"),r=t.objectStore(s),i=function(e,t){const r=(e.firstName??t?.firstName??"").trim(),s=(e.lastName??t?.lastName??"").trim(),i=`${r} ${s}`.trim(),d=(e.fullName??t?.fullName??i).trim(),u=(e.filesNumber??t?.filesNumber??"").trim(),m=(e.conflictPartnerFilesNumber??t?.conflictPartnerFilesNumber??"").trim(),f=(e.telephone??t?.telephone??"").trim(),g=(e.email??t?.email??"").trim(),h=(e.policyholderName??t?.policyholderName??"").trim(),p=(e.conflictPartnerName??t?.conflictPartnerName??"").trim(),b=(e.policyholderSearchText??t?.policyholderSearchText??"").trim(),y=(e.conflictPartnerSearchText??t?.conflictPartnerSearchText??"").trim(),N=Date.now(),x=t?.firstSeenAt||N,w=l(e.lastSeenAt)||N,k=l(e.updatedAt)||N,C=(e.caseUrl??t?.caseUrl??"").trim()||`/cases/${e.caseId}/processing/overview`;return{caseId:e.caseId,caseUrl:C,firstName:r,lastName:s,fullName:d,filesNumber:u,conflictPartnerFilesNumber:m,telephone:f,email:g,policyholderName:h,conflictPartnerName:p,policyholderSearchText:b,conflictPartnerSearchText:y,progressState:e.progressState??t?.progressState??null,updatedAt:k,firstSeenAt:x,lastSeenAt:w,fullNameNorm:n(d),filesNumberNorm:a(u),conflictPartnerFilesNumberNorm:a(m),telephoneNorm:o(f),emailNorm:c(g)}}(e,await m(r.get(e.caseId))||null);return r.put(i),await u(t),i}const g=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){}}},h=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)}},p=["https://team.m2-loesung.de/*","https://team-staging.m2-loesung.de/*"],b={largeComments:!1,gamification:!1,emailAutocomplete:!1,draggableModals:!1,relationSuggestions:!1,darkMode:!1,stylefix:!1,copyCaseButton:!0,gamificationAnimation:"random"};let y={...b},N=[],x=null;const w=document.getElementById("search-view"),k=document.getElementById("settings-view"),C=document.getElementById("open-settings-button"),O=document.getElementById("back-to-search-button"),E=document.getElementById("popup-title"),v=document.getElementById("popup-subtitle"),I=document.getElementById("case-search-input"),S=document.getElementById("case-search-status"),A=document.getElementById("case-search-results");function B(e){if(w){const t="search"===e;w.hidden=!t,w.classList.toggle("view-active",t)}if(k){const t="settings"===e;k.hidden=!t,k.classList.toggle("view-active",t)}E&&(E.textContent="settings"===e?"Einstellungen":"Fallsuche"),v&&(v.textContent="settings"===e?"Einstellungen":"Name, Aktenzeichen, Az-KP oder Telefon"),C&&(C.innerHTML="settings"===e?"&#8592;":"&#9881;",C.title="settings"===e?"Zurück":"Einstellungen",C.setAttribute("aria-label","settings"===e?"Zurück":"Einstellungen"))}function P(e){S&&(S.textContent=e)}function T(e){return`${(e.policyholderName||"").trim()||"?"} ./. ${(e.conflictPartnerName||"").trim()||"~"}`}function q(e,t){const n=r(t),s=a(t),i=o(t),l=c(t);if(n){const t=(e.policyholderName||"").trim(),a=(e.conflictPartnerName||"").trim(),o=(e.policyholderSearchText||"").trim(),c=(e.conflictPartnerSearchText||"").trim(),s=(e.fullName||"").trim();if(o&&r(o).includes(n))return{fieldName:"Versicherungsnehmer",fieldValue:o};if(c&&r(c).includes(n))return{fieldName:"Konfliktpartner",fieldValue:c};if(t&&r(t).includes(n))return{fieldName:"Versicherungsnehmer",fieldValue:t};if(a&&r(a).includes(n))return{fieldName:"Konfliktpartner",fieldValue:a};if(s&&r(s).includes(n))return{fieldName:"Name",fieldValue:s};const i=T(e);if(r(i).includes(n))return{fieldName:"Fallname",fieldValue:i}}return s&&(e.filesNumberNorm||"").includes(s)?{fieldName:"Aktenzeichen",fieldValue:e.filesNumber||""}:s&&(e.conflictPartnerFilesNumberNorm||"").includes(s)?{fieldName:"Az-KP",fieldValue:e.conflictPartnerFilesNumber||""}:l&&(e.emailNorm||"").includes(l)?{fieldName:"E-Mail",fieldValue:e.email||""}:i&&(e.telephoneNorm||"").includes(i)?{fieldName:"Telefon",fieldValue:e.telephone||""}:{fieldName:"ID",fieldValue:e.caseId}}function L(e,t){const n=document.createElement("div");if(!t||!e)return n.textContent=e,n;const a=e.toLowerCase(),o=t.toLowerCase(),c=a.indexOf(o);if(-1===c){const a=r(e),o=r(t);return o&&a.includes(o),n.textContent=e,n}const s=e.substring(0,c),i=e.substring(c,c+t.length),l=e.substring(c+t.length);s&&n.appendChild(document.createTextNode(s));const d=document.createElement("mark");return d.style.backgroundColor="#ffd700",d.style.fontWeight="bold",d.textContent=i,n.appendChild(d),l&&n.appendChild(document.createTextNode(l)),n}function z(){const e=(I?.value||"").trim();if(e.length<3)return A&&(A.innerHTML=""),void P("Bitte mindestens 3 Zeichen eingeben.");!function(e,t=""){if(A)if(A.innerHTML="",e.length){P(`${e.length} Treffer`);for(const n of e){const e=document.createElement("li"),r=document.createElement("button");r.type="button",r.className="search-result-button",r.setAttribute("data-case-url",n.caseUrl||"");const a=document.createElement("div");a.className="result-title",a.textContent=T(n);const o=document.createElement("div");o.className="result-meta",o.textContent=n.filesNumber?`AZ: ${n.filesNumber}`:"";const c=q(n,t),s=document.createElement("div");s.className="result-match";const i=document.createElement("strong");i.textContent=c.fieldName+": ",s.appendChild(i);const l=L(c.fieldValue,t);s.appendChild(l),r.appendChild(a),o.textContent&&r.appendChild(o),r.appendChild(s),e.appendChild(r),A.appendChild(e)}}else P("Keine Treffer gefunden.")}(function(e){const t=r(e),n=a(e),s=o(e),i=c(e);return console.debug("zt-popup: filter search",{queryRaw:e,qText:t,qFiles:n,qPhone:s,totalRecords:N.length}),N.filter(e=>t&&function(e){return r([e.fullName||"",e.firstName||"",e.lastName||"",e.policyholderName||"",e.conflictPartnerName||"",e.conflictPartnerFilesNumber||"",e.policyholderSearchText||"",e.conflictPartnerSearchText||"",T(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):n&&(e.filesNumberNorm||"").includes(n)?(console.debug("zt-popup: filesNumber match",{caseId:e.caseId,qFiles:n}),!0):n&&(e.conflictPartnerFilesNumberNorm||"").includes(n)?(console.debug("zt-popup: conflictPartnerFilesNumber match",{caseId:e.caseId,qFiles:n}),!0):i&&(e.emailNorm||"").includes(i)?(console.debug("zt-popup: email match",{caseId:e.caseId,qEmail:i}),!0):!(!s||!(e.telephoneNorm||"").includes(s)||(console.debug("zt-popup: phone match",{caseId:e.caseId,qPhone:s}),0)))}(e).slice(0,100),e)}C?.addEventListener("click",()=>{const e=!!k&&!k.hidden;B(e?"search":"settings"),e&&I?.focus()}),O?.addEventListener("click",()=>{B("search"),I?.focus()}),I?.addEventListener("input",()=>{x&&window.clearTimeout(x),x=window.setTimeout(()=>z(),120)}),A?.addEventListener("click",e=>{const t=e.target;if(!t)return;const n=t.closest("button[data-case-url]");if(!n)return;const r=(n.getAttribute("data-case-url")||"").trim();r&&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)}}(r)});const M=document.getElementById("gamification-animation-select"),$=document.getElementById("comments-large-checkbox"),F=document.getElementById("comments-large-checkbox-value");F&&(F.textContent=y.largeComments?"On":"Off"),$?.addEventListener("change",e=>{const t=e.target.checked;F&&(F.textContent=t?"On":"Off"),h("largeComments",t),g({id:"large-comments",value:t?"On":"Off"})});const V=document.getElementById("gamification-checkbox"),D=document.getElementById("gamification-checkbox-value");D&&(D.textContent=y.gamification?"On":"Off"),V?.addEventListener("change",e=>{const t=e.target.checked;D&&(D.textContent=t?"On":"Off"),h("gamification",t),g({id:"gamification",value:t?"On":"Off"})}),M?.addEventListener("change",e=>{const t=e.target.value;h("gamificationAnimation",t),g({id:"gamification-animation",value:t})});const W=document.getElementById("email-autocomplete-checkbox"),j=document.getElementById("email-autocomplete-checkbox-value");j&&(j.textContent=y.emailAutocomplete?"On":"Off");const U=document.getElementById("copy-case-checkbox"),K=document.getElementById("copy-case-checkbox-value");K&&(K.textContent=y.copyCaseButton?"On":"Off"),U?.addEventListener("change",async e=>{const t=e.target.checked;K&&(K.textContent=t?"On":"Off"),await h("copyCaseButton",t);try{const e=await browser.tabs.query({url:p});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 Z=document.getElementById("darkmode-checkbox"),H=document.getElementById("darkmode-checkbox-value");H&&(H.textContent=y.darkMode?"On":"Off"),Z?.addEventListener("change",async e=>{const t=e.target.checked;H&&(H.textContent=t?"On":"Off"),await h("darkMode",t);try{const e=await browser.tabs.query({url:p});for(const n of e)try{browser.tabs.sendMessage(n.id,{id:"dark-mode",value:t?"On":"Off"}).catch(()=>{})}catch(e){}}catch(e){}});const R=document.getElementById("stylefix-checkbox"),_=document.getElementById("stylefix-checkbox-value");_&&(_.textContent=y.stylefix?"On":"Off"),R?.addEventListener("change",async e=>{const t=e.target.checked;_&&(_.textContent=t?"On":"Off"),await h("stylefix",t);try{const e=await browser.tabs.query({url:p});for(const n of e)try{browser.tabs.sendMessage(n.id,{id:"stylefix",value:t?"On":"Off"}).catch(()=>{})}catch(e){}}catch(e){}}),W?.addEventListener("change",e=>{const t=e.target.checked;j&&(j.textContent=t?"On":"Off"),h("emailAutocomplete",t),g({id:"email-autocomplete",value:t?"On":"Off"})});const G=document.getElementById("relation-suggestions-checkbox"),J=document.getElementById("relation-suggestions-checkbox-value");J&&(J.textContent=y.relationSuggestions?"On":"Off"),G?.addEventListener("change",e=>{const t=e.target.checked;J&&(J.textContent=t?"On":"Off"),h("relationSuggestions",t),g({id:"relation-suggestions",value:t?"On":"Off"})});const Q=document.getElementById("draggable-modals-checkbox");if(Q){const e=document.getElementById("draggable-modals-checkbox-value"),t=!!y.draggableModals;e&&(e.textContent=t?"On":"Off"),Q.addEventListener("change",async()=>{const t=Q.checked;e&&(e.textContent=t?"On":"Off"),await h("draggableModals",t);try{const e=await browser.tabs.query({url:p});for(const n of e)try{browser.tabs.sendMessage(n.id,{id:"draggable-modals",value:t?"On":"Off"}).catch(()=>{})}catch(e){}}catch(e){}})}const X=document.getElementById("clear-cache-button");let Y=!1,ee=null;X&&X.addEventListener("click",async()=>{if(!Y)return Y=!0,X.textContent="Nochmal klicken um Cache zu löschen",X.classList.add("confirm"),void(ee=setTimeout(()=>{Y=!1,X.textContent="Cache löschen",X.classList.remove("confirm"),ee=null},5e3));Y=!1,X.classList.remove("confirm"),ee&&(ee=clearTimeout(ee)),g({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()}),B("search"),async function(){try{N=await async function(e={}){const t=(await d()).transaction(s,"readonly"),n=t.objectStore(s),r=await m(n.getAll());await u(t);const a=e.sortBy||"updatedAt",o=e.sortDir||"desc";return r.sort((e,t)=>{const n=e[a]||0,r=t[a]||0;return"asc"===o?n-r:r-n}),e.limit&&e.limit>0?r.slice(0,e.limit):r}({limit:2e3,sortBy:"updatedAt",sortDir:"desc"});const e=await async function(e){let t=0;for(const n of e){const e=o(n.telephone),r=c(n.email);n.telephoneNorm===e&&n.emailNorm===r||(n.telephoneNorm=e,n.emailNorm=r,await f({caseId:n.caseId,caseUrl:n.caseUrl,firstName:n.firstName,lastName:n.lastName,fullName:n.fullName,filesNumber:n.filesNumber,conflictPartnerFilesNumber:n.conflictPartnerFilesNumber,telephone:n.telephone,email:n.email,policyholderName:n.policyholderName,conflictPartnerName:n.conflictPartnerName,policyholderSearchText:n.policyholderSearchText,conflictPartnerSearchText:n.conflictPartnerSearchText,progressState:n.progressState,updatedAt:n.updatedAt,lastSeenAt:n.lastSeenAt}),t+=1)}return t}(N),t=N.length;console.debug(`zt-popup: loaded ${t} case records from index`,{refreshed:e}),P(`Index bereit: ${t} Fälle`)}catch(e){N=[],console.error("zt-popup: case search db error",e),P("Fallindex konnte nicht geladen werden.")}}(),async function(){try{const e=await browser.storage.local.get(b);if(y={...b,...e||{}},$&&($.checked=!!y.largeComments,$.toggleAttribute("checked",!!y.largeComments)),F&&(F.textContent=y.largeComments?"On":"Off"),V&&(V.checked=!!y.gamification,V.toggleAttribute("checked",!!y.gamification)),D&&(D.textContent=y.gamification?"On":"Off"),W&&(W.checked=!!y.emailAutocomplete,W.toggleAttribute("checked",!!y.emailAutocomplete)),j&&(j.textContent=y.emailAutocomplete?"On":"Off"),U&&(U.checked=!!y.copyCaseButton,U.toggleAttribute("checked",!!y.copyCaseButton)),K&&(K.textContent=y.copyCaseButton?"On":"Off"),Q){const e=!!y.draggableModals;Q.checked=e;const t=document.getElementById("draggable-modals-checkbox-value");t&&(t.textContent=e?"On":"Off")}Z&&(Z.checked=!!y.darkMode,Z.toggleAttribute("checked",!!y.darkMode)),H&&(H.textContent=y.darkMode?"On":"Off");const t=document.getElementById("stylefix-checkbox"),n=document.getElementById("stylefix-checkbox-value");t&&(t.checked=!!y.stylefix,t.toggleAttribute("checked",!!y.stylefix)),n&&(n.textContent=y.stylefix?"On":"Off"),G&&(G.checked=!!y.relationSuggestions,G.toggleAttribute("checked",!!y.relationSuggestions)),J&&(J.textContent=y.relationSuggestions?"On":"Off");try{const t=e&&e.gamificationAnimation||"random";M&&(M.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 n(e).replace(/ß/g,"s").replace(/ae/g,"a").replace(/oe/g,"o").replace(/ue/g,"u").replace(/ss/g,"s")}function r(e){return t(e).toUpperCase().replace(/[^A-Z0-9\-/]/g,"")}function c(e){let t=(e||"").replace(/\D+/g,"");return t?(t.startsWith("00")&&(t=t.slice(2)),t.startsWith("49")?(t.startsWith("490")&&(t=`49${t.slice(3)}`),t):t.startsWith("0")?`49${t.slice(1)}`:t):""}function a(e){return t(e)}!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,r)=>{try{t.tabs.sendMessage(e,n,e=>o(e))}catch(e){r(e)}}),t.tabs.executeScript&&(n.tabs.executeScript=(e,n)=>new Promise((o,r)=>{try{t.tabs.executeScript(e,n,e=>o(e))}catch(e){r(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 r=t.runtime&&t.runtime.lastError;if(r)return o(r);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 i="cases";let l=null;function s(e){return"number"==typeof e&&Number.isFinite(e)?e:Date.now()}function u(){return l||(l=new Promise((e,t)=>{const n=indexedDB.open("zt_case_search_db",1);n.onupgradeneeded=()=>{const e=n.result,t=e.objectStoreNames.contains(i)?n.transaction.objectStore(i):e.createObjectStore(i,{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"))}),l)}function m(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"))})}function d(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error||new Error("IndexedDB request failed"))})}async function f(e){if(!e.caseId)return null;const t=(await u()).transaction(i,"readwrite"),o=t.objectStore(i),l=function(e,t){const o=(e.firstName??t?.firstName??"").trim(),i=(e.lastName??t?.lastName??"").trim(),l=`${o} ${i}`.trim(),u=(e.fullName??t?.fullName??l).trim(),m=(e.filesNumber??t?.filesNumber??"").trim(),d=(e.conflictPartnerFilesNumber??t?.conflictPartnerFilesNumber??"").trim(),f=(e.policyholderPhoneNumber??t?.policyholderPhoneNumber??"").trim(),h=(e.policyholderMobileNumber??t?.policyholderMobileNumber??"").trim(),b=(e.conflictPartnerPhoneNumber??t?.conflictPartnerPhoneNumber??"").trim(),g=(e.conflictPartnerMobileNumber??t?.conflictPartnerMobileNumber??"").trim(),p=(e.contactPersonPhoneNumber??t?.contactPersonPhoneNumber??"").trim(),N=(e.contactPersonMobileNumber??t?.contactPersonMobileNumber??"").trim(),y=(e.conflictContactPhoneNumber??t?.conflictContactPhoneNumber??"").trim(),P=(e.conflictContactMobileNumber??t?.conflictContactMobileNumber??"").trim(),x=[(C={policyholderPhoneNumber:f,policyholderMobileNumber:h,conflictPartnerPhoneNumber:b,conflictPartnerMobileNumber:g,contactPersonPhoneNumber:p,contactPersonMobileNumber:N,conflictContactPhoneNumber:y,conflictContactMobileNumber:P}).policyholderPhoneNumber,C.policyholderMobileNumber,C.conflictPartnerPhoneNumber,C.conflictPartnerMobileNumber,C.contactPersonPhoneNumber,C.contactPersonMobileNumber,C.conflictContactPhoneNumber,C.conflictContactMobileNumber].map(e=>(e||"").trim()).filter(Boolean);var C;const w=(e.telephone??t?.telephone??x[0]??"").trim(),v=(e.email??t?.email??"").trim(),k=(e.policyholderName??t?.policyholderName??"").trim(),O=(e.conflictPartnerName??t?.conflictPartnerName??"").trim(),E=(e.policyholderCompany??t?.policyholderCompany??"").trim(),M=(e.conflictPartnerCompany??t?.conflictPartnerCompany??"").trim(),I=(e.policyholderSearchText??t?.policyholderSearchText??"").trim(),S=(e.conflictPartnerSearchText??t?.conflictPartnerSearchText??"").trim(),B=Date.now(),A=t?.firstSeenAt||B,T=s(e.lastSeenAt)||B,q=s(e.updatedAt)||B,z=(e.caseUrl??t?.caseUrl??"").trim()||`/cases/${e.caseId}/processing/overview`;return{caseId:e.caseId,caseUrl:z,firstName:o,lastName:i,fullName:u,filesNumber:m,conflictPartnerFilesNumber:d,policyholderPhoneNumber:f,policyholderMobileNumber:h,conflictPartnerPhoneNumber:b,conflictPartnerMobileNumber:g,contactPersonPhoneNumber:p,contactPersonMobileNumber:N,conflictContactPhoneNumber:y,conflictContactMobileNumber:P,telephone:w,email:v,policyholderName:k,conflictPartnerName:O,policyholderCompany:E,conflictPartnerCompany:M,policyholderSearchText:I,conflictPartnerSearchText:S,progressState:e.progressState??t?.progressState??null,updatedAt:q,firstSeenAt:A,lastSeenAt:T,fullNameNorm:n(u),filesNumberNorm:r(m),conflictPartnerFilesNumberNorm:r(d),telephoneNorm:x.map(e=>function(e){const t=c(e);return t.length>=6?t:""}(e)).filter(Boolean).join(" "),emailNorm:a(v)}}(e,await d(o.get(e.caseId))||null);return o.put(l),await m(t),l}const h=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){}}},b=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)}},g=["https://team.m2-loesung.de/*","https://team-staging.m2-loesung.de/*"],p={largeComments:!1,gamification:!1,emailAutocomplete:!1,draggableModals:!1,relationSuggestions:!1,darkMode:!1,stylefix:!1,copyCaseButton:!0,gamificationAnimation:"random"};let N={...p},y=[],P=null;const x=document.getElementById("search-view"),C=document.getElementById("settings-view"),w=document.getElementById("open-settings-button"),v=document.getElementById("back-to-search-button"),k=document.getElementById("popup-title"),O=document.getElementById("popup-subtitle"),E=document.getElementById("case-search-input"),M=document.getElementById("case-search-status"),I=document.getElementById("case-search-results");function S(e){if(x){const t="search"===e;x.hidden=!t,x.classList.toggle("view-active",t)}if(C){const t="settings"===e;C.hidden=!t,C.classList.toggle("view-active",t)}k&&(k.textContent="settings"===e?"Einstellungen":"Fallsuche"),O&&(O.textContent="settings"===e?"Einstellungen":"Name, Aktenzeichen, Az-KP oder Telefon"),w&&(w.innerHTML="settings"===e?"&#8592;":"&#9881;",w.title="settings"===e?"Zurück":"Einstellungen",w.setAttribute("aria-label","settings"===e?"Zurück":"Einstellungen"))}function B(e){M&&(M.textContent=e)}function A(e){return`${(e.policyholderName||"").trim()||"?"} ./. ${(e.conflictPartnerName||"").trim()||"~"}`}function T(e){return(e||"").replace(/\D+/g,"")}function q(e){const t=c(e);return t.length>=6?t:""}function z(e){return[{fieldName:"VN Festnetz",value:e.policyholderPhoneNumber||""},{fieldName:"VN Mobil",value:e.policyholderMobileNumber||""},{fieldName:"KP Festnetz",value:e.conflictPartnerPhoneNumber||""},{fieldName:"KP Mobil",value:e.conflictPartnerMobileNumber||""},{fieldName:"VN-Kontaktperson Festnetz",value:e.contactPersonPhoneNumber||""},{fieldName:"VN-Kontaktperson Mobil",value:e.contactPersonMobileNumber||""},{fieldName:"KP-Kontaktperson Festnetz",value:e.conflictContactPhoneNumber||""},{fieldName:"KP-Kontaktperson Mobil",value:e.conflictContactMobileNumber||""},{fieldName:"Telefon",value:e.telephone||""}].filter(e=>!!q(e.value))}function F(e,t){const n=q(t),o=T(t),r=e.telephoneNorm||"",c=z(e);if(n&&r&&(r.includes(n)||n.includes(r)))return!0;if(o)for(const e of c){const t=T(e.value);if(t&&t.includes(o))return!0}return!1}function L(e,t){const n=o(t),i=r(t),l=a(t);if(n){const t=(e.policyholderName||"").trim(),r=(e.conflictPartnerName||"").trim(),c=(e.policyholderCompany||"").trim(),a=(e.conflictPartnerCompany||"").trim(),i=(e.policyholderSearchText||"").trim(),l=(e.conflictPartnerSearchText||"").trim(),s=(e.fullName||"").trim();if(i&&o(i).includes(n))return{fieldName:"Versicherungsnehmer",fieldValue:i};if(l&&o(l).includes(n))return{fieldName:"Konfliktpartner",fieldValue:l};if(t&&o(t).includes(n))return{fieldName:"Versicherungsnehmer",fieldValue:t};if(r&&o(r).includes(n))return{fieldName:"Konfliktpartner",fieldValue:r};if(c&&o(c).includes(n))return{fieldName:"Versicherungsnehmer-Firma",fieldValue:c};if(a&&o(a).includes(n))return{fieldName:"Konfliktpartner-Firma",fieldValue:a};if(s&&o(s).includes(n))return{fieldName:"Name",fieldValue:s};const u=A(e);if(o(u).includes(n))return{fieldName:"Fallname",fieldValue:u}}if(i&&(e.filesNumberNorm||"").includes(i))return{fieldName:"Aktenzeichen",fieldValue:e.filesNumber||""};if(i&&(e.conflictPartnerFilesNumberNorm||"").includes(i))return{fieldName:"Az-KP",fieldValue:e.conflictPartnerFilesNumber||""};if(l&&(e.emailNorm||"").includes(l))return{fieldName:"E-Mail",fieldValue:e.email||""};if(F(e,t)){const n=T(t),o=c(t),r=z(e).find(e=>{const t=T(e.value),r=q(e.value);return!(!n||!t.includes(n))||!(!o||!r.includes(o)&&!o.includes(r))});return{fieldName:r?.fieldName||"Telefon",fieldValue:r?.value||e.telephone||""}}return{fieldName:"ID",fieldValue:e.caseId}}function V(e,t){const n=document.createElement("div");if(!t||!e)return n.textContent=e,n;const r=e.toLowerCase(),c=t.toLowerCase(),a=r.indexOf(c);if(-1===a){const r=o(e),c=o(t);return c&&r.includes(c),n.textContent=e,n}const i=e.substring(0,a),l=e.substring(a,a+t.length),s=e.substring(a+t.length);i&&n.appendChild(document.createTextNode(i));const u=document.createElement("mark");return u.style.backgroundColor="#ffd700",u.style.fontWeight="bold",u.textContent=l,n.appendChild(u),s&&n.appendChild(document.createTextNode(s)),n}function $(){const e=(E?.value||"").trim();if(e.length<3)return I&&(I.innerHTML=""),void B("Bitte mindestens 3 Zeichen eingeben.");!function(e,t=""){if(I)if(I.innerHTML="",e.length){B(`${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 r=document.createElement("div");r.className="result-title",r.textContent=A(n);const c=document.createElement("div");c.className="result-meta",c.textContent=n.filesNumber?`AZ: ${n.filesNumber}`:"";const a=L(n,t),i=document.createElement("div");i.className="result-match";const l=document.createElement("strong");l.textContent=a.fieldName+": ",i.appendChild(l);const s=V(a.fieldValue,t);i.appendChild(s),o.appendChild(r),c.textContent&&o.appendChild(c),o.appendChild(i),e.appendChild(o),I.appendChild(e)}}else B("Keine Treffer gefunden.")}(function(e){const t=o(e),n=r(e),i=c(e),l=a(e);return console.debug("zt-popup: filter search",{queryRaw:e,qText:t,qFiles:n,qPhone:i,totalRecords:y.length}),y.filter(r=>t&&function(e){return o([e.fullName||"",e.firstName||"",e.lastName||"",e.policyholderName||"",e.conflictPartnerName||"",e.policyholderCompany||"",e.conflictPartnerCompany||"",e.conflictPartnerFilesNumber||"",e.policyholderSearchText||"",e.conflictPartnerSearchText||"",A(e)].join(" "))}(r).includes(t)?(console.debug("zt-popup: text match",{caseId:r.caseId,fullName:r.fullName,policyholderName:r.policyholderName,conflictPartnerName:r.conflictPartnerName,policyholderCompany:r.policyholderCompany,conflictPartnerCompany:r.conflictPartnerCompany,qText:t}),!0):n&&(r.filesNumberNorm||"").includes(n)?(console.debug("zt-popup: filesNumber match",{caseId:r.caseId,qFiles:n}),!0):n&&(r.conflictPartnerFilesNumberNorm||"").includes(n)?(console.debug("zt-popup: conflictPartnerFilesNumber match",{caseId:r.caseId,qFiles:n}),!0):l&&(r.emailNorm||"").includes(l)?(console.debug("zt-popup: email match",{caseId:r.caseId,qEmail:l}),!0):!!F(r,e)&&(console.debug("zt-popup: phone match",{caseId:r.caseId,qPhone:i}),!0))}(e).slice(0,100),e)}w?.addEventListener("click",()=>{const e=!!C&&!C.hidden;S(e?"search":"settings"),e&&E?.focus()}),v?.addEventListener("click",()=>{S("search"),E?.focus()}),E?.addEventListener("input",()=>{P&&window.clearTimeout(P),P=window.setTimeout(()=>$(),120)}),I?.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 K=document.getElementById("gamification-animation-select"),D=document.getElementById("comments-large-checkbox"),j=document.getElementById("comments-large-checkbox-value");j&&(j.textContent=N.largeComments?"On":"Off"),D?.addEventListener("change",e=>{const t=e.target.checked;j&&(j.textContent=t?"On":"Off"),b("largeComments",t),h({id:"large-comments",value:t?"On":"Off"})});const W=document.getElementById("gamification-checkbox"),U=document.getElementById("gamification-checkbox-value");U&&(U.textContent=N.gamification?"On":"Off"),W?.addEventListener("change",e=>{const t=e.target.checked;U&&(U.textContent=t?"On":"Off"),b("gamification",t),h({id:"gamification",value:t?"On":"Off"})}),K?.addEventListener("change",e=>{const t=e.target.value;b("gamificationAnimation",t),h({id:"gamification-animation",value:t})});const Z=document.getElementById("email-autocomplete-checkbox"),H=document.getElementById("email-autocomplete-checkbox-value");H&&(H.textContent=N.emailAutocomplete?"On":"Off");const R=document.getElementById("copy-case-checkbox"),_=document.getElementById("copy-case-checkbox-value");_&&(_.textContent=N.copyCaseButton?"On":"Off"),R?.addEventListener("change",async e=>{const t=e.target.checked;_&&(_.textContent=t?"On":"Off"),await b("copyCaseButton",t);try{const e=await browser.tabs.query({url:g});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 G=document.getElementById("darkmode-checkbox"),J=document.getElementById("darkmode-checkbox-value");J&&(J.textContent=N.darkMode?"On":"Off"),G?.addEventListener("change",async e=>{const t=e.target.checked;J&&(J.textContent=t?"On":"Off"),await b("darkMode",t);try{const e=await browser.tabs.query({url:g});for(const n of e)try{browser.tabs.sendMessage(n.id,{id:"dark-mode",value:t?"On":"Off"}).catch(()=>{})}catch(e){}}catch(e){}});const Q=document.getElementById("stylefix-checkbox"),X=document.getElementById("stylefix-checkbox-value");X&&(X.textContent=N.stylefix?"On":"Off"),Q?.addEventListener("change",async e=>{const t=e.target.checked;X&&(X.textContent=t?"On":"Off"),await b("stylefix",t);try{const e=await browser.tabs.query({url:g});for(const n of e)try{browser.tabs.sendMessage(n.id,{id:"stylefix",value:t?"On":"Off"}).catch(()=>{})}catch(e){}}catch(e){}}),Z?.addEventListener("change",e=>{const t=e.target.checked;H&&(H.textContent=t?"On":"Off"),b("emailAutocomplete",t),h({id:"email-autocomplete",value:t?"On":"Off"})});const Y=document.getElementById("relation-suggestions-checkbox"),ee=document.getElementById("relation-suggestions-checkbox-value");ee&&(ee.textContent=N.relationSuggestions?"On":"Off"),Y?.addEventListener("change",e=>{const t=e.target.checked;ee&&(ee.textContent=t?"On":"Off"),b("relationSuggestions",t),h({id:"relation-suggestions",value:t?"On":"Off"})});const te=document.getElementById("draggable-modals-checkbox");if(te){const e=document.getElementById("draggable-modals-checkbox-value"),t=!!N.draggableModals;e&&(e.textContent=t?"On":"Off"),te.addEventListener("change",async()=>{const t=te.checked;e&&(e.textContent=t?"On":"Off"),await b("draggableModals",t);try{const e=await browser.tabs.query({url:g});for(const n of e)try{browser.tabs.sendMessage(n.id,{id:"draggable-modals",value:t?"On":"Off"}).catch(()=>{})}catch(e){}}catch(e){}})}const ne=document.getElementById("clear-cache-button");let oe=!1,re=null;ne&&ne.addEventListener("click",async()=>{if(!oe)return oe=!0,ne.textContent="Nochmal klicken um Cache zu löschen",ne.classList.add("confirm"),void(re=setTimeout(()=>{oe=!1,ne.textContent="Cache löschen",ne.classList.remove("confirm"),re=null},5e3));oe=!1,ne.classList.remove("confirm"),re&&(re=clearTimeout(re)),h({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()}),S("search"),async function(){try{y=await async function(e={}){const t=(await u()).transaction(i,"readonly"),n=t.objectStore(i),o=await d(n.getAll());await m(t);const r=e.sortBy||"updatedAt",c=e.sortDir||"desc";return o.sort((e,t)=>{const n=e[r]||0,o=t[r]||0;return"asc"===c?n-o:o-n}),e.limit&&e.limit>0?o.slice(0,e.limit):o}({limit:2e3,sortBy:"updatedAt",sortDir:"desc"});const e=await async function(e){let t=0;for(const n of e){const e=z(n).map(e=>q(e.value)).filter(Boolean).join(" "),o=n.policyholderPhoneNumber||n.policyholderMobileNumber||n.conflictPartnerPhoneNumber||n.conflictPartnerMobileNumber||n.contactPersonPhoneNumber||n.contactPersonMobileNumber||n.conflictContactPhoneNumber||n.conflictContactMobileNumber||n.telephone||"",r=a(n.email);n.telephoneNorm===e&&n.emailNorm===r&&n.telephone===o||(n.telephoneNorm=e,n.telephone=o,n.emailNorm=r,await f({caseId:n.caseId,caseUrl:n.caseUrl,firstName:n.firstName,lastName:n.lastName,fullName:n.fullName,filesNumber:n.filesNumber,conflictPartnerFilesNumber:n.conflictPartnerFilesNumber,policyholderPhoneNumber:n.policyholderPhoneNumber,policyholderMobileNumber:n.policyholderMobileNumber,conflictPartnerPhoneNumber:n.conflictPartnerPhoneNumber,conflictPartnerMobileNumber:n.conflictPartnerMobileNumber,contactPersonPhoneNumber:n.contactPersonPhoneNumber,contactPersonMobileNumber:n.contactPersonMobileNumber,conflictContactPhoneNumber:n.conflictContactPhoneNumber,conflictContactMobileNumber:n.conflictContactMobileNumber,telephone:n.telephone,email:n.email,policyholderName:n.policyholderName,conflictPartnerName:n.conflictPartnerName,policyholderCompany:n.policyholderCompany,conflictPartnerCompany:n.conflictPartnerCompany,policyholderSearchText:n.policyholderSearchText,conflictPartnerSearchText:n.conflictPartnerSearchText,progressState:n.progressState,updatedAt:n.updatedAt,lastSeenAt:n.lastSeenAt}),t+=1)}return t}(y),t=y.length;console.debug(`zt-popup: loaded ${t} case records from index`,{refreshed:e}),B(`Index bereit: ${t} Fälle`)}catch(e){y=[],console.error("zt-popup: case search db error",e),B("Fallindex konnte nicht geladen werden.")}}(),async function(){try{const e=await browser.storage.local.get(p);if(N={...p,...e||{}},D&&(D.checked=!!N.largeComments,D.toggleAttribute("checked",!!N.largeComments)),j&&(j.textContent=N.largeComments?"On":"Off"),W&&(W.checked=!!N.gamification,W.toggleAttribute("checked",!!N.gamification)),U&&(U.textContent=N.gamification?"On":"Off"),Z&&(Z.checked=!!N.emailAutocomplete,Z.toggleAttribute("checked",!!N.emailAutocomplete)),H&&(H.textContent=N.emailAutocomplete?"On":"Off"),R&&(R.checked=!!N.copyCaseButton,R.toggleAttribute("checked",!!N.copyCaseButton)),_&&(_.textContent=N.copyCaseButton?"On":"Off"),te){const e=!!N.draggableModals;te.checked=e;const t=document.getElementById("draggable-modals-checkbox-value");t&&(t.textContent=e?"On":"Off")}G&&(G.checked=!!N.darkMode,G.toggleAttribute("checked",!!N.darkMode)),J&&(J.textContent=N.darkMode?"On":"Off");const t=document.getElementById("stylefix-checkbox"),n=document.getElementById("stylefix-checkbox-value");t&&(t.checked=!!N.stylefix,t.toggleAttribute("checked",!!N.stylefix)),n&&(n.textContent=N.stylefix?"On":"Off"),Y&&(Y.checked=!!N.relationSuggestions,Y.toggleAttribute("checked",!!N.relationSuggestions)),ee&&(ee.textContent=N.relationSuggestions?"On":"Off");try{const t=e&&e.gamificationAnimation||"random";K&&(K.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.20",
"version": "1.2.22",
"description": "Add-On für das M2-Zaubertool",

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

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

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

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

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

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