{"version":3,"file":"static/chunks/app/(goodies)/operator-lookup/page-7817c93c3ec644b7.js","mappings":"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","sources":["webpack://_N_E/?65a4","webpack://_N_E/./src/components/CategoryPill/CategoryPill.tsx","webpack://_N_E/./src/components/CodeSnippet/CopyButton.tsx","webpack://_N_E/./src/components/CodeSnippet/WithCopyButton.tsx","webpack://_N_E/./src/components/FadeIn/FadeIn.tsx","webpack://_N_E/./src/components/FadeIn/index.ts","webpack://_N_E/./src/components/Goodies/OperatorLookup/Match.tsx","webpack://_N_E/./src/components/CategoryPill/index.ts","webpack://_N_E/./src/components/Goodies/OperatorLookup/data.tsx","webpack://_N_E/./src/components/Goodies/OperatorLookup/OperatorList.tsx","webpack://_N_E/./src/components/Boop/Boop.tsx","webpack://_N_E/./src/components/Boop/index.ts","webpack://_N_E/./src/components/Goodies/OperatorLookup/BigTextInput.js","webpack://_N_E/./src/components/Goodies/OperatorLookup/Search.js","webpack://_N_E/./src/components/Goodies/OperatorLookup/index.tsx","webpack://_N_E/./src/components/InlineCode/InlineCode.tsx","webpack://_N_E/./src/components/InlineCode/index.ts","webpack://_N_E/./src/components/JericaMascot/JericaMascot.tsx","webpack://_N_E/./src/components/JericaMascot/index.ts","webpack://_N_E/./src/components/MaxWidthWrapper/MaxWidthWrapper.tsx","webpack://_N_E/./src/components/MaxWidthWrapper/index.ts","webpack://_N_E/./src/components/Paragraph/Paragraph.tsx","webpack://_N_E/./src/components/Paragraph/index.ts","webpack://_N_E/./src/components/SiteFooter/UpsideDownJerica.tsx","webpack://_N_E/./src/components/SkipNav/SkipNav.tsx","webpack://_N_E/./src/hooks/use-interval.ts","webpack://_N_E/./src/components/Boop/Boop.linaria.module.css","webpack://_N_E/./src/components/CategoryPill/CategoryPill.linaria.module.css","webpack://_N_E/./src/components/CodeSnippet/AnnotatedContainer.linaria.module.css","webpack://_N_E/./src/components/CodeSnippet/CodeWrapper.linaria.module.css","webpack://_N_E/./src/components/CodeSnippet/CopyButton.linaria.module.css","webpack://_N_E/./src/components/CodeSnippet/WithCopyButton.linaria.module.css","webpack://_N_E/./src/components/FadeIn/FadeIn.linaria.module.css","webpack://_N_E/./src/components/GlassyBackdrop/GlassyBackdrop.linaria.module.css","webpack://_N_E/./src/components/Goodies/OperatorLookup/BigTextInput.linaria.module.css","webpack://_N_E/./src/components/Goodies/OperatorLookup/Match.linaria.module.css","webpack://_N_E/./src/components/Goodies/OperatorLookup/OperatorList.linaria.module.css","webpack://_N_E/./src/components/Goodies/OperatorLookup/Search.linaria.module.css","webpack://_N_E/./src/components/Goodies/OperatorLookup/index.linaria.module.css","webpack://_N_E/./src/components/InlineCode/InlineCode.linaria.module.css","webpack://_N_E/./src/components/JericaMascot/JericaMascot.linaria.module.css","webpack://_N_E/./src/components/LayoutBasic/LayoutBasic.linaria.module.css","webpack://_N_E/./src/components/Paragraph/Paragraph.linaria.module.css","webpack://_N_E/./src/components/SiteFooter/ExtraCloud.linaria.module.css","webpack://_N_E/./src/components/SiteFooter/FooterSwoops.linaria.module.css","webpack://_N_E/./src/components/SiteFooter/FullFatSiteFooter.linaria.module.css","webpack://_N_E/./src/components/SiteFooter/UpsideDownJerica.linaria.module.css","webpack://_N_E/./src/components/SkipNav/SkipNav.linaria.module.css"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/CodeSnippet/CodeWrapper.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/CodeSnippet/WithCopyButton.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/Goodies/OperatorLookup/index.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/Icons/IconBluesky.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/Icons/IconColorMode.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/Icons/IconRSS.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/Icons/IconSearch.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/Icons/IconSpeaker.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/Link/Link.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/MaxWidthWrapper/MaxWidthWrapper.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/Logo/Logo.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/InlineCode/InlineCode.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/SiteFooter/Affirmation.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/SiteFooter/FooterLink.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/SiteFooter/FooterCategoryList.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/SiteFooter/FooterNewsletterForm.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/SiteFooter/IconLink.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/SiteFooter/SiteFooter.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/SiteFooter/FooterSwoops.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/SiteFooter/ExtraCloud.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/SiteFooter/FullFatSiteFooter.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/GlassyBackdrop/GlassyBackdrop.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/LayoutBasic/LayoutBasic.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/CodeSnippet/AnnotatedContainer.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/Link/TextLink.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/SiteFooter/UpsideDownJerica.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/SiteHeader/SiteHeader.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"SkipNavTrigger\",\"SkipNavTarget\"] */ \"/vercel/path0/src/components/SkipNav/SkipNav.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/Spacer/Spacer.linaria.module.css\");\n","'use client';\n\nimport React from 'react';\nimport { styled } from '@linaria/react';\nimport { useSpring, animated } from 'react-spring';\n\nimport { BREAKPOINTS, TIGHT_SPRING } from '@/constants';\nimport useSound from '@/hooks/use-sound';\nimport usePrefersReducedMotion from '@/hooks/use-prefers-reduced-motion';\n\nimport Link from '@/components/Link';\n\ninterface Props {\n href?: string;\n onClick?: () => void;\n children: React.ReactNode;\n}\n\nconst CategoryPill = ({ href, onClick, children }: Props) => {\n const [isHovering, setIsHovering] = React.useState(false);\n const prefersReducedMotion = usePrefersReducedMotion();\n\n const backgroundSpring = useSpring({\n opacity: isHovering ? 1 : 0.8,\n transform: isHovering ? `scale(1.06)` : `scale(0.99)`,\n config: TIGHT_SPRING,\n immediate: prefersReducedMotion,\n });\n\n const [playHoverSound, { stop }] = useSound(\n '/sounds/plunger-immediate.mp3',\n {\n volume: 0.15,\n }\n );\n\n const as = href ? Link : 'button';\n\n return (\n {\n setIsHovering(true);\n playHoverSound();\n }}\n onMouseLeave={() => {\n setIsHovering(false);\n stop();\n }}\n onClick={onClick}\n >\n \n {children}\n \n );\n};\n\n// NOTE: This won't actually render an . It's overwritten by `as` in the component definition, either a Link or \"button\".\nconst LinkWrapper = styled.a`\n position: relative;\n display: inline-block;\n border-radius: 8px;\n padding: 0.3125rem 0.75rem;\n font-size: 0.875rem;\n color: inherit;\n text-decoration: none;\n isolation: isolate;\n\n @media ${BREAKPOINTS.smAndSmaller} {\n padding: 6px 18px;\n font-size: 1rem;\n }\n`;\n\nconst Background = styled(animated.div)`\n position: absolute;\n z-index: -1;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border-radius: inherit;\n background-color: var(--color-cloud-500);\n transform-origin: center center;\n transition: outline-color var(--color-swap-duration);\n outline: 1px solid transparent;\n outline-offset: -1px;\n\n html[data-color-mode='dark'] & {\n background-color: transparent;\n outline: 1px solid var(--color-gray-300);\n }\n`;\n\nexport default CategoryPill;\n","'use client';\n\nimport * as React from 'react';\nimport { styled } from '@linaria/react';\nimport { useSpring, animated } from 'react-spring';\nimport { Clipboard, Check } from 'lucide-react';\n\nimport useBoop from '@/hooks/use-boop';\nimport useHasHydrated from '@/hooks/use-has-hydrated';\n\nimport {\n InfoAside,\n WarningAside,\n SuccessAside,\n} from '@/components/Aside';\nimport VisuallyHidden from '@/components/VisuallyHidden';\nimport Spinner from '@/components/Spinner';\n\nimport AnnotatedContainer from './AnnotatedContainer';\n\ninterface Props extends React.HTMLAttributes {\n handleCopy: (copyId: number) => void;\n}\n\nfunction CopyButton({ handleCopy, ...delegated }: Props) {\n const [copyId, setCopyId] = React.useState(null);\n const [rotation, setRotation] = React.useState(0);\n const [wrapperStyle, wrapperTrigger] = useBoop({ scale: 1.05 });\n\n const hasHydrated = useHasHydrated();\n\n const style = useSpring({\n transform: `rotate(${rotation}deg)`,\n config: {\n tension: 300,\n friction: 10,\n },\n });\n\n const timeoutId = React.useRef();\n\n React.useEffect(() => {\n if (!copyId) {\n return;\n }\n\n // let timeoutId: number;\n timeoutId.current = window.setTimeout(() => {\n setCopyId(null);\n }, 3000);\n\n return () => {\n if (timeoutId.current) {\n window.clearTimeout(timeoutId.current);\n }\n };\n }, [copyId]);\n\n return (\n {\n setRotation(10);\n }}\n onMouseEnter={wrapperTrigger}\n onClick={() => {\n const newCopyId = Date.now();\n handleCopy(newCopyId);\n setRotation(-10);\n\n window.setTimeout(() => {\n setRotation(0);\n }, 150);\n\n window.setTimeout(() => {\n setCopyId(newCopyId);\n }, 0);\n }}\n >\n \n \n {/* We never want there to be confusion around whether the app is interactive or not. Render a spinner which will be replaced after hydration */}\n {hasHydrated ? (\n \n ) : (\n \n )}\n \n \n \n Copy to clipboard\n \n \n \n );\n}\n\nconst Wrapper = styled.button`\n position: sticky;\n z-index: 2;\n display: flex;\n justify-content: center;\n align-items: center;\n width: var(--copy-button-size);\n height: var(--copy-button-size);\n /*\n --copy-button-sticky-top is used when this code snippet is rendered on a page with a sticky header (eg. within blog posts). It ensures the button appears to stack below the header. It's set in CodeWrapper.\n --copy-button-margin is the buffer between the copy button and the edge of the snippet. It's defined in CodeWrapper, since it's also used there for some calculations.\n */\n top: calc(\n var(--copy-button-sticky-top, 0px) + var(--copy-button-margin)\n );\n transform: translateX(calc(var(--copy-button-margin) * -1));\n margin-block: var(--copy-button-margin);\n margin-left: auto;\n margin-right: 0;\n border: 1px solid;\n color: var(--color-gray-800);\n border-radius: 5px;\n opacity: 0;\n transition: opacity 250ms;\n transition-delay: 1000ms;\n\n ${AnnotatedContainer}:hover &,\n &:focus-visible {\n opacity: 1;\n transition-delay: 0ms;\n }\n\n /*\n The color mode can be set in two ways:\n • The global page-level value, on the tag\n • A local value, on this element via data-locked-to-color-mode\n\n This complicated selector ensures that we prioritize the local value, while still following the global value otherwise\n */\n html[data-color-mode='light']\n &:not([data-locked-to-color-mode='dark']),\n &[data-locked-to-color-mode='light'] {\n background: var(--color-info-300);\n border-color: var(--color-info-100);\n }\n html[data-color-mode='dark']\n &:not([data-locked-to-color-mode='light']),\n &[data-locked-to-color-mode='dark'] {\n background: var(--color-background);\n border-color: var(--color-gray-200);\n }\n\n html[data-color-mode='dark'] ${InfoAside} & {\n border-color: var(--color-info-300);\n background: var(--color-info-200);\n }\n html[data-color-mode='dark'] ${WarningAside} & {\n border-color: var(--color-warning-300);\n background: var(--color-warning-200);\n }\n html[data-color-mode='dark'] ${SuccessAside} & {\n border-color: var(--color-success-300);\n background: var(--color-success-200);\n }\n\n html[data-color-mode='light'] ${InfoAside} & {\n border-color: var(--color-info-200);\n background: var(--color-info-300);\n }\n html[data-color-mode='light'] ${WarningAside} & {\n border-color: var(--color-warning-200);\n background: var(--color-warning-300);\n }\n html[data-color-mode='light'] ${SuccessAside} & {\n border-color: var(--color-success-200);\n background: var(--color-success-300);\n }\n`;\n\nconst IconOuterWrapper = styled(animated.span)`\n display: block;\n will-change: transform;\n`;\n\nconst IconWrapper = styled(animated.span)`\n display: block;\n will-change: transform;\n transform-origin: 50% 20%;\n\n svg {\n display: block;\n }\n`;\n\nconst CheckWrapper = styled.span`\n position: absolute;\n left: 0;\n right: 0;\n top: 2px;\n bottom: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n color: hsl(180deg 100% 30%);\n color: oklch(0.59 0.14 194.88);\n transition:\n opacity 500ms,\n transform 650ms;\n transition-delay: 200ms;\n`;\n\nconst HiddenText = styled(VisuallyHidden)`\n /* If the user wants to copy the code by selecting all of the stuff inside, we don't want them to also copy the “Copy to clipboard” hidden text: */\n user-select: none;\n`;\n\nexport default CopyButton;\n","'use client';\n\nimport * as React from 'react';\nimport { styled } from '@linaria/react';\n\nimport { ColorMode } from '@/constants';\nimport { copyToClipboard } from '@/utils';\nimport useInterval from '@/hooks/use-interval';\n\nimport CopyButton from './CopyButton';\n\ninterface Props {\n code: string;\n lockedToColorMode?: ColorMode | false;\n children: React.ReactNode;\n}\n\nfunction WithCopyButton({\n code,\n lockedToColorMode,\n children,\n}: Props) {\n const [copyIds, setCopyIds] = React.useState>([]);\n\n // Clean up old copy IDs, to prevent infinite memory buildup.\n useInterval(() => {\n if (copyIds.length === 0) {\n return;\n }\n\n setCopyIds((currentValue) => {\n return currentValue.filter((id) => Date.now() - id < 5000);\n });\n }, 5000);\n\n const handleCopy = React.useCallback(() => {\n copyToClipboard(code);\n setCopyIds((currentValue) => [...currentValue, Date.now()]);\n }, [code]);\n\n return (\n <>\n \n\n {children}\n\n {copyIds.map((id) => (\n \n \n \n ))}\n \n );\n}\n\nconst CopyEffectWrapper = styled.div`\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n overflow: clip;\n pointer-events: none;\n`;\n\nconst CopyEffect = styled.div`\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n background: linear-gradient(\n to right,\n transparent 30%,\n var(--copy-color) 48%,\n var(--copy-color) 52%,\n transparent 70%\n );\n animation:\n copy 800ms both ease-in-out,\n fadeInOut 1000ms ease-in-out both;\n will-change: transform;\n mix-blend-mode: var(--blend-mode);\n\n /*\n The color mode can be set in two ways:\n • The global page-level value, on the tag\n • A local value, on this element via data-locked-to-color-mode\n\n This complicated selector ensures that we prioritize the local value, while still following the global value otherwise\n */\n html[data-color-mode='light']\n &:not([data-locked-to-color-mode='dark']),\n &[data-locked-to-color-mode='light'] {\n --copy-color: hsl(0deg 0% 100% / 0.75);\n --blend-mode: overlay;\n }\n html[data-color-mode='dark']\n &:not([data-locked-to-color-mode='light']),\n &[data-locked-to-color-mode='dark'] {\n --copy-color: hsl(210deg 15% 60% / 0.2);\n --blend-mode: lighten;\n }\n\n @keyframes copy {\n 0% {\n transform: translateX(-50%);\n }\n 100% {\n transform: translateX(50%);\n }\n }\n @keyframes fadeInOut {\n 0% {\n opacity: 0;\n }\n 20% {\n opacity: 1;\n }\n 60% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n`;\n\nexport default WithCopyButton;\n","import React from 'react';\nimport { styled } from '@linaria/react';\n\ninterface Props extends React.HTMLAttributes {\n duration?: number;\n delay?: number;\n children: React.ReactNode;\n}\n\nconst FadeIn = ({\n duration = 333,\n delay = 0,\n children,\n ...delegated\n}: Props) => {\n return (\n \n {children}\n \n );\n};\n\nconst Wrapper = styled.div`\n @media (prefers-reduced-motion: no-preference) {\n animation-name: fadeIn;\n animation-fill-mode: backwards;\n }\n`;\n\nexport default FadeIn;\n","export { default } from './FadeIn';\n","import { styled } from '@linaria/react';\n\nimport type { OperatorWithSnippet } from './OperatorLookup.types';\n\nconst Match = ({\n label,\n definition,\n example,\n link,\n disclaimer,\n}: OperatorWithSnippet) => {\n return (\n \n \n This is the{' '}\n \n {label}\n {' '}\n operator.\n \n {definition}\n {example && {example}}\n {disclaimer && (\n {disclaimer}\n )}\n\n \n Read more about this operator{' '}\n on MDN.\n \n \n );\n};\n\nconst Wrapper = styled.div`\n position: relative;\n z-index: 3;\n text-align: left;\n margin-top: 64px;\n animation: fadeIn 500ms 500ms both;\n`;\n\nconst Intro = styled.p`\n font-size: 1.3125rem;\n text-align: center;\n`;\n\nconst DefinitionWrapper = styled.div`\n margin: 32px 0;\n font-size: 1.125rem;\n\n p {\n margin-bottom: 24px;\n }\n`;\n\nconst CodeWrapper = styled.div`\n position: relative;\n margin-top: 48px;\n`;\n\nconst MDNLink = styled.a`\n display: block;\n color: var(--color-gray-1000);\n margin-top: 48px;\n font-size: 1.125rem;\n text-decoration: none;\n\n @media (min-width: 610px) {\n text-align: center;\n background: var(--color-muted);\n padding: 16px;\n border-radius: 8px;\n }\n`;\n\nconst FakeTextLink = styled.span`\n display: inline-block;\n position: relative;\n font-weight: var(--font-weight-medium);\n\n &:after {\n content: '';\n position: absolute;\n left: -2px;\n right: -2px;\n bottom: 0px;\n height: 2px;\n background-color: var(--color-primary);\n border-radius: 2px;\n transition:\n transform 200ms 150ms,\n opacity 350ms 150ms;\n }\n`;\n\nexport default Match;\n","export { default } from './CategoryPill';\n","import React from 'react';\n\nimport TextLink from '@/components/Link/TextLink';\nimport InlineCode from '@/components/InlineCode';\nimport ServerOnlySnippet from '@/components/CodeSnippet/ServerOnlySnippet';\n\nimport type { Operator } from './OperatorLookup.types';\n\nconst DATA: Record = {\n '=>': {\n label: 'Arrow',\n definition: (\n <>\n

\n While technically not an operator, this combination of\n characters is used in arrow functions.\n

\n

\n An arrow function is an alternative way of writing a\n function definition. It comes with a few small\n quality-of-life benefits.\n

\n

\n Arrow functions are somewhat limited: they don't have their\n own context (so this cannot be\n used), nor can they be used as constructors.\n

\n \n ),\n example: `\nfunction regularFunction() {\n console.log(\"I'm a traditional function!\")\n}\n\nconst arrowFunction = () => {\n console.log(\"I'm an arrow function!\")\n}\n\n// Arrow functions can omit the parentheses\n// if they only take a single parameter:\nconst singleParam = num => {\n console.log(num);\n}\n\n// Arrow functions also have an implicit return\n// if the braces are omitted:\nconst implicitReturn = () => 5;\nconsole.log(implicitReturn()); // 5\n\n// Arrow functions are convenient when used as\n// callbacks for array methods:\nconst nums = [-2, -1, 0, 1, 2, 3];\nconst positiveNums = nums.filter(num => num >= 0);\nconsole.log(positiveNums); // [0, 1, 2, 3]\n`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions',\n },\n\n '+': {\n label: 'Addition',\n definition: (\n <>\n

\n This operator adds two numbers together, or concatenates two\n strings together.\n

\n

\n If a number and a string are used together, it performs a\n concatenation.\n

\n

\n Less commonly, it can be used as a{' '}\n \n unary operator\n \n , to try and convert a string containing digits to a number.\n It's a somewhat obscure trick, and it's generally better to\n use the{' '}\n \n Number()\n {' '}\n helper instead.\n

\n \n ),\n example: `\nconsole.log(1 + 1); // 2\nconsole.log('hello' + 'world');\n// 'helloworld'\n\nconsole.log(1 + '1'); // '11'\n\n// As a unary operator\nconsole.log(+'5'); // 5\nconsole.log(+'hello'); // NaN\n`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Addition',\n },\n\n '+=': {\n label: 'Addition Assignment',\n definition: (\n <>\n

\n This operator adds the supplied value to a variable, and\n overwrites that variable's value with the result.\n

\n

\n This is one of those things which is hard to explain in\n words, but hopefully these examples help clarify!\n

\n \n ),\n example: `\nlet x = 10;\nlet y = 10;\n\nx += 1;\nconsole.log(x); // 11 (10 + 1)\n\ny += 5;\nconsole.log(y); // 15 (10 + 5)\n`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Addition_assignment',\n },\n\n '=': {\n label: 'Assignment',\n definition: (\n <>\n

This operator assigns a value to a variable.

\n

\n Not to be confused with the Equality (\n ==) or Strict Equality (\n ===) operators!\n

\n \n ),\n example: `\nlet hi = 5;\nlet hello = 'world';\n`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Assignment',\n },\n\n '&': {\n label: 'Bitwise AND',\n definition: (\n <>\n

\n This operator returns a 1 in each bit position for which the\n corresponding bits of both operands are 1s.\n

\n

\n Not to be confused with the Logical AND operator (\n {'&&'})\n

\n

\n Honestly, I don't really understand Bitwise operators;\n hopefully this MDN link will help you out:\n

\n \n ),\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_AND',\n },\n\n '&=': {\n label: 'Bitwise AND Assignment',\n definition: (\n <>\n

\n This operator performs a bitwise AND operation to a\n variable, and overwrites the result into the same variable.\n

\n

\n Honestly, I don't really understand Bitwise operators;\n hopefully this MDN link will help you out:\n

\n \n ),\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_AND_assignment',\n },\n\n '~': {\n label: 'Bitwise NOT',\n definition: (\n <>\n

\n This operator inverts the bits of the value it's called\n with.\n

\n

\n Honestly, I don't really understand Bitwise operators;\n hopefully this MDN link will help you out:\n

\n \n ),\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_NOT',\n },\n\n '|': {\n label: 'Bitwise OR',\n definition: (\n <>\n

This operator performs a bitwise OR operation.

\n

\n Not to be confused with the Logical OR operator (\n ||)\n

\n

\n Honestly, I don't really understand Bitwise operators;\n hopefully this MDN link will help you out:\n

\n \n ),\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_OR',\n },\n\n '|=': {\n label: 'Bitwise OR Assignment',\n definition: (\n <>\n

\n This operator performs a bitwise OR operation on a variable,\n and assigns the result to that same variable.\n

\n\n

\n Honestly, I don't really understand Bitwise operators;\n hopefully this MDN link will help you out:\n

\n \n ),\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_OR_assignment',\n },\n\n '^': {\n label: 'Bitwise XOR',\n definition: (\n <>\n

\n This operator performs a bitwise XOR operation on a\n variable.\n

\n\n

\n Honestly, I don't really understand Bitwise operators;\n hopefully this MDN link will help you out:\n

\n \n ),\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_XOR',\n },\n\n '^=': {\n label: 'Bitwise XOR Assignment',\n definition: (\n <>\n

\n This operator performs a bitwise XOR operation on a\n variable, and assigns the result to that same variable.\n

\n\n

\n Honestly, I don't really understand Bitwise operators;\n hopefully this MDN link will help you out:\n

\n \n ),\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_XOR_assignment',\n },\n\n ',': {\n label: 'Comma',\n definition: (\n <>\n

\n The comma operator evaluates each in a sequence of values,\n and returns the final value.\n

\n

\n Note that the comma character isn't usually used as an\n operator; when passing multiple arguments to a function, for\n example, the comma character is not serving as an\n operator. That's a totally unrelated thing.\n

\n \n ),\n example: `\nconst x = (2, 3);\n\nconsole.log(x); // 3\n`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator',\n },\n\n '?': {\n label: 'Ternary',\n definition: (\n <>\n

\n The ternary operator is unique to Javascript in that it\n requires two separate pseudo-operators,{' '}\n ? and :.\n

\n

\n It is used to evaluate a condition, and return a different\n value depending on whether that condition is truthy or\n falsy. It's functionally equivalent to an if/else statement,\n but because it's an operator, it's usable in an expression.\n This allows it to be useful in a broader range of situations\n (eg. within JSX in React).\n

\n \n ),\n example: `\nconsole.log(10 ? 'yes' : 'no');\n// 'yes', since 10 is truthy\n\nconsole.log(0 ? 'yes' : 'no');\n// 'no', since 0 is falsy\n\n// Can be used alongside other operators:\nconsole.log(\n (5 < 10) ? 'smaller' : 'larger'\n); // 'smaller'\n`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator',\n },\n\n '--': {\n label: 'Decrement',\n definition: (\n <>\n

\n This operator is meant to be used on variables that hold\n numbers. When used, it decreases that variable's value by 1.\n

\n

\n This is commonly used in conjunction with{' '}\n while loops, or anywhere that\n requires a counter.\n

\n

\n It's functionally equivalent to{' '}\n x = x - 1;\n

\n \n ),\n example: `\nlet x = 5;\n\nx--;\nconsole.log(x); // 4\n`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Decrement',\n },\n\n '/': {\n label: 'Division',\n definition: (\n <>\n

\n This operator performs a mathematical division operation. It\n can be thought of as an easier-to-type division symbol (÷)\n

\n \n ),\n example: `\nconsole.log(10 / 2); // 5\nconsole.log(5 / 4); // 1.25`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Division',\n },\n\n '/=': {\n label: 'Division Assignment',\n definition: (\n <>\n

\n This operator performs a mathematical division operation on\n a variable, and assigns the result to that variable.\n

\n \n ),\n example: `\nlet x = 6;\nx /= 3;\n\nconsole.log(x); // 2\n `,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Division_assignment',\n },\n\n '**': {\n label: 'Exponentiation',\n definition: (\n <>\n

\n This operator multiplies a value side by itself a specified\n number of times. It's the modern equivalent to{' '}\n Math.pow().\n

\n \n ),\n example: `\nlet x = 2;\n\nconsole.log(2 ** 2); // 4\nconsole.log(2 ** 3); // 8\nconsole.log(2 ** 4); // 16\n\nconsole.log(2 ** 0); // 1\n `,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Exponentiation',\n },\n\n '**=': {\n label: 'Exponentiation Assignment',\n definition: (\n <>\n

\n This operator applies an exponentiation (bringing the value\n to the power of X), an assigns the result to the affected\n variable. It's analogous to other assignment operators like\n the Addition Assignment (+=)\n operator.\n

\n \n ),\n example: `\nlet x = 2;\n\nx **= 4;\nconsole.log(x); // 16 (2 ** 4)\n `,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Exponentiation_assignment',\n },\n\n '<<': {\n label: 'Left Shift',\n definition: (\n <>\n

This operator performs a bitwise shift operation.

\n

\n Honestly, I don't really understand Bitwise operators;\n hopefully this MDN link will help you out:\n

\n \n ),\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Left_shift',\n },\n\n '<<=': {\n label: 'Left Shift Assignment',\n definition: (\n <>\n

\n This operator performs a bitwise shift operation on a\n variable, and overwrites the variable with this new value.\n

\n

\n Honestly, I don't really understand Bitwise operators;\n hopefully this MDN link will help you out:\n

\n \n ),\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Left_shift_assignment',\n },\n\n '&&': {\n label: 'Logical AND',\n definition: (\n <>\n

\n This operator is commonly used to check if all supplied\n values are truthy.\n

\n

\n It also works as a control-flow operator: it will return the\n first falsy value. If none of the values are falsy, it will\n return the final value.\n

\n \n ),\n example: `\n// As a logical operator:\nif (someCondition && someOtherCondition) {\n // Code here is only run if both\n // variables are true, or truthy.\n}\n\n// As a control flow operator:\nconsole.log(0 && 4);\n// 0, since it's the first falsy value\n\nconsole.log(2 && 4);\n// 4, since neither value is falsy\n\nconsole.log(1 && 2 && 3);\n// 3, since all values are truthy\n\nconsole.log('a' && '' && 0);\n// '', the first falsy value\n`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND',\n },\n\n '&&=': {\n label: 'Logical AND Assignment',\n definition: (\n <>\n

This is a funky one!

\n

\n It will assign a value to a variable, but only if that\n variable already holds a truthy value.\n

\n \n ),\n example: `\nlet x = 0;\nlet y = 1;\n\nx &&= 2; // No effect, since 0 is falsy\ny &&= 2; // Assigns 2, since 1 is truthy\n\nconsole.log(x, y); // 0, 2\n`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND_assignment',\n },\n\n '!': {\n label: 'Logical NOT',\n definition: (\n <>\n

\n This operator, colloquially known as a bang, flips a boolean\n value. False becomes true, true becomes false.\n

\n

\n It also works on non-boolean values. Any falsy value will\n evaluate to true, and likewise any\n truthy value will evaluate to false\n .\n

\n

\n It can be repeated to turn any truthy value to true, and any\n falsy value to false, as shown below:\n

\n \n ),\n example: `\nconsole.log(!true); // false\nconsole.log(!false); // true\n\nconsole.log(!0); // true\nconsole.log(!10); // false\n\nconsole.log(!!0); // false\nconsole.log(!!10); // true\n`,\n disclaimer: (\n

\n When placed at the end of a variable, this symbol\n acts as the TypeScript{' '}\n \n Non-null Assertion Operator\n {' '}\n instead.\n

\n ),\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_NOT',\n },\n\n '||': {\n label: 'Logical OR',\n definition: (\n <>\n

\n This operator is commonly used to check if either supplied\n value is truthy.\n

\n

\n It also works as a control-flow operator: it will return the\n first truthy value. If none of the values are truthy, it\n will return the final value.\n

\n \n ),\n example: `\n// ---> As a logical operator:\n\nif (someCondition || someOtherCondition) {\n // Code here is only run if at least one of\n // the two variables hold truthy values.\n}\n\n// ---> As a control flow operator:\n\nconsole.log(0 || 4);\n// 4, since it's the first truthy value\n\nconsole.log(2 || 4);\n// 2, since it's the first truthy value\n\nconsole.log('' || 0);\n// 0, since no values are truthy\n\nconsole.log(1 || 2 || 3);\n// 1, since it found a truthy value right away!\n`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_OR',\n },\n\n '||=': {\n label: 'Logical OR Assignment',\n definition: (\n <>\n

\n This is a funky one, and not just because it makes a fun\n emoticon face!\n

\n

\n It will assign a value to a variable, but only if that\n variable already holds a falsy value.\n

\n \n ),\n example: `\nlet x = 0;\nlet y = 1;\n\nx ||= 2;\n// Assigns 2, since 0 is falsy\n\ny ||= 2;\n// Has no effect, since 'y' held a truthy value\n\nconsole.log(x, y); // 2, 1\n`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_OR_assignment',\n },\n\n '??=': {\n label: 'Logical Nullish Assignment',\n definition: (\n <>\n

\n This operator will update a variable with a new value, but\n only if that variable currently holds a \"nullish\" value\n (either null or{' '}\n undefined).\n

\n

\n This is a relatively new addition to the language (Chrome\n 85, Firefox 79, Safari 14). No IE support.\n

\n \n ),\n example: `\nlet x = 0;\nlet y = null;\nlet z;\n\nx ??= 2;\n// Has no effect, since 'x' already holds a value\n\ny ??= 2;\n// Updates 'y' to hold this new value\n\nz ??= 2;\n// Updates 'z' to hold this new value\n// (by not assigning 'z' a value initially, it\n// was considered undefined).\n\nconsole.log(x, y, z); // 0, 2, 2\n`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_nullish_assignment',\n },\n\n '*': {\n label: 'Multiplication',\n definition: (\n <>\n

\n This operator performs a mathematical multiplication\n operation. It can be thought of as an easier-to-type\n multiplication symbol (× or ⋅).\n

\n \n ),\n example: `\nconsole.log(10 * 2); // 20\nconsole.log(1.25 * 4); // 5`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Multiplication',\n },\n\n '*=': {\n label: 'Multiplication Assignment',\n definition: (\n <>\n

\n This operator performs a mathematical multiplication\n operation on a variable, and assigns the result to that\n variable.\n

\n \n ),\n example: `\nlet x = 6;\nx *= 3;\n\nconsole.log(x); // 18\n `,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Multiplication_assignment',\n },\n\n '??': {\n label: 'Nullish Coalescing',\n definition: (\n <>\n

\n This relatively-new addition to the language is similar to\n the Logical OR operator (||),\n except instead of relying on truthy/falsy values, it relies\n on \"nullish\" values (there are only 2 nullish values,{' '}\n null and{' '}\n undefined).\n

\n

\n This means it's safer to use when you treat falsy values\n like 0 as valid.\n

\n

\n Similar to Logical OR, it functions as a control-flow\n operator; it evaluates to the first not-nullish value.\n

\n

\n It was introduced in Chrome 80 / Firefox 72 / Safari 13.1.\n It has no IE support.\n

\n \n ),\n example: `\nconsole.log(4 ?? 5);\n// 4, since neither value is nullish\n\nconsole.log(null ?? 10);\n// 10, since 'null' is nullish\n\nconsole.log(undefined ?? 0);\n// 0, since 'undefined' is nullish\n\n// Here's a case where it differs from\n// Logical OR (||):\nconsole.log(0 ?? 5); // 0\nconsole.log(0 || 5); // 5\n `,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator',\n },\n\n '?.': {\n label: 'Optional Chaining',\n definition: (\n <>\n

\n This operator is similar to the Property Accessor operator (\n .); it accesses a property on an\n object.\n

\n

\n The difference is that it's safe to chain; if at any point,\n a nullish value (null or{' '}\n undefined) is surfaced, the chain\n short-circuits and returns{' '}\n undefined.\n

\n

\n It can also be used in a couple surprising and neat ways,\n documented below:\n

\n \n ),\n example: `\nconst someObject = {}\n\nconsole.log(someObject.prop.thing);\n// Uncaught TypeError: Cannot read property\n// 'thing' of undefined\n\nconsole.log(someObject?.prop?.thing);\n// undefined\n\nconst obj = {\n hi: {\n hello: 5,\n },\n};\n\n// When the property name is stored in a variable:\nconst outerKey = 'hi';\nconst innerKey = 'hello';\nconsole.log(obj?.[outerKey]?.[innerKey]); // 5\n\n// When the property in question is a function\nconst dog = {\n woof() { return 'Woof!' }\n};\n\nconsole.log(dog.woof?.()); // \"Woof!\"\nconsole.log(dog.meow?.()); // undefined\n`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining',\n },\n\n '|>': {\n label: 'Pipeline',\n definition: (\n <>\n

\n This operator is currently a{' '}\n \n Stage 2 proposed feature\n \n ; it doesn't exist yet, in any browser.\n

\n

\n It functions as a sort of \"inverted\" function call; instead\n of calling a function with an argument, you \"pipe\" an\n argument into a function.\n

\n

\n This is useful in certain functional-programming paradigms;\n it provides a nicer interface for currying, for example.\n

\n \n ),\n example: `\n// Typical function call:\nalert('hello');\n\n// Piped alternative:\n'hello' |> alert\n\n`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Pipeline_operator',\n },\n\n '.': {\n label: 'Property Accessor',\n definition: (\n <>\n

\n When accessing a property on an object, you can use dot\n notation to pluck it out. This only works if you know the\n key of the property; if that property name is held in a\n variable, you'll need to use bracket notation instead.\n

\n \n ),\n example: `\nconst me = {\n name: 'Jerica C.',\n address: {\n street: '123 Street Ave.',\n city: 'Montréal',\n province: 'Québec',\n country: 'Canada'\n }\n}\n\nconsole.log(me.name); // 'Jerica C.'\nconsole.log(me.address.city); // 'Montréal'\n\n// If the key is held in a variable,\n// I need to use brackets.\nconst relevantField = 'city';\n\nconsole.log(me.address.relevantField);\n// undefined\n\nconsole.log(me.address[relevantField]);\n// 'Montréal'\n`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_accessors',\n },\n\n '%': {\n label: 'Remainder (Modulo)',\n definition: (\n <>\n

\n This operator is in the same mathematical family as Addition\n (+) or Multiplication (\n *).\n

\n

\n It evaluates to the remainder of dividing the left-hand\n value by the right-hand.\n

\n

\n I have an entire blog post about this operator:{' '}\n \n Understanding the JavaScript Modulo Operator\n \n

\n \n ),\n example: `\nconsole.log(8 % 2);\n// 0 — 2 fits perfectly into 4, so the\n// remainder is '0'.\n\nconsole.log(8 % 7);\n// 1 — 7 can only go into 8 once, and\n// there's 1 left over; imagine taking\n// 7 pieces of pizza, and seeing 1 left.\n\n`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Remainder',\n },\n\n '%=': {\n label: 'Remainder (Modulo) Assignment',\n definition: (\n <>\n

\n This operator is the \"assignment\" version of the remainder\n operator (%). It performs the\n operation on a variable, and assigns the result to that\n variable.\n

\n \n ),\n example: `\nlet hi = 5;\n\nhi %= 4;\nconsole.log(hi); // 1\n`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Remainder_assignment',\n },\n\n '>>': {\n label: 'Right Shift',\n definition: (\n <>\n

This operator performs a bitwise shift operation.

\n

\n Honestly, I don't really understand Bitwise operators;\n hopefully this MDN link will help you out:\n

\n \n ),\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Right_shift',\n },\n\n '>>=': {\n label: 'Right Shift Assignment',\n definition: (\n <>\n

\n This operator performs a bitwise shift operation on a\n variable, and overwrites the variable with this new value.\n

\n

\n Honestly, I don't really understand Bitwise operators;\n hopefully this MDN link will help you out:\n

\n \n ),\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Right_shift_assignment',\n },\n\n '...': {\n label: 'Rest/Spread',\n definition: (\n <>\n

\n Alright, so this is a weird one. It's technically not an\n operator, it's special syntax we can use. And this syntax\n serves two mirror purposes:\n

\n

\n Rest: This syntax is used in function\n definitions to collect additional function arguments. Useful\n when you don't know how many parameters a function needs. It\n collects them into an array.\n

\n

\n Spread: This syntax performs the opposite\n of \"rest\", and can be used to populate a function from an\n array. It can also be used to clone or merge arrays and\n objects.\n

\n \n ),\n example: `\n// --- Rest:\nfunction collectNums(...numbers) {\n console.log(numbers);\n}\n\ncollectNums(1, 2, 3, 4); // [1, 2, 3, 4]\n\n// --- Spread:\nfunction addNums(a, b) {\n console.log(a + b);\n}\n\nconst myTwoNums = [1, 1];\naddNums(...myTwoNums); // logs \"2\"\n\n// Cloning an array\nconst data = [1, 2, 3];\nconst dataCopy = [...data];\nconst zeroIndexedData = [0, ...data];\n// [0, 1, 2, 3]\n\n// Merging an object\nconst obj = { hi: 5, bye: 10 };\nconst newObj = {...obj, bye: 20};\nconsole.log(newObj); // { hi: 5, bye: 20 };\n`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax',\n },\n\n '-': {\n label: 'Subtraction',\n definition: (\n <>\n

\n This operator subtracts one number from another. It's a\n mathematical operator.\n

\n

\n As a unary operator, it can also be used to signify that a\n number is negative—for example-5{' '}\n isn't subtracting anything, it's indicating that this\n number's value is negative 5.\n

\n \n ),\n example: `\nconsole.log(4 - 1); // 3\n\n// As a unary operator\nconst negativeNum = -5;\nconsole.log(5 + negativeNum); // 0\n`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Subtraction',\n },\n\n '-=': {\n label: 'Subtraction Assignment',\n definition: (\n <>\n

\n This operator subtracts the supplied value from a variable,\n and overwrites that variable's value with the result.\n

\n

\n This is one of those things which is hard to explain in\n words, but hopefully these examples help clarify!\n

\n \n ),\n example: `\nlet x = 10;\nlet y = 10;\n\nx -= 1;\nconsole.log(x); // 9 (10 - 1)\n\ny -= 5;\nconsole.log(y); // 5 (10 - 5)\n`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Subtraction_assignment',\n },\n\n '>>>': {\n label: 'Unsigned Right Shift',\n definition: (\n <>\n

This operator performs a bitwise shift operation.

\n

\n Honestly, I don't really understand Bitwise operators;\n hopefully this MDN link will help you out:\n

\n \n ),\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Unsigned_right_shift',\n },\n\n '>>>=': {\n label: 'Unsigned Right Shift Assignment',\n definition: (\n <>\n

\n This operator performs a bitwise shift operation on a\n variable, and overwrites the variable with this new value.\n

\n

I think this is the only 4-character JS operator!

\n

\n Honestly, I don't really understand Bitwise operators;\n hopefully this MDN link will help you out:\n

\n \n ),\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Unsigned_right_shift_assignment',\n },\n\n '==': {\n label: 'Equality',\n definition: (\n <>\n

\n This operator checks to see if two values are equivalent.\n Returns a boolean value.\n

\n

\n Unlike the strict equality operator (\n ===), this operator ignores the\n type and focuses exclusively on the value. For example, the\n number 2 is considered equivalent\n to the string \"2\".\n

\n \n ),\n example: `\n// The numbers are different,\n// so they aren't equal\nconsole.log(10 == 11); // false\n\n// The numbers are the same, so it is equal!\nconsole.log(10 == 10); // true\n\n// The value matches, regardless of type\nconsole.log(10 == '10'); // true`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Equality',\n },\n\n '===': {\n label: 'Strict Equality',\n definition: (\n <>\n

\n This operator checks to see if two values are equivalent.\n Returns a boolean value.\n

\n

\n Unlike the equality operator (\n ==), this operator checks the type\n as well as the value. For example, the number{' '}\n 2 is not considered equivalent to\n the string \"2\".\n

\n \n ),\n example: `\n// The numbers are different,\n// so they aren't equal\nconsole.log(10 === 11); // false\n\n// The numbers are the same,\n// so it is equal!\nconsole.log(10 === 10); // true\n\n// The values are the same,\n// but the type is different\nconsole.log(10 === '10'); // false`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Strict_equality',\n },\n\n '!=': {\n label: 'Inequality',\n definition: (\n <>\n

\n This operator returns true if each\n side represents a different value\n

\n

\n Unlike the strict inequality operator (\n !==), the value's type isn't\n considered. For example, the number{' '}\n 2 is considered equivalent to the\n string \"2\", so the expression{' '}\n 2 != '2' returns{' '}\n false. This is generally a bad\n thing, and it's recommended to use the{' '}\n strict inequality operator instead.\n

\n \n ),\n example: `\nconst a = 10;\n\n// The numbers are different,\n// so they are inequal\nconsole.log(a != 11); // true\n\n// The numbers are the same,\n// they are not inequal\nconsole.log(a != 10); // false\n\n// Even though the types are different,\n// the values are the same, so they're\n// considered equal.\nconsole.log(a != '10'); // false`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Inequality',\n },\n '!==': {\n label: 'Strict Inequality',\n definition: (\n <>\n

\n This operator checks to see if two values are not\n equivalent. Returns a boolean value.\n

\n

\n Unlike the inequality operator (\n !=), this operator considers the\n type as well as the value. For example, the number{' '}\n 2 is not considered equivalent to\n the string \"2\".\n

\n \n ),\n example: `\nconst a = 10;\n\n// The numbers are different,\n// so they are inequal\nconsole.log(a !== 11); // true\n\n// The numbers are the same,\n// so they're not inequal\nconsole.log(a !== 10); // false\n\n// The values are the same,\n// but the type is different,\n// so they are still considered inequal\nconsole.log(a !== '10'); // true`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Strict_inequality',\n },\n '>': {\n label: 'Greater Than',\n definition: (\n <>\n

\n This operator checks to see if the value on the left is\n larger than the value on the right.\n

\n

\n For numbers, this works as you'd probably expect. For\n strings, things can be surprising; each character is\n converted to its appropriate character code. This means that\n casing matters, as shown in the examples below.\n

\n

\n Protip: Struggling to distinguish this from\n the Less Than ({'<'}) operator?\n Pretend it's an alligator's mouth. It's greedy, and wants to\n eat whichever value is bigger.\n

\n \n ),\n example: `\nconsole.log(10 > 5); // true\nconsole.log(10 > 15); // false\nconsole.log(-20 > 15); // false\nconsole.log(0.5 > 1); // false\nconsole.log(1 > 1); // false\n\nconsole.log('b' > 'a'); // true\nconsole.log('B' > 'a'); // false`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Greater_than',\n },\n '<': {\n label: 'Less Than',\n definition: (\n <>\n

\n This operator checks to see if the value on the left is\n smaller than the value on the right.\n

\n

\n For numbers, this works as you'd probably expect. For\n strings, things can be surprising; each character is\n converted to its appropriate character code. This means that\n casing matters, as shown in the examples below.\n

\n

\n Protip: Struggling to distinguish this from\n the Greater Than ({'>'}) operator?\n Pretend it's an alligator's mouth. It's greedy, and wants to\n eat whichever value is bigger.\n

\n \n ),\n example: `\nconsole.log(10 < 5); // false\nconsole.log(10 < 15); // true\nconsole.log(-20 < 15); // true\nconsole.log(0.5 < 1); // true\nconsole.log(1 < 1); // false\n\nconsole.log('b' < 'a'); // false\nconsole.log('B' < 'a'); // true`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Less_than',\n },\n '>=': {\n label: 'Greater Than or Equal To',\n definition: (\n <>\n

\n This operator checks to see if the value on the left is\n larger than, or the same as, the value on the right.\n

\n

\n For numbers, this works as you'd probably expect. For\n strings, things can be surprising; each character is\n converted to its appropriate character code. This means that\n casing matters, as shown in the examples below.\n

\n

\n Protip: Struggling to distinguish this from\n the Less Than or Equal ({'<='})\n operator? Pretend it's an alligator's mouth. It's greedy,\n and wants to eat whichever value is bigger.\n

\n \n ),\n example: `\nconsole.log(10 >= 5); // true\nconsole.log(10 >= 15); // false\nconsole.log(-20 >= 15); // false\nconsole.log(0.5 >= 1); // false\nconsole.log(1 >= 1); // true\n\nconsole.log('b' >= 'a'); // true\nconsole.log('B' >= 'a'); // false`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Greater_than_or_equal',\n },\n '<=': {\n label: 'Less Than or Equal To',\n definition: (\n <>\n

\n This operator checks to see if the value on the left is\n smaller than, or the same as, the value on the right.\n

\n

\n For numbers, this works as you'd probably expect. For\n strings, things can be surprising; each character is\n converted to its appropriate character code. This means that\n casing matters, as shown in the examples below.\n

\n

\n Protip: Struggling to distinguish this from\n the Greater Than or Equal To({'>='}\n ) operator? Pretend it's an alligator's mouth. It's greedy,\n and wants to eat whichever value is bigger.\n

\n \n ),\n example: `\nconsole.log(10 <= 5); // false\nconsole.log(10 <= 15); // true\nconsole.log(-20 <= 15); // true\nconsole.log(0.5 <= 1); // true\nconsole.log(1 <= 1); // true\n\nconsole.log('b' <= 'a'); // false\nconsole.log('B' <= 'a'); // true`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Less_than_or_equal',\n },\n '++': {\n label: 'Increment',\n definition: (\n <>\n

\n This operator is meant to be used on variables that hold\n numbers. When used, it increases that variable's value by 1.\n

\n

\n This is commonly used in conjunction with{' '}\n while loops, or anywhere that\n requires a counter.\n

\n

\n It's functionally equivalent to{' '}\n x = x + 1;\n

\n \n ),\n example: `\nlet x = 5;\n\nx++;\nconsole.log(x); // 6\n`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Increment',\n },\n '!!': {\n label: 'Double “NOT”',\n definition: (\n <>\n

So: this isn't actually an operator!

\n

\n !! is a repetition of the{' '}\n \n ! (NOT) operator\n \n . This is effectively a way to convert a truthy/falsy value\n into its boolean value (true or{' '}\n false).\n

\n \n ),\n example: `\nconst truthyValue = 5;\n\nconsole.log(!truthyValue); // false\nconsole.log(!!truthyValue); // true\nconsole.log(!!!truthyValue); // false\nconsole.log(!!!!truthyValue); // true\n`,\n link: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_NOT',\n },\n};\n\nexport default DATA;\n","import React from 'react';\nimport { styled } from '@linaria/react';\nimport { motion } from 'framer-motion';\n\nimport { BREAKPOINTS } from '@/constants';\n\nimport CategoryPill from '@/components/CategoryPill';\nimport VisuallyHidden from '@/components/VisuallyHidden';\n\nimport data from './data';\n\nconst DATA_ENTRIES = Object.entries(data);\n\ninterface Props {\n handleClick: (operator: string) => void;\n prefersReducedMotion: boolean;\n animateSuggestions: boolean;\n}\n\nconst FullList = ({\n handleClick,\n prefersReducedMotion,\n animateSuggestions,\n}: Props) => {\n const animationProps = animateSuggestions\n ? {\n initial: 'hidden',\n animate: 'visible',\n variants: {\n hidden: {\n opacity: 0,\n transition: {\n when: 'afterChildren',\n },\n },\n visible: {\n opacity: 1,\n transition: {\n when: 'beforeChildren',\n staggerChildren: 0.02,\n delay: 0.5,\n },\n },\n },\n }\n : {};\n\n return (\n \n {' '}\n \n {DATA_ENTRIES.map(([operator, operatorMetadata], index) => (\n \n handleClick(operator)}>\n {operator}\n \n {' '}\n ({operatorMetadata.label})\n \n \n \n ))}\n \n \n );\n};\n\nconst MatchSuggestionsWrapper = styled(motion.div)`\n display: flex;\n flex-direction: column;\n margin-top: 96px;\n margin-left: 16px;\n margin-right: 16px;\n margin-bottom: 48px;\n\n @media ${BREAKPOINTS.mdAndLarger} {\n margin-inline: -16px;\n }\n`;\n\nconst Label = styled.span`\n display: block;\n flex: 1;\n font-size: 1rem;\n color: var(--color-gray-900);\n margin-bottom: 16px;\n animation: fadeIn 400ms 600ms both;\n`;\n\nconst Pills = styled(motion.ul)`\n flex: 3.5;\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: 8px;\n padding: 0;\n list-style-type: none;\n\n button {\n font-family: var(--font-family-mono);\n }\n\n @media ${BREAKPOINTS.smAndSmaller} {\n /*\n Increase spacing to make it less easy to accidentally tap\n the wrong operator\n */\n li {\n padding: 4px;\n }\n }\n`;\n\nexport default React.memo(FullList);\n","import React from 'react';\nimport { styled } from '@linaria/react';\nimport { animated } from 'react-spring';\n\nimport useBoop from '@/hooks/use-boop';\n\ninterface Props extends React.HTMLAttributes {\n x?: number;\n y?: number;\n rotation?: number;\n scale?: number;\n timing?: number;\n}\n\nfunction Boop({\n x,\n y,\n rotation,\n scale,\n timing,\n children,\n ...delegated\n}: Props) {\n const [style, trigger] = useBoop({\n x,\n y,\n rotation,\n scale,\n timing,\n });\n\n return (\n \n {children}\n \n );\n}\n\nconst Wrapper = styled(animated.span)`\n display: inline-block;\n backface-visibility: hidden;\n`;\n\nexport default Boop;\n","export { default } from './Boop';\n","import { styled } from '@linaria/react';\n\nconst HEIGHT = 59;\n\nconst BigTextInput = ({\n searchValue,\n handleSearch,\n handleFocus,\n handleClear,\n}) => {\n return (\n handleFocus(true)}\n onBlur={() => handleFocus(false)}\n onChange={(ev) => {\n handleSearch(ev.target.value);\n }}\n onKeyDown={(ev) => {\n if (ev.key === 'Escape') {\n handleClear();\n }\n }}\n />\n );\n};\n\nconst Wrapper = styled.input`\n display: block;\n flex: 1;\n border: none;\n background: transparent;\n font-size: 36px;\n height: ${HEIGHT}px;\n font-family: var(--font-family-mono);\n text-align: center;\n color: inherit;\n\n /* Input is too big on mobile sizes, it winds up not being centered. Allow it to shrink down. */\n min-width: 0px;\n\n /* Covered in JS instead */\n outline: none;\n`;\n\nexport default BigTextInput;\n","import { styled } from '@linaria/react';\nimport { motion } from 'framer-motion';\nimport { Search as SearchIcon, X as XIcon } from 'lucide-react';\n\nimport useHasHydrated from '@/hooks/use-has-hydrated';\n\nimport Spinner from '@/components/Spinner';\nimport VisuallyHidden from '@/components/VisuallyHidden';\nimport Spacer from '@/components/Spacer';\nimport Boop from '@/components/Boop';\n\nimport BigTextInput from './BigTextInput';\n\nconst HEIGHT = 59;\nconst ICON_SIZE = 24;\n\nconst Search = ({\n prefersReducedMotion,\n searchValue,\n isFocused,\n handleSearch,\n handleClear,\n handleFocus,\n}) => {\n const hasHydrated = useHasHydrated();\n\n return (\n \n \n \n Search for an operator\n {hasHydrated ? (\n \n ) : (\n \n \n \n )}\n {searchValue ? (\n \n \n Clear search term\n \n \n \n ) : (\n \n )}\n \n \n \n );\n};\n\nconst Wrapper = styled(motion.div)`\n padding: 2px;\n will-change: transform;\n`;\n\nconst SpinnerWrapper = styled.div`\n flex: 1;\n display: grid;\n place-content: center;\n height: ${HEIGHT}px;\n opacity: 0.4;\n`;\n\nconst BackgroundBox = styled.div`\n position: absolute;\n z-index: 1;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n border-radius: 8px;\n transition: opacity 600ms;\n /* This is necessary so that when the search input moves in front of the header during page transition, the input effectively covers the header. */\n background: var(--color-background);\n box-shadow:\n 0 0.9px 1.2px rgba(0, 0, 0, 0.064),\n 0 2.1px 2.9px rgba(0, 0, 0, 0.07),\n 0 3.9px 5.5px rgba(0, 0, 0, 0.072),\n 0 6.9px 9.8px rgba(0, 0, 0, 0.076),\n 0 13px 18.4px rgba(0, 0, 0, 0.092),\n 0 31px 44px rgba(0, 0, 0, 0.17),\n 0 -5px 15px rgba(0, 0, 0, 0.1);\n`;\n\nconst InputLabel = styled.label`\n position: relative;\n z-index: 2;\n display: flex;\n align-items: center;\n padding: 0 12px 4px;\n border-radius: 8px;\n overflow: hidden;\n color: var(--color-text);\n\n &:after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100%;\n height: 4px;\n background: var(--color-gray-1000);\n border-radius: 100px;\n\n html[data-color-mode='dark'] &[data-is-focused='true'] {\n background: var(--color-primary);\n }\n }\n`;\n\nconst TranslucentSearchIcon = styled(SearchIcon)`\n opacity: 0.75;\n`;\n\nconst CloseButton = styled.button`\n color: inherit;\n opacity: 0.75;\n\n &:hover {\n color: var(--color-secondary);\n opacity: 1;\n }\n\n i,\n svg {\n display: block !important;\n }\n`;\n\nexport default Search;\n","'use client';\n\nimport * as React from 'react';\nimport { styled } from '@linaria/react';\nimport { motion, AnimatePresence, LayoutGroup } from 'framer-motion';\n\nimport usePrefersReducedMotion from '@/hooks/use-prefers-reduced-motion';\nimport useHasHydrated from '@/hooks/use-has-hydrated';\nimport { slugify } from '@/utils';\n\nimport MaxWidthWrapper from '@/components/MaxWidthWrapper';\nimport Spacer from '@/components/Spacer';\nimport Paragraph from '@/components/Paragraph';\n\nimport Match from '@/components/Goodies/OperatorLookup/Match';\nimport OperatorList from '@/components/Goodies/OperatorLookup/OperatorList';\nimport Search from '@/components/Goodies/OperatorLookup/Search';\nimport type { OperatorWithSnippet } from './OperatorLookup.types';\n\nfunction OperatorLookup({\n data,\n}: {\n data: Record;\n}) {\n const hasHydrated = useHasHydrated();\n const [isFocused, setIsFocused] = React.useState(false);\n const [searchValue, setSearchValue] = React.useState('');\n const [matchedOperator, setMatchedOperator] =\n React.useState(null);\n const [showNoMatchMethod, setShowNoMatchMethod] =\n React.useState(false);\n const [hasSearched, setHasSearched] = React.useState(false);\n const [animateSuggestions, setAnimateSuggestions] =\n React.useState(true);\n\n const hasMounted = React.useRef(false);\n\n const prefersReducedMotion = usePrefersReducedMotion();\n\n let trimmedSearch = searchValue.trim();\n\n React.useEffect(() => {\n let timeoutId: number;\n\n if (showNoMatchMethod) {\n setShowNoMatchMethod(false);\n }\n\n const match = data[trimmedSearch];\n\n if (match) {\n // Immediately set new matches\n setMatchedOperator(match);\n\n if (!hasSearched) {\n setHasSearched(true);\n }\n\n if (animateSuggestions) {\n setAnimateSuggestions(false);\n }\n } else {\n // …But! If there isn't a match, add a short delay before\n // unsetting it. This prevents a lot of flickering.\n timeoutId = window.setTimeout(() => {\n setMatchedOperator(null);\n\n // Wait another couple secs before showing a message about\n // not finding any results\n timeoutId = window.setTimeout(() => {\n if (trimmedSearch) {\n setShowNoMatchMethod(true);\n }\n }, 2000);\n }, 500);\n }\n\n return () => {\n window.clearTimeout(timeoutId);\n };\n // NOTE: this shouldn't be an effect. I should do this work in the event handler. It's missing lots of deps, but I can't add them since I only want this work to run when `searchValue` changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [trimmedSearch]);\n\n // This is our hacky routing solution\n React.useEffect(() => {\n // Don't fire on initial mount\n if (!hasMounted.current) {\n return;\n }\n\n const match = data[trimmedSearch];\n\n if (match) {\n history.pushState(\n { operator: trimmedSearch },\n '',\n `/operator-lookup?match=${slugify(match.label)}`\n );\n } else {\n history.pushState({}, '', `/operator-lookup/`);\n }\n }, [trimmedSearch, data]);\n\n // Another effect for managing pushstate stuff\n React.useEffect(() => {\n // Did we start with a selected operator?\n const { search } = window.location;\n const match = search.match(/\\?match=(.+)/);\n\n if (match) {\n const [, slugifiedLabel] = match;\n\n const matchingOperator = Object.entries(data).find(\n ([, operatorInfo]) => {\n return slugify(operatorInfo.label) === slugifiedLabel;\n }\n );\n\n if (matchingOperator) {\n setSearchValue(matchingOperator[0]);\n }\n }\n\n window.onpopstate = function (event) {\n setSearchValue(event.state.operator || '');\n };\n\n return () => {\n window.onpopstate = null;\n };\n }, [data]);\n\n React.useEffect(() => {\n hasMounted.current = true;\n }, []);\n\n const handleSearch = React.useCallback((val: string) => {\n setSearchValue(val.replace(/[a-zA-Z]*/g, ''));\n }, []);\n const handleClear = React.useCallback(() => {\n setSearchValue('');\n setMatchedOperator(null);\n }, []);\n\n // NOTE: This *appears* broken in development, thanks to Strict Mode. Everything is hidden under an `opacity: 0` wrapper. But it works fine in production.\n\n return (\n \n \n \n {!matchedOperator && (\n \n Operator Lookup\n \n \n Enter a JavaScript operator to learn more about it:\n \n \n \n )}\n \n \n \n \n {showNoMatchMethod && (\n \n Sorry, that operator isn't recognized!\n
\n (It's entirely possible that this list is incomplete.)\n \n )}\n {!matchedOperator &&\n (hasHydrated ? (\n \n ) : (\n \n ))}\n {matchedOperator && (\n \n \n \n )}\n
\n
\n );\n}\n\nconst Wrapper = styled(MaxWidthWrapper)`\n padding-block: 96px;\n text-align: center;\n`;\n\nconst Header = styled(motion.header)`\n position: relative;\n z-index: 1;\n`;\n\nconst SearchWrapper = styled(motion.div)`\n position: relative;\n z-index: 2;\n`;\n\nconst Heading = styled.h1`\n font-size: 2rem;\n color: var(--color-gray-1000);\n`;\n\nconst NoMatch = styled(motion.p)`\n margin-top: 48px;\n color: var(--color-gray-900);\n will-change: transform;\n`;\n\nconst ListSpacer = styled.div`\n height: 11.75rem;\n margin-top: 96px;\n margin-bottom: 48px;\n`;\n\nexport default OperatorLookup;\n","import { styled } from '@linaria/react';\n\nimport {\n InfoAside,\n WarningAside,\n SuccessAside,\n} from '@/components/Aside';\nimport { Popover as TooltipPopover } from '@/components/Tooltip';\n\nconst InlineCode = styled.code`\n /* is used inside
 by CodeSnippet, and we do *not* want to style that case. So we'll exclude it here */\n  :not(pre) & {\n    position: relative;\n    display: inline;\n    font-family: var(--font-family-mono);\n    font-size: 0.9375em;\n    font-style: normal;\n    letter-spacing: -0.5px;\n    padding: 2px 6px;\n    margin: 1px -1px;\n    background: var(--color-code-bg);\n    border-radius: 3px;\n    -webkit-box-decoration-break: clone;\n    box-decoration-break: clone;\n\n    html[data-color-mode='light'] & {\n      mix-blend-mode: darken;\n    }\n\n    html[data-color-mode='dark'] & {\n      mix-blend-mode: lighten;\n    }\n\n    ${InfoAside} & {\n      background: var(--color-info-200);\n    }\n    ${SuccessAside} & {\n      background: var(--color-success-200);\n    }\n    ${WarningAside} & {\n      background: var(--color-warning-200);\n    }\n\n    /*\n      There's a bit of an optical illusion happening; in Light Mode, some of the background colors *look* lighter than the backgrounds of s, even though they're the exact same color.\n      For folks on modern browsers, we'll tint it for them via relative color syntax.\n    */\n    html[data-color-mode='light'] ${InfoAside} & {\n      background: hsl(from var(--color-info-200) h s calc(l * 0.98));\n    }\n    html[data-color-mode='light'] ${SuccessAside} & {\n      background: hsl(\n        from var(--color-success-200) h s calc(l * 0.94)\n      );\n    }\n    html[data-color-mode='light'] ${WarningAside} & {\n      background: hsl(\n        from var(--color-warning-200) h s calc(l * 0.94)\n      );\n    }\n\n    /*\n      When  is inside a tooltip, we need to tweak its colors.\n    */\n    ${TooltipPopover} & {\n      html[data-color-mode='light'] & {\n        background: hsl(0deg 0% 0% / 0.2);\n      }\n\n      html[data-color-mode='dark'] & {\n        background: hsl(210deg 23% 82%);\n      }\n    }\n  }\n\n  a & {\n    border-bottom: 2px solid var(--color-primary);\n    padding-bottom: 0px;\n    border-radius: 3px 3px 1px 1px;\n  }\n`;\n\nexport default InlineCode;\n","export { default } from './InlineCode';\n","'use client';\n\nimport React from 'react';\nimport { styled } from '@linaria/react';\n\nimport { UserPreferencesContext } from '@/components/UserPreferencesProvider';\nimport FadeIn from '@/components/FadeIn';\n\n// I have other moods, but I need to fix the dark mode images before I can use them. See instructions in /images/josh/__README.md\nexport type Mood = 'happy' | 'sad' | 'very-happy' | 'heart-eyes';\n\nexport interface Props extends React.HTMLAttributes {\n  colorModeOverride?: 'light' | 'dark';\n  mood?: Mood;\n  fadeDuration?: number;\n  fadeDelay?: number;\n}\n\nfunction JericaMascot({\n  colorModeOverride,\n  mood = 'happy',\n  fadeDuration = 600,\n  fadeDelay = 200,\n  ...delegated\n}: Props) {\n  const isUsingGlobalColorMode = !colorModeOverride;\n\n  const { colorMode: globalColorMode } = React.useContext(\n    UserPreferencesContext\n  );\n\n  const colorMode = colorModeOverride || globalColorMode;\n\n  return (\n    \n      \n        \n          \n          \n        \n        {mood !== 'happy' && (\n          \n            \n            \n          \n        )}\n      \n      \n        \n          \n          \n        \n        {mood !== 'happy' && (\n          \n            \n            \n          \n        )}\n      \n    \n  );\n}\n\nconst Wrapper = styled(FadeIn)`\n  position: relative;\n`;\n\nconst DarkLayer = styled.div`\n  position: relative;\n`;\n\nconst LightLayer = styled.div`\n  position: absolute;\n  inset: 0;\n  width: 100%;\n  height: 100%;\n  opacity: var(--opacity);\n  transition: opacity calc(var(--color-swap-duration) + 500ms)\n    var(--color-swap-timing-function);\n\n  /*\n    Ok there's some tricky business here.\n    When this component first renders on the server, we don't know what the user’s chosen color mode is. If we specify an override, we don't care, but otherwise, we'll read the global color value from the HTML tag. That way, the correct mascot is shown from the very first paint.\n  */\n  html[data-color-mode='light'] &[data-use-global-color-mode='true'] {\n    opacity: 1;\n  }\n  html[data-color-mode='dark'] &[data-use-global-color-mode='true'] {\n    opacity: 0;\n  }\n`;\n\nconst MascotBase = styled.img`\n  display: block;\n  top: 0;\n  left: 0;\n  width: 137.5px;\n  height: 232px;\n  user-select: none;\n  pointer-events: none;\n`;\n\nconst Head = styled.img`\n  position: absolute;\n  display: block;\n  top: 0;\n  left: 0;\n  right: 0;\n  width: 100%;\n  /* Dragging the face off is SUPER creepy */\n  user-select: none;\n  pointer-events: none;\n`;\n\nexport default JericaMascot;\n","export { default } from './JericaMascot';\n","import * as React from 'react';\nimport { styled } from '@linaria/react';\n\nimport { HEADER_WIDTH } from '@/constants';\n\nexport interface Props {\n  as?: keyof JSX.IntrinsicElements | React.ComponentType;\n  maxWidth?: number | string;\n  style?: React.CSSProperties;\n  children?: React.ReactNode;\n}\n\nfunction MaxWidthWrapper({\n  as = 'div',\n  maxWidth,\n  style = {},\n  children,\n  ...delegated\n}: Props) {\n  if (typeof maxWidth === 'undefined') {\n    maxWidth = `${HEADER_WIDTH}rem`;\n  } else if (typeof maxWidth === 'number') {\n    // Historically, I’ve specified the maximum width in pixels, and I'm too lazy to find and update all of the spots where I've specified them. We’ll divide by 16 to convert to rems:\n    maxWidth = `${maxWidth / 16}rem`;\n  }\n\n  return (\n    \n      {children}\n    \n  );\n}\n\nconst Wrapper = styled.div`\n  width: 100%;\n  max-width: var(--max-width);\n  margin-inline: auto;\n  padding-inline: var(--viewport-padding);\n`;\n\nexport default MaxWidthWrapper;\n","export { default } from './MaxWidthWrapper';\nexport type { Props } from './MaxWidthWrapper';\n","import { styled } from '@linaria/react';\n\nimport { BREAKPOINTS } from '@/constants';\n\nimport { BaseWrapper as AsideWrapper } from '@/components/Aside';\nimport { Wrapper as BlockquoteWrapper } from '@/components/Blockquote';\nimport { Wrapper as TweetWrapper } from '@/components/FakeTweet';\n\nexport default styled.p`\n  font-size: var(--paragraph-font-size-override, 1.125rem);\n  margin-bottom: 1.25em;\n\n  ${AsideWrapper} & {\n    font-size: 1rem;\n\n    &:last-child {\n      margin-bottom: 0;\n    }\n  }\n\n  ${BlockquoteWrapper} & {\n    @media ${BREAKPOINTS.mdAndLarger} {\n      text-wrap: balance;\n      text-align: center;\n    }\n  }\n\n  ${TweetWrapper} & {\n    font-size: 1rem;\n  }\n`;\n","export { default } from './Paragraph';\n","'use client';\n\nimport React from 'react';\nimport { styled } from '@linaria/react';\nimport { useSpring, animated } from 'react-spring';\n\nimport { BREAKPOINTS } from '@/constants';\n\nimport JericaMascot from '@/components/JericaMascot';\n\nfunction UpsideDownJerica() {\n  const [offset, setOffset] = React.useState(-216);\n  const wrapperRef = React.useRef(null);\n\n  React.useEffect(() => {\n    const target = wrapperRef.current;\n\n    if (!target) {\n      return;\n    }\n\n    const observer = new IntersectionObserver(\n      ([entry]) => {\n        if (entry.intersectionRatio < 0.2) {\n          setOffset(-226);\n        } else if (entry.intersectionRatio < 0.5) {\n          setOffset(-150);\n        } else {\n          setOffset(-82);\n        }\n      },\n      {\n        threshold: [0.2, 0.5],\n      }\n    );\n\n    observer.observe(target);\n\n    return () => {\n      if (target) {\n        observer.disconnect();\n      }\n    };\n  }, []);\n\n  const style = useSpring({\n    '--offset': `${offset}px`,\n    config: {\n      tension: 160,\n      friction: 32,\n    },\n  });\n\n  return (\n    \n      \n        \n      \n    \n  );\n}\n\nconst MascotWrapper = styled.div`\n  position: absolute;\n  inset: 0;\n  width: 100%;\n  height: 100%;\n  overflow: clip;\n`;\n\nconst Slider = styled(animated.div)`\n  position: absolute;\n  left: 50%;\n  transform: translate(-533px, var(--offset)) rotate(180deg);\n  will-change: transform;\n\n  @media (max-width: 67.5rem) {\n    left: 0;\n    transform: translateY(-82px) rotate(180deg);\n  }\n  @media ${BREAKPOINTS.smAndSmaller} {\n    display: none;\n  }\n`;\n\nexport default UpsideDownJerica;\n","'use client';\n\nimport React from 'react';\nimport { styled } from '@linaria/react';\n\nconst SKIP_TARGET_ID = `jwc-skip-here`;\n\nexport function SkipNavTrigger({\n  children = `Skip to content`,\n}: {\n  children?: React.ReactNode;\n}) {\n  const [hasAValidTarget, setHasAValidTarget] = React.useState(false);\n\n  React.useEffect(() => {\n    const target = document.querySelector(`#${SKIP_TARGET_ID}`);\n\n    if (!!target !== hasAValidTarget) {\n      setHasAValidTarget(!!target);\n    }\n    // We only want to do this on-mount, because we have no way of knowing when the SkipNavTarget will show up. We assume it's there on mount.\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  // If we've rendered the trigger, but there is no target available, we don't want to show the trigger. Doing so would just be frustrating, since it wouldn't skip anything.\n  if (!hasAValidTarget) {\n    return null;\n  }\n\n  return {children};\n}\n\nexport function SkipNavTarget({\n  scrollMarginTop = 64,\n}: {\n  scrollMarginTop?: number;\n}) {\n  return ;\n}\n\nconst Trigger = styled.a`\n  position: fixed;\n  z-index: 99999;\n  top: 32px;\n  left: 32px;\n  padding: 16px 24px;\n  border-radius: 12px;\n  background: var(--color-background);\n  color: var(--color-text);\n  box-shadow:\n    0 -5.9px 2.7px rgba(0, 0, 0, 0.018),\n    0 -1.2px 6.9px rgba(0, 0, 0, 0.024),\n    0 8px 14.2px rgba(0, 0, 0, 0.03),\n    0 21.9px 29.2px rgba(0, 0, 0, 0.039),\n    0 49px 80px rgba(0, 0, 0, 0.07);\n\n  /* Visually hidden stuff */\n  clip: rect(1px, 1px, 1px, 1px);\n  height: 1px;\n  overflow: hidden;\n  position: absolute !important;\n  width: 1px;\n\n  &:focus {\n    width: auto;\n    height: auto;\n    clip: auto;\n  }\n`;\n\nconst Target = styled.div`\n  contain: none;\n`;\n","import React from 'react';\n\nconst useInterval = (callback: Function, delay: number | null) => {\n  const intervalId = React.useRef(null);\n  const savedCallback = React.useRef(callback);\n\n  React.useEffect(() => {\n    savedCallback.current = callback;\n  });\n\n  React.useEffect(() => {\n    const tick = () => savedCallback.current();\n\n    if (typeof delay === 'number') {\n      intervalId.current = window.setInterval(tick, delay);\n\n      return () => {\n        if (intervalId.current) {\n          window.clearInterval(intervalId.current);\n        }\n      };\n    }\n  }, [delay]);\n\n  return intervalId.current;\n};\n\nexport default useInterval;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"w1ww1e1d\":\"w1ww1e1d\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"l1e3k5zw\":\"l1e3k5zw\",\"b4xggkn\":\"b4xggkn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ae97emi\":\"ae97emi\",\"line\":\"line\",\"b1btlj5u\":\"b1btlj5u\",\"highlighted\":\"highlighted\",\"i6el1g6\":\"i6el1g6\",\"wcnkszl\":\"wcnkszl\",\"shfe3ke\":\"shfe3ke\",\"faded\":\"faded\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"c1qvfy1x\":\"c1qvfy1x\",\"shiki\":\"shiki\",\"coaxrjn\":\"coaxrjn\",\"b1btlj5u\":\"b1btlj5u\",\"i6el1g6\":\"i6el1g6\",\"wcnkszl\":\"wcnkszl\",\"shfe3ke\":\"shfe3ke\",\"qpn37d3\":\"qpn37d3\",\"w1ey322x\":\"w1ey322x\",\"w19zxykk\":\"w19zxykk\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wqxmqd2\":\"wqxmqd2\",\"ae97emi\":\"ae97emi\",\"i6el1g6\":\"i6el1g6\",\"wcnkszl\":\"wcnkszl\",\"shfe3ke\":\"shfe3ke\",\"i1htlkn0\":\"i1htlkn0\",\"i14jtb2i\":\"i14jtb2i\",\"c6am5ut\":\"c6am5ut\",\"haso6lc\":\"haso6lc\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"c1vmthmn\":\"c1vmthmn\",\"c1dh3hvu\":\"c1dh3hvu\",\"copy-c1dh3hvu\":\"copy-c1dh3hvu\",\"fadeInOut-c1dh3hvu\":\"fadeInOut-c1dh3hvu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wv8ehy8\":\"wv8ehy8\",\"fadeIn\":\"fadeIn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"w1hm4zut\":\"w1hm4zut\",\"b1bneqkz\":\"b1bneqkz\",\"chcghc5\":\"chcghc5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wuiwisg\":\"wuiwisg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"w1cp29k\":\"w1cp29k\",\"fadeIn\":\"fadeIn\",\"iis129w\":\"iis129w\",\"dpt1qq2\":\"dpt1qq2\",\"cqhcgtx\":\"cqhcgtx\",\"m1upj945\":\"m1upj945\",\"fxid7a1\":\"fxid7a1\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"m3f0b5l\":\"m3f0b5l\",\"l1l0b073\":\"l1l0b073\",\"fadeIn\":\"fadeIn\",\"pkcr3d7\":\"pkcr3d7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"w1j2tor9\":\"w1j2tor9\",\"s19h4nxk\":\"s19h4nxk\",\"b16asns7\":\"b16asns7\",\"i15pew25\":\"i15pew25\",\"t1x634yn\":\"t1x634yn\",\"c12zdwx2\":\"c12zdwx2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"w3crkyp\":\"w3crkyp\",\"h7tzjbh\":\"h7tzjbh\",\"s8e0xr2\":\"s8e0xr2\",\"h1tewr0z\":\"h1tewr0z\",\"ntf1gwx\":\"ntf1gwx\",\"l1txkdfu\":\"l1txkdfu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"i165vvr1\":\"i165vvr1\",\"i6el1g6\":\"i6el1g6\",\"shfe3ke\":\"shfe3ke\",\"wcnkszl\":\"wcnkszl\",\"p1lgzcrp\":\"p1lgzcrp\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wvm4gg4\":\"wvm4gg4\",\"d1qadnsl\":\"d1qadnsl\",\"l1enswin\":\"l1enswin\",\"mr2l5ys\":\"mr2l5ys\",\"hjm134z\":\"hjm134z\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wojnndj\":\"wojnndj\",\"hvw37ip\":\"hvw37ip\",\"c196by4d\":\"c196by4d\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"prg881n\":\"prg881n\",\"b1btlj5u\":\"b1btlj5u\",\"w12kxl7t\":\"w12kxl7t\",\"w9k8ad0\":\"w9k8ad0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wfzqr02\":\"wfzqr02\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"w1r7oec7\":\"w1r7oec7\",\"s1q6y8ki\":\"s1q6y8ki\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"w1e2q9l8\":\"w1e2q9l8\",\"s1uqj89y\":\"s1uqj89y\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"mzwsl9m\":\"mzwsl9m\",\"scefed4\":\"scefed4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"t1v2vbab\":\"t1v2vbab\",\"t1jehbg7\":\"t1jehbg7\"};"],"names":["LinkWrapper","styled","name","class","propsAsIs","Background","animated","div","CategoryPill","href","onClick","children","setIsHovering","React","prefersReducedMotion","usePrefersReducedMotion","backgroundSpring","useSpring","opacity","isHovering","config","TIGHT_SPRING","immediate","playHoverSound","stop","useSound","volume","as","Link","Wrapper","IconOuterWrapper","span","IconWrapper","CheckWrapper","HiddenText","VisuallyHidden","CopyButton","handleCopy","delegated","copyId","setCopyId","rotation","setRotation","wrapperStyle","wrapperTrigger","useBoop","scale","hasHydrated","useHasHydrated","style","transform","tension","friction","timeoutId","current","window","setTimeout","clearTimeout","newCopyId","Date","now","CopyEffectWrapper","CopyEffect","WithCopyButton","code","lockedToColorMode","copyIds","setCopyIds","Array","useInterval","length","currentValue","filter","id","copyToClipboard","map","FadeIn","duration","delay","animationDelay","Intro","DefinitionWrapper","CodeWrapper","MDNLink","FakeTextLink","Match","label","example","link","disclaimer","color","definition","DATA_ENTRIES","DATA","entries","p","strong","InlineCode","TextLink","em","a","target","rel","MatchSuggestionsWrapper","_exp","motion","Label","Pills","ul","FullList","handleClick","animateSuggestions","initial","animate","variants","hidden","transition","when","visible","staggerChildren","animationProps","index","operator","operatorMetadata","y","Boop","x","timing","trigger","BigTextInput","searchValue","handleSearch","handleFocus","handleClear","value","ev","SpinnerWrapper","BackgroundBox","InputLabel","TranslucentSearchIcon","_exp3","SearchIcon","CloseButton","Search","isFocused","ICON_SIZE","MaxWidthWrapper","Header","header","SearchWrapper","Heading","NoMatch","_exp4","ListSpacer","OperatorLookup","data","setIsFocused","matchedOperator","setMatchedOperator","OperatorWithSnippet","showNoMatchMethod","setShowNoMatchMethod","hasSearched","hasMounted","trimmedSearch","trim","match","setAnimateSuggestions","history","slugify","pushState","search","location","slugifiedLabel","matchingOperator","Object","find","operatorInfo","setSearchValue","onpopstate","event","state","val","replace","type","stiffness","damping","restDelta","DarkLayer","LightLayer","MascotBase","Head","JericaMascot","colorModeOverride","mood","fadeDuration","fadeDelay","colorMode","globalColorMode","UserPreferencesContext","maxWidth","HEADER_WIDTH","MascotWrapper","Slider","UpsideDownJerica","offset","setOffset","HTMLDivElement","wrapperRef","observer","IntersectionObserver","entry","intersectionRatio","observe","disconnect","SKIP_TARGET_ID","SkipNavTrigger","hasAValidTarget","setHasAValidTarget","document","querySelector","SkipNavTarget","scrollMarginTop","Trigger","Target","callback","intervalId","savedCallback","setInterval","tick","clearInterval"],"sourceRoot":"","ignoreList":[]}