phoenix_live_view 0.19.2 → 0.19.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/js/phoenix_live_view/dom.js +2 -2
- package/assets/js/phoenix_live_view/entry_uploader.js +4 -1
- package/assets/package.json +1 -1
- package/package.json +1 -1
- package/priv/static/phoenix_live_view.cjs.js +7 -3
- package/priv/static/phoenix_live_view.cjs.js.map +2 -2
- package/priv/static/phoenix_live_view.esm.js +7 -3
- package/priv/static/phoenix_live_view.esm.js.map +2 -2
- package/priv/static/phoenix_live_view.js +7 -3
- package/priv/static/phoenix_live_view.min.js +1 -1
|
@@ -138,11 +138,15 @@ var LiveView = (() => {
|
|
|
138
138
|
this.offset = 0;
|
|
139
139
|
this.chunkSize = chunkSize;
|
|
140
140
|
this.chunkTimer = null;
|
|
141
|
+
this.errored = false;
|
|
141
142
|
this.uploadChannel = liveSocket.channel(`lvu:${entry.ref}`, { token: entry.metadata() });
|
|
142
143
|
}
|
|
143
144
|
error(reason) {
|
|
145
|
+
if (this.errored) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
this.errored = true;
|
|
144
149
|
clearTimeout(this.chunkTimer);
|
|
145
|
-
this.uploadChannel.leave();
|
|
146
150
|
this.entry.error(reason);
|
|
147
151
|
}
|
|
148
152
|
upload() {
|
|
@@ -174,7 +178,7 @@ var LiveView = (() => {
|
|
|
174
178
|
if (!this.isDone()) {
|
|
175
179
|
this.chunkTimer = setTimeout(() => this.readNextChunk(), this.liveSocket.getLatencySim() || 0);
|
|
176
180
|
}
|
|
177
|
-
});
|
|
181
|
+
}).receive("error", ({ reason }) => this.error(reason));
|
|
178
182
|
}
|
|
179
183
|
};
|
|
180
184
|
|
|
@@ -341,7 +345,7 @@ var LiveView = (() => {
|
|
|
341
345
|
wantsNewTab(e) {
|
|
342
346
|
let wantsNewTab = e.ctrlKey || e.shiftKey || e.metaKey || e.button && e.button === 1;
|
|
343
347
|
let isDownload = e.target instanceof HTMLAnchorElement && e.target.hasAttribute("download");
|
|
344
|
-
let isTargetBlank = e.target.getAttribute("target") === "_blank";
|
|
348
|
+
let isTargetBlank = e.target.hasAttribute("target") && e.target.getAttribute("target").toLowerCase() === "_blank";
|
|
345
349
|
return wantsNewTab || isTargetBlank || isDownload;
|
|
346
350
|
},
|
|
347
351
|
isUnloadableFormSubmit(e) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var LiveView=(()=>{var ct=Object.defineProperty;var Ue=Object.getOwnPropertySymbols;var Rt=Object.prototype.hasOwnProperty,Lt=Object.prototype.propertyIsEnumerable;var Dt=(r,e,t)=>e in r?ct(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,V=(r,e)=>{for(var t in e||(e={}))Rt.call(e,t)&&Dt(r,t,e[t]);if(Ue)for(var t of Ue(e))Lt.call(e,t)&&Dt(r,t,e[t]);return r};var gi=r=>ct(r,"__esModule",{value:!0});var Ot=(r,e)=>{var t={};for(var i in r)Rt.call(r,i)&&e.indexOf(i)<0&&(t[i]=r[i]);if(r!=null&&Ue)for(var i of Ue(r))e.indexOf(i)<0&&Lt.call(r,i)&&(t[i]=r[i]);return t};var vi=(r,e)=>{gi(r);for(var t in e)ct(r,t,{get:e[t],enumerable:!0})};var Fi={};vi(Fi,{LiveSocket:()=>at});var Xe="consecutive-reloads",Ht=10,Nt=5e3,Ft=1e4,Mt=3e4,$e=["phx-click-loading","phx-change-loading","phx-submit-loading","phx-keydown-loading","phx-keyup-loading","phx-blur-loading","phx-focus-loading"],k="data-phx-component",Be="data-phx-link",Ut="track-static",Xt="data-phx-link-state",R="data-phx-ref",Q="data-phx-ref-src",Ve="track-uploads",J="data-phx-upload-ref",fe="data-phx-preflighted-refs",$t="data-phx-done-refs",ut="drop-target",xe="data-phx-active-refs",pe="phx:live-file:updated",Te="data-phx-skip",ft="data-phx-prune",pt="page-loading",mt="phx-connected",me="phx-loading",Je="phx-no-feedback",ke="phx-error",gt="phx-client-error",je="phx-server-error",Z="data-phx-parent-id",ge="data-phx-main",ee="data-phx-root-id",We="viewport-top",qe="viewport-bottom",Bt="trigger-action",le="feedback-for",Ce="phx-has-focused",Vt=["text","textarea","number","email","password","search","tel","url","date","time","datetime-local","color","range"],Ke=["checkbox","radio"],ve="phx-has-submitted",M="data-phx-session",G=`[${M}]`,vt="data-phx-sticky",se="data-phx-static",Ge="data-phx-readonly",Ie="data-phx-disabled",Re="disable-with",Le="data-phx-disable-with-restore",be="hook",Jt="debounce",jt="throttle",Ee="update",ze="stream",_e="data-phx-stream",Wt="key",j="phxPrivate",bt="auto-recover",De="phx:live-socket:debug",Ye="phx:live-socket:profiling",Qe="phx:live-socket:latency-sim",qt="progress",Et="mounted",Kt=1,Gt=200,zt="phx-",Yt=3e4;var Se="debounce-trigger",Oe="throttled",_t="debounce-prev-key",Qt={debounce:300,throttle:300},Ze="d",W="s",D="c",St="e",At="r",wt="t",Zt="p",yt="stream";var et=class{constructor(e,t,i){this.liveSocket=i,this.entry=e,this.offset=0,this.chunkSize=t,this.chunkTimer=null,this.uploadChannel=i.channel(`lvu:${e.ref}`,{token:e.metadata()})}error(e){
|
|
1
|
+
var LiveView=(()=>{var ct=Object.defineProperty;var Ue=Object.getOwnPropertySymbols;var Rt=Object.prototype.hasOwnProperty,Lt=Object.prototype.propertyIsEnumerable;var Dt=(r,e,t)=>e in r?ct(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,V=(r,e)=>{for(var t in e||(e={}))Rt.call(e,t)&&Dt(r,t,e[t]);if(Ue)for(var t of Ue(e))Lt.call(e,t)&&Dt(r,t,e[t]);return r};var gi=r=>ct(r,"__esModule",{value:!0});var Ot=(r,e)=>{var t={};for(var i in r)Rt.call(r,i)&&e.indexOf(i)<0&&(t[i]=r[i]);if(r!=null&&Ue)for(var i of Ue(r))e.indexOf(i)<0&&Lt.call(r,i)&&(t[i]=r[i]);return t};var vi=(r,e)=>{gi(r);for(var t in e)ct(r,t,{get:e[t],enumerable:!0})};var Fi={};vi(Fi,{LiveSocket:()=>at});var Xe="consecutive-reloads",Ht=10,Nt=5e3,Ft=1e4,Mt=3e4,$e=["phx-click-loading","phx-change-loading","phx-submit-loading","phx-keydown-loading","phx-keyup-loading","phx-blur-loading","phx-focus-loading"],k="data-phx-component",Be="data-phx-link",Ut="track-static",Xt="data-phx-link-state",R="data-phx-ref",Q="data-phx-ref-src",Ve="track-uploads",J="data-phx-upload-ref",fe="data-phx-preflighted-refs",$t="data-phx-done-refs",ut="drop-target",xe="data-phx-active-refs",pe="phx:live-file:updated",Te="data-phx-skip",ft="data-phx-prune",pt="page-loading",mt="phx-connected",me="phx-loading",Je="phx-no-feedback",ke="phx-error",gt="phx-client-error",je="phx-server-error",Z="data-phx-parent-id",ge="data-phx-main",ee="data-phx-root-id",We="viewport-top",qe="viewport-bottom",Bt="trigger-action",le="feedback-for",Ce="phx-has-focused",Vt=["text","textarea","number","email","password","search","tel","url","date","time","datetime-local","color","range"],Ke=["checkbox","radio"],ve="phx-has-submitted",M="data-phx-session",G=`[${M}]`,vt="data-phx-sticky",se="data-phx-static",Ge="data-phx-readonly",Ie="data-phx-disabled",Re="disable-with",Le="data-phx-disable-with-restore",be="hook",Jt="debounce",jt="throttle",Ee="update",ze="stream",_e="data-phx-stream",Wt="key",j="phxPrivate",bt="auto-recover",De="phx:live-socket:debug",Ye="phx:live-socket:profiling",Qe="phx:live-socket:latency-sim",qt="progress",Et="mounted",Kt=1,Gt=200,zt="phx-",Yt=3e4;var Se="debounce-trigger",Oe="throttled",_t="debounce-prev-key",Qt={debounce:300,throttle:300},Ze="d",W="s",D="c",St="e",At="r",wt="t",Zt="p",yt="stream";var et=class{constructor(e,t,i){this.liveSocket=i,this.entry=e,this.offset=0,this.chunkSize=t,this.chunkTimer=null,this.errored=!1,this.uploadChannel=i.channel(`lvu:${e.ref}`,{token:e.metadata()})}error(e){this.errored||(this.errored=!0,clearTimeout(this.chunkTimer),this.entry.error(e))}upload(){this.uploadChannel.onError(e=>this.error(e)),this.uploadChannel.join().receive("ok",e=>this.readNextChunk()).receive("error",e=>this.error(e))}isDone(){return this.offset>=this.entry.file.size}readNextChunk(){let e=new window.FileReader,t=this.entry.file.slice(this.offset,this.chunkSize+this.offset);e.onload=i=>{if(i.target.error===null)this.offset+=i.target.result.byteLength,this.pushChunk(i.target.result);else return x("Read error: "+i.target.error)},e.readAsArrayBuffer(t)}pushChunk(e){!this.uploadChannel.isJoined()||this.uploadChannel.push("chunk",e).receive("ok",()=>{this.entry.progress(this.offset/this.entry.file.size*100),this.isDone()||(this.chunkTimer=setTimeout(()=>this.readNextChunk(),this.liveSocket.getLatencySim()||0))}).receive("error",({reason:t})=>this.error(t))}};var x=(r,e)=>console.error&&console.error(r,e),q=r=>{let e=typeof r;return e==="number"||e==="string"&&/^(0|[1-9]\d*)$/.test(r)};function ei(){let r=new Set,e=document.querySelectorAll("*[id]");for(let t=0,i=e.length;t<i;t++)r.has(e[t].id)?console.error(`Multiple IDs detected: ${e[t].id}. Ensure unique element ids.`):r.add(e[t].id)}var ti=(r,e,t,i)=>{r.liveSocket.isDebugEnabled()&&console.log(`${r.id} ${e}: ${t} - `,i)},tt=r=>typeof r=="function"?r:function(){return r},Ae=r=>JSON.parse(JSON.stringify(r)),he=(r,e,t)=>{do{if(r.matches(`[${e}]`)&&!r.disabled)return r;r=r.parentElement||r.parentNode}while(r!==null&&r.nodeType===1&&!(t&&t.isSameNode(r)||r.matches(G)));return null},we=r=>r!==null&&typeof r=="object"&&!(r instanceof Array),ii=(r,e)=>JSON.stringify(r)===JSON.stringify(e),Pt=r=>{for(let e in r)return!1;return!0},K=(r,e)=>r&&e(r),ri=function(r,e,t,i){r.forEach(s=>{new et(s,t.config.chunk_size,i).upload()})};var si={canPushState(){return typeof history.pushState!="undefined"},dropLocal(r,e,t){return r.removeItem(this.localKey(e,t))},updateLocal(r,e,t,i,s){let n=this.getLocal(r,e,t),o=this.localKey(e,t),a=n===null?i:s(n);return r.setItem(o,JSON.stringify(a)),a},getLocal(r,e,t){return JSON.parse(r.getItem(this.localKey(e,t)))},updateCurrentState(r){!this.canPushState()||history.replaceState(r(history.state||{}),"",window.location.href)},pushState(r,e,t){if(this.canPushState()){if(t!==window.location.href){if(e.type=="redirect"&&e.scroll){let s=history.state||{};s.scroll=e.scroll,history.replaceState(s,"",window.location.href)}delete e.scroll,history[r+"State"](e,"",t||null);let i=this.getHashTargetEl(window.location.hash);i?i.scrollIntoView():e.type==="redirect"&&window.scroll(0,0)}}else this.redirect(t)},setCookie(r,e){document.cookie=`${r}=${e}`},getCookie(r){return document.cookie.replace(new RegExp(`(?:(?:^|.*;s*)${r}s*=s*([^;]*).*$)|^.*$`),"$1")},redirect(r,e){e&&si.setCookie("__phoenix_flash__",e+"; max-age=60000; path=/"),window.location=r},localKey(r,e){return`${r}-${e}`},getHashTargetEl(r){let e=r.toString().substring(1);if(e!=="")return document.getElementById(e)||document.querySelector(`a[name="${e}"]`)}},U=si;var X={byId(r){return document.getElementById(r)||x(`no id found for ${r}`)},removeClass(r,e){r.classList.remove(e),r.classList.length===0&&r.removeAttribute("class")},all(r,e,t){if(!r)return[];let i=Array.from(r.querySelectorAll(e));return t?i.forEach(t):i},childNodeLength(r){let e=document.createElement("template");return e.innerHTML=r,e.content.childElementCount},isUploadInput(r){return r.type==="file"&&r.getAttribute(J)!==null},findUploadInputs(r){return this.all(r,`input[type="file"][${J}]`)},findComponentNodeList(r,e){return this.filterWithinSameLiveView(this.all(r,`[${k}="${e}"]`),r)},isPhxDestroyed(r){return!!(r.id&&X.private(r,"destroyed"))},wantsNewTab(r){let e=r.ctrlKey||r.shiftKey||r.metaKey||r.button&&r.button===1,t=r.target instanceof HTMLAnchorElement&&r.target.hasAttribute("download"),i=r.target.hasAttribute("target")&&r.target.getAttribute("target").toLowerCase()==="_blank";return e||i||t},isUnloadableFormSubmit(r){return!r.defaultPrevented&&!this.wantsNewTab(r)},isNewPageClick(r,e){let t=r.target instanceof HTMLAnchorElement?r.target.getAttribute("href"):null,i;if(r.defaultPrevented||t===null||this.wantsNewTab(r)||t.startsWith("mailto:")||t.startsWith("tel:"))return!1;try{i=new URL(t)}catch(s){try{i=new URL(t,e)}catch(n){return!0}}return i.host===e.host&&i.protocol===e.protocol&&i.pathname===e.pathname&&i.search===e.search?i.hash===""&&!i.href.endsWith("#"):i.protocol.startsWith("http")},markPhxChildDestroyed(r){this.isPhxChild(r)&&r.setAttribute(M,""),this.putPrivate(r,"destroyed",!0)},findPhxChildrenInFragment(r,e){let t=document.createElement("template");return t.innerHTML=r,this.findPhxChildren(t.content,e)},isIgnored(r,e){return(r.getAttribute(e)||r.getAttribute("data-phx-update"))==="ignore"},isPhxUpdate(r,e,t){return r.getAttribute&&t.indexOf(r.getAttribute(e))>=0},findPhxSticky(r){return this.all(r,`[${vt}]`)},findPhxChildren(r,e){return this.all(r,`${G}[${Z}="${e}"]`)},findParentCIDs(r,e){let t=new Set(e),i=e.reduce((s,n)=>{let o=`[${k}="${n}"] [${k}]`;return this.filterWithinSameLiveView(this.all(r,o),r).map(a=>parseInt(a.getAttribute(k))).forEach(a=>s.delete(a)),s},t);return i.size===0?new Set(e):i},filterWithinSameLiveView(r,e){return e.querySelector(G)?r.filter(t=>this.withinSameLiveView(t,e)):r},withinSameLiveView(r,e){for(;r=r.parentNode;){if(r.isSameNode(e))return!0;if(r.getAttribute(M)!==null)return!1}},private(r,e){return r[j]&&r[j][e]},deletePrivate(r,e){r[j]&&delete r[j][e]},putPrivate(r,e,t){r[j]||(r[j]={}),r[j][e]=t},updatePrivate(r,e,t,i){let s=this.private(r,e);s===void 0?this.putPrivate(r,e,i(t)):this.putPrivate(r,e,i(s))},copyPrivates(r,e){e[j]&&(r[j]=e[j])},putTitle(r){let e=document.querySelector("title");if(e){let{prefix:t,suffix:i}=e.dataset;document.title=`${t||""}${r}${i||""}`}else document.title=r},debounce(r,e,t,i,s,n,o,a){let l=r.getAttribute(t),d=r.getAttribute(s);l===""&&(l=i),d===""&&(d=n);let u=l||d;switch(u){case null:return a();case"blur":this.once(r,"debounce-blur")&&r.addEventListener("blur",()=>a());return;default:let f=parseInt(u),g=()=>d?this.deletePrivate(r,Oe):a(),m=this.incCycle(r,Se,g);if(isNaN(f))return x(`invalid throttle/debounce value: ${u}`);if(d){let E=!1;if(e.type==="keydown"){let C=this.private(r,_t);this.putPrivate(r,_t,e.key),E=C!==e.key}if(!E&&this.private(r,Oe))return!1;a(),this.putPrivate(r,Oe,!0),setTimeout(()=>{o()&&this.triggerCycle(r,Se)},f)}else setTimeout(()=>{o()&&this.triggerCycle(r,Se,m)},f);let p=r.form;p&&this.once(p,"bind-debounce")&&p.addEventListener("submit",()=>{Array.from(new FormData(p).entries(),([E])=>{let C=p.querySelector(`[name="${E}"]`);this.incCycle(C,Se),this.deletePrivate(C,Oe)})}),this.once(r,"bind-debounce")&&r.addEventListener("blur",()=>this.triggerCycle(r,Se))}},triggerCycle(r,e,t){let[i,s]=this.private(r,e);t||(t=i),t===i&&(this.incCycle(r,e),s())},once(r,e){return this.private(r,e)===!0?!1:(this.putPrivate(r,e,!0),!0)},incCycle(r,e,t=function(){}){let[i]=this.private(r,e)||[0,t];return i++,this.putPrivate(r,e,[i,t]),i},maybeAddPrivateHooks(r,e,t){r.hasAttribute&&(r.hasAttribute(e)||r.hasAttribute(t))&&r.setAttribute("data-phx-hook","Phoenix.InfiniteScroll")},maybeHideFeedback(r,e,t){if(!(this.private(e,Ce)||this.private(e,ve))){let i=[e.name];e.name.endsWith("[]")&&i.push(e.name.slice(0,-2));let s=i.map(n=>`[${t}="${n}"]`).join(", ");X.all(r,s,n=>n.classList.add(Je))}},resetForm(r,e){Array.from(r.elements).forEach(t=>{let i=`[${e}="${t.id}"],
|
|
2
2
|
[${e}="${t.name}"],
|
|
3
3
|
[${e}="${t.name.replace(/\[\]$/,"")}"]`;this.deletePrivate(t,Ce),this.deletePrivate(t,ve),this.all(document,i,s=>{s.classList.add(Je)})})},showError(r,e){(r.id||r.name)&&this.all(r.form,`[${e}="${r.id}"], [${e}="${r.name}"]`,t=>{this.removeClass(t,Je)})},isPhxChild(r){return r.getAttribute&&r.getAttribute(Z)},isPhxSticky(r){return r.getAttribute&&r.getAttribute(vt)!==null},firstPhxChild(r){return this.isPhxChild(r)?r:this.all(r,`[${Z}]`)[0]},dispatchEvent(r,e,t={}){let s={bubbles:t.bubbles===void 0?!0:!!t.bubbles,cancelable:!0,detail:t.detail||{}},n=e==="click"?new MouseEvent("click",s):new CustomEvent(e,s);r.dispatchEvent(n)},cloneNode(r,e){if(typeof e=="undefined")return r.cloneNode(!0);{let t=r.cloneNode(!1);return t.innerHTML=e,t}},mergeAttrs(r,e,t={}){let i=t.exclude||[],s=t.isIgnored,n=e.attributes;for(let a=n.length-1;a>=0;a--){let l=n[a].name;i.indexOf(l)<0&&r.setAttribute(l,e.getAttribute(l))}let o=r.attributes;for(let a=o.length-1;a>=0;a--){let l=o[a].name;s?l.startsWith("data-")&&!e.hasAttribute(l)&&r.removeAttribute(l):e.hasAttribute(l)||r.removeAttribute(l)}},mergeFocusedInput(r,e){r instanceof HTMLSelectElement||X.mergeAttrs(r,e,{exclude:["value"]}),e.readOnly?r.setAttribute("readonly",!0):r.removeAttribute("readonly")},hasSelectionRange(r){return r.setSelectionRange&&(r.type==="text"||r.type==="textarea")},restoreFocus(r,e,t){if(!X.isTextualInput(r))return;let i=r.matches(":focus");r.readOnly&&r.blur(),i||r.focus(),this.hasSelectionRange(r)&&r.setSelectionRange(e,t)},isFormInput(r){return/^(?:input|select|textarea)$/i.test(r.tagName)&&r.type!=="button"},syncAttrsToProps(r){r instanceof HTMLInputElement&&Ke.indexOf(r.type.toLocaleLowerCase())>=0&&(r.checked=r.getAttribute("checked")!==null)},isTextualInput(r){return Vt.indexOf(r.type)>=0},isNowTriggerFormExternal(r,e){return r.getAttribute&&r.getAttribute(e)!==null},syncPendingRef(r,e,t){let i=r.getAttribute(R);if(i===null)return!0;let s=r.getAttribute(Q);return X.isFormInput(r)||r.getAttribute(t)!==null?(X.isUploadInput(r)&&X.mergeAttrs(r,e,{isIgnored:!0}),X.putPrivate(r,R,e),!1):($e.forEach(n=>{r.classList.contains(n)&&e.classList.add(n)}),e.setAttribute(R,i),e.setAttribute(Q,s),!0)},cleanChildNodes(r,e){if(X.isPhxUpdate(r,e,["append","prepend"])){let t=[];r.childNodes.forEach(i=>{i.id||(i.nodeType===Node.TEXT_NODE&&i.nodeValue.trim()===""||x(`only HTML element tags with an id are allowed inside containers with phx-update.
|
|
4
4
|
|