diff --git a/.github/workflows/CD.yml b/.github/workflows/CD.yml index bc0660549..9f1c7337d 100644 --- a/.github/workflows/CD.yml +++ b/.github/workflows/CD.yml @@ -6,7 +6,7 @@ on: - master jobs: - deploy_2023: + deploy_2024: runs-on: ubuntu-latest permissions: pages: write @@ -15,8 +15,8 @@ jobs: name: github-pages url: ${{ steps.deployment.outputs.page_url }} steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: 20 cache: npm @@ -26,7 +26,9 @@ jobs: - run: mv 2019/public dist/2019 - run: mv 2021/public dist/2021 - run: mv 2022/public dist/2022 - - run: cd 2023 && npm ci --legacy-peer-deps && npm run build -- --prefix-paths && mv public ../dist/2023 + - run: mv 2023/public dist/2023 + - run: cd 2024 && npm i && npm run build -- --prefix-paths --verbose && (mv public/2024 ../dist || mkdir ../dist/2024) && cp -r public/* ../dist/2024 + - run: find dist - uses: actions/upload-pages-artifact@v1 with: path: dist diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index afc94bbdf..3674ee006 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -3,25 +3,25 @@ name: CI on: [pull_request] jobs: - build_2023: + build_2024: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: 20 cache: npm - cache-dependency-path: 2023/package-lock.json - - run: cd 2023 && npm ci --legacy-peer-deps - - run: cd 2023 && npm run build -- --prefix-paths - test_2023: + cache-dependency-path: 2024/package-lock.json + - run: cd 2024 && npm ci --legacy-peer-deps + - run: cd 2024 && npm run build -- --prefix-paths + test_2024: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: 20 cache: npm - cache-dependency-path: 2023/package-lock.json - - run: cd 2023 && npm ci --legacy-peer-deps - - run: cd 2023 && npm test + cache-dependency-path: 2024/package-lock.json + - run: cd 2024 && npm ci --legacy-peer-deps + - run: cd 2024 && npm test diff --git a/2023/.gitignore b/2023/.gitignore index fc6fed831..0bd14876c 100644 --- a/2023/.gitignore +++ b/2023/.gitignore @@ -56,7 +56,7 @@ typings/ # gatsby files .cache/ -public +# public # Mac files .DS_Store diff --git a/2023/public/5af7a9281ad5d3415401554ef3e0cfc8a2927b07-5ca5fd130ed90f290de4.js b/2023/public/5af7a9281ad5d3415401554ef3e0cfc8a2927b07-5ca5fd130ed90f290de4.js new file mode 100644 index 000000000..d1f5200c0 --- /dev/null +++ b/2023/public/5af7a9281ad5d3415401554ef3e0cfc8a2927b07-5ca5fd130ed90f290de4.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkjsconfjp_2023=self.webpackChunkjsconfjp_2023||[]).push([[28],{3204:function(e){const t=/[\p{Lu}]/u,a=/[\p{Ll}]/u,r=/^[\p{Lu}](?![\p{Lu}])/gu,n=/([\p{Alpha}\p{N}_]|$)/u,s=/[_.\- ]+/,i=new RegExp("^"+s.source),o=new RegExp(s.source+n.source,"gu"),l=new RegExp("\\d+"+n.source,"gu"),c=(e,n)=>{if("string"!=typeof e&&!Array.isArray(e))throw new TypeError("Expected the input to be `string | string[]`");if(n={pascalCase:!1,preserveConsecutiveUppercase:!1,...n},0===(e=Array.isArray(e)?e.map((e=>e.trim())).filter((e=>e.length)).join("-"):e.trim()).length)return"";const s=!1===n.locale?e=>e.toLowerCase():e=>e.toLocaleLowerCase(n.locale),c=!1===n.locale?e=>e.toUpperCase():e=>e.toLocaleUpperCase(n.locale);if(1===e.length)return n.pascalCase?c(e):s(e);return e!==s(e)&&(e=((e,r,n)=>{let s=!1,i=!1,o=!1;for(let l=0;l(r.lastIndex=0,e.replace(r,(e=>t(e)))))(e,s):s(e),n.pascalCase&&(e=c(e.charAt(0))+e.slice(1)),((e,t)=>(o.lastIndex=0,l.lastIndex=0,e.replace(o,((e,a)=>t(a))).replace(l,(e=>t(e)))))(e,c)};e.exports=c,e.exports.default=c},8032:function(e,t,a){a.d(t,{G:function(){return O},L:function(){return g},M:function(){return k},P:function(){return E},_:function(){return o},a:function(){return i},b:function(){return u},g:function(){return d},h:function(){return l}});var r=a(7294),n=(a(3204),a(5697)),s=a.n(n);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(n[a]=e[a]);return n}const l=()=>"undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;function c(e,t,a){const r={};let n="gatsby-image-wrapper";return"fixed"===a?(r.width=e,r.height=t):"constrained"===a&&(n="gatsby-image-wrapper gatsby-image-wrapper-constrained"),{className:n,"data-gatsby-image-wrapper":"",style:r}}function u(e,t,a,r,n){return void 0===n&&(n={}),i({},a,{loading:r,shouldLoad:e,"data-main-image":"",style:i({},n,{opacity:t?1:0})})}function d(e,t,a,r,n,s,o,l){const c={};s&&(c.backgroundColor=s,"fixed"===a?(c.width=r,c.height=n,c.backgroundColor=s,c.position="relative"):("constrained"===a||"fullWidth"===a)&&(c.position="absolute",c.top=0,c.left=0,c.bottom=0,c.right=0)),o&&(c.objectFit=o),l&&(c.objectPosition=l);const u=i({},e,{"aria-hidden":!0,"data-placeholder-image":"",style:i({opacity:t?0:1,transition:"opacity 500ms linear"},c)});return u}const p=["children"],m=function(e){let{layout:t,width:a,height:n}=e;return"fullWidth"===t?r.createElement("div",{"aria-hidden":!0,style:{paddingTop:n/a*100+"%"}}):"constrained"===t?r.createElement("div",{style:{maxWidth:a,display:"block"}},r.createElement("img",{alt:"",role:"presentation","aria-hidden":"true",src:`data:image/svg+xml;charset=utf-8,%3Csvg%20height='${n}'%20width='${a}'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E`,style:{maxWidth:"100%",display:"block",position:"static"}})):null},g=function(e){let{children:t}=e,a=o(e,p);return r.createElement(r.Fragment,null,r.createElement(m,i({},a)),t,null)},f=["src","srcSet","loading","alt","shouldLoad"],h=["fallback","sources","shouldLoad"],y=function(e){let{src:t,srcSet:a,loading:n,alt:s="",shouldLoad:l}=e,c=o(e,f);return r.createElement("img",i({},c,{decoding:"async",loading:n,src:l?t:void 0,"data-src":l?void 0:t,srcSet:l?a:void 0,"data-srcset":l?void 0:a,alt:s}))},b=function(e){let{fallback:t,sources:a=[],shouldLoad:n=!0}=e,s=o(e,h);const l=s.sizes||(null==t?void 0:t.sizes),c=r.createElement(y,i({},s,t,{sizes:l,shouldLoad:n}));return a.length?r.createElement("picture",null,a.map((e=>{let{media:t,srcSet:a,type:s}=e;return r.createElement("source",{key:`${t}-${s}-${a}`,type:s,media:t,srcSet:n?a:void 0,"data-srcset":n?void 0:a,sizes:l})})),c):c};var v;y.propTypes={src:n.string.isRequired,alt:n.string.isRequired,sizes:n.string,srcSet:n.string,shouldLoad:n.bool},b.displayName="Picture",b.propTypes={alt:n.string.isRequired,shouldLoad:n.bool,fallback:n.exact({src:n.string.isRequired,srcSet:n.string,sizes:n.string}),sources:n.arrayOf(n.oneOfType([n.exact({media:n.string.isRequired,type:n.string,sizes:n.string,srcSet:n.string.isRequired}),n.exact({media:n.string,type:n.string.isRequired,sizes:n.string,srcSet:n.string.isRequired})]))};const w=["fallback"],E=function(e){let{fallback:t}=e,a=o(e,w);return t?r.createElement(b,i({},a,{fallback:{src:t},"aria-hidden":!0,alt:""})):r.createElement("div",i({},a))};E.displayName="Placeholder",E.propTypes={fallback:n.string,sources:null==(v=b.propTypes)?void 0:v.sources,alt:function(e,t,a){return e[t]?new Error(`Invalid prop \`${t}\` supplied to \`${a}\`. Validation failed.`):null}};const k=function(e){return r.createElement(r.Fragment,null,r.createElement(b,i({},e)),r.createElement("noscript",null,r.createElement(b,i({},e,{shouldLoad:!0}))))};k.displayName="MainImage",k.propTypes=b.propTypes;const L=["as","className","class","style","image","loading","imgClassName","imgStyle","backgroundColor","objectFit","objectPosition"],x=["style","className"],C=e=>e.replace(/\n/g,""),S=function(e,t,a){for(var r=arguments.length,n=new Array(r>3?r-3:0),i=3;iJSON.stringify(n.images)),[n.images]);p&&(d=p);const S=function(e,t,a){let r="";return"fullWidth"===e&&(r=``),"constrained"===e&&(r=`
`),r}(v,y,b);return(0,r.useEffect)((()=>{_||(_=a.e(731).then(a.bind(a,6731)).then((e=>{let{renderImageToString:t,swapPlaceholderImage:a}=e;return $=t,{renderImageToString:t,swapPlaceholderImage:a}})));const e=x.current.querySelector("[data-gatsby-image-ssr]");if(e&&l())return e.complete?(null==m||m({wasCached:!0}),null==g||g({wasCached:!0}),setTimeout((()=>{e.removeAttribute("data-gatsby-image-ssr")}),0)):(null==m||m({wasCached:!0}),e.addEventListener("load",(function t(){e.removeEventListener("load",t),null==g||g({wasCached:!0}),setTimeout((()=>{e.removeAttribute("data-gatsby-image-ssr")}),0)}))),void R.add(C);if($&&R.has(C))return;let t,r;return _.then((e=>{let{renderImageToString:a,swapPlaceholderImage:o}=e;x.current&&(x.current.innerHTML=a(i({isLoading:!0,isLoaded:R.has(C),image:n},h)),R.has(C)||(t=requestAnimationFrame((()=>{x.current&&(r=o(x.current,C,R,s,m,g,f))}))))})),()=>{t&&cancelAnimationFrame(t),r&&r()}}),[n]),(0,r.useLayoutEffect)((()=>{R.has(C)&&$&&(x.current.innerHTML=$(i({isLoading:R.has(C),isLoaded:R.has(C),image:n},h)),null==m||m({wasCached:!0}),null==g||g({wasCached:!0}))}),[n]),(0,r.createElement)(t,i({},L,{style:i({},E,s,{backgroundColor:u}),className:`${k}${d?` ${d}`:""}`,ref:x,dangerouslySetInnerHTML:{__html:S},suppressHydrationWarning:!0}))},O=(0,r.memo)((function(e){return e.image?(0,r.createElement)(j,e):null}));O.propTypes=N,O.displayName="GatsbyImage";const q=["src","__imageData","__error","width","height","aspectRatio","tracedSVGOptions","placeholder","formats","quality","transformOptions","jpgOptions","pngOptions","webpOptions","avifOptions","blurredOptions","breakpoints","outputPixelDensities"];function z(e){return function(t){let{src:a,__imageData:n,__error:s}=t,l=o(t,q);return s&&console.warn(s),n?r.createElement(e,i({image:n},l)):(console.warn("Image not loaded",a),null)}}const A=z((function(e){let{as:t="div",className:a,class:n,style:s,image:l,loading:p="lazy",imgClassName:m,imgStyle:f,backgroundColor:h,objectFit:y,objectPosition:b}=e,v=o(e,L);if(!l)return console.warn("[gatsby-plugin-image] Missing image prop"),null;n&&(a=n),f=i({objectFit:y,objectPosition:b,backgroundColor:h},f);const{width:w,height:S,layout:N,images:T,placeholder:I,backgroundColor:R}=l,_=c(w,S,N),{style:$,className:j}=_,O=o(_,x),q={fallback:void 0,sources:[]};return T.fallback&&(q.fallback=i({},T.fallback,{srcSet:T.fallback.srcSet?C(T.fallback.srcSet):void 0})),T.sources&&(q.sources=T.sources.map((e=>i({},e,{srcSet:C(e.srcSet)})))),r.createElement(t,i({},O,{style:i({},$,s,{backgroundColor:h}),className:`${j}${a?` ${a}`:""}`}),r.createElement(g,{layout:N,width:w,height:S},r.createElement(E,i({},d(I,!1,N,w,S,R,y,b))),r.createElement(k,i({"data-gatsby-image-ssr":"",className:m},v,u("eager"===p,!1,q,p,f)))))})),P=function(e,t){for(var a=arguments.length,r=new Array(a>2?a-2:0),n=2;n{if(void 0!==e.layout&&!F.has(e.layout))return new Error(`Invalid value ${e.layout}" provided for prop "layout". Defaulting to "constrained". Valid values are "fixed", "fullWidth" or "constrained".`)}};A.displayName="StaticImage",A.propTypes=W;const M=z(O);M.displayName="StaticImage",M.propTypes=W},8014:function(e,t,a){a.d(t,{IK:function(){return p},Z0:function(){return u},r6:function(){return d}});var r=a(5785),n=a(7294),s=a(5086);const i=s.default.span.withConfig({displayName:"EventSpeakers__SpeakerText",componentId:"sc-127b1d5-0"})(["color:",";font-size:1em;font-family:",";"],(e=>{let{theme:t}=e;return t.colors.text}),(e=>{let{theme:t}=e;return t.fonts.text})),o=s.default.rt.withConfig({displayName:"EventSpeakers__SpeakerRT",componentId:"sc-127b1d5-1"})(["color:",";font-size:0.6em;font-family:",";"],(e=>{let{theme:t}=e;return t.colors.text}),(e=>{let{theme:t}=e;return t.fonts.text})),l=s.default.span.withConfig({displayName:"EventSpeakers__SponsorText",componentId:"sc-127b1d5-2"})(["color:",";font-size:0.8em;display:block;font-family:",";"],(e=>{let{theme:t}=e;return t.colors.text}),(e=>{let{theme:t}=e;return t.fonts.text})),c=s.default.span.withConfig({displayName:"EventSpeakers__ByLineText",componentId:"sc-127b1d5-3"})(["color:",";font-size:0.8em;font-style:italic;margin:0.5em 0;"],(e=>{let{theme:t}=e;return t.colors.text})),u=e=>{let{speaker:t}=e;return n.createElement(n.Fragment,null,n.createElement(i,null,t.nameReading&&t.nameReading!=t.name?n.createElement("ruby",null,t.name,n.createElement(o,null,t.nameReading.replace(/・/g," "))):t.name),t.sponsor&&n.createElement(l,null,"(",t.sponsor,")"))},d=e=>{let{speakers:t,byLine:a}=e;return n.createElement(n.Fragment,null,Array.from(function*(){let e=!0;for(const r of t)e?(e=!1,a&&(yield n.createElement(c,null,a))):yield n.createElement(c,null,"and"),yield n.createElement(u,{speaker:r})}()))},p=e=>{var t,a;let{session:s,byLine:i}=e;const o=s.sponsors.length?[{name:s.presenterName,nameReading:s.presenterNameReading,sponsor:s.sponsors[0].name}]:(t=null!==(a=s.speakers)&&void 0!==a?a:[]).concat.apply(t,(0,r.Z)(s.presenterName?[{name:s.presenterName,nameReading:s.presenterNameReading}]:[]));return n.createElement(d,{speakers:o,byLine:i})}}}]); +//# sourceMappingURL=5af7a9281ad5d3415401554ef3e0cfc8a2927b07-5ca5fd130ed90f290de4.js.map \ No newline at end of file diff --git a/2023/public/5af7a9281ad5d3415401554ef3e0cfc8a2927b07-5ca5fd130ed90f290de4.js.br b/2023/public/5af7a9281ad5d3415401554ef3e0cfc8a2927b07-5ca5fd130ed90f290de4.js.br new file mode 100644 index 000000000..6b90a1b71 Binary files /dev/null and b/2023/public/5af7a9281ad5d3415401554ef3e0cfc8a2927b07-5ca5fd130ed90f290de4.js.br differ diff --git a/2023/public/5af7a9281ad5d3415401554ef3e0cfc8a2927b07-5ca5fd130ed90f290de4.js.gz b/2023/public/5af7a9281ad5d3415401554ef3e0cfc8a2927b07-5ca5fd130ed90f290de4.js.gz new file mode 100644 index 000000000..87cbb9a80 Binary files /dev/null and b/2023/public/5af7a9281ad5d3415401554ef3e0cfc8a2927b07-5ca5fd130ed90f290de4.js.gz differ diff --git a/2023/public/5af7a9281ad5d3415401554ef3e0cfc8a2927b07-5ca5fd130ed90f290de4.js.map b/2023/public/5af7a9281ad5d3415401554ef3e0cfc8a2927b07-5ca5fd130ed90f290de4.js.map new file mode 100644 index 000000000..ca27c78b5 --- /dev/null +++ b/2023/public/5af7a9281ad5d3415401554ef3e0cfc8a2927b07-5ca5fd130ed90f290de4.js.map @@ -0,0 +1 @@ +{"version":3,"file":"5af7a9281ad5d3415401554ef3e0cfc8a2927b07-5ca5fd130ed90f290de4.js","mappings":"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","sources":["webpack://jsconfjp-2023/./node_modules/camelcase/index.js","webpack://jsconfjp-2023/../src/image-utils.ts","webpack://jsconfjp-2023/../src/components/hooks.ts","webpack://jsconfjp-2023/../src/components/layout-wrapper.tsx","webpack://jsconfjp-2023/../src/components/picture.tsx","webpack://jsconfjp-2023/../src/components/placeholder.tsx","webpack://jsconfjp-2023/../src/components/main-image.tsx","webpack://jsconfjp-2023/../src/components/gatsby-image.server.tsx","webpack://jsconfjp-2023/../src/components/gatsby-image.browser.tsx","webpack://jsconfjp-2023/../src/components/static-image.server.tsx","webpack://jsconfjp-2023/../src/components/static-image.tsx","webpack://jsconfjp-2023/./src/components/EventSpeakers.tsx"],"sourcesContent":["'use strict';\n\nconst UPPERCASE = /[\\p{Lu}]/u;\nconst LOWERCASE = /[\\p{Ll}]/u;\nconst LEADING_CAPITAL = /^[\\p{Lu}](?![\\p{Lu}])/gu;\nconst IDENTIFIER = /([\\p{Alpha}\\p{N}_]|$)/u;\nconst SEPARATORS = /[_.\\- ]+/;\n\nconst LEADING_SEPARATORS = new RegExp('^' + SEPARATORS.source);\nconst SEPARATORS_AND_IDENTIFIER = new RegExp(SEPARATORS.source + IDENTIFIER.source, 'gu');\nconst NUMBERS_AND_IDENTIFIER = new RegExp('\\\\d+' + IDENTIFIER.source, 'gu');\n\nconst preserveCamelCase = (string, toLowerCase, toUpperCase) => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst character = string[i];\n\n\t\tif (isLastCharLower && UPPERCASE.test(character)) {\n\t\t\tstring = string.slice(0, i) + '-' + string.slice(i);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\ti++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && LOWERCASE.test(character)) {\n\t\t\tstring = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = toLowerCase(character) === character && toUpperCase(character) !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = toUpperCase(character) === character && toLowerCase(character) !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst preserveConsecutiveUppercase = (input, toLowerCase) => {\n\tLEADING_CAPITAL.lastIndex = 0;\n\n\treturn input.replace(LEADING_CAPITAL, m1 => toLowerCase(m1));\n};\n\nconst postProcess = (input, toUpperCase) => {\n\tSEPARATORS_AND_IDENTIFIER.lastIndex = 0;\n\tNUMBERS_AND_IDENTIFIER.lastIndex = 0;\n\n\treturn input.replace(SEPARATORS_AND_IDENTIFIER, (_, identifier) => toUpperCase(identifier))\n\t\t.replace(NUMBERS_AND_IDENTIFIER, m => toUpperCase(m));\n};\n\nconst camelCase = (input, options) => {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = {\n\t\tpascalCase: false,\n\t\tpreserveConsecutiveUppercase: false,\n\t\t...options\n\t};\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tconst toLowerCase = options.locale === false ?\n\t\tstring => string.toLowerCase() :\n\t\tstring => string.toLocaleLowerCase(options.locale);\n\tconst toUpperCase = options.locale === false ?\n\t\tstring => string.toUpperCase() :\n\t\tstring => string.toLocaleUpperCase(options.locale);\n\n\tif (input.length === 1) {\n\t\treturn options.pascalCase ? toUpperCase(input) : toLowerCase(input);\n\t}\n\n\tconst hasUpperCase = input !== toLowerCase(input);\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input, toLowerCase, toUpperCase);\n\t}\n\n\tinput = input.replace(LEADING_SEPARATORS, '');\n\n\tif (options.preserveConsecutiveUppercase) {\n\t\tinput = preserveConsecutiveUppercase(input, toLowerCase);\n\t} else {\n\t\tinput = toLowerCase(input);\n\t}\n\n\tif (options.pascalCase) {\n\t\tinput = toUpperCase(input.charAt(0)) + input.slice(1);\n\t}\n\n\treturn postProcess(input, toUpperCase);\n};\n\nmodule.exports = camelCase;\n// TODO: Remove this for the next major release\nmodule.exports.default = camelCase;\n","import camelCase from \"camelcase\"\nimport type { IGatsbyImageData } from \"./index\"\n\nconst DEFAULT_PIXEL_DENSITIES = [0.25, 0.5, 1, 2]\nexport const DEFAULT_BREAKPOINTS = [750, 1080, 1366, 1920]\nexport const EVERY_BREAKPOINT = [\n 320, 654, 768, 1024, 1366, 1600, 1920, 2048, 2560, 3440, 3840, 4096,\n]\nconst DEFAULT_FLUID_WIDTH = 800\nconst DEFAULT_FIXED_WIDTH = 800\nconst DEFAULT_ASPECT_RATIO = 4 / 3\n\nexport type Fit = \"cover\" | \"fill\" | \"inside\" | \"outside\" | \"contain\"\n\nexport type Layout = \"fixed\" | \"fullWidth\" | \"constrained\"\nexport type ImageFormat = \"jpg\" | \"png\" | \"webp\" | \"avif\" | \"auto\" | \"\"\n\n/**\n * The minimal required reporter, as we don't want to import it from gatsby-cli\n */\nexport interface IReporter {\n warn(message: string): void\n}\n\nexport interface ISharpGatsbyImageArgs {\n layout?: Layout\n formats?: Array\n placeholder?: \"tracedSVG\" | \"dominantColor\" | \"blurred\" | \"none\"\n tracedSVGOptions?: Record\n width?: number\n height?: number\n aspectRatio?: number\n sizes?: string\n quality?: number\n transformOptions?: {\n fit?: Fit\n cropFocus?: number | string\n duotone?: {\n highlight: string\n shadow: string\n opacity?: number\n }\n grayscale?: boolean\n rotate?: number\n trim?: number\n }\n jpgOptions?: Record\n pngOptions?: Record\n webpOptions?: Record\n avifOptions?: Record\n blurredOptions?: { width?: number; toFormat?: ImageFormat }\n breakpoints?: Array\n outputPixelDensities?: Array\n backgroundColor?: string\n}\n\nexport interface IImageSizeArgs {\n width?: number\n height?: number\n layout?: Layout\n filename: string\n outputPixelDensities?: Array\n breakpoints?: Array\n fit?: Fit\n reporter?: IReporter\n sourceMetadata: { width: number; height: number }\n}\n\nexport interface IImageSizes {\n sizes: Array\n presentationWidth: number\n presentationHeight: number\n aspectRatio: number\n unscaledWidth: number\n}\n\nexport interface IImage {\n src: string\n width: number\n height: number\n format: ImageFormat\n}\n\nexport interface IGatsbyImageHelperArgs {\n pluginName: string\n generateImageSource: (\n filename: string,\n width: number,\n height: number,\n format: ImageFormat,\n fit?: Fit,\n options?: Record\n ) => IImage\n layout?: Layout\n formats?: Array\n filename: string\n placeholderURL?: string\n width?: number\n height?: number\n sizes?: string\n reporter?: IReporter\n sourceMetadata?: { width: number; height: number; format: ImageFormat }\n fit?: Fit\n options?: Record\n breakpoints?: Array\n backgroundColor?: string\n aspectRatio?: number\n}\n\nconst warn = (message: string): void => console.warn(message)\n\nconst sortNumeric = (a: number, b: number): number => a - b\n\nexport const getSizes = (width: number, layout: Layout): string | undefined => {\n switch (layout) {\n // If screen is wider than the max size, image width is the max size,\n // otherwise it's the width of the screen\n case `constrained`:\n return `(min-width: ${width}px) ${width}px, 100vw`\n\n // Image is always the same width, whatever the size of the screen\n case `fixed`:\n return `${width}px`\n\n // Image is always the width of the screen\n case `fullWidth`:\n return `100vw`\n\n default:\n return undefined\n }\n}\n\nexport const getSrcSet = (images: Array): string =>\n images.map(image => `${image.src} ${image.width}w`).join(`,\\n`)\n\nexport function formatFromFilename(filename: string): ImageFormat | undefined {\n const dot = filename.lastIndexOf(`.`)\n if (dot !== -1) {\n const ext = filename.slice(dot + 1)\n if (ext === `jpeg`) {\n return `jpg`\n }\n if (ext.length === 3 || ext.length === 4) {\n return ext as ImageFormat\n }\n }\n return undefined\n}\n\nexport function setDefaultDimensions(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageHelperArgs {\n let {\n layout = `constrained`,\n width,\n height,\n sourceMetadata,\n breakpoints,\n aspectRatio,\n formats = [`auto`, `webp`],\n } = args\n formats = formats.map(format => format.toLowerCase() as ImageFormat)\n layout = camelCase(layout) as Layout\n\n if (width && height) {\n return { ...args, formats, layout, aspectRatio: width / height }\n }\n if (sourceMetadata.width && sourceMetadata.height && !aspectRatio) {\n aspectRatio = sourceMetadata.width / sourceMetadata.height\n }\n\n if (layout === `fullWidth`) {\n width = width || sourceMetadata.width || breakpoints[breakpoints.length - 1]\n height = height || Math.round(width / (aspectRatio || DEFAULT_ASPECT_RATIO))\n } else {\n if (!width) {\n if (height && aspectRatio) {\n width = height * aspectRatio\n } else if (sourceMetadata.width) {\n width = sourceMetadata.width\n } else if (height) {\n width = Math.round(height / DEFAULT_ASPECT_RATIO)\n } else {\n width = DEFAULT_FIXED_WIDTH\n }\n }\n\n if (aspectRatio && !height) {\n height = Math.round(width / aspectRatio)\n } else if (!aspectRatio) {\n aspectRatio = width / height\n }\n }\n return { ...args, width, height, aspectRatio, layout, formats }\n}\n\n/**\n * Use this for getting an image for the blurred placeholder. This ensures the\n * aspect ratio and crop match the main image\n */\nexport function getLowResolutionImageURL(\n args: IGatsbyImageHelperArgs,\n width = 20\n): string {\n args = setDefaultDimensions(args)\n const { generateImageSource, filename, aspectRatio } = args\n return generateImageSource(\n filename,\n width,\n Math.round(width / aspectRatio),\n args.sourceMetadata.format || `jpg`,\n args.fit,\n args.options\n )?.src\n}\n\nexport function generateImageData(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageData {\n args = setDefaultDimensions(args)\n\n let {\n pluginName,\n sourceMetadata,\n generateImageSource,\n layout,\n fit,\n options,\n width,\n height,\n filename,\n reporter = { warn },\n backgroundColor,\n placeholderURL,\n } = args\n\n if (!pluginName) {\n reporter.warn(\n `[gatsby-plugin-image] \"generateImageData\" was not passed a plugin name`\n )\n }\n\n if (typeof generateImageSource !== `function`) {\n throw new Error(`generateImageSource must be a function`)\n }\n\n if (!sourceMetadata || (!sourceMetadata.width && !sourceMetadata.height)) {\n // No metadata means we let the CDN handle max size etc, aspect ratio etc\n sourceMetadata = {\n width,\n height,\n format: sourceMetadata?.format || formatFromFilename(filename) || `auto`,\n }\n } else if (!sourceMetadata.format) {\n sourceMetadata.format = formatFromFilename(filename)\n }\n\n const formats = new Set(args.formats)\n\n if (formats.size === 0 || formats.has(`auto`) || formats.has(``)) {\n formats.delete(`auto`)\n formats.delete(``)\n formats.add(sourceMetadata.format)\n }\n\n if (formats.has(`jpg`) && formats.has(`png`)) {\n reporter.warn(\n `[${pluginName}] Specifying both 'jpg' and 'png' formats is not supported. Using 'auto' instead`\n )\n if (sourceMetadata.format === `jpg`) {\n formats.delete(`png`)\n } else {\n formats.delete(`jpg`)\n }\n }\n\n const imageSizes = calculateImageSizes({ ...args, sourceMetadata })\n\n const result: IGatsbyImageData[\"images\"] = {\n sources: [],\n }\n\n let sizes = args.sizes\n if (!sizes) {\n sizes = getSizes(imageSizes.presentationWidth, layout)\n }\n\n formats.forEach(format => {\n const images = imageSizes.sizes\n .map(size => {\n const imageSrc = generateImageSource(\n filename,\n size,\n Math.round(size / imageSizes.aspectRatio),\n format,\n fit,\n options\n )\n if (\n !imageSrc?.width ||\n !imageSrc.height ||\n !imageSrc.src ||\n !imageSrc.format\n ) {\n reporter.warn(\n `[${pluginName}] The resolver for image ${filename} returned an invalid value.`\n )\n return undefined\n }\n return imageSrc\n })\n .filter(Boolean)\n\n if (format === `jpg` || format === `png` || format === `auto`) {\n const unscaled =\n images.find(img => img.width === imageSizes.unscaledWidth) || images[0]\n\n if (unscaled) {\n result.fallback = {\n src: unscaled.src,\n srcSet: getSrcSet(images),\n sizes,\n }\n }\n } else {\n result.sources?.push({\n srcSet: getSrcSet(images),\n sizes,\n type: `image/${format}`,\n })\n }\n })\n\n const imageProps: Partial = {\n images: result,\n layout,\n backgroundColor,\n }\n\n if (placeholderURL) {\n imageProps.placeholder = { fallback: placeholderURL }\n }\n\n switch (layout) {\n case `fixed`:\n imageProps.width = imageSizes.presentationWidth\n imageProps.height = imageSizes.presentationHeight\n break\n\n case `fullWidth`:\n imageProps.width = 1\n imageProps.height = 1 / imageSizes.aspectRatio\n break\n\n case `constrained`:\n imageProps.width = args.width || imageSizes.presentationWidth || 1\n imageProps.height = (imageProps.width || 1) / imageSizes.aspectRatio\n }\n\n return imageProps as IGatsbyImageData\n}\n\nconst dedupeAndSortDensities = (values: Array): Array =>\n Array.from(new Set([1, ...values])).sort(sortNumeric)\n\nexport function calculateImageSizes(args: IImageSizeArgs): IImageSizes {\n const {\n width,\n height,\n filename,\n layout = `constrained`,\n sourceMetadata: imgDimensions,\n reporter = { warn },\n breakpoints = DEFAULT_BREAKPOINTS,\n } = args\n\n // check that all dimensions provided are positive\n const userDimensions = { width, height }\n const erroneousUserDimensions = Object.entries(userDimensions).filter(\n ([_, size]) => typeof size === `number` && size < 1\n )\n if (erroneousUserDimensions.length) {\n throw new Error(\n `Specified dimensions for images must be positive numbers (> 0). Problem dimensions you have are ${erroneousUserDimensions\n .map(dim => dim.join(`: `))\n .join(`, `)}`\n )\n }\n\n if (layout === `fixed`) {\n return fixedImageSizes(args)\n } else if (layout === `constrained`) {\n return responsiveImageSizes(args)\n } else if (layout === `fullWidth`) {\n return responsiveImageSizes({ breakpoints, ...args })\n } else {\n reporter.warn(\n `No valid layout was provided for the image at ${filename}. Valid image layouts are fixed, fullWidth, and constrained. Found ${layout}`\n )\n return {\n sizes: [imgDimensions.width],\n presentationWidth: imgDimensions.width,\n presentationHeight: imgDimensions.height,\n aspectRatio: imgDimensions.width / imgDimensions.height,\n unscaledWidth: imgDimensions.width,\n }\n }\n}\nexport function fixedImageSizes({\n filename,\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n reporter = { warn },\n}: IImageSizeArgs): IImageSizes {\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n if (!width) {\n if (!height) {\n width = DEFAULT_FIXED_WIDTH\n } else {\n width = Math.round(height * aspectRatio)\n }\n } else if (!height) {\n height = Math.round(width / aspectRatio)\n }\n\n const originalWidth = width // will use this for presentationWidth, don't want to lose it\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n\n // If the image is smaller than requested, warn the user that it's being processed as such\n // print out this message with the necessary information before we overwrite it for sizing\n if (isTopSizeOverriden) {\n const fixedDimension = imgDimensions.width < width ? `width` : `height`\n reporter.warn(`\nThe requested ${fixedDimension} \"${\n fixedDimension === `width` ? width : height\n }px\" for the image ${filename} was larger than the actual image ${fixedDimension} of ${\n imgDimensions[fixedDimension]\n }px. If possible, replace the current image with a larger one.`)\n\n if (fixedDimension === `width`) {\n width = imgDimensions.width\n height = Math.round(width / aspectRatio)\n } else {\n height = imgDimensions.height\n width = height * aspectRatio\n }\n }\n\n const sizes = densities\n .filter(size => size >= 1) // remove smaller densities because fixed images don't need them\n .map(density => Math.round(density * (width as number)))\n .filter(size => size <= imgDimensions.width)\n\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function responsiveImageSizes({\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n breakpoints,\n layout,\n}: IImageSizeArgs): IImageSizes {\n let sizes\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n // Case 1: width of height were passed in, make sure it isn't larger than the actual image\n width = width && Math.min(width, imgDimensions.width)\n height = height && Math.min(height, imgDimensions.height)\n\n // Case 2: neither width or height were passed in, use default size\n if (!width && !height) {\n width = Math.min(DEFAULT_FLUID_WIDTH, imgDimensions.width)\n height = width / aspectRatio\n }\n\n // if it still hasn't been found, calculate width from the derived height.\n // TS isn't smart enough to realise the type for height has been narrowed here\n if (!width) {\n width = (height as number) * aspectRatio\n }\n\n const originalWidth = width\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n if (isTopSizeOverriden) {\n width = imgDimensions.width\n height = imgDimensions.height\n }\n\n width = Math.round(width)\n\n if (breakpoints?.length > 0) {\n sizes = breakpoints.filter(size => size <= imgDimensions.width)\n\n // If a larger breakpoint has been filtered-out, add the actual image width instead\n if (\n sizes.length < breakpoints.length &&\n !sizes.includes(imgDimensions.width)\n ) {\n sizes.push(imgDimensions.width)\n }\n } else {\n sizes = densities.map(density => Math.round(density * (width as number)))\n sizes = sizes.filter(size => size <= imgDimensions.width)\n }\n\n // ensure that the size passed in is included in the final output\n if (layout === `constrained` && !sizes.includes(width)) {\n sizes.push(width)\n }\n sizes = sizes.sort(sortNumeric)\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function getDimensionsAndAspectRatio(\n dimensions,\n options\n): { width: number; height: number; aspectRatio: number } {\n // Calculate the eventual width/height of the image.\n const imageAspectRatio = dimensions.width / dimensions.height\n\n let width = options.width\n let height = options.height\n\n switch (options.fit) {\n case `fill`: {\n width = options.width ? options.width : dimensions.width\n height = options.height ? options.height : dimensions.height\n break\n }\n case `inside`: {\n const widthOption = options.width\n ? options.width\n : Number.MAX_SAFE_INTEGER\n const heightOption = options.height\n ? options.height\n : Number.MAX_SAFE_INTEGER\n\n width = Math.min(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.min(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n case `outside`: {\n const widthOption = options.width ? options.width : 0\n const heightOption = options.height ? options.height : 0\n\n width = Math.max(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.max(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n\n default: {\n if (options.width && !options.height) {\n width = options.width\n height = Math.round(options.width / imageAspectRatio)\n }\n\n if (options.height && !options.width) {\n width = Math.round(options.height * imageAspectRatio)\n height = options.height\n }\n }\n }\n\n return {\n width,\n height,\n aspectRatio: width / height,\n }\n}\n","/* global GATSBY___IMAGE */\nimport { generateImageData, EVERY_BREAKPOINT } from \"../image-utils\"\nimport type { CSSProperties, HTMLAttributes, ImgHTMLAttributes } from \"react\"\nimport type { Node } from \"gatsby\"\nimport type { PlaceholderProps } from \"./placeholder\"\nimport type { MainImageProps } from \"./main-image\"\nimport type { IGatsbyImageData } from \"./gatsby-image.browser\"\nimport type {\n IGatsbyImageHelperArgs,\n Layout,\n IImage,\n ImageFormat,\n} from \"../image-utils\"\n\n// Native lazy-loading support: https://addyosmani.com/blog/lazy-loading/\nexport const hasNativeLazyLoadSupport = (): boolean =>\n typeof HTMLImageElement !== `undefined` &&\n `loading` in HTMLImageElement.prototype\n\nexport function gatsbyImageIsInstalled(): boolean {\n return typeof GATSBY___IMAGE !== `undefined` && GATSBY___IMAGE\n}\n\nexport type IGatsbyImageDataParent = T & {\n gatsbyImageData: IGatsbyImageData\n}\nexport type IGatsbyImageParent = T & {\n gatsbyImage: IGatsbyImageData\n}\nexport type FileNode = Partial & {\n childImageSharp?: IGatsbyImageDataParent>\n}\n\nconst isGatsbyImageData = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageData | any\n): node is IGatsbyImageData =>\n // 🦆 check for a deep prop to be sure this is a valid gatsbyImageData object\n Boolean(node?.images?.fallback?.src)\n\nconst isGatsbyImageDataParent = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageDataParent | any\n): node is IGatsbyImageDataParent => Boolean(node?.gatsbyImageData)\n\nconst isGatsbyImageParent = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageParent | any\n): node is IGatsbyImageParent => Boolean(node?.gatsbyImage)\n\nexport type ImageDataLike =\n | FileNode\n | IGatsbyImageDataParent\n | IGatsbyImageParent\n | IGatsbyImageData\n\nexport const getImage = (\n node: ImageDataLike | null\n): IGatsbyImageData | undefined => {\n // This checks both for gatsbyImageData and gatsbyImage\n if (isGatsbyImageData(node)) {\n return node\n }\n // gatsbyImageData GraphQL field\n if (isGatsbyImageDataParent(node)) {\n return node.gatsbyImageData\n }\n // gatsbyImage GraphQL field for Gatsby's Image CDN service\n if (isGatsbyImageParent(node)) {\n return node.gatsbyImage\n }\n return node?.childImageSharp?.gatsbyImageData\n}\n\nexport const getSrc = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.src\n\nexport const getSrcSet = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.srcSet\n\nexport function getWrapperProps(\n width: number,\n height: number,\n layout: Layout\n): Pick, \"className\" | \"style\"> & {\n \"data-gatsby-image-wrapper\": string\n} {\n const wrapperStyle: CSSProperties = {}\n\n let className = `gatsby-image-wrapper`\n\n // If the plugin isn't installed we need to apply the styles inline\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.position = `relative`\n wrapperStyle.overflow = `hidden`\n }\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n } else if (layout === `constrained`) {\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.display = `inline-block`\n wrapperStyle.verticalAlign = `top`\n }\n className = `gatsby-image-wrapper gatsby-image-wrapper-constrained`\n }\n\n return {\n className,\n \"data-gatsby-image-wrapper\": ``,\n style: wrapperStyle,\n }\n}\n\nexport interface IUrlBuilderArgs {\n width: number\n height: number\n baseUrl: string\n format: ImageFormat\n options: OptionsType\n}\nexport interface IGetImageDataArgs> {\n baseUrl: string\n /**\n * For constrained and fixed images, the size of the image element\n */\n width?: number\n height?: number\n /**\n * If available, pass the source image width and height\n */\n sourceWidth?: number\n sourceHeight?: number\n /**\n * If only one dimension is passed, then this will be used to calculate the other.\n */\n aspectRatio?: number\n layout?: Layout\n /**\n * Returns a URL based on the passed arguments. Should be a pure function\n */\n urlBuilder: (args: IUrlBuilderArgs) => string\n\n /**\n * Should be a data URI\n */\n placeholderURL?: string\n backgroundColor?: string\n /**\n * Used in error messages etc\n */\n pluginName?: string\n\n /**\n * If you do not support auto-format, pass an array of image types here\n */\n formats?: Array\n\n breakpoints?: Array\n\n /**\n * Passed to the urlBuilder function\n */\n options?: OptionsType\n}\n\n/**\n * Use this hook to generate gatsby-plugin-image data in the browser.\n */\nexport function getImageData({\n baseUrl,\n urlBuilder,\n sourceWidth,\n sourceHeight,\n pluginName = `getImageData`,\n formats = [`auto`],\n breakpoints,\n options,\n ...props\n}: IGetImageDataArgs): IGatsbyImageData {\n if (\n !breakpoints?.length &&\n (props.layout === `fullWidth` || (props.layout as string) === `FULL_WIDTH`)\n ) {\n breakpoints = EVERY_BREAKPOINT\n }\n const generateImageSource = (\n baseUrl: string,\n width: number,\n height?: number,\n format?: ImageFormat\n ): IImage => {\n return {\n width,\n height,\n format,\n src: urlBuilder({ baseUrl, width, height, options, format }),\n }\n }\n\n const sourceMetadata: IGatsbyImageHelperArgs[\"sourceMetadata\"] = {\n width: sourceWidth,\n height: sourceHeight,\n format: `auto`,\n }\n\n const args: IGatsbyImageHelperArgs = {\n ...props,\n pluginName,\n generateImageSource,\n filename: baseUrl,\n formats,\n breakpoints,\n sourceMetadata,\n }\n return generateImageData(args)\n}\n\nexport function getMainProps(\n isLoading: boolean,\n isLoaded: boolean,\n images: IGatsbyImageData[\"images\"],\n loading?: \"eager\" | \"lazy\",\n style: CSSProperties = {}\n): Partial {\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n transform: `translateZ(0)`,\n transition: `opacity 250ms linear`,\n width: `100%`,\n willChange: `opacity`,\n ...style,\n }\n }\n\n const result = {\n ...images,\n loading,\n shouldLoad: isLoading,\n \"data-main-image\": ``,\n style: {\n ...style,\n opacity: isLoaded ? 1 : 0,\n },\n }\n\n return result\n}\n\nexport type PlaceholderImageAttrs = ImgHTMLAttributes &\n Pick & {\n \"data-placeholder-image\"?: string\n }\n\nexport function getPlaceholderProps(\n placeholder: PlaceholderImageAttrs | undefined,\n isLoaded: boolean,\n layout: Layout,\n width?: number,\n height?: number,\n backgroundColor?: string,\n objectFit?: CSSProperties[\"objectFit\"],\n objectPosition?: CSSProperties[\"objectPosition\"]\n): PlaceholderImageAttrs {\n const wrapperStyle: CSSProperties = {}\n\n if (backgroundColor) {\n wrapperStyle.backgroundColor = backgroundColor\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n wrapperStyle.backgroundColor = backgroundColor\n wrapperStyle.position = `relative`\n } else if (layout === `constrained`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n } else if (layout === `fullWidth`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n }\n }\n\n if (objectFit) {\n wrapperStyle.objectFit = objectFit\n }\n\n if (objectPosition) {\n wrapperStyle.objectPosition = objectPosition\n }\n const result: PlaceholderImageAttrs = {\n ...placeholder,\n \"aria-hidden\": true,\n \"data-placeholder-image\": ``,\n style: {\n opacity: isLoaded ? 0 : 1,\n transition: `opacity 500ms linear`,\n ...wrapperStyle,\n },\n }\n\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n result.style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n width: `100%`,\n }\n }\n\n return result\n}\n\nexport interface IArtDirectedImage {\n media: string\n image: IGatsbyImageData\n}\n\n/**\n * Generate a Gatsby image data object with multiple, art-directed images that display at different\n * resolutions.\n *\n * @param defaultImage The image displayed when no media query matches.\n * It is also used for all other settings applied to the image, such as width, height and layout.\n * You should pass a className to the component with media queries to adjust the size of the container,\n * as this cannot be adjusted automatically.\n * @param artDirected Array of objects which each contains a `media` string which is a media query\n * such as `(min-width: 320px)`, and the image object to use when that query matches.\n */\nexport function withArtDirection(\n defaultImage: IGatsbyImageData,\n artDirected: Array\n): IGatsbyImageData {\n const { images, placeholder, ...props } = defaultImage\n const output: IGatsbyImageData = {\n ...props,\n images: {\n ...images,\n sources: [],\n },\n placeholder: placeholder && {\n ...placeholder,\n sources: [],\n },\n }\n\n artDirected.forEach(({ media, image }) => {\n if (!media) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(\n \"[gatsby-plugin-image] All art-directed images passed to must have a value set for `media`. Skipping.\"\n )\n }\n return\n }\n\n if (\n image.layout !== defaultImage.layout &&\n process.env.NODE_ENV === `development`\n ) {\n console.warn(\n `[gatsby-plugin-image] Mismatched image layout: expected \"${defaultImage.layout}\" but received \"${image.layout}\". All art-directed images use the same layout as the default image`\n )\n }\n\n output.images.sources.push(\n ...image.images.sources.map(source => {\n return { ...source, media }\n }),\n {\n media,\n srcSet: image.images.fallback.srcSet,\n }\n )\n\n if (!output.placeholder) {\n return\n }\n\n output.placeholder.sources.push({\n media,\n srcSet: image.placeholder.fallback,\n })\n })\n output.images.sources.push(...images.sources)\n if (placeholder?.sources) {\n output.placeholder?.sources.push(...placeholder.sources)\n }\n return output\n}\n","import React, { Fragment, FunctionComponent, PropsWithChildren } from \"react\"\nimport terserMacro from \"../../macros/terser.macro\"\nimport { Layout } from \"../image-utils\"\n\nexport interface ILayoutWrapperProps {\n layout: Layout\n width: number\n height: number\n}\n\nconst NativeScriptLoading: FunctionComponent = () => (\n \n)\n\nexport function getSizer(\n layout: Layout,\n width: number,\n height: number\n): string {\n let sizer = ``\n if (layout === `fullWidth`) {\n sizer = `
`\n }\n\n if (layout === `constrained`) {\n sizer = `
\"\"
`\n }\n\n return sizer\n}\n\nconst Sizer: FunctionComponent = function Sizer({\n layout,\n width,\n height,\n}) {\n if (layout === `fullWidth`) {\n return (\n
\n )\n }\n\n if (layout === `constrained`) {\n return (\n
\n \n
\n )\n }\n\n return null\n}\n\nexport const LayoutWrapper: FunctionComponent<\n PropsWithChildren\n> = function LayoutWrapper({ children, ...props }) {\n return (\n \n \n {children}\n\n {SERVER ? : null}\n \n )\n}\n","import React, { FunctionComponent, ImgHTMLAttributes } from \"react\"\nimport * as PropTypes from \"prop-types\"\n\nexport interface IResponsiveImageProps {\n sizes?: string\n srcSet: string\n}\n\nexport type SourceProps = IResponsiveImageProps &\n (\n | {\n media: string\n type?: string\n }\n | {\n media?: string\n type: string\n }\n )\n\ntype FallbackProps = { src: string } & Partial\n\ntype ImageProps = ImgHTMLAttributes & {\n src: string\n alt: string\n shouldLoad: boolean\n}\n\nexport type PictureProps = ImgHTMLAttributes & {\n fallback?: FallbackProps\n sources?: Array\n alt: string\n shouldLoad?: boolean\n}\n\nconst Image: FunctionComponent = function Image({\n src,\n srcSet,\n loading,\n alt = ``,\n shouldLoad,\n ...props\n}) {\n return (\n \n )\n}\n\nexport const Picture: React.FC = function Picture({\n fallback,\n sources = [],\n shouldLoad = true,\n ...props\n}) {\n const sizes = props.sizes || fallback?.sizes\n const fallbackImage = (\n \n )\n\n if (!sources.length) {\n return fallbackImage\n }\n\n return (\n \n {sources.map(({ media, srcSet, type }) => (\n \n ))}\n {fallbackImage}\n \n )\n}\n\nImage.propTypes = {\n src: PropTypes.string.isRequired,\n alt: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string,\n shouldLoad: PropTypes.bool,\n}\n\nPicture.displayName = `Picture`\nPicture.propTypes = {\n alt: PropTypes.string.isRequired,\n shouldLoad: PropTypes.bool,\n fallback: PropTypes.exact({\n src: PropTypes.string.isRequired,\n srcSet: PropTypes.string,\n sizes: PropTypes.string,\n }),\n sources: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.exact({\n media: PropTypes.string.isRequired,\n type: PropTypes.string,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n PropTypes.exact({\n media: PropTypes.string,\n type: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n ])\n ),\n}\n","import React, { FunctionComponent, ImgHTMLAttributes } from \"react\"\nimport * as PropTypes from \"prop-types\"\nimport { Picture, SourceProps } from \"./picture\"\n\nexport type PlaceholderProps = ImgHTMLAttributes & {\n fallback?: string\n sources?: Array\n}\n\nexport const Placeholder: FunctionComponent =\n function Placeholder({ fallback, ...props }) {\n if (fallback) {\n return (\n \n )\n } else {\n return
\n }\n }\n\nPlaceholder.displayName = `Placeholder`\nPlaceholder.propTypes = {\n fallback: PropTypes.string,\n sources: Picture.propTypes?.sources,\n alt: function (props, propName, componentName): Error | null {\n if (!props[propName]) {\n return null\n }\n\n return new Error(\n `Invalid prop \\`${propName}\\` supplied to \\`${componentName}\\`. Validation failed.`\n )\n },\n}\n","import React from \"react\"\nimport { Picture, PictureProps } from \"./picture\"\n\nexport type MainImageProps = PictureProps\n\nexport const MainImage: React.FC = function MainImage(props) {\n return (\n <>\n \n \n \n )\n}\n\nMainImage.displayName = `MainImage`\nMainImage.propTypes = Picture.propTypes\n","import React from \"react\"\nimport { getWrapperProps, getMainProps, getPlaceholderProps } from \"./hooks\"\nimport { Placeholder } from \"./placeholder\"\nimport { MainImage, MainImageProps } from \"./main-image\"\nimport { LayoutWrapper } from \"./layout-wrapper\"\nimport PropTypes from \"prop-types\"\nimport type { FunctionComponent, WeakValidationMap } from \"react\"\nimport type { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\n\nconst removeNewLines = (str: string): string => str.replace(/\\n/g, ``)\n\nexport const GatsbyImage: FunctionComponent =\n function GatsbyImage({\n as = `div`,\n className,\n class: preactClass,\n style,\n image,\n loading = `lazy`,\n imgClassName,\n imgStyle,\n backgroundColor,\n objectFit,\n objectPosition,\n ...props\n }) {\n if (!image) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n return null\n }\n\n if (preactClass) {\n className = preactClass\n }\n\n imgStyle = {\n objectFit,\n objectPosition,\n backgroundColor,\n ...imgStyle,\n }\n\n const {\n width,\n height,\n layout,\n images,\n placeholder,\n backgroundColor: placeholderBackgroundColor,\n } = image\n\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n\n const cleanedImages: IGatsbyImageData[\"images\"] = {\n fallback: undefined,\n sources: [],\n }\n if (images.fallback) {\n cleanedImages.fallback = {\n ...images.fallback,\n srcSet: images.fallback.srcSet\n ? removeNewLines(images.fallback.srcSet)\n : undefined,\n }\n }\n\n if (images.sources) {\n cleanedImages.sources = images.sources.map(source => {\n return {\n ...source,\n srcSet: removeNewLines(source.srcSet),\n }\n })\n }\n\n return React.createElement(\n as,\n {\n ...wrapperProps,\n style: {\n ...wStyle,\n ...style,\n backgroundColor,\n },\n className: `${wClass}${className ? ` ${className}` : ``}`,\n },\n \n \n\n )}\n // When eager is set we want to start the isLoading state on true (we want to load the img without react)\n {...getMainProps(\n loading === `eager`,\n false,\n cleanedImages,\n loading,\n imgStyle\n )}\n />\n \n )\n }\n\nexport const altValidator: PropTypes.Validator = (\n props: GatsbyImageProps,\n propName,\n componentName,\n ...rest\n): Error | undefined => {\n if (!props.alt && props.alt !== ``) {\n return new Error(\n `The \"alt\" prop is required in ${componentName}. If the image is purely presentational then pass an empty string: e.g. alt=\"\". Learn more: https://a11y-style-guide.com/style-guide/section-media.html`\n )\n }\n\n return PropTypes.string(props, propName, componentName, ...rest)\n}\n\nexport const propTypes = {\n image: PropTypes.object.isRequired,\n alt: altValidator,\n} as WeakValidationMap\n","import {\n createElement,\n memo,\n useMemo,\n useEffect,\n useLayoutEffect,\n useRef,\n} from \"react\"\nimport {\n getWrapperProps,\n gatsbyImageIsInstalled,\n hasNativeLazyLoadSupport,\n} from \"./hooks\"\nimport { getSizer } from \"./layout-wrapper\"\nimport { propTypes } from \"./gatsby-image.server\"\nimport type {\n FC,\n ElementType,\n FunctionComponent,\n ImgHTMLAttributes,\n CSSProperties,\n ReactEventHandler,\n} from \"react\"\nimport type { renderImageToString } from \"./lazy-hydrate\"\nimport type { PlaceholderProps } from \"./placeholder\"\nimport type { MainImageProps } from \"./main-image\"\nimport type { Layout } from \"../image-utils\"\n\nconst imageCache = new Set()\nlet renderImageToStringPromise\nlet renderImage: typeof renderImageToString | undefined\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport interface GatsbyImageProps\n extends Omit<\n ImgHTMLAttributes,\n \"placeholder\" | \"onLoad\" | \"src\" | \"srcSet\" | \"width\" | \"height\"\n > {\n alt: string\n as?: ElementType\n className?: string\n class?: string\n imgClassName?: string\n image: IGatsbyImageData\n imgStyle?: CSSProperties\n backgroundColor?: string\n objectFit?: CSSProperties[\"objectFit\"]\n objectPosition?: CSSProperties[\"objectPosition\"]\n onLoad?: (props: { wasCached: boolean }) => void\n onError?: ReactEventHandler\n onStartLoad?: (props: { wasCached: boolean }) => void\n}\n\nexport interface IGatsbyImageData {\n layout: Layout\n width: number\n height: number\n backgroundColor?: string\n images: Pick\n placeholder?: Pick\n}\n\nconst GatsbyImageHydrator: FC = function GatsbyImageHydrator({\n as = `div`,\n image,\n style,\n backgroundColor,\n className,\n class: preactClass,\n onStartLoad,\n onLoad,\n onError,\n ...props\n}) {\n const { width, height, layout } = image\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n const root = useRef()\n const cacheKey = useMemo(() => JSON.stringify(image.images), [image.images])\n\n // Preact uses class instead of className so we need to check for both\n if (preactClass) {\n className = preactClass\n }\n\n const sizer = getSizer(layout, width, height)\n\n useEffect(() => {\n if (!renderImageToStringPromise) {\n renderImageToStringPromise = import(`./lazy-hydrate`).then(\n ({ renderImageToString, swapPlaceholderImage }) => {\n renderImage = renderImageToString\n\n return {\n renderImageToString,\n swapPlaceholderImage,\n }\n }\n )\n }\n\n // The plugin image component is a bit special where if it's server-side rendered, we add extra script tags to support lazy-loading without\n // In this case we stop hydration but fire the correct events.\n const ssrImage = root.current.querySelector(\n `[data-gatsby-image-ssr]`\n ) as HTMLImageElement\n if (ssrImage && hasNativeLazyLoadSupport()) {\n if (ssrImage.complete) {\n // Trigger onStartload and onLoad events\n onStartLoad?.({\n wasCached: true,\n })\n onLoad?.({\n wasCached: true,\n })\n\n // remove ssr key for state updates but add delay to not fight with native code snippt of gatsby-ssr\n setTimeout(() => {\n ssrImage.removeAttribute(`data-gatsby-image-ssr`)\n }, 0)\n } else {\n onStartLoad?.({\n wasCached: true,\n })\n\n ssrImage.addEventListener(`load`, function onLoadListener() {\n ssrImage.removeEventListener(`load`, onLoadListener)\n\n onLoad?.({\n wasCached: true,\n })\n // remove ssr key for state updates but add delay to not fight with native code snippt of gatsby-ssr\n setTimeout(() => {\n ssrImage.removeAttribute(`data-gatsby-image-ssr`)\n }, 0)\n })\n }\n\n imageCache.add(cacheKey)\n\n return\n }\n\n if (renderImage && imageCache.has(cacheKey)) {\n return\n }\n\n let animationFrame\n let cleanupCallback\n renderImageToStringPromise.then(\n ({ renderImageToString, swapPlaceholderImage }) => {\n if (!root.current) {\n return\n }\n\n root.current.innerHTML = renderImageToString({\n isLoading: true,\n isLoaded: imageCache.has(cacheKey),\n image,\n ...props,\n })\n\n if (!imageCache.has(cacheKey)) {\n animationFrame = requestAnimationFrame(() => {\n if (root.current) {\n cleanupCallback = swapPlaceholderImage(\n root.current,\n cacheKey,\n imageCache,\n style,\n onStartLoad,\n onLoad,\n onError\n )\n }\n })\n }\n }\n )\n\n // eslint-disable-next-line consistent-return\n return (): void => {\n if (animationFrame) {\n cancelAnimationFrame(animationFrame)\n }\n if (cleanupCallback) {\n cleanupCallback()\n }\n }\n }, [image])\n\n // useLayoutEffect is ran before React commits to the DOM. This allows us to make sure our HTML is using our cached image version\n useLayoutEffect(() => {\n if (imageCache.has(cacheKey) && renderImage) {\n root.current.innerHTML = renderImage({\n isLoading: imageCache.has(cacheKey),\n isLoaded: imageCache.has(cacheKey),\n image,\n ...props,\n })\n\n // Trigger onStartload and onLoad events\n onStartLoad?.({\n wasCached: true,\n })\n onLoad?.({\n wasCached: true,\n })\n }\n }, [image])\n\n // By keeping all props equal React will keep the component in the DOM\n return createElement(as, {\n ...wrapperProps,\n style: {\n ...wStyle,\n ...style,\n backgroundColor,\n },\n className: `${wClass}${className ? ` ${className}` : ``}`,\n ref: root,\n dangerouslySetInnerHTML: {\n __html: sizer,\n },\n suppressHydrationWarning: true,\n })\n}\n\nexport const GatsbyImage: FunctionComponent = memo(\n function GatsbyImage(props) {\n if (!props.image) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n }\n\n return null\n }\n\n if (!gatsbyImageIsInstalled() && process.env.NODE_ENV === `development`) {\n console.warn(\n `[gatsby-plugin-image] You're missing out on some cool performance features. Please add \"gatsby-plugin-image\" to your gatsby-config.js`\n )\n }\n\n return createElement(GatsbyImageHydrator, props)\n }\n)\n\nGatsbyImage.propTypes = propTypes\nGatsbyImage.displayName = `GatsbyImage`\n","import React, { FunctionComponent, ReactElement } from \"react\"\nimport {\n altValidator,\n GatsbyImage as GatsbyImageServer,\n} from \"./gatsby-image.server\"\nimport { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\nimport PropTypes from \"prop-types\"\nimport { ISharpGatsbyImageArgs } from \"../image-utils\"\n\nexport interface IStaticImageProps\n extends Omit,\n Omit {\n src: string\n filename?: string\n}\n\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nexport function _getStaticImage(\n GatsbyImage: FunctionComponent\n): React.FC {\n return function StaticImage({\n src,\n __imageData: imageData,\n __error,\n // We extract these because they're not meant to be passed-down to GatsbyImage\n /* eslint-disable @typescript-eslint/no-unused-vars */\n width,\n height,\n aspectRatio,\n tracedSVGOptions,\n placeholder,\n formats,\n quality,\n transformOptions,\n jpgOptions,\n pngOptions,\n webpOptions,\n avifOptions,\n blurredOptions,\n breakpoints,\n outputPixelDensities,\n /* eslint-enable @typescript-eslint/no-unused-vars */\n ...props\n }): ReactElement {\n if (__error) {\n console.warn(__error)\n }\n\n if (imageData) {\n return \n }\n console.warn(`Image not loaded`, src)\n if (!__error && process.env.NODE_ENV === `development`) {\n console.warn(\n `Please ensure that \"gatsby-plugin-image\" is included in the plugins array in gatsby-config.js, and that your version of gatsby is at least 2.24.78`\n )\n }\n return null\n }\n}\n\nconst StaticImage: React.FC =\n _getStaticImage(GatsbyImageServer)\n\nconst checkDimensionProps: PropTypes.Validator = (\n props: IStaticImageProps & IPrivateProps,\n propName: keyof IStaticImageProps & IPrivateProps,\n ...rest\n) => {\n if (\n props.layout === `fullWidth` &&\n (propName === `width` || propName === `height`) &&\n props[propName]\n ) {\n return new Error(\n `\"${propName}\" ${props[propName]} may not be passed when layout is fullWidth.`\n )\n }\n return PropTypes.number(props, propName, ...rest)\n}\n\nconst validLayouts = new Set([`fixed`, `fullWidth`, `constrained`])\n\nexport const propTypes = {\n src: PropTypes.string.isRequired,\n alt: altValidator,\n width: checkDimensionProps,\n height: checkDimensionProps,\n sizes: PropTypes.string,\n layout: (props: IStaticImageProps & IPrivateProps): Error | undefined => {\n if (props.layout === undefined) {\n return undefined\n }\n if (validLayouts.has(props.layout)) {\n return undefined\n }\n\n return new Error(\n `Invalid value ${props.layout}\" provided for prop \"layout\". Defaulting to \"constrained\". Valid values are \"fixed\", \"fullWidth\" or \"constrained\".`\n )\n },\n}\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import {\n GatsbyImage as GatsbyImageBrowser,\n IGatsbyImageData,\n} from \"./gatsby-image.browser\"\nimport React from \"react\"\nimport {\n _getStaticImage,\n propTypes,\n IStaticImageProps,\n} from \"./static-image.server\"\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nconst StaticImage: React.FC =\n _getStaticImage(GatsbyImageBrowser)\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import React from \"react\"\nimport styled from \"styled-components\"\nimport { Session } from \"../data/types\"\n\nconst SpeakerText = styled.span`\n color: ${({ theme }) => theme.colors.text};\n font-size: 1em;\n font-family: ${({ theme }) => theme.fonts.text};\n`\nconst SpeakerRT = styled.rt`\n color: ${({ theme }) => theme.colors.text};\n font-size: 0.6em;\n font-family: ${({ theme }) => theme.fonts.text};\n`\nconst SponsorText = styled.span`\n color: ${({ theme }) => theme.colors.text};\n font-size: 0.8em;\n display: block;\n\n font-family: ${({ theme }) => theme.fonts.text};\n`\nconst ByLineText = styled.span`\n color: ${({ theme }) => theme.colors.text};\n font-size: 0.8em;\n font-style: italic;\n margin: 0.5em 0;\n`\n\ntype Props = {\n session: Session\n byLine?: string\n}\ntype EventSpeaker = {\n name: string\n nameReading?: string | undefined\n sponsor?: string | undefined\n}\n\ntype SpeakerNameProps = {\n speaker: EventSpeaker\n}\nexport const SpeakerName = ({ speaker }: SpeakerNameProps) => (\n <>\n \n {speaker.nameReading && speaker.nameReading != speaker.name ? (\n \n {speaker.name}\n {speaker.nameReading.replace(/・/g, \" \")}\n \n ) : (\n speaker.name\n )}\n \n {speaker.sponsor && (\n \n {\"(\"}\n {speaker.sponsor}\n {\")\"}\n \n )}\n \n)\n\nexport interface SpeakerNamesProps {\n speakers: EventSpeaker[]\n byLine?: string\n}\nexport const SpeakerNames = ({ speakers, byLine }: SpeakerNamesProps) => {\n return (\n <>\n {Array.from(\n (function* () {\n let first = true\n for (const speaker of speakers) {\n if (first) {\n first = false\n if (byLine) {\n yield {byLine}\n }\n } else {\n yield and\n }\n yield \n }\n })(),\n )}\n \n )\n}\n\nexport const EventSpeakers = ({ session: s, byLine }: Props) => {\n const speakers: EventSpeaker[] = s.sponsors.length\n ? [\n {\n name: s.presenterName!,\n nameReading: s.presenterNameReading,\n sponsor: s.sponsors[0].name,\n },\n ]\n : ((s.speakers as EventSpeaker[]) ?? []).concat(\n ...(s.presenterName\n ? [{ name: s.presenterName!, nameReading: s.presenterNameReading }]\n : []),\n )\n return \n}\n"],"names":["UPPERCASE","LOWERCASE","LEADING_CAPITAL","IDENTIFIER","SEPARATORS","LEADING_SEPARATORS","RegExp","source","SEPARATORS_AND_IDENTIFIER","NUMBERS_AND_IDENTIFIER","camelCase","input","options","Array","isArray","TypeError","pascalCase","preserveConsecutiveUppercase","map","x","trim","filter","length","join","toLowerCase","locale","string","toLocaleLowerCase","toUpperCase","toLocaleUpperCase","isLastCharLower","isLastCharUpper","isLastLastCharUpper","i","character","test","slice","preserveCamelCase","replace","lastIndex","m1","charAt","_","identifier","m","postProcess","module","exports","W","hasNativeLazyLoadSupport","HTMLImageElement","prototype","z","e","t","a","s","width","height","className","style","P","h","loading","shouldLoad","opacity","A","r","n","o","l","backgroundColor","position","top","left","bottom","right","objectFit","objectPosition","d","transition","H","F","_ref5","layout","paddingTop","maxWidth","display","alt","role","src","G","children","u","V","B","U","srcSet","decoding","Y","fallback","sources","sizes","_ref6","media","type","key","X","propTypes","isRequired","displayName","J","Z","Error","K","Q","ee","te","ae","_len","arguments","_key","c","apply","concat","ie","image","se","re","ne","Set","oe","le","de","as","class","g","onStartLoad","p","onLoad","onError","f","w","y","b","v","E","k","S","M","N","$","JSON","stringify","images","I","then","_ref7","renderImageToString","swapPlaceholderImage","current","querySelector","complete","wasCached","setTimeout","removeAttribute","addEventListener","removeEventListener","add","has","_ref8","innerHTML","isLoading","isLoaded","requestAnimationFrame","cancelAnimationFrame","ref","dangerouslySetInnerHTML","__html","suppressHydrationWarning","ce","he","ue","__imageData","__error","console","warn","ge","imgClassName","imgStyle","placeholder","pe","_len2","_key2","me","fe","we","SpeakerText","styled","span","withConfig","componentId","_ref","theme","colors","text","_ref2","fonts","SpeakerRT","rt","_ref3","_ref4","SponsorText","ByLineText","SpeakerName","speaker","React","nameReading","name","sponsor","SpeakerNames","_ref9","speakers","byLine","from","first","EventSpeakers","_ref10","_ref11","_ref12","session","sponsors","presenterName","presenterNameReading","_toConsumableArray"],"sourceRoot":""} \ No newline at end of file diff --git a/2023/public/5af7a9281ad5d3415401554ef3e0cfc8a2927b07-ab369b0f0e0e71f02d64.js b/2023/public/5af7a9281ad5d3415401554ef3e0cfc8a2927b07-ab369b0f0e0e71f02d64.js new file mode 100644 index 000000000..aa3fea651 --- /dev/null +++ b/2023/public/5af7a9281ad5d3415401554ef3e0cfc8a2927b07-ab369b0f0e0e71f02d64.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkjsconfjp_2023=self.webpackChunkjsconfjp_2023||[]).push([[28],{3204:function(e){const t=/[\p{Lu}]/u,a=/[\p{Ll}]/u,r=/^[\p{Lu}](?![\p{Lu}])/gu,n=/([\p{Alpha}\p{N}_]|$)/u,s=/[_.\- ]+/,i=new RegExp("^"+s.source),o=new RegExp(s.source+n.source,"gu"),l=new RegExp("\\d+"+n.source,"gu"),c=(e,n)=>{if("string"!=typeof e&&!Array.isArray(e))throw new TypeError("Expected the input to be `string | string[]`");if(n={pascalCase:!1,preserveConsecutiveUppercase:!1,...n},0===(e=Array.isArray(e)?e.map((e=>e.trim())).filter((e=>e.length)).join("-"):e.trim()).length)return"";const s=!1===n.locale?e=>e.toLowerCase():e=>e.toLocaleLowerCase(n.locale),c=!1===n.locale?e=>e.toUpperCase():e=>e.toLocaleUpperCase(n.locale);if(1===e.length)return n.pascalCase?c(e):s(e);return e!==s(e)&&(e=((e,r,n)=>{let s=!1,i=!1,o=!1;for(let l=0;l(r.lastIndex=0,e.replace(r,(e=>t(e)))))(e,s):s(e),n.pascalCase&&(e=c(e.charAt(0))+e.slice(1)),((e,t)=>(o.lastIndex=0,l.lastIndex=0,e.replace(o,((e,a)=>t(a))).replace(l,(e=>t(e)))))(e,c)};e.exports=c,e.exports.default=c},8032:function(e,t,a){a.d(t,{G:function(){return _},L:function(){return m},M:function(){return L},P:function(){return E},_:function(){return o},a:function(){return i},b:function(){return u},g:function(){return d},h:function(){return l}});var r=a(7294),n=(a(3204),a(5697)),s=a.n(n);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(n[a]=e[a]);return n}const l=()=>"undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;function c(e,t,a){const r={};let n="gatsby-image-wrapper";return"fixed"===a?(r.width=e,r.height=t):"constrained"===a&&(n="gatsby-image-wrapper gatsby-image-wrapper-constrained"),{className:n,"data-gatsby-image-wrapper":"",style:r}}function u(e,t,a,r,n){return void 0===n&&(n={}),i({},a,{loading:r,shouldLoad:e,"data-main-image":"",style:i({},n,{opacity:t?1:0})})}function d(e,t,a,r,n,s,o,l){const c={};s&&(c.backgroundColor=s,"fixed"===a?(c.width=r,c.height=n,c.backgroundColor=s,c.position="relative"):("constrained"===a||"fullWidth"===a)&&(c.position="absolute",c.top=0,c.left=0,c.bottom=0,c.right=0)),o&&(c.objectFit=o),l&&(c.objectPosition=l);const u=i({},e,{"aria-hidden":!0,"data-placeholder-image":"",style:i({opacity:t?0:1,transition:"opacity 500ms linear"},c)});return u}const g=["children"],p=function(e){let{layout:t,width:a,height:n}=e;return"fullWidth"===t?r.createElement("div",{"aria-hidden":!0,style:{paddingTop:n/a*100+"%"}}):"constrained"===t?r.createElement("div",{style:{maxWidth:a,display:"block"}},r.createElement("img",{alt:"",role:"presentation","aria-hidden":"true",src:`data:image/svg+xml;charset=utf-8,%3Csvg%20height='${n}'%20width='${a}'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E`,style:{maxWidth:"100%",display:"block",position:"static"}})):null},m=function(e){let{children:t}=e,a=o(e,g);return r.createElement(r.Fragment,null,r.createElement(p,i({},a)),t,null)},h=["src","srcSet","loading","alt","shouldLoad"],f=["fallback","sources","shouldLoad"],y=function(e){let{src:t,srcSet:a,loading:n,alt:s="",shouldLoad:l}=e,c=o(e,h);return r.createElement("img",i({},c,{decoding:"async",loading:n,src:l?t:void 0,"data-src":l?void 0:t,srcSet:l?a:void 0,"data-srcset":l?void 0:a,alt:s}))},b=function(e){let{fallback:t,sources:a=[],shouldLoad:n=!0}=e,s=o(e,f);const l=s.sizes||(null==t?void 0:t.sizes),c=r.createElement(y,i({},s,t,{sizes:l,shouldLoad:n}));return a.length?r.createElement("picture",null,a.map((e=>{let{media:t,srcSet:a,type:s}=e;return r.createElement("source",{key:`${t}-${s}-${a}`,type:s,media:t,srcSet:n?a:void 0,"data-srcset":n?void 0:a,sizes:l})})),c):c};var w;y.propTypes={src:n.string.isRequired,alt:n.string.isRequired,sizes:n.string,srcSet:n.string,shouldLoad:n.bool},b.displayName="Picture",b.propTypes={alt:n.string.isRequired,shouldLoad:n.bool,fallback:n.exact({src:n.string.isRequired,srcSet:n.string,sizes:n.string}),sources:n.arrayOf(n.oneOfType([n.exact({media:n.string.isRequired,type:n.string,sizes:n.string,srcSet:n.string.isRequired}),n.exact({media:n.string,type:n.string.isRequired,sizes:n.string,srcSet:n.string.isRequired})]))};const v=["fallback"],E=function(e){let{fallback:t}=e,a=o(e,v);return t?r.createElement(b,i({},a,{fallback:{src:t},"aria-hidden":!0,alt:""})):r.createElement("div",i({},a))};E.displayName="Placeholder",E.propTypes={fallback:n.string,sources:null==(w=b.propTypes)?void 0:w.sources,alt:function(e,t,a){return e[t]?new Error(`Invalid prop \`${t}\` supplied to \`${a}\`. Validation failed.`):null}};const L=function(e){return r.createElement(r.Fragment,null,r.createElement(b,i({},e)),r.createElement("noscript",null,r.createElement(b,i({},e,{shouldLoad:!0}))))};L.displayName="MainImage",L.propTypes=b.propTypes;const k=["as","className","class","style","image","loading","imgClassName","imgStyle","backgroundColor","objectFit","objectPosition"],C=["style","className"],S=e=>e.replace(/\n/g,""),x=function(e,t,a){for(var r=arguments.length,n=new Array(r>3?r-3:0),i=3;iJSON.stringify(n.images)),[n.images]);g&&(d=g);const x=function(e,t,a){let r="";return"fullWidth"===e&&(r=``),"constrained"===e&&(r=`
`),r}(w,y,b);return(0,r.useEffect)((()=>{I||(I=a.e(731).then(a.bind(a,6731)).then((e=>{let{renderImageToString:t,swapPlaceholderImage:a}=e;return O=t,{renderImageToString:t,swapPlaceholderImage:a}})));const e=C.current.querySelector("[data-gatsby-image-ssr]");if(e&&l())return e.complete?(null==p||p({wasCached:!0}),null==m||m({wasCached:!0}),setTimeout((()=>{e.removeAttribute("data-gatsby-image-ssr")}),0)):(null==p||p({wasCached:!0}),e.addEventListener("load",(function t(){e.removeEventListener("load",t),null==m||m({wasCached:!0}),setTimeout((()=>{e.removeAttribute("data-gatsby-image-ssr")}),0)}))),void j.add(S);if(O&&j.has(S))return;let t,r;return I.then((e=>{let{renderImageToString:a,swapPlaceholderImage:o}=e;C.current&&(C.current.innerHTML=a(i({isLoading:!0,isLoaded:j.has(S),image:n},f)),j.has(S)||(t=requestAnimationFrame((()=>{C.current&&(r=o(C.current,S,j,s,p,m,h))}))))})),()=>{t&&cancelAnimationFrame(t),r&&r()}}),[n]),(0,r.useLayoutEffect)((()=>{j.has(S)&&O&&(C.current.innerHTML=O(i({isLoading:j.has(S),isLoaded:j.has(S),image:n},f)),null==p||p({wasCached:!0}),null==m||m({wasCached:!0}))}),[n]),(0,r.createElement)(t,i({},k,{style:i({},E,s,{backgroundColor:u}),className:`${L}${d?` ${d}`:""}`,ref:C,dangerouslySetInnerHTML:{__html:x},suppressHydrationWarning:!0}))},_=(0,r.memo)((function(e){return e.image?(0,r.createElement)(R,e):null}));_.propTypes=T,_.displayName="GatsbyImage";const q=["src","__imageData","__error","width","height","aspectRatio","tracedSVGOptions","placeholder","formats","quality","transformOptions","jpgOptions","pngOptions","webpOptions","avifOptions","blurredOptions","breakpoints","outputPixelDensities"];function A(e){return function(t){let{src:a,__imageData:n,__error:s}=t,l=o(t,q);return s&&console.warn(s),n?r.createElement(e,i({image:n},l)):(console.warn("Image not loaded",a),null)}}const P=A((function(e){let{as:t="div",className:a,class:n,style:s,image:l,loading:g="lazy",imgClassName:p,imgStyle:h,backgroundColor:f,objectFit:y,objectPosition:b}=e,w=o(e,k);if(!l)return console.warn("[gatsby-plugin-image] Missing image prop"),null;n&&(a=n),h=i({objectFit:y,objectPosition:b,backgroundColor:f},h);const{width:v,height:x,layout:T,images:N,placeholder:$,backgroundColor:j}=l,I=c(v,x,T),{style:O,className:R}=I,_=o(I,C),q={fallback:void 0,sources:[]};return N.fallback&&(q.fallback=i({},N.fallback,{srcSet:N.fallback.srcSet?S(N.fallback.srcSet):void 0})),N.sources&&(q.sources=N.sources.map((e=>i({},e,{srcSet:S(e.srcSet)})))),r.createElement(t,i({},_,{style:i({},O,s,{backgroundColor:f}),className:`${R}${a?` ${a}`:""}`}),r.createElement(m,{layout:T,width:v,height:x},r.createElement(E,i({},d($,!1,T,v,x,j,y,b))),r.createElement(L,i({"data-gatsby-image-ssr":"",className:p},w,u("eager"===g,!1,q,g,h)))))})),z=function(e,t){for(var a=arguments.length,r=new Array(a>2?a-2:0),n=2;n{if(void 0!==e.layout&&!W.has(e.layout))return new Error(`Invalid value ${e.layout}" provided for prop "layout". Defaulting to "constrained". Valid values are "fixed", "fullWidth" or "constrained".`)}};P.displayName="StaticImage",P.propTypes=F;const M=A(_);M.displayName="StaticImage",M.propTypes=F},7219:function(e,t,a){function r(e){return(t,a)=>{return r=e.language,/ja(-\w)*/.test(r)&&a?a:t||a;var r}}a.d(t,{F:function(){return r}})}}]); +//# sourceMappingURL=5af7a9281ad5d3415401554ef3e0cfc8a2927b07-ab369b0f0e0e71f02d64.js.map \ No newline at end of file diff --git a/2023/public/5af7a9281ad5d3415401554ef3e0cfc8a2927b07-ab369b0f0e0e71f02d64.js.br b/2023/public/5af7a9281ad5d3415401554ef3e0cfc8a2927b07-ab369b0f0e0e71f02d64.js.br new file mode 100644 index 000000000..4593b715c Binary files /dev/null and b/2023/public/5af7a9281ad5d3415401554ef3e0cfc8a2927b07-ab369b0f0e0e71f02d64.js.br differ diff --git a/2023/public/5af7a9281ad5d3415401554ef3e0cfc8a2927b07-ab369b0f0e0e71f02d64.js.gz b/2023/public/5af7a9281ad5d3415401554ef3e0cfc8a2927b07-ab369b0f0e0e71f02d64.js.gz new file mode 100644 index 000000000..3d6331407 Binary files /dev/null and b/2023/public/5af7a9281ad5d3415401554ef3e0cfc8a2927b07-ab369b0f0e0e71f02d64.js.gz differ diff --git a/2023/public/5af7a9281ad5d3415401554ef3e0cfc8a2927b07-ab369b0f0e0e71f02d64.js.map b/2023/public/5af7a9281ad5d3415401554ef3e0cfc8a2927b07-ab369b0f0e0e71f02d64.js.map new file mode 100644 index 000000000..e002b16e7 --- /dev/null +++ b/2023/public/5af7a9281ad5d3415401554ef3e0cfc8a2927b07-ab369b0f0e0e71f02d64.js.map @@ -0,0 +1 @@ +{"version":3,"file":"5af7a9281ad5d3415401554ef3e0cfc8a2927b07-ab369b0f0e0e71f02d64.js","mappings":"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","sources":["webpack://jsconfjp-2023/./node_modules/camelcase/index.js","webpack://jsconfjp-2023/../src/image-utils.ts","webpack://jsconfjp-2023/../src/components/hooks.ts","webpack://jsconfjp-2023/../src/components/layout-wrapper.tsx","webpack://jsconfjp-2023/../src/components/picture.tsx","webpack://jsconfjp-2023/../src/components/placeholder.tsx","webpack://jsconfjp-2023/../src/components/main-image.tsx","webpack://jsconfjp-2023/../src/components/gatsby-image.server.tsx","webpack://jsconfjp-2023/../src/components/gatsby-image.browser.tsx","webpack://jsconfjp-2023/../src/components/static-image.server.tsx","webpack://jsconfjp-2023/../src/components/static-image.tsx","webpack://jsconfjp-2023/./src/util/languages.ts"],"sourcesContent":["'use strict';\n\nconst UPPERCASE = /[\\p{Lu}]/u;\nconst LOWERCASE = /[\\p{Ll}]/u;\nconst LEADING_CAPITAL = /^[\\p{Lu}](?![\\p{Lu}])/gu;\nconst IDENTIFIER = /([\\p{Alpha}\\p{N}_]|$)/u;\nconst SEPARATORS = /[_.\\- ]+/;\n\nconst LEADING_SEPARATORS = new RegExp('^' + SEPARATORS.source);\nconst SEPARATORS_AND_IDENTIFIER = new RegExp(SEPARATORS.source + IDENTIFIER.source, 'gu');\nconst NUMBERS_AND_IDENTIFIER = new RegExp('\\\\d+' + IDENTIFIER.source, 'gu');\n\nconst preserveCamelCase = (string, toLowerCase, toUpperCase) => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst character = string[i];\n\n\t\tif (isLastCharLower && UPPERCASE.test(character)) {\n\t\t\tstring = string.slice(0, i) + '-' + string.slice(i);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\ti++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && LOWERCASE.test(character)) {\n\t\t\tstring = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = toLowerCase(character) === character && toUpperCase(character) !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = toUpperCase(character) === character && toLowerCase(character) !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst preserveConsecutiveUppercase = (input, toLowerCase) => {\n\tLEADING_CAPITAL.lastIndex = 0;\n\n\treturn input.replace(LEADING_CAPITAL, m1 => toLowerCase(m1));\n};\n\nconst postProcess = (input, toUpperCase) => {\n\tSEPARATORS_AND_IDENTIFIER.lastIndex = 0;\n\tNUMBERS_AND_IDENTIFIER.lastIndex = 0;\n\n\treturn input.replace(SEPARATORS_AND_IDENTIFIER, (_, identifier) => toUpperCase(identifier))\n\t\t.replace(NUMBERS_AND_IDENTIFIER, m => toUpperCase(m));\n};\n\nconst camelCase = (input, options) => {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = {\n\t\tpascalCase: false,\n\t\tpreserveConsecutiveUppercase: false,\n\t\t...options\n\t};\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tconst toLowerCase = options.locale === false ?\n\t\tstring => string.toLowerCase() :\n\t\tstring => string.toLocaleLowerCase(options.locale);\n\tconst toUpperCase = options.locale === false ?\n\t\tstring => string.toUpperCase() :\n\t\tstring => string.toLocaleUpperCase(options.locale);\n\n\tif (input.length === 1) {\n\t\treturn options.pascalCase ? toUpperCase(input) : toLowerCase(input);\n\t}\n\n\tconst hasUpperCase = input !== toLowerCase(input);\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input, toLowerCase, toUpperCase);\n\t}\n\n\tinput = input.replace(LEADING_SEPARATORS, '');\n\n\tif (options.preserveConsecutiveUppercase) {\n\t\tinput = preserveConsecutiveUppercase(input, toLowerCase);\n\t} else {\n\t\tinput = toLowerCase(input);\n\t}\n\n\tif (options.pascalCase) {\n\t\tinput = toUpperCase(input.charAt(0)) + input.slice(1);\n\t}\n\n\treturn postProcess(input, toUpperCase);\n};\n\nmodule.exports = camelCase;\n// TODO: Remove this for the next major release\nmodule.exports.default = camelCase;\n","import camelCase from \"camelcase\"\nimport type { IGatsbyImageData } from \"./index\"\n\nconst DEFAULT_PIXEL_DENSITIES = [0.25, 0.5, 1, 2]\nexport const DEFAULT_BREAKPOINTS = [750, 1080, 1366, 1920]\nexport const EVERY_BREAKPOINT = [\n 320, 654, 768, 1024, 1366, 1600, 1920, 2048, 2560, 3440, 3840, 4096,\n]\nconst DEFAULT_FLUID_WIDTH = 800\nconst DEFAULT_FIXED_WIDTH = 800\nconst DEFAULT_ASPECT_RATIO = 4 / 3\n\nexport type Fit = \"cover\" | \"fill\" | \"inside\" | \"outside\" | \"contain\"\n\nexport type Layout = \"fixed\" | \"fullWidth\" | \"constrained\"\nexport type ImageFormat = \"jpg\" | \"png\" | \"webp\" | \"avif\" | \"auto\" | \"\"\n\n/**\n * The minimal required reporter, as we don't want to import it from gatsby-cli\n */\nexport interface IReporter {\n warn(message: string): void\n}\n\nexport interface ISharpGatsbyImageArgs {\n layout?: Layout\n formats?: Array\n placeholder?: \"tracedSVG\" | \"dominantColor\" | \"blurred\" | \"none\"\n tracedSVGOptions?: Record\n width?: number\n height?: number\n aspectRatio?: number\n sizes?: string\n quality?: number\n transformOptions?: {\n fit?: Fit\n cropFocus?: number | string\n duotone?: {\n highlight: string\n shadow: string\n opacity?: number\n }\n grayscale?: boolean\n rotate?: number\n trim?: number\n }\n jpgOptions?: Record\n pngOptions?: Record\n webpOptions?: Record\n avifOptions?: Record\n blurredOptions?: { width?: number; toFormat?: ImageFormat }\n breakpoints?: Array\n outputPixelDensities?: Array\n backgroundColor?: string\n}\n\nexport interface IImageSizeArgs {\n width?: number\n height?: number\n layout?: Layout\n filename: string\n outputPixelDensities?: Array\n breakpoints?: Array\n fit?: Fit\n reporter?: IReporter\n sourceMetadata: { width: number; height: number }\n}\n\nexport interface IImageSizes {\n sizes: Array\n presentationWidth: number\n presentationHeight: number\n aspectRatio: number\n unscaledWidth: number\n}\n\nexport interface IImage {\n src: string\n width: number\n height: number\n format: ImageFormat\n}\n\nexport interface IGatsbyImageHelperArgs {\n pluginName: string\n generateImageSource: (\n filename: string,\n width: number,\n height: number,\n format: ImageFormat,\n fit?: Fit,\n options?: Record\n ) => IImage\n layout?: Layout\n formats?: Array\n filename: string\n placeholderURL?: string\n width?: number\n height?: number\n sizes?: string\n reporter?: IReporter\n sourceMetadata?: { width: number; height: number; format: ImageFormat }\n fit?: Fit\n options?: Record\n breakpoints?: Array\n backgroundColor?: string\n aspectRatio?: number\n}\n\nconst warn = (message: string): void => console.warn(message)\n\nconst sortNumeric = (a: number, b: number): number => a - b\n\nexport const getSizes = (width: number, layout: Layout): string | undefined => {\n switch (layout) {\n // If screen is wider than the max size, image width is the max size,\n // otherwise it's the width of the screen\n case `constrained`:\n return `(min-width: ${width}px) ${width}px, 100vw`\n\n // Image is always the same width, whatever the size of the screen\n case `fixed`:\n return `${width}px`\n\n // Image is always the width of the screen\n case `fullWidth`:\n return `100vw`\n\n default:\n return undefined\n }\n}\n\nexport const getSrcSet = (images: Array): string =>\n images.map(image => `${image.src} ${image.width}w`).join(`,\\n`)\n\nexport function formatFromFilename(filename: string): ImageFormat | undefined {\n const dot = filename.lastIndexOf(`.`)\n if (dot !== -1) {\n const ext = filename.slice(dot + 1)\n if (ext === `jpeg`) {\n return `jpg`\n }\n if (ext.length === 3 || ext.length === 4) {\n return ext as ImageFormat\n }\n }\n return undefined\n}\n\nexport function setDefaultDimensions(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageHelperArgs {\n let {\n layout = `constrained`,\n width,\n height,\n sourceMetadata,\n breakpoints,\n aspectRatio,\n formats = [`auto`, `webp`],\n } = args\n formats = formats.map(format => format.toLowerCase() as ImageFormat)\n layout = camelCase(layout) as Layout\n\n if (width && height) {\n return { ...args, formats, layout, aspectRatio: width / height }\n }\n if (sourceMetadata.width && sourceMetadata.height && !aspectRatio) {\n aspectRatio = sourceMetadata.width / sourceMetadata.height\n }\n\n if (layout === `fullWidth`) {\n width = width || sourceMetadata.width || breakpoints[breakpoints.length - 1]\n height = height || Math.round(width / (aspectRatio || DEFAULT_ASPECT_RATIO))\n } else {\n if (!width) {\n if (height && aspectRatio) {\n width = height * aspectRatio\n } else if (sourceMetadata.width) {\n width = sourceMetadata.width\n } else if (height) {\n width = Math.round(height / DEFAULT_ASPECT_RATIO)\n } else {\n width = DEFAULT_FIXED_WIDTH\n }\n }\n\n if (aspectRatio && !height) {\n height = Math.round(width / aspectRatio)\n } else if (!aspectRatio) {\n aspectRatio = width / height\n }\n }\n return { ...args, width, height, aspectRatio, layout, formats }\n}\n\n/**\n * Use this for getting an image for the blurred placeholder. This ensures the\n * aspect ratio and crop match the main image\n */\nexport function getLowResolutionImageURL(\n args: IGatsbyImageHelperArgs,\n width = 20\n): string {\n args = setDefaultDimensions(args)\n const { generateImageSource, filename, aspectRatio } = args\n return generateImageSource(\n filename,\n width,\n Math.round(width / aspectRatio),\n args.sourceMetadata.format || `jpg`,\n args.fit,\n args.options\n )?.src\n}\n\nexport function generateImageData(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageData {\n args = setDefaultDimensions(args)\n\n let {\n pluginName,\n sourceMetadata,\n generateImageSource,\n layout,\n fit,\n options,\n width,\n height,\n filename,\n reporter = { warn },\n backgroundColor,\n placeholderURL,\n } = args\n\n if (!pluginName) {\n reporter.warn(\n `[gatsby-plugin-image] \"generateImageData\" was not passed a plugin name`\n )\n }\n\n if (typeof generateImageSource !== `function`) {\n throw new Error(`generateImageSource must be a function`)\n }\n\n if (!sourceMetadata || (!sourceMetadata.width && !sourceMetadata.height)) {\n // No metadata means we let the CDN handle max size etc, aspect ratio etc\n sourceMetadata = {\n width,\n height,\n format: sourceMetadata?.format || formatFromFilename(filename) || `auto`,\n }\n } else if (!sourceMetadata.format) {\n sourceMetadata.format = formatFromFilename(filename)\n }\n\n const formats = new Set(args.formats)\n\n if (formats.size === 0 || formats.has(`auto`) || formats.has(``)) {\n formats.delete(`auto`)\n formats.delete(``)\n formats.add(sourceMetadata.format)\n }\n\n if (formats.has(`jpg`) && formats.has(`png`)) {\n reporter.warn(\n `[${pluginName}] Specifying both 'jpg' and 'png' formats is not supported. Using 'auto' instead`\n )\n if (sourceMetadata.format === `jpg`) {\n formats.delete(`png`)\n } else {\n formats.delete(`jpg`)\n }\n }\n\n const imageSizes = calculateImageSizes({ ...args, sourceMetadata })\n\n const result: IGatsbyImageData[\"images\"] = {\n sources: [],\n }\n\n let sizes = args.sizes\n if (!sizes) {\n sizes = getSizes(imageSizes.presentationWidth, layout)\n }\n\n formats.forEach(format => {\n const images = imageSizes.sizes\n .map(size => {\n const imageSrc = generateImageSource(\n filename,\n size,\n Math.round(size / imageSizes.aspectRatio),\n format,\n fit,\n options\n )\n if (\n !imageSrc?.width ||\n !imageSrc.height ||\n !imageSrc.src ||\n !imageSrc.format\n ) {\n reporter.warn(\n `[${pluginName}] The resolver for image ${filename} returned an invalid value.`\n )\n return undefined\n }\n return imageSrc\n })\n .filter(Boolean)\n\n if (format === `jpg` || format === `png` || format === `auto`) {\n const unscaled =\n images.find(img => img.width === imageSizes.unscaledWidth) || images[0]\n\n if (unscaled) {\n result.fallback = {\n src: unscaled.src,\n srcSet: getSrcSet(images),\n sizes,\n }\n }\n } else {\n result.sources?.push({\n srcSet: getSrcSet(images),\n sizes,\n type: `image/${format}`,\n })\n }\n })\n\n const imageProps: Partial = {\n images: result,\n layout,\n backgroundColor,\n }\n\n if (placeholderURL) {\n imageProps.placeholder = { fallback: placeholderURL }\n }\n\n switch (layout) {\n case `fixed`:\n imageProps.width = imageSizes.presentationWidth\n imageProps.height = imageSizes.presentationHeight\n break\n\n case `fullWidth`:\n imageProps.width = 1\n imageProps.height = 1 / imageSizes.aspectRatio\n break\n\n case `constrained`:\n imageProps.width = args.width || imageSizes.presentationWidth || 1\n imageProps.height = (imageProps.width || 1) / imageSizes.aspectRatio\n }\n\n return imageProps as IGatsbyImageData\n}\n\nconst dedupeAndSortDensities = (values: Array): Array =>\n Array.from(new Set([1, ...values])).sort(sortNumeric)\n\nexport function calculateImageSizes(args: IImageSizeArgs): IImageSizes {\n const {\n width,\n height,\n filename,\n layout = `constrained`,\n sourceMetadata: imgDimensions,\n reporter = { warn },\n breakpoints = DEFAULT_BREAKPOINTS,\n } = args\n\n // check that all dimensions provided are positive\n const userDimensions = { width, height }\n const erroneousUserDimensions = Object.entries(userDimensions).filter(\n ([_, size]) => typeof size === `number` && size < 1\n )\n if (erroneousUserDimensions.length) {\n throw new Error(\n `Specified dimensions for images must be positive numbers (> 0). Problem dimensions you have are ${erroneousUserDimensions\n .map(dim => dim.join(`: `))\n .join(`, `)}`\n )\n }\n\n if (layout === `fixed`) {\n return fixedImageSizes(args)\n } else if (layout === `constrained`) {\n return responsiveImageSizes(args)\n } else if (layout === `fullWidth`) {\n return responsiveImageSizes({ breakpoints, ...args })\n } else {\n reporter.warn(\n `No valid layout was provided for the image at ${filename}. Valid image layouts are fixed, fullWidth, and constrained. Found ${layout}`\n )\n return {\n sizes: [imgDimensions.width],\n presentationWidth: imgDimensions.width,\n presentationHeight: imgDimensions.height,\n aspectRatio: imgDimensions.width / imgDimensions.height,\n unscaledWidth: imgDimensions.width,\n }\n }\n}\nexport function fixedImageSizes({\n filename,\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n reporter = { warn },\n}: IImageSizeArgs): IImageSizes {\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n if (!width) {\n if (!height) {\n width = DEFAULT_FIXED_WIDTH\n } else {\n width = Math.round(height * aspectRatio)\n }\n } else if (!height) {\n height = Math.round(width / aspectRatio)\n }\n\n const originalWidth = width // will use this for presentationWidth, don't want to lose it\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n\n // If the image is smaller than requested, warn the user that it's being processed as such\n // print out this message with the necessary information before we overwrite it for sizing\n if (isTopSizeOverriden) {\n const fixedDimension = imgDimensions.width < width ? `width` : `height`\n reporter.warn(`\nThe requested ${fixedDimension} \"${\n fixedDimension === `width` ? width : height\n }px\" for the image ${filename} was larger than the actual image ${fixedDimension} of ${\n imgDimensions[fixedDimension]\n }px. If possible, replace the current image with a larger one.`)\n\n if (fixedDimension === `width`) {\n width = imgDimensions.width\n height = Math.round(width / aspectRatio)\n } else {\n height = imgDimensions.height\n width = height * aspectRatio\n }\n }\n\n const sizes = densities\n .filter(size => size >= 1) // remove smaller densities because fixed images don't need them\n .map(density => Math.round(density * (width as number)))\n .filter(size => size <= imgDimensions.width)\n\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function responsiveImageSizes({\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n breakpoints,\n layout,\n}: IImageSizeArgs): IImageSizes {\n let sizes\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n // Case 1: width of height were passed in, make sure it isn't larger than the actual image\n width = width && Math.min(width, imgDimensions.width)\n height = height && Math.min(height, imgDimensions.height)\n\n // Case 2: neither width or height were passed in, use default size\n if (!width && !height) {\n width = Math.min(DEFAULT_FLUID_WIDTH, imgDimensions.width)\n height = width / aspectRatio\n }\n\n // if it still hasn't been found, calculate width from the derived height.\n // TS isn't smart enough to realise the type for height has been narrowed here\n if (!width) {\n width = (height as number) * aspectRatio\n }\n\n const originalWidth = width\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n if (isTopSizeOverriden) {\n width = imgDimensions.width\n height = imgDimensions.height\n }\n\n width = Math.round(width)\n\n if (breakpoints?.length > 0) {\n sizes = breakpoints.filter(size => size <= imgDimensions.width)\n\n // If a larger breakpoint has been filtered-out, add the actual image width instead\n if (\n sizes.length < breakpoints.length &&\n !sizes.includes(imgDimensions.width)\n ) {\n sizes.push(imgDimensions.width)\n }\n } else {\n sizes = densities.map(density => Math.round(density * (width as number)))\n sizes = sizes.filter(size => size <= imgDimensions.width)\n }\n\n // ensure that the size passed in is included in the final output\n if (layout === `constrained` && !sizes.includes(width)) {\n sizes.push(width)\n }\n sizes = sizes.sort(sortNumeric)\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function getDimensionsAndAspectRatio(\n dimensions,\n options\n): { width: number; height: number; aspectRatio: number } {\n // Calculate the eventual width/height of the image.\n const imageAspectRatio = dimensions.width / dimensions.height\n\n let width = options.width\n let height = options.height\n\n switch (options.fit) {\n case `fill`: {\n width = options.width ? options.width : dimensions.width\n height = options.height ? options.height : dimensions.height\n break\n }\n case `inside`: {\n const widthOption = options.width\n ? options.width\n : Number.MAX_SAFE_INTEGER\n const heightOption = options.height\n ? options.height\n : Number.MAX_SAFE_INTEGER\n\n width = Math.min(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.min(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n case `outside`: {\n const widthOption = options.width ? options.width : 0\n const heightOption = options.height ? options.height : 0\n\n width = Math.max(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.max(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n\n default: {\n if (options.width && !options.height) {\n width = options.width\n height = Math.round(options.width / imageAspectRatio)\n }\n\n if (options.height && !options.width) {\n width = Math.round(options.height * imageAspectRatio)\n height = options.height\n }\n }\n }\n\n return {\n width,\n height,\n aspectRatio: width / height,\n }\n}\n","/* global GATSBY___IMAGE */\nimport { generateImageData, EVERY_BREAKPOINT } from \"../image-utils\"\nimport type { CSSProperties, HTMLAttributes, ImgHTMLAttributes } from \"react\"\nimport type { Node } from \"gatsby\"\nimport type { PlaceholderProps } from \"./placeholder\"\nimport type { MainImageProps } from \"./main-image\"\nimport type { IGatsbyImageData } from \"./gatsby-image.browser\"\nimport type {\n IGatsbyImageHelperArgs,\n Layout,\n IImage,\n ImageFormat,\n} from \"../image-utils\"\n\n// Native lazy-loading support: https://addyosmani.com/blog/lazy-loading/\nexport const hasNativeLazyLoadSupport = (): boolean =>\n typeof HTMLImageElement !== `undefined` &&\n `loading` in HTMLImageElement.prototype\n\nexport function gatsbyImageIsInstalled(): boolean {\n return typeof GATSBY___IMAGE !== `undefined` && GATSBY___IMAGE\n}\n\nexport type IGatsbyImageDataParent = T & {\n gatsbyImageData: IGatsbyImageData\n}\nexport type IGatsbyImageParent = T & {\n gatsbyImage: IGatsbyImageData\n}\nexport type FileNode = Partial & {\n childImageSharp?: IGatsbyImageDataParent>\n}\n\nconst isGatsbyImageData = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageData | any\n): node is IGatsbyImageData =>\n // 🦆 check for a deep prop to be sure this is a valid gatsbyImageData object\n Boolean(node?.images?.fallback?.src)\n\nconst isGatsbyImageDataParent = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageDataParent | any\n): node is IGatsbyImageDataParent => Boolean(node?.gatsbyImageData)\n\nconst isGatsbyImageParent = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageParent | any\n): node is IGatsbyImageParent => Boolean(node?.gatsbyImage)\n\nexport type ImageDataLike =\n | FileNode\n | IGatsbyImageDataParent\n | IGatsbyImageParent\n | IGatsbyImageData\n\nexport const getImage = (\n node: ImageDataLike | null\n): IGatsbyImageData | undefined => {\n // This checks both for gatsbyImageData and gatsbyImage\n if (isGatsbyImageData(node)) {\n return node\n }\n // gatsbyImageData GraphQL field\n if (isGatsbyImageDataParent(node)) {\n return node.gatsbyImageData\n }\n // gatsbyImage GraphQL field for Gatsby's Image CDN service\n if (isGatsbyImageParent(node)) {\n return node.gatsbyImage\n }\n return node?.childImageSharp?.gatsbyImageData\n}\n\nexport const getSrc = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.src\n\nexport const getSrcSet = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.srcSet\n\nexport function getWrapperProps(\n width: number,\n height: number,\n layout: Layout\n): Pick, \"className\" | \"style\"> & {\n \"data-gatsby-image-wrapper\": string\n} {\n const wrapperStyle: CSSProperties = {}\n\n let className = `gatsby-image-wrapper`\n\n // If the plugin isn't installed we need to apply the styles inline\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.position = `relative`\n wrapperStyle.overflow = `hidden`\n }\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n } else if (layout === `constrained`) {\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.display = `inline-block`\n wrapperStyle.verticalAlign = `top`\n }\n className = `gatsby-image-wrapper gatsby-image-wrapper-constrained`\n }\n\n return {\n className,\n \"data-gatsby-image-wrapper\": ``,\n style: wrapperStyle,\n }\n}\n\nexport interface IUrlBuilderArgs {\n width: number\n height: number\n baseUrl: string\n format: ImageFormat\n options: OptionsType\n}\nexport interface IGetImageDataArgs> {\n baseUrl: string\n /**\n * For constrained and fixed images, the size of the image element\n */\n width?: number\n height?: number\n /**\n * If available, pass the source image width and height\n */\n sourceWidth?: number\n sourceHeight?: number\n /**\n * If only one dimension is passed, then this will be used to calculate the other.\n */\n aspectRatio?: number\n layout?: Layout\n /**\n * Returns a URL based on the passed arguments. Should be a pure function\n */\n urlBuilder: (args: IUrlBuilderArgs) => string\n\n /**\n * Should be a data URI\n */\n placeholderURL?: string\n backgroundColor?: string\n /**\n * Used in error messages etc\n */\n pluginName?: string\n\n /**\n * If you do not support auto-format, pass an array of image types here\n */\n formats?: Array\n\n breakpoints?: Array\n\n /**\n * Passed to the urlBuilder function\n */\n options?: OptionsType\n}\n\n/**\n * Use this hook to generate gatsby-plugin-image data in the browser.\n */\nexport function getImageData({\n baseUrl,\n urlBuilder,\n sourceWidth,\n sourceHeight,\n pluginName = `getImageData`,\n formats = [`auto`],\n breakpoints,\n options,\n ...props\n}: IGetImageDataArgs): IGatsbyImageData {\n if (\n !breakpoints?.length &&\n (props.layout === `fullWidth` || (props.layout as string) === `FULL_WIDTH`)\n ) {\n breakpoints = EVERY_BREAKPOINT\n }\n const generateImageSource = (\n baseUrl: string,\n width: number,\n height?: number,\n format?: ImageFormat\n ): IImage => {\n return {\n width,\n height,\n format,\n src: urlBuilder({ baseUrl, width, height, options, format }),\n }\n }\n\n const sourceMetadata: IGatsbyImageHelperArgs[\"sourceMetadata\"] = {\n width: sourceWidth,\n height: sourceHeight,\n format: `auto`,\n }\n\n const args: IGatsbyImageHelperArgs = {\n ...props,\n pluginName,\n generateImageSource,\n filename: baseUrl,\n formats,\n breakpoints,\n sourceMetadata,\n }\n return generateImageData(args)\n}\n\nexport function getMainProps(\n isLoading: boolean,\n isLoaded: boolean,\n images: IGatsbyImageData[\"images\"],\n loading?: \"eager\" | \"lazy\",\n style: CSSProperties = {}\n): Partial {\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n transform: `translateZ(0)`,\n transition: `opacity 250ms linear`,\n width: `100%`,\n willChange: `opacity`,\n ...style,\n }\n }\n\n const result = {\n ...images,\n loading,\n shouldLoad: isLoading,\n \"data-main-image\": ``,\n style: {\n ...style,\n opacity: isLoaded ? 1 : 0,\n },\n }\n\n return result\n}\n\nexport type PlaceholderImageAttrs = ImgHTMLAttributes &\n Pick & {\n \"data-placeholder-image\"?: string\n }\n\nexport function getPlaceholderProps(\n placeholder: PlaceholderImageAttrs | undefined,\n isLoaded: boolean,\n layout: Layout,\n width?: number,\n height?: number,\n backgroundColor?: string,\n objectFit?: CSSProperties[\"objectFit\"],\n objectPosition?: CSSProperties[\"objectPosition\"]\n): PlaceholderImageAttrs {\n const wrapperStyle: CSSProperties = {}\n\n if (backgroundColor) {\n wrapperStyle.backgroundColor = backgroundColor\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n wrapperStyle.backgroundColor = backgroundColor\n wrapperStyle.position = `relative`\n } else if (layout === `constrained`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n } else if (layout === `fullWidth`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n }\n }\n\n if (objectFit) {\n wrapperStyle.objectFit = objectFit\n }\n\n if (objectPosition) {\n wrapperStyle.objectPosition = objectPosition\n }\n const result: PlaceholderImageAttrs = {\n ...placeholder,\n \"aria-hidden\": true,\n \"data-placeholder-image\": ``,\n style: {\n opacity: isLoaded ? 0 : 1,\n transition: `opacity 500ms linear`,\n ...wrapperStyle,\n },\n }\n\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n result.style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n width: `100%`,\n }\n }\n\n return result\n}\n\nexport interface IArtDirectedImage {\n media: string\n image: IGatsbyImageData\n}\n\n/**\n * Generate a Gatsby image data object with multiple, art-directed images that display at different\n * resolutions.\n *\n * @param defaultImage The image displayed when no media query matches.\n * It is also used for all other settings applied to the image, such as width, height and layout.\n * You should pass a className to the component with media queries to adjust the size of the container,\n * as this cannot be adjusted automatically.\n * @param artDirected Array of objects which each contains a `media` string which is a media query\n * such as `(min-width: 320px)`, and the image object to use when that query matches.\n */\nexport function withArtDirection(\n defaultImage: IGatsbyImageData,\n artDirected: Array\n): IGatsbyImageData {\n const { images, placeholder, ...props } = defaultImage\n const output: IGatsbyImageData = {\n ...props,\n images: {\n ...images,\n sources: [],\n },\n placeholder: placeholder && {\n ...placeholder,\n sources: [],\n },\n }\n\n artDirected.forEach(({ media, image }) => {\n if (!media) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(\n \"[gatsby-plugin-image] All art-directed images passed to must have a value set for `media`. Skipping.\"\n )\n }\n return\n }\n\n if (\n image.layout !== defaultImage.layout &&\n process.env.NODE_ENV === `development`\n ) {\n console.warn(\n `[gatsby-plugin-image] Mismatched image layout: expected \"${defaultImage.layout}\" but received \"${image.layout}\". All art-directed images use the same layout as the default image`\n )\n }\n\n output.images.sources.push(\n ...image.images.sources.map(source => {\n return { ...source, media }\n }),\n {\n media,\n srcSet: image.images.fallback.srcSet,\n }\n )\n\n if (!output.placeholder) {\n return\n }\n\n output.placeholder.sources.push({\n media,\n srcSet: image.placeholder.fallback,\n })\n })\n output.images.sources.push(...images.sources)\n if (placeholder?.sources) {\n output.placeholder?.sources.push(...placeholder.sources)\n }\n return output\n}\n","import React, { Fragment, FunctionComponent, PropsWithChildren } from \"react\"\nimport terserMacro from \"../../macros/terser.macro\"\nimport { Layout } from \"../image-utils\"\n\nexport interface ILayoutWrapperProps {\n layout: Layout\n width: number\n height: number\n}\n\nconst NativeScriptLoading: FunctionComponent = () => (\n \n)\n\nexport function getSizer(\n layout: Layout,\n width: number,\n height: number\n): string {\n let sizer = ``\n if (layout === `fullWidth`) {\n sizer = `
`\n }\n\n if (layout === `constrained`) {\n sizer = `
\"\"
`\n }\n\n return sizer\n}\n\nconst Sizer: FunctionComponent = function Sizer({\n layout,\n width,\n height,\n}) {\n if (layout === `fullWidth`) {\n return (\n
\n )\n }\n\n if (layout === `constrained`) {\n return (\n
\n \n
\n )\n }\n\n return null\n}\n\nexport const LayoutWrapper: FunctionComponent<\n PropsWithChildren\n> = function LayoutWrapper({ children, ...props }) {\n return (\n \n \n {children}\n\n {SERVER ? : null}\n \n )\n}\n","import React, { FunctionComponent, ImgHTMLAttributes } from \"react\"\nimport * as PropTypes from \"prop-types\"\n\nexport interface IResponsiveImageProps {\n sizes?: string\n srcSet: string\n}\n\nexport type SourceProps = IResponsiveImageProps &\n (\n | {\n media: string\n type?: string\n }\n | {\n media?: string\n type: string\n }\n )\n\ntype FallbackProps = { src: string } & Partial\n\ntype ImageProps = ImgHTMLAttributes & {\n src: string\n alt: string\n shouldLoad: boolean\n}\n\nexport type PictureProps = ImgHTMLAttributes & {\n fallback?: FallbackProps\n sources?: Array\n alt: string\n shouldLoad?: boolean\n}\n\nconst Image: FunctionComponent = function Image({\n src,\n srcSet,\n loading,\n alt = ``,\n shouldLoad,\n ...props\n}) {\n return (\n \n )\n}\n\nexport const Picture: React.FC = function Picture({\n fallback,\n sources = [],\n shouldLoad = true,\n ...props\n}) {\n const sizes = props.sizes || fallback?.sizes\n const fallbackImage = (\n \n )\n\n if (!sources.length) {\n return fallbackImage\n }\n\n return (\n \n {sources.map(({ media, srcSet, type }) => (\n \n ))}\n {fallbackImage}\n \n )\n}\n\nImage.propTypes = {\n src: PropTypes.string.isRequired,\n alt: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string,\n shouldLoad: PropTypes.bool,\n}\n\nPicture.displayName = `Picture`\nPicture.propTypes = {\n alt: PropTypes.string.isRequired,\n shouldLoad: PropTypes.bool,\n fallback: PropTypes.exact({\n src: PropTypes.string.isRequired,\n srcSet: PropTypes.string,\n sizes: PropTypes.string,\n }),\n sources: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.exact({\n media: PropTypes.string.isRequired,\n type: PropTypes.string,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n PropTypes.exact({\n media: PropTypes.string,\n type: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n ])\n ),\n}\n","import React, { FunctionComponent, ImgHTMLAttributes } from \"react\"\nimport * as PropTypes from \"prop-types\"\nimport { Picture, SourceProps } from \"./picture\"\n\nexport type PlaceholderProps = ImgHTMLAttributes & {\n fallback?: string\n sources?: Array\n}\n\nexport const Placeholder: FunctionComponent =\n function Placeholder({ fallback, ...props }) {\n if (fallback) {\n return (\n \n )\n } else {\n return
\n }\n }\n\nPlaceholder.displayName = `Placeholder`\nPlaceholder.propTypes = {\n fallback: PropTypes.string,\n sources: Picture.propTypes?.sources,\n alt: function (props, propName, componentName): Error | null {\n if (!props[propName]) {\n return null\n }\n\n return new Error(\n `Invalid prop \\`${propName}\\` supplied to \\`${componentName}\\`. Validation failed.`\n )\n },\n}\n","import React from \"react\"\nimport { Picture, PictureProps } from \"./picture\"\n\nexport type MainImageProps = PictureProps\n\nexport const MainImage: React.FC = function MainImage(props) {\n return (\n <>\n \n \n \n )\n}\n\nMainImage.displayName = `MainImage`\nMainImage.propTypes = Picture.propTypes\n","import React from \"react\"\nimport { getWrapperProps, getMainProps, getPlaceholderProps } from \"./hooks\"\nimport { Placeholder } from \"./placeholder\"\nimport { MainImage, MainImageProps } from \"./main-image\"\nimport { LayoutWrapper } from \"./layout-wrapper\"\nimport PropTypes from \"prop-types\"\nimport type { FunctionComponent, WeakValidationMap } from \"react\"\nimport type { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\n\nconst removeNewLines = (str: string): string => str.replace(/\\n/g, ``)\n\nexport const GatsbyImage: FunctionComponent =\n function GatsbyImage({\n as = `div`,\n className,\n class: preactClass,\n style,\n image,\n loading = `lazy`,\n imgClassName,\n imgStyle,\n backgroundColor,\n objectFit,\n objectPosition,\n ...props\n }) {\n if (!image) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n return null\n }\n\n if (preactClass) {\n className = preactClass\n }\n\n imgStyle = {\n objectFit,\n objectPosition,\n backgroundColor,\n ...imgStyle,\n }\n\n const {\n width,\n height,\n layout,\n images,\n placeholder,\n backgroundColor: placeholderBackgroundColor,\n } = image\n\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n\n const cleanedImages: IGatsbyImageData[\"images\"] = {\n fallback: undefined,\n sources: [],\n }\n if (images.fallback) {\n cleanedImages.fallback = {\n ...images.fallback,\n srcSet: images.fallback.srcSet\n ? removeNewLines(images.fallback.srcSet)\n : undefined,\n }\n }\n\n if (images.sources) {\n cleanedImages.sources = images.sources.map(source => {\n return {\n ...source,\n srcSet: removeNewLines(source.srcSet),\n }\n })\n }\n\n return React.createElement(\n as,\n {\n ...wrapperProps,\n style: {\n ...wStyle,\n ...style,\n backgroundColor,\n },\n className: `${wClass}${className ? ` ${className}` : ``}`,\n },\n \n \n\n )}\n // When eager is set we want to start the isLoading state on true (we want to load the img without react)\n {...getMainProps(\n loading === `eager`,\n false,\n cleanedImages,\n loading,\n imgStyle\n )}\n />\n \n )\n }\n\nexport const altValidator: PropTypes.Validator = (\n props: GatsbyImageProps,\n propName,\n componentName,\n ...rest\n): Error | undefined => {\n if (!props.alt && props.alt !== ``) {\n return new Error(\n `The \"alt\" prop is required in ${componentName}. If the image is purely presentational then pass an empty string: e.g. alt=\"\". Learn more: https://a11y-style-guide.com/style-guide/section-media.html`\n )\n }\n\n return PropTypes.string(props, propName, componentName, ...rest)\n}\n\nexport const propTypes = {\n image: PropTypes.object.isRequired,\n alt: altValidator,\n} as WeakValidationMap\n","import {\n createElement,\n memo,\n useMemo,\n useEffect,\n useLayoutEffect,\n useRef,\n} from \"react\"\nimport {\n getWrapperProps,\n gatsbyImageIsInstalled,\n hasNativeLazyLoadSupport,\n} from \"./hooks\"\nimport { getSizer } from \"./layout-wrapper\"\nimport { propTypes } from \"./gatsby-image.server\"\nimport type {\n FC,\n ElementType,\n FunctionComponent,\n ImgHTMLAttributes,\n CSSProperties,\n ReactEventHandler,\n} from \"react\"\nimport type { renderImageToString } from \"./lazy-hydrate\"\nimport type { PlaceholderProps } from \"./placeholder\"\nimport type { MainImageProps } from \"./main-image\"\nimport type { Layout } from \"../image-utils\"\n\nconst imageCache = new Set()\nlet renderImageToStringPromise\nlet renderImage: typeof renderImageToString | undefined\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport interface GatsbyImageProps\n extends Omit<\n ImgHTMLAttributes,\n \"placeholder\" | \"onLoad\" | \"src\" | \"srcSet\" | \"width\" | \"height\"\n > {\n alt: string\n as?: ElementType\n className?: string\n class?: string\n imgClassName?: string\n image: IGatsbyImageData\n imgStyle?: CSSProperties\n backgroundColor?: string\n objectFit?: CSSProperties[\"objectFit\"]\n objectPosition?: CSSProperties[\"objectPosition\"]\n onLoad?: (props: { wasCached: boolean }) => void\n onError?: ReactEventHandler\n onStartLoad?: (props: { wasCached: boolean }) => void\n}\n\nexport interface IGatsbyImageData {\n layout: Layout\n width: number\n height: number\n backgroundColor?: string\n images: Pick\n placeholder?: Pick\n}\n\nconst GatsbyImageHydrator: FC = function GatsbyImageHydrator({\n as = `div`,\n image,\n style,\n backgroundColor,\n className,\n class: preactClass,\n onStartLoad,\n onLoad,\n onError,\n ...props\n}) {\n const { width, height, layout } = image\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n const root = useRef()\n const cacheKey = useMemo(() => JSON.stringify(image.images), [image.images])\n\n // Preact uses class instead of className so we need to check for both\n if (preactClass) {\n className = preactClass\n }\n\n const sizer = getSizer(layout, width, height)\n\n useEffect(() => {\n if (!renderImageToStringPromise) {\n renderImageToStringPromise = import(`./lazy-hydrate`).then(\n ({ renderImageToString, swapPlaceholderImage }) => {\n renderImage = renderImageToString\n\n return {\n renderImageToString,\n swapPlaceholderImage,\n }\n }\n )\n }\n\n // The plugin image component is a bit special where if it's server-side rendered, we add extra script tags to support lazy-loading without\n // In this case we stop hydration but fire the correct events.\n const ssrImage = root.current.querySelector(\n `[data-gatsby-image-ssr]`\n ) as HTMLImageElement\n if (ssrImage && hasNativeLazyLoadSupport()) {\n if (ssrImage.complete) {\n // Trigger onStartload and onLoad events\n onStartLoad?.({\n wasCached: true,\n })\n onLoad?.({\n wasCached: true,\n })\n\n // remove ssr key for state updates but add delay to not fight with native code snippt of gatsby-ssr\n setTimeout(() => {\n ssrImage.removeAttribute(`data-gatsby-image-ssr`)\n }, 0)\n } else {\n onStartLoad?.({\n wasCached: true,\n })\n\n ssrImage.addEventListener(`load`, function onLoadListener() {\n ssrImage.removeEventListener(`load`, onLoadListener)\n\n onLoad?.({\n wasCached: true,\n })\n // remove ssr key for state updates but add delay to not fight with native code snippt of gatsby-ssr\n setTimeout(() => {\n ssrImage.removeAttribute(`data-gatsby-image-ssr`)\n }, 0)\n })\n }\n\n imageCache.add(cacheKey)\n\n return\n }\n\n if (renderImage && imageCache.has(cacheKey)) {\n return\n }\n\n let animationFrame\n let cleanupCallback\n renderImageToStringPromise.then(\n ({ renderImageToString, swapPlaceholderImage }) => {\n if (!root.current) {\n return\n }\n\n root.current.innerHTML = renderImageToString({\n isLoading: true,\n isLoaded: imageCache.has(cacheKey),\n image,\n ...props,\n })\n\n if (!imageCache.has(cacheKey)) {\n animationFrame = requestAnimationFrame(() => {\n if (root.current) {\n cleanupCallback = swapPlaceholderImage(\n root.current,\n cacheKey,\n imageCache,\n style,\n onStartLoad,\n onLoad,\n onError\n )\n }\n })\n }\n }\n )\n\n // eslint-disable-next-line consistent-return\n return (): void => {\n if (animationFrame) {\n cancelAnimationFrame(animationFrame)\n }\n if (cleanupCallback) {\n cleanupCallback()\n }\n }\n }, [image])\n\n // useLayoutEffect is ran before React commits to the DOM. This allows us to make sure our HTML is using our cached image version\n useLayoutEffect(() => {\n if (imageCache.has(cacheKey) && renderImage) {\n root.current.innerHTML = renderImage({\n isLoading: imageCache.has(cacheKey),\n isLoaded: imageCache.has(cacheKey),\n image,\n ...props,\n })\n\n // Trigger onStartload and onLoad events\n onStartLoad?.({\n wasCached: true,\n })\n onLoad?.({\n wasCached: true,\n })\n }\n }, [image])\n\n // By keeping all props equal React will keep the component in the DOM\n return createElement(as, {\n ...wrapperProps,\n style: {\n ...wStyle,\n ...style,\n backgroundColor,\n },\n className: `${wClass}${className ? ` ${className}` : ``}`,\n ref: root,\n dangerouslySetInnerHTML: {\n __html: sizer,\n },\n suppressHydrationWarning: true,\n })\n}\n\nexport const GatsbyImage: FunctionComponent = memo(\n function GatsbyImage(props) {\n if (!props.image) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n }\n\n return null\n }\n\n if (!gatsbyImageIsInstalled() && process.env.NODE_ENV === `development`) {\n console.warn(\n `[gatsby-plugin-image] You're missing out on some cool performance features. Please add \"gatsby-plugin-image\" to your gatsby-config.js`\n )\n }\n\n return createElement(GatsbyImageHydrator, props)\n }\n)\n\nGatsbyImage.propTypes = propTypes\nGatsbyImage.displayName = `GatsbyImage`\n","import React, { FunctionComponent, ReactElement } from \"react\"\nimport {\n altValidator,\n GatsbyImage as GatsbyImageServer,\n} from \"./gatsby-image.server\"\nimport { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\nimport PropTypes from \"prop-types\"\nimport { ISharpGatsbyImageArgs } from \"../image-utils\"\n\nexport interface IStaticImageProps\n extends Omit,\n Omit {\n src: string\n filename?: string\n}\n\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nexport function _getStaticImage(\n GatsbyImage: FunctionComponent\n): React.FC {\n return function StaticImage({\n src,\n __imageData: imageData,\n __error,\n // We extract these because they're not meant to be passed-down to GatsbyImage\n /* eslint-disable @typescript-eslint/no-unused-vars */\n width,\n height,\n aspectRatio,\n tracedSVGOptions,\n placeholder,\n formats,\n quality,\n transformOptions,\n jpgOptions,\n pngOptions,\n webpOptions,\n avifOptions,\n blurredOptions,\n breakpoints,\n outputPixelDensities,\n /* eslint-enable @typescript-eslint/no-unused-vars */\n ...props\n }): ReactElement {\n if (__error) {\n console.warn(__error)\n }\n\n if (imageData) {\n return \n }\n console.warn(`Image not loaded`, src)\n if (!__error && process.env.NODE_ENV === `development`) {\n console.warn(\n `Please ensure that \"gatsby-plugin-image\" is included in the plugins array in gatsby-config.js, and that your version of gatsby is at least 2.24.78`\n )\n }\n return null\n }\n}\n\nconst StaticImage: React.FC =\n _getStaticImage(GatsbyImageServer)\n\nconst checkDimensionProps: PropTypes.Validator = (\n props: IStaticImageProps & IPrivateProps,\n propName: keyof IStaticImageProps & IPrivateProps,\n ...rest\n) => {\n if (\n props.layout === `fullWidth` &&\n (propName === `width` || propName === `height`) &&\n props[propName]\n ) {\n return new Error(\n `\"${propName}\" ${props[propName]} may not be passed when layout is fullWidth.`\n )\n }\n return PropTypes.number(props, propName, ...rest)\n}\n\nconst validLayouts = new Set([`fixed`, `fullWidth`, `constrained`])\n\nexport const propTypes = {\n src: PropTypes.string.isRequired,\n alt: altValidator,\n width: checkDimensionProps,\n height: checkDimensionProps,\n sizes: PropTypes.string,\n layout: (props: IStaticImageProps & IPrivateProps): Error | undefined => {\n if (props.layout === undefined) {\n return undefined\n }\n if (validLayouts.has(props.layout)) {\n return undefined\n }\n\n return new Error(\n `Invalid value ${props.layout}\" provided for prop \"layout\". Defaulting to \"constrained\". Valid values are \"fixed\", \"fullWidth\" or \"constrained\".`\n )\n },\n}\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import {\n GatsbyImage as GatsbyImageBrowser,\n IGatsbyImageData,\n} from \"./gatsby-image.browser\"\nimport React from \"react\"\nimport {\n _getStaticImage,\n propTypes,\n IStaticImageProps,\n} from \"./static-image.server\"\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nconst StaticImage: React.FC =\n _getStaticImage(GatsbyImageBrowser)\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import { i18n } from \"i18next\"\n\nexport function enOrJa(i18n: i18n) {\n return (enStr: string, jaStr: string) =>\n isJapanese(i18n.language) && jaStr ? jaStr : enStr || jaStr\n}\n\nexport function isJapanese(lang: string) {\n return /ja(-\\w)*/.test(lang)\n}\n"],"names":["UPPERCASE","LOWERCASE","LEADING_CAPITAL","IDENTIFIER","SEPARATORS","LEADING_SEPARATORS","RegExp","source","SEPARATORS_AND_IDENTIFIER","NUMBERS_AND_IDENTIFIER","camelCase","input","options","Array","isArray","TypeError","pascalCase","preserveConsecutiveUppercase","map","x","trim","filter","length","join","toLowerCase","locale","string","toLocaleLowerCase","toUpperCase","toLocaleUpperCase","isLastCharLower","isLastCharUpper","isLastLastCharUpper","i","character","test","slice","preserveCamelCase","replace","lastIndex","m1","charAt","_","identifier","m","postProcess","module","exports","W","hasNativeLazyLoadSupport","HTMLImageElement","prototype","z","e","t","a","s","width","height","className","style","P","h","loading","shouldLoad","opacity","A","r","n","o","l","backgroundColor","position","top","left","bottom","right","objectFit","objectPosition","d","transition","H","F","_ref5","layout","paddingTop","maxWidth","display","alt","role","src","G","children","u","V","B","U","srcSet","decoding","Y","fallback","sources","sizes","_ref6","media","type","key","X","propTypes","isRequired","displayName","J","Z","Error","K","Q","ee","te","ae","_len","arguments","_key","c","apply","concat","ie","image","se","re","ne","Set","oe","le","de","as","class","g","onStartLoad","p","onLoad","onError","f","w","y","b","v","E","k","S","M","N","$","JSON","stringify","images","I","then","_ref7","renderImageToString","swapPlaceholderImage","current","querySelector","complete","wasCached","setTimeout","removeAttribute","addEventListener","removeEventListener","add","has","_ref8","innerHTML","isLoading","isLoaded","requestAnimationFrame","cancelAnimationFrame","ref","dangerouslySetInnerHTML","__html","suppressHydrationWarning","ce","he","ue","__imageData","__error","console","warn","ge","imgClassName","imgStyle","placeholder","pe","_len2","_key2","me","fe","we","enOrJa","i18n","enStr","jaStr","isJapanese","lang","language"],"sourceRoot":""} \ No newline at end of file diff --git a/2023/public/731-dd7dd15747daaf4f168c.js b/2023/public/731-dd7dd15747daaf4f168c.js new file mode 100644 index 000000000..0037c8dc8 --- /dev/null +++ b/2023/public/731-dd7dd15747daaf4f168c.js @@ -0,0 +1,3 @@ +/*! For license information please see 731-dd7dd15747daaf4f168c.js.LICENSE.txt */ +"use strict";(self.webpackChunkjsconfjp_2023=self.webpackChunkjsconfjp_2023||[]).push([[731],{6731:function(e,t,n){n.r(t),n.d(t,{renderImageToString:function(){return p},swapPlaceholderImage:function(){return f}});var r=n(8032),o=n(7294),a=n(7762);n(3204);let l;const i=new WeakMap,u=navigator.connection||navigator.mozConnection||navigator.webkitConnection,s=["image","loading","isLoading","isLoaded","imgClassName","imgStyle","objectPosition","backgroundColor","objectFit"];function c(e,t){e.style.opacity="1",t&&(t.style.opacity="0")}function d(e,t,n,r,o,a){const l=e.querySelector("[data-main-image]"),i=e.querySelector("[data-placeholder-image]"),u=n.has(t);function s(e){this.removeEventListener("load",s);const t=e.currentTarget,n=new Image;n.src=t.currentSrc,n.decode?n.decode().then((()=>{c(this,i),null==o||o({wasCached:u})})).catch((e=>{c(this,i),null==a||a(e)})):(c(this,i),null==o||o({wasCached:u}))}return l.addEventListener("load",s),null==r||r({wasCached:u}),Array.from(l.parentElement.children).forEach((e=>{const t=e.getAttribute("data-src"),n=e.getAttribute("data-srcset");t&&(e.removeAttribute("data-src"),e.setAttribute("src",t)),n&&(e.removeAttribute("data-srcset"),e.setAttribute("srcset",n))})),n.add(t),l.complete&&s.call(l,{currentTarget:l}),()=>{l&&l.removeEventListener("load",s)}}function f(e,t,o,a,s,c,f){if(!(0,r.h)()){let r;const m=(g=()=>{r=d(e,t,o,s,c,f)},"IntersectionObserver"in window?(l||(l=new IntersectionObserver((e=>{e.forEach((e=>{var t;e.isIntersecting&&(null==(t=i.get(e.target))||t(),i.delete(e.target))}))}),{rootMargin:"4g"!==(null==u?void 0:u.effectiveType)||null!=u&&u.saveData?"2500px":"1250px"})),function(e){return i.set(e,g),l.observe(e),function(){l&&e&&(i.delete(e),l.unobserve(e))}}):function(){return g(),function(){}}),b=m(e);var p,h;return"objectFit"in document.documentElement.style||(e.dataset.objectFit=null!=(p=a.objectFit)?p:"cover",e.dataset.objectPosition=`${null!=(h=a.objectPosition)?h:"50% 50%"}`,async function(e){"objectFitPolyfill"in window||await n.e(843).then(n.t.bind(n,4843,23)),window.objectFitPolyfill(e)}(e)),()=>{r&&r(),b()}}var g;return d(e,t,o,s,c,f)}function p(e){let{image:t,loading:n="lazy",isLoading:l,isLoaded:i,imgClassName:u,imgStyle:c={},objectPosition:d,backgroundColor:f,objectFit:p="cover"}=e,h=(0,r._)(e,s);const{width:g,height:m,layout:b,images:y,placeholder:v,backgroundColor:S}=t;return c=(0,r.a)({objectFit:p,objectPosition:d,backgroundColor:f},c),(0,a.uS)(o.createElement(r.L,{layout:b,width:g,height:m},o.createElement(r.P,(0,r.a)({},(0,r.g)(v,i,b,g,m,S,p,d))),o.createElement(r.M,(0,r.a)({},h,{width:g,height:m,className:u},(0,r.b)(l,i,y,n,c)))))}},7774:function(e,t,n){var r=n(7294);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n