1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,339753,e=>{e.v(t=>Promise.all(["static/chunks/3486d-xb3zvhg.js"].map(t=>e.l(t))).then(()=>t(637102)))},582824,e=>{"use strict";var t=e.i(843476),i=e.i(657688),a=e.i(770703),s=e.i(271645),r=e.i(734616),n=e.i(644662),o=e.i(226200),l=e.i(277936),c=e.i(294229),d=e.i(92181),p=e.i(997053),m=e.i(621718);e.i(556657);var u=e.i(815319),g=e.i(51106),h=e.i(624309),f=e.i(370672),y=e.i(2487);let x=(0,a.default)(()=>e.A(339753).then(e=>e.ArticleAdminCacheButton),{loadableGenerated:{modules:[637102]},ssr:!1}),w=p.styled.a.withConfig({displayName:"BlogPostPage__ArticleNavButton",componentId:"sc-896cef79-0"})` 2 display: inline-flex; 3 align-items: center; 4 justify-content: center; 5 gap: 8px; 6 padding: 14px 24px; 7 border-radius: 12px; 8 background: #eef4ff; 9 color: #0d47a1; 10 font-weight: 600; 11 font-size: 15px; 12 letter-spacing: 0.01em; 13 text-decoration: none; 14 border: none; 15 transition: 16 background-color 120ms ease, 17 transform 120ms ease; 18 19 &:hover, 20 &:focus-visible { 21 background: #e0eaff; 22 transform: translateY(-1px); 23 outline: none; 24 } 25 26 &:active { 27 transform: translateY(0); 28 } 29 30 @media (max-width: ${({theme:e})=>e.breakpoints.tablet}) { 31 width: 100%; 32 justify-content: center; 33 } 34`,b=p.styled.span.withConfig({displayName:"BlogPostPage__ButtonIconLeft",componentId:"sc-896cef79-1"})` 35 display: inline-flex; 36 align-items: center; 37 justify-content: center; 38 margin-right: 8px; 39`,j=p.styled.span.withConfig({displayName:"BlogPostPage__ButtonIconRight",componentId:"sc-896cef79-2"})` 40 display: inline-flex; 41 align-items: center; 42 justify-content: center; 43 margin-left: 8px; 44`,k=p.styled.p.withConfig({displayName:"BlogPostPage__HeroIntroText",componentId:"sc-896cef79-3"})` 45 margin: 0; 46 font-size: 18px; 47 line-height: 1.5; 48 color: ${({theme:e})=>e.colors.secondary[600]}; 49 max-width: 640px; 50`,v=p.styled.blockquote.withConfig({displayName:"BlogPostPage__DirectAnswerQuote",componentId:"sc-896cef79-4"})` 51 margin: 0 0 ${({theme:e})=>e.space[5]} 0; 52 padding: ${({theme:e})=>`${e.space[5]} ${e.space[5]}`}; 53 border-left: 3px solid ${({theme:e})=>e.colors.primary[500]}; 54 border-radius: ${({theme:e})=>e.radii.md}; 55 background: ${({theme:e})=>e.colors.primary.soft}; 56 font-size: 17px; 57 line-height: 1.6; 58 font-style: italic; 59 color: ${({theme:e})=>e.colors.text.light}; 60 position: relative; 61 62 &::before { 63 content: "\\201C"; 64 display: block; 65 font-style: normal; 66 font-size: 40px; 67 line-height: 1; 68 margin-bottom: ${({theme:e})=>e.space[2]}; 69 color: ${({theme:e})=>e.colors.primary[400]}; 70 } 71`,z=p.styled.div.withConfig({displayName:"BlogPostPage__BlogHeroRow",componentId:"sc-896cef79-5"})` 72 display: grid; 73 grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr); 74 gap: ${({theme:e})=>e.space[8]}; 75 align-items: center; 76 77 @media (max-width: ${({theme:e})=>e.breakpoints.tablet}) { 78 grid-template-columns: 1fr; 79 align-items: start; 80 } 81`,B=p.styled.div.withConfig({displayName:"BlogPostPage__BlogHeroCopy",componentId:"sc-896cef79-6"})` 82 display: flex; 83 flex-direction: column; 84 gap: ${({theme:e})=>e.space[4]}; 85`,P=p.styled.div.withConfig({displayName:"BlogPostPage__ArticleLayout",componentId:"sc-896cef79-7"})` 86 display: grid; 87 grid-template-columns: minmax(0, 1fr) minmax(0, 860px); 88 gap: ${({theme:e})=>e.space[6]}; 89 align-items: stretch; 90 /* Bufor pod przyciski poprzedni/nastÄpny artykuÅ â spis treÅci to 91 position: sticky, jego wysokoÅÄ liczona jest ze 100% wysokoÅci wiersza, 92 a przy krótszym artykule z dÅuższym spisem treÅci potrafi byÄ odrobinÄ 93 wyższy niż sam wiersz. StaÅa wartoÅÄ, nie idealne rozwiÄ zanie dla 94 każdego skrajnego przypadku, ale prosta i wystarczajÄ ca dla typowych 95 dÅugoÅci artykuÅów/spisów treÅci na tej stronie. */ 96 padding-bottom: ${({theme:e})=>e.space[14]}; 97 98 @media (max-width: ${({theme:e})=>e.breakpoints.tablet}) { 99 /* minmax(0, 1fr), not bare 1fr â a bare 1fr track's implicit minimum 100 width is "auto" (content-based), so any child with a wide intrinsic 101 minimum content size (a table wrapped in overflow-x: auto, notably â
102 overflow:auto stops it from growing the *viewport*, but doesn't 103 shrink what it reports as its own minimum size) pushes the whole 104 single mobile column, and everything sharing it (TOC, table, 105 video), wider than the screen instead of scrolling internally 106 like it's meant to. minmax(0, 1fr) pins the minimum to 0 so the 107 track â and the overflow-x on the table â actually does its job. */ 108 grid-template-columns: minmax(0, 1fr); 109 gap: ${({theme:e})=>e.space[4]}; 110 } 111`,C=p.styled.aside.withConfig({displayName:"BlogPostPage__TocSlot",componentId:"sc-896cef79-8"})` 112 width: 100%; 113 max-width: 340px; 114 justify-self: end; 115 align-self: stretch; 116 padding-right: ${({theme:e})=>e.space[4]}; 117 118 @media (max-width: ${({theme:e})=>e.breakpoints.tablet}) { 119 grid-column: 1; 120 justify-self: stretch; 121 max-width: 100%; 122 padding-right: 0; 123 } 124`,$=p.styled.div.withConfig({displayName:"BlogPostPage__ArticleContent",componentId:"sc-896cef79-9"})` 125 width: 100%; 126 max-width: 860px; 127 justify-self: center; 128`;function _(e){let t=new Date(e);return new Intl.DateTimeFormat("pl-PL",{day:"2-digit",month:"2-digit",year:"numeric"}).format(t).replaceAll(".","-")}function A({src:e,alt:a}){let[r,n]=(0,s.useState)(e);return(0,t.jsx)(i.default,{src:r,alt:a,width:1200,height:630,priority:!0,fetchPriority:"high",sizes:"(max-width: 860px) 100vw, 860px",style:{width:"100%",height:"auto",borderRadius:"var(--mantine-radius-md)"},onError:()=>n("/assets/efektywna-nauka-programowania.webp")})}e.s(["default",0,function({post:e,previous:a,next:s,articleBody:p}){return(0,t.jsx)(n.Box,{w:"100%",maw:1280,mx:"auto",px:{base:20,md:24},children:(0,t.jsxs)(l.Stack,{gap:40,py:40,children:[(0,t.jsx)("article",{children:(0,t.jsxs)(l.Stack,{gap:"lg",children:[(0,t.jsx)(g.BreadcrumbsBar,{children:(0,t.jsx)(u.AppBreadcrumbs,{items:(0,h.buildBreadcrumbs)({label:"Blog",href:"/blog"},{label:e.title})})}),(0,t.jsxs)(z,{children:[(0,t.jsxs)(B,{children:[(0,t.jsx)(d.Title,{order:1,children:e.title}),(0,t.jsxs)(o.Group,{gap:"sm",children:[(0,t.jsx)(r.Avatar,{src:e.authorAvatar,size:34,alt:e.authorName}),(0,t.jsx)(c.Text,{fw:600,children:e.authorName}),(0,t.jsx)(c.Text,{c:"gray.7",size:"sm",children:_(e.publishedAt)}),e.updatedAt?(0,t.jsxs)(c.Text,{c:"gray.7",size:"sm",children:["(aktualizacja: ",_(e.updatedAt),")"]}):null,(0,t.jsx)(x,{slug:e.slug})]}),e.excerpt?(0,t.jsx)(k,{children:e.excerpt}):null]}),e.image?(0,t.jsx)(A,{src:e.image,alt:e.title}):null]}),(0,t.jsxs)(P,{children:[(0,t.jsx)(C,{children:(0,t.jsx)(y.TableOfContents,{contentSelector:".blogContent"})}),(0,t.jsxs)($,{children:[e.directAnswer?(0,t.jsx)(v,{id:"direct-answer-quote",children:e.directAnswer}):null,(0,t.jsx)(l.Stack,{gap:"md",className:"blogContent",maw:860,w:"100%",children:p})]})]}),(0,t.jsxs)(o.Group,{justify:"space-between",mt:"sm",children:[a?(0,t.jsxs)(w,{href:`/blog/${a.slug}`,"aria-label":`Poprzedni artykuÅ: ${a.title}`,children:[(0,t.jsx)(b,{"aria-hidden":"true",children:(0,t.jsx)(i.default,{src:"/assets/icon-arrow-right.png",alt:"",width:16,height:16,unoptimized:!0,style:{transform:"rotate(180deg)"}})}),"Poprzedni artykuÅ"]}):(0,t.jsx)(n.Box,{}),s?(0,t.jsxs)(w,{href:`/blog/${s.slug}`,"aria-label":`NastÄpny artykuÅ: ${s.title}`,children:["NastÄpny artykuÅ",(0,t.jsx)(j,{"aria-hidden":"true",children:(0,t.jsx)(i.default,{src:"/assets/icon-arrow-right.png",alt:"",width:16,height:16,unoptimized:!0})})]}):(0,t.jsx)(n.Box,{})]})]})}),(0,t.jsx)(f.ContactUs,{title:e.contactFormTitle,imageSrc:m.CONTACT_FORM_IMAGE,imageAlt:m.CONTACT_FORM_IMAGE_ALT,source:`/blog/${e.slug}`})]})})}])},133824,e=>{"use strict";var t=e.i(271645);e.s(["useDebouncedValue",0,function(e,i,a={leading:!1}){let[s,r]=(0,t.useState)(e),n=(0,t.useRef)(!1),o=(0,t.useRef)(null),l=(0,t.useRef)(!1),c=(0,t.useCallback)(()=>window.clearTimeout(o.current),[]);return(0,t.useEffect)(()=>{n.current&&(!l.current&&a.leading?(l.current=!0,r(e)):(c(),o.current=window.setTimeout(()=>{l.current=!1,r(e)},i)))},[e,a.leading,i]),(0,t.useEffect)(()=>(n.current=!0,c),[]),[s,c]}])},856637,e=>{"use strict";let t=(0,e.i(33550).default)("outline","file","File",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2",key:"svg-1"}]]);e.s(["IconFile",0,t],856637)},848719,e=>{"use strict";let t=(0,e.i(33550).default)("outline","search","Search",[["path",{d:"M3 10a7 7 0 1 0 14 0a7 7 0 1 0 -14 0",key:"svg-0"}],["path",{d:"M21 21l-6 -6",key:"svg-1"}]]);e.s(["IconSearch",0,t],848719)},102761,e=>{"use strict";let t=(0,e.i(33550).default)("outline","star","Star",[["path",{d:"M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873l-6.158 -3.245",key:"svg-0"}]]);e.s(["IconStar",0,t],102761)},759440,e=>{"use strict";let t=(0,e.i(33550).default)("outline","trophy","Trophy",[["path",{d:"M8 21l8 0",key:"svg-0"}],["path",{d:"M12 17l0 4",key:"svg-1"}],["path",{d:"M7 4l10 0",key:"svg-2"}],["path",{d:"M17 4v8a5 5 0 0 1 -10 0v-8",key:"svg-3"}],["path",{d:"M3 9a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-4"}],["path",{d:"M17 9a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-5"}]]);e.s(["IconTrophy",0,t],759440)}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.