PageSourceSearch

https://devmentor.pl/_next/static/chunks/3i8wvab13j1x3.js?dpl=dpl_AcebgQKfE7uB3hfFVpPKGyVR743Z

js devmentor.pl collected 2026-09-25 03:20:15 UTC 9,459 bytes, 128 lines download raw bytes

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.