1import{store as c,getUrlParamsFromStorage as G}from"woody_addon_favorites_tools";const re="woody:favorites-cells-added";async function de(o){if(!o||o.dataset.wfavReady==="1")return;o.dataset.wfavReady="1";const a=ie(o),d=se(a.i18n),p=a.view||"all",h=o.querySelector("[data-wfav-live]"),g=o.querySelector("[data-wfav-notice]"),m=o.querySelector("[data-wfav-alert]"),y=o.querySelector("[data-wfav-grid]"),A=o.querySelector("[data-wfav-geo-grid]"),L=new Map;(a.geo||[]).forEach(e=>{e&&e.properties&&L.set(String(e.properties.post_id),e)});const I=new Map;(a.items||[]).forEach(e=>I.set(String(e.pid),e.sid));const E=!!(a.group&&a.group.shared),b=await ae();oe(),z(o,a,p),k(A),k(y),E||(_(A),_(y));let S=null;V().then(e=>{S=e}),C(),K(),ee(),U(),c.subscribe(()=>{C(),P(),U()}),document.addEventListener(re,e=>{e.detail&&e.detail.fragment&&(k(e.detail.fragment),E||_(e.detail.fragment),S&&S.onGridUpdated())});function O(e){const t=e.querySelector(".card")||e,n=t.dataset?t.dataset.sheetid:null;if(n)return"s"+n;const r=t.dataset?t.dataset.postid:null;return r?I.get(String(r))||String(r):null}function x(e){const t=e.querySelector(".card-title, h2, h3");return t?t.textContent.trim():""}function k(e){e&&e.querySelectorAll('[role="listitem"], .cell').forEach(t=>{const n=t.querySelector(".card")||t,r=n.dataset?n.dataset.postid:null;if(!r)return;t.dataset.wfavItem="",t.dataset.wfavPid=String(r);const i=L.get(String(r));i&&(t.dataset.locationLat=String(i.lat),t.dataset.locationLng=String(i.lon))})}async function V(){if(!o.querySelector("[data-wfav-map]")||!(a.geo||[]).length)return null;try{const{default:e}=await import("woody_favorites_map_view"),t=new e(o,a);return await t.init(),t}catch(e){return console.warn("[favorites] vue carte indisponible",e),null}}function _(e){e&&(e.querySelectorAll('[role="listitem"], .cell').forEach(t=>{if(t.querySelector("[data-wfav-actions]")||t.querySelector("[data-wfav-remove]"))return;const n=O(t);if(!n)return;t.dataset.wfavSid=n;const r=t.querySelector(".card"),i=q("card-remove");r&&i&&(v(i,"remove-label",d("remove_label",x(t))),r.insertBefore(i,r.firstChild));const s=q("card-actions");s&&(r||t).appendChild(s)}),P(e))}function P(e){(e||o).querySelectorAll("[data-wfav-sid]").forEach(n=>{const r=n.querySelector("[data-wfav-card-groups]");r&&(r.textContent="",c.getItemGroups(n.dataset.wfavSid).forEach(i=>{const s=c.getGroup(i);if(!s)return;const u=q("card-group-tag");v(u,"name",s.name),r.appendChild(u)}))})}function C(){const e=o.querySelector("[data-wfav-groups-section]");if(!e)return;e.hidden=!1;const t=c.getGroups(),n=e.querySelector("[data-wfav-groups-list]"),r=e.querySelector("[data-wfav-groups-empty]"),i=e.querySelector("[data-wfav-groups-count]");n.textContent="",t.forEach(s=>{const u=q("group-chip"),f=u.querySelector("[data-wfav-chip-link]");f.href=B(s),f.dataset.wfavGid=s.id,v(u,"name",s.name),v(u,"count",String(s.count)),v(u,"count-sr",d("group_count_sr",s.name,s.count)),v(u,"delete-label",d("group_delete_label",s.name)),u.querySelector("[data-wfav-group-delete]").dataset.wfavGid=s.id,n.appendChild(u)}),r&&(r.hidden=t.length>0),i&&(i.textContent=t.length>0?String(t.length):"")}function B(e){const t=c.getFavorites({group:e.id}),n=new URL(a.permalink||window.location.pathname,window.location.origin),r=(t.length?"fav=f:"+t.join(",")+"&":"")+"fg="+M(e.name)+"&fgid="+encodeURIComponent(e.id);return n.origin+n.pathname+"?"+r}o.addEventListener("click",e=>{const t=e.target.closest("[data-wfav-group-delete]");if(t){e.preventDefault(),j(t.dataset.wfavGid);return}const n=e.target.closest("[data-wfav-group-create]");if(n){e.preventDefault(),N(n.closest("[data-wfav-actions]"));return}const r=e.target.closest("[data-wfav-group-toggle]");if(r){e.preventDefault(),X(r);return}const i=e.target.closest("[data-wfav-remove]");i&&(e.preventDefault(),J(i.closest("[data-wfav-sid]")))}),o.addEventListener("change",e=>{const t=e.target.closest("[data-wfav-group-checkbox]");if(!t)return;const n=t.closest("[data-wfav-sid]"),r=n.dataset.wfavSid,i=t.value,s=c.getGroup(i);if(!s)return;if(!(t.checked?c.assign(r,i):c.unassign(r,i))){t.checked=!t.checked,D(d("group_assign_failed"));return}l(t.checked?d("group_assigned",x(n),s.name):d("group_unassigned",x(n),s.name)),C()});async function N(e){const t=b?await b.openGroupCreate():null;if(t&&(l(d("group_created",c.getGroup(t).name)),e)){const n=e.closest("[data-wfav-sid]");n&&c.assign(n.dataset.wfavSid,t),R(e)}}async function j(e){const t=c.getGroup(e);if(!t)return;const n=c.getFavorites({group:t.id}).length;(!b||await b.openConfirm(d("group_delete_confirm",t.name,n)))&&(c.deleteGroup(t.id),l(d("group_deleted",t.name)))}document.addEventListener("keydown",e=>{if(e.key!=="Escape")return;const t=o.querySelector('[data-wfav-group-toggle][aria-expanded="true"]');
1t&&(F(t),t.focus())}),document.addEventListener("click",e=>{const t=o.querySelector('[data-wfav-group-toggle][aria-expanded="true"]');if(!t)return;const n=t.closest("[data-wfav-actions]");n&&!n.contains(e.target)&&F(t)});function F(e){const t=e.parentElement.querySelector("[data-wfav-grouppop]");e.setAttribute("aria-expanded","false"),t&&(t.hidden=!0)}function X(e){const t=e.parentElement.querySelector("[data-wfav-grouppop]");if(!t)return;const n=e.getAttribute("aria-expanded")==="true";e.setAttribute("aria-expanded",String(!n)),t.hidden=n,n||R(e.parentElement)}function R(e){const t=e.querySelector("[data-wfav-grouppop-list]"),n=e.closest("[data-wfav-sid]");if(!t||!n)return;const r=c.getItemGroups(n.dataset.wfavSid),i=c.getGroups(),s=e.querySelector("[data-wfav-grouppop-empty]");s&&(s.hidden=i.length>0),t.textContent="",i.forEach(u=>{const f=q("group-option"),w=f.querySelector("[data-wfav-group-checkbox]");w.value=u.id,w.checked=r.indexOf(u.id)!==-1,v(f,"name",u.name),t.appendChild(f)})}function J(e){if(!e)return;const t=x(e),n=e.dataset.wfavSid,r=e.nextElementSibling||e.previousElementSibling,i=r?r.querySelector("[data-wfav-remove]"):o.querySelector(".wfav-items__title");i&&i.focus({preventScroll:!0});const s=e.dataset.wfavPid;e.remove(),c.remove(n),l(d("removed",t)),H(),S&&s&&S.onFavoriteRemoved(s),o.querySelectorAll("[data-wfav-sid]").length===0&&l(d("list_empty"))}function z(e,t,n){const r=Array.isArray(t.missing)?t.missing:[],i=(t.items||[]).map(w=>w.sid);if(i.length&&c.markPresent(i),r.length&&c.markMissing(r,{source:"url"}),n!=="all")return;(Array.isArray(t.requested)&&t.requested.length?t.requested:i).forEach(w=>{c.isFavorite(w)||c.add(w,{source:"url"})});const u=new URLSearchParams(window.location.search).get("fav"),f=G();f!==""&&u!==f&&(window.location=T(f))}function H(){p==="all"&&window.history.pushState({},"",T(G()))}function T(e){const t=new URL(window.location.href);t.searchParams.delete("fav");const n=t.searchParams.toString();let r=e===""?"":"fav="+e;return n!==""&&(r+=(r===""?"":"&")+n),t.origin+t.pathname+(r===""?"":"?"+r)+t.hash}function K(){const e=o.querySelector("[data-wfav-print]");e&&(e.hidden=!1,e.addEventListener("click",()=>window.print()));const t=o.querySelector("[data-wfav-share]");t&&(t.hidden=!1,t.addEventListener("click",()=>Y()))}function Q(){const e=a.group&&a.group.id?a.group.id:null,t=e?c.getFavorites({group:e}):W(),n=a.group&&a.group.name?a.group.name:"",r=new URL(a.permalink||window.location.pathname,window.location.origin);return r.origin+r.pathname+"?fav=g:"+M(n)+"."+t.join(",")}function W(){const e=c.getFavorites();return e.length?e:(a.items||[]).map(t=>t.sid)}async function Y(){const e=Q();if(navigator.share)try{await navigator.share({title:d("share_title"),url:e});return}catch(t){if(t&&t.name==="AbortError")return}if(navigator.clipboard&&navigator.clipboard.writeText)try{await navigator.clipboard.writeText(e),l(d("link_copied"));return}catch{}if(Z(e)){l(d("link_copied"));return}$(e)}function Z(e){try{const t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();const n=document.execCommand("copy");return document.body.removeChild(t),n}catch{return!1}}function $(e){const t=o.querySelector("[data-wfav-sharebox]"),n=o.querySelector("[data-wfav-shareurl]");if(!t||!n){D(d("share_failed"));return}t.hidden=!1,n.value=e,n.focus(),n.select(),l(d("share_manual"))}function U(){const e=o.querySelector("[data-wfav-back]");if(!e||!a.permalink)return;const t=G();if(t===""){e.setAttribute("href",a.permalink);return}const n=a.permalink.indexOf("?")===-1?"?":"&";e.setAttribute("href",a.permalink+n+"fav="+t)}function ee(){const e=o.querySelector("[data-wfav-import]");!e||!E||(e.hidden=!1,e.addEventListener("click",()=>{const t=Array.isArray(a.requested)&&a.requested.length?a.requested:(a.items||[]).map(s=>s.sid),n=te();let r=0;t.forEach(s=>{const u=!c.isFavorite(s);u&&!c.add(s,{source:"user"})||(n&&c.assign(s,n,{source:"user"}),u&&r++)});const i=n?c.getGroup(n):null;l(i?d("imported_group",r,i.name):d("imported",r)),e.hidden=!0}))}function te(){const e=a.group&&a.group.name?String(a.group.name).trim():"";return e?c.createGroup(ne(e),{source:"user"}):null}function ne(e){const t={};
1if(c.getGroups().forEach(n=>{t[n.name]=!0}),!t[e])return e;for(let n=2;n<=c.MAX_GROUPS+1;n++){const r=" - "+n,i=e.slice(0,c.GROUP_NAME_MAX-r.length)+r;if(!t[i])return i}return e}function l(e){e&&(h&&(h.textContent="",window.setTimeout(()=>{h.textContent=e},60)),g&&(g.textContent=e,window.clearTimeout(l._timer),l._timer=window.setTimeout(()=>{g.textContent=""},6e3)),m&&(m.textContent=""))}function D(e){m&&(m.textContent=e),g&&(g.textContent="")}function q(e){const t=o.querySelector('[data-wfav-tpl="'+e+'"]');return t?t.content.firstElementChild.cloneNode(!0):null}function v(e,t,n){const r=e.querySelector('[data-wfav-slot="'+t+'"]');r&&(r.textContent=n)}}async function ae(){const o=document.querySelector("[data-wfav-dialogs]");if(!o)return null;try{const a=await import("woody_favorites_dialog");return a.init(o)?a:null}catch(a){return console.warn("[FAVORITES] dialogue indisponible",a),null}}async function oe(){try{(await import("woody_favorites_analytics")).init(c)}catch(o){console.warn("[FAVORITES] suivi indisponible",o)}}function ie(o){const a=o.querySelector("script[data-wfav-config]");if(!a)return{};try{return JSON.parse(a.textContent)}catch(d){return console.error(["[FAVORITES]",d]),{}}}function se(o){const a=o||{};return function(d,...p){let h=0;return String(a[d]||"").replace(/%(\d+\$)?[sd]/g,(g,m)=>{const y=m?parseInt(m,10)-1:h++;return p[y]===void 0?g:String(p[y])})}}function M(o){const a=new TextEncoder().encode(String(o));let d="";return a.forEach(p=>{d+=String.fromCharCode(p)}),window.btoa(d).replace(/\+/g,"~").replace(/\//g,"_").replace(/=+$/,"")}export{de as init};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.