@alanizcreative/formation-static 1.3.0-beta.41 → 1.3.0-beta.43
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/cjs/components/Pagination/Pagination.js +1 -1
- package/cjs/components/Pagination/PaginationTypes.d.ts +4 -4
- package/cjs/layouts/Container/Container.js +1 -1
- package/cjs/render/render.js +1 -1
- package/cjs/serverless/serverless.d.ts +1 -1
- package/cjs/serverless/serverless.js +1 -1
- package/cjs/utils/heading/heading.js +1 -1
- package/cjs/utils/image/image.js +1 -1
- package/cjs/utils/link/link.js +1 -1
- package/cjs/utils/link/linkTypes.d.ts +2 -2
- package/lib/components/Pagination/Pagination.js +1 -1
- package/lib/components/Pagination/PaginationTypes.d.ts +4 -4
- package/lib/layouts/Container/Container.js +1 -1
- package/lib/render/render.js +1 -1
- package/lib/serverless/serverless.d.ts +1 -1
- package/lib/serverless/serverless.js +1 -1
- package/lib/utils/heading/heading.js +1 -1
- package/lib/utils/image/image.js +1 -1
- package/lib/utils/link/link.js +1 -1
- package/lib/utils/link/linkTypes.d.ts +2 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Pagination=void 0;const object_js_1=require("../../utils/object/object.js"),string_js_1=require("../../utils/string/string.js"),Pagination=props=>{const fallback={output:"",data:{}};if(!(0,object_js_1.isObjectStrict)(props))return fallback;const{total:total=1,display:display=5,current:current=1,filters:filters,url:url,ellipsis:ellipsis,prev:prev="",next:next="",prevLabel:prevLabel="Previous page",nextLabel:nextLabel="Next page",currentLabel:currentLabel="Current page",pageLabel:pageLabel="Page",titleTemplate:titleTemplate="Page %current of %total",args:args}=props,{listClass:listClass,listAttr:listAttr,itemClass:itemClass,itemAttr:itemAttr,linkClass:linkClass,linkAttr:linkAttr,currentClass:currentClass,a11yClass:a11yClass="a-hide-vis",prevSpanClass:prevSpanClass,prevLinkClass:prevLinkClass,nextSpanClass:nextSpanClass,nextLinkClass:nextLinkClass}=(0,object_js_1.isObjectStrict)(args)?args:{};if(total<=1||!(0,string_js_1.isStringStrict)(url))return fallback;let output="";const hasFilters=(0,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Pagination=void 0;const object_js_1=require("../../utils/object/object.js"),string_js_1=require("../../utils/string/string.js"),Pagination=props=>{const fallback={output:"",data:{}};if(!(0,object_js_1.isObjectStrict)(props))return fallback;const{total:total=1,display:display=5,current:current=1,filters:filters,url:url,ellipsis:ellipsis,prev:prev="",next:next="",prevLabel:prevLabel="Previous page",nextLabel:nextLabel="Next page",currentLabel:currentLabel="Current page",pageLabel:pageLabel="Page",titleTemplate:titleTemplate="Page %current of %total",args:args}=props,{listClass:listClass,listAttr:listAttr,itemClass:itemClass,itemAttr:itemAttr,linkClass:linkClass,linkAttr:linkAttr,currentClass:currentClass,a11yClass:a11yClass="a-hide-vis",prevSpanClass:prevSpanClass,prevLinkClass:prevLinkClass,nextSpanClass:nextSpanClass,nextLinkClass:nextLinkClass}=(0,object_js_1.isObjectStrict)(args)?args:{};if(total<=1||!(0,string_js_1.isStringStrict)(url))return fallback;let output="";const hasFilters=(0,object_js_1.isObjectStrict)(filters);let prevParams={},nextParams={},currentParams={};const prevPage=current-1,nextPage=current+1<=total?current+1:0;current>1&&(currentParams.page=current.toString()),prevPage>1&&(prevParams.page=prevPage.toString()),nextPage&&(nextParams.page=nextPage.toString()),hasFilters&&(currentParams={...currentParams,...filters},prevParams={...prevParams,...filters},current<total&&(nextParams={...nextParams,...filters}));let prevParamsStr=new URLSearchParams(prevParams).toString(),nextParamsStr=new URLSearchParams(nextParams).toString(),currentParamsStr=new URLSearchParams(currentParams).toString();prevParamsStr&&(prevParamsStr=`?${prevParamsStr}`),nextParamsStr&&(nextParamsStr=`?${nextParamsStr}`),currentParamsStr&&(currentParamsStr=`?${currentParamsStr}`);const data={current:current,total:total};nextPage&&(data.next=nextPage),prevPage&&(data.prev=prevPage),currentParamsStr&&(data.currentParams=currentParams),nextParamsStr&&(data.nextParams=nextParams),prevParamsStr&&(data.prevParams=prevParams),current>1&&(data.title=titleTemplate.replace("%current",current.toString()).replace("%total",total.toString()));const max=display-1,half=Math.ceil(display/2),maxHalf=max/2,center=total>max,limit=center?max:total-1;let start=1;center&&(start=current<max?1:current-maxHalf),start>total-limit&&(start=total-limit);const totalPagesItems=start+limit,listAttrs=[];(0,string_js_1.isStringStrict)(listClass)&&listAttrs.push(`class="${listClass}"`),(0,string_js_1.isStringStrict)(listAttr)&&listAttrs.push(listAttr);const hasEllipsis=(0,string_js_1.isStringStrict)(ellipsis),itemAttrs=`${(0,string_js_1.isStringStrict)(itemClass)?` class="${itemClass}"`:""}${(0,string_js_1.isStringStrict)(itemAttr)?` ${itemAttr}`:""}`;let prevItem=`<span${(0,string_js_1.isStringStrict)(prevSpanClass)?` class="${prevSpanClass}"`:""}>${prev}</span>`,isPrevLink=!1;current>1&&(isPrevLink=!0,prevItem=`\n <a\n href="${url}${prevParamsStr}"\n aria-label="${prevLabel}"${(0,string_js_1.isStringStrict)(prevLinkClass)?` class="${prevLinkClass}"`:""}\n >\n ${prev}\n </a>\n `),output+=`<li${itemAttrs} data-pag-prev="${isPrevLink?"link":"text"}">${prevItem}</li>`;let ellipsisOutput="";hasEllipsis&&(ellipsisOutput=`<li${itemAttrs} aria-hidden="true" data-pag-ellipsis>${ellipsis}</li>`),center&¤t>=limit&¤t>half&&(output+=ellipsisOutput);for(let i=start;i<=totalPagesItems;i+=1){const isCurrent=i===current;let content="";if(isCurrent)content=`\n <span${(0,string_js_1.isStringStrict)(currentClass)?` class="${currentClass}"`:""}>\n <span class="${a11yClass}">${currentLabel} </span>\n ${i}\n </span>\n `;else{let params={};i>1&&(params.page=i.toString()),hasFilters&&(params={...params,...filters});let paramsStr=new URLSearchParams(params).toString();paramsStr&&(paramsStr=`?${paramsStr}`),content=`\n <a href="${url}${paramsStr}"${(0,string_js_1.isStringStrict)(linkClass)?` class="${linkClass}"`:""}${(0,string_js_1.isStringStrict)(linkAttr)?` ${linkAttr}`:""}>\n <span class="${a11yClass}">${pageLabel} </span>\n ${i}\n </a>\n `}output+=`<li${itemAttrs}${isCurrent?" data-pag-current":""}>${content}</li>`}center&¤t<total-maxHalf&&(output+=ellipsisOutput);let nextItem=`<span${(0,string_js_1.isStringStrict)(nextSpanClass)?` class="${nextSpanClass}"`:""}>${next}</span>`,nextLink=!1;return current<total&&(nextLink=!0,nextItem=`\n <a\n href="${url}${nextParamsStr}"\n aria-label="${nextLabel}"${(0,string_js_1.isStringStrict)(nextLinkClass)?` class="${nextLinkClass}"`:""}\n >\n ${next}\n </a>\n `),output+=`<li${itemAttrs} data-pag-next="${nextLink?"link":"text"}">${nextItem}</li>`,{output:`\n <ol${listAttrs.length?` ${listAttrs.join(" ")}`:""}>\n ${output}\n </ol>\n `,data:data}};exports.Pagination=Pagination;
|
|
@@ -2,7 +2,7 @@ export interface PaginationProps {
|
|
|
2
2
|
total?: number;
|
|
3
3
|
display?: number;
|
|
4
4
|
current?: number;
|
|
5
|
-
filters?: string
|
|
5
|
+
filters?: Record<string, string>;
|
|
6
6
|
url?: string;
|
|
7
7
|
ellipsis?: string;
|
|
8
8
|
prev?: string;
|
|
@@ -34,9 +34,9 @@ export interface PaginationData {
|
|
|
34
34
|
title?: string;
|
|
35
35
|
next?: number;
|
|
36
36
|
prev?: number;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
nextParams?: Record<string, string>;
|
|
38
|
+
prevParams?: Record<string, string>;
|
|
39
|
+
currentParams?: Record<string, string>;
|
|
40
40
|
}
|
|
41
41
|
export interface PaginationReturn {
|
|
42
42
|
output: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Container=void 0;const filter_js_1=require("../../utils/filter/filter.js"),object_js_1=require("../../utils/object/object.js"),string_js_1=require("../../utils/string/string.js"),Container=props=>{if(!(0,object_js_1.isObjectStrict)(props))return[];if(props=(0,filter_js_1.applyFilters)("containerProps",props),!(0,object_js_1.isObjectStrict)(props))return[];const{args:args}=props,{tag:tag="div",layoutClasses:layoutClasses,classes:classes,style:style,attr:attr,nest:nest=!1}=(0,object_js_1.isObjectStrict)(args)?args:{};if(!(0,string_js_1.isStringStrict)(tag))return[];const isSemanticParent=["ul","ol","dl","figure"].
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Container=void 0;const filter_js_1=require("../../utils/filter/filter.js"),object_js_1=require("../../utils/object/object.js"),string_js_1=require("../../utils/string/string.js"),Container=props=>{if(!(0,object_js_1.isObjectStrict)(props))return[];if(props=(0,filter_js_1.applyFilters)("containerProps",props),!(0,object_js_1.isObjectStrict)(props))return[];const{args:args}=props,{tag:tag="div",layoutClasses:layoutClasses,classes:classes,style:style,attr:attr,nest:nest=!1}=(0,object_js_1.isObjectStrict)(args)?args:{};if(!(0,string_js_1.isStringStrict)(tag))return[];const isSemanticParent=new Set(["ul","ol","dl","figure"]).has(tag),hasLayoutClasses=(0,string_js_1.isStringStrict)(layoutClasses),hasClasses=(0,string_js_1.isStringStrict)(classes),attrs=[],innerAttrs=[],isNested=nest&&hasLayoutClasses,isNestedSemanticParent=isSemanticParent&&isNested,innerClassesArr=[];isNested&&hasLayoutClasses&&innerClassesArr.push(layoutClasses);const outerClassesArr=[];isNested&&hasClasses&&outerClassesArr.push(classes),!isNested&&hasClasses&&outerClassesArr.push(classes),!isNested&&hasLayoutClasses&&outerClassesArr.push(layoutClasses),outerClassesArr.length&&attrs.push(`class="${outerClassesArr.join(" ")}"`),innerClassesArr.length&&innerAttrs.push(`class="${innerClassesArr.join(" ")}"`);const att=isNestedSemanticParent?innerAttrs:attrs;(0,string_js_1.isStringStrict)(attr)&&att.push(attr),(0,string_js_1.isStringStrict)(style)&&att.push(`style="${style}"`);let outerTag=tag,innerTag="";isNested&&(outerTag=isSemanticParent?"div":tag,innerTag=isSemanticParent?tag:"div");let start=`<${outerTag}${attrs.length?` ${attrs.join(" ")}`:""}>`,end=`</${outerTag}>`;return innerTag&&(start=`${start}<${innerTag}${innerAttrs.length?` ${innerAttrs.join(" ")}`:""}>`,end=`</${innerTag}>${end}`),[start,end]};exports.Container=Container;
|
package/cjs/render/render.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.setRenderFunctions=exports.renderHttpError=exports.renderNavigation=exports.renderLayout=exports.renderFunctions=exports.renderContent=exports.renderItem=exports.render=void 0;const action_js_1=require("../utils/action/action.js"),filter_js_1=require("../utils/filter/filter.js"),link_js_1=require("../utils/link/link.js"),string_js_1=require("../utils/string/string.js"),array_js_1=require("../utils/array/array.js"),object_js_1=require("../utils/object/object.js"),number_js_1=require("../utils/number/number.js"),function_js_1=require("../utils/function/function.js"),shortcode_js_1=require("../utils/shortcode/shortcode.js"),tag_js_1=require("../utils/tag/tag.js"),store_js_1=require("../store/store.js"),redirects_js_1=require("../redirects/redirects.js"),scriptStyle_js_1=require("../utils/scriptStyle/scriptStyle.js"),config_js_1=require("../config/config.js");let renderFunctions={};exports.renderFunctions=renderFunctions;let renderLayout=()=>"";exports.renderLayout=renderLayout;let renderHttpError=()=>"";exports.renderHttpError=renderHttpError;let renderNavigation=()=>{};exports.renderNavigation=renderNavigation;const setRenderFunctions=args=>{if(!(0,object_js_1.isObjectStrict)(args))return!1;const{functions:functions,layout:layout,navigation:navigation,httpError:httpError}=args;return!(!(0,object_js_1.isObjectStrict)(functions)||!(0,function_js_1.isFunction)(layout))&&(exports.renderFunctions=renderFunctions={...functions},exports.renderLayout=renderLayout=layout,(0,function_js_1.isFunction)(navigation)&&(exports.renderNavigation=renderNavigation=navigation),(0,function_js_1.isFunction)(httpError)&&(exports.renderHttpError=renderHttpError=httpError),!0)};exports.setRenderFunctions=setRenderFunctions;const getContentTemplate=(content,templates=[],named=!1)=>{if(!(0,array_js_1.isArrayStrict)(content))return{content:[],namedContent:{},templates:[]};const namedContent={},newContent=content.map(c=>(named&&(0,string_js_1.isString)(c.name)&&(namedContent[c.name]={...c}),(0,tag_js_1.tagExists)(c,"template")?(templates.push({...c}),{metadata:{tags:[{id:"templateBreak"}]}}):c));return{namedContent:namedContent,content:newContent,templates:structuredClone(templates)}},mapContentTemplate=(templates,content=[],namedContent={},named=!1)=>{if(!(0,array_js_1.isArrayStrict)(templates))return templates;const lastTemplateIndex=templates.length-1;return templates.forEach((t,i)=>{content[0]&&(0,tag_js_1.tagExists)(content[0],"templateBreak")&&content.length>=1&&content.shift();if((0,tag_js_1.tagExists)(t,"templateOptional")&&i===lastTemplateIndex&&!content.length)return void templates.pop();const isSlot=(0,tag_js_1.tagExists)(t,"templateSlot");let children=t.content;if((0,array_js_1.isArrayStrict)(children)&&!isSlot&&!named){let repeat;const newChildren=[...children],repeatIndex=children.findIndex(c=>{const isRepeat=(0,tag_js_1.tagExists)(c,"templateRepeat");return isRepeat&&(repeat=c),isRepeat});if(-1!==repeatIndex&&repeat){let breakIndex=content.findIndex(c=>(0,tag_js_1.tagExists)(c,"templateBreak"));breakIndex=-1===breakIndex?content.length:breakIndex;let insertIndex=repeatIndex;for(let j=insertIndex;j<breakIndex-1;j+=1)newChildren.splice(insertIndex,0,structuredClone(repeat)),insertIndex=j}children=newChildren}if(isSlot&&content.length>=1){let fill=null;return fill=named?namedContent[t.name]:content.shift(),void(fill&&(templates[i]=fill))}(0,array_js_1.isArray)(children)&&templates[i]&&(templates[i].content=mapContentTemplate(children,content,namedContent,named))}),templates},renderContent=async(args,_html={ref:""})=>{if(!(0,object_js_1.isObjectStrict)(args))return _html.ref;const{content:content=[],serverlessData:serverlessData,previewData:previewData,itemData:itemData,itemContains:itemContains=new Set,itemHeadings:itemHeadings=[],parents:parents=[],depth:depth=0}=args;let{headingsIndex:headingsIndex=-1}=args;if(!(0,array_js_1.isArrayStrict)(content))return _html.ref;for(const item of content){if(!(0,object_js_1.isObjectStrict)(item))continue;const props={...item},renderType=(0,string_js_1.isString)(props.renderType)?props.renderType:"",isRichText="richText"===renderType;let childrenArr,children=props.content;if("contentTemplate"===renderType){const isNamed=(0,tag_js_1.tagExists)(item,"templateNamed"),template=getContentTemplate((0,array_js_1.isArray)(props.content)?props.content:[],[],isNamed);children=mapContentTemplate(template.templates,template.content,template.namedContent,isNamed)}let childrenStr="";(0,array_js_1.isArrayStrict)(children)&&!isRichText&&(childrenArr=children),(0,string_js_1.isStringStrict)(children)&&!isRichText&&(childrenStr=children),"content"===renderType&&0===depth&&(headingsIndex=itemHeadings.push([])-1);let renderStart="",renderEnd="",filterType="",filterArgs={};const renderFunction=renderFunctions[renderType];if((0,function_js_1.isFunction)(renderFunction)){childrenArr&&(props.content=void 0);const renderArgs={args:props,parents:parents,itemData:itemData,itemContains:itemContains,serverlessData:serverlessData,previewData:previewData};childrenArr&&(renderArgs.children=childrenArr),"richText"===renderType&&(renderArgs.headings=itemHeadings[headingsIndex]);const renderOutput=await renderFunction(renderArgs);if((0,array_js_1.isArrayStrict)(renderOutput)){const[start,end]=renderOutput;(0,string_js_1.isString)(start)&&(renderStart=start),(0,string_js_1.isString)(end)&&(renderEnd=end)}(0,string_js_1.isString)(renderOutput)&&(renderStart=renderOutput,childrenArr=void 0),itemContains.add(renderType),filterType=renderType,filterArgs={...props,content:void 0}}const renderContentFilterArgs={renderType:filterType,args:filterArgs},[filterRenderStart,filterRenderEnd]=await(0,filter_js_1.applyFilters)("renderContent",[renderStart,renderEnd],renderContentFilterArgs,!0);if((0,string_js_1.isString)(filterRenderStart)&&(renderStart=filterRenderStart),(0,string_js_1.isString)(filterRenderEnd)&&(renderEnd=filterRenderEnd),_html.ref+=renderStart+childrenStr,childrenArr){const parentsCopy=[...parents];renderType&&parentsCopy.unshift({renderType:renderType,args:{...props,content:void 0,parents:void 0}}),await renderContent({content:childrenArr,serverlessData:serverlessData,previewData:previewData,parents:parentsCopy,itemData:itemData,itemContains:itemContains,itemHeadings:itemHeadings,headingsIndex:headingsIndex,depth:depth+1},_html)}_html.ref+=renderEnd}return _html.ref};exports.renderContent=renderContent;const renderItem=async(args,_contentType)=>{if(!(0,object_js_1.isObjectStrict)(args))return null;const{item:item,serverlessData:serverlessData,previewData:previewData}=args;if(!(0,object_js_1.isObjectStrict)(item))return null;const contentType=item.contentType;if(!(0,string_js_1.isStringStrict)(contentType))return null;if("taxonomy"===contentType&&!0!==item.isPage)return null;const id=item.id;if(!(0,string_js_1.isStringStrict)(id))return null;if(!(0,string_js_1.isStringStrict)(item.slug))return null;let serverlessRender=!1;const itemContains=new Set,itemHeadings=[];scriptStyle_js_1.scripts.deps.clear(),scriptStyle_js_1.scripts.item.clear(),scriptStyle_js_1.scripts.meta={},scriptStyle_js_1.styles.deps.clear(),scriptStyle_js_1.styles.item.clear();const renderItemStartArgs={id:id,itemData:{...item},contentType:contentType,itemContains:new Set,itemHeadings:[],serverlessData:serverlessData,previewData:previewData};await(0,action_js_1.doActions)("renderItemStart",renderItemStartArgs,!0);const title=item.title,meta={title:"",description:"",url:"",image:"",canonical:"",prev:"",next:"",index:!0,isIndex:!1,...item.meta};(0,string_js_1.isStringStrict)(item.metaTitle)&&(meta.title=item.metaTitle),(0,string_js_1.isStringStrict)(item.metaDescription)&&(meta.description=item.metaDescription),(0,string_js_1.isStringStrict)(item.metaImage?.url)&&(meta.image=item.metaImage.url),!(0,string_js_1.isStringStrict)(meta.title)&&(0,string_js_1.isStringStrict)(title)&&(meta.title=title);const slugArgs={id:id,contentType:contentType,slug:item.slug,returnParents:!0,itemData:item,page:0},s=(0,link_js_1.getSlug)(slugArgs,!0),slug=s.slug,slugIsHtml=slug.endsWith(".html"),permalink=(0,link_js_1.getPermalink)(slug,!slugIsHtml),parents=s.parents;meta.url=permalink,meta.canonical=permalink;const taxonomy="term"===contentType?item.taxonomy:"taxonomy"===contentType?item:null;item.baseUrl=permalink,item.baseType=(0,object_js_1.isObjectStrict)(taxonomy)&&(0,array_js_1.isArrayStrict)(taxonomy.contentTypes)?taxonomy.contentTypes:contentType;let formattedSlug="index"!==slug&&""!==slug?`/${slug}/`:"/";slugIsHtml&&(formattedSlug=slug);const cmsLocales=config_js_1.config.cms.locales,slugData=[id,(0,string_js_1.isStringStrict)(_contentType)?_contentType:contentType];if((0,string_js_1.isStringStrict)(item.locale)&&cmsLocales){const locale=item.locale;cmsLocales.includes(locale)&&locale!==cmsLocales[0]&&slugData.push(locale)}(0,store_js_1.setStoreItem)("slugs",slugData,slugIsHtml?`/${slug}`:formattedSlug);const index="index"===item.slug;let itemServerlessData;if(meta.isIndex=index,(0,object_js_1.isObjectStrict)(serverlessData)){if(!(serverlessData.path===formattedSlug&&null!=serverlessData.query))return{serverlessRender:!1};itemServerlessData=serverlessData}const itemData={...item};itemData.id=id,itemData.parents=parents,itemData.content=void 0;let contentOutput="";const contentData=item.content;(0,string_js_1.isStringStrict)(contentData)&&(contentOutput=contentData),(0,array_js_1.isArrayStrict)(contentData)&&(contentOutput=await renderContent({content:contentData,serverlessData:itemServerlessData,parents:[],itemData:itemData,itemContains:itemContains,itemHeadings:itemHeadings,previewData:previewData})),contentOutput=await(0,shortcode_js_1.doShortcodes)(contentOutput,itemData);const pag=itemData.pagination;if((0,object_js_1.isObjectStrict)(pag)){const{current:current=0,total:total=1,currentFilters:currentFilters,prevFilters:prevFilters,nextFilters:nextFilters}=pag;if(meta.canonicalParams=`${current>1?`?page=${current}`:""}${(0,string_js_1.isString)(currentFilters)?currentFilters:""}`,(0,string_js_1.isStringStrict)(pag.title)&&(meta.paginationTitle=pag.title),(0,number_js_1.isNumber)(pag.prev)&&pag.prev>=1){slugArgs.page=pag.prev;const p=(0,link_js_1.getSlug)(slugArgs,!0);meta.prev=`${(0,link_js_1.getPermalink)(p.slug,1===pag.prev)}${(0,string_js_1.isString)(prevFilters)?prevFilters:""}`}if((0,number_js_1.isNumber)(pag.next)&&pag.next>1&&pag.next<total){slugArgs.page=pag.next;const n=(0,link_js_1.getSlug)(slugArgs,!0);meta.next=`${(0,link_js_1.getPermalink)(n.slug,!1)}${(0,string_js_1.isString)(nextFilters)?nextFilters:""}`}serverlessRender=!0}let layoutOutput="";if((0,function_js_1.isFunction)(renderLayout)){const layoutArgs={id:id,meta:meta,contentType:contentType,content:contentOutput,slug:formattedSlug,itemContains:itemContains,itemHeadings:itemHeadings,itemData:itemData,serverlessData:serverlessData,previewData:previewData};layoutOutput=await renderLayout(layoutArgs)}const renderItemFilterArgs={id:id,contentType:contentType,slug:formattedSlug,output:layoutOutput,itemData:itemData,itemContains:itemContains,itemHeadings:itemHeadings,serverlessData:serverlessData,previewData:previewData};layoutOutput=await(0,filter_js_1.applyFilters)("renderItem",layoutOutput,renderItemFilterArgs,!0);const renderItemEndArgs={id:id,contentType:contentType,slug:formattedSlug,output:layoutOutput,itemData:itemData,itemContains:itemContains,itemHeadings:itemHeadings,serverlessData:serverlessData,previewData:previewData};return await(0,action_js_1.doActions)("renderItemEnd",renderItemEndArgs,!0),{serverlessRender:serverlessRender,itemData:itemData,data:{slug:formattedSlug,output:layoutOutput}}};exports.renderItem=renderItem;const render=async args=>{if(!(0,object_js_1.isObjectStrict)(args))return[];const{allData:allData,serverlessData:serverlessData,previewData:previewData}=args,isServerless=null!=serverlessData,isPreview=null!=previewData;if(scriptStyle_js_1.scripts.deps.clear(),scriptStyle_js_1.scripts.item.clear(),scriptStyle_js_1.scripts.meta={},scriptStyle_js_1.styles.deps.clear(),scriptStyle_js_1.styles.item.clear(),!(0,object_js_1.isObjectStrict)(allData))return[];const{redirect:redirect,content:content}=allData;await(0,action_js_1.doActions)("renderStart",args,!0);const data=[];isServerless||(0,store_js_1.setStoreData)(allData),(0,function_js_1.isFunction)(renderNavigation)&&await renderNavigation({navigations:(0,store_js_1.getStoreItem)("navigations"),items:(0,store_js_1.getStoreItem)("navigationItems")}),(0,redirects_js_1.setRedirects)(redirect);for(const[contentType,contentItems]of Object.entries(content))if((0,array_js_1.isArrayStrict)(contentItems))for(const contentItem of contentItems){const item=await renderItem({item:await(0,filter_js_1.applyFilters)("renderItemData",contentItem,{contentType:contentType},!0),serverlessData:serverlessData,previewData:previewData},contentType);if(!item)continue;const{serverlessRender:serverlessRender=!1,data:itemData}=item;itemData&&(data.push(itemData),serverlessRender&&!isServerless&&(0,store_js_1.setStoreItem)("serverless",["reload"],itemData.slug))}const[outputItem]=data,output=(isServerless||isPreview)&&outputItem?outputItem:data;return await(0,action_js_1.doActions)("renderEnd",{...args,data:output},!0),output};exports.render=render;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.setRenderFunctions=exports.renderHttpError=exports.renderNavigation=exports.renderLayout=exports.renderFunctions=exports.renderContent=exports.renderItem=exports.render=void 0;const action_js_1=require("../utils/action/action.js"),filter_js_1=require("../utils/filter/filter.js"),link_js_1=require("../utils/link/link.js"),string_js_1=require("../utils/string/string.js"),array_js_1=require("../utils/array/array.js"),object_js_1=require("../utils/object/object.js"),function_js_1=require("../utils/function/function.js"),shortcode_js_1=require("../utils/shortcode/shortcode.js"),tag_js_1=require("../utils/tag/tag.js"),store_js_1=require("../store/store.js"),redirects_js_1=require("../redirects/redirects.js"),scriptStyle_js_1=require("../utils/scriptStyle/scriptStyle.js"),config_js_1=require("../config/config.js");let renderFunctions={};exports.renderFunctions=renderFunctions;let renderLayout=()=>"";exports.renderLayout=renderLayout;let renderHttpError=()=>"";exports.renderHttpError=renderHttpError;let renderNavigation=()=>{};exports.renderNavigation=renderNavigation;const setRenderFunctions=args=>{if(!(0,object_js_1.isObjectStrict)(args))return!1;const{functions:functions,layout:layout,navigation:navigation,httpError:httpError}=args;return!(!(0,object_js_1.isObjectStrict)(functions)||!(0,function_js_1.isFunction)(layout))&&(exports.renderFunctions=renderFunctions={...functions},exports.renderLayout=renderLayout=layout,(0,function_js_1.isFunction)(navigation)&&(exports.renderNavigation=renderNavigation=navigation),(0,function_js_1.isFunction)(httpError)&&(exports.renderHttpError=renderHttpError=httpError),!0)};exports.setRenderFunctions=setRenderFunctions;const getContentTemplate=(content,templates=[],named=!1)=>{if(!(0,array_js_1.isArrayStrict)(content))return{content:[],namedContent:{},templates:[]};const namedContent={},newContent=content.map(c=>(named&&(0,string_js_1.isString)(c.name)&&(namedContent[c.name]={...c}),(0,tag_js_1.tagExists)(c,"template")?(templates.push({...c}),{metadata:{tags:[{id:"templateBreak"}]}}):c));return{namedContent:namedContent,content:newContent,templates:structuredClone(templates)}},mapContentTemplate=(templates,content=[],namedContent={},named=!1)=>{if(!(0,array_js_1.isArrayStrict)(templates))return templates;const lastTemplateIndex=templates.length-1;return templates.forEach((t,i)=>{content[0]&&(0,tag_js_1.tagExists)(content[0],"templateBreak")&&content.length>=1&&content.shift();if((0,tag_js_1.tagExists)(t,"templateOptional")&&i===lastTemplateIndex&&!content.length)return void templates.pop();const isSlot=(0,tag_js_1.tagExists)(t,"templateSlot");let children=t.content;if((0,array_js_1.isArrayStrict)(children)&&!isSlot&&!named){let repeat;const newChildren=[...children],repeatIndex=children.findIndex(c=>{const isRepeat=(0,tag_js_1.tagExists)(c,"templateRepeat");return isRepeat&&(repeat=c),isRepeat});if(-1!==repeatIndex&&repeat){let breakIndex=content.findIndex(c=>(0,tag_js_1.tagExists)(c,"templateBreak"));breakIndex=-1===breakIndex?content.length:breakIndex;let insertIndex=repeatIndex;for(let j=insertIndex;j<breakIndex-1;j+=1)newChildren.splice(insertIndex,0,structuredClone(repeat)),insertIndex=j}children=newChildren}if(isSlot&&content.length>=1){let fill=null;return fill=named?namedContent[t.name]:content.shift(),void(fill&&(templates[i]=fill))}(0,array_js_1.isArray)(children)&&templates[i]&&(templates[i].content=mapContentTemplate(children,content,namedContent,named))}),templates},renderContent=async(args,_html={ref:""})=>{if(!(0,object_js_1.isObjectStrict)(args))return _html.ref;const{content:content=[],serverlessData:serverlessData,previewData:previewData,itemData:itemData,itemContains:itemContains=new Set,itemHeadings:itemHeadings=[],parents:parents=[],depth:depth=0}=args;let{headingsIndex:headingsIndex=-1}=args;if(!(0,array_js_1.isArrayStrict)(content))return _html.ref;for(const item of content){if(!(0,object_js_1.isObjectStrict)(item))continue;const props={...item},renderType=(0,string_js_1.isString)(props.renderType)?props.renderType:"",isRichText="richText"===renderType;let childrenArr,children=props.content;if("contentTemplate"===renderType){const isNamed=(0,tag_js_1.tagExists)(item,"templateNamed"),template=getContentTemplate((0,array_js_1.isArray)(props.content)?props.content:[],[],isNamed);children=mapContentTemplate(template.templates,template.content,template.namedContent,isNamed)}let childrenStr="";(0,array_js_1.isArrayStrict)(children)&&!isRichText&&(childrenArr=children),(0,string_js_1.isStringStrict)(children)&&!isRichText&&(childrenStr=children),"content"===renderType&&0===depth&&(headingsIndex=itemHeadings.push([])-1);let renderStart="",renderEnd="",filterType="",filterArgs={};const renderFunction=renderFunctions[renderType];if((0,function_js_1.isFunction)(renderFunction)){childrenArr&&(props.content=void 0);const renderArgs={args:props,parents:parents,itemData:itemData,itemContains:itemContains,serverlessData:serverlessData,previewData:previewData};childrenArr&&(renderArgs.children=childrenArr),"richText"===renderType&&(renderArgs.headings=itemHeadings[headingsIndex]);const renderOutput=await renderFunction(renderArgs);if((0,array_js_1.isArrayStrict)(renderOutput)){const[start,end]=renderOutput;(0,string_js_1.isString)(start)&&(renderStart=start),(0,string_js_1.isString)(end)&&(renderEnd=end)}(0,string_js_1.isString)(renderOutput)&&(renderStart=renderOutput,childrenArr=void 0),itemContains.add(renderType),filterType=renderType,filterArgs={...props,content:void 0}}const renderContentFilterArgs={renderType:filterType,args:filterArgs},[filterRenderStart,filterRenderEnd]=await(0,filter_js_1.applyFilters)("renderContent",[renderStart,renderEnd],renderContentFilterArgs,!0);if((0,string_js_1.isString)(filterRenderStart)&&(renderStart=filterRenderStart),(0,string_js_1.isString)(filterRenderEnd)&&(renderEnd=filterRenderEnd),_html.ref+=renderStart+childrenStr,childrenArr){const parentsCopy=[...parents];renderType&&parentsCopy.unshift({renderType:renderType,args:{...props,content:void 0,parents:void 0}}),await renderContent({content:childrenArr,serverlessData:serverlessData,previewData:previewData,parents:parentsCopy,itemData:itemData,itemContains:itemContains,itemHeadings:itemHeadings,headingsIndex:headingsIndex,depth:depth+1},_html)}_html.ref+=renderEnd}return _html.ref};exports.renderContent=renderContent;const renderItem=async(args,_contentType)=>{if(!(0,object_js_1.isObjectStrict)(args))return null;const{item:item,serverlessData:serverlessData,previewData:previewData}=args;if(!(0,object_js_1.isObjectStrict)(item))return null;const contentType=item.contentType;if(!(0,string_js_1.isStringStrict)(contentType))return null;if("taxonomy"===contentType&&!0!==item.isPage)return null;const id=item.id;if(!(0,string_js_1.isStringStrict)(id))return null;if(!(0,string_js_1.isStringStrict)(item.slug))return null;let serverlessRender=!1;const itemContains=new Set,itemHeadings=[];scriptStyle_js_1.scripts.deps.clear(),scriptStyle_js_1.scripts.item.clear(),scriptStyle_js_1.scripts.meta={},scriptStyle_js_1.styles.deps.clear(),scriptStyle_js_1.styles.item.clear();const renderItemStartArgs={id:id,itemData:{...item},contentType:contentType,itemContains:new Set,itemHeadings:[],serverlessData:serverlessData,previewData:previewData};await(0,action_js_1.doActions)("renderItemStart",renderItemStartArgs,!0);const title=item.title,meta={title:"",description:"",url:"",image:"",canonical:"",prev:"",next:"",index:!0,isIndex:!1,...item.meta};(0,string_js_1.isStringStrict)(item.metaTitle)&&(meta.title=item.metaTitle),(0,string_js_1.isStringStrict)(item.metaDescription)&&(meta.description=item.metaDescription),(0,string_js_1.isStringStrict)(item.metaImage?.url)&&(meta.image=item.metaImage.url),!(0,string_js_1.isStringStrict)(meta.title)&&(0,string_js_1.isStringStrict)(title)&&(meta.title=title);const slugArgs={id:id,contentType:contentType,slug:item.slug,returnParents:!0,itemData:item,page:0},s=(0,link_js_1.getSlug)(slugArgs,!0),slug=s.slug,slugIsHtml=slug.endsWith(".html"),permalink=(0,link_js_1.getPermalink)(slug,!slugIsHtml),parents=s.parents;meta.url=permalink,meta.canonical=permalink;const taxonomy="term"===contentType?item.taxonomy:"taxonomy"===contentType?item:null;item.baseUrl=permalink,item.baseType=(0,object_js_1.isObjectStrict)(taxonomy)&&(0,array_js_1.isArrayStrict)(taxonomy.contentTypes)?taxonomy.contentTypes:contentType;let formattedSlug="index"!==slug&&""!==slug?`/${slug}/`:"/";slugIsHtml&&(formattedSlug=slug);const cmsLocales=config_js_1.config.cms.locales,slugData=[id,(0,string_js_1.isStringStrict)(_contentType)?_contentType:contentType];if((0,string_js_1.isStringStrict)(item.locale)&&cmsLocales){const locale=item.locale;cmsLocales.includes(locale)&&locale!==cmsLocales[0]&&slugData.push(locale)}(0,store_js_1.setStoreItem)("slugs",slugData,slugIsHtml?`/${slug}`:formattedSlug);const index="index"===item.slug;let itemServerlessData;if(meta.isIndex=index,(0,object_js_1.isObjectStrict)(serverlessData)){if(!(serverlessData.path===formattedSlug&&null!=serverlessData.query))return{serverlessRender:!1};itemServerlessData=serverlessData}const itemData={...item};itemData.id=id,itemData.parents=parents,itemData.content=void 0;let contentOutput="";const contentData=item.content;(0,string_js_1.isStringStrict)(contentData)&&(contentOutput=contentData),(0,array_js_1.isArrayStrict)(contentData)&&(contentOutput=await renderContent({content:contentData,serverlessData:itemServerlessData,parents:[],itemData:itemData,itemContains:itemContains,itemHeadings:itemHeadings,previewData:previewData})),contentOutput=await(0,shortcode_js_1.doShortcodes)(contentOutput,itemData);const pag=itemData.pagination;if((0,object_js_1.isObjectStrict)(pag)){const{currentParams:currentParams,prevParams:prevParams,nextParams:nextParams}=pag,currentParamsStr=new URLSearchParams(currentParams).toString();if(currentParamsStr&&(meta.canonicalParams=`?${currentParamsStr}`),(0,string_js_1.isStringStrict)(pag.title)&&(meta.paginationTitle=pag.title),pag.prev){const prevSlugArgs={...slugArgs,params:prevParams},p=(0,link_js_1.getSlug)(prevSlugArgs,!0);meta.prev=(0,link_js_1.getPermalink)(p.slug,1===pag.prev&&!prevParams)}if(pag.next){const nextSlugArgs={...slugArgs,params:nextParams},n=(0,link_js_1.getSlug)(nextSlugArgs,!0);meta.next=(0,link_js_1.getPermalink)(n.slug,!1)}serverlessRender=!0}let layoutOutput="";if((0,function_js_1.isFunction)(renderLayout)){const layoutArgs={id:id,meta:meta,contentType:contentType,content:contentOutput,slug:formattedSlug,itemContains:itemContains,itemHeadings:itemHeadings,itemData:itemData,serverlessData:serverlessData,previewData:previewData};layoutOutput=await renderLayout(layoutArgs)}const renderItemFilterArgs={id:id,contentType:contentType,slug:formattedSlug,output:layoutOutput,itemData:itemData,itemContains:itemContains,itemHeadings:itemHeadings,serverlessData:serverlessData,previewData:previewData};layoutOutput=await(0,filter_js_1.applyFilters)("renderItem",layoutOutput,renderItemFilterArgs,!0);const renderItemEndArgs={id:id,contentType:contentType,slug:formattedSlug,output:layoutOutput,itemData:itemData,itemContains:itemContains,itemHeadings:itemHeadings,serverlessData:serverlessData,previewData:previewData};return await(0,action_js_1.doActions)("renderItemEnd",renderItemEndArgs,!0),{serverlessRender:serverlessRender,itemData:itemData,data:{slug:formattedSlug,output:layoutOutput}}};exports.renderItem=renderItem;const render=async args=>{if(!(0,object_js_1.isObjectStrict)(args))return[];const{allData:allData,serverlessData:serverlessData,previewData:previewData}=args,isServerless=null!=serverlessData,isPreview=null!=previewData;if(scriptStyle_js_1.scripts.deps.clear(),scriptStyle_js_1.scripts.item.clear(),scriptStyle_js_1.scripts.meta={},scriptStyle_js_1.styles.deps.clear(),scriptStyle_js_1.styles.item.clear(),!(0,object_js_1.isObjectStrict)(allData))return[];const{redirect:redirect,content:content}=allData;await(0,action_js_1.doActions)("renderStart",args,!0);const data=[];isServerless||(0,store_js_1.setStoreData)(allData),(0,function_js_1.isFunction)(renderNavigation)&&await renderNavigation({navigations:(0,store_js_1.getStoreItem)("navigations"),items:(0,store_js_1.getStoreItem)("navigationItems")}),(0,redirects_js_1.setRedirects)(redirect);for(const[contentType,contentItems]of Object.entries(content))if((0,array_js_1.isArrayStrict)(contentItems))for(const contentItem of contentItems){const item=await renderItem({item:await(0,filter_js_1.applyFilters)("renderItemData",contentItem,{contentType:contentType},!0),serverlessData:serverlessData,previewData:previewData},contentType);if(!item)continue;const{serverlessRender:serverlessRender=!1,data:itemData}=item;itemData&&(data.push(itemData),serverlessRender&&!isServerless&&(0,store_js_1.setStoreItem)("serverless",["reload"],itemData.slug))}const[outputItem]=data,output=(isServerless||isPreview)&&outputItem?outputItem:data;return await(0,action_js_1.doActions)("renderEnd",{...args,data:output},!0),output};exports.render=render;
|
|
@@ -4,7 +4,7 @@ import type { getAllContentfulData } from '../contentful/contentfulData.js';
|
|
|
4
4
|
import type { getAllWordPressData } from '../wordpress/wordpressData.js';
|
|
5
5
|
declare let serverlessActions: ServerlessActions;
|
|
6
6
|
declare const serverlessPreview: (request: Request) => RenderPreviewData | undefined;
|
|
7
|
-
declare const serverlessReload: (request: Request) => RenderServerlessData | undefined;
|
|
7
|
+
declare const serverlessReload: (request: Request, allowedParams?: string[]) => RenderServerlessData | undefined;
|
|
8
8
|
declare const serverlessRender: (getData: typeof getAllContentfulData | typeof getAllWordPressData, serverlessData?: RenderServerlessData, previewData?: RenderPreviewData) => Promise<Response>;
|
|
9
9
|
declare const setServerless: (actions?: ServerlessActions) => void;
|
|
10
10
|
export { serverlessActions, serverlessPreview, serverlessReload, serverlessRender, setServerless };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.setServerless=exports.serverlessRender=exports.serverlessReload=exports.serverlessPreview=exports.serverlessActions=void 0;const string_js_1=require("../utils/string/string.js"),object_js_1=require("../utils/object/object.js"),function_js_1=require("../utils/function/function.js"),render_js_1=require("../render/render.js"),minify_js_1=require("../utils/minify/minify.js"),print_js_1=require("../utils/print/print.js");let serverlessActions={};exports.serverlessActions=serverlessActions;const serverlessPreview=request=>{const{method:method,url:url}=request;if("GET"!==method)return;const{searchParams:searchParams}=new URL(url),contentType=searchParams.get("content_type"),locale=searchParams.get("locale"),id=searchParams.get("preview");if(!(0,string_js_1.isStringStrict)(id)||!(0,string_js_1.isStringStrict)(contentType))return;const previewData={id:id,contentType:contentType};return(0,string_js_1.isStringStrict)(locale)&&(previewData.locale=locale),previewData};exports.serverlessPreview=serverlessPreview;const serverlessReload=request=>{const{method:method,url:url}=request;if("GET"!==method)return;const{searchParams:searchParams,pathname:pathname}=new URL(url),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.setServerless=exports.serverlessRender=exports.serverlessReload=exports.serverlessPreview=exports.serverlessActions=void 0;const string_js_1=require("../utils/string/string.js"),object_js_1=require("../utils/object/object.js"),function_js_1=require("../utils/function/function.js"),render_js_1=require("../render/render.js"),minify_js_1=require("../utils/minify/minify.js"),print_js_1=require("../utils/print/print.js");let serverlessActions={};exports.serverlessActions=serverlessActions;const serverlessPreview=request=>{const{method:method,url:url}=request;if("GET"!==method)return;const{searchParams:searchParams}=new URL(url),contentType=searchParams.get("content_type"),locale=searchParams.get("locale"),id=searchParams.get("preview");if(!(0,string_js_1.isStringStrict)(id)||!(0,string_js_1.isStringStrict)(contentType))return;const previewData={id:id,contentType:contentType};return(0,string_js_1.isStringStrict)(locale)&&(previewData.locale=locale),previewData};exports.serverlessPreview=serverlessPreview;const serverlessReload=(request,allowedParams=["page","filters"])=>{const{method:method,url:url}=request;if("GET"!==method)return;const{searchParams:searchParams,pathname:pathname}=new URL(url),path=pathname,query={};let hasParams=!1;for(const param of allowedParams){const value=searchParams.get(param);(0,string_js_1.isStringStrict)(value)&&(query[param]=value,hasParams=!0)}return hasParams?{query:query,path:path}:void 0};exports.serverlessReload=serverlessReload;const serverlessRender=async(getData,serverlessData,previewData)=>{try{const data=await(0,render_js_1.render)({serverlessData:serverlessData,previewData:previewData,allData:await getData({serverlessData:serverlessData,previewData:previewData})});let html="",status=200;(0,object_js_1.isObjectStrict)(data)&&(html=data.output);const isEmpty=""===html;return isEmpty&&(status=404),isEmpty&&(0,function_js_1.isFunction)(render_js_1.renderHttpError)&&(html=await(0,render_js_1.renderHttpError)({code:status})),new Response((0,minify_js_1.minify)(html),{status:status,headers:{"Content-Type":"text/html;charset=UTF-8"}})}catch(error){(0,print_js_1.print)("[FRM] Error on serverless render",error);const status=500,html=await(0,render_js_1.renderHttpError)({code:status});return new Response(html,{status:status,headers:{"Content-Type":"text/html;charset=UTF-8"}})}};exports.serverlessRender=serverlessRender;const setServerless=actions=>{(0,object_js_1.isObjectStrict)(actions)&&(exports.serverlessActions=serverlessActions={...actions})};exports.setServerless=setServerless;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isHeading=void 0;const isHeading=tag=>["h1","h2","h3","h4","h5","h6"].
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isHeading=void 0;const isHeading=tag=>new Set(["h1","h2","h3","h4","h5","h6"]).has(tag);exports.isHeading=isHeading;
|
package/cjs/utils/image/image.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getImageMaxWidth=exports.getImageClosestSize=exports.getImage=void 0;const config_js_1=require("../../config/config.js"),string_js_1=require("../string/string.js"),array_js_1=require("../array/array.js"),number_js_1=require("../number/number.js"),object_js_1=require("../object/object.js"),dataSource_js_1=require("../dataSource/dataSource.js"),getImageUrl=(url,format,quality,width,height,params)=>{const urlObj=new URL(url);return Object.entries(params).forEach(([key,value])=>{let val=value;"%format"===val&&(val=format),"%quality"===val&&(val=`${quality}`),"%width"===val&&(val=`${width}`),"%height"===val&&(val=`${height}`),urlObj.searchParams.set(key,val)}),urlObj.toString()},getImage=(args,returnDetails=!1)=>{const{data:data,classes:classes,attr:attr,alt:imageAlt="inherit",width:width="auto",height:height="auto",lazy:lazy=!0,picture:picture=!1,quality:quality=75,source:source=config_js_1.config.source,maxWidth:maxWidth=1200,viewportWidth:viewportWidth=100,format:format="webp",params:params={fm:"%format",q:"%quality",w:"%width",h:"%height"}}=(0,object_js_1.isObjectStrict)(args)?args:{},fallback=returnDetails?{output:"",aspectRatio:0,naturalWidth:0,naturalHeight:0,src:"",srcFallback:"",srcset:[],sizes:""}:"";if(!(0,object_js_1.isObjectStrict)(data))return fallback;const{path:path="",alt:dataAlt="",width:naturalWidth=1,height:naturalHeight=1,format:naturalFormat="jpg",sizes:dataSizes}=data;let{url:url=config_js_1.config.image.remoteUrl}=data,alt="inherit"===imageAlt?dataAlt:imageAlt;(0,string_js_1.isStringStrict)(alt)||(alt="");const isLocal="local"===source,isRemote=dataSource_js_1.dataSource.isContentful(source)||"remote"===source,isWordpress=dataSource_js_1.dataSource.isWordPress(source);if(isLocal){if(!(0,string_js_1.isStringStrict)(path))return fallback;url=`${config_js_1.config.image.localUrl}/${path}`}const aspectRatio=naturalHeight/naturalWidth,aspectRatioReverse=naturalWidth/naturalHeight;let w=naturalWidth,h=naturalHeight;if((0,number_js_1.isNumber)(width)&&(w=width,h=(0,string_js_1.isString)(height)?w*aspectRatio:height),(0,number_js_1.isNumber)(height)&&(h=height,w=(0,string_js_1.isString)(width)?h*aspectRatioReverse:width),w>maxWidth&&(w=Math.round(maxWidth),h=Math.round(w*aspectRatio)),isWordpress&&dataSizes&&!dataSizes[w]){const isNatural=w===naturalWidth;isNatural||(w=getImageClosestSize(w,Object.keys(dataSizes).map(s=>parseInt(s,10))),h=Math.round(w*aspectRatio)),isNatural&&(dataSizes[w]=url)}let src=url,srcFallback=url;isLocal&&(src=`${url}.${format}`,srcFallback=`${url}.${naturalFormat}`),isRemote&&(src=getImageUrl(url,format,quality,w,h,params),srcFallback=getImageUrl(url,naturalFormat,quality,w,h,params));const sizes=`(min-width: ${w/16}rem) ${w/16}rem, ${viewportWidth}vw`,srcsetFallback=[];let srcset=[...config_js_1.config.image.sizes];srcset.includes(w)||srcset.push(w),srcset=srcset.filter(s=>s<=w),srcset.sort((a,b)=>a-b);const srcsetSource=[];srcset.forEach(s=>{if(isLocal){const base=`${url}${s!==naturalWidth?`@${s}`:""}`;srcsetFallback.push(`${base}.${naturalFormat} ${s}w`),srcsetSource.push(`${base}.${format} ${s}w`)}if(isRemote){const sizeHeight=Math.round(s*aspectRatio);srcsetFallback.push(getImageUrl(url,naturalFormat,quality,s,sizeHeight,params)+` ${s}w`),srcsetSource.push(getImageUrl(url,format,quality,s,sizeHeight,params)+` ${s}w`)}if(isWordpress){const sizeUrl=dataSizes?.[s];(0,string_js_1.isStringStrict)(sizeUrl)&&srcsetSource.push(`${sizeUrl} ${s}w`)}});let sourceOutput="";picture&&(sourceOutput=`<source srcset="${srcsetSource.join(", ")}" sizes="${sizes}" type="image/${format}">`);let eagerHackOutput="";lazy||(eagerHackOutput=`\n <img\n alt=""\n role="presentation"\n aria-hidden="true"\n src="data:image/svg+xml;charset=utf-8,%3Csvg height='${h}' width='${w}' xmlns='http://www.w3.org/2000/svg' version='1.1'%3E%3C/svg%3E" style="pointerEvents: none; position: absolute; top: 0; left: 0; width: 100%; height: 100%"\n >\n `);const output=`\n ${eagerHackOutput}\n ${sourceOutput}\n <img\n ${(0,string_js_1.isStringStrict)(classes)?` class="${classes}"`:""}\n alt="${alt}"\n src="${picture?srcFallback:src}"\n srcset="${picture?srcsetFallback.join(", "):srcsetSource.join(", ")}"\n sizes="${sizes}"\n width="${w}"\n height="${h}"\n ${(0,string_js_1.isStringStrict)(attr)?` ${attr}`:""}\n ${lazy?' loading="lazy" decoding="async"':' loading="eager"'}\n >\n `;return returnDetails?{output:output,aspectRatio:aspectRatio,naturalWidth:naturalWidth,naturalHeight:naturalHeight,src:src,srcFallback:srcFallback,srcset:srcsetSource,sizes:sizes}:output};exports.getImage=getImage;const getImageClosestSize=(size,sizes=[])=>(sizes.length||(sizes=config_js_1.config.image.sizes),[...sizes].reduce((prev,curr)=>Math.abs(curr-size)<=Math.abs(prev-size)?curr:prev));exports.getImageClosestSize=getImageClosestSize;const getImageMaxWidth=args=>{if(!(0,object_js_1.isObjectStrict)(args))return 0;const{parents:parents,widths:widths,maxWidths:maxWidths,breakpoints:breakpoints,source:source=config_js_1.config.source}=args;if(!((0,array_js_1.isArrayStrict)(parents)&&(0,object_js_1.isObjectStrict)(widths)&&(0,object_js_1.isObjectStrict)(maxWidths)&&(0,array_js_1.isArrayStrict)(breakpoints)))return 0;const w=[];let m=0;if(parents.forEach(parent=>{if(!(0,object_js_1.isObjectStrict)(parent))return;const{renderType:renderType,args:args}=parent;if((0,object_js_1.isObjectStrict)(args)){if("column"===renderType){const{width:width="Default",widthSmall:widthSmall="Default",widthMedium:widthMedium="Default",widthLarge:widthLarge="Default"}=args;w[0]=(0,number_js_1.isNumber)(widths[width])&&widths[width]>0?widths[width]:1,w[1]=(0,number_js_1.isNumber)(widths[widthSmall])&&widths[widthSmall]>0?widths[widthSmall]:w[0],w[2]=(0,number_js_1.isNumber)(widths[widthMedium])&&widths[widthMedium]>0?widths[widthMedium]:w[1],w[3]=(0,number_js_1.isNumber)(widths[widthLarge])&&widths[widthLarge]>0?widths[widthLarge]:w[2]}if("container"===renderType){const{maxWidth:maxWidth="Default"}=args;m=(0,number_js_1.isNumber)(maxWidths[maxWidth])?maxWidths[maxWidth]:0}}}),!w.length&&0===m)return 0;const bk=[...breakpoints],calc=[];let lastW=1;bk.forEach((b,i)=>{const wd=w[i];(0,number_js_1.isNumber)(wd)&&(lastW=wd,m>0&&b>m?calc.push(wd*m):calc.push(wd*b))}),m>0&&calc.push(lastW*m);const res=2*Math.max(...calc);return"local"===source?getImageClosestSize(res):res};exports.getImageMaxWidth=getImageMaxWidth;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getImageMaxWidth=exports.getImageClosestSize=exports.getImage=void 0;const config_js_1=require("../../config/config.js"),string_js_1=require("../string/string.js"),array_js_1=require("../array/array.js"),number_js_1=require("../number/number.js"),object_js_1=require("../object/object.js"),dataSource_js_1=require("../dataSource/dataSource.js"),getImageUrl=(url,format,quality,width,height,params)=>{const urlObj=new URL(url);return Object.entries(params).forEach(([key,value])=>{let val=value;"%format"===val&&(val=format),"%quality"===val&&(val=`${quality}`),"%width"===val&&(val=`${width}`),"%height"===val&&(val=`${height}`),urlObj.searchParams.set(key,val)}),urlObj.toString()},getImage=(args,returnDetails=!1)=>{const{data:data,classes:classes,attr:attr,alt:imageAlt="inherit",width:width="auto",height:height="auto",lazy:lazy=!0,picture:picture=!1,quality:quality=75,source:source=config_js_1.config.source,maxWidth:maxWidth=1200,viewportWidth:viewportWidth=100,format:format="webp",params:params={fm:"%format",q:"%quality",w:"%width",h:"%height"}}=(0,object_js_1.isObjectStrict)(args)?args:{},fallback=returnDetails?{output:"",aspectRatio:0,naturalWidth:0,naturalHeight:0,src:"",srcFallback:"",srcset:[],sizes:""}:"";if(!(0,object_js_1.isObjectStrict)(data))return fallback;const{path:path="",alt:dataAlt="",width:naturalWidth=1,height:naturalHeight=1,format:naturalFormat="jpg",sizes:dataSizes}=data;let{url:url=config_js_1.config.image.remoteUrl}=data,alt="inherit"===imageAlt?dataAlt:imageAlt;(0,string_js_1.isStringStrict)(alt)||(alt="");const isLocal="local"===source,isRemote=dataSource_js_1.dataSource.isContentful(source)||"remote"===source,isWordpress=dataSource_js_1.dataSource.isWordPress(source);if(isLocal){if(!(0,string_js_1.isStringStrict)(path))return fallback;url=`${config_js_1.config.image.localUrl}/${path}`}const aspectRatio=naturalHeight/naturalWidth,aspectRatioReverse=naturalWidth/naturalHeight;let w=naturalWidth,h=naturalHeight;if((0,number_js_1.isNumber)(width)&&(w=width,h=(0,string_js_1.isString)(height)?w*aspectRatio:height),(0,number_js_1.isNumber)(height)&&(h=height,w=(0,string_js_1.isString)(width)?h*aspectRatioReverse:width),w>maxWidth&&(w=Math.round(maxWidth),h=Math.round(w*aspectRatio)),isWordpress&&dataSizes&&!dataSizes[w]){const isNatural=w===naturalWidth;isNatural||(w=getImageClosestSize(w,Object.keys(dataSizes).map(s=>parseInt(s,10))),h=Math.round(w*aspectRatio)),isNatural&&(dataSizes[w]=url)}let src=url,srcFallback=url;isLocal&&(src=`${url}.${format}`,srcFallback=`${url}.${naturalFormat}`),isRemote&&(src=getImageUrl(url,format,quality,w,h,params),srcFallback=getImageUrl(url,naturalFormat,quality,w,h,params));const sizes=`(min-width: ${w/16}rem) ${w/16}rem, ${viewportWidth}vw`,srcsetFallback=[];let srcset=[...config_js_1.config.image.sizes];srcset.includes(w)||srcset.push(w),srcset=srcset.filter(s=>s<=w),srcset.sort((a,b)=>a-b);const srcsetSource=[];srcset.forEach(s=>{if(isLocal){const base=`${url}${s!==naturalWidth?`@${s}`:""}`;srcsetFallback.push(`${base}.${naturalFormat} ${s}w`),srcsetSource.push(`${base}.${format} ${s}w`)}if(isRemote){const sizeHeight=Math.round(s*aspectRatio);srcsetFallback.push(getImageUrl(url,naturalFormat,quality,s,sizeHeight,params)+` ${s}w`),srcsetSource.push(getImageUrl(url,format,quality,s,sizeHeight,params)+` ${s}w`)}if(isWordpress){const sizeUrl=dataSizes?.[s];(0,string_js_1.isStringStrict)(sizeUrl)&&srcsetSource.push(`${sizeUrl} ${s}w`)}});let sourceOutput="";picture&&(sourceOutput=`<source srcset="${srcsetSource.join(", ")}" sizes="${sizes}" type="image/${format}">`);let eagerHackOutput="";lazy||(eagerHackOutput=`\n <img\n alt=""\n role="presentation"\n aria-hidden="true"\n src="data:image/svg+xml;charset=utf-8,%3Csvg height='${h}' width='${w}' xmlns='http://www.w3.org/2000/svg' version='1.1'%3E%3C/svg%3E" style="pointerEvents: none; position: absolute; top: 0; left: 0; width: 100%; height: 100%"\n >\n `);const output=`\n ${eagerHackOutput}\n ${sourceOutput}\n <img\n ${(0,string_js_1.isStringStrict)(classes)?` class="${classes}"`:""}\n alt="${alt}"\n src="${picture?srcFallback:src}"\n srcset="${picture?srcsetFallback.join(", "):srcsetSource.join(", ")}"\n sizes="${sizes}"\n width="${w}"\n height="${h}"\n ${(0,string_js_1.isStringStrict)(attr)?` ${attr}`:""}\n ${lazy?' loading="lazy" decoding="async"':' loading="eager" fetchpriority="high"'}\n >\n `;return returnDetails?{output:output,aspectRatio:aspectRatio,naturalWidth:naturalWidth,naturalHeight:naturalHeight,src:src,srcFallback:srcFallback,srcset:srcsetSource,sizes:sizes}:output};exports.getImage=getImage;const getImageClosestSize=(size,sizes=[])=>(sizes.length||(sizes=config_js_1.config.image.sizes),[...sizes].reduce((prev,curr)=>Math.abs(curr-size)<=Math.abs(prev-size)?curr:prev));exports.getImageClosestSize=getImageClosestSize;const getImageMaxWidth=args=>{if(!(0,object_js_1.isObjectStrict)(args))return 0;const{parents:parents,widths:widths,maxWidths:maxWidths,breakpoints:breakpoints,source:source=config_js_1.config.source}=args;if(!((0,array_js_1.isArrayStrict)(parents)&&(0,object_js_1.isObjectStrict)(widths)&&(0,object_js_1.isObjectStrict)(maxWidths)&&(0,array_js_1.isArrayStrict)(breakpoints)))return 0;const w=[];let m=0;if(parents.forEach(parent=>{if(!(0,object_js_1.isObjectStrict)(parent))return;const{renderType:renderType,args:args}=parent;if((0,object_js_1.isObjectStrict)(args)){if("column"===renderType){const{width:width="Default",widthSmall:widthSmall="Default",widthMedium:widthMedium="Default",widthLarge:widthLarge="Default"}=args;w[0]=(0,number_js_1.isNumber)(widths[width])&&widths[width]>0?widths[width]:1,w[1]=(0,number_js_1.isNumber)(widths[widthSmall])&&widths[widthSmall]>0?widths[widthSmall]:w[0],w[2]=(0,number_js_1.isNumber)(widths[widthMedium])&&widths[widthMedium]>0?widths[widthMedium]:w[1],w[3]=(0,number_js_1.isNumber)(widths[widthLarge])&&widths[widthLarge]>0?widths[widthLarge]:w[2]}if("container"===renderType){const{maxWidth:maxWidth="Default"}=args;m=(0,number_js_1.isNumber)(maxWidths[maxWidth])?maxWidths[maxWidth]:0}}}),!w.length&&0===m)return 0;const bk=[...breakpoints],calc=[];let lastW=1;bk.forEach((b,i)=>{const wd=w[i];(0,number_js_1.isNumber)(wd)&&(lastW=wd,m>0&&b>m?calc.push(wd*m):calc.push(wd*b))}),m>0&&calc.push(lastW*m);const res=2*Math.max(...calc);return"local"===source?getImageClosestSize(res):res};exports.getImageMaxWidth=getImageMaxWidth;
|
package/cjs/utils/link/link.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getPermalink=exports.getLink=exports.getSlug=void 0;const
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getPermalink=exports.getLink=exports.getSlug=void 0;const object_js_1=require("../object/object.js"),string_js_1=require("../string/string.js"),filter_js_1=require("../filter/filter.js"),archive_js_1=require("../archive/archive.js"),store_js_1=require("../../store/store.js"),config_js_1=require("../../config/config.js"),getParentSlug=(id,contentType,parents,taxonomy,locale)=>{const storeParents=(0,store_js_1.getStoreItem)("parents"),parent=storeParents[contentType]?.[id];if(parent){const[parentId,parentSlug,parentTitle]=parent,newParent={id:parentId,slug:parentSlug,title:parentTitle,contentType:contentType,locale:locale};"term"===contentType&&(newParent.taxonomy=taxonomy),parents.unshift(newParent),getParentSlug(parentId,contentType,parents,taxonomy,locale)}},getSlug=(args,returnParents=!1)=>{const{id:id="",slug:initSlug="",contentType:contentType="page",itemData:itemData,params:params}=(0,object_js_1.isObjectStrict)(args)?args:{};let slug=initSlug,typeSlug="",taxSlug="",parentSlugs="",parts=[];const{hierarchicalTypes:hierarchicalTypes,typeInSlug:typeInSlug,localeInSlug:localeInSlug,taxonomyInSlug:taxonomyInSlug}=config_js_1.config,itemLocale=(0,string_js_1.isStringStrict)(itemData?.locale)?itemData.locale:void 0,hasItemLocale=null!=itemLocale,locale=hasItemLocale?localeInSlug[itemLocale]:"",hasLocale=(0,string_js_1.isStringStrict)(locale),taxonomyInfo=(0,archive_js_1.getTaxonomyInfo)(contentType,itemData),isTaxonomy="taxonomy"===contentType,isTerm="term"===contentType,{id:taxonomyId,slug:taxonomySlug,primaryContentType:taxonomyType,usePrimaryContentTypeSlug:taxonomyUseTypeSlug,isPage:taxonomyIsPage}=taxonomyInfo,archiveType=(0,string_js_1.isStringStrict)(taxonomyType)?taxonomyType:contentType,archiveInfo=(0,archive_js_1.getArchiveInfo)(archiveType,itemLocale),{id:archiveId,slug:archiveSlug,title:archiveTitle,contentType:archiveContentType}=archiveInfo,archiveParents=[];if(archiveSlug&&archiveId&&(typeSlug=archiveSlug,archiveParents.push({contentType:archiveContentType,title:archiveTitle,slug:archiveSlug,id:archiveId,locale:itemLocale})),!isTaxonomy&&!isTerm||taxonomyUseTypeSlug||(typeSlug=""),isTerm&&taxonomySlug&&taxonomyId){taxSlug=taxonomySlug;const taxInSlug=taxonomyInSlug[taxSlug];if((0,string_js_1.isString)(taxInSlug)&&(taxSlug=taxInSlug),(0,object_js_1.isObjectStrict)(taxInSlug)&&hasItemLocale){const localizedTaxSlug=taxInSlug[itemLocale];(0,string_js_1.isString)(localizedTaxSlug)&&(taxSlug=localizedTaxSlug)}taxonomyIsPage&&archiveParents.push({contentType:"taxonomy",locale:itemLocale,...taxonomyInfo})}const contentTypeInSlug=typeInSlug[archiveType];if((0,string_js_1.isString)(contentTypeInSlug)&&(typeSlug=contentTypeInSlug),(0,object_js_1.isObjectStrict)(contentTypeInSlug)&&hasItemLocale){const localizedTypeSlug=contentTypeInSlug[itemLocale];(0,string_js_1.isString)(localizedTypeSlug)&&(typeSlug=localizedTypeSlug)}const isHierarchical=hierarchicalTypes.includes(contentType);let parents=[],hasParents=!1;getParentSlug(isHierarchical?id:archiveId,isHierarchical?contentType:archiveContentType,parents,taxonomyInfo,itemLocale),parents.length&&(parentSlugs=parents.map(({slug:slug})=>slug).join("/"),hasParents=!0),parents=isHierarchical?[...archiveParents,...parents]:[...parents,...archiveParents];const isIndex="index"===slug;if(isIndex&&!returnParents&&(slug=""),hasLocale&&parts.push(locale),hasParents&&!isHierarchical&&parts.push(parentSlugs),typeSlug&&parts.push(typeSlug),taxSlug&&parts.push(taxSlug),hasParents&&isHierarchical&&parts.push(parentSlugs),(0,string_js_1.isStringStrict)(slug)&&!isIndex&&parts.push(slug),parts=(0,filter_js_1.applyFilters)("slugParts",parts,args),params){const paramsStr=new URLSearchParams(params).toString();paramsStr&&parts.push(`?${paramsStr}`)}let fullSlug=parts.length?parts.join("/"):"";if(fullSlug=(0,filter_js_1.applyFilters)("slug",fullSlug,args),returnParents){return{slug:fullSlug,parents:parents}}return fullSlug};exports.getSlug=getSlug;const getPermalink=(slug="",trailingSlash=!0)=>{let url="";if(config_js_1.config.env.prod&&(url=config_js_1.config.env.prodUrl),!(0,string_js_1.isStringStrict)(slug)||"/"===slug)return`${url}/`;const hasStartSlash=slug.startsWith("/"),hasEndSlash=slug.endsWith("/");return hasStartSlash||(slug=`/${slug}`),!hasEndSlash&&trailingSlash&&(slug=`${slug}/`),`${url}${slug}`};exports.getPermalink=getPermalink;const getLink=(internalLink,externalLink)=>{if((0,object_js_1.isObjectStrict)(internalLink)){const slug=internalLink.slug,res=getSlug({id:internalLink.id,contentType:internalLink.contentType,itemData:internalLink,slug:(0,string_js_1.isString)(slug)?slug:""});return getPermalink(res)}return(0,string_js_1.isStringStrict)(externalLink)?externalLink:""};exports.getLink=getLink;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { RenderItem } from '../../render/renderTypes.js';
|
|
2
2
|
import type { Parent } from '../../global/globalTypes.js';
|
|
3
3
|
export interface LinkSlugArgs {
|
|
4
|
-
id?: string;
|
|
5
4
|
slug: string;
|
|
6
|
-
|
|
5
|
+
id?: string;
|
|
7
6
|
contentType?: string;
|
|
8
7
|
itemData?: RenderItem;
|
|
8
|
+
params?: Record<string, string> | string;
|
|
9
9
|
}
|
|
10
10
|
export interface LinkSlugReturn {
|
|
11
11
|
slug: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{isObjectStrict}from"../../utils/object/object.js";import{isStringStrict}from"../../utils/string/string.js";const Pagination=props=>{const fallback={output:"",data:{}};if(!isObjectStrict(props))return fallback;const{total:total=1,display:display=5,current:current=1,filters:filters,url:url,ellipsis:ellipsis,prev:prev="",next:next="",prevLabel:prevLabel="Previous page",nextLabel:nextLabel="Next page",currentLabel:currentLabel="Current page",pageLabel:pageLabel="Page",titleTemplate:titleTemplate="Page %current of %total",args:args}=props,{listClass:listClass,listAttr:listAttr,itemClass:itemClass,itemAttr:itemAttr,linkClass:linkClass,linkAttr:linkAttr,currentClass:currentClass,a11yClass:a11yClass="a-hide-vis",prevSpanClass:prevSpanClass,prevLinkClass:prevLinkClass,nextSpanClass:nextSpanClass,nextLinkClass:nextLinkClass}=isObjectStrict(args)?args:{};if(total<=1||!isStringStrict(url))return fallback;let output="";const hasFilters=
|
|
1
|
+
import{isObjectStrict}from"../../utils/object/object.js";import{isStringStrict}from"../../utils/string/string.js";const Pagination=props=>{const fallback={output:"",data:{}};if(!isObjectStrict(props))return fallback;const{total:total=1,display:display=5,current:current=1,filters:filters,url:url,ellipsis:ellipsis,prev:prev="",next:next="",prevLabel:prevLabel="Previous page",nextLabel:nextLabel="Next page",currentLabel:currentLabel="Current page",pageLabel:pageLabel="Page",titleTemplate:titleTemplate="Page %current of %total",args:args}=props,{listClass:listClass,listAttr:listAttr,itemClass:itemClass,itemAttr:itemAttr,linkClass:linkClass,linkAttr:linkAttr,currentClass:currentClass,a11yClass:a11yClass="a-hide-vis",prevSpanClass:prevSpanClass,prevLinkClass:prevLinkClass,nextSpanClass:nextSpanClass,nextLinkClass:nextLinkClass}=isObjectStrict(args)?args:{};if(total<=1||!isStringStrict(url))return fallback;let output="";const hasFilters=isObjectStrict(filters);let prevParams={},nextParams={},currentParams={};const prevPage=current-1,nextPage=current+1<=total?current+1:0;current>1&&(currentParams.page=current.toString()),prevPage>1&&(prevParams.page=prevPage.toString()),nextPage&&(nextParams.page=nextPage.toString()),hasFilters&&(currentParams={...currentParams,...filters},prevParams={...prevParams,...filters},current<total&&(nextParams={...nextParams,...filters}));let prevParamsStr=new URLSearchParams(prevParams).toString(),nextParamsStr=new URLSearchParams(nextParams).toString(),currentParamsStr=new URLSearchParams(currentParams).toString();prevParamsStr&&(prevParamsStr=`?${prevParamsStr}`),nextParamsStr&&(nextParamsStr=`?${nextParamsStr}`),currentParamsStr&&(currentParamsStr=`?${currentParamsStr}`);const data={current:current,total:total};nextPage&&(data.next=nextPage),prevPage&&(data.prev=prevPage),currentParamsStr&&(data.currentParams=currentParams),nextParamsStr&&(data.nextParams=nextParams),prevParamsStr&&(data.prevParams=prevParams),current>1&&(data.title=titleTemplate.replace("%current",current.toString()).replace("%total",total.toString()));const max=display-1,half=Math.ceil(display/2),maxHalf=max/2,center=total>max,limit=center?max:total-1;let start=1;center&&(start=current<max?1:current-maxHalf),start>total-limit&&(start=total-limit);const totalPagesItems=start+limit,listAttrs=[];isStringStrict(listClass)&&listAttrs.push(`class="${listClass}"`),isStringStrict(listAttr)&&listAttrs.push(listAttr);const hasEllipsis=isStringStrict(ellipsis),itemAttrs=`${isStringStrict(itemClass)?` class="${itemClass}"`:""}${isStringStrict(itemAttr)?` ${itemAttr}`:""}`;let prevItem=`<span${isStringStrict(prevSpanClass)?` class="${prevSpanClass}"`:""}>${prev}</span>`,isPrevLink=!1;current>1&&(isPrevLink=!0,prevItem=`\n <a\n href="${url}${prevParamsStr}"\n aria-label="${prevLabel}"${isStringStrict(prevLinkClass)?` class="${prevLinkClass}"`:""}\n >\n ${prev}\n </a>\n `),output+=`<li${itemAttrs} data-pag-prev="${isPrevLink?"link":"text"}">${prevItem}</li>`;let ellipsisOutput="";hasEllipsis&&(ellipsisOutput=`<li${itemAttrs} aria-hidden="true" data-pag-ellipsis>${ellipsis}</li>`),center&¤t>=limit&¤t>half&&(output+=ellipsisOutput);for(let i=start;i<=totalPagesItems;i+=1){const isCurrent=i===current;let content="";if(isCurrent)content=`\n <span${isStringStrict(currentClass)?` class="${currentClass}"`:""}>\n <span class="${a11yClass}">${currentLabel} </span>\n ${i}\n </span>\n `;else{let params={};i>1&&(params.page=i.toString()),hasFilters&&(params={...params,...filters});let paramsStr=new URLSearchParams(params).toString();paramsStr&&(paramsStr=`?${paramsStr}`),content=`\n <a href="${url}${paramsStr}"${isStringStrict(linkClass)?` class="${linkClass}"`:""}${isStringStrict(linkAttr)?` ${linkAttr}`:""}>\n <span class="${a11yClass}">${pageLabel} </span>\n ${i}\n </a>\n `}output+=`<li${itemAttrs}${isCurrent?" data-pag-current":""}>${content}</li>`}center&¤t<total-maxHalf&&(output+=ellipsisOutput);let nextItem=`<span${isStringStrict(nextSpanClass)?` class="${nextSpanClass}"`:""}>${next}</span>`,nextLink=!1;return current<total&&(nextLink=!0,nextItem=`\n <a\n href="${url}${nextParamsStr}"\n aria-label="${nextLabel}"${isStringStrict(nextLinkClass)?` class="${nextLinkClass}"`:""}\n >\n ${next}\n </a>\n `),output+=`<li${itemAttrs} data-pag-next="${nextLink?"link":"text"}">${nextItem}</li>`,{output:`\n <ol${listAttrs.length?` ${listAttrs.join(" ")}`:""}>\n ${output}\n </ol>\n `,data:data}};export{Pagination};
|
|
@@ -2,7 +2,7 @@ export interface PaginationProps {
|
|
|
2
2
|
total?: number;
|
|
3
3
|
display?: number;
|
|
4
4
|
current?: number;
|
|
5
|
-
filters?: string
|
|
5
|
+
filters?: Record<string, string>;
|
|
6
6
|
url?: string;
|
|
7
7
|
ellipsis?: string;
|
|
8
8
|
prev?: string;
|
|
@@ -34,9 +34,9 @@ export interface PaginationData {
|
|
|
34
34
|
title?: string;
|
|
35
35
|
next?: number;
|
|
36
36
|
prev?: number;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
nextParams?: Record<string, string>;
|
|
38
|
+
prevParams?: Record<string, string>;
|
|
39
|
+
currentParams?: Record<string, string>;
|
|
40
40
|
}
|
|
41
41
|
export interface PaginationReturn {
|
|
42
42
|
output: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{applyFilters}from"../../utils/filter/filter.js";import{isObjectStrict}from"../../utils/object/object.js";import{isStringStrict}from"../../utils/string/string.js";const Container=props=>{if(!isObjectStrict(props))return[];if(props=applyFilters("containerProps",props),!isObjectStrict(props))return[];const{args:args}=props,{tag:tag="div",layoutClasses:layoutClasses,classes:classes,style:style,attr:attr,nest:nest=!1}=isObjectStrict(args)?args:{};if(!isStringStrict(tag))return[];const isSemanticParent=["ul","ol","dl","figure"].
|
|
1
|
+
import{applyFilters}from"../../utils/filter/filter.js";import{isObjectStrict}from"../../utils/object/object.js";import{isStringStrict}from"../../utils/string/string.js";const Container=props=>{if(!isObjectStrict(props))return[];if(props=applyFilters("containerProps",props),!isObjectStrict(props))return[];const{args:args}=props,{tag:tag="div",layoutClasses:layoutClasses,classes:classes,style:style,attr:attr,nest:nest=!1}=isObjectStrict(args)?args:{};if(!isStringStrict(tag))return[];const isSemanticParent=new Set(["ul","ol","dl","figure"]).has(tag),hasLayoutClasses=isStringStrict(layoutClasses),hasClasses=isStringStrict(classes),attrs=[],innerAttrs=[],isNested=nest&&hasLayoutClasses,isNestedSemanticParent=isSemanticParent&&isNested,innerClassesArr=[];isNested&&hasLayoutClasses&&innerClassesArr.push(layoutClasses);const outerClassesArr=[];isNested&&hasClasses&&outerClassesArr.push(classes),!isNested&&hasClasses&&outerClassesArr.push(classes),!isNested&&hasLayoutClasses&&outerClassesArr.push(layoutClasses),outerClassesArr.length&&attrs.push(`class="${outerClassesArr.join(" ")}"`),innerClassesArr.length&&innerAttrs.push(`class="${innerClassesArr.join(" ")}"`);const att=isNestedSemanticParent?innerAttrs:attrs;isStringStrict(attr)&&att.push(attr),isStringStrict(style)&&att.push(`style="${style}"`);let outerTag=tag,innerTag="";isNested&&(outerTag=isSemanticParent?"div":tag,innerTag=isSemanticParent?tag:"div");let start=`<${outerTag}${attrs.length?` ${attrs.join(" ")}`:""}>`,end=`</${outerTag}>`;return innerTag&&(start=`${start}<${innerTag}${innerAttrs.length?` ${innerAttrs.join(" ")}`:""}>`,end=`</${innerTag}>${end}`),[start,end]};export{Container};
|
package/lib/render/render.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{doActions}from"../utils/action/action.js";import{applyFilters}from"../utils/filter/filter.js";import{getSlug,getPermalink}from"../utils/link/link.js";import{isString,isStringStrict}from"../utils/string/string.js";import{isArray,isArrayStrict}from"../utils/array/array.js";import{isObjectStrict}from"../utils/object/object.js";import{isNumber}from"../utils/number/number.js";import{isFunction}from"../utils/function/function.js";import{doShortcodes}from"../utils/shortcode/shortcode.js";import{tagExists}from"../utils/tag/tag.js";import{setStoreData,setStoreItem,getStoreItem}from"../store/store.js";import{setRedirects}from"../redirects/redirects.js";import{scripts,styles}from"../utils/scriptStyle/scriptStyle.js";import{config}from"../config/config.js";let renderFunctions={},renderLayout=()=>"",renderHttpError=()=>"",renderNavigation=()=>{};const setRenderFunctions=args=>{if(!isObjectStrict(args))return!1;const{functions:functions,layout:layout,navigation:navigation,httpError:httpError}=args;return!(!isObjectStrict(functions)||!isFunction(layout))&&(renderFunctions={...functions},renderLayout=layout,isFunction(navigation)&&(renderNavigation=navigation),isFunction(httpError)&&(renderHttpError=httpError),!0)},getContentTemplate=(content,templates=[],named=!1)=>{if(!isArrayStrict(content))return{content:[],namedContent:{},templates:[]};const namedContent={},newContent=content.map(c=>(named&&isString(c.name)&&(namedContent[c.name]={...c}),tagExists(c,"template")?(templates.push({...c}),{metadata:{tags:[{id:"templateBreak"}]}}):c));return{namedContent:namedContent,content:newContent,templates:structuredClone(templates)}},mapContentTemplate=(templates,content=[],namedContent={},named=!1)=>{if(!isArrayStrict(templates))return templates;const lastTemplateIndex=templates.length-1;return templates.forEach((t,i)=>{content[0]&&tagExists(content[0],"templateBreak")&&content.length>=1&&content.shift();if(tagExists(t,"templateOptional")&&i===lastTemplateIndex&&!content.length)return void templates.pop();const isSlot=tagExists(t,"templateSlot");let children=t.content;if(isArrayStrict(children)&&!isSlot&&!named){let repeat;const newChildren=[...children],repeatIndex=children.findIndex(c=>{const isRepeat=tagExists(c,"templateRepeat");return isRepeat&&(repeat=c),isRepeat});if(-1!==repeatIndex&&repeat){let breakIndex=content.findIndex(c=>tagExists(c,"templateBreak"));breakIndex=-1===breakIndex?content.length:breakIndex;let insertIndex=repeatIndex;for(let j=insertIndex;j<breakIndex-1;j+=1)newChildren.splice(insertIndex,0,structuredClone(repeat)),insertIndex=j}children=newChildren}if(isSlot&&content.length>=1){let fill=null;return fill=named?namedContent[t.name]:content.shift(),void(fill&&(templates[i]=fill))}isArray(children)&&templates[i]&&(templates[i].content=mapContentTemplate(children,content,namedContent,named))}),templates},renderContent=async(args,_html={ref:""})=>{if(!isObjectStrict(args))return _html.ref;const{content:content=[],serverlessData:serverlessData,previewData:previewData,itemData:itemData,itemContains:itemContains=new Set,itemHeadings:itemHeadings=[],parents:parents=[],depth:depth=0}=args;let{headingsIndex:headingsIndex=-1}=args;if(!isArrayStrict(content))return _html.ref;for(const item of content){if(!isObjectStrict(item))continue;const props={...item},renderType=isString(props.renderType)?props.renderType:"",isRichText="richText"===renderType;let childrenArr,children=props.content;if("contentTemplate"===renderType){const isNamed=tagExists(item,"templateNamed"),template=getContentTemplate(isArray(props.content)?props.content:[],[],isNamed);children=mapContentTemplate(template.templates,template.content,template.namedContent,isNamed)}let childrenStr="";isArrayStrict(children)&&!isRichText&&(childrenArr=children),isStringStrict(children)&&!isRichText&&(childrenStr=children),"content"===renderType&&0===depth&&(headingsIndex=itemHeadings.push([])-1);let renderStart="",renderEnd="",filterType="",filterArgs={};const renderFunction=renderFunctions[renderType];if(isFunction(renderFunction)){childrenArr&&(props.content=void 0);const renderArgs={args:props,parents:parents,itemData:itemData,itemContains:itemContains,serverlessData:serverlessData,previewData:previewData};childrenArr&&(renderArgs.children=childrenArr),"richText"===renderType&&(renderArgs.headings=itemHeadings[headingsIndex]);const renderOutput=await renderFunction(renderArgs);if(isArrayStrict(renderOutput)){const[start,end]=renderOutput;isString(start)&&(renderStart=start),isString(end)&&(renderEnd=end)}isString(renderOutput)&&(renderStart=renderOutput,childrenArr=void 0),itemContains.add(renderType),filterType=renderType,filterArgs={...props,content:void 0}}const renderContentFilterArgs={renderType:filterType,args:filterArgs},[filterRenderStart,filterRenderEnd]=await applyFilters("renderContent",[renderStart,renderEnd],renderContentFilterArgs,!0);if(isString(filterRenderStart)&&(renderStart=filterRenderStart),isString(filterRenderEnd)&&(renderEnd=filterRenderEnd),_html.ref+=renderStart+childrenStr,childrenArr){const parentsCopy=[...parents];renderType&&parentsCopy.unshift({renderType:renderType,args:{...props,content:void 0,parents:void 0}}),await renderContent({content:childrenArr,serverlessData:serverlessData,previewData:previewData,parents:parentsCopy,itemData:itemData,itemContains:itemContains,itemHeadings:itemHeadings,headingsIndex:headingsIndex,depth:depth+1},_html)}_html.ref+=renderEnd}return _html.ref},renderItem=async(args,_contentType)=>{if(!isObjectStrict(args))return null;const{item:item,serverlessData:serverlessData,previewData:previewData}=args;if(!isObjectStrict(item))return null;const contentType=item.contentType;if(!isStringStrict(contentType))return null;if("taxonomy"===contentType&&!0!==item.isPage)return null;const id=item.id;if(!isStringStrict(id))return null;if(!isStringStrict(item.slug))return null;let serverlessRender=!1;const itemContains=new Set,itemHeadings=[];scripts.deps.clear(),scripts.item.clear(),scripts.meta={},styles.deps.clear(),styles.item.clear();const renderItemStartArgs={id:id,itemData:{...item},contentType:contentType,itemContains:new Set,itemHeadings:[],serverlessData:serverlessData,previewData:previewData};await doActions("renderItemStart",renderItemStartArgs,!0);const title=item.title,meta={title:"",description:"",url:"",image:"",canonical:"",prev:"",next:"",index:!0,isIndex:!1,...item.meta};isStringStrict(item.metaTitle)&&(meta.title=item.metaTitle),isStringStrict(item.metaDescription)&&(meta.description=item.metaDescription),isStringStrict(item.metaImage?.url)&&(meta.image=item.metaImage.url),!isStringStrict(meta.title)&&isStringStrict(title)&&(meta.title=title);const slugArgs={id:id,contentType:contentType,slug:item.slug,returnParents:!0,itemData:item,page:0},s=getSlug(slugArgs,!0),slug=s.slug,slugIsHtml=slug.endsWith(".html"),permalink=getPermalink(slug,!slugIsHtml),parents=s.parents;meta.url=permalink,meta.canonical=permalink;const taxonomy="term"===contentType?item.taxonomy:"taxonomy"===contentType?item:null;item.baseUrl=permalink,item.baseType=isObjectStrict(taxonomy)&&isArrayStrict(taxonomy.contentTypes)?taxonomy.contentTypes:contentType;let formattedSlug="index"!==slug&&""!==slug?`/${slug}/`:"/";slugIsHtml&&(formattedSlug=slug);const cmsLocales=config.cms.locales,slugData=[id,isStringStrict(_contentType)?_contentType:contentType];if(isStringStrict(item.locale)&&cmsLocales){const locale=item.locale;cmsLocales.includes(locale)&&locale!==cmsLocales[0]&&slugData.push(locale)}setStoreItem("slugs",slugData,slugIsHtml?`/${slug}`:formattedSlug);const index="index"===item.slug;let itemServerlessData;if(meta.isIndex=index,isObjectStrict(serverlessData)){if(!(serverlessData.path===formattedSlug&&null!=serverlessData.query))return{serverlessRender:!1};itemServerlessData=serverlessData}const itemData={...item};itemData.id=id,itemData.parents=parents,itemData.content=void 0;let contentOutput="";const contentData=item.content;isStringStrict(contentData)&&(contentOutput=contentData),isArrayStrict(contentData)&&(contentOutput=await renderContent({content:contentData,serverlessData:itemServerlessData,parents:[],itemData:itemData,itemContains:itemContains,itemHeadings:itemHeadings,previewData:previewData})),contentOutput=await doShortcodes(contentOutput,itemData);const pag=itemData.pagination;if(isObjectStrict(pag)){const{current:current=0,total:total=1,currentFilters:currentFilters,prevFilters:prevFilters,nextFilters:nextFilters}=pag;if(meta.canonicalParams=`${current>1?`?page=${current}`:""}${isString(currentFilters)?currentFilters:""}`,isStringStrict(pag.title)&&(meta.paginationTitle=pag.title),isNumber(pag.prev)&&pag.prev>=1){slugArgs.page=pag.prev;const p=getSlug(slugArgs,!0);meta.prev=`${getPermalink(p.slug,1===pag.prev)}${isString(prevFilters)?prevFilters:""}`}if(isNumber(pag.next)&&pag.next>1&&pag.next<total){slugArgs.page=pag.next;const n=getSlug(slugArgs,!0);meta.next=`${getPermalink(n.slug,!1)}${isString(nextFilters)?nextFilters:""}`}serverlessRender=!0}let layoutOutput="";if(isFunction(renderLayout)){const layoutArgs={id:id,meta:meta,contentType:contentType,content:contentOutput,slug:formattedSlug,itemContains:itemContains,itemHeadings:itemHeadings,itemData:itemData,serverlessData:serverlessData,previewData:previewData};layoutOutput=await renderLayout(layoutArgs)}const renderItemFilterArgs={id:id,contentType:contentType,slug:formattedSlug,output:layoutOutput,itemData:itemData,itemContains:itemContains,itemHeadings:itemHeadings,serverlessData:serverlessData,previewData:previewData};layoutOutput=await applyFilters("renderItem",layoutOutput,renderItemFilterArgs,!0);const renderItemEndArgs={id:id,contentType:contentType,slug:formattedSlug,output:layoutOutput,itemData:itemData,itemContains:itemContains,itemHeadings:itemHeadings,serverlessData:serverlessData,previewData:previewData};return await doActions("renderItemEnd",renderItemEndArgs,!0),{serverlessRender:serverlessRender,itemData:itemData,data:{slug:formattedSlug,output:layoutOutput}}},render=async args=>{if(!isObjectStrict(args))return[];const{allData:allData,serverlessData:serverlessData,previewData:previewData}=args,isServerless=null!=serverlessData,isPreview=null!=previewData;if(scripts.deps.clear(),scripts.item.clear(),scripts.meta={},styles.deps.clear(),styles.item.clear(),!isObjectStrict(allData))return[];const{redirect:redirect,content:content}=allData;await doActions("renderStart",args,!0);const data=[];isServerless||setStoreData(allData),isFunction(renderNavigation)&&await renderNavigation({navigations:getStoreItem("navigations"),items:getStoreItem("navigationItems")}),setRedirects(redirect);for(const[contentType,contentItems]of Object.entries(content))if(isArrayStrict(contentItems))for(const contentItem of contentItems){const item=await renderItem({item:await applyFilters("renderItemData",contentItem,{contentType:contentType},!0),serverlessData:serverlessData,previewData:previewData},contentType);if(!item)continue;const{serverlessRender:serverlessRender=!1,data:itemData}=item;itemData&&(data.push(itemData),serverlessRender&&!isServerless&&setStoreItem("serverless",["reload"],itemData.slug))}const[outputItem]=data,output=(isServerless||isPreview)&&outputItem?outputItem:data;return await doActions("renderEnd",{...args,data:output},!0),output};export{render,renderItem,renderContent,renderFunctions,renderLayout,renderNavigation,renderHttpError,setRenderFunctions};
|
|
1
|
+
import{doActions}from"../utils/action/action.js";import{applyFilters}from"../utils/filter/filter.js";import{getSlug,getPermalink}from"../utils/link/link.js";import{isString,isStringStrict}from"../utils/string/string.js";import{isArray,isArrayStrict}from"../utils/array/array.js";import{isObjectStrict}from"../utils/object/object.js";import{isFunction}from"../utils/function/function.js";import{doShortcodes}from"../utils/shortcode/shortcode.js";import{tagExists}from"../utils/tag/tag.js";import{setStoreData,setStoreItem,getStoreItem}from"../store/store.js";import{setRedirects}from"../redirects/redirects.js";import{scripts,styles}from"../utils/scriptStyle/scriptStyle.js";import{config}from"../config/config.js";let renderFunctions={},renderLayout=()=>"",renderHttpError=()=>"",renderNavigation=()=>{};const setRenderFunctions=args=>{if(!isObjectStrict(args))return!1;const{functions:functions,layout:layout,navigation:navigation,httpError:httpError}=args;return!(!isObjectStrict(functions)||!isFunction(layout))&&(renderFunctions={...functions},renderLayout=layout,isFunction(navigation)&&(renderNavigation=navigation),isFunction(httpError)&&(renderHttpError=httpError),!0)},getContentTemplate=(content,templates=[],named=!1)=>{if(!isArrayStrict(content))return{content:[],namedContent:{},templates:[]};const namedContent={},newContent=content.map(c=>(named&&isString(c.name)&&(namedContent[c.name]={...c}),tagExists(c,"template")?(templates.push({...c}),{metadata:{tags:[{id:"templateBreak"}]}}):c));return{namedContent:namedContent,content:newContent,templates:structuredClone(templates)}},mapContentTemplate=(templates,content=[],namedContent={},named=!1)=>{if(!isArrayStrict(templates))return templates;const lastTemplateIndex=templates.length-1;return templates.forEach((t,i)=>{content[0]&&tagExists(content[0],"templateBreak")&&content.length>=1&&content.shift();if(tagExists(t,"templateOptional")&&i===lastTemplateIndex&&!content.length)return void templates.pop();const isSlot=tagExists(t,"templateSlot");let children=t.content;if(isArrayStrict(children)&&!isSlot&&!named){let repeat;const newChildren=[...children],repeatIndex=children.findIndex(c=>{const isRepeat=tagExists(c,"templateRepeat");return isRepeat&&(repeat=c),isRepeat});if(-1!==repeatIndex&&repeat){let breakIndex=content.findIndex(c=>tagExists(c,"templateBreak"));breakIndex=-1===breakIndex?content.length:breakIndex;let insertIndex=repeatIndex;for(let j=insertIndex;j<breakIndex-1;j+=1)newChildren.splice(insertIndex,0,structuredClone(repeat)),insertIndex=j}children=newChildren}if(isSlot&&content.length>=1){let fill=null;return fill=named?namedContent[t.name]:content.shift(),void(fill&&(templates[i]=fill))}isArray(children)&&templates[i]&&(templates[i].content=mapContentTemplate(children,content,namedContent,named))}),templates},renderContent=async(args,_html={ref:""})=>{if(!isObjectStrict(args))return _html.ref;const{content:content=[],serverlessData:serverlessData,previewData:previewData,itemData:itemData,itemContains:itemContains=new Set,itemHeadings:itemHeadings=[],parents:parents=[],depth:depth=0}=args;let{headingsIndex:headingsIndex=-1}=args;if(!isArrayStrict(content))return _html.ref;for(const item of content){if(!isObjectStrict(item))continue;const props={...item},renderType=isString(props.renderType)?props.renderType:"",isRichText="richText"===renderType;let childrenArr,children=props.content;if("contentTemplate"===renderType){const isNamed=tagExists(item,"templateNamed"),template=getContentTemplate(isArray(props.content)?props.content:[],[],isNamed);children=mapContentTemplate(template.templates,template.content,template.namedContent,isNamed)}let childrenStr="";isArrayStrict(children)&&!isRichText&&(childrenArr=children),isStringStrict(children)&&!isRichText&&(childrenStr=children),"content"===renderType&&0===depth&&(headingsIndex=itemHeadings.push([])-1);let renderStart="",renderEnd="",filterType="",filterArgs={};const renderFunction=renderFunctions[renderType];if(isFunction(renderFunction)){childrenArr&&(props.content=void 0);const renderArgs={args:props,parents:parents,itemData:itemData,itemContains:itemContains,serverlessData:serverlessData,previewData:previewData};childrenArr&&(renderArgs.children=childrenArr),"richText"===renderType&&(renderArgs.headings=itemHeadings[headingsIndex]);const renderOutput=await renderFunction(renderArgs);if(isArrayStrict(renderOutput)){const[start,end]=renderOutput;isString(start)&&(renderStart=start),isString(end)&&(renderEnd=end)}isString(renderOutput)&&(renderStart=renderOutput,childrenArr=void 0),itemContains.add(renderType),filterType=renderType,filterArgs={...props,content:void 0}}const renderContentFilterArgs={renderType:filterType,args:filterArgs},[filterRenderStart,filterRenderEnd]=await applyFilters("renderContent",[renderStart,renderEnd],renderContentFilterArgs,!0);if(isString(filterRenderStart)&&(renderStart=filterRenderStart),isString(filterRenderEnd)&&(renderEnd=filterRenderEnd),_html.ref+=renderStart+childrenStr,childrenArr){const parentsCopy=[...parents];renderType&&parentsCopy.unshift({renderType:renderType,args:{...props,content:void 0,parents:void 0}}),await renderContent({content:childrenArr,serverlessData:serverlessData,previewData:previewData,parents:parentsCopy,itemData:itemData,itemContains:itemContains,itemHeadings:itemHeadings,headingsIndex:headingsIndex,depth:depth+1},_html)}_html.ref+=renderEnd}return _html.ref},renderItem=async(args,_contentType)=>{if(!isObjectStrict(args))return null;const{item:item,serverlessData:serverlessData,previewData:previewData}=args;if(!isObjectStrict(item))return null;const contentType=item.contentType;if(!isStringStrict(contentType))return null;if("taxonomy"===contentType&&!0!==item.isPage)return null;const id=item.id;if(!isStringStrict(id))return null;if(!isStringStrict(item.slug))return null;let serverlessRender=!1;const itemContains=new Set,itemHeadings=[];scripts.deps.clear(),scripts.item.clear(),scripts.meta={},styles.deps.clear(),styles.item.clear();const renderItemStartArgs={id:id,itemData:{...item},contentType:contentType,itemContains:new Set,itemHeadings:[],serverlessData:serverlessData,previewData:previewData};await doActions("renderItemStart",renderItemStartArgs,!0);const title=item.title,meta={title:"",description:"",url:"",image:"",canonical:"",prev:"",next:"",index:!0,isIndex:!1,...item.meta};isStringStrict(item.metaTitle)&&(meta.title=item.metaTitle),isStringStrict(item.metaDescription)&&(meta.description=item.metaDescription),isStringStrict(item.metaImage?.url)&&(meta.image=item.metaImage.url),!isStringStrict(meta.title)&&isStringStrict(title)&&(meta.title=title);const slugArgs={id:id,contentType:contentType,slug:item.slug,returnParents:!0,itemData:item,page:0},s=getSlug(slugArgs,!0),slug=s.slug,slugIsHtml=slug.endsWith(".html"),permalink=getPermalink(slug,!slugIsHtml),parents=s.parents;meta.url=permalink,meta.canonical=permalink;const taxonomy="term"===contentType?item.taxonomy:"taxonomy"===contentType?item:null;item.baseUrl=permalink,item.baseType=isObjectStrict(taxonomy)&&isArrayStrict(taxonomy.contentTypes)?taxonomy.contentTypes:contentType;let formattedSlug="index"!==slug&&""!==slug?`/${slug}/`:"/";slugIsHtml&&(formattedSlug=slug);const cmsLocales=config.cms.locales,slugData=[id,isStringStrict(_contentType)?_contentType:contentType];if(isStringStrict(item.locale)&&cmsLocales){const locale=item.locale;cmsLocales.includes(locale)&&locale!==cmsLocales[0]&&slugData.push(locale)}setStoreItem("slugs",slugData,slugIsHtml?`/${slug}`:formattedSlug);const index="index"===item.slug;let itemServerlessData;if(meta.isIndex=index,isObjectStrict(serverlessData)){if(!(serverlessData.path===formattedSlug&&null!=serverlessData.query))return{serverlessRender:!1};itemServerlessData=serverlessData}const itemData={...item};itemData.id=id,itemData.parents=parents,itemData.content=void 0;let contentOutput="";const contentData=item.content;isStringStrict(contentData)&&(contentOutput=contentData),isArrayStrict(contentData)&&(contentOutput=await renderContent({content:contentData,serverlessData:itemServerlessData,parents:[],itemData:itemData,itemContains:itemContains,itemHeadings:itemHeadings,previewData:previewData})),contentOutput=await doShortcodes(contentOutput,itemData);const pag=itemData.pagination;if(isObjectStrict(pag)){const{currentParams:currentParams,prevParams:prevParams,nextParams:nextParams}=pag,currentParamsStr=new URLSearchParams(currentParams).toString();if(currentParamsStr&&(meta.canonicalParams=`?${currentParamsStr}`),isStringStrict(pag.title)&&(meta.paginationTitle=pag.title),pag.prev){const prevSlugArgs={...slugArgs,params:prevParams},p=getSlug(prevSlugArgs,!0);meta.prev=getPermalink(p.slug,1===pag.prev&&!prevParams)}if(pag.next){const nextSlugArgs={...slugArgs,params:nextParams},n=getSlug(nextSlugArgs,!0);meta.next=getPermalink(n.slug,!1)}serverlessRender=!0}let layoutOutput="";if(isFunction(renderLayout)){const layoutArgs={id:id,meta:meta,contentType:contentType,content:contentOutput,slug:formattedSlug,itemContains:itemContains,itemHeadings:itemHeadings,itemData:itemData,serverlessData:serverlessData,previewData:previewData};layoutOutput=await renderLayout(layoutArgs)}const renderItemFilterArgs={id:id,contentType:contentType,slug:formattedSlug,output:layoutOutput,itemData:itemData,itemContains:itemContains,itemHeadings:itemHeadings,serverlessData:serverlessData,previewData:previewData};layoutOutput=await applyFilters("renderItem",layoutOutput,renderItemFilterArgs,!0);const renderItemEndArgs={id:id,contentType:contentType,slug:formattedSlug,output:layoutOutput,itemData:itemData,itemContains:itemContains,itemHeadings:itemHeadings,serverlessData:serverlessData,previewData:previewData};return await doActions("renderItemEnd",renderItemEndArgs,!0),{serverlessRender:serverlessRender,itemData:itemData,data:{slug:formattedSlug,output:layoutOutput}}},render=async args=>{if(!isObjectStrict(args))return[];const{allData:allData,serverlessData:serverlessData,previewData:previewData}=args,isServerless=null!=serverlessData,isPreview=null!=previewData;if(scripts.deps.clear(),scripts.item.clear(),scripts.meta={},styles.deps.clear(),styles.item.clear(),!isObjectStrict(allData))return[];const{redirect:redirect,content:content}=allData;await doActions("renderStart",args,!0);const data=[];isServerless||setStoreData(allData),isFunction(renderNavigation)&&await renderNavigation({navigations:getStoreItem("navigations"),items:getStoreItem("navigationItems")}),setRedirects(redirect);for(const[contentType,contentItems]of Object.entries(content))if(isArrayStrict(contentItems))for(const contentItem of contentItems){const item=await renderItem({item:await applyFilters("renderItemData",contentItem,{contentType:contentType},!0),serverlessData:serverlessData,previewData:previewData},contentType);if(!item)continue;const{serverlessRender:serverlessRender=!1,data:itemData}=item;itemData&&(data.push(itemData),serverlessRender&&!isServerless&&setStoreItem("serverless",["reload"],itemData.slug))}const[outputItem]=data,output=(isServerless||isPreview)&&outputItem?outputItem:data;return await doActions("renderEnd",{...args,data:output},!0),output};export{render,renderItem,renderContent,renderFunctions,renderLayout,renderNavigation,renderHttpError,setRenderFunctions};
|
|
@@ -4,7 +4,7 @@ import type { getAllContentfulData } from '../contentful/contentfulData.js';
|
|
|
4
4
|
import type { getAllWordPressData } from '../wordpress/wordpressData.js';
|
|
5
5
|
declare let serverlessActions: ServerlessActions;
|
|
6
6
|
declare const serverlessPreview: (request: Request) => RenderPreviewData | undefined;
|
|
7
|
-
declare const serverlessReload: (request: Request) => RenderServerlessData | undefined;
|
|
7
|
+
declare const serverlessReload: (request: Request, allowedParams?: string[]) => RenderServerlessData | undefined;
|
|
8
8
|
declare const serverlessRender: (getData: typeof getAllContentfulData | typeof getAllWordPressData, serverlessData?: RenderServerlessData, previewData?: RenderPreviewData) => Promise<Response>;
|
|
9
9
|
declare const setServerless: (actions?: ServerlessActions) => void;
|
|
10
10
|
export { serverlessActions, serverlessPreview, serverlessReload, serverlessRender, setServerless };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{isStringStrict}from"../utils/string/string.js";import{isObjectStrict}from"../utils/object/object.js";import{isFunction}from"../utils/function/function.js";import{render,renderHttpError}from"../render/render.js";import{minify}from"../utils/minify/minify.js";import{print}from"../utils/print/print.js";let serverlessActions={};const serverlessPreview=request=>{const{method:method,url:url}=request;if("GET"!==method)return;const{searchParams:searchParams}=new URL(url),contentType=searchParams.get("content_type"),locale=searchParams.get("locale"),id=searchParams.get("preview");if(!isStringStrict(id)||!isStringStrict(contentType))return;const previewData={id:id,contentType:contentType};return isStringStrict(locale)&&(previewData.locale=locale),previewData},serverlessReload=request=>{const{method:method,url:url}=request;if("GET"!==method)return;const{searchParams:searchParams,pathname:pathname}=new URL(url),
|
|
1
|
+
import{isStringStrict}from"../utils/string/string.js";import{isObjectStrict}from"../utils/object/object.js";import{isFunction}from"../utils/function/function.js";import{render,renderHttpError}from"../render/render.js";import{minify}from"../utils/minify/minify.js";import{print}from"../utils/print/print.js";let serverlessActions={};const serverlessPreview=request=>{const{method:method,url:url}=request;if("GET"!==method)return;const{searchParams:searchParams}=new URL(url),contentType=searchParams.get("content_type"),locale=searchParams.get("locale"),id=searchParams.get("preview");if(!isStringStrict(id)||!isStringStrict(contentType))return;const previewData={id:id,contentType:contentType};return isStringStrict(locale)&&(previewData.locale=locale),previewData},serverlessReload=(request,allowedParams=["page","filters"])=>{const{method:method,url:url}=request;if("GET"!==method)return;const{searchParams:searchParams,pathname:pathname}=new URL(url),path=pathname,query={};let hasParams=!1;for(const param of allowedParams){const value=searchParams.get(param);isStringStrict(value)&&(query[param]=value,hasParams=!0)}return hasParams?{query:query,path:path}:void 0},serverlessRender=async(getData,serverlessData,previewData)=>{try{const data=await render({serverlessData:serverlessData,previewData:previewData,allData:await getData({serverlessData:serverlessData,previewData:previewData})});let html="",status=200;isObjectStrict(data)&&(html=data.output);const isEmpty=""===html;return isEmpty&&(status=404),isEmpty&&isFunction(renderHttpError)&&(html=await renderHttpError({code:status})),new Response(minify(html),{status:status,headers:{"Content-Type":"text/html;charset=UTF-8"}})}catch(error){print("[FRM] Error on serverless render",error);const status=500,html=await renderHttpError({code:status});return new Response(html,{status:status,headers:{"Content-Type":"text/html;charset=UTF-8"}})}},setServerless=actions=>{isObjectStrict(actions)&&(serverlessActions={...actions})};export{serverlessActions,serverlessPreview,serverlessReload,serverlessRender,setServerless};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const isHeading=tag=>["h1","h2","h3","h4","h5","h6"].
|
|
1
|
+
const isHeading=tag=>new Set(["h1","h2","h3","h4","h5","h6"]).has(tag);export{isHeading};
|
package/lib/utils/image/image.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{config}from"../../config/config.js";import{isString,isStringStrict}from"../string/string.js";import{isArrayStrict}from"../array/array.js";import{isNumber}from"../number/number.js";import{isObjectStrict}from"../object/object.js";import{dataSource}from"../dataSource/dataSource.js";const getImageUrl=(url,format,quality,width,height,params)=>{const urlObj=new URL(url);return Object.entries(params).forEach(([key,value])=>{let val=value;"%format"===val&&(val=format),"%quality"===val&&(val=`${quality}`),"%width"===val&&(val=`${width}`),"%height"===val&&(val=`${height}`),urlObj.searchParams.set(key,val)}),urlObj.toString()},getImage=(args,returnDetails=!1)=>{const{data:data,classes:classes,attr:attr,alt:imageAlt="inherit",width:width="auto",height:height="auto",lazy:lazy=!0,picture:picture=!1,quality:quality=75,source:source=config.source,maxWidth:maxWidth=1200,viewportWidth:viewportWidth=100,format:format="webp",params:params={fm:"%format",q:"%quality",w:"%width",h:"%height"}}=isObjectStrict(args)?args:{},fallback=returnDetails?{output:"",aspectRatio:0,naturalWidth:0,naturalHeight:0,src:"",srcFallback:"",srcset:[],sizes:""}:"";if(!isObjectStrict(data))return fallback;const{path:path="",alt:dataAlt="",width:naturalWidth=1,height:naturalHeight=1,format:naturalFormat="jpg",sizes:dataSizes}=data;let{url:url=config.image.remoteUrl}=data,alt="inherit"===imageAlt?dataAlt:imageAlt;isStringStrict(alt)||(alt="");const isLocal="local"===source,isRemote=dataSource.isContentful(source)||"remote"===source,isWordpress=dataSource.isWordPress(source);if(isLocal){if(!isStringStrict(path))return fallback;url=`${config.image.localUrl}/${path}`}const aspectRatio=naturalHeight/naturalWidth,aspectRatioReverse=naturalWidth/naturalHeight;let w=naturalWidth,h=naturalHeight;if(isNumber(width)&&(w=width,h=isString(height)?w*aspectRatio:height),isNumber(height)&&(h=height,w=isString(width)?h*aspectRatioReverse:width),w>maxWidth&&(w=Math.round(maxWidth),h=Math.round(w*aspectRatio)),isWordpress&&dataSizes&&!dataSizes[w]){const isNatural=w===naturalWidth;isNatural||(w=getImageClosestSize(w,Object.keys(dataSizes).map(s=>parseInt(s,10))),h=Math.round(w*aspectRatio)),isNatural&&(dataSizes[w]=url)}let src=url,srcFallback=url;isLocal&&(src=`${url}.${format}`,srcFallback=`${url}.${naturalFormat}`),isRemote&&(src=getImageUrl(url,format,quality,w,h,params),srcFallback=getImageUrl(url,naturalFormat,quality,w,h,params));const sizes=`(min-width: ${w/16}rem) ${w/16}rem, ${viewportWidth}vw`,srcsetFallback=[];let srcset=[...config.image.sizes];srcset.includes(w)||srcset.push(w),srcset=srcset.filter(s=>s<=w),srcset.sort((a,b)=>a-b);const srcsetSource=[];srcset.forEach(s=>{if(isLocal){const base=`${url}${s!==naturalWidth?`@${s}`:""}`;srcsetFallback.push(`${base}.${naturalFormat} ${s}w`),srcsetSource.push(`${base}.${format} ${s}w`)}if(isRemote){const sizeHeight=Math.round(s*aspectRatio);srcsetFallback.push(getImageUrl(url,naturalFormat,quality,s,sizeHeight,params)+` ${s}w`),srcsetSource.push(getImageUrl(url,format,quality,s,sizeHeight,params)+` ${s}w`)}if(isWordpress){const sizeUrl=dataSizes?.[s];isStringStrict(sizeUrl)&&srcsetSource.push(`${sizeUrl} ${s}w`)}});let sourceOutput="";picture&&(sourceOutput=`<source srcset="${srcsetSource.join(", ")}" sizes="${sizes}" type="image/${format}">`);let eagerHackOutput="";lazy||(eagerHackOutput=`\n <img\n alt=""\n role="presentation"\n aria-hidden="true"\n src="data:image/svg+xml;charset=utf-8,%3Csvg height='${h}' width='${w}' xmlns='http://www.w3.org/2000/svg' version='1.1'%3E%3C/svg%3E" style="pointerEvents: none; position: absolute; top: 0; left: 0; width: 100%; height: 100%"\n >\n `);const output=`\n ${eagerHackOutput}\n ${sourceOutput}\n <img\n ${isStringStrict(classes)?` class="${classes}"`:""}\n alt="${alt}"\n src="${picture?srcFallback:src}"\n srcset="${picture?srcsetFallback.join(", "):srcsetSource.join(", ")}"\n sizes="${sizes}"\n width="${w}"\n height="${h}"\n ${isStringStrict(attr)?` ${attr}`:""}\n ${lazy?' loading="lazy" decoding="async"':' loading="eager"'}\n >\n `;return returnDetails?{output:output,aspectRatio:aspectRatio,naturalWidth:naturalWidth,naturalHeight:naturalHeight,src:src,srcFallback:srcFallback,srcset:srcsetSource,sizes:sizes}:output},getImageClosestSize=(size,sizes=[])=>(sizes.length||(sizes=config.image.sizes),[...sizes].reduce((prev,curr)=>Math.abs(curr-size)<=Math.abs(prev-size)?curr:prev)),getImageMaxWidth=args=>{if(!isObjectStrict(args))return 0;const{parents:parents,widths:widths,maxWidths:maxWidths,breakpoints:breakpoints,source:source=config.source}=args;if(!(isArrayStrict(parents)&&isObjectStrict(widths)&&isObjectStrict(maxWidths)&&isArrayStrict(breakpoints)))return 0;const w=[];let m=0;if(parents.forEach(parent=>{if(!isObjectStrict(parent))return;const{renderType:renderType,args:args}=parent;if(isObjectStrict(args)){if("column"===renderType){const{width:width="Default",widthSmall:widthSmall="Default",widthMedium:widthMedium="Default",widthLarge:widthLarge="Default"}=args;w[0]=isNumber(widths[width])&&widths[width]>0?widths[width]:1,w[1]=isNumber(widths[widthSmall])&&widths[widthSmall]>0?widths[widthSmall]:w[0],w[2]=isNumber(widths[widthMedium])&&widths[widthMedium]>0?widths[widthMedium]:w[1],w[3]=isNumber(widths[widthLarge])&&widths[widthLarge]>0?widths[widthLarge]:w[2]}if("container"===renderType){const{maxWidth:maxWidth="Default"}=args;m=isNumber(maxWidths[maxWidth])?maxWidths[maxWidth]:0}}}),!w.length&&0===m)return 0;const bk=[...breakpoints],calc=[];let lastW=1;bk.forEach((b,i)=>{const wd=w[i];isNumber(wd)&&(lastW=wd,m>0&&b>m?calc.push(wd*m):calc.push(wd*b))}),m>0&&calc.push(lastW*m);const res=2*Math.max(...calc);return"local"===source?getImageClosestSize(res):res};export{getImage,getImageClosestSize,getImageMaxWidth};
|
|
1
|
+
import{config}from"../../config/config.js";import{isString,isStringStrict}from"../string/string.js";import{isArrayStrict}from"../array/array.js";import{isNumber}from"../number/number.js";import{isObjectStrict}from"../object/object.js";import{dataSource}from"../dataSource/dataSource.js";const getImageUrl=(url,format,quality,width,height,params)=>{const urlObj=new URL(url);return Object.entries(params).forEach(([key,value])=>{let val=value;"%format"===val&&(val=format),"%quality"===val&&(val=`${quality}`),"%width"===val&&(val=`${width}`),"%height"===val&&(val=`${height}`),urlObj.searchParams.set(key,val)}),urlObj.toString()},getImage=(args,returnDetails=!1)=>{const{data:data,classes:classes,attr:attr,alt:imageAlt="inherit",width:width="auto",height:height="auto",lazy:lazy=!0,picture:picture=!1,quality:quality=75,source:source=config.source,maxWidth:maxWidth=1200,viewportWidth:viewportWidth=100,format:format="webp",params:params={fm:"%format",q:"%quality",w:"%width",h:"%height"}}=isObjectStrict(args)?args:{},fallback=returnDetails?{output:"",aspectRatio:0,naturalWidth:0,naturalHeight:0,src:"",srcFallback:"",srcset:[],sizes:""}:"";if(!isObjectStrict(data))return fallback;const{path:path="",alt:dataAlt="",width:naturalWidth=1,height:naturalHeight=1,format:naturalFormat="jpg",sizes:dataSizes}=data;let{url:url=config.image.remoteUrl}=data,alt="inherit"===imageAlt?dataAlt:imageAlt;isStringStrict(alt)||(alt="");const isLocal="local"===source,isRemote=dataSource.isContentful(source)||"remote"===source,isWordpress=dataSource.isWordPress(source);if(isLocal){if(!isStringStrict(path))return fallback;url=`${config.image.localUrl}/${path}`}const aspectRatio=naturalHeight/naturalWidth,aspectRatioReverse=naturalWidth/naturalHeight;let w=naturalWidth,h=naturalHeight;if(isNumber(width)&&(w=width,h=isString(height)?w*aspectRatio:height),isNumber(height)&&(h=height,w=isString(width)?h*aspectRatioReverse:width),w>maxWidth&&(w=Math.round(maxWidth),h=Math.round(w*aspectRatio)),isWordpress&&dataSizes&&!dataSizes[w]){const isNatural=w===naturalWidth;isNatural||(w=getImageClosestSize(w,Object.keys(dataSizes).map(s=>parseInt(s,10))),h=Math.round(w*aspectRatio)),isNatural&&(dataSizes[w]=url)}let src=url,srcFallback=url;isLocal&&(src=`${url}.${format}`,srcFallback=`${url}.${naturalFormat}`),isRemote&&(src=getImageUrl(url,format,quality,w,h,params),srcFallback=getImageUrl(url,naturalFormat,quality,w,h,params));const sizes=`(min-width: ${w/16}rem) ${w/16}rem, ${viewportWidth}vw`,srcsetFallback=[];let srcset=[...config.image.sizes];srcset.includes(w)||srcset.push(w),srcset=srcset.filter(s=>s<=w),srcset.sort((a,b)=>a-b);const srcsetSource=[];srcset.forEach(s=>{if(isLocal){const base=`${url}${s!==naturalWidth?`@${s}`:""}`;srcsetFallback.push(`${base}.${naturalFormat} ${s}w`),srcsetSource.push(`${base}.${format} ${s}w`)}if(isRemote){const sizeHeight=Math.round(s*aspectRatio);srcsetFallback.push(getImageUrl(url,naturalFormat,quality,s,sizeHeight,params)+` ${s}w`),srcsetSource.push(getImageUrl(url,format,quality,s,sizeHeight,params)+` ${s}w`)}if(isWordpress){const sizeUrl=dataSizes?.[s];isStringStrict(sizeUrl)&&srcsetSource.push(`${sizeUrl} ${s}w`)}});let sourceOutput="";picture&&(sourceOutput=`<source srcset="${srcsetSource.join(", ")}" sizes="${sizes}" type="image/${format}">`);let eagerHackOutput="";lazy||(eagerHackOutput=`\n <img\n alt=""\n role="presentation"\n aria-hidden="true"\n src="data:image/svg+xml;charset=utf-8,%3Csvg height='${h}' width='${w}' xmlns='http://www.w3.org/2000/svg' version='1.1'%3E%3C/svg%3E" style="pointerEvents: none; position: absolute; top: 0; left: 0; width: 100%; height: 100%"\n >\n `);const output=`\n ${eagerHackOutput}\n ${sourceOutput}\n <img\n ${isStringStrict(classes)?` class="${classes}"`:""}\n alt="${alt}"\n src="${picture?srcFallback:src}"\n srcset="${picture?srcsetFallback.join(", "):srcsetSource.join(", ")}"\n sizes="${sizes}"\n width="${w}"\n height="${h}"\n ${isStringStrict(attr)?` ${attr}`:""}\n ${lazy?' loading="lazy" decoding="async"':' loading="eager" fetchpriority="high"'}\n >\n `;return returnDetails?{output:output,aspectRatio:aspectRatio,naturalWidth:naturalWidth,naturalHeight:naturalHeight,src:src,srcFallback:srcFallback,srcset:srcsetSource,sizes:sizes}:output},getImageClosestSize=(size,sizes=[])=>(sizes.length||(sizes=config.image.sizes),[...sizes].reduce((prev,curr)=>Math.abs(curr-size)<=Math.abs(prev-size)?curr:prev)),getImageMaxWidth=args=>{if(!isObjectStrict(args))return 0;const{parents:parents,widths:widths,maxWidths:maxWidths,breakpoints:breakpoints,source:source=config.source}=args;if(!(isArrayStrict(parents)&&isObjectStrict(widths)&&isObjectStrict(maxWidths)&&isArrayStrict(breakpoints)))return 0;const w=[];let m=0;if(parents.forEach(parent=>{if(!isObjectStrict(parent))return;const{renderType:renderType,args:args}=parent;if(isObjectStrict(args)){if("column"===renderType){const{width:width="Default",widthSmall:widthSmall="Default",widthMedium:widthMedium="Default",widthLarge:widthLarge="Default"}=args;w[0]=isNumber(widths[width])&&widths[width]>0?widths[width]:1,w[1]=isNumber(widths[widthSmall])&&widths[widthSmall]>0?widths[widthSmall]:w[0],w[2]=isNumber(widths[widthMedium])&&widths[widthMedium]>0?widths[widthMedium]:w[1],w[3]=isNumber(widths[widthLarge])&&widths[widthLarge]>0?widths[widthLarge]:w[2]}if("container"===renderType){const{maxWidth:maxWidth="Default"}=args;m=isNumber(maxWidths[maxWidth])?maxWidths[maxWidth]:0}}}),!w.length&&0===m)return 0;const bk=[...breakpoints],calc=[];let lastW=1;bk.forEach((b,i)=>{const wd=w[i];isNumber(wd)&&(lastW=wd,m>0&&b>m?calc.push(wd*m):calc.push(wd*b))}),m>0&&calc.push(lastW*m);const res=2*Math.max(...calc);return"local"===source?getImageClosestSize(res):res};export{getImage,getImageClosestSize,getImageMaxWidth};
|
package/lib/utils/link/link.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{isObjectStrict}from"../object/object.js";import{isString,isStringStrict}from"../string/string.js";import{applyFilters}from"../filter/filter.js";import{getArchiveInfo,getTaxonomyInfo}from"../archive/archive.js";import{getStoreItem}from"../../store/store.js";import{config}from"../../config/config.js";const getParentSlug=(id,contentType,parents,taxonomy,locale)=>{const storeParents=getStoreItem("parents"),parent=storeParents[contentType]?.[id];if(parent){const[parentId,parentSlug,parentTitle]=parent,newParent={id:parentId,slug:parentSlug,title:parentTitle,contentType:contentType,locale:locale};"term"===contentType&&(newParent.taxonomy=taxonomy),parents.unshift(newParent),getParentSlug(parentId,contentType,parents,taxonomy,locale)}},getSlug=(args,returnParents=!1)=>{const{id:id="",slug:initSlug="",contentType:contentType="page",itemData:itemData,params:params}=isObjectStrict(args)?args:{};let slug=initSlug,typeSlug="",taxSlug="",parentSlugs="",parts=[];const{hierarchicalTypes:hierarchicalTypes,typeInSlug:typeInSlug,localeInSlug:localeInSlug,taxonomyInSlug:taxonomyInSlug}=config,itemLocale=isStringStrict(itemData?.locale)?itemData.locale:void 0,hasItemLocale=null!=itemLocale,locale=hasItemLocale?localeInSlug[itemLocale]:"",hasLocale=isStringStrict(locale),taxonomyInfo=getTaxonomyInfo(contentType,itemData),isTaxonomy="taxonomy"===contentType,isTerm="term"===contentType,{id:taxonomyId,slug:taxonomySlug,primaryContentType:taxonomyType,usePrimaryContentTypeSlug:taxonomyUseTypeSlug,isPage:taxonomyIsPage}=taxonomyInfo,archiveType=isStringStrict(taxonomyType)?taxonomyType:contentType,archiveInfo=getArchiveInfo(archiveType,itemLocale),{id:archiveId,slug:archiveSlug,title:archiveTitle,contentType:archiveContentType}=archiveInfo,archiveParents=[];if(archiveSlug&&archiveId&&(typeSlug=archiveSlug,archiveParents.push({contentType:archiveContentType,title:archiveTitle,slug:archiveSlug,id:archiveId,locale:itemLocale})),!isTaxonomy&&!isTerm||taxonomyUseTypeSlug||(typeSlug=""),isTerm&&taxonomySlug&&taxonomyId){taxSlug=taxonomySlug;const taxInSlug=taxonomyInSlug[taxSlug];if(isString(taxInSlug)&&(taxSlug=taxInSlug),isObjectStrict(taxInSlug)&&hasItemLocale){const localizedTaxSlug=taxInSlug[itemLocale];isString(localizedTaxSlug)&&(taxSlug=localizedTaxSlug)}taxonomyIsPage&&archiveParents.push({contentType:"taxonomy",locale:itemLocale,...taxonomyInfo})}const contentTypeInSlug=typeInSlug[archiveType];if(isString(contentTypeInSlug)&&(typeSlug=contentTypeInSlug),isObjectStrict(contentTypeInSlug)&&hasItemLocale){const localizedTypeSlug=contentTypeInSlug[itemLocale];isString(localizedTypeSlug)&&(typeSlug=localizedTypeSlug)}const isHierarchical=hierarchicalTypes.includes(contentType);let parents=[],hasParents=!1;getParentSlug(isHierarchical?id:archiveId,isHierarchical?contentType:archiveContentType,parents,taxonomyInfo,itemLocale),parents.length&&(parentSlugs=parents.map(({slug:slug})=>slug).join("/"),hasParents=!0),parents=isHierarchical?[...archiveParents,...parents]:[...parents,...archiveParents];const isIndex="index"===slug;if(isIndex&&!returnParents&&(slug=""),hasLocale&&parts.push(locale),hasParents&&!isHierarchical&&parts.push(parentSlugs),typeSlug&&parts.push(typeSlug),taxSlug&&parts.push(taxSlug),hasParents&&isHierarchical&&parts.push(parentSlugs),isStringStrict(slug)&&!isIndex&&parts.push(slug),parts=applyFilters("slugParts",parts,args),params){const paramsStr=new URLSearchParams(params).toString();paramsStr&&parts.push(`?${paramsStr}`)}let fullSlug=parts.length?parts.join("/"):"";if(fullSlug=applyFilters("slug",fullSlug,args),returnParents){return{slug:fullSlug,parents:parents}}return fullSlug},getPermalink=(slug="",trailingSlash=!0)=>{let url="";if(config.env.prod&&(url=config.env.prodUrl),!isStringStrict(slug)||"/"===slug)return`${url}/`;const hasStartSlash=slug.startsWith("/"),hasEndSlash=slug.endsWith("/");return hasStartSlash||(slug=`/${slug}`),!hasEndSlash&&trailingSlash&&(slug=`${slug}/`),`${url}${slug}`},getLink=(internalLink,externalLink)=>{if(isObjectStrict(internalLink)){const slug=internalLink.slug,res=getSlug({id:internalLink.id,contentType:internalLink.contentType,itemData:internalLink,slug:isString(slug)?slug:""});return getPermalink(res)}return isStringStrict(externalLink)?externalLink:""};export{getSlug,getLink,getPermalink};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { RenderItem } from '../../render/renderTypes.js';
|
|
2
2
|
import type { Parent } from '../../global/globalTypes.js';
|
|
3
3
|
export interface LinkSlugArgs {
|
|
4
|
-
id?: string;
|
|
5
4
|
slug: string;
|
|
6
|
-
|
|
5
|
+
id?: string;
|
|
7
6
|
contentType?: string;
|
|
8
7
|
itemData?: RenderItem;
|
|
8
|
+
params?: Record<string, string> | string;
|
|
9
9
|
}
|
|
10
10
|
export interface LinkSlugReturn {
|
|
11
11
|
slug: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alanizcreative/formation-static",
|
|
3
|
-
"version": "1.3.0-beta.
|
|
3
|
+
"version": "1.3.0-beta.43",
|
|
4
4
|
"description": "Foundation and utilities to build static sites using local JSON files, Contentful, or WordPress",
|
|
5
5
|
"main": "./lib/config/config.js",
|
|
6
6
|
"packageManager": "pnpm@10.12.3",
|