const SMMediaPicker = { upload: (files) => { const validFiles = Array.from(files).filter((file) => { return SM.mimeMatches(file.type, Alpine.store('media').require_mime_type); }); const titles = Array.from(validFiles).map((file) => SM.toTitleCase(file.name)); SM.upload(validFiles, (response) => { response.files.forEach((file) => { SMMediaPicker.updateSelection(file.data.name); }); SMMediaPicker.open( Alpine.store('media').selected, { require_mime_type: Alpine.store('media').require_mime_type, allow_multiple: Alpine.store('media').allow_multiple, allow_uploads: Alpine.store('media').allow_uploads }, Alpine.store('media').callback ); }, titles); }, gotoLink: (url) => { if(url !== null) { const page = new URL(url).searchParams.get('page'); SMMediaPicker.query(page, document.querySelector('input[name="search"]').value); } }, updateSelection: (name) => { if (typeof name === 'string' && name !== '') { if (Alpine.store('media').selected.some(i => i === name)) { Alpine.store('media').selected = Alpine.store('media').selected.filter(i => i !== name); } else { if (!Alpine.store('media').allow_multiple) { Alpine.store('media').selected = [name]; } else { Alpine.store('media').selected.push(name); } } } }, search: () => { SMMediaPicker.query(null, document.querySelector('input[name="search"]').value); }, query: (page, search) => { let params = { mime_type: Alpine.store('media').require_mime_type, per_page: Alpine.store('media').per_page, search: search, 'selected[]': Alpine.store('media').selected }; if(page !== null) { params.page = page; } axios.get('/media', { params: params }) .then(response => { response.data.links[0].label = ''; response.data.links[response.data.links.length - 1].label = ''; response.data.data.forEach((file) => { file.extension = file.name.split('.').pop(); }); Alpine.store('media').current_page = response.data.current_page; Alpine.store('media').per_page = response.data.per_page; Alpine.store('media').to = response.data.to; Alpine.store('media').total = response.data.total; Alpine.store('media').items = response.data.data; Alpine.store('media').pagination = []; Alpine.nextTick(() => { Alpine.store('media').pagination = response.data.links; }); }) .catch(error => { console.error(error); }); }, html: `
or
Maximum upload size: ${SM.bytesToString(SM.maxUploadSize())}
No items found