diff --git a/build/social-web/feed-stage.js b/build/social-web/feed-stage.js index b4080e6e2..e407ff85b 100644 --- a/build/social-web/feed-stage.js +++ b/build/social-web/feed-stage.js @@ -1,4 +1,4 @@ "use strict";(globalThis.webpackChunkwordpress_activitypub=globalThis.webpackChunkwordpress_activitypub||[]).push([[303],{230:(e,t,i)=>{i.d(t,{g:()=>n});var a=i(723),r=i(443);function n(e){const t=new Date(e.endsWith("Z")?e:e+"Z"),i=Date.now()-t.getTime(),n=Math.floor(i/6e4),s=Math.floor(i/36e5),d=Math.floor(i/864e5);return n<60?(0,a.sprintf)(/* translators: %d: number of minutes */ /* translators: %d: number of minutes */ (0,a._x)("%dm","short time format: minutes","activitypub"),n):s<24?(0,a.sprintf)(/* translators: %d: number of hours */ /* translators: %d: number of hours */ (0,a._x)("%dh","short time format: hours","activitypub"),s):d<7?(0,a.sprintf)(/* translators: %d: number of days */ /* translators: %d: number of days */ -(0,a._x)("%dd","short time format: days","activitypub"),d):(0,r.dateI18n)((0,r.getSettings)().formats.date,e)}},658:(e,t,i)=>{i.r(t),i.d(t,{default:()=>E});var a=i(87),r=i(371),n=i(510),s=i(723),d=i(832),o=i(143),c=i(164),l=i(790);function u({title:e,subTitle:t,badges:i,actions:a,breadcrumbs:r,hasPadding:n=!0,hasBorder:s=!1,contentWidth:d="default",children:o}){return(0,l.jsxs)("div",{className:"page",children:[(0,l.jsxs)("header",{className:(0,c.A)("header",{"has-border":s}),children:[r&&(0,l.jsx)("div",{className:"breadcrumbs",children:r}),(0,l.jsxs)("div",{className:"title-row",children:[(0,l.jsxs)("div",{className:"title-group",children:[(0,l.jsx)("h1",{className:"title",children:e}),i&&(0,l.jsx)("div",{className:"badges",children:i})]}),a&&(0,l.jsx)("div",{className:"actions",children:a})]}),t&&(0,l.jsx)("p",{className:"sub-title",children:t})]}),(0,l.jsx)("div",{className:(0,c.A)("content",{padded:n,constrained:"constrained"===d,full:"full"===d}),children:o})]})}var p=i(582),g=i(375);(0,s.__)("Avatar","activitypub");var h=i(537),m=i(107);const f={id:"content",label:(0,s.__)("Content","activitypub"),enableHiding:!0,enableSorting:!1,getValue:({item:e})=>{const t=e.excerpt?.rendered||e.content?.rendered||"";return(0,h.decodeEntities)((0,m.__unstableStripHTML)(t))},render:({item:e})=>{const t=(0,m.safeHTML)((0,h.decodeEntities)(e.content?.rendered||""));return t.trim().replace(/<\/?p>/g,"").replace(/ /g,"").trim().length>0?(0,l.jsx)("div",{className:"activitypub-feed-post",children:(0,l.jsx)("div",{className:"activitypub-feed-content",dangerouslySetInnerHTML:{__html:t}})}):null}},v={id:"date",label:(0,s.__)("Date","activitypub"),enableHiding:!1,enableSorting:!0,getValue:({item:e})=>e.date||"",render:({item:e})=>e.date?new Date(e.date).toLocaleDateString():""},b=e=>{const t=e.excerpt?.rendered||e.content?.rendered||"";return(0,h.decodeEntities)((0,m.__unstableStripHTML)(t))},_={id:"excerpt.rendered",label:(0,s.__)("Excerpt","activitypub"),enableHiding:!0,enableSorting:!1,getValue:({item:e})=>b(e),render:({item:e})=>{const t=b(e).trim();return t?(0,l.jsx)("div",{className:"activitypub-feed-excerpt",children:t}):null}};(0,s.__)("Following","activitypub");var y=i(230);const x={id:"metadata",label:(0,s.__)("Metadata","activitypub"),enableHiding:!0,enableSorting:!1,getValue:({item:e})=>`${e.actor_info?.name||""} · ${e.date?(0,y.g)(e.date):""}`,render:({item:e})=>{const{defaultAvatar:t}=(0,g.t)(),i=(0,h.decodeEntities)(e.actor_info?.name||(0,s.__)("Unknown author","activitypub")),a=e.actor_info?.icon||"",r=e.date?(0,y.g)(e.date):"";return(0,l.jsxs)("div",{className:"activitypub-feed-post-meta",children:[(0,l.jsx)("img",{src:a,alt:i,className:"activitypub-feed-avatar",onError:e=>{e.target.src=t}}),(0,l.jsx)("span",{className:"author",children:i}),r&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("span",{className:"separator",children:"·"}),(0,l.jsx)("span",{className:"date",children:r})]})]})}};i(443),(0,s.__)("Last Updated","activitypub"),(0,s.__)("Name","activitypub"),(0,s.__)("Status","activitypub");const w={id:"title.rendered",label:(0,s.__)("Title","activitypub"),enableHiding:!0,enableSorting:!1,enableGlobalSearch:!0,getValue:({item:e})=>(0,h.decodeEntities)(e.title?.rendered||""),render:({item:e})=>{if(!e.title?.rendered)return null;const t=e.title.rendered.replace(/\\(.)/g,"$1");return(0,l.jsx)("div",{className:"activitypub-feed-post-title",children:(0,h.decodeEntities)(t)})}};(0,s.__)("Profile","activitypub");var N=i(17);const j={type:"list",perPage:20,page:1,sort:{field:"date",direction:"desc"},search:"",filters:[],fields:["metadata","title.rendered","excerpt.rendered"]},S={list:{primaryField:"metadata",fields:["metadata","title.rendered","excerpt.rendered"],mediaField:void 0}};function E({onSelectItem:e}){const t=(0,o.useSelect)(e=>e(N.E).getActiveActorId(),[]),[i,c]=(0,a.useState)(()=>{const e=(0,d.getQueryArgs)(window.location.href);return{page:e.paged?Number(e.paged):void 0,search:e.search||void 0}});(0,a.useEffect)(()=>{const e=()=>{const e=(0,d.getQueryArgs)(window.location.href);c({page:e.paged?Number(e.paged):void 0,search:e.search||void 0})};return window.addEventListener("popstate",e),window.addEventListener("hashchange",e),()=>{window.removeEventListener("popstate",e),window.removeEventListener("hashchange",e)}},[]);const{view:g,updateView:h}=(0,n.l)({kind:"postType",name:"ap_post",slug:"feed",defaultView:j,queryParams:i,onChangeQueryParams:e=>{const t=window.location.href,i=(0,d.getQueryArgs)(t),a=(0,d.addQueryArgs)(t,{...i,paged:e.page||void 0,search:e.search||void 0});window.history.pushState(null,"",a),c({page:e.page,search:e.search})}}),m=(0,a.useCallback)(e=>{const t=function(e,t){const i=t.includes("content")&&!e.includes("content"),a=t.includes("excerpt.rendered")&&!e.includes("excerpt.rendered"),r=!t.includes("content")&&e.includes("content"),n=!t.includes("excerpt.rendered")&&e.includes("excerpt.rendered");return i?t.filter(e=>"excerpt.rendered"!==e):a?t.filter(e=>"content"!==e):r&&!t.includes("excerpt.rendered")?[...t,"excerpt.rendered"]:n&&!t.includes("content")?[...t,"content"]:t}(g.fields||[],e.fields||[]);h({...e,fields:t})},[g.fields,h]),{feed:b,isResolving:y,totalItems:E,totalPages:P}=function({perPage:e=20,page:t=1,orderBy:i="date",order:r="desc",search:n="",userId:s,fields:d=["id","date","modified","title","excerpt","content","actor_info","status","link"]}={}){const o=null!=s,c=(0,a.useMemo)(()=>{const a={per_page:e,page:t,orderby:i,order:r,search:n,_fields:d};return o&&(a.user_id=s),a},[e,t,i,r,n,s,d,o]),{records:l,hasResolved:u,isResolving:g,totalItems:h,totalPages:m}=(0,p.useEntityRecords)("postType","ap_post",o?c:void 0);return{feed:o&&l||[],hasResolved:u,isResolving:g,totalItems:o?h:null,totalPages:o?m:null}}({perPage:g.perPage||20,page:g.page||1,orderBy:g.sort?.field||"date",order:g.sort?.direction||"desc",search:g.search||"",userId:t}),I=(0,a.useMemo)(()=>[x,w,_,f,v],[]),A=(0,a.useMemo)(()=>function(e,t){if(!e.fields)return e;const i=new Map(t.map((e,t)=>[e.id,t])),a=[...e.fields].sort((e,t)=>{var a,r;return(null!==(a=i.get(e))&&void 0!==a?a:1/0)-(null!==(r=i.get(t))&&void 0!==r?r:1/0)});return{...e,fields:a}}(g,I),[g,I]),[k,L]=(0,a.useState)([]);(0,a.useEffect)(()=>{if(0===k.length)return;const e=k[0];b.some(t=>t.id.toString()===e)||L([])},[b,k]);const M=(0,a.useCallback)(t=>{if(L(t),0===t.length)return;const i=t[0],a=b.find(e=>e.id.toString()===i);a&&e(a.id)},[b,e]);return(0,l.jsx)(u,{title:(0,s.__)("Feed","activitypub"),subTitle:(0,s.__)("ActivityPub posts from your network","activitypub"),hasPadding:!1,children:(0,l.jsx)(r.A,{data:b,fields:I,view:A,onChangeView:m,isLoading:y,onClickItem:t=>e(t.id),isItemClickable:()=>!0,getItemId:e=>e.id.toString(),selection:k,onChangeSelection:M,empty:(0,l.jsx)("p",{children:A.search?(0,s.__)("No posts found.","activitypub"):(0,s.__)("No posts found in your feed. Posts from ActivityPub actors you follow will appear here.","activitypub")}),paginationInfo:{totalItems:E,totalPages:P},defaultLayouts:S})})}}}]); \ No newline at end of file +(0,a._x)("%dd","short time format: days","activitypub"),d):(0,r.dateI18n)((0,r.getSettings)().formats.date,e)}},658:(e,t,i)=>{i.r(t),i.d(t,{default:()=>E});var a=i(87),r=i(371),n=i(510),s=i(723),d=i(832),c=i(143),l=i(164),o=i(790);function u({title:e,subTitle:t,badges:i,actions:a,breadcrumbs:r,hasPadding:n=!0,hasBorder:s=!1,contentWidth:d="default",children:c}){return(0,o.jsxs)("div",{className:"page",children:[(0,o.jsxs)("header",{className:(0,l.A)("header",{"has-border":s}),children:[r&&(0,o.jsx)("div",{className:"breadcrumbs",children:r}),(0,o.jsxs)("div",{className:"title-row",children:[(0,o.jsxs)("div",{className:"title-group",children:[(0,o.jsx)("h1",{className:"title",children:e}),i&&(0,o.jsx)("div",{className:"badges",children:i})]}),a&&(0,o.jsx)("div",{className:"actions",children:a})]}),t&&(0,o.jsx)("p",{className:"sub-title",children:t})]}),(0,o.jsx)("div",{className:(0,l.A)("content",{padded:n,constrained:"constrained"===d,full:"full"===d}),children:c})]})}var p=i(582),g=i(375);(0,s.__)("Avatar","activitypub");var h=i(537),f=i(107);const m={id:"content",label:(0,s.__)("Content","activitypub"),enableHiding:!0,enableSorting:!1,getValue:({item:e})=>{const t=e.excerpt?.rendered||e.content?.rendered||"";return(0,h.decodeEntities)((0,f.__unstableStripHTML)(t))},render:({item:e})=>{const t=(0,f.safeHTML)((0,h.decodeEntities)(e.content?.rendered||""));return t.trim().replace(/<\/?p>/g,"").replace(/ /g,"").trim().length>0?(0,o.jsx)("div",{className:"activitypub-feed-post",children:(0,o.jsx)("div",{className:"activitypub-feed-content",dangerouslySetInnerHTML:{__html:t}})}):null}},v={id:"date",label:(0,s.__)("Date","activitypub"),enableHiding:!1,enableSorting:!0,getValue:({item:e})=>e.date||"",render:({item:e})=>e.date?new Date(e.date).toLocaleDateString():""},b=e=>{const t=e.excerpt?.rendered||e.content?.rendered||"";return(0,h.decodeEntities)((0,f.__unstableStripHTML)(t))},_={id:"excerpt.rendered",label:(0,s.__)("Excerpt","activitypub"),enableHiding:!0,enableSorting:!1,getValue:({item:e})=>b(e),render:({item:e})=>{const t=b(e).trim();return t?(0,o.jsx)("div",{className:"activitypub-feed-excerpt",children:t}):null}};(0,s.__)("Following","activitypub");var y=i(230);const x={id:"metadata",label:(0,s.__)("Metadata","activitypub"),enableHiding:!0,enableSorting:!1,getValue:({item:e})=>`${e.actor_info?.name||""} · ${e.date?(0,y.g)(e.date):""}`,render:({item:e})=>{const{defaultAvatar:t}=(0,g.t)(),i=(0,h.decodeEntities)(e.actor_info?.name||(0,s.__)("Unknown author","activitypub")),a=e.actor_info?.icon||"",r=e.date?(0,y.g)(e.date):"";return(0,o.jsxs)("div",{className:"activitypub-feed-post-meta",children:[(0,o.jsx)("img",{src:a,alt:i,className:"activitypub-feed-avatar",onError:e=>{e.target.src=t}}),(0,o.jsx)("span",{className:"author",children:i}),r&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("span",{className:"separator",children:"·"}),(0,o.jsx)("span",{className:"date",children:r})]})]})}};i(443),(0,s.__)("Last Updated","activitypub"),(0,s.__)("Name","activitypub"),(0,s.__)("Status","activitypub");const w={id:"title.rendered",label:(0,s.__)("Title","activitypub"),enableHiding:!0,enableSorting:!1,enableGlobalSearch:!0,getValue:({item:e})=>(0,h.decodeEntities)(e.title?.rendered||""),render:({item:e})=>{if(!e.title?.rendered)return null;const t=e.title.rendered.replace(/\\(.)/g,"$1");return(0,o.jsx)("div",{className:"activitypub-feed-post-title",children:(0,h.decodeEntities)(t)})}};(0,s.__)("Profile","activitypub");var S=i(17);const N={type:"list",perPage:20,page:1,sort:{field:"date",direction:"desc"},search:"",filters:[],fields:["metadata","title.rendered","excerpt.rendered"],infiniteScrollEnabled:!0},j={list:{primaryField:"metadata",fields:["metadata","title.rendered","excerpt.rendered"],mediaField:void 0}};function E({onSelectItem:e}){const t=(0,c.useSelect)(e=>e(S.E).getActiveActorId(),[]),[i,l]=(0,a.useState)(()=>{const e=(0,d.getQueryArgs)(window.location.href);return{page:e.paged?Number(e.paged):void 0,search:e.search||void 0}});(0,a.useEffect)(()=>{const e=()=>{const e=(0,d.getQueryArgs)(window.location.href);l({page:e.paged?Number(e.paged):void 0,search:e.search||void 0})};return window.addEventListener("popstate",e),window.addEventListener("hashchange",e),()=>{window.removeEventListener("popstate",e),window.removeEventListener("hashchange",e)}},[]);const{view:g,updateView:h}=(0,n.l)({kind:"postType",name:"ap_post",slug:"feed",defaultView:N,queryParams:i,onChangeQueryParams:e=>{const t=window.location.href,i=(0,d.getQueryArgs)(t),a=(0,d.addQueryArgs)(t,{...i,paged:e.page||void 0,search:e.search||void 0});window.history.pushState(null,"",a),l({page:e.page,search:e.search})}}),f=(0,a.useCallback)(e=>{const t=function(e,t){const i=t.includes("content")&&!e.includes("content"),a=t.includes("excerpt.rendered")&&!e.includes("excerpt.rendered"),r=!t.includes("content")&&e.includes("content"),n=!t.includes("excerpt.rendered")&&e.includes("excerpt.rendered");return i?t.filter(e=>"excerpt.rendered"!==e):a?t.filter(e=>"content"!==e):r&&!t.includes("excerpt.rendered")?[...t,"excerpt.rendered"]:n&&!t.includes("content")?[...t,"content"]:t}(g.fields||[],e.fields||[]);h({...e,fields:t})},[g.fields,h]),{feed:b,isResolving:y,totalItems:E,totalPages:P}=function({perPage:e=20,page:t=1,orderBy:i="date",order:r="desc",search:n="",userId:s,fields:d=["id","date","modified","title","excerpt","content","actor_info","status","link"]}={}){const c=null!=s,l=(0,a.useMemo)(()=>{const a={per_page:e,page:t,orderby:i,order:r,search:n,_fields:d};return c&&(a.user_id=s),a},[e,t,i,r,n,s,d,c]),{records:o,hasResolved:u,isResolving:g,totalItems:h,totalPages:f}=(0,p.useEntityRecords)("postType","ap_post",c?l:void 0);return{feed:c&&o||[],hasResolved:u,isResolving:g,totalItems:c?h:null,totalPages:c?f:null}}({perPage:g.perPage||20,page:g.page||1,orderBy:g.sort?.field||"date",order:g.sort?.direction||"desc",search:g.search||"",userId:t}),I=(0,a.useMemo)(()=>[x,w,_,m,v],[]),k=(0,a.useMemo)(()=>function(e,t){if(!e.fields)return e;const i=new Map(t.map((e,t)=>[e.id,t])),a=[...e.fields].sort((e,t)=>{var a,r;return(null!==(a=i.get(e))&&void 0!==a?a:1/0)-(null!==(r=i.get(t))&&void 0!==r?r:1/0)});return{...e,fields:a}}(g,I),[g,I]),[A,L]=(0,a.useState)([]),[M,T]=(0,a.useState)([]),[C,H]=(0,a.useState)(!1),V=(0,a.useRef)(0);(0,a.useEffect)(()=>{if(0===A.length)return;const e=A[0];b.some(t=>t.id.toString()===e)||L([])},[b,A]);const R=(0,a.useCallback)(t=>{if(L(t),0===t.length)return;const i=t[0],a=b.find(e=>e.id.toString()===i);a&&e(a.id)},[b,e]),D=(0,a.useCallback)(()=>{const e=g.page||1;C||e>=(P||1)||(H(!0),f({...g,page:e+1}))},[C,g,P,f]);return(0,a.useEffect)(()=>{const e=k.page||1,t=k.infiniteScrollEnabled;0!==b.length&&(e>1&&V.current===e||(1!==e&&t?(T(e=>{const t=new Set(e.map(e=>e.id)),i=b.filter(e=>!t.has(e.id));return i.length>0?[...e,...i]:e}),V.current=e,H(!1)):(T(b),V.current=e,H(!1))))},[b,k.page,k.search,k.infiniteScrollEnabled]),(0,o.jsx)(u,{title:(0,s.__)("Feed","activitypub"),subTitle:(0,s.__)("ActivityPub posts from your network","activitypub"),hasPadding:!1,children:(0,o.jsx)(r.A,{data:M,fields:I,view:k,onChangeView:f,isLoading:y||C,onClickItem:t=>e(t.id),isItemClickable:()=>!0,getItemId:e=>e.id.toString(),selection:A,onChangeSelection:R,empty:(0,o.jsx)("p",{children:k.search?(0,s.__)("No posts found.","activitypub"):(0,s.__)("No posts found in your feed. Posts from ActivityPub actors you follow will appear here.","activitypub")}),paginationInfo:{totalItems:E,totalPages:P,infiniteScrollHandler:D},defaultLayouts:j})})}}}]); \ No newline at end of file diff --git a/build/social-web/style-feed-stage-rtl.css b/build/social-web/style-feed-stage-rtl.css index ee5d8e0ed..4852d6bf0 100644 --- a/build/social-web/style-feed-stage-rtl.css +++ b/build/social-web/style-feed-stage-rtl.css @@ -1,4 +1,4 @@ -.app-layout[data-section=feed] .inspector-region{width:50%}.dataviews-view-list .dataviews-view-list__item{cursor:pointer}.dataviews-view-list .dataviews-view-list__field{width:100%}.activitypub-feed-post{border-bottom:var(--wpds-border-width-control,1px) solid var(--wpds-color-stroke-neutral-weak,#dcdcde);max-width:100%;min-width:0}.activitypub-feed-post:last-child{border-bottom:none}.activitypub-feed-post-meta{align-items:center;color:var(--wpds-color-fg-secondary,#646970);display:flex;font-size:var(--wpds-font-size-small,13px);gap:var(--wpds-spacing-20,8px);margin-bottom:var(--wpds-spacing-30,12px)}.activitypub-feed-post-meta .activitypub-feed-avatar{background-color:var(--wpds-color-bg-neutral-weak,#f0f0f1);border-radius:50%;flex-shrink:0;height:var(--wpds-spacing-50,20px);-o-object-fit:cover;object-fit:cover;width:var(--wpds-spacing-50,20px)}.activitypub-feed-post-meta .author{color:var(--wpds-color-fg-primary,#1d2327);font-weight:var(--wpds-font-weight-medium,500)}.activitypub-feed-post-meta .separator{color:var(--wpds-color-fg-tertiary,#c3c4c7)}.activitypub-feed-post-meta .date{color:var(--wpds-color-fg-secondary,#646970)}.activitypub-feed-post-title{color:var(--wpds-color-fg-primary,#1d2327);font-size:inherit;font-weight:400;line-height:1.4;margin:0 0 var(--wpds-spacing-30,12px);max-width:100%;overflow-wrap:break-word;word-wrap:break-word}.activitypub-feed-post-title>*{margin:0}.activitypub-feed-excerpt{color:var(--wpds-color-fg-secondary,#50575e);font-size:var(--wpds-font-size-small,13px);line-height:1.6;margin-top:var(--wpds-spacing-15,6px);max-width:100%;overflow-wrap:break-word;word-wrap:break-word}.dataviews-view-list .activitypub-feed-post-title{font-size:1.3em;font-weight:var(--wpds-font-weight-semibold,600)}.activitypub-feed-content{color:var(--wpds-color-fg-primary,#2c3338);line-height:1.6;max-width:100%;min-width:0;overflow-wrap:break-word;word-wrap:break-word}.activitypub-feed-content>:first-child{margin-top:0}.activitypub-feed-content>:last-child{margin-bottom:0}.activitypub-feed-content img{border-radius:var(--wpds-border-radius-small,4px);height:auto;margin:var(--wpds-spacing-30,12px) 0;max-width:100%}.activitypub-feed-content img.alignleft{float:right;margin:0 0 var(--wpds-spacing-30,12px) var(--wpds-spacing-40,16px);max-width:50%}.activitypub-feed-content img.alignright{float:left;margin:0 var(--wpds-spacing-40,16px) var(--wpds-spacing-30,12px) 0;max-width:50%}.activitypub-feed-content img.aligncenter{display:block;margin-right:auto;margin-left:auto}.activitypub-feed-content:after{clear:both;content:"";display:table}.activitypub-inspector{height:100%;overflow:auto}.activitypub-inspector-loading{padding:var(--wpds-spacing-50,20px);text-align:center}.activitypub-inspector-card{background:transparent!important;border:none!important;border-radius:0!important;box-shadow:none!important;margin-bottom:var(--wpds-spacing-60,24px)!important;padding:0!important}.activitypub-inspector-card .components-card__header{border:none!important;border-bottom:var(--wpds-border-width-control,1px) solid var(--wpds-color-stroke-neutral-weak,#dcdcde)!important;border-radius:0!important;padding:var(--wpds-spacing-60,24px) var(--wpds-spacing-60,24px) var(--wpds-spacing-40,16px)!important}.activitypub-inspector-card .components-card__body{padding:var(--wpds-spacing-40,16px) var(--wpds-spacing-60,24px) 0!important}.activitypub-inspector-comments-card{border-top:var(--wpds-border-width-control,1px) solid var(--wpds-color-stroke-neutral-weak,#dcdcde)!important;margin-top:var(--wpds-spacing-60,24px)!important;padding-top:var(--wpds-spacing-60,24px)!important}.activitypub-inspector-comments-card .components-card__header{border-bottom:none!important;font-size:var(--wpds-font-size-medium,16px);font-weight:var(--wpds-font-weight-semibold,600);padding-bottom:var(--wpds-spacing-30,12px)!important}.activitypub-inspector-header{align-items:center;display:flex;gap:var(--wpds-spacing-30,12px);width:100%}.activitypub-inspector-close{flex-shrink:0;margin-right:auto}.activitypub-inspector-avatar{background-color:var(--wpds-color-bg-neutral-weak,#f0f0f1);border-radius:50%;flex-shrink:0;height:var(--wpds-spacing-120,48px);-o-object-fit:cover;object-fit:cover;width:var(--wpds-spacing-120,48px)}.activitypub-inspector-author{display:flex;flex-direction:column;gap:var(--wpds-spacing-10,4px)}.activitypub-inspector-author-name{color:var(--wpds-color-fg-primary,#1d2327);font-size:var(--wpds-font-size-small,14px);font-weight:var(--wpds-font-weight-semibold,600);text-decoration:none}.activitypub-inspector-author-name:hover{color:var(--wpds-color-fg-brand,#135e96);text-decoration:underline}.activitypub-inspector-meta{align-items:center;display:flex;font-size:var(--wpds-font-size-small,13px);gap:var(--wpds-spacing-15,6px)}.activitypub-inspector-webfinger{color:var(--wpds-color-fg-secondary,#646970)}.activitypub-inspector-separator{color:var(--wpds-color-fg-tertiary,#c3c4c7)}.activitypub-inspector-timestamp{color:var(--wpds-color-fg-secondary,#646970);text-decoration:none}.activitypub-inspector-timestamp:hover{color:var(--wpds-color-fg-brand,#135e96);text-decoration:underline}.activitypub-inspector-card .components-card__body h2{color:var(--wpds-color-fg-primary,#1d2327);font-size:var(--wpds-font-size-large,20px);font-weight:var(--wpds-font-weight-semibold,600);line-height:1.4;margin:0 0 var(--wpds-spacing-40,16px)}.activitypub-inspector-card .components-card__body>div{color:var(--wpds-color-fg-primary,#2c3338);line-height:1.6;margin-bottom:var(--wpds-spacing-40,16px)}.activitypub-inspector-card .components-card__body>div img{height:auto;max-width:100%}.activitypub-inspector-card .components-card__body>div a{color:var(--wpds-color-fg-brand,#135e96);text-decoration:none;word-wrap:break-word;overflow-wrap:break-word}.activitypub-inspector-card .components-card__body>div a:hover{text-decoration:underline}.activitypub-inspector-card .components-card__body>div a .invisible{display:none}.activitypub-inspector-card .components-card__body>div a .ellipsis:after{content:"…"}.activitypub-inspector-link{margin-top:var(--wpds-spacing-40,16px)}.activitypub-inspector-comment{border-bottom:var(--wpds-border-width-control,1px) solid var(--wpds-color-stroke-neutral-weak,#f0f0f1);margin-bottom:var(--wpds-spacing-50,20px);padding-bottom:var(--wpds-spacing-50,20px)}.activitypub-inspector-comment:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.activitypub-inspector-comment-meta{margin-bottom:var(--wpds-spacing-20,8px)}.activitypub-inspector-comment-meta strong{color:var(--wpds-color-fg-primary,#1d2327);font-size:var(--wpds-font-size-small,14px)}.activitypub-inspector-comment-date{color:var(--wpds-color-fg-secondary,#646970);font-size:var(--wpds-font-size-small,13px);margin-right:var(--wpds-spacing-20,8px)} +.app-layout[data-section=feed] .inspector-region{width:50%}.dataviews-footer:empty{border:0;padding:0}.dataviews-view-list .dataviews-view-list__item{cursor:pointer}.dataviews-view-list .dataviews-view-list__field{width:100%}.activitypub-feed-post{border-bottom:var(--wpds-border-width-control,1px) solid var(--wpds-color-stroke-neutral-weak,#dcdcde);max-width:100%;min-width:0}.activitypub-feed-post:last-child{border-bottom:none}.activitypub-feed-post-meta{align-items:center;color:var(--wpds-color-fg-secondary,#646970);display:flex;font-size:var(--wpds-font-size-small,13px);gap:var(--wpds-spacing-20,8px);margin-bottom:var(--wpds-spacing-30,12px)}.activitypub-feed-post-meta .activitypub-feed-avatar{background-color:var(--wpds-color-bg-neutral-weak,#f0f0f1);border-radius:50%;flex-shrink:0;height:var(--wpds-spacing-50,20px);-o-object-fit:cover;object-fit:cover;width:var(--wpds-spacing-50,20px)}.activitypub-feed-post-meta .author{color:var(--wpds-color-fg-primary,#1d2327);font-weight:var(--wpds-font-weight-medium,500)}.activitypub-feed-post-meta .separator{color:var(--wpds-color-fg-tertiary,#c3c4c7)}.activitypub-feed-post-meta .date{color:var(--wpds-color-fg-secondary,#646970)}.activitypub-feed-post-title{color:var(--wpds-color-fg-primary,#1d2327);font-size:inherit;font-weight:400;line-height:1.4;margin:0 0 var(--wpds-spacing-30,12px);max-width:100%;overflow-wrap:break-word;word-wrap:break-word}.activitypub-feed-post-title>*{margin:0}.activitypub-feed-excerpt{color:var(--wpds-color-fg-secondary,#50575e);font-size:var(--wpds-font-size-small,13px);line-height:1.6;margin-top:var(--wpds-spacing-15,6px);max-width:100%;overflow-wrap:break-word;word-wrap:break-word}.dataviews-view-list .activitypub-feed-post-title{font-size:1.3em;font-weight:var(--wpds-font-weight-semibold,600)}.activitypub-feed-content{color:var(--wpds-color-fg-primary,#2c3338);line-height:1.6;max-width:100%;min-width:0;overflow-wrap:break-word;word-wrap:break-word}.activitypub-feed-content>:first-child{margin-top:0}.activitypub-feed-content>:last-child{margin-bottom:0}.activitypub-feed-content img{border-radius:var(--wpds-border-radius-small,4px);height:auto;margin:var(--wpds-spacing-30,12px) 0;max-width:100%}.activitypub-feed-content img.alignleft{float:right;margin:0 0 var(--wpds-spacing-30,12px) var(--wpds-spacing-40,16px);max-width:50%}.activitypub-feed-content img.alignright{float:left;margin:0 var(--wpds-spacing-40,16px) var(--wpds-spacing-30,12px) 0;max-width:50%}.activitypub-feed-content img.aligncenter{display:block;margin-right:auto;margin-left:auto}.activitypub-feed-content:after{clear:both;content:"";display:table}.activitypub-inspector{height:100%;overflow:auto}.activitypub-inspector-loading{padding:var(--wpds-spacing-50,20px);text-align:center}.activitypub-inspector-card{background:transparent!important;border:none!important;border-radius:0!important;box-shadow:none!important;margin-bottom:var(--wpds-spacing-60,24px)!important;padding:0!important}.activitypub-inspector-card .components-card__header{border:none!important;border-bottom:var(--wpds-border-width-control,1px) solid var(--wpds-color-stroke-neutral-weak,#dcdcde)!important;border-radius:0!important;padding:var(--wpds-spacing-60,24px) var(--wpds-spacing-60,24px) var(--wpds-spacing-40,16px)!important}.activitypub-inspector-card .components-card__body{padding:var(--wpds-spacing-40,16px) var(--wpds-spacing-60,24px) 0!important}.activitypub-inspector-comments-card{border-top:var(--wpds-border-width-control,1px) solid var(--wpds-color-stroke-neutral-weak,#dcdcde)!important;margin-top:var(--wpds-spacing-60,24px)!important;padding-top:var(--wpds-spacing-60,24px)!important}.activitypub-inspector-comments-card .components-card__header{border-bottom:none!important;font-size:var(--wpds-font-size-medium,16px);font-weight:var(--wpds-font-weight-semibold,600);padding-bottom:var(--wpds-spacing-30,12px)!important}.activitypub-inspector-header{align-items:center;display:flex;gap:var(--wpds-spacing-30,12px);width:100%}.activitypub-inspector-close{flex-shrink:0;margin-right:auto}.activitypub-inspector-avatar{background-color:var(--wpds-color-bg-neutral-weak,#f0f0f1);border-radius:50%;flex-shrink:0;height:var(--wpds-spacing-120,48px);-o-object-fit:cover;object-fit:cover;width:var(--wpds-spacing-120,48px)}.activitypub-inspector-author{display:flex;flex-direction:column;gap:var(--wpds-spacing-10,4px)}.activitypub-inspector-author-name{color:var(--wpds-color-fg-primary,#1d2327);font-size:var(--wpds-font-size-small,14px);font-weight:var(--wpds-font-weight-semibold,600);text-decoration:none}.activitypub-inspector-author-name:hover{color:var(--wpds-color-fg-brand,#135e96);text-decoration:underline}.activitypub-inspector-meta{align-items:center;display:flex;font-size:var(--wpds-font-size-small,13px);gap:var(--wpds-spacing-15,6px)}.activitypub-inspector-webfinger{color:var(--wpds-color-fg-secondary,#646970)}.activitypub-inspector-separator{color:var(--wpds-color-fg-tertiary,#c3c4c7)}.activitypub-inspector-timestamp{color:var(--wpds-color-fg-secondary,#646970);text-decoration:none}.activitypub-inspector-timestamp:hover{color:var(--wpds-color-fg-brand,#135e96);text-decoration:underline}.activitypub-inspector-card .components-card__body h2{color:var(--wpds-color-fg-primary,#1d2327);font-size:var(--wpds-font-size-large,20px);font-weight:var(--wpds-font-weight-semibold,600);line-height:1.4;margin:0 0 var(--wpds-spacing-40,16px)}.activitypub-inspector-card .components-card__body>div{color:var(--wpds-color-fg-primary,#2c3338);line-height:1.6;margin-bottom:var(--wpds-spacing-40,16px)}.activitypub-inspector-card .components-card__body>div img{height:auto;max-width:100%}.activitypub-inspector-card .components-card__body>div a{color:var(--wpds-color-fg-brand,#135e96);text-decoration:none;word-wrap:break-word;overflow-wrap:break-word}.activitypub-inspector-card .components-card__body>div a:hover{text-decoration:underline}.activitypub-inspector-card .components-card__body>div a .invisible{display:none}.activitypub-inspector-card .components-card__body>div a .ellipsis:after{content:"…"}.activitypub-inspector-link{margin-top:var(--wpds-spacing-40,16px)}.activitypub-inspector-comment{border-bottom:var(--wpds-border-width-control,1px) solid var(--wpds-color-stroke-neutral-weak,#f0f0f1);margin-bottom:var(--wpds-spacing-50,20px);padding-bottom:var(--wpds-spacing-50,20px)}.activitypub-inspector-comment:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.activitypub-inspector-comment-meta{margin-bottom:var(--wpds-spacing-20,8px)}.activitypub-inspector-comment-meta strong{color:var(--wpds-color-fg-primary,#1d2327);font-size:var(--wpds-font-size-small,14px)}.activitypub-inspector-comment-date{color:var(--wpds-color-fg-secondary,#646970);font-size:var(--wpds-font-size-small,13px);margin-right:var(--wpds-spacing-20,8px)} .page{display:flex;flex-direction:column;height:100%;min-width:0}.header{flex-shrink:0;padding:var(--wpds-spacing-60,24px)}.header.has-border{border-bottom:var(--wpds-border-width-focus,1px) solid var(--wpds-color-stroke-surface-neutral,#ddd)}.title-row{gap:var(--wpds-spacing-40,16px);justify-content:space-between}.title-group,.title-row{align-items:center;display:flex}.title-group{gap:var(--wpds-spacing-30,12px)}.title{color:var(--wpds-color-fg-primary,#1e1e1e);font-size:var(--wpds-font-size-large,20px);font-weight:500;margin:0}.sub-title{color:var(--wpds-color-fg-secondary,#757575);font-size:var(--wpds-font-size-small,13px);margin:var(--wpds-spacing-20,8px) 0 0}.content{display:flex;flex:1;flex-direction:column;gap:var(--wpds-spacing-60,24px);overflow:auto}.content.padded{padding:var(--wpds-spacing-60,24px)}.content.constrained{margin:0 auto;max-width:960px;width:100%}.content.full{padding:0} .dataviews-view-table .activitypub-avatar-field__image{height:32px;width:32px} .activitypub-mutual{background:#dcdcde;border-radius:3px;color:#50575e;display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;text-transform:uppercase} diff --git a/build/social-web/style-feed-stage.css b/build/social-web/style-feed-stage.css index 34dfaa8e4..b8dd87f96 100644 --- a/build/social-web/style-feed-stage.css +++ b/build/social-web/style-feed-stage.css @@ -1,4 +1,4 @@ -.app-layout[data-section=feed] .inspector-region{width:50%}.dataviews-view-list .dataviews-view-list__item{cursor:pointer}.dataviews-view-list .dataviews-view-list__field{width:100%}.activitypub-feed-post{border-bottom:var(--wpds-border-width-control,1px) solid var(--wpds-color-stroke-neutral-weak,#dcdcde);max-width:100%;min-width:0}.activitypub-feed-post:last-child{border-bottom:none}.activitypub-feed-post-meta{align-items:center;color:var(--wpds-color-fg-secondary,#646970);display:flex;font-size:var(--wpds-font-size-small,13px);gap:var(--wpds-spacing-20,8px);margin-bottom:var(--wpds-spacing-30,12px)}.activitypub-feed-post-meta .activitypub-feed-avatar{background-color:var(--wpds-color-bg-neutral-weak,#f0f0f1);border-radius:50%;flex-shrink:0;height:var(--wpds-spacing-50,20px);-o-object-fit:cover;object-fit:cover;width:var(--wpds-spacing-50,20px)}.activitypub-feed-post-meta .author{color:var(--wpds-color-fg-primary,#1d2327);font-weight:var(--wpds-font-weight-medium,500)}.activitypub-feed-post-meta .separator{color:var(--wpds-color-fg-tertiary,#c3c4c7)}.activitypub-feed-post-meta .date{color:var(--wpds-color-fg-secondary,#646970)}.activitypub-feed-post-title{color:var(--wpds-color-fg-primary,#1d2327);font-size:inherit;font-weight:400;line-height:1.4;margin:0 0 var(--wpds-spacing-30,12px);max-width:100%;overflow-wrap:break-word;word-wrap:break-word}.activitypub-feed-post-title>*{margin:0}.activitypub-feed-excerpt{color:var(--wpds-color-fg-secondary,#50575e);font-size:var(--wpds-font-size-small,13px);line-height:1.6;margin-top:var(--wpds-spacing-15,6px);max-width:100%;overflow-wrap:break-word;word-wrap:break-word}.dataviews-view-list .activitypub-feed-post-title{font-size:1.3em;font-weight:var(--wpds-font-weight-semibold,600)}.activitypub-feed-content{color:var(--wpds-color-fg-primary,#2c3338);line-height:1.6;max-width:100%;min-width:0;overflow-wrap:break-word;word-wrap:break-word}.activitypub-feed-content>:first-child{margin-top:0}.activitypub-feed-content>:last-child{margin-bottom:0}.activitypub-feed-content img{border-radius:var(--wpds-border-radius-small,4px);height:auto;margin:var(--wpds-spacing-30,12px) 0;max-width:100%}.activitypub-feed-content img.alignleft{float:left;margin:0 var(--wpds-spacing-40,16px) var(--wpds-spacing-30,12px) 0;max-width:50%}.activitypub-feed-content img.alignright{float:right;margin:0 0 var(--wpds-spacing-30,12px) var(--wpds-spacing-40,16px);max-width:50%}.activitypub-feed-content img.aligncenter{display:block;margin-left:auto;margin-right:auto}.activitypub-feed-content:after{clear:both;content:"";display:table}.activitypub-inspector{height:100%;overflow:auto}.activitypub-inspector-loading{padding:var(--wpds-spacing-50,20px);text-align:center}.activitypub-inspector-card{background:transparent!important;border:none!important;border-radius:0!important;box-shadow:none!important;margin-bottom:var(--wpds-spacing-60,24px)!important;padding:0!important}.activitypub-inspector-card .components-card__header{border:none!important;border-bottom:var(--wpds-border-width-control,1px) solid var(--wpds-color-stroke-neutral-weak,#dcdcde)!important;border-radius:0!important;padding:var(--wpds-spacing-60,24px) var(--wpds-spacing-60,24px) var(--wpds-spacing-40,16px)!important}.activitypub-inspector-card .components-card__body{padding:var(--wpds-spacing-40,16px) var(--wpds-spacing-60,24px) 0!important}.activitypub-inspector-comments-card{border-top:var(--wpds-border-width-control,1px) solid var(--wpds-color-stroke-neutral-weak,#dcdcde)!important;margin-top:var(--wpds-spacing-60,24px)!important;padding-top:var(--wpds-spacing-60,24px)!important}.activitypub-inspector-comments-card .components-card__header{border-bottom:none!important;font-size:var(--wpds-font-size-medium,16px);font-weight:var(--wpds-font-weight-semibold,600);padding-bottom:var(--wpds-spacing-30,12px)!important}.activitypub-inspector-header{align-items:center;display:flex;gap:var(--wpds-spacing-30,12px);width:100%}.activitypub-inspector-close{flex-shrink:0;margin-left:auto}.activitypub-inspector-avatar{background-color:var(--wpds-color-bg-neutral-weak,#f0f0f1);border-radius:50%;flex-shrink:0;height:var(--wpds-spacing-120,48px);-o-object-fit:cover;object-fit:cover;width:var(--wpds-spacing-120,48px)}.activitypub-inspector-author{display:flex;flex-direction:column;gap:var(--wpds-spacing-10,4px)}.activitypub-inspector-author-name{color:var(--wpds-color-fg-primary,#1d2327);font-size:var(--wpds-font-size-small,14px);font-weight:var(--wpds-font-weight-semibold,600);text-decoration:none}.activitypub-inspector-author-name:hover{color:var(--wpds-color-fg-brand,#135e96);text-decoration:underline}.activitypub-inspector-meta{align-items:center;display:flex;font-size:var(--wpds-font-size-small,13px);gap:var(--wpds-spacing-15,6px)}.activitypub-inspector-webfinger{color:var(--wpds-color-fg-secondary,#646970)}.activitypub-inspector-separator{color:var(--wpds-color-fg-tertiary,#c3c4c7)}.activitypub-inspector-timestamp{color:var(--wpds-color-fg-secondary,#646970);text-decoration:none}.activitypub-inspector-timestamp:hover{color:var(--wpds-color-fg-brand,#135e96);text-decoration:underline}.activitypub-inspector-card .components-card__body h2{color:var(--wpds-color-fg-primary,#1d2327);font-size:var(--wpds-font-size-large,20px);font-weight:var(--wpds-font-weight-semibold,600);line-height:1.4;margin:0 0 var(--wpds-spacing-40,16px)}.activitypub-inspector-card .components-card__body>div{color:var(--wpds-color-fg-primary,#2c3338);line-height:1.6;margin-bottom:var(--wpds-spacing-40,16px)}.activitypub-inspector-card .components-card__body>div img{height:auto;max-width:100%}.activitypub-inspector-card .components-card__body>div a{color:var(--wpds-color-fg-brand,#135e96);text-decoration:none;word-wrap:break-word;overflow-wrap:break-word}.activitypub-inspector-card .components-card__body>div a:hover{text-decoration:underline}.activitypub-inspector-card .components-card__body>div a .invisible{display:none}.activitypub-inspector-card .components-card__body>div a .ellipsis:after{content:"…"}.activitypub-inspector-link{margin-top:var(--wpds-spacing-40,16px)}.activitypub-inspector-comment{border-bottom:var(--wpds-border-width-control,1px) solid var(--wpds-color-stroke-neutral-weak,#f0f0f1);margin-bottom:var(--wpds-spacing-50,20px);padding-bottom:var(--wpds-spacing-50,20px)}.activitypub-inspector-comment:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.activitypub-inspector-comment-meta{margin-bottom:var(--wpds-spacing-20,8px)}.activitypub-inspector-comment-meta strong{color:var(--wpds-color-fg-primary,#1d2327);font-size:var(--wpds-font-size-small,14px)}.activitypub-inspector-comment-date{color:var(--wpds-color-fg-secondary,#646970);font-size:var(--wpds-font-size-small,13px);margin-left:var(--wpds-spacing-20,8px)} +.app-layout[data-section=feed] .inspector-region{width:50%}.dataviews-footer:empty{border:0;padding:0}.dataviews-view-list .dataviews-view-list__item{cursor:pointer}.dataviews-view-list .dataviews-view-list__field{width:100%}.activitypub-feed-post{border-bottom:var(--wpds-border-width-control,1px) solid var(--wpds-color-stroke-neutral-weak,#dcdcde);max-width:100%;min-width:0}.activitypub-feed-post:last-child{border-bottom:none}.activitypub-feed-post-meta{align-items:center;color:var(--wpds-color-fg-secondary,#646970);display:flex;font-size:var(--wpds-font-size-small,13px);gap:var(--wpds-spacing-20,8px);margin-bottom:var(--wpds-spacing-30,12px)}.activitypub-feed-post-meta .activitypub-feed-avatar{background-color:var(--wpds-color-bg-neutral-weak,#f0f0f1);border-radius:50%;flex-shrink:0;height:var(--wpds-spacing-50,20px);-o-object-fit:cover;object-fit:cover;width:var(--wpds-spacing-50,20px)}.activitypub-feed-post-meta .author{color:var(--wpds-color-fg-primary,#1d2327);font-weight:var(--wpds-font-weight-medium,500)}.activitypub-feed-post-meta .separator{color:var(--wpds-color-fg-tertiary,#c3c4c7)}.activitypub-feed-post-meta .date{color:var(--wpds-color-fg-secondary,#646970)}.activitypub-feed-post-title{color:var(--wpds-color-fg-primary,#1d2327);font-size:inherit;font-weight:400;line-height:1.4;margin:0 0 var(--wpds-spacing-30,12px);max-width:100%;overflow-wrap:break-word;word-wrap:break-word}.activitypub-feed-post-title>*{margin:0}.activitypub-feed-excerpt{color:var(--wpds-color-fg-secondary,#50575e);font-size:var(--wpds-font-size-small,13px);line-height:1.6;margin-top:var(--wpds-spacing-15,6px);max-width:100%;overflow-wrap:break-word;word-wrap:break-word}.dataviews-view-list .activitypub-feed-post-title{font-size:1.3em;font-weight:var(--wpds-font-weight-semibold,600)}.activitypub-feed-content{color:var(--wpds-color-fg-primary,#2c3338);line-height:1.6;max-width:100%;min-width:0;overflow-wrap:break-word;word-wrap:break-word}.activitypub-feed-content>:first-child{margin-top:0}.activitypub-feed-content>:last-child{margin-bottom:0}.activitypub-feed-content img{border-radius:var(--wpds-border-radius-small,4px);height:auto;margin:var(--wpds-spacing-30,12px) 0;max-width:100%}.activitypub-feed-content img.alignleft{float:left;margin:0 var(--wpds-spacing-40,16px) var(--wpds-spacing-30,12px) 0;max-width:50%}.activitypub-feed-content img.alignright{float:right;margin:0 0 var(--wpds-spacing-30,12px) var(--wpds-spacing-40,16px);max-width:50%}.activitypub-feed-content img.aligncenter{display:block;margin-left:auto;margin-right:auto}.activitypub-feed-content:after{clear:both;content:"";display:table}.activitypub-inspector{height:100%;overflow:auto}.activitypub-inspector-loading{padding:var(--wpds-spacing-50,20px);text-align:center}.activitypub-inspector-card{background:transparent!important;border:none!important;border-radius:0!important;box-shadow:none!important;margin-bottom:var(--wpds-spacing-60,24px)!important;padding:0!important}.activitypub-inspector-card .components-card__header{border:none!important;border-bottom:var(--wpds-border-width-control,1px) solid var(--wpds-color-stroke-neutral-weak,#dcdcde)!important;border-radius:0!important;padding:var(--wpds-spacing-60,24px) var(--wpds-spacing-60,24px) var(--wpds-spacing-40,16px)!important}.activitypub-inspector-card .components-card__body{padding:var(--wpds-spacing-40,16px) var(--wpds-spacing-60,24px) 0!important}.activitypub-inspector-comments-card{border-top:var(--wpds-border-width-control,1px) solid var(--wpds-color-stroke-neutral-weak,#dcdcde)!important;margin-top:var(--wpds-spacing-60,24px)!important;padding-top:var(--wpds-spacing-60,24px)!important}.activitypub-inspector-comments-card .components-card__header{border-bottom:none!important;font-size:var(--wpds-font-size-medium,16px);font-weight:var(--wpds-font-weight-semibold,600);padding-bottom:var(--wpds-spacing-30,12px)!important}.activitypub-inspector-header{align-items:center;display:flex;gap:var(--wpds-spacing-30,12px);width:100%}.activitypub-inspector-close{flex-shrink:0;margin-left:auto}.activitypub-inspector-avatar{background-color:var(--wpds-color-bg-neutral-weak,#f0f0f1);border-radius:50%;flex-shrink:0;height:var(--wpds-spacing-120,48px);-o-object-fit:cover;object-fit:cover;width:var(--wpds-spacing-120,48px)}.activitypub-inspector-author{display:flex;flex-direction:column;gap:var(--wpds-spacing-10,4px)}.activitypub-inspector-author-name{color:var(--wpds-color-fg-primary,#1d2327);font-size:var(--wpds-font-size-small,14px);font-weight:var(--wpds-font-weight-semibold,600);text-decoration:none}.activitypub-inspector-author-name:hover{color:var(--wpds-color-fg-brand,#135e96);text-decoration:underline}.activitypub-inspector-meta{align-items:center;display:flex;font-size:var(--wpds-font-size-small,13px);gap:var(--wpds-spacing-15,6px)}.activitypub-inspector-webfinger{color:var(--wpds-color-fg-secondary,#646970)}.activitypub-inspector-separator{color:var(--wpds-color-fg-tertiary,#c3c4c7)}.activitypub-inspector-timestamp{color:var(--wpds-color-fg-secondary,#646970);text-decoration:none}.activitypub-inspector-timestamp:hover{color:var(--wpds-color-fg-brand,#135e96);text-decoration:underline}.activitypub-inspector-card .components-card__body h2{color:var(--wpds-color-fg-primary,#1d2327);font-size:var(--wpds-font-size-large,20px);font-weight:var(--wpds-font-weight-semibold,600);line-height:1.4;margin:0 0 var(--wpds-spacing-40,16px)}.activitypub-inspector-card .components-card__body>div{color:var(--wpds-color-fg-primary,#2c3338);line-height:1.6;margin-bottom:var(--wpds-spacing-40,16px)}.activitypub-inspector-card .components-card__body>div img{height:auto;max-width:100%}.activitypub-inspector-card .components-card__body>div a{color:var(--wpds-color-fg-brand,#135e96);text-decoration:none;word-wrap:break-word;overflow-wrap:break-word}.activitypub-inspector-card .components-card__body>div a:hover{text-decoration:underline}.activitypub-inspector-card .components-card__body>div a .invisible{display:none}.activitypub-inspector-card .components-card__body>div a .ellipsis:after{content:"…"}.activitypub-inspector-link{margin-top:var(--wpds-spacing-40,16px)}.activitypub-inspector-comment{border-bottom:var(--wpds-border-width-control,1px) solid var(--wpds-color-stroke-neutral-weak,#f0f0f1);margin-bottom:var(--wpds-spacing-50,20px);padding-bottom:var(--wpds-spacing-50,20px)}.activitypub-inspector-comment:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.activitypub-inspector-comment-meta{margin-bottom:var(--wpds-spacing-20,8px)}.activitypub-inspector-comment-meta strong{color:var(--wpds-color-fg-primary,#1d2327);font-size:var(--wpds-font-size-small,14px)}.activitypub-inspector-comment-date{color:var(--wpds-color-fg-secondary,#646970);font-size:var(--wpds-font-size-small,13px);margin-left:var(--wpds-spacing-20,8px)} .page{display:flex;flex-direction:column;height:100%;min-width:0}.header{flex-shrink:0;padding:var(--wpds-spacing-60,24px)}.header.has-border{border-bottom:var(--wpds-border-width-focus,1px) solid var(--wpds-color-stroke-surface-neutral,#ddd)}.title-row{gap:var(--wpds-spacing-40,16px);justify-content:space-between}.title-group,.title-row{align-items:center;display:flex}.title-group{gap:var(--wpds-spacing-30,12px)}.title{color:var(--wpds-color-fg-primary,#1e1e1e);font-size:var(--wpds-font-size-large,20px);font-weight:500;margin:0}.sub-title{color:var(--wpds-color-fg-secondary,#757575);font-size:var(--wpds-font-size-small,13px);margin:var(--wpds-spacing-20,8px) 0 0}.content{display:flex;flex:1;flex-direction:column;gap:var(--wpds-spacing-60,24px);overflow:auto}.content.padded{padding:var(--wpds-spacing-60,24px)}.content.constrained{margin:0 auto;max-width:960px;width:100%}.content.full{padding:0} .dataviews-view-table .activitypub-avatar-field__image{height:32px;width:32px} .activitypub-mutual{background:#dcdcde;border-radius:3px;color:#50575e;display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;text-transform:uppercase} diff --git a/src/social-web/routes/feed/stage.tsx b/src/social-web/routes/feed/stage.tsx index 3fb8d2608..8823778cd 100644 --- a/src/social-web/routes/feed/stage.tsx +++ b/src/social-web/routes/feed/stage.tsx @@ -5,7 +5,7 @@ */ import './style.scss'; -import { useMemo, useCallback, useState, useEffect } from '@wordpress/element'; +import { useMemo, useCallback, useState, useEffect, useRef } from '@wordpress/element'; import { DataViews } from '@wordpress/dataviews'; import { useView } from '@wordpress/views'; import type { View, Field } from '@wordpress/dataviews'; @@ -31,6 +31,7 @@ const DEFAULT_VIEW: View = { search: '', filters: [], fields: [ 'metadata', 'title.rendered', 'excerpt.rendered' ], + infiniteScrollEnabled: true, }; const defaultLayouts = { @@ -143,6 +144,11 @@ export default function FeedStage( { onSelectItem }: FeedStageProps ) { const [ selection, setSelection ] = useState< string[] >( [] ); + // State for infinite scroll + const [ allLoadedRecords, setAllLoadedRecords ] = useState< FeedPost[] >( [] ); + const [ isLoadingMore, setIsLoadingMore ] = useState( false ); + const lastProcessedPage = useRef< number >( 0 ); + useEffect( () => { if ( selection.length === 0 ) { return; @@ -173,6 +179,54 @@ export default function FeedStage( { onSelectItem }: FeedStageProps ) { [ feed, onSelectItem ] ); + // Infinite scroll handler + const infiniteScrollHandler = useCallback( () => { + const currentPage = view.page || 1; + + // Prevent concurrent requests or loading beyond available pages + if ( isLoadingMore || currentPage >= ( totalPages || 1 ) ) { + return; + } + + setIsLoadingMore( true ); + updateFeedView( { + ...view, + page: currentPage + 1, + } ); + }, [ isLoadingMore, view, totalPages, updateFeedView ] ); + + // Accumulate data across pages for infinite scroll + useEffect( () => { + const currentPage = normalizedView.page || 1; + const infiniteScrollEnabled = normalizedView.infiniteScrollEnabled; + + // Don't process until feed data is available + if ( feed.length === 0 ) { + return; + } + + // Skip if we've already processed this page (but always process page 1 for search/initial load) + if ( currentPage > 1 && lastProcessedPage.current === currentPage ) { + return; + } + + // Reset to new data on first page or when infinite scroll is disabled + if ( currentPage === 1 || ! infiniteScrollEnabled ) { + setAllLoadedRecords( feed ); + lastProcessedPage.current = currentPage; + setIsLoadingMore( false ); + } else { + // Append new records while avoiding duplicates + setAllLoadedRecords( ( prev ) => { + const existingIds = new Set( prev.map( ( item ) => item.id ) ); + const newRecords = feed.filter( ( record ) => ! existingIds.has( record.id ) ); + return newRecords.length > 0 ? [ ...prev, ...newRecords ] : prev; + } ); + lastProcessedPage.current = currentPage; + setIsLoadingMore( false ); + } + }, [ feed, normalizedView.page, normalizedView.search, normalizedView.infiniteScrollEnabled ] ); + return ( onSelectItem( item.id ) } isItemClickable={ () => true } getItemId={ ( item ) => item.id.toString() } @@ -200,7 +254,11 @@ export default function FeedStage( { onSelectItem }: FeedStageProps ) { ) }

} - paginationInfo={ { totalItems, totalPages } } + paginationInfo={ { + totalItems, + totalPages, + infiniteScrollHandler, + } } defaultLayouts={ defaultLayouts } />
diff --git a/src/social-web/routes/feed/style.scss b/src/social-web/routes/feed/style.scss index f4d7fe049..6c3c65d11 100644 --- a/src/social-web/routes/feed/style.scss +++ b/src/social-web/routes/feed/style.scss @@ -8,6 +8,12 @@ width: 50%; } +// Remove residual styles from footer when empty (infinite scroll enabled) +.dataviews-footer:empty { + border: 0; + padding: 0; +} + // List view item stacking .dataviews-view-list { .dataviews-view-list__item {