PageSourceSearch

https://moveoss.nl/content/themes/movenl/assets/js/organization-signup-BvvoQpRH.js

js moveoss.nl collected 2026-09-24 13:29:12 UTC 26,484 bytes, 70 lines download raw bytes

1import { o as organizations } from './organizations-CR2eFO7J.js';
2import { l as locations } from './locations-BB_vz-r1.js';
3import { d as settings, g as globalStore } from './main-module-D8UQLSsS.js';
4import { l as loading, d as doneLoading, a as loadingSkeleton } from './loading-DICUQEYz.js';
5import { loginModal } from './login-B5_AdhYC.js';
6import { r as reformat } from './reformat-DUMoSDhI.js';
7import { o as organizationsHelper } from './organizations-CYZa_xjI.js';
8import { m as modal } from './default-cGMypuVT.js';
9
10const media={/**
11   * @param {File} file
12   * @returns {Promise<{ url: string, attachment_id: number }>}
13   */async uploadImage(file){const body=new FormData();body.append('file',file);const response=await fetch(`${settings.restUrl}upload-image`,{method:'POST',headers:{'X-WP-Nonce':settings.restNonce},body});const data=await response.json();if(!response.ok){throw new Error(data.message||'Uploaden van afbeelding mislukt.');}return data;},/**
14   * @param {number} attachmentId
15   */async deleteImage(attachmentId){await fetch(`${settings.restUrl}delete-image/${attachmentId}`,{method:'DELETE',headers:{'X-WP-Nonce':settings.restNonce}});}};
16
17const organizationSignupCard=org=>{var _org$name,_ref,_ref2,_org$type,_org$organization_typ,_org$image;const name=reformat.escape((_org$name=org.name)!==null&&_org$name!==void 0?_org$name:'');const type=(_ref=(_ref2=(_org$type=org.type)!==null&&_org$type!==void 0?_org$type:org.type_name)!==null&&_ref2!==void 0?_ref2:(_org$organization_typ=org.organization_type)===null||_org$organization_typ===void 0?void 0:_org$organization_typ.name)!==null&&_ref!==void 0?_ref:null;const rawLocation=organizationsHelper.getLocation(org);const location=rawLocation?reformat.escape(rawLocation):null;const image=(_org$image=org.image)!==null&&_org$image!==void 0?_org$image:null;const id=org.id;const url=`/organisatie/${id}-${reformat.stringToSlug(name)}`;return `
18    <div class="c-card-horizontal relative transition-transform duration-200 hover:scale-[1.02]">
19      <a href="${url}" target="_blank" rel="noopener noreferrer" class="absolute inset-0 z-[1]" aria-label="Bekijk ${name}"></a>
20      ${image?`<img class="c-card-horizontal__image hidden md:block" src="${image}" alt="" aria-hidden="true" style="border-radius: 8px 0 0 8px;">`:`<div class="c-card-horizontal__image bg-gray-50 hidden md:flex items-center justify-center" style="border-radius: 8px 0 0 8px;">
21             <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" width="28" height="28" class="text-gray-300" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M3 9h18M9 21V9"/></svg>
22           </div>`}
23      <div class="c-card-horizontal__content flex flex-col gap-2 justify-center">
24        <div class="flex items-start justify-between gap-3">
25          <div class="min-w-0">
26            <p class="c-card-horizontal__content-top__title">${name}</p>
27            ${location?`<p class="c-card-horizontal__content-top__subtitle flex items-center gap-1 mt-0.5">
28              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="currentColor" width="12" height="12" class="shrink-0" aria-hidden="true"><path fill-rule="evenodd" d="M8 1.5a4.5 4.5 0 1 0 0 9 4.5 4.5 0 0 0 0-9ZM2 6a6 6 0 1 1 10.174 4.31c-.203.196-.37.42-.524.65l-2.093 3.317a1.703 1.703 0 0 1-2.874 0L4.35 10.96a5.123 5.123 0 0 0-.524-.65A5.975 5.975 0 0 1 2 6Zm6 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" clip-rule="evenodd"/></svg>
29              ${location}
30            </p>`:''}
31          </div>
32          ${type?`<div class="c-card__tags !mt-0 !p-0 shrink-0"><span>${reformat.escape(String(type))}</span></div>`:''}
33        </div>
34        <div>
35          <button
36            type="button"
37            class="js-org-access-btn c-button c-button-outline-primary c-button-sm relative z-[2]"
38            data-id="${id}"
39            data-name="${name}"
40            aria-label="Toegang vragen bij ${name}"
41          >Toegang vragen</button>
42        </div>
43      </div>
44    </div>`;};
45
46const section=document.querySelector('.js-organization-signup');if(section){var _elements$form$kvkFie;const elements={search:{phase:section.querySelector('.js-org-search-phase'),input:section.querySelector('.js-org-search-input'),btn:section.querySelector('.js-org-search-btn'),results:section.querySelector('.js-org-search-results'),list:section.querySelector('.js-org-search-list'),empty:section.querySelector('.js-org-search-empty'),pagination:section.querySelector('.js-org-search-pagination'),total:section.querySelector('.js-org-search-total'),newPrompt:section.querySelector('.js-org-new-prompt')},access:{modal:document.querySelector('.js-modal[data-modal="org-access-request"]'),name:document.querySelector('.js-modal[data-modal="org-access-request"] .js-org-access-name'),role:document.querySelector('.js-modal[data-modal="org-access-request"] .js-org-access-role'),motivation:document.querySelector('.js-modal[data-modal="org-access-request"] .js-org-access-motivation'),terms:document.querySelector('.js-modal[data-modal="org-access-request"] .js-org-access-terms'),submit:document.querySelector('.js-modal[data-modal="org-access-request"] .js-org-access-submit'),error:document.querySelector('.js-modal[data-modal="org-access-request"] .js-org-access-error')},orgLogin:{modal:document.querySelector('.js-modal[data-modal="org-login"]')},form:{phase:section.querySelector('.js-org-form-phase'),back:section.querySelector('.js-org-form-back'),el:section.querySelector('.js-organization-signup-form'),panels:section.querySelectorAll('.js-step-panel'),indicatorBtns:section.querySelectorAll('.js-step-indicator-btn'),connectors:section.querySelectorAll('.js-step-connector'),mobileLabel:section.querySelector('.js-step-mobile-label'),typeSelect:section.querySelector('.js-org-type'),kvkField:section.querySelector('.js-kvk-field'),imageInput:section.querySelector('#organization_image'),errorBox:section.querySelector('.js-organization-signup-error'),successBox:section.querySelector('.js-org-form-success'),stepsWrap:section.querySelector('.js-org-form-steps'),location:{fieldsWrap:section.querySelector('.js-location-fields'),name:section.querySelector('#location_name'),street:section.querySelector('#location_street'),houseNumber:section.querySelector('#location_house_number'),zipcode:section.querySelector('#location_zipcode'),city:section.querySelector('#location_city'),idInput:section.querySelector('.js-location-id'),suggestionsWrap:section.querySelector('.js-location-suggestions'),suggestionsList:section.querySelector('.js-location-suggestions-list')}}};elements.form.kvkInput=(_elements$form$kvkFie=elements.form.kvkField)===null||_elements$form$kvkFie===void 0?void 0:_elements$form$kvkFie.querySelector('input');const totalSteps=elements.form.panels.length;let currentStep=1;let searchPage=1;let searchLastPage=1;let activeOrgId=null;let selectedLocationId=null;let lastSuggestionsQuery=null;// ── Modals ────────────────────────────────────────────────────────────────
47const accessModal=new modal();if(elements.access.modal){accessModal.modalElement=elements.access.modal;accessModal.closeModals=Array.from(elements.access.modal.querySelectorAll('.js-modal-close'));accessModal.init();accessModal.initEventListeners();}const orgLoginModal=new modal();if(elements.orgLogin.modal){orgLoginModal.modalElement=elements.orgLogin.modal;orgLoginModal.closeModals=Array.from(elements.orgLogin.modal.querySelectorAll('.js-modal-close'));orgLoginModal.init();orgLoginModal.initEventListeners();}// ── Auth gate ─────────────────────────────────────────────────────────────
48function requireAuth(callback){if(globalStore.api_token){callback();}else if(elements.orgLogin.modal){orgLoginModal.open(elements.orgLogin.modal);}else {loginModal.open();}}// ── Pagination ────────────────────────────────────────────────────────────
49const SVG_PREV=`<svg width="10" height="16" viewBox="0 0 10 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M8.11337 16L10 14.1133L3.88669 8L10 1.88669L8.11337 0L0.113374 8L8.11337 16Z"/></svg>`;const SVG_NEXT=`<svg width="10" height="16" viewBox="0 0 10 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M1.88663 0L0 1.88669L6.11331 8L0 14.1133L1.88663 16L9.88663 8L1.88663 0Z"/></svg>`;function pageRange(current,last){const delta=2;const range=[];const rangeWithDots=[];let prev;for(let i=1;i<=last;i++){if(i===1||i===last||i>=current-delta&&i<=current+delta){range.push(i);}}for(const i of range){if(prev&&i-prev>1){rangeWithDots.push('…');}rangeWithDots.push(i);prev=i;}return rangeWithDots;}function renderPagination(current,last){if(last<=1){elements.search.pagination.innerHTML='';return;}const btnBase='inline-flex items-center justify-center w-7 h-7 md:w-9 md:h-9 rounded text-xs md:text-sm font-medium transition-colors';const btnActive=`${btnBase} bg-primary text-white cursor-default`;const btnNormal=`${btnBase} border border-gray-200 text-gray-700 hover:bg-gray-100 cursor-pointer`;const btnDisabled=`${btnBase} border border-gray-200 text-gray-300 cursor-not-allowed`;let html=`<div class="flex flex-wrap items-center justify-center gap-0.5 md:gap-1">`;html+=`<button type="button" class="${current<=1?btnDisabled:btnNormal}" data-page="${current-1}" ${current<=1?'disabled':''} aria-label="Vorige pagina">${SVG_PREV}</button>`;for(const p of pageRange(current,last)){if(p==='…'){html+=`<span class="${btnBase} text-gray-400 border-0 cursor-default">…</span>`;}else {html+=`<button type="button" class="${p===current?btnActive:btnNormal}" data-page="${p}" ${p===current?'aria-current="page"':''}>${p}</button>`;}}html+=`<button type="button" class="${current>=last?btnDisabled:btnNormal}" data-page="${current+1}" ${current>=last?'disabled':''} aria-label="Volgende pagina">${SVG_NEXT}</button>`;html+=`</div>`;elements.search.pagination.innerHTML=html;elements.search.pagination.querySelectorAll('button[data-page]:not([disabled])').forEach(btn=>{btn.addEventListener('click',()=>runSearch(parseInt(btn.dataset.page)));});if(elements.search.newPrompt){elements.search.newPrompt.classList.toggle('hidden',current<last);}}// ── Search ────────────────────────────────────────────────────────────────
50async function runSearch(page=1){var _result$organizations,_ref,_result$meta$paginati,_result$meta,_pagination$current_p,_ref2,_pagination$total_pag,_pagination$total;const query=elements.search.input.value.trim();if(elements.search.newPrompt)elements.search.newPrompt.classList.add('hidden');elements.search.total.textContent='';elements.search.pagination.innerHTML='';elements.search.empty.classList.add('hidden');loading();const params={page,itemsPerPage:10};if(query)params.search=query;const result=await organizations.get(params);loadingSkeleton.hide();doneLoading();if(!result||result.name==='ApiError'){elements.search.results.classList.add('hidden');elements.search.empty.classList.remove('hidden');return;}const items=(_result$organizations=result.organizations)!==null&&_result$organizations!==void 0?_result$organizations:[];const pagination=(_ref=(_result$meta$paginati=(_result$meta=result.meta)===null||_result$meta===void 0?void 0:_result$meta.pagination)!==null&&_result$meta$paginati!==void 0?_result$meta$paginati:result.meta)!==null&&_ref!==void 0?_ref:{};searchPage=(_pagination$current_p=pagination.current_page)!==null&&_pagination$current_p!==void 0?_pagination$current_p:page;searchLastPage=(_ref2=(_pagination$total_pag=pagination.total_pages)!==null&&_pagination$total_pag!==void 0?_pagination$total_pag:pagination.last_page)!==null&&_ref2!==void 0?_ref2:1;const total=(_pagination$total=pagination.total)!==null&&_pagination$total!==void 0?_pagination$total:items.length;if(items.length===0){elements.search.results.classList.add('hidden');elements.search.empty.classList.remove('hidden');return;}elements.search.list.innerHTML=items.map(organizationSignupCard).join('');elements.search.results.classList.remove('hidden');elements.search.total.textContent=`${total} ${total===1?'aanbieder':'aanbieders'} gevonden`;renderPagination(searchPage,searchLastPage);elements.search.list.querySelectorAll('.js-org-access-btn').forEach(btn=>{btn.addEventListener('click',()=>handleAccessRequest(btn.dataset.id,btn.dataset.name));});}elements.search.btn.addEventListener('click',()=>runSearch(1));elements.search.input.addEventListener('keydown',e=>{if(e.key==='Enter'){e.preventDefault();runSearch(1);}});elements.search.input.addEventListener('search',()=>runSearch(1));// ── New org button ────────────────────────────────────────────────────────
51section.querySelectorAll('.js-org-new-btn').forEach(btn=>{btn.addEventListener('click',()=>{requireAuth(()=>{elements.search.phase.classList.add('hidden');elements.form.successBox.classList.add('hidden');elements.form.stepsWrap.classList.remove('hidden');elements.form.el.classList.remove('hidden');elements.form.phase.classList.remove('hidden');resetLocationSuggestions();goToStep(1);section.scrollIntoView({behavior:'smooth',block:'start'});elements.form.back.focus();});});});// ── Form back button ──────────────────────────────────────────────────────
52function goBackToSearch(){elements.form.successBox.classList.add('hidden');elements.form.stepsWrap.classList.remove('hidden');elements.form.el.classList.remove('hidden');elements.form.phase.classList.add('hidden');elements.search.phase.classList.remove('hidden');section.scrollIntoView({behavior:'smooth',block:'start'});elements.search.input.focus();}elements.form.back.addEventListener('click',goBackToSearch);// ── Access request ────────────────────────────────────────────────────────
53function switchAccessView(view){var _elements$access$moda;(_elements$access$moda=elements.access.modal)===null||_elements$access$moda===void 0||_elements$access$moda.querySelectorAll('.js-org-access-view').forEach(el=>{el.classList.toggle('hidden',el.dataset.view!==view);});}function handleAccessRequest(orgId,orgName){requireAuth(()=>
53{if(!elements.access.modal)return;activeOrgId=orgId;elements.access.name.textContent=orgName;elements.access.role.value='organization';elements.access.motivation.value='';elements.access.error.classList.add('hidden');if(elements.access.terms){elements.access.terms.checked=false;if(elements.access.submit)elements.access.submit.disabled=true;}switchAccessView('form');accessModal.open(elements.access.modal);});}if(elements.access.terms&&elements.access.submit){elements.access.terms.addEventListener('change',()=>{elements.access.submit.disabled=!elements.access.terms.checked;});}if(elements.access.submit){elements.access.submit.addEventListener('click',async()=>{if(!activeOrgId)return;if(elements.access.terms&&!elements.access.terms.checked){elements.access.error.textContent='Je moet akkoord gaan met de aanbiedersvoorwaarden.';elements.access.error.classList.remove('hidden');return;}const motivation=elements.access.motivation.value.trim()||null;if(motivation&&motivation.length>255){elements.access.error.textContent='De motivatie mag maximaal 255 tekens bevatten.';elements.access.error.classList.remove('hidden');return;}elements.access.error.classList.add('hidden');loading();elements.access.submit.disabled=true;const result=await organizations.requestAccess(activeOrgId,{role:elements.access.role.value,motivation,terms:1});doneLoading();elements.access.submit.disabled=false;if(result&&result.name==='ApiError'){let msg=result.message||'Er is een fout opgetreden. Probeer het later opnieuw.';if(result.errors)msg=Object.values(result.errors).flat().join(' ');elements.access.error.textContent=msg;elements.access.error.classList.remove('hidden');return;}switchAccessView('success');activeOrgId=null;});}// ── Step indicator ────────────────────────────────────────────────────────
54const CHECKMARK_SVG=`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" width="16" height="16"><polyline points="4 12 9 17 20 6"></polyline></svg>`;const CIRCLE={active:['border-primary','bg-primary','text-white'],completed:['border-primary','bg-primary','text-white'],future:['border-gray-300','bg-white','text-gray-400']};const LABEL={active:['text-primary','font-semibold'],completed:['text-black','font-normal'],future:['text-gray-400','font-normal']};const ALL_CIRCLE=[...new Set([...CIRCLE.active,...CIRCLE.future])];const ALL_LABEL=[...new Set([...LABEL.active,...LABEL.future])];function updateIndicator(step){elements.form.indicatorBtns.forEach(btn=>{const n=parseInt(btn.dataset.step);const circle=btn.querySelector('.js-step-circle');const label=btn.querySelector('.js-step-label');const state=n<step?'completed':n===step?'active':'future';circle.classList.remove(...ALL_CIRCLE);circle.classList.add(...CIRCLE[state]);
54circle.innerHTML=state==='completed'?CHECKMARK_SVG:n;label.classList.remove(...ALL_LABEL);label.classList.add(...LABEL[state]);btn.disabled=n>step;if(n===step){btn.setAttribute('aria-current','step');}else {btn.removeAttribute('aria-current');}});elements.form.connectors.forEach(line=>{const afterStep=parseInt(line.dataset.afterStep);line.classList.toggle('bg-primary',afterStep<step);line.classList.toggle('bg-gray-300',afterStep>=step);});if(elements.form.mobileLabel){var _activeBtn$dataset$la;const activeBtn=section.querySelector(`.js-step-indicator-btn[data-step="${step}"]`);const label=(_activeBtn$dataset$la=activeBtn===null||activeBtn===void 0?void 0:activeBtn.dataset.label)!==null&&_activeBtn$dataset$la!==void 0?_activeBtn$dataset$la:'';elements.form.mobileLabel.textContent=`Stap ${step} van ${totalSteps} — ${label}`;}}// ── Step navigation ───────────────────────────────────────────────────────
55function goToStep(step){elements.form.panels.forEach(panel=>{panel.classList.toggle('hidden',parseInt(panel.dataset.step)!==step);});currentStep=step;updateIndicator(step);section.scrollIntoView({behavior:'smooth',block:'start'});const heading=section.querySelector(`.js-step-panel[data-step="${step}"] .js-step-heading`);if(heading)heading.focus();}function validateCurrentStep(){const panel=section.querySelector(`.js-step-panel[data-step="${currentStep}"]`);const fields=panel.querySelectorAll('input, select, textarea');for(const field of fields){if(!field.checkValidity()){showError(field.validationMessage||'Vul alle verplichte velden correct in.');field.focus();return false;}}return true;}section.querySelectorAll('.js-step-next').forEach(btn=>{btn.addEventListener('click',()=>{if(validateCurrentStep()&&currentStep<totalSteps){hideMessages();goToStep(currentStep+1);}});});section.querySelectorAll('.js-step-prev').forEach(btn=>{btn.addEventListener('click',()=>{if(currentStep>1)goToStep(currentStep-1);});});elements.form.indicatorBtns.forEach(btn=>{btn.addEventListener('click',()=>{const target=parseInt(btn.dataset.step);if(target<currentStep)goToStep(target);});});elements.form.indicatorBtns.forEach(btn=>{btn.addEventListener('keydown',e=>{if(e.key==='Enter'||e.key===' '){const target=parseInt(btn.dataset.step);if(target===currentStep)e.preventDefault();}});});// ── KVK conditional ───────────────────────────────────────────────────────
56function toggleKvk(){const showKvk=elements.form.typeSelect.value!==''&&elements.form.typeSelect.value!=='Particulier';elements.form.kvkField.classList.toggle('hidden',!showKvk);if(elements.form.kvkInput)elements.form.kvkInput.required=showKvk;}elements.form.typeSelect.addEventListener('change',toggleKvk);// ── Location suggestions ─────────────────────────────────────────────────
57const LOCATION_SUGGESTIONS_LIMIT=3;function renderLocationSuggestions(items){elements.form.location.suggestionsList.innerHTML=items.map(location=>{var _location$house_numbe;return `
58      <li>
59        <label class="c-question-multi-option w-full">
60          <input type="checkbox" class="c-question-checkbox js-location-suggestion flex-shrink-0" data-id="${location.id}">
61          <span class="flex flex-col">
62            <span class="font-medium text-gray-800">${location.name}</span>
63            <span class="text-gray-500">${location.street} ${(_location$house_numbe=location.house_number)!==null&&_location$house_numbe!==void 0?_location$house_numbe:''}, ${location.zipcode} ${location.city}</span>
64          </span>
65        </label>
66      </li>
67    `;}).join('');elements.form.location.suggestionsList.querySelectorAll('.js-location-suggestion').forEach(input=>{input.addEventListener('change',()=>{if(input.checked){selectLocationSuggestion(input.dataset.id);}else {clearLocationSuggestionSelection();}});});elements.form.location.suggestionsWrap.classList.remove('hidden');}function hideLocationSuggestions(){elements.form.location.suggestionsWrap.classList.add('hidden');elements.form.location.suggestionsList.innerHTML='';}function setLocationFieldsDisabled(disabled){elements.form.location.fieldsWrap.classList.toggle('opacity-40',disabled);elements.form.location.fieldsWrap.classList.toggle('pointer-events-none',disabled);[elements.form.location.name,elements.form.location.street,elements.form.location.houseNumber,elements.form.location.zipcode,elements.form.location.city].forEac
67h(field=>field.disabled=disabled);}function selectLocationSuggestion(id){selectedLocationId=id;elements.form.location.idInput.value=id;setLocationFieldsDisabled(true);elements.form.location.suggestionsList.querySelectorAll('.js-location-suggestion').forEach(input=>{input.checked=input.dataset.id===String(id);});}function clearLocationSuggestionSelection(){selectedLocationId=null;elements.form.location.idInput.value='';setLocationFieldsDisabled(false);elements.form.location.suggestionsList.querySelectorAll('.js-location-suggestion').forEach(input=>{input.checked=false;});}function resetLocationSuggestions(){lastSuggestionsQuery=null;clearLocationSuggestionSelection();hideLocationSuggestions();}async function checkLocationSuggestions(){var _result$locations;const street=elements.form.location.street.value.trim();const houseNumber=elements.form.location.houseNumber.value.trim();const zipcode=elements.form.location.zipcode.value.trim();const city=elements.form.location.city.value.trim();if(!street||!zipcode||!city){hideLocationSuggestions();return;}const queryKey=`${street}|${houseNumber}|${zipcode}|${city}`;if(queryKey===lastSuggestionsQuery)return;lastSuggestionsQuery=queryKey;const result=await locations.getSuggestions({street,house_number:houseNumber||null,zipcode,city});const items=((_result$locations=result===null||result===void 0?void 0:result.locations)!==null&&_result$locations!==void 0?_result$locations:Array.isArray(result)?result:[]).slice(0,LOCATION_SUGGESTIONS_LIMIT);if(!result||result.name==='ApiError'||items.length===0){hideLocationSuggestions();return;}renderLocationSuggestions(items);}[elements.form.location.street,elements.form.location.houseNumber,elements.form.location.zipcode,elements.form.location.city].forEac
67h(field=>{field.addEventListener('blur',checkLocationSuggestions);});// ── Form messages ─────────────────────────────────────────────────────────
68function showError(message){elements.form.errorBox.textContent=message;elements.form.errorBox.classList.remove('hidden');elements.form.errorBox.scrollIntoView({behavior:'smooth',block:'center'});elements.form.errorBox.focus();}function hideMessages(){elements.form.errorBox.classList.add('hidden');}// ── Form submit ───────────────────────────────────────────────────────────
69elements.form.el.addEventListener('submit',async e=>{e.preventDefault();if(!elements.form.el.checkValidity()){elements.form.el.reportValidity();return;}hideMessages();loading();let imageUrl,attachmentId;try{({url:imageUrl,attachment_id:attachmentId}=await media.uploadImage(elements.form.imageInput.files[0]));}catch(err){doneLoading();showError(err.message);return;}const formData=new FormData(elements.form.el);formData.delete('organization[image]');formData.append('organization[image]',imageUrl);if(selectedLocationId){['location[name]','location[street]','location[house_number]','location[zipcode]','location[city]'].forEach(key=>formData.delete(key));}else {formData.delete('location_id');}const response=await organizations.create(formData);await media.deleteImage(attachmentId);doneLoading();if(response.name==='ApiError'){showError(response.message||'Er is een fout opgetreden. Probeer het later opnieuw.');return;}resetLocationSuggestions();elements.form.stepsWrap.classList.add('hidden');elements.form.el.classList.add('hidden');elements.form.successBox.classList.remove('hidden');elements.form.successBox.scrollIntoView({behavior:'smooth',block:'start'});});// ── Init ──────────────────────────────────────────────────────────────────
70updateIndicator(1);runSearch(1);}

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.