8c4906c2f2
- E07 e2e (7 cases): 4-viewport fixed size, narrow shrink + dual-slot 12px stack, single/static + empty state + two-photo loop copies, broken-thumb drop, reducedMotion stop with manual arrows, forged postMessage rejected, hostile CSS (!important box-sizing/border) with inline-important countermeasures + duplicate script dedup - loader v2: geometry-critical properties upgraded to inline !important (beats host stylesheet !important) - pre-existing fixes: likes.spec view-count assertion vs concurrent session's AlbumHeader unicode icons (toContainText); embed-v2 host port moved to 3998 (3999 collides with embed-crossorigin under parallel full runs); prettier formatting of two concurrent-session files (formatting-only) - evidence: matrix EMB-A01..A16 closed in acceptance record (mechanism-level items honestly marked), measurements (loader v2 9885B/gzip 3959B, first-load 1 GET + 1 WS, DOM<=16), refreshed screenshots/recordings, master plan UI-04 note - regression: root lint/typecheck/test 12 packages green; embed suites 43/43; admin embed-slots 5/5; journey pre-existing env failure reproduced at clean HEAD (registered) Co-Authored-By: Claude Code <noreply@anthropic.com>
2 lines
9.7 KiB
JavaScript
2 lines
9.7 KiB
JavaScript
(()=>{var k=["left","right"],de=["sm","md"],L=["auto","zh-CN","en"],ce=["contain","cover"],p={position:"right",size:"md",intervalMs:5e3,lang:"auto",collapsedDefault:!1,imageFit:"contain",offsetX:16,offsetBottom:24,zIndex:1e3};var ue=3e3,me=3e4;var R=0,P=120,W=0,G=240,Z=1,q=2147483e3,j=["resize","collapse","expand","config","destroy"],B=195,M=280,he=8,ge=32,$=16,xe=["carousel","vertical-stream"];function g(t,l,o){return t.indexOf(l)>=0?l:o}function x(t,l,o,f){let u=Number(t);return isNaN(u)||!isFinite(u)?f:Math.min(o,Math.max(l,Math.round(u)))}function d(t,l){let o=t[l];return o!=null&&o!==""}function ve(t){return!t||typeof t!="object"?null:{position:g(k,t.position,p.position),size:g(de,t.size,p.size),intervalMs:x(t.intervalMs,ue,me,p.intervalMs),lang:g(L,t.lang,p.lang),collapsedDefault:typeof t.collapsedDefault=="boolean"?t.collapsedDefault:p.collapsedDefault,imageFit:g(ce,t.imageFit,p.imageFit),offsetX:x(t.offsetX,R,P,p.offsetX),offsetBottom:x(t.offsetBottom,W,G,p.offsetBottom),zIndex:x(t.zIndex,Z,q,p.zIndex)}}function J(t){let l=Number(t);return isNaN(l)||!isFinite(l)?$:Math.min(ge,Math.max(he,Math.round(l)))}function Q(t,l){let o=t||{},f=typeof o.slot=="string"?o.slot.replace(/^\s+|\s+$/g,""):"",u=!!(l&&l.narrow);return{version:2,slot:f||null,lang:d(o,"lang")?g(L,o.lang,p.lang):p.lang,position:d(o,"position")?g(k,o.position,p.position):p.position,speed:d(o,"speed")?J(o.speed):$,reactions:d(o,"reactions")?g(["on","off"],o.reactions,"on")==="on":!0,offsetX:d(o,"offsetX")?x(o.offsetX,R,P,p.offsetX):p.offsetX,offsetBottom:d(o,"offsetBottom")?x(o.offsetBottom,W,G,p.offsetBottom):p.offsetBottom,zIndex:d(o,"zIndex")?x(o.zIndex,Z,q,p.zIndex):p.zIndex,pollMs:d(o,"poll")?x(o.poll,250,6e4,null):null,narrow:u,explicit:{lang:d(o,"lang"),position:d(o,"position"),speed:d(o,"speed"),reactions:d(o,"reactions"),offsetX:d(o,"offsetX"),offsetBottom:d(o,"offsetBottom"),zIndex:d(o,"zIndex")}}}function Y(t){if(!t||typeof t!="object")return null;let l=ve(t);return l===null?null:{...l,displayMode:g(xe,t.displayMode,"carousel"),scrollSpeed:J(t.scrollSpeed),reactionsEnabled:typeof t.reactionsEnabled=="boolean"?t.reactionsEnabled:!0}}function K(t,l){let o=Y(l);if(o===null)return t;let f=t.explicit;return{...t,lang:f.lang?t.lang:o.lang,position:f.position?t.position:o.position,speed:f.speed?t.speed:o.scrollSpeed,reactions:f.reactions?t.reactions:o.reactionsEnabled,offsetX:f.offsetX?t.offsetX:o.offsetX,offsetBottom:f.offsetBottom?t.offsetBottom:o.offsetBottom,zIndex:f.zIndex?t.zIndex:o.zIndex}}function ee(t,l){if(!t||typeof t!="object")return null;let o=Number(t.configVersion);if(isNaN(o)||!isFinite(o))return null;let f=l==null?0:Number(l);if(o<=f)return null;let u=Y(t.settings);return u===null?null:{configVersion:Math.round(o),settings:u}}function te(t,l,o){let f=t+"/embed/"+encodeURIComponent(l)+"?v=2&lang="+encodeURIComponent(o.lang)+"&pos="+encodeURIComponent(o.position);return o.explicit.speed&&(f+="&speed="+String(o.speed)),o.explicit.reactions&&!o.reactions&&(f+="&reactions=off"),o.pollMs!==null&&o.pollMs!==void 0&&(f+="&poll="+String(o.pollMs)),f}(function(){"use strict";try{let C=function(e){try{return t.sessionStorage.getItem(l+e)==="1"}catch(r){return!1}},F=function(e,r){try{r?t.sessionStorage.setItem(l+e,"1"):t.sessionStorage.removeItem(l+e)}catch(n){}},w=function(e){try{return t.sessionStorage.getItem(l+e)!==null}catch(r){return!1}},re=function(){if(document.currentScript&&document.currentScript.src)return document.currentScript;var e=document.querySelectorAll('script[src*="/embed/v2/loader.js"]');return e.length?e[e.length-1]:null},N=function(e){try{return new URL(e.src,t.location.href).origin}catch(r){return null}},_=function(e){if(e==="zh-CN")return!0;if(e==="auto")try{return/^zh/i.test(t.navigator.language||"")}catch(r){return!1}return!1},ne=function(e){var r=document.createElement("div");r.setAttribute("role","button"),r.setAttribute("tabindex","0"),r.setAttribute("aria-label",_(e.config.lang)?"\u5C55\u5F00\u7167\u7247\u7A97":"Show photo window");var n=r.style;n.position="fixed",n.height=f+"px",n.width="100px",n.boxSizing="border-box",n.borderRadius="22px",n.border="1px solid #e3eaf2",n.background="#ffffff",n.boxShadow="0 4px 16px rgba(15,23,42,0.125)",n.zIndex=String(e.config.zIndex),n.cursor="pointer",n.display="flex",n.alignItems="center",n.justifyContent="center",n.gap="8px",n.font='400 12px/1 system-ui, -apple-system, "Segoe UI", "PingFang SC", sans-serif',n.color="#32618e",n.whiteSpace="nowrap",r.innerHTML='<svg viewBox="0 0 24 24" width="16" height="16" aria-hidden="true" focusable="false" style="color:#1a73e8"><path fill="currentColor" d="M9 2 7.17 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3.17L15 2H9zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"/></svg><span>'+(_(e.config.lang)?"\u7167\u7247":"Photos")+"</span>";function s(i){if(i.type==="keydown"){var a=i.key;if(a!=="Enter"&&a!==" "&&a!=="Spacebar")return;i.preventDefault()}e.userChoice=!0,X(e);try{e.frame.contentWindow&&e.frame.contentWindow.postMessage({photoliveEmbed:!0,type:"expand"},e.frameOrigin)}catch(c){}}return r.addEventListener("click",s),r.addEventListener("keydown",s),r},ie=function(e){return e.collapsed?f:e.height},le=function(e){return e.config.explicit.offsetX||e.offsetConfigured?e.config.offsetX:t.innerWidth<=599?12:16},V=function(e){var r=le(e),n=t.innerWidth-r-8,s=t.innerHeight-e.config.offsetBottom-8;return{offsetX:r,width:Math.max(120,Math.min(B,n)),height:Math.max(160,Math.min(M,s)),operable:n>=u&&s>=oe}},y=function(e){var r=V(e);e.height=r.height;var n=e.config.position==="left"?"left":"right",s=n==="left"?"right":"left",i=e.wrapper.style;if(e.collapsed||(i.display="block",i.width=r.width+"px",i.height=r.height+"px"),i.zIndex=String(e.config.zIndex),i[n]=r.offsetX+"px",i[s]="",i.bottom=e.config.offsetBottom+"px",i.bottom="calc("+e.config.offsetBottom+"px + env(safe-area-inset-bottom, 0px))",e.handle){var a=e.handle.style;a.zIndex=String(e.config.zIndex),a[n]=r.offsetX+"px",a[s]=""}return r},A=function(){for(var e={left:[],right:[]},r=0;r<m.length;r++){var n=m[r];e[n.config.position==="left"?"left":"right"].push(n)}for(var s=["left","right"],i=0;i<s.length;i++)for(var a=e[s[i]],c=0,h=0;h<a.length;h++){var I=a[h],z=h===0?I.config.offsetBottom:c+ie(a[h-1])+o;h>0&&z+M>t.innerHeight&&T(I,!1),I.wrapper.style.bottom=z+"px",I.handle&&(I.handle.style.bottom=z+"px"),c=z}},v=function(){if(S!==null||typeof t.requestAnimationFrame!="function"){A();return}S=t.requestAnimationFrame(function(){S=null,A()})},T=function(e,r){e.collapsed||(e.collapsed=!0,e.wrapper.style.display="none",e.handle||(e.handle=ne(e),document.body.appendChild(e.handle)),e.handle.style.display="flex",r!==!1&&F(e.config.slot,!0))},b=function(e,r){T(e,r),v()},X=function(e){e.collapsed&&(e.collapsed=!1,y(e),e.handle&&(e.handle.style.display="none"),F(e.config.slot,!1),v())},ae=function(e){if(!e.destroyed){e.destroyed=!0,e.handle&&e.handle.parentNode&&e.handle.parentNode.removeChild(e.handle),e.wrapper.parentNode&&e.wrapper.parentNode.removeChild(e.wrapper);try{t.sessionStorage.removeItem(l+e.config.slot)}catch(n){}var r=m.indexOf(e);r>=0&&m.splice(r,1),delete E[e.config.slot],m.length===0&&t.removeEventListener("message",D),v()}},se=function(e,r,n){e.backendVersion=r,e.offsetConfigured=!0,e.config=K(e.config,n),y(e),!e.userChoice&&!w(e.config.slot)&&(n.collapsedDefault?b(e,!1):fe(e)||X(e)),v()},fe=function(e){return!V(e).operable},pe=function(e,r){var n=document.createElement("div"),s=n.style;s.position="fixed",s.width=B+"px",s.height=M+"px",s.borderRadius="12px",s.border="1px solid rgba(255,255,255,0.80)",s.boxShadow="0 4px 16px rgba(15,23,42,0.16)",s.background="#10161E",s.overflow="hidden",s.setProperty("box-sizing","border-box","important");var i=document.createElement("iframe");i.setAttribute("sandbox","allow-scripts allow-popups allow-popups-to-escape-sandbox allow-same-origin"),i.setAttribute("src",te(e,r.slot,r)),i.setAttribute("referrerpolicy","no-referrer-when-downgrade"),i.setAttribute("title","PhotoLive photos");var a=i.style;a.width="100%",a.height="100%",a.border="0",a.display="block",a.setProperty("border","0","important"),a.setProperty("width","100%","important"),a.setProperty("height","100%","important"),a.setProperty("display","block","important"),n.appendChild(i),document.body.appendChild(n);var c={config:r,wrapper:n,frame:i,frameOrigin:N(i)||e,height:M,collapsed:!1,narrow:r.narrow,handle:null,userChoice:!1,backendVersion:0,offsetConfigured:r.explicit.offsetX,destroyed:!1};m.push(c);var h=y(c);return w(r.slot)?C(r.slot)&&b(c,!1):(c.narrow||!h.operable)&&b(c,!1),c},D=function(e){try{var r=e.data;if(!r||r.photoliveEmbed!==!0)return;var n=r.type;if(j.indexOf(n)<0)return;for(var s=0;s<m.length;s++){var i=m[s];if(!(!i.frame.contentWindow||e.source!==i.frame.contentWindow)){if(e.origin!==i.frameOrigin)return;if(n==="collapse")i.userChoice=!0,b(i,!0);else if(n==="expand")i.userChoice=!0,X(i);else if(n==="config"){var a=ee(r,i.backendVersion);a!==null&&se(i,a.configVersion,a.settings)}else n==="destroy"&&ae(i);return}}}catch(c){}},H=function(){try{return!!t.matchMedia&&t.matchMedia("(max-width: 479px)").matches}catch(e){return!1}},O=function(){for(var e=H(),r=0;r<m.length;r++){var n=m[r];n.narrow!==e&&(n.narrow=e,e&&!n.userChoice&&!w(n.config.slot)&&b(n,!1)),y(n)}v()},U=function(){var e=re();if(e){var r=N(e);if(r){for(var n=H(),s=document.querySelectorAll('script[src*="/embed/v2/loader.js"]'),i=0;i<s.length;i++){var a=Q(s[i].dataset,{narrow:n});a.slot&&(E[a.slot]||(E[a.slot]=!0,pe(r,a)))}t.addEventListener("message",D),t.addEventListener("resize",O),t.addEventListener("orientationchange",O)}}};var t=window;if(t.__photoliveEmbedV2)return;t.__photoliveEmbedV2="1";var l="pl-embed-collapsed:",o=12,f=44,u=150,oe=200,m=[],E={},S=null;document.body?U():document.addEventListener("DOMContentLoaded",U)}catch(C){}})();})();
|