CINXE.COM
GraphQL Landscape
<!DOCTYPE html> <html lang="en"> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0"/> <title>GraphQL Landscape</title> <meta name="description" content="Filter and sort by GitHub stars, funding, commits, contributors, hq location, and tweets. Updated: 2024-11-17T04:08:23." /> <meta property="og:locale" content="en_US"/> <meta property="og:type" content="website"/> <meta property="og:title" content="GraphQL Landscape"/> <meta property="og:description" content="Filter and sort by GitHub stars, funding, commits, contributors, hq location, and tweets. Updated: 2024-11-17T04:08:23."/> <meta property="og:url" content="https://landscape.graphql.org"/> <meta property="og:site_name" content="GraphQL Landscape"/> <meta property="fb:admins" content="alex.contini.94"/> <meta property="og:image" content="/favicon.png" /> <meta property="og:image:secure_url" content="/favicon.png" /> <meta name="twitter:card" content="summary"/> <meta name="twitter:site" content="@graphql"/> <meta name="twitter:creator" content="@graphql"/> <meta name="google-site-verification" content="u_xqWIf8_EzRP4UF92px16rTSoIP49D_g9i7M-4rXds"/> <meta name="msvalidate.01" content="3AF9FFA12CCC3C49C0ABA71CCA222665"/> <link rel="icon" type="image/png" href="/favicon.png" /> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-114451006-7', 'auto'); ga('send', 'pageview'); </script> <style> @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 400; src: url(data:application/font-woff;charset=utf-8;base64,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) format('woff'); } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 500; src: url(data:application/font-woff;charset=utf-8;base64,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) format('woff'); } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 700; src: url(data:application/font-woff;charset=utf-8;base64,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) format('woff'); } /* css3 constants */ :root { --navy: #38404a; --navy-light: #696D70; --blue: #2E67BF; --blue-hover: #1D456B; /* This is not supported yet in browser, will have to preprocess with string.replace */ --mobilewidth-screen: 812px; --sm-screen: 576px; --md-screen: 768px; --lg-screen: 992px; --xl-screen: 1200px; /* */ --spacing: 1em; } html { box-sizing: border-box; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } *, *::before, *::after { box-sizing: inherit; } strong, b { font-weight: 700; } body { color: rgba(0, 0, 0, 0.87); margin: 0; font-size: 0.875rem; font-family: "Roboto", "Helvetica", "Arial", sans-serif; font-weight: 400; line-height: 1.43; letter-spacing: 0.01071em; background-color: #fafafa; } @media print { body { background-color: #fff; } } body::backdrop { background-color: #fafafa; } html, body, main, .app { height: 100%; } html.embed { height: auto; } html {-webkit-text-size-adjust: 100%;} body.popup { background-color:transparent !important; } a {text-decoration: none; transition: none; color: var(--blue); } a:hover {font-weight: bold; } a.white-link { color: white; } a svg { stroke: var(--blue); stroke-width: 0; } a:hover svg { stroke-width: 0.5; } .hidden { display: none !important; } .wrapper{ overflow: hidden; padding-left: 20px; } .content-wrapper { position: absolute; top: 0; left: 0; right: 0; background-color: #aaa; } .sh_wrapper { position: relative; width: 100%; font-size: 1em; background-color: #e8e8e8; border-radius: 10px; margin: 0.5rem 5px; } .sh_wrapper div { color: #565656; font-size:0.8em !important; } .sh_wrapper .link { text-decoration: none; transition: all 0.5s; cursor: pointer; color: var(--blue); } .sh_wrapper .link:hover { transition: all 0.1s; color: var(--blue-hover); } .disclaimer { margin: -45px 5px 14px; font-size: 0.8em; padding-right: 220px; color: var(--navy-light); } .disclaimer a { color: #366fa8; } .disclaimer h1 { font-size: 2.1rem; line-height: 30px; display: block; margin: 0 0 14px; color: var(--navy); } @media (max-width: 992px) { .disclaimer h1 { font-size: 1.4rem; line-height: normal; } .disclaimer { padding-right: 0; } } .summary { margin: 0 5px 14px; color: var(--navy); font-size: 0.8rem; height: 18px; } @media (max-width: 992px) { .big-picture .summary, .disclaimer { display: none; } } .embed .summary { display: none !important; } .embed .disclaimer { display: none !important; } .embed .sidebar { display: none !important; } .embed .sidebar-show { display: none !important; } .embed .header_container { display: none !important; } .embed .big-picture-switch { display: none !important; } .embed .main { margin-left: 0px !important; } .embed .charts-desktop { display: none !important; } .embed .charts-mobile { display: none !important; } .embed a[data-type=internal] { color: currentColor; cursor: inherit; pointer-events: none; } .fullscreen .summary{ display: none; } .fullscreen .disclaimer{ display: none; } .fullscreen .header_container { display: none; } .fullscreen .sidebar { display: none; } .header_container { z-index: 2; height: 55px; flex: none; font-size: 1rem; } .header_container .header .info { margin-top: -32px; padding-left: 20px; height: auto; } .landscape-logo { display: block; padding: var(--spacing); } @media (max-width: 992px) { #home .landscape-logo { margin-left: 30px; } } @media (min-width: 992px) { #home:not(.big-picture) .landscape-logo { position: fixed; } } @media (max-width: 992px) { .no-scroll-mobile { overflow: hidden; } } #guide-page { color: #38404a; font-size: 1rem; min-width: 360px; position: relative; } #guide-page .links { position: fixed; right: 10px; top: 100px; font-size: 16px; width: 130px; font-weight: bold; } @media (max-width: 1250px) { #guide-page .links { position: inherit; width: 100%; left: 0; top: 0; } #guide-page .links > div { display: inline-block; padding-right: 100px; } } #guide-page .links > div { position: relative; } #guide-page .links svg { fill: currentColor; position: relative; top: 2px; width: 16px; height: 16px; } #guide-page h1 { font-size: 2.5em; } #guide-page h2 { font-size: 2.25em; } #guide-page h3 { font-size: 1.75em; } #guide-page h4 { font-size: 1.375em; } #guide-page h5 { font-size: 1.125em; } #guide-page h1, #guide-page h2, #guide-page h3, #guide-page h4, #guide-page h5 { margin-top: calc(var(--spacing) * 0.8); margin-bottom: 0; font-weight: 400; } #guide-page h1.title { margin-top: 0; max-width: 580px; } @media (max-width: 992px) { #guide-page .guide-header h1.title { display: none; } } #guide-page .main-content h1.title { display: none; } @media (max-width: 992px) { #guide-page .main-content h1.title { display: block; } } #guide-page .container { margin-left: 250px; max-width: 1280px; } #guide-page p > img, #guide-page .items, #guide-page .metadata { margin: calc(var(--spacing) * 1.5) 0; } #guide-page a:hover { letter-spacing: inherit !important; } #guide-page blockquote { margin: calc(var(--spacing) * 1.375) 0; padding: var(--spacing); background: #ebebeb; font-size: 0.9em; } #guide-page blockquote :first-child { margin-top: 0; padding-top: 0; } #guide-page blockquote :last-child { margin-bottom: 0; padding-bottom: 0; } #guide-page .guide-header { position: fixed; top: 0; left: 0; right: 0; border-bottom: 2px solid #e5e5e5; background: #fafafa; z-index: 2; } @media (max-width: 992px) { #guide-page { display: flex; align-items: center; justify-content: space-between; padding: 0 var(--spacing); } } #guide-page .guide-header .container { padding: var(--spacing) 0; } #guide-page .side-content { position: fixed; width: 250px; border-right: 2px solid #e5e5e5; background: #fafafa; height: 100%; z-index: 3; display: flex; flex-direction: column; } #guide-page .guide-sidebar { padding-bottom: 10px; overflow-y: auto; margin-top: -10px; } #guide-page .guide-sidebar a.display-hidden { display: none; } @media (max-width: 992px) { #guide-page .guide-sidebar { margin-top: 0; } } #guide-page .sidebar-show { display: none; border: 0; cursor: pointer; user-select: none; background-color: transparent; color: rgba(0, 0, 0, 0.54); padding: 12px; border-radius: 50%; } @media (max-width: 992px) { #guide-page .sidebar-show { display: block; position: absolute; top: 7px; left: 0; z-index: 3; } #guide-page .sidebar-show svg { fill: currentColor; width: 1em; height: 1em; display: inline-block; font-size: 1.5rem; transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; flex-shrink: 0; user-select: none; } } #guide-page .sidebar-collapse { display: none; position: absolute; top: 1px; right: 1px; z-index: 3; width: 24px; height: 24px; font-size: 32px; border-radius: 16px; line-height: 24px; background: transparent; user-select: none; cursor: pointer; text-align: center; vertical-align: middle; transform: rotate(45deg); color: rgba(0, 0, 0, 0.54); } @media (max-width: 992px) { #guide-page .sidebar-collapse { display: block; } } #guide-page .side-content .landscape-logo { display: block; padding: var(--spacing); } @media (max-width: 992px) { #guide-page .side-content .landscape-logo { display: none; } } #guide-page .guide-header .landscape-logo { display: none; padding: 0; } @media (max-width: 992px) { #guide-page .guide-header .landscape-logo { display: block; padding-left: 44px; } } #guide-page .sidebar-scroll { padding-top: 20px; } @media (max-width: 992px) { #guide-page .side-content { display: none; } #guide-page.sidebar-open .side-content { display: block; position: fixed; padding: var(--spacing); inset: 0; width: 100%; overflow-y: auto; } } #guide-page .guide-toggle { margin: 5px 20px 10px; } #guide-page .sidebar-link { display: block; color: #38404a; padding: 10px 20px; } #guide-page .sidebar-link svg { stroke: none; } #guide-page .expandable { display: flex; justify-content: space-between; align-items: center; } #guide-page .expandable svg { width: 24px; height: 24px; } #guide-page .expandable.expanded svg { transform: rotate(90deg); } #guide-page .sidebar-link:hover { background: #efefef; } #guide-page .sidebar-link.active { font-weight: 700; } #guide-page .main-content { border-top: 2px solid #e5e5e5; padding-top: 5.5em; } @media (max-width: 992px) { #guide-page .main-content { padding-top: 4.5em; } } #guide-page .container { margin-left: 250px; } @media (max-width: 992px) { #guide-page .container { margin-left: 0; padding: 1em; } } #guide-page .content { max-width: 714px; margin: 0 auto; } #guide-page .metadata { width: 100%; display: flex; flex-direction: column; border: 1px solid #d0d0d0; border-right: none; border-bottom: none; } #guide-page .metadata > div { display: flex; } #guide-page .metadata .header { background: #ebebeb; font-weight: 600; text-align: center; } #guide-page .metadata .header > div { padding: 0.5em; } #guide-page .metadata .body > div { padding: 1em; } #guide-page .metadata .header > div, #guide-page .metadata .body > div { width: 50%; border: 1px solid #d0d0d0; border-top: 0; border-left: 0; } #guide-page .metadata .body ul { margin: 0; padding: 0; list-style-position: inside; } #guide-page .guide-content img { max-width: 100%; display: block; margin-left: auto; margin-right: auto; } #guide-page .permalink { align-items: center; vertical-align: text-bottom } #guide-page .section-title { /* Prevent anchor links from scrolling behind a fixed header */ padding-top: 5em; margin-top: -5em; } @media (max-width: 992px) { #guide-page .section-title { padding-top: 4em; margin-top: -4em; } } #guide-page .permalink:hover { font-weight: bold; } #guide-page .items { overflow: hidden; display: grid; justify-content: center; grid-auto-flow: row dense; } #guide-page .guide-icon { width: 30px; height: 33px; fill: currentColor; margin-top: -3px; vertical-align: middle; } #guide-page .items { grid-template-columns: repeat(auto-fill, 60px); grid-auto-rows: 60px; gap: 5.4px; } #guide-page .items .item { transform: scale(1.8); } .guide-toggle { border: 2px solid rgb(46, 103, 191); background: rgb(46, 103, 191); border-radius: 4px; font-size: 14px; margin: 15px 0px; max-width: 165px; white-space: nowrap; } .guide-toggle .toggle-item { user-select: none; width: 49%; text-align: center; padding: 2px; color: rgb(46, 103, 191); background: white; display: inline-block; } .guide-toggle .toggle-item.active { background: rgb(46, 103, 191); color: white; } .guide-toggle a { width: 100%; display: inline-block; } .landscapeapp-logo { position: absolute; top: var(--spacing); right: 1rem; } .landscape-logo a, .landscapeapp-logo a { display: flex; } .landscape-logo img, .landscapeapp-logo img { max-width: 10em; height: 3em; box-sizing: content-box; } @media (max-width: 992px) { .landscape-logo img { max-width: 10em; height: 2em; } .landscapeapp-logo img { max-width: 10em; height: 2em; } } .landscapeapp-logo img { max-width: 12em; } .sidebar { width: 205px; position: fixed; top: 60px; left: 0; bottom: 0; overflow: hidden; z-index: 6; } .sidebar-scroll { padding: 0 20px 0px 20px; position: absolute; top: 0; right: 0; bottom: 0; left: 0; overflow: hidden; overflow-y: auto; } @media (max-width: 992px) { .sidebar-scroll { padding-top: 10px; } } .app .sidebar-collapse { display: none; position: absolute; top: 1px; right: 1px; z-index: 3; width: 24px; height: 24px; font-size: 32px; border-radius: 16px; line-height: 24px; background: transparent; user-select: none; cursor: pointer; text-align: center; vertical-align: middle; transform: rotate(45deg); color: rgba(0, 0, 0, 0.54); } @media (max-width: 992px) { .sidebar { position: fixed; bottom: 0; width: 215px; transform: translate(-215px, 0); transition: 0.3s; top: 0; z-index: 6; background: #fff; padding-top: 12px; overflow: auto; } .app .sidebar-collapse { display: block; } .filters-opened .sidebar { transform: none; } } .sidebar fieldset { margin-top: 5px; color: var(--navy); } .sidebar .content-sidebar { flex: 150px 0 0; padding: 13px 0 0 20px; } .sidebar .filters-action { height: 25px; margin-bottom: 10px; font-size: 20px; cursor: pointer; display: inline-block; } .sidebar .filters-action span { font-size: 14px; position: relative; top: -3px; } .sidebar .filters-action svg { font-size: 16px; width: 16px; height: 16px; fill: currentColor; } @media (max-width: 992px) { .sidebar .filters-action { margin-top: 15px; } } .sidebar-presets { margin: 1rem 0; font-size: 0.8rem; } .sidebar-presets h4 { margin: 0 0 8px 0; } .sidebar-presets div { margin-bottom: 3px; } .sidebar-presets a { text-decoration: none; display: block; position: relative; } .sidebar-presets a:focus { outline: none; } .sidebar-presets a.active { color: #000; font-weight: bold; } .sidebar div { color: var(--navy); } .sidebar legend { font-size:0.6em !important; color: var(--navy-light); } .sidebar .title { display:flex; flex-direction: column; font-size:1.3em; color: #6d7e90 !important; align-items: flex-end; padding: 10px 0 0 20px; } .sidebar .title a { color:#949494; } .sidebar .title p { color: #CCC; font-size: 0.6em; margin: 3px 0; } .sidebar-note { font-size: 0.8rem; color: #999; background: #e8e8e8; padding: 15px; border-radius: 4px; } .sidebar-event { margin: 0 -10px; position: relative; display: block; } .sidebar-event img { width: 180px; } .app { position: relative; } .app .sidebar-show { display: none; border: 0; cursor: pointer; user-select: none; background-color: transparent; color: rgba(0, 0, 0, 0.54); padding: 12px; border-radius: 50%; } @media (max-width: 992px) { .app .sidebar-show { display: block; position: absolute; top: 7px; left: 0; z-index: 3; } .app .sidebar-show svg { fill: currentColor; width: 1em; height: 1em; display: inline-block; font-size: 1.5rem; transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; flex-shrink: 0; user-select: none; } } .app-overlay { opacity: 0; position: fixed; top: 0; left: 0; bottom: 0; width: 100%; background: #000; margin-left: -100%; transition: opacity 0.3s, margin 0s; transition-delay: 0s, 0.3s; z-index: 4; } .filters-opened { overflow: hidden; } .filters-opened .app-overlay { margin: 0; opacity: 0.4; transition-delay: 0s, 0s; } .main-parent { height: 100%; display: flex; flex-direction: column; } .main { margin-left: 205px; padding: 10px; z-index: 3; } @media (max-width: 992px) { .main { margin-left: 0; position: relative; } } .main-note { background: #e8e8e8; font-size: 0.7rem; color: #999; padding: 10px 15px; border-radius: 3px; } .main.embed { margin-left: 0; padding-top: 5px !important; min-height: 500px; } .main, .cards-section { display: flex; flex-direction: column; flex: 1; } html.embed body { background-color: inherit; } @media (max-width: 992px) { .big-picture .main { padding-top: 0; } } .fullscreen .main { margin-left: 0; padding-top: 0px; } /* grid */ .row { margin-left: -20px; margin-right: -20px; display: flex; } .col { padding: 0 20px; } .col-25 { width: 25%;} .col-33 { width: 33.33%;} .col-50 { width: 50%;} .col-66 { width: 66.66%;} .col-75 { width: 75%;} .col-20 { width: 20%;} .col-40 { width: 40%;} .col-60 { width: 60%;} .col-80 { width: 80%;} .tight-row { display: flex; } .tight-col {padding-right: 0; padding-left: 20px; } /* tags */ .tag { display: inline-block; vertical-align: top; white-space: nowrap; border-radius: 4px; font-size: 0; margin: 0 5px 5px 0; color: #000; border: 0; } .tag:hover { color: #000; } .tag-name { padding: 4px 6px; margin-right: -6px; font-size: 0.6rem; font-weight: bold; display: inline-block; border-radius: 3px 0 0 3px; } .tag-value { padding: 4px 6px; font-size: 0.6rem; display: inline-block; } .tag-blue { background: #a0cfff; } .tag-blue:hover {background: #89c3ff;} .tag-grass { background: #a1eaff; } .tag-grass:hover {background: #87e4ff;} .tag-purple {background: #d7c1fb; } .tag-purple:hover {background: #caa9ff;} .tag-orange {background: #a6f5ed; } .tag-orange:hover {background: #7dfff2;} .column-content { display: flex; flex-wrap: wrap; position: relative } .column-content [data-section-id] { width: 100%; display: flex; flex-wrap: wrap; position: relative; } .oss img { background: white; } .nonoss img { background: #E4E4E4; } .mosaic { width: 100%; cursor: pointer; position: relative; border-radius: 2px; box-shadow: 1px 1px 3px #d6d6d6; background: #fff; border: 1px solid #fff; } .mosaic-wrap { padding: 5px; width: 200px; display: flex; } @media (max-width: 1839px) { .mosaic-wrap { width: 14.285%; } } @media (max-width: 1639px) { .mosaic-wrap { width: 16.666%; } } @media (max-width: 1439px) { .mosaic-wrap { width: 20%; } } @media (max-width: 1239px) { .mosaic-wrap { width: 25%; } } @media (max-width: 1039px) { .mosaic-wrap { width: 33.333%; } } @media (max-width: 850px) and (max-height: 750px) { .mosaic-wrap { width: 25%; } } @media (max-width: 812px) { .mosaic-wrap { width: 33.333%; } } @media (max-width: 550px) { .mosaic-wrap { width: 50%; } } @media (max-width: 1839px) { .embed .mosaic-wrap { width: 12.5%; } } @media (max-width: 1639px) { .embed .mosaic-wrap { width: 14.285%;} } @media (max-width: 1439px) { .embed .mosaic-wrap {width: 16.666%;} } @media (max-width: 1239px) { .embed .mosaic-wrap {width: 20%;} } @media (max-width: 1039px) { .embed .mosaic-wrap {width: 25%;} } @media (max-width: 850px) and (max-height: 750px) { .embed .mosaic-wrap { width: 25%; } } @media (max-width: 812px) { .embed .mosaic-wrap { width: 33.333%; } } @media (max-width: 550px) { .embed .mosaic-wrap { width: 50%; } } .mosaic .logo_wrapper { padding: 2px; width: 100%; cursor: pointer; display: flex; justify-content: center; align-items: center; } .mosaic .logo_wrapper .logo { width: 195px; height: 100px; max-width: 100%; border-radius: 4px 4px 0 0; } .mosaic .mosaic-info { font-size: 0.6em; border-width:1px 0 0 0; border-style: solid; border-color: #dedede; padding: 10px; display: flex; justify-content: space-between; color: var(--navy-light); } .mosaic h5 { margin:0 0 5px 0 !important; color: var(--navy); font-size: 1em; } .mosaic .mosaic-stars { line-height: 15px; text-align: right; white-space: nowrap; } .mosaic .material-icons { line-height: 15px; vertical-align: top; } .mosaic .mosaic-funding { white-space: nowrap; } .logo-mode .mosaic .mosaic-info * { display: none; } .logo-mode .mosaic .logo_wrapper .logo { height: 130px; } .logo-mode .mosaic .mosaic-info .mosaic-title { display: inherit; width: 100%; font-size: 1.5em; text-align: center; } .flat-mode .sh_wrapper { background: transparent; font-size: 24px; text-align: center; } .flat-mode .sh_wrapper div .items-count { display: none } .flat-mode .mosaic .logo { height: 130px; width: 100%; padding: 2px; } .flat-mode .mosaic h5 { font-size: 16px; font-weight: normal; padding-left: 5px; padding-top: 5px; } .flat-mode .mosaic .separator { width: 100%; border-top: 1px solid grey; } .flat-mode .mosaic { box-shadow: inherit; border: 1px solid grey; background: inherit; } .borderless-mode .mosaic-wrap { padding: 30px; } .borderless-mode .sh_wrapper { background: transparent; font-size: 24px; } .borderless-mode .sh_wrapper div .items-count { display: none } .borderless-mode .mosaic .logo { height: 160px; width: 100%; } .borderless-mode .mosaic { box-shadow: inherit; border: inherit; background: inherit; } .ios body { user-select: none; -webkit-user-select: none; -webkit-touch-callout: none; } .ios * { -webkit-tap-highlight-color: rgba(0,0,0,0); } html.ios.has-selected-item, html.ios.has-selected-item body { height: 100%; overflow-y: scroll; -webkit-overflow-scrolling: touch } .gradient-bg { background: linear-gradient(135deg, rgb(27,68,108) 0%, rgb(92,107,156) 100%); } .big-picture-switch { margin-bottom: 2px; } .big-picture-switch a { min-width: 160px; display: inline-block; color: var(--blue); opacity: 1; padding: 6px 12px; height: 48px; font-weight: 500; line-height: 1.75; white-space: normal; cursor: pointer; vertical-align: middle; text-align: center; } .big-picture-switch a.selected { border-bottom: 2px solid var(--blue); } @media (max-width: 1200px) { .big-picture-switch a {min-width: 120px; } } @media (max-width: 992px) { .big-picture-switch a {min-width: 105px; } } @media (max-width: 768px) { .big-picture-switch a {min-width: 90px; } } @media (max-width: 576px) { .big-picture-switch a {min-width: padding: 6px; min-width: 80px; } } .landscape-flex { position: relative; flex: 1; } .landscape-wrapper { position: absolute; background: #1b446c; top: 0; bottom: 0; left: 0; right: 0; overflow: scroll; } .inner-landscape { font-size: 12px; line-height: 1.1; transform-origin: 0px 0px; } .cards-section { position: relative; } .right-buttons .zoom-reset { cursor: pointer; min-width: 40px; text-align: center; margin-top: -6px; } .right-buttons .disabled { cursor: default; pointer-events: none; } .right-buttons .disabled svg { color: rgba(0, 0, 0, 0.26); } .embed .tweet-button { display: none; } .embed.modal-embed .column-content { display: none; } .embed.modal-embed { background: inherit; } .embed.modal-embed #embedded-footer { display: none; } .tweet-button { width: 105px; display: flex; } .tweet-button .tweet-count-wrapper { display: inline-block; position: relative; width: auto; height: auto; background-color: #f1faff; border: 1px solid #b4dbee; border-radius: 2px; margin-left: 10px; vertical-align: top; } .tweet-button .tweet-count-wrapper:before { content: ' '; position: absolute; width: 0; height: 0; left: -9px; right: auto; top: calc(50% - 4px); border: 4px solid; border-color: transparent #b4dbee transparent transparent; } .tweet-button .tweet-count-wrapper:after{ content: ' '; position: absolute; width: 0; height: 0; left: -8px; right: auto; top: calc(50% - 4px); border: 4px solid; border-color: transparent #f1faff transparent transparent; } .tweet-button .tweet-count-wrapper .tweet-count{ padding: 2px 4px; text-align: left; font-size: 10px; margin: 0 } .tweet-button a { display: flex; align-items: center; justify-content: space-evenly; border-radius: 2px; width: 60px; background: rgb(25,114,230); color: white; } .tweet-button a svg { width: 14px; height: 14px; fill: white; } .tweet-button a span { position: relative; font-size: 11.5px !important; font-weight: bold; } .right-buttons { position: absolute; top: 10px; width: auto; right: 0; display: flex; align-items: center; justify-content: flex-end; } .right-buttons svg { width: 24px; height: 24px; fill: currentColor; color: rgba(0, 0, 0, 0.54); cursor: pointer; margin: 10px; } .right-buttons .fullscreen-button { margin-left: 2px; } @media (max-width: 768px) { .big-picture .main { padding-bottom: 40px; } .big-picture .right-buttons { top: initial; bottom: -35px; width: 100%; } } .inner-landscape .large-item, .items .large-item { cursor: pointer; position: relative; width: 71px; height: 63px; } .inner-landscape .large-item.large-item-16, .items .large-item.large-item-16 { cursor: pointer; position: relative; width: 145px; height: 128px; } .inner-landscape .small-item, .items .small-item { cursor: pointer; position: relative; width: 34px; height: 30px; border: 1px solid grey; border-radius: 2px; padding: 1px; } .inner-landscape .item-wrapper, .items .item-wrapper { display: flex; justify-content: center; align-items: center; grid-column-end: span 1; grid-row-end: span 1; } .inner-landscape .item-wrapper.wrapper-large-4, .items .item-wrapper.wrapper-large-4 { grid-column-end: span 2; grid-row-end: span 2; } .inner-landscape .item-wrapper.wrapper-large-16, .items .item-wrapper.wrapper-large-16 { grid-column-end: span 4; grid-row-end: span 4; } @media (max-width: 576px) { .right-buttons { position: fixed; top: initial; bottom: 0; width: 100%; background-color:#F4F4f4; padding: 5px 10px; z-index: 10; } } .landscape-wrapper svg { width: 1em; height: 1em; fill: currentColor; width: 1em; height: 1em; display: inline-block; font-size: 1.5rem; flex-shrink: 0; user-select: none; } .modal { perspective: 2000px; overflow: auto; display: block; position: fixed; z-index: 1300; inset: 0px; } .modal svg { color: rgb(123,123,123); } .modal-shadow { opacity: 1; top: 0; left: 0; right: 0; bottom: 0; display: flex; z-index: -1; position: fixed; align-items: center; justify-content: center; background-color: rgba(0, 0, 0, 0.5); -webkit-tap-highlight-color: transparent; } .modal-container { height: 100%; outline: 0; display: flex; align-items: center; justify-content: center; } .modal-prev, .modal-next { position: absolute; top: 50%; margin-top: -20px; font-size: 2.5rem; color: #fff; cursor: pointer; opacity: 0.6; } .modal-prev svg, .modal-next svg { width: 64px; height: 64px; fill: white; } .modal-prev:hover, .modal-next:hover { opacity: 1; } .modal-prev[disabled], .modal-next[disabled] { cursor: defaut; opacity: 0.1; } .modal-prev { left: -60px; } .modal-next { right: -60px;} .modal-content .charts-desktop { display: inherit; } .modal-content .charts-mobile { display: none; } @media (max-width: 1000px) { .modal-prev {left: -45px;} .modal-next {right: -45px;} } @media (max-width: 750px) { .modal-prev, .modal-next { width: 40px; height: 100px; line-height: 100px; margin-top: -50px; font-size: 2.5rem; text-align: center; opacity: 1; svg { display: none; } } .modal-prev:before, .modal-next:before { content: ""; width: 0; height: 0; border: transparent 20px solid; position: absolute; top: 0; bottom: 0; margin: auto; } .modal-prev { left: -40px; &:before {border-right-color: #fff; border-left-width: 0; right: 5px;} } .modal-next {right: -40px; &:before {border-left-color: #fff; border-right-width: 0; left: 5px;} } .row {display: block;} .col {width: 100% !important;} } .modal .modal-body { color: rgba(0, 0, 0, 0.87); transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; background-color: #fff; box-shadow: 0px 11px 15px -7px rgb(0 0 0 / 20%), 0px 24px 38px 3px rgb(0 0 0 / 14%), 0px 9px 46px 8px rgb(0 0 0 / 12%); display: flex; flex-direction: column; padding: 40px; overflow: visible; max-height: 640px; width: 90%; max-width: 940px; border-radius: 8px; margin: 50px; position: absolute; top: 20px; left: 0; bottom: 20px; right: 0; margin: auto; } .modal .modal-close { transform: scaleY(0.8); cursor: pointer; position: absolute; top: 0; right: 0; font-size: 30px; opacity: 0.4; color: #000; z-index: 3; width: 60px; line-height: 60px; text-align: center; } .modal .modal-close:hover { opacity: 1; } @media(max-width: 1000px) { .modal-content .charts-desktop { display: none; } .modal-content .charts-mobile { display: inherit; } .modal-content { padding: 50px 20px 20px; width: auto; height: auto; position: absolute; top: 30px; left: 40px; bottom: 30px; right: 40px; margin: 0; max-height: none; overflow: auto; -webkit-overflow-scrolling: touch; position: absolute; top: 0; left: 0; bottom: 0; right: 0; padding: 20px; } .modal-content .product-logo { margin: 0 auto 1rem; position: relative; width: auto; max-width: 250px; height: 180px; top: 0; left: 0; user-select: none; } .modal-content .product-tags { position: static; margin-left: calc(50% - 125px); } .modal-content .product-scroll { margin: 0; padding: 0; height: auto; overflow: visible; position: static; } } .embed .modal .modal-body { max-height: 480px; } .popup .modal .modal-body { border: 0; width: 100%; height: 100%; max-height: 100%; max-width: 100%; box-shadow: none; top: 0; left: 0; right: 0; bottom: 0; padding: 0; } .product-badges > div { margin-bottom: 5px; } .product-logo { margin-bottom: 2.5rem; box-shadow: 0 1px 4px rgba(0,0,0,0.2); border-radius: 4px; padding: 16px; border: #fff 4px solid; height: 172px; position: absolute; top: 40px; left: 40px; width: 30%; } .product-logo-img { cursor: pointer; margin: auto; display: block; width: 100%; height: 100%; position: absolute; top: 0; left: 0; bottom: 0; right: 0; } .nonoss .product {border-color: #E4E4E4;} .product-tags { position: absolute; left: 40px; top: 230px; margin-bottom: 1rem; } .product-main { font-size: 0.8rem; line-height: 130%; color: var(--navy); } .product-scroll { position: absolute; top: 40px; left: calc(40% - 20px); bottom: 40px; right: 20px; padding-right: 20px; overflow: auto; } .product-name { font-size: 2rem; line-height: 130%; } .product-parent { font-weight: bold; margin-bottom: 0.8rem; } .product-parent .tag { margin-left: 8px; margin-top: 0px; line-height: 16px; height: 22px; font-weight: normal; } .product-parent a { line-height: 22px; } .product-category { color: var(--navy-light); margin-bottom: 0.8rem; } .product-category .product-category-separator { margin: 0 5px; font-size: 0.6rem; } .product-description { font-size: 1.1rem; line-height: 130%; margin-bottom: 0.8rem; max-height: 300px; } .product-properties { font-size: 0.8em; color: var(--navy); margin: 2rem 0; } .product-property { margin-bottom: 0.5rem; } .product-property .product-value { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .product-property .product-value a { color: var(--blue); } @media (max-width: 750px) { .product-name {display: block; width: 100%;} .product-value {display: block; width: 100%;} } .product-repo a { margin-right: 10px; } .product-repo .product-stars-label { margin-right: 10px; } .product-repo .product-stars-label .primary-repo { margin-right: 10px; color: black; } .product-repo .product-stars { color: var(--navy); font-size: 0.8rem; white-space: nowrap; line-height: 16px; display: inline-block; } .product-repo-stars svg { width: 16px; height: 16px; display: inline-block; vertical-align: top; fill: currentColor; } .product-twitter { position: relative; } .product-twitter:after { position: absolute; content: ""; top: 0; left: 0; bottom: 0; right: 0; z-index: 100; pointer-events: none; } .multiline { height: 22px !important; width: 146px !important; position: relative !important; } .multiline .tag-name { position: absolute !important; top: 4px !important; left: 4px !important; padding: 0 !important; margin: 0 !important; } .multiline .tag-value { font-size: 0.5rem !important; white-space: normal !important; width: 110px !important; padding: 0 2px !important; position: relative !important; display: table-cell !important; vertical-align: middle !important; left: 40px !important; height: 22px; } .twolines { height: 22px !important; width: 145px !important; position: relative !important; } .twolines .tag-name { position: absolute; left: 0px; top: -1px; width: 145px; padding: 0 !important; margin: 0 !important; text-align: center; } .twolines .tag-value { position: absolute; left: 0px; width: 145px; white-space: normal !important; top: 5px; text-align: center; } .modal-content .single-column .product-property .col:nth-child(1) { display: inline-block; width: 40%; } .modal-content .single-column .product-property col:nth-child(2) { display: inline-block; width: 60% } /* select starting stylings ------------------------------*/ .select { font-family: 'Roboto'; position: relative; width: 180px; margin-bottom: 10px; } .select-disabled { opacity: 0.35; pointer-events: none; } .select-text { position: relative; font-family: inherit; background-color: transparent; width: 100%; font-size: 11px; padding: 10px 22px 10px 0; border-radius: 0; border: none; border-bottom: 1px solid rgba(0,0,0, 0.12); } /* Remove focus */ .select-text:focus { outline: none; border-bottom: 1px solid rgba(0,0,0, 0); } /* Use custom arrow */ .select .select-text { appearance: none; -webkit-appearance:none } .select:after { position: absolute; top: 18px; right: 10px; /* Styling the down arrow */ width: 0; height: 0; padding: 0; content: ''; border-left: 6px solid transparent; border-right: 6px solid transparent; border-top: 6px solid rgba(0, 0, 0, 0.12); pointer-events: none; } /* LABEL ======================================= */ .select-label { color: rgb(105, 109, 112); font-size: 10px; font-weight: normal; position: absolute; pointer-events: none; left: 0; top: 10px; transition: 0.2s ease all; } /* active state */ .select-text:focus ~ .select-label, .select-text:valid ~ .select-label { top: -10px; transition: 0.2s ease all; font-size: 11px; } /* BOTTOM BARS ================================= */ .select-bar { position: relative; display: block; width: 100%; } .select-bar:before, .select-bar:after { content: ''; height: 2px; width: 0; bottom: 1px; position: absolute; background: #2F80ED; transition: 0.2s ease all; } .select-bar:before { left: 50%; } .select-bar:after { right: 50%; } /* active state */ .select-text:focus ~ .select-bar:before, .select-text:focus ~ .select-bar:after { width: 50%; } .select-highlight { position: absolute; height: 60%; width: 100px; top: 25%; left: 0; pointer-events: none; opacity: 0.5; } .select-popup { perspective: 2000px; overflow: auto; display: block; position: fixed; z-index: 1300; inset: 0px; } .select-popup-body { position: absolute; z-index: 2000; min-width: 200px; min-height: 64px; background: white; border: 1px solid grey; border-radius: 3px; overflow-x: hidden; overflow-y: auto; user-select: none; } .select-popup-body div { color: rgba(0,0,0, 0.87); padding: 4px 10px 2px 10px; height: 26px; font-size: 12px; } .select-popup-body div[data-level="2"] { padding-left: 30px; } .select-popup-body div:hover { background: #eee; } .select-popup-body div.active { background: #ccc; } .pure-material-checkbox { z-index: 0; position: relative; display: inline-block; color: rgba(var(--pure-material-onsurface-rgb, 0, 0, 0), 0.87); font-family: var(--pure-material-font, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system); font-size: 13px; line-height: 1.5; top: -1.5px; } /* Input */ .pure-material-checkbox > input { appearance: none; -moz-appearance: none; -webkit-appearance: none; z-index: -1; position: absolute; left: -10px; top: -8px; display: block; margin: 0; border-radius: 50%; width: 40px; height: 40px; background-color: rgba(var(--pure-material-onsurface-rgb, 0, 0, 0), 0.6); box-shadow: none; outline: none; opacity: 0; transform: scale(1); pointer-events: none; transition: opacity 0.3s, transform 0.2s; } /* Span */ .pure-material-checkbox > span { display: inline-block; width: 100%; cursor: pointer; } /* Box */ .pure-material-checkbox > span::before { content: ""; display: inline-block; box-sizing: border-box; margin: 4px 6px 3px 1px; border: solid 2px; /* Safari */ border-color: rgba(var(--pure-material-onsurface-rgb, 0, 0, 0), 0.6); border-radius: 2px; width: 15px; height: 15px; vertical-align: top; transition: border-color 0.2s, background-color 0.2s; } /* Checkmark */ .pure-material-checkbox > span::after { content: ""; display: block; position: absolute; top: 3px; left: 1px; width: 10px; height: 5px; border: solid 2px transparent; border-right: none; border-top: none; transform: translate(3px, 4px) rotate(-45deg); } /* Checked, Indeterminate */ .pure-material-checkbox > input:checked, .pure-material-checkbox > input:indeterminate { background-color: rgb(var(--pure-material-primary-rgb, 33, 150, 243)); } .pure-material-checkbox > input:checked + span::before, .pure-material-checkbox > input:indeterminate + span::before { border-color: rgb(var(--pure-material-primary-rgb, 33, 150, 243)); background-color: rgb(var(--pure-material-primary-rgb, 33, 150, 243)); } .pure-material-checkbox > input:checked + span::after, .pure-material-checkbox > input:indeterminate + span::after { border-color: rgb(var(--pure-material-onprimary-rgb, 255, 255, 255)); } .pure-material-checkbox > input:indeterminate + span::after { border-left: none; transform: translate(4px, 3px); } /* Hover, Focus */ .pure-material-checkbox:hover > input { opacity: 0.04; } .pure-material-checkbox > input:focus { opacity: 0.12; } .pure-material-checkbox:hover > input:focus { opacity: 0.16; } /* Active */ .pure-material-checkbox > input:active { opacity: 1; transform: scale(0); transition: transform 0s, opacity 0s; } .pure-material-checkbox > input:active + span::before { border-color: rgb(var(--pure-material-primary-rgb, 33, 150, 243)); } .pure-material-checkbox > input:checked:active + span::before { border-color: transparent; background-color: rgba(var(--pure-material-onsurface-rgb, 0, 0, 0), 0.6); } /* Disabled */ .pure-material-checkbox > input:disabled { opacity: 0; } .pure-material-checkbox > input:disabled + span { color: rgba(var(--pure-material-onsurface-rgb, 0, 0, 0), 0.38); cursor: initial; } .pure-material-checkbox > input:disabled + span::before { border-color: currentColor; } .pure-material-checkbox > input:checked:disabled + span::before, .pure-material-checkbox > input:indeterminate:disabled + span::before { border-color: transparent; background-color: currentColor; } </style> <script async defer src="//platform.twitter.com/widgets.js" charset="utf-8"></script> <script> /*! iFrame Resizer (iframeSizer.contentWindow.min.js) - v4.3.2 - 2021-04-26 * Desc: Include this file in any page being loaded into an iframe * to force the iframe to resize to the content size. * Requires: iframeResizer.min.js on host page. * Copyright: (c) 2021 David J. Bradshaw - dave@bradshaw.net * License: MIT */ !function(c){if("undefined"!=typeof window){var i=!0,o=10,r="",a=0,u="",s=null,d="",l=!1,f={resize:1,click:1},m=128,h=!0,g=1,n="bodyOffset",p=n,v=!0,y="",w={},b=32,T=null,E=!1,O=!1,S="[iFrameSizer]",M=S.length,I="",N={max:1,min:1,bodyScroll:1,documentElementScroll:1},A="child",C=!0,z=window.parent,k="*",R=0,x=!1,e=null,L=16,F=1,t="scroll",P=t,D=window,j=function(){re("onMessage function not defined")},q=function(){},H=function(){},W={height:function(){return re("Custom height calculation function not defined"),document.documentElement.offsetHeight},width:function(){return re("Custom width calculation function not defined"),document.body.scrollWidth}},B={},J=!1;try{var U=Object.create({},{passive:{get:function(){J=!0}}});window.addEventListener("test",ee,U),window.removeEventListener("test",ee,U)}catch(e){}var V,X,Y,K,Q,G,Z={bodyOffset:function(){return document.body.offsetHeight+pe("marginTop")+pe("marginBottom")},offset:function(){return Z.bodyOffset()},bodyScroll:function(){return document.body.scrollHeight},custom:function(){return W.height()},documentElementOffset:function(){return document.documentElement.offsetHeight},documentElementScroll:function(){return document.documentElement.scrollHeight},max:function(){return Math.max.apply(null,ye(Z))},min:function(){return Math.min.apply(null,ye(Z))},grow:function(){return Z.max()},lowestElement:function(){return Math.max(Z.bodyOffset()||Z.documentElementOffset(),ve("bottom",be()))},taggedElement:function(){return we("bottom","data-iframe-height")}},$={bodyScroll:function(){return document.body.scrollWidth},bodyOffset:function(){return document.body.offsetWidth},custom:function(){return W.width()},documentElementScroll:function(){return document.documentElement.scrollWidth},documentElementOffset:function(){return document.documentElement.offsetWidth},scroll:function(){return Math.max($.bodyScroll(),$.documentElementScroll())},max:function(){return Math.max.apply(null,ye($))},min:function(){return Math.min.apply(null,ye($))},rightMostElement:function(){return ve("right",be())},taggedElement:function(){return we("right","data-iframe-width")}},_=(V=Te,Q=null,G=0,function(){var e=Date.now(),t=L-(e-(G=G||e));return X=this,Y=arguments,t<=0||L<t?(Q&&(clearTimeout(Q),Q=null),G=e,K=V.apply(X,Y),Q||(X=Y=null)):Q=Q||setTimeout(Ee,t),K});te(window,"message",function(t){var n={init:function(){y=t.data,z=t.source,ae(),h=!1,setTimeout(function(){v=!1},m)},reset:function(){v?ie("Page reset ignored by init"):(ie("Page size reset by host page"),Me("resetPage"))},resize:function(){Oe("resizeParent","Parent window requested size check")},moveToAnchor:function(){w.findTarget(i())},inPageLink:function(){this.moveToAnchor()},pageInfo:function(){var e=i();ie("PageInfoFromParent called from parent: "+e),H(JSON.parse(e)),ie(" --")},message:function(){var e=i();ie("onMessage called from parent: "+e),j(JSON.parse(e)),ie(" --")}};function o(){return t.data.split("]")[1].split(":")[0]}function i(){return t.data.substr(t.data.indexOf(":")+1)}function r(){return t.data.split(":")[2]in{true:1,false:1}}function e(){var e=o();e in n?n[e]():("undefined"==typeof module||!module.exports)&&"iFrameResize"in window||"jQuery"in window&&"iFrameResize"in window.jQuery.prototype||r()||re("Unexpected message ("+t.data+")")}S===(""+t.data).substr(0,M)&&(!1===h?e():r()?n.init():ie('Ignored message of type "'+o()+'". Received before initialization.'))}),te(window,"readystatechange",Ae),Ae()}function ee(){}function te(e,t,n,o){e.addEventListener(t,n,!!J&&(o||{}))}function ne(e){return e.charAt(0).toUpperCase()+e.slice(1)}function oe(e){return S+"["+I+"] "+e}function ie(e){E&&"object"==typeof window.console&&console.log(oe(e))}function re(e){"object"==typeof window.console&&console.warn(oe(e))}function ae(){function e(e){return"true"===e}var t;function n(e){Ne(0,0,e.type,e.screenY+":"+e.screenX)}function o(e,t){ie("Add event listener: "+t),te(window.document,e,n)}t=y.substr(M).split(":"),I=t[0],a=c!==t[1]?Number(t[1]):a,l=c!==t[2]?e(t[2]):l,E=c!==t[3]?e(t[3]):E,b=c!==t[4]?Number(t[4]):b,i=c!==t[6]?e(t[6]):i,u=t[7],p=c!==t[8]?t[8]:p,r=t[9],d=t[10],R=c!==t[11]?Number(t[11]):R,w.enable=c!==t[12]&&e(t[12]),A=c!==t[13]?t[13]:A,P=c!==t[14]?t[14]:P,O=c!==t[15]?Boolean(t[15]):O,ie("Initialising iFrame ("+window.location.href+")"),function(){function e(e,t){return"function"==typeof e&&(ie("Setup custom "+t+"CalcMethod"),W[t]=e,e="custom"),e}"iFrameResizer"in window&&Object===window.iFrameResizer.constructor&&(function(){var e=window.iFrameResizer;ie("Reading data from page: "+JSON.stringify(e)),Object.keys(e).forEach(ue,e),j="onMessage"in e?e.onMessage:j,q="onReady"in e?e.onReady:q,k="targetOrigin"in e?e.targetOrigin:k,p="heightCalculationMethod"in e?e.heightCalculationMethod:p,P="widthCalculationMethod"in e?e.widthCalculationMethod:P}(),p=e(p,"height"),P=e(P,"width"));ie("TargetOrigin for parent set to: "+k)}(),function(){c===u&&(u=a+"px");ce("margin",function(e,t){-1!==t.indexOf("-")&&(re("Negative CSS value ignored for "+e),t="");return t}("margin",u))}(),ce("background",r),ce("padding",d),(t=document.createElement("div")).style.clear="both",t.style.display="block",t.style.height="0",document.body.appendChild(t),fe(),me(),document.documentElement.style.height="",document.body.style.height="",ie('HTML & body height set to "auto"'),ie("Enable public methods"),D.parentIFrame={autoResize:function(e){return!0===e&&!1===i?(i=!0,he()):!1===e&&!0===i&&(i=!1,de("remove"),null!==s&&s.disconnect(),clearInterval(T)),Ne(0,0,"autoResize",JSON.stringify(i)),i},close:function(){Ne(0,0,"close")},getId:function(){return I},getPageInfo:function(e){"function"==typeof e?(H=e,Ne(0,0,"pageInfo")):(H=function(){},Ne(0,0,"pageInfoStop"))},moveToAnchor:function(e){w.findTarget(e)},reset:function(){Ie("parentIFrame.reset")},scrollTo:function(e,t){Ne(t,e,"scrollTo")},scrollToOffset:function(e,t){Ne(t,e,"scrollToOffset")},sendMessage:function(e,t){Ne(0,0,"message",JSON.stringify(e),t)},setHeightCalculationMethod:function(e){p=e,fe()},setWidthCalculationMethod:function(e){P=e,me()},setTargetOrigin:function(e){ie("Set targetOrigin: "+e),k=e},size:function(e,t){Oe("size","parentIFrame.size("+((e||"")+(t?","+t:""))+")",e,t)}},!0===O&&(o("mouseenter","Mouse Enter"),o("mouseleave","Mouse Leave")),he(),w=function(){function i(e){var t=e.getBoundingClientRect(),e={x:window.pageXOffset!==c?window.pageXOffset:document.documentElement.scrollLeft,y:window.pageYOffset!==c?window.pageYOffset:document.documentElement.scrollTop};return{x:parseInt(t.left,10)+parseInt(e.x,10),y:parseInt(t.top,10)+parseInt(e.y,10)}}function n(e){var t,n=e.split("#")[1]||e,e=decodeURIComponent(n),o=document.getElementById(e)||document.getElementsByName(e)[0];c!==o?(t=i(t=o),ie("Moving to in page link (#"+n+") at x: "+t.x+" y: "+t.y),Ne(t.y,t.x,"scrollToOffset")):(ie("In page link (#"+n+") not found in iFrame, so sending to parent"),Ne(0,0,"inPageLink","#"+n))}function e(){var e=window.location.hash,t=window.location.href;""!==e&&"#"!==e&&n(t)}function t(){Array.prototype.forEach.call(document.querySelectorAll('a[href^="#"]'),function(e){"#"!==e.getAttribute("href")&&te(e,"click",function(e){e.preventDefault(),n(this.getAttribute("href"))})})}function o(){Array.prototype.forEach&&document.querySelectorAll?(ie("Setting up location.hash handlers"),t(),te(window,"hashchange",e),setTimeout(e,m)):re("In page linking not fully supported in this browser! (See README.md for IE8 workaround)")}w.enable?o():ie("In page linking not enabled");return{findTarget:n}}(),Oe("init","Init message from host page"),q()}function ue(e){var t=e.split("Callback");2===t.length&&(this[t="on"+t[0].charAt(0).toUpperCase()+t[0].slice(1)]=this[e],delete this[e],re("Deprecated: '"+e+"' has been renamed '"+t+"'. The old method will be removed in the next major version."))}function ce(e,t){c!==t&&""!==t&&"null"!==t&&ie("Body "+e+' set to "'+(document.body.style[e]=t)+'"')}function se(n){var e={add:function(e){function t(){Oe(n.eventName,n.eventType)}B[e]=t,te(window,e,t,{passive:!0})},remove:function(e){var t,n=B[e];delete B[e],t=window,e=e,n=n,t.removeEventListener(e,n,!1)}};n.eventNames&&Array.prototype.map?(n.eventName=n.eventNames[0],n.eventNames.map(e[n.method])):e[n.method](n.eventName),ie(ne(n.method)+" event listener: "+n.eventType)}function de(e){se({method:e,eventType:"Animation Start",eventNames:["animationstart","webkitAnimationStart"]}),se({method:e,eventType:"Animation Iteration",eventNames:["animationiteration","webkitAnimationIteration"]}),se({method:e,eventType:"Animation End",eventNames:["animationend","webkitAnimationEnd"]}),se({method:e,eventType:"Input",eventName:"input"}),se({method:e,eventType:"Mouse Up",eventName:"mouseup"}),se({method:e,eventType:"Mouse Down",eventName:"mousedown"}),se({method:e,eventType:"Orientation Change",eventName:"orientationchange"}),se({method:e,eventType:"Print",eventName:["afterprint","beforeprint"]}),se({method:e,eventType:"Ready State Change",eventName:"readystatechange"}),se({method:e,eventType:"Touch Start",eventName:"touchstart"}),se({method:e,eventType:"Touch End",eventName:"touchend"}),se({method:e,eventType:"Touch Cancel",eventName:"touchcancel"}),se({method:e,eventType:"Transition Start",eventNames:["transitionstart","webkitTransitionStart","MSTransitionStart","oTransitionStart","otransitionstart"]}),se({method:e,eventType:"Transition Iteration",eventNames:["transitioniteration","webkitTransitionIteration","MSTransitionIteration","oTransitionIteration","otransitioniteration"]}),se({method:e,eventType:"Transition End",eventNames:["transitionend","webkitTransitionEnd","MSTransitionEnd","oTransitionEnd","otransitionend"]}),"child"===A&&se({method:e,eventType:"IFrame Resized",eventName:"resize"})}function le(e,t,n,o){return t!==e&&(e in n||(re(e+" is not a valid option for "+o+"CalculationMethod."),e=t),ie(o+' calculation method set to "'+e+'"')),e}function fe(){p=le(p,n,Z,"height")}function me(){P=le(P,t,$,"width")}function he(){var e;!0===i?(de("add"),e=b<0,window.MutationObserver||window.WebKitMutationObserver?e?ge():s=function(){function t(e){function t(e){!1===e.complete&&(ie("Attach listeners to "+e.src),e.addEventListener("load",i,!1),e.addEventListener("error",r,!1),u.push(e))}"attributes"===e.type&&"src"===e.attributeName?t(e.target):"childList"===e.type&&Array.prototype.forEach.call(e.target.querySelectorAll("img"),t)}function o(e){ie("Remove listeners from "+e.src),e.removeEventListener("load",i,!1),e.removeEventListener("error",r,!1),e=e,u.splice(u.indexOf(e),1)}function n(e,t,n){o(e.target),Oe(t,n+": "+e.target.src)}function i(e){n(e,"imageLoad","Image loaded")}function r(e){n(e,"imageLoadFailed","Image load failed")}function a(e){Oe("mutationObserver","mutationObserver: "+e[0].target+" "+e[0].type),e.forEach(t)}var u=[],c=window.MutationObserver||window.WebKitMutationObserver,s=function(){var e=document.querySelector("body");return s=new c(a),ie("Create body MutationObserver"),s.observe(e,{attributes:!0,attributeOldValue:!1,characterData:!0,characterDataOldValue:!1,childList:!0,subtree:!0}),s}();return{disconnect:function(){"disconnect"in s&&(ie("Disconnect body MutationObserver"),s.disconnect(),u.forEach(o))}}}():(ie("MutationObserver not supported in this browser!"),ge())):ie("Auto Resize disabled")}function ge(){0!==b&&(ie("setInterval: "+b+"ms"),T=setInterval(function(){Oe("interval","setInterval: "+b)},Math.abs(b)))}function pe(e,t){var n=0;return t=t||document.body,n=null!==(n=document.defaultView.getComputedStyle(t,null))?n[e]:0,parseInt(n,o)}function ve(e,t){for(var n,o=t.length,i=0,r=ne(e),a=Date.now(),u=0;u<o;u++)i<(n=t[u].getBoundingClientRect()[e]+pe("margin"+r,t[u]))&&(i=n);return a=Date.now()-a,ie("Parsed "+o+" HTML elements"),ie("Element position calculated in "+a+"ms"),L/2<(a=a)&&ie("Event throttle increased to "+(L=2*a)+"ms"),i}function ye(e){return[e.bodyOffset(),e.bodyScroll(),e.documentElementOffset(),e.documentElementScroll()]}function we(e,t){var n=document.querySelectorAll("["+t+"]");return 0===n.length&&(re("No tagged elements ("+t+") found on page"),document.querySelectorAll("body *")),ve(e,n)}function be(){return document.querySelectorAll("body *")}function Te(e,t,n,o){function i(){e in{init:1,interval:1,size:1}||!(p in N||l&&P in N)?e in{interval:1}||ie("No change in size detected"):Ie(t)}var r,a;function u(e,t){return!(Math.abs(e-t)<=R)}r=c!==n?n:Z[p](),a=c!==o?o:$[P](),u(g,r)||l&&u(F,a)||"init"===e?(Se(),Ne(g=r,F=a,e)):i()}function Ee(){G=Date.now(),Q=null,K=V.apply(X,Y),Q||(X=Y=null)}function Oe(e,t,n,o){x&&e in f?ie("Trigger event cancelled: "+e):(e in{reset:1,resetPage:1,init:1}||ie("Trigger event: "+t),("init"===e?Te:_)(e,t,n,o))}function Se(){x||(x=!0,ie("Trigger event lock on")),clearTimeout(e),e=setTimeout(function(){x=!1,ie("Trigger event lock off"),ie("--")},m)}function Me(e){g=Z[p](),F=$[P](),Ne(g,F,e)}function Ie(e){var t=p;p=n,ie("Reset trigger event: "+e),Se(),Me("reset"),p=t}function Ne(e,t,n,o,i){var r;!0===C&&(c===i?i=k:ie("Message targetOrigin: "+i),ie("Sending message to host page ("+(r=I+":"+(e+":"+t)+":"+n+(c!==o?":"+o:""))+")"),z.postMessage(S+r,i))}function Ae(){"loading"!==document.readyState&&window.parent.postMessage("[iFrameResizerChild]Ready","*")}}(); //# sourceMappingURL=iframeResizer.contentWindow.map </script> <script> // This is a script which manages absolutely all interactions in a CNCF Landscape // It should always have zero dependencies on any other script or module const CncfLandscapeApp = { init: function() { // get initial state from the url this.filterProps = ''; CncfLandscapeApp.state = CncfLandscapeApp.parseUrl(window.location); CncfLandscapeApp.initialState = { ...CncfLandscapeApp.parseUrl({pathname: '', search: ''}), mode: CncfLandscapeApp.initialMode }; this.manageZoomAndFullscreenButtons(); if (CncfLandscapeApp.state.embed) { document.querySelector('html').classList.add('embed'); if (CncfLandscapeApp.state.showModal) { document.querySelector('html').classList.add('modal-embed') } else { setInterval(function() { const realHeight = document.querySelector('.column-content').scrollHeight + 80; window.parent.postMessage({ type: 'landscapeapp-resize', height: realHeight }, '*'); }, 1000); document.querySelector('#embedded-footer a').href = this.stringifyBrowserUrl({...this.state, embed: false}); } } if (CncfLandscapeApp.state.cardStyle === 'borderless') { document.querySelector('html').classList.add('borderless-mode'); } if (CncfLandscapeApp.state.cardStyle === 'flat') { document.querySelector('html').classList.add('flat-mode'); } if (CncfLandscapeApp.state.cardStyle === 'logo') { document.querySelector('html').classList.add('logo-mode'); } this.propagateStateToUiAndUrl(); document.addEventListener('keydown', (e) => { if (e.keyCode === 27) { if (CncfLandscapeApp.state.selected) { this.state.selected = null; this.propagateStateToUiAndUrl(); } else if (CncfLandscapeApp.state.fullscreen) { CncfLandscapeApp.state.fullscreen = false; CncfLandscapeApp.manageZoomAndFullscreenButtons(); } else if (document.querySelector('.select-popup').style.display === '') { document.querySelector('.select-popup').style.display = "none"; } } else { if (document.querySelector('.select-popup').style.display === '') { if (e.key >= 'a' && e.key <= 'z') { const items = [...document.querySelectorAll('.select-popup .pure-material-checkbox span')]; const first = items.find( (i) => i.innerText.toLowerCase().startsWith(e.key.toLowerCase())); if (first) { first.scrollIntoView(); } } } } }); document.body.addEventListener('click', (e) => { const cardEl = e.target.closest('[data-id]'); if (cardEl) { const selectedItemId = cardEl.getAttribute('data-id'); CncfLandscapeApp.state.selected = selectedItemId; this.propagateStateToUiAndUrl(); e.preventDefault(); e.stopPropagation(); } const modalBodyEl = e.target.closest('.modal-body'); const shadowEl = e.target.closest('.modal-container'); if (shadowEl && !modalBodyEl) { this.state.selected = null; this.propagateStateToUiAndUrl(); e.preventDefault(); e.stopPropagation(); } const modalClose = e.target.closest('.modal-close'); if (modalClose) { this.state.selected = null; this.propagateStateToUiAndUrl(); e.preventDefault(); e.stopPropagation(); } const nextItem = e.target.closest('.modal-next'); if (nextItem && CncfLandscapeApp.nextItemId) { CncfLandscapeApp.state.selected = CncfLandscapeApp.nextItemId; this.propagateStateToUiAndUrl(); e.preventDefault(); e.stopPropagation(); } const prevItem = e.target.closest('.modal-prev'); if (prevItem && CncfLandscapeApp.prevItemId) { CncfLandscapeApp.state.selected = CncfLandscapeApp.prevItemId; this.propagateStateToUiAndUrl(); e.preventDefault(); e.stopPropagation(); } const tabItem = e.target.closest('a[data-mode]'); if (tabItem) { CncfLandscapeApp.state.mode = tabItem.getAttribute('data-mode'); CncfLandscapeApp.propagateStateToUiAndUrl(); e.preventDefault(); e.stopPropagation(); } const guideEl = e.target.closest('#home .guide-toggle a'); if (guideEl) { CncfLandscapeApp.activateGuideMode(); e.preventDefault(); e.stopPropagation(); } const mainEl = e.target.closest('#guide-page .guide-toggle a'); if (mainEl) { CncfLandscapeApp.guideScrollTop = document.body.scrollTop; CncfLandscapeApp.state.mode = CncfLandscapeApp.previousMode || 'main'; CncfLandscapeApp.propagateStateToUiAndUrl(); e.preventDefault(); e.stopPropagation(); } const guideNavigationEl = e.target.closest('#guide-page .guide-sidebar a[data-level]'); if (guideNavigationEl) { CncfLandscapeApp.selectGuideSection(guideNavigationEl); document.querySelector('#guide-page').classList.remove('sidebar-open'); } const selectPopupItemEl = e.target.closest('.select-popup-body div'); const selectPopupShadowEl = e.target.closest('.select-popup'); if (selectPopupShadowEl && !selectPopupItemEl) { selectPopupShadowEl.style.display = "none"; } if (selectPopupItemEl) { CncfLandscapeApp.handlePopupItemClick(selectPopupItemEl); e.preventDefault(); e.stopPropagation(); } const presetEl = e.target.closest('.sidebar-presets a'); if (presetEl) { e.preventDefault(); e.stopPropagation(); let href = presetEl.getAttribute('href'); let pathname; let search; if (href.indexOf('?') === -1) { pathname = '/'; search = href.replace('/', ''); } else { [pathname, search] = href.split('?'); } const newState = CncfLandscapeApp.parseUrl({pathname, search}); CncfLandscapeApp.state = newState; CncfLandscapeApp.propagateStateToUiAndUrl(); } const groupingInternalLinkEl = e.target.closest('.sh_wrapper a[data-type=internal]'); if (groupingInternalLinkEl) { e.preventDefault(); e.stopPropagation(); if (CncfLandscapeApp.state.embed) { return; } const newState = {...CncfLandscapeApp.state }; const linkState = this.parseUrl({search: groupingInternalLinkEl.getAttribute('href'), pathname: '', hash: ''}); const f = (name, x) => this.calculateFullSelection(name, x); const allowedProps = ['grouping', 'sort', 'bestpractices', 'enduser', 'parent', 'language', 'specification']; const otherProps = ['category', 'project', 'license', 'organization', 'headquarters', 'company-type', 'industries'] for (let key of allowedProps) { newState[key] = linkState[key] || CncfLandscapeApp.initialState[key]; } for (let key of otherProps) { newState[key] = f(key, linkState[key] || CncfLandscapeApp.initialState[key]); } CncfLandscapeApp.state = newState; CncfLandscapeApp.propagateStateToUiAndUrl(); } const selectedItemInternalLinkEl = e.target.closest('.modal-body a[data-type=internal]') if (selectedItemInternalLinkEl) { e.preventDefault(); e.stopPropagation(); if (CncfLandscapeApp.state.embed) { return; } const newState = {...CncfLandscapeApp.state }; const linkState = this.parseUrl({search: selectedItemInternalLinkEl.getAttribute('href'), pathname: '', hash: ''}); // Hide dialog, switch to a card mode newState.selected = null; newState.mode = 'card'; // Only set certain properties: filterable + invisible filters // for visible filter we need to always expand a current selection const f = (name, x) => this.calculateFullSelection(name, x); const allowedProps = ['grouping', 'sort', 'bestpractices', 'enduser', 'parent', 'language', 'specification']; const otherProps = ['category', 'project', 'license', 'organization', 'headquarters', 'company-type', 'industries'] for (let key of allowedProps) { newState[key] = linkState[key] || CncfLandscapeApp.initialState[key]; } for (let key of otherProps) { newState[key] = f(key, linkState[key] || CncfLandscapeApp.initialState[key]); } CncfLandscapeApp.state = newState; CncfLandscapeApp.propagateStateToUiAndUrl(); } const categoryLink = e.target.closest('.inner-landscape a[data-type=internal]'); if (categoryLink) { e.preventDefault(); e.stopPropagation(); const newState = {...CncfLandscapeApp.state }; const linkState = this.parseUrl({search: categoryLink.getAttribute('href'), pathname: '', hash: ''}); // Hide dialog, switch to a card mode newState.mode = 'card'; newState.category = linkState.category; newState.grouping = 'category'; CncfLandscapeApp.state = newState; CncfLandscapeApp.propagateStateToUiAndUrl(); } const otherLandscapeLink = e.target.closest('.inner-landscape a[data-type=tab]'); if (otherLandscapeLink) { e.preventDefault(); e.stopPropagation(); const tab = otherLandscapeLink.getAttribute('href').split('/').slice(-1)[0] || "main"; this.activateBigPictureMode(tab); } const expandFilters = e.target.closest('#home .sidebar-show'); if (expandFilters) { document.querySelector('#home').classList.add('filters-opened'); } const collapseFilters = e.target.closest('#home .sidebar-collapse'); if (collapseFilters) { document.querySelector('#home').classList.remove('filters-opened'); } const appOverlay = e.target.closest('#home .app-overlay'); if (appOverlay) { document.querySelector('#home').classList.remove('filters-opened'); } const expandGuideFilters = e.target.closest('#guide-page .sidebar-show'); if (expandGuideFilters) { document.querySelector('#guide-page').classList.add('sidebar-open'); } const closeGuideFilters = e.target.closest('#guide-page .sidebar-collapse'); if (closeGuideFilters) { document.querySelector('#guide-page').classList.remove('sidebar-open'); } const resetAllEl = e.target.closest('#home .landscape-logo a'); if (resetAllEl) { e.preventDefault(); e.stopPropagation(); CncfLandscapeApp.state = {...CncfLandscapeApp.initialState}; CncfLandscapeApp.propagateStateToUiAndUrl(); } const resetFiltersEl = e.target.closest('.sidebar .reset-filters'); if (resetFiltersEl) { e.preventDefault(); e.stopPropagation(); const newState = {...CncfLandscapeApp.state }; const f = (name, x) => this.calculateFullSelection(name, x); const allowedProps = ['bestpractices', 'enduser', 'parent', 'language', 'specification']; const otherProps = ['category', 'project', 'license', 'organization', 'headquarters', 'company-type', 'industries'] for (let key of allowedProps) { newState[key] = CncfLandscapeApp.initialState[key]; } for (let key of otherProps) { newState[key] = f(key, CncfLandscapeApp.initialState[key]); } CncfLandscapeApp.state = newState; CncfLandscapeApp.propagateStateToUiAndUrl(); } const exportEl = e.target.closest('.sidebar .export'); if (exportEl) { e.preventDefault(); e.stopPropagation(); const search = CncfLandscapeApp.stringifyApiUrl(); const url = `${this.basePath}/api/export?${search}`; // now open a download const link = document.createElement('a'); link.style.display = "none"; link.href = url; link.setAttribute('download', ''); document.body.appendChild(link); link.click(); document.body.removeChild(link); } }, false); document.addEventListener('mousedown', (e) => { const selectEl = e.target.closest('select'); if (selectEl) { e.preventDefault(); e.stopPropagation(); CncfLandscapeApp.openSelectPopup(selectEl); } }, false); // support custom css styles and custom js eval code through iframe window.addEventListener('message', (event) => { var data = event.data; if (data.type === "css") { var styles = data.css; var el = document.createElement('style'); el.type = 'text/css'; if (el.styleSheet) { el.styleSheet.cssText = styles; } else { el.appendChild(document.createTextNode(styles)); } document.getElementsByTagName("head")[0].appendChild(el); } if (data.type === "js") { eval(data.js); } }); // support css styles via param const params = new URLSearchParams(window.location.search.substring(1)); if (params.get('css')) { const element = document.createElement("link"); element.setAttribute("rel", "stylesheet"); element.setAttribute("type", "text/css"); element.setAttribute("href", params.get('css')); document.getElementsByTagName("head")[0].appendChild(element); } if (params.get('style')) { const element = document.createElement("style"); let style = params.get('style'); try { style = JSON.parse(style) } catch(ex) { } element.innerHTML = style; document.getElementsByTagName("head")[0].appendChild(element); } window.addEventListener('popstate', (e) => { if (e.state) { CncfLandscapeApp.state = e.state; CncfLandscapeApp.propagateStateToUi(); } }); document.body.style.opacity = 1; }, selectGuideSection: function(guideNavigationEl) { const allLinks = [...document.querySelectorAll('#guide-page .guide-sidebar a[data-level]')]; if (!guideNavigationEl) { guideNavigationEl = allLinks.find( (x) => x.getAttribute('href') === this.state.activeSection); } if (!guideNavigationEl) { for (let i = 0; i < allLinks.length; i++) { const link = allLinks[i]; const linkLevel = link.getAttribute('data-level'); link.classList.remove('expanded'); link.classList.remove('active'); if (linkLevel === "2") { link.classList.add('display-hidden'); } } return; } const linkLevel = guideNavigationEl.getAttribute('data-level'); const index = allLinks.indexOf(guideNavigationEl); let parentIndex = index; const selectedLinkLevel = linkLevel; if (linkLevel === "2") { for (let i = index - 1; i >= 0; i -= 1) { const prevLink = allLinks[i]; if (prevLink.getAttribute('data-level') === "1") { parentIndex = i; break; } } } const hasChildren = linkLevel === "2" || allLinks[index + 1] && allLinks[index + 1].getAttribute('data-level') === "2"; let childrenStarted = false; for (let i = 0; i < allLinks.length; i++) { const link = allLinks[i]; const linkLevel = link.getAttribute('data-level'); if (linkLevel === "2" && i === parentIndex + 1) { childrenStarted = true; } if (childrenStarted && linkLevel === "1") { childrenStarted = false; } link.classList.remove('expanded'); link.classList.remove('active'); if (hasChildren && selectedLinkLevel === "1" && i === index + 1) { link.classList.add('active') } if (hasChildren && selectedLinkLevel === "2" && i === index) { link.classList.add('active') } if (!hasChildren && i === index) { link.classList.add('active') } if (hasChildren && i === parentIndex) { link.classList.add('expanded'); } if (linkLevel === "2") { if (childrenStarted) { link.classList.remove('display-hidden'); } else { link.classList.add('display-hidden'); } } } this.state.activeSection = guideNavigationEl.getAttribute('href'); if (!this.hadGuideNavigation) { this.hadGuideNavigation = true; document.querySelector(this.state.activeSection).scrollIntoView(); } if (this.guideScrollTop) { document.body.scrollTop = this.guideScrollTop; } }, openSelectPopup: function(selectEl) { const wrapperEl = selectEl.closest('[data-name]'); let items = []; if (wrapperEl.getAttribute('data-options')) { items = JSON.parse(wrapperEl.getAttribute('data-options')); } const kind = wrapperEl.getAttribute('data-type'); let content; let firstSelected = null; if (kind === 'single') { const currentValue = wrapperEl.getAttribute('data-value'); firstSelected = currentValue; content = items.map( (item) => ` <div data-option-id="${item.id}" ${item.id === currentValue ? "class=active" : ""}>${item.label}</div> `).join(''); } else { const currentValues = (wrapperEl.getAttribute('data-value') || '').split(','); firstSelected = currentValues[0]; content = items.map( (item) => { const isActive = currentValues.includes(item.id); return ` <div data-option-id="${item.id}" data-level=${item.level} ${isActive ? "class=active" : ""}> <label class="pure-material-checkbox"> <input type="checkbox" ${isActive ? " checked " : ""}> <span>${item.label}</span> </label> </div> ` }).join(''); } const popupRoot = document.querySelector('.select-popup'); const popupBody = document.querySelector('.select-popup-body'); const box = selectEl.getBoundingClientRect(); popupBody.setAttribute('data-name', wrapperEl.getAttribute('data-name')); popupBody.setAttribute('data-type', wrapperEl.getAttribute('data-type')); popupBody.innerHTML = content; popupRoot.style.display = ""; popupBody.style.left = box.left + "px"; const realHeight = items.length * 26 + 10; const maxHeight = document.body.clientHeight - 20; const height = Math.min(maxHeight, realHeight); const top = Math.min(box.top, document.body.clientHeight - 10 - height); popupBody.style.top = top + "px"; popupBody.style.height = height + "px"; if (firstSelected) { const itemEl = popupBody.querySelector(`[data-option-id=${firstSelected}]`); itemEl.scrollIntoView(); } }, handlePopupItemClick(itemEl) { const popupBody = document.querySelector('.select-popup-body'); const popupRoot = document.querySelector('.select-popup'); const mode = popupBody.getAttribute('data-type'); const optionId = itemEl.getAttribute('data-option-id'); const wrapper = document.querySelector(`.select[data-name=${popupBody.getAttribute('data-name')}`); const name = wrapper.getAttribute('data-name'); if (mode === 'single') { popupRoot.style.display = "none"; CncfLandscapeApp.state[name] = optionId; CncfLandscapeApp.propagateStateToUiAndUrl(); } else { // toggle const isItemSelected = itemEl.querySelector('input').checked; const newValue = !isItemSelected; itemEl.querySelector('input').checked = newValue; itemEl.classList.remove('active'); if (newValue) { itemEl.classList.add('active'); } //now recalculate parent const allItems = [...popupBody.querySelectorAll('div')]; const currentIndex = allItems.indexOf(itemEl); if (itemEl.getAttribute('data-level') === "1") { for (let i = currentIndex + 1; i < allItems.length; i++) { const childEl = allItems[i]; if (childEl.getAttribute('data-level') === "1") { break; } childEl.querySelector('input').checked = newValue; childEl.classList.remove('active'); if (newValue) { childEl.classList.add('active'); } } } else { // or recalculate children let parentIndex = null; for (let i = currentIndex - 1; i >=0; i -= 1) { if (allItems[i].getAttribute('data-level') === "1") { parentIndex = i; break; } } let hasTrue = false; let hasChildren = false; for (let i = parentIndex + 1; i < allItems.length; i++) { const childEl = allItems[i]; if (childEl.getAttribute('data-level') === "1") { break; } hasChildren = true; const value = childEl.classList.contains('active'); if (value) { hasTrue = true; } } if (hasChildren && hasTrue) { allItems[parentIndex].querySelector('input').checked = true; allItems[parentIndex].classList.add('active'); } else if (hasChildren && !hasTrue) { allItems[parentIndex].querySelector('input').checked = false; allItems[parentIndex].classList.remove('active'); } } const selected = allItems.filter( (x) => x.classList.contains('active')); const selectedIds = selected.map( (x) => x.getAttribute('data-option-id')); CncfLandscapeApp.state[name] = selectedIds.join(','); CncfLandscapeApp.propagateStateToUiAndUrl(); } }, // everything related to zoom manageZoomAndFullscreenButtons: function() { const zoomLevels = [0.4, 0.6, 0.8, 1.0, 1.2, 1.5, 2.0, 2.5, 4.0]; const zoomLevelsReverse = [...zoomLevels].reverse(); if (this.state.fullscreen) { document.querySelector('html').classList.add('fullscreen'); } else { document.querySelector('html').classList.remove('fullscreen'); } document.querySelector('.right-buttons').style.display = this.state.mode === 'card' ? 'none' : ''; document.querySelector('.right-buttons .fullscreen-exit').style.display = this.state.fullscreen ? '' : 'none'; document.querySelector('.right-buttons .fullscreen-enter').style.display = !this.state.fullscreen ? '' : 'none'; document.querySelector('.right-buttons .zoom-reset').innerText = (this.state.zoom * 100) + '%'; for (let landscapeEl of document.querySelectorAll('.inner-landscape')) { landscapeEl.style.transform = `scale(${this.state.zoom})`; } const nextZoomOut = zoomLevelsReverse.find( (x) => x < this.state.zoom); const nextZoomIn = zoomLevels.find( (x) => x > this.state.zoom); const zoomOutEl = document.querySelector('.right-buttons .zoom-out'); const zoomInEl = document.querySelector('.right-buttons .zoom-in'); if (nextZoomOut) { zoomOutEl.classList.remove('disabled'); } else { zoomOutEl.classList.add('disabled'); } if (nextZoomIn) { zoomInEl.classList.remove('disabled'); } else { zoomInEl.classList.add('disabled'); } // manage all related events if (!this.zoomAndFullscreenListenersAttached) { this.zoomAndFullscreenListenersAttached = true; document.querySelector('.right-buttons').addEventListener('click', (e) => { const zoomIn = e.target.closest('.zoom-in'); if (zoomIn) { const nextZoomIn = zoomLevels.find( (x) => x > this.state.zoom); if (nextZoomIn) { this.state.zoom = nextZoomIn; this.manageZoomAndFullscreenButtons(); this.updateUrl(); } } const zoomOut = e.target.closest('.zoom-out'); if (zoomOut) { const nextZoomOut = zoomLevelsReverse.find( (x) => x < this.state.zoom); if (nextZoomOut) { this.state.zoom = nextZoomOut; this.manageZoomAndFullscreenButtons(); this.updateUrl(); } } const fullscreenEnter = e.target.closest('.fullscreen-enter'); if (fullscreenEnter) { this.state.fullscreen = true; this.manageZoomAndFullscreenButtons(); this.updateUrl(); } const fullscreenExit = e.target.closest('.fullscreen-exit'); if (fullscreenExit) { this.state.fullscreen = false; this.manageZoomAndFullscreenButtons(); this.updateUrl(); } const zoomReset = e.target.closest('.zoom-reset'); if (zoomReset) { this.state.zoom = 1; this.manageZoomAndFullscreenButtons(); this.updateUrl(); } }, false); } }, parseUrl: function({pathname, search, hash }) { search = search || ''; pathname = pathname.replace(this.basePath, ''); if (search.indexOf('?') !== -1) { search = search.split('?')[1]; } if (pathname.indexOf('/') === 0) { pathname = pathname.substring(1); } const params = new URLSearchParams(search); const f = (name, x) => this.calculateFullSelection(name, x); const parseMode = (x) => (x || '').indexOf('-mode') !== -1 ? 'card' : (x || CncfLandscapeApp.initialMode); const parseCardStyle = (x) => (x || '').indexOf('-mode') !== -1 ? x.replace('-mode', '') : 'card'; const parseParamStyle = (x) => ['logo', 'borderless', 'flat'].indexOf(x) !== -1 ? x : ''; return { zoom: +params.get('zoom') / 100 || 1, fullscreen: params.get('fullscreen') === 'yes', activeSection: hash, mode: parseMode(params.get('format') || pathname) || CncfLandscapeApp.initialMode, cardStyle: parseParamStyle(params.get('style')) || parseCardStyle(pathname), grouping: params.get('grouping') || 'project', sort: params.get('sort') || 'name', category: f('category', params.get('category') || ''), project: f('project', params.get('project') || ''), license: f('license', params.get('license') || ''), organization: f('organization', params.get('organization') || ''), headquarters: f('headquarters', params.get('headquarters') || ''), ['company-type']: f('company-type', params.get('company-type') || ''), industries: f('industries', params.get('industries') || ''), bestpractices: params.get('bestpractices') || '', enduser: params.get('enduser') || '', parent: params.get('parent') || '', language: params.get('language') || '', specification: params.get('specification') || '', selected: params.get('selected') || null, embed: params.has('embed'), showModal: params.has('showmodal'), }; }, propagateStateToUiAndUrl: function() { this.propagateStateToUi(); this.updateUrl(); }, // take a current state, based on it update active tab, filters, and fetch data propagateStateToUi: function() { const assignSingleSelect = (name) => { const value = this.state[name]; const el = document.querySelector(`.select[data-name=${name}]`); el.selectData = el.selectData || JSON.parse(el.getAttribute('data-options')); const selectedItem = el.selectData.find( (x) => x.id === value); el.setAttribute('data-value', selectedItem.id); el.querySelector('option').innerText = selectedItem.label; } const assignMultiSelect = (name) => { const value = this.state[name]; const el = document.querySelector(`.select[data-name=${name}]`); el.selectData = el.selectData || JSON.parse(el.getAttribute('data-options')); el.setAttribute('data-value', value); const valueInfo = this.calculateShortSelection(el); el.querySelector('option').innerText = valueInfo.text; } assignSingleSelect('sort'); assignSingleSelect('grouping'); assignMultiSelect('category'); const isCardMode = CncfLandscapeApp.state.mode === 'card'; if (isCardMode) { document.querySelector('.select[data-name=sort]').classList.remove('select-disabled'); document.querySelector('.select[data-name=grouping]').classList.remove('select-disabled'); document.querySelector('.select[data-name=category]').classList.remove('select-disabled'); } else { document.querySelector('.select[data-name=sort]').classList.add('select-disabled'); document.querySelector('.select[data-name=grouping]').classList.add('select-disabled'); document.querySelector('.select[data-name=category]').classList.add('select-disabled'); } assignMultiSelect('project'); assignMultiSelect('license'); assignMultiSelect('organization'); assignMultiSelect('headquarters'); assignMultiSelect('company-type'); assignMultiSelect('industries'); if (CncfLandscapeApp.state.mode === 'card') { CncfLandscapeApp.activateCardMode(); } else if (CncfLandscapeApp.state.mode === 'guide') { CncfLandscapeApp.activateGuideMode(); } else { CncfLandscapeApp.activateBigPictureMode(CncfLandscapeApp.state.mode); } if (CncfLandscapeApp.state.selected) { CncfLandscapeApp.showSelectedItem(CncfLandscapeApp.state.selected); } else { CncfLandscapeApp.hideSelectedItem(); } }, calculateFullSelection: function(name, value) { const wrapper = document.querySelector(`.select[data-name=${name}]`); wrapper.selectData = wrapper.selectData || JSON.parse(wrapper.getAttribute('data-options')); const selectedIds = value.split(','); const result = []; // parent selected, all children not - make all children selected // parent not selected, some children are - make a parent selected for (let i = 0; i < wrapper.selectData.length; i ++) { let item = wrapper.selectData[i]; if (item.level === 1) { let allChildren = []; let selectedChildren = []; for (let j = i + 1; j < wrapper.selectData.length; j++) { let childItem = wrapper.selectData[j]; if (childItem.level === 1) { break; } if (selectedIds.includes(childItem.id)) { selectedChildren.push(childItem.id); } allChildren.push(childItem.id) } if (selectedChildren.length > 0) { result.push(item.id); result.push(...selectedChildren); } if (allChildren.length > 0 && selectedChildren.length === 0 && selectedIds.includes(item.id)) { result.push(item.id); result.push(...allChildren); } if (allChildren.length === 0 && selectedIds.includes(item.id)) { result.push(item.id); } } } console.info(name, result); return result.join(','); }, // for a given select give an url and a text calculateShortSelection: function(wrapper) { if (typeof wrapper === 'string') { wrapper = document.querySelector(`.select[data-name=${wrapper}]`); } wrapper = wrapper.closest('.select[data-name]'); wrapper.selectData = wrapper.selectData || JSON.parse(wrapper.getAttribute('data-options')); const value = wrapper.getAttribute('data-value') || ''; const selectedIds = value.split(','); let items = []; for (let i = 0; i < wrapper.selectData.length; i ++) { let item = wrapper.selectData[i]; if (item.level === 1 && selectedIds.includes(item.id)) { let children = []; let totalChildren = 0; for (let j = i + 1; j < wrapper.selectData.length; j++) { let childItem = wrapper.selectData[j]; if (childItem.level === 1) { break; } if (selectedIds.includes(childItem.id)) { children.push(childItem); } totalChildren += 1; } if (totalChildren === 0 || children.length === 0 || children.length === totalChildren) { items.push(item); } else { items.push(...children); } } } if (items.length === wrapper.selectData.length || items.length === 0) { return { url: '', text: 'Any' } } else { return { url: items.map( (x) => x.id).join(','), text: items.map( (x) => x.label).join(',') } } }, // which api to call to fetch actual data stringifyApiUrl: function() { const params = {}; const state = this.state; for (let field of ['category', 'project', 'license', 'organization', 'headquarters', 'company-type', 'industries']) { params[field] = CncfLandscapeApp.calculateShortSelection(field).url } // no fields for certain filters yet for (let field of ['sort', 'grouping', 'bestpractices', 'enduser', 'parent', 'language', 'specification']) { params[field] = state[field] } if (state.mode !== 'card') { params.grouping = 'no'; params.category = ''; } params.format = state.mode; const search = new URLSearchParams(params).toString(); return search; }, // update a browser url, should be later compatible with a parseUrl call stringifyBrowserUrl: function(state) { let url = `${this.basePath}/`; if (CncfLandscapeApp.state.mode === 'guide') { return `${this.basePath}/guide` + (CncfLandscapeApp.state.activeSection ? CncfLandscapeApp.state.activeSection : '') ; } else if (CncfLandscapeApp.state.mode === 'card') { url = `${this.basePath}/` + CncfLandscapeApp.state.cardStyle + '-mode'; } else if (CncfLandscapeApp.state.mode !== 'main') { url = `${this.basePath}/` + CncfLandscapeApp.state.mode; } const params = {}; const initialState = CncfLandscapeApp.initialState; for (let field of ['category', 'project', 'license', 'organization', 'headquarters', 'company-type', 'industries']) { if (state[field] !== initialState[field]) { params[field] = CncfLandscapeApp.calculateShortSelection(field).url } } // no fields for certain filters yet for (let field of ['grouping', 'sort', 'selected', 'bestpractices', 'enduser', 'parent', 'language', 'specification', 'fullscreen', 'embed']) { if (state[field] !== initialState[field]) { params[field] = state[field] } } if (state.zoom !== initialState.zoom) { params.zoom = (state.zoom * 100).toFixed(0); } for (let k in params) { if (params[k] === true) { params[k] = 'yes'; } } const search = new URLSearchParams(params).toString().replace(/%2C/g, ','); if (search) { url = url + '?' + search; } return url; }, showSelectedItem: async function(selectedItemId) { if (this.state.embed && !this.state.showModal) { window.parent.postMessage({ type: 'landscapeapp-show', selected: selectedItemId, location: { search: window.location.search, pathname: window.location.pathname } }, '*'); return; } this.selectedItems = this.selectedItems || {}; if (!this.selectedItems[selectedItemId]) { const result = await fetch(`${this.basePath}/data/items/info-${selectedItemId}.html`); const text = await result.text(); this.selectedItems[selectedItemId] = text; } document.querySelector('.modal').style.display=""; document.querySelector('.modal .modal-content').outerHTML = this.selectedItems[selectedItemId]; document.querySelector('body').style.overflow = 'hidden'; if (window.twttr) { window.twttr.widgets.load(); } else { setTimeout( () => window.twttr && window.twttr.widgets.load(), 1000); } //calculate previous and next items; let prevItem = null; let nextItem = null; if (this.state.mode === 'card') { const items = (this.groupedItems || []).flatMap( (x) => x.items); for (let i = 0; i < items.length; i++) { if (items[i].id === selectedItemId) { prevItem = (items[i - 1] || {}).id; nextItem = (items[i + 1] || {}).id; break; } } } else { const selectedItemEl = document.querySelector(`.inner-landscape [data-id=${selectedItemId}]`); const parent = selectedItemEl.closest('.big-picture-section'); const allItems = parent.querySelectorAll('[data-id]'); const index = [].indexOf.call(allItems, selectedItemEl); prevItem = index > 0 ? allItems[index - 1].getAttribute('data-id') : null; nextItem = index < allItems.length - 1 ? allItems[index + 1].getAttribute('data-id') : null; } this.nextItemId = nextItem; this.prevItemId = prevItem; if (nextItem) { document.querySelector('.modal-next').removeAttribute('disabled'); } else { document.querySelector('.modal-next').setAttribute('disabled', ''); } if (prevItem) { document.querySelector('.modal-prev').removeAttribute('disabled'); } else { document.querySelector('.modal-prev').setAttribute('disabled', ''); } }, updateUrl: function() { if (CncfLandscapeApp.state.embed) { return; } const newUrl = CncfLandscapeApp.stringifyBrowserUrl(CncfLandscapeApp.state); if (newUrl !== this.previousUrl) { history.pushState(CncfLandscapeApp.state, '', newUrl); this.previousUrl = newUrl; window.ga('send', 'pageview', newUrl); } }, hideSelectedItem: function() { if (this.state.showModal) { window.parent.postMessage({type: 'landscapeapp-hide'}, '*'); return; } document.querySelector('.modal').style.display="none"; document.querySelector('body').style.overflow = ''; this.updateUrl(); }, fetchApiData: async function() { const search = this.stringifyApiUrl(); const url = `${this.basePath}/api/ids?${search}`; const response = await fetch(url); const json = await response.json(); return json; }, highlightActiveTab: function() { const tabs = document.querySelectorAll('.big-picture-switch a[data-mode]'); for (let tab of tabs) { if (tab.getAttribute('data-mode') === CncfLandscapeApp.state.mode) { tab.classList.add('selected'); } else { tab.classList.remove('selected'); } } }, activateGuideMode: async function() { if (CncfLandscapeApp.state.mode !== 'guide') { CncfLandscapeApp.previousMode = CncfLandscapeApp.state.mode; } CncfLandscapeApp.state.mode = 'guide'; document.querySelector('#home').style.display = "none"; document.querySelector('#guide-page').style.display = ""; const contentEl = document.querySelector('#guide-page'); if (!contentEl.getAttribute('data-loaded')) { const url = `${this.basePath}/data/items/guide.html`; const result = await fetch(url); const text = await result.text(); contentEl.innerHTML = text; contentEl.setAttribute('data-loaded', true); } const links = contentEl.querySelectorAll('a') const canvas = document.createElement('canvas') const ctx = canvas.getContext('2d') const measureTextWidth = (text, font) => { ctx.font = font return ctx.measureText(text).width } links.forEach(linkEl => { linkEl.style.letterSpacing = null const { fontSize, fontFamily, letterSpacing } = window.getComputedStyle(linkEl) const textWidth = measureTextWidth(linkEl.text, `${fontSize} ${fontFamily}`) const hoverWidth = measureTextWidth(linkEl.text, `bold ${fontSize} ${fontFamily}`) const letterSpacingNum = parseFloat(letterSpacing) || 0 linkEl.style.letterSpacing = `${letterSpacingNum + (hoverWidth - textWidth) / (linkEl.text.length - 1)}px` }) CncfLandscapeApp.selectGuideSection(); CncfLandscapeApp.updateUrl(); }, activateBigPictureMode: async function(landscape) { CncfLandscapeApp.state.mode = landscape; document.querySelector('#home').style.display = ""; document.querySelector('#guide-page').style.display = "none"; document.querySelector('.column-content').style.display="none"; document.querySelector('#footer').style.display = "none" document.querySelector('#embedded-footer').style.display = "none" // visibility const landscapes = document.querySelectorAll('.landscape-flex'); for (let l of landscapes) { l.style.display = l.getAttribute('data-mode') === landscape ? '' : 'none'; } this.highlightActiveTab(); this.manageZoomAndFullscreenButtons(); // edge case: we just opened a tab without filters - then just display everything! if (this.state.mode === this.initialMode) { const allowedProps = ['bestpractices', 'enduser', 'parent', 'language', 'specification']; const otherProps = ['project', 'license', 'organization', 'headquarters', 'company-type', 'industries'] let same = true; for (let key of [...allowedProps, ...otherProps]) { if (this.state[key] !== this.initialState[key]) { same = false; } } if (same) { const contentEl = document.querySelector(`.landscape-flex[data-mode=${landscape}]`); const itemElements = [...contentEl.querySelectorAll('[data-id]')]; for (let itemEl of itemElements) { itemEl.style.visibility = ''; } contentEl.querySelector('.inner-landscape').style.display = ""; } } const apiData = await this.fetchApiData(); const bigPictureItems = apiData.items; document.querySelector('h4.summary').innerText = apiData.summaryText; const ids = bigPictureItems[0].items.map( (x) => x.id); const contentEl = document.querySelector(`.landscape-flex[data-mode=${landscape}]`); if (contentEl.querySelector('.inner-landscape').children.length === 0) { const tabEl = document.querySelector(`a[data-mode=${landscape}]`); const url = `${this.basePath}/data/items/landscape-${tabEl.getAttribute('href')}.html` const result = await fetch(url); const text = await result.text(); contentEl.querySelector('.inner-landscape').innerHTML = text; } const itemElements = [...contentEl.querySelectorAll('[data-id]')]; for (let itemEl of itemElements) { itemEl.style.visibility = ids.includes(itemEl.getAttribute('data-id')) ? '' : 'hidden'; } contentEl.querySelector('.inner-landscape').style.display = ""; }, activateCardMode: async function() { const cardStyle = CncfLandscapeApp.state.cardStyle; CncfLandscapeApp.state.mode = 'card'; document.querySelector('#home').style.display = ""; document.querySelector('#guide-page').style.display = "none"; const landscapes = document.querySelectorAll('.landscape-flex'); for (let l of landscapes) { l.style.display = "none"; } document.querySelector('.column-content').style.display= ""; const isEmbed = this.state.embed; document.querySelector('#footer').style.display = isEmbed ? "none" : ""; document.querySelector('#embedded-footer').style.display = isEmbed ? "" : "none"; this.highlightActiveTab(); this.manageZoomAndFullscreenButtons(); if (!this.cards) { const response = await fetch(`${this.basePath}/data/items/cards-${cardStyle}.html`); const allCards = await response.text(); const container = document.createElement('div'); container.innerHTML = allCards; const cardElements = container.querySelectorAll('[data-id]'); let result = {}; for (let card of cardElements) { result[card.getAttribute('data-id')] = card; } this.cards = result; } const apiData = await this.fetchApiData(); this.groupedItems = apiData.items; document.querySelector('h4.summary').innerText = apiData.summaryText; // very simple optimization: // do not change anything if we used exactly same groupedItems last time; if (JSON.stringify(this.groupedItems) === this.lastCards) { return; } const itemsAndHeaders = this.groupedItems.flatMap(groupedItem => { const items = groupedItem.items; const cardElements = items.map( (item) => this.cards[item.id].cloneNode(true)) const buildHeader = function({ header, count, href }) { const div = document.createElement('div'); div.classList.add('sh_wrapper'); div.innerHTML = ` <div style="font-size: 24px; padding-left: 16px; line-height: 48px; font-weight: 500;"> ${ href ? `<a data-type="internal" href=${href}>${header}</a>` : `<span>${header}</span>` } <span class="items-cont"> (${count})</span> </div> `; return div; }; const header = items.length > 0 ? buildHeader({ header: groupedItem.header, count: groupedItem.items.length, href: groupedItem.href}) : null; return [ header, ...cardElements]; }); const fragment = document.createDocumentFragment(); for (let item of itemsAndHeaders) { if (item) { fragment.appendChild(item); } } document.querySelector('.column-content').replaceChildren(fragment); this.lastCards = JSON.stringify(this.groupedItems); if (this.state.selected) { this.propagateStateToUi(); } } } document.addEventListener('DOMContentLoaded', () => CncfLandscapeApp.init()); CncfLandscapeApp.initialMode = 'main'; CncfLandscapeApp.basePath = ''; </script> </head> <body style="opacity: 0;"> <div class="select-popup" style="display: none;"> <div class="select-popup-body" ></div> </div> <div class="modal" style="display: none;"> <div class="modal-shadow" ></div> <div class="modal-container"> <div class="modal-body"> <div class="modal-buttons"> <a class="modal-close">x</a> <span class="modal-prev"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"></path></svg> </span> <span class="modal-next"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"></path></svg> </span> </div> <div class="modal-content"></div> </div> </div> </div> <div id="guide-page" style="display: none;" data-loaded=""> <div class="side-content"> <span class="landscape-logo"> <a aria-label="reset filters" class="nav-link" href="/"> <img alt="landscape logo" src="/images/left-logo.svg" /> </a> </span> <div class="guide-sidebar"> <div class="sidebar-collapse">X</div> <div class="guide-toggle"> <span class="toggle-item "><a href="./">Landscape</a></span> <span class="toggle-item active">Guide</span> </div> </div> </div> </div> <div id="home" style="display: " class="app"> <div class="app-overlay"></div> <div class="main-parent"> <button class="sidebar-show" role="none" aria-label="show sidebar"><svg viewBox="0 0 24 24"><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"></path></svg> </button> <div class="header_container"> <div class="header"> <span class="landscape-logo"> <a aria-label="reset filters" class="nav-link" href="/"> <img alt="landscape logo" src="/images/left-logo.svg" /> </a> </span> <a rel="noopener noreferrer noopener noreferrer" class="landscapeapp-logo" title="GraphQL" target="_blank" href="https://graphql.org"> <img src="/images/right-logo.svg" title="GraphQL" /> </a> </div> </div> <div class="sidebar"> <div class="sidebar-scroll"> <div class="sidebar-collapse">+</div> <a class="filters-action reset-filters"><svg viewBox="0 0 24 24"><path d="M14 12c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2 2-.9 2-2zm-2-9c-4.97 0-9 4.03-9 9H0l4 4 4-4H5c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.51 0-2.91-.49-4.06-1.3l-1.42 1.44C8.04 20.3 9.94 21 12 21c4.97 0 9-4.03 9-9s-4.03-9-9-9z"/></svg> <span>Reset Filters</span> </a> <div class="select" data-type="single" data-name="grouping" data-options="[{"id":"no","label":"No Grouping"},{"id":"category","label":"Category"},{"id":"project","label":"GraphQL Relation"},{"id":"license","label":"License"},{"id":"organization","label":"Organization"},{"id":"headquarters","label":"Headquarters Location"}]"> <select class="select-text" required> <option value="1" selected>Value</option> </select> <span class="select-highlight"></span> <span class="select-bar"></span> <label class="select-label">Grouping</label> </div> <div class="select" data-type="single" data-name="sort" data-options="[{"id":"name","label":"Alphabetical (a to z)"},{"id":"stars","label":"Stars (high to low)"},{"id":"amount","label":"Funding / Market Cap (high to low)"},{"id":"first-commit","label":"Project Started (earlier to later)"},{"id":"latest-commit","label":"Latest Commit (earlier to later)"},{"id":"latest-tweet","label":"Latest Tweet (earlier to later)"},{"id":"contributors","label":"Contributors # (high to low)"},{"id":"commits","label":"Commits this year (high to low)"}]"> <select class="select-text" required> <option value="1" selected>Value</option> </select> <span class="select-highlight"></span> <span class="select-bar"></span> <label class="select-label">Sort By</label> </div> <div class="select" data-type="multi" data-name="category" data-options="[{"id":"projects","label":"Projects","level":1},{"id":"spec","label":"Spec","level":2},{"id":"tools","label":"Tools","level":2},{"id":"databases","label":"Databases","level":1},{"id":"databases","label":"Databases","level":2},{"id":"services","label":"Services","level":1},{"id":"services","label":"Services","level":2},{"id":"graph-ql-foundation-member","label":"GraphQL Foundation Member","level":1},{"id":"general","label":"General","level":2},{"id":"graph-ql-adopter","label":"GraphQL Adopter","level":1},{"id":"graph-ql-adopter","label":"GraphQL Adopter","level":2}]"> <select class="select-text" required> <option value="1" selected>Value</option> </select> <span class="select-highlight"></span> <span class="select-bar"></span> <label class="select-label">Category</label> </div> <div class="select" data-type="multi" data-name="project" data-options="[{"id":"hosted","label":"GraphQL Foundation Projects","level":1},{"id":"foundationproject","label":"GraphQL Foundation Projects","level":2},{"id":"company","label":"GraphQL Foundation Member","level":1},{"id":"member","label":"GraphQL Foundation Member Products/Projects","level":1},{"id":"no","label":"Non-GraphQL Foundation Member Products/Projects","level":1}]"> <select class="select-text" required> <option value="1" selected>Value</option> </select> <span class="select-highlight"></span> <span class="select-bar"></span> <label class="select-label">Project</label> </div> <div class="select" data-type="multi" data-name="license" data-options="[{"id":"not-open-source","label":"Not Open Source","level":1},{"id":"open-source","label":"Open Source","level":1},{"id":"apache-license-2-0","label":"Apache License 2.0","level":2},{"id":"bsd-3-clause-new-or-revised-license","label":"BSD 3-Clause \"New\" or \"Revised\" License","level":2},{"id":"mit-license","label":"MIT License","level":2},{"id":"mozilla-public-license-2-0","label":"Mozilla Public License 2.0","level":2},{"id":"other","label":"Other","level":2},{"id":"unknown-license","label":"Unknown License","level":2}]"> <select class="select-text" required> <option value="1" selected>Value</option> </select> <span class="select-highlight"></span> <span class="select-bar"></span> <label class="select-label">License</label> </div> <div class="select" data-type="multi" data-name="organization" data-options="[{"id":"1stdibs","label":"1stdibs","level":1},{"id":"20-minutes","label":"20 minutes","level":1},{"id":"8base","label":"8base","level":1},{"id":"99designs","label":"99designs","level":1},{"id":"a-day-roi","label":"A day roi","level":1},{"id":"after-ship","label":"AfterShip","level":1},{"id":"airbnb","label":"Airbnb","level":1},{"id":"alembic","label":"Alembic","level":1},{"id":"allocine","label":"Allocine","level":1},{"id":"alpha-sights","label":"AlphaSights","level":1},{"id":"amazon-web-services","label":"Amazon Web Services","level":1},{"id":"amplitude","label":"Amplitude","level":1},{"id":"ants","label":"ANTS","level":1},{"id":"apollo","label":"Apollo","level":1},{"id":"appier","label":"Appier","level":1},{"id":"arango-db","label":"ArangoDB","level":1},{"id":"artsy","label":"Artsy","level":1},{"id":"assertible","label":"Assertible","level":1},{"id":"atlassian","label":"Atlassian","level":1},{"id":"attendify","label":"Attendify","level":1},{"id":"audi","label":"Audi","level":1},{"id":"auto-guru","label":"AutoGuru","level":1},{"id":"bazinga-technologies","label":"bazinga! Technologies","level":1},{"id":"better-pt","label":"Better PT","level":1},{"id":"braintree","label":"Braintree","level":1},{"id":"buildkite","label":"Buildkite","level":1},{"id":"bynder","label":"Bynder","level":1},{"id":"cheddar","label":"Cheddar","level":1},{"id":"cherre","label":"Cherre","level":1},{"id":"circle-hd","label":"CircleHD","level":1},{"id":"cloverleaf-me","label":"Cloverleaf.me","level":1},{"id":"club-med","label":"Club Med","level":1},{"id":"colectica","label":"Colectica","level":1},{"id":"commercetools","label":"commercetools","level":1},{"id":"compara-online","label":"ComparaOnline","level":1},{"id":"conduit-analytics","label":"Conduit Analytics","level":1},{"id":"configure-one","label":"Configure One","level":1},{"id":"copilot-travel-inc","label":"COPILOT TRAVEL Inc","level":1},{"id":"coursera","label":"Coursera","level":1},{"id":"credit-karma","label":"Credit Karma","level":1},{"id":"cube-dev","label":"Cube Dev","level":1},{"id":"curio","label":"Curio","level":1},{"id":"dailymotion","label":"Dailymotion","level":1},{"id":"devops-international-bv","label":"DevopsInternational BV","level":1},{"id":"dgraph-labs","label":"Dgraph Labs","level":1},{"id":"directlyrics","label":"Directlyrics","level":1},{"id":"drift","label":"Drift","level":1},{"id":"due-dil","label":"DueDil","level":1},{"id":"easy-carros","label":"Easy Carros","level":1},{"id":"ediket","label":"Ediket","level":1},{"id":"elementl","label":"Elementl","level":1},{"id":"escape","label":"Escape","level":1},{"id":"event-one","label":"eventOne","level":1},{"id":"expert360","label":"Expert360","level":1},{"id":"fair-consulting-group","label":"FAIR Consulting Group","level":1},{"id":"fairfax-media","label":"Fairfax Media","level":1},{"id":"fauna","label":"Fauna","level":1},{"id":"file-jet","label":"FileJet","level":1},{"id":"forward-networks","label":"Forward Networks","level":1},{"id":"generation-tux","label":"Generation Tux","level":1},{"id":"get-ninjas","label":"GetNinjas","level":1},{"id":"git-hub","label":"GitHub","level":1},{"id":"goalify","label":"Goalify","level":1},{"id":"goldman-sachs","label":"Goldman Sachs","level":1},{"id":"grafbase","label":"Grafbase","level":1},{"id":"graph-ql-foundation","label":"GraphQL Foundation","level":1},{"id":"hackages","label":"Hackages","level":1},{"id":"hasura","label":"Hasura","level":1},{"id":"hij-up","label":"HijUp","level":1},{"id":"housing-anywhere","label":"HousingAnywhere","level":1},{"id":"hudl","label":"Hudl","level":1},{"id":"hygraph","label":"Hygraph","level":1},{"id":"ibm","label":"IBM","level":1},{"id":"instacart","label":"Instacart","level":1},{"id":"instana","label":"Instana","level":1},{"id":"intuit","label":"Intuit","level":1},{"id":"klm-royal-dutch-airlines","label":"KLM Royal Dutch Airlines","level":1},{"id":"kraken-d","label":"KrakenD","level":1},{"id":"loggi","label":"Loggi","level":1},{"id":"lyft","label":"Lyft","level":1},{"id":"magento-commerce","label":"Magento Commerce","level":1},{"id":"magic-stack","label":"MagicStack","level":1},{"id":"meta","label":"Meta","level":1},{"id":"microsoft","label":"Microsoft","level":1},{"id":"nash-tech","label":"NashTech","level":1},{"id":"nbc-universal","label":"NBCUniversal","level":1},{"id":"neo4j","label":"Neo4j","level":1},{"id":"new-relic","label":"New Relic","level":1},{"id":"nhost","label":"Nhost","level":1},{"id":"northflank","label":"Northflank","level":1},{"id":"one-medical","label":"One Medical","level":1},{"id":"pay-pal","label":"PayPal","level":1},{"id":"pinterest","label":"Pinterest","level":1},{"id":"pixel-tonic","label":"Pixel & Tonic","level":1},{"id":"platformatic","label":"Platformatic","level":1},{"id":"pluralsight","label":"Pluralsight","level":1},{"id":"postman","label":"Postman","level":1},{"id":"prisma","label":"Prisma","level":1},{"id":"rakuten","label":"Rakuten","level":1},{"id":"research-gate","label":"ResearchGate","level":1},{"id":"salsify","label":"Salsify","level":1},{"id":"sap","label":"SAP","level":1},{"id":"satispay","label":"Satispay","level":1},{"id":"screen-cloud","label":"ScreenCloud","level":1},{"id":"serverless","label":"Serverless","level":1},{"id":"shopify","label":"Shopify","level":1},{"id":"solo-io","label":"Solo.io","level":1},{"id":"stack-share","label":"StackShare","level":1},{"id":"starbucks","label":"Starbucks","level":1},{"id":"stellate","label":"Stellate","level":1},{"id":"step-zen","label":"StepZen","level":1},{"id":"supply-com","label":"SUPPLY.com","level":1},{"id":"swapcard","label":"Swapcard","level":1},{"id":"tailcall","label":"Tailcall","level":1},{"id":"the-guild","label":"The Guild","level":1},{"id":"the-new-york-times","label":"The New York Times","level":1},{"id":"travaux-com","label":"Travaux.Com","level":1},{"id":"tridge","label":"Tridge","level":1},{"id":"twitter","label":"Twitter","level":1},{"id":"tyk","label":"Tyk","level":1},{"id":"type-graph-ql","label":"TypeGraphQL","level":1},{"id":"vazco","label":"Vazco","level":1},{"id":"wayfair","label":"Wayfair","level":1},{"id":"weaviate","label":"Weaviate","level":1},{"id":"werkspot","label":"Werkspot","level":1},{"id":"world-kinect-corporation","label":"World Kinect Corporation","level":1},{"id":"wunder-graph","label":"WunderGraph","level":1},{"id":"yelp","label":"Yelp","level":1},{"id":"yugabyte","label":"Yugabyte","level":1}]"> <select class="select-text" required> <option value="1" selected>Value</option> </select> <span class="select-highlight"></span> <span class="select-bar"></span> <label class="select-label">Organization</label> </div> <div class="select" data-type="multi" data-name="headquarters" data-options="[{"id":"australia","label":"Australia","level":1},{"id":"fitzroy-australia","label":"Fitzroy","level":2},{"id":"gold-coast-australia","label":"Gold Coast","level":2},{"id":"sydney-australia","label":"Sydney","level":2},{"id":"belgium","label":"Belgium","level":1},{"id":"brussels-belgium","label":"Brussels","level":2},{"id":"brazil","label":"Brazil","level":1},{"id":"brasil-brazil","label":"Brasil","level":2},{"id":"s-o-paulo-brazil","label":"S茫o Paulo","level":2},{"id":"canada","label":"Canada","level":1},{"id":"ottawa-canada","label":"Ottawa","level":2},{"id":"toronto-canada","label":"Toronto","level":2},{"id":"vancouver-canada","label":"Vancouver","level":2},{"id":"chile","label":"Chile","level":1},{"id":"santiago-chile","label":"Santiago","level":2},{"id":"france","label":"France","level":1},{"id":"aix-en-provence-france","label":"Aix-en-provence","level":2},{"id":"paris-france","label":"Paris","level":2},{"id":"germany","label":"Germany","level":1},{"id":"berlin-germany","label":"Berlin","level":2},{"id":"m-nchen-germany","label":"M眉nchen","level":2},{"id":"walldorf-germany","label":"Walldorf","level":2},{"id":"hong-kong","label":"Hong Kong","level":1},{"id":"tsuen-wan-hong-kong","label":"Tsuen Wan","level":2},{"id":"india","label":"India","level":1},{"id":"bangalore-india","label":"Bangalore","level":2},{"id":"mumbai-india","label":"Mumbai","level":2},{"id":"indonesia","label":"Indonesia","level":1},{"id":"jakarta-indonesia","label":"Jakarta","level":2},{"id":"italy","label":"Italy","level":1},{"id":"milan-italy","label":"Milan","level":2},{"id":"japan","label":"Japan","level":1},{"id":"tokyo-japan","label":"Tokyo","level":2},{"id":"poland","label":"Poland","level":1},{"id":"katowice-poland","label":"Katowice","level":2},{"id":"wroclaw-poland","label":"Wroclaw","level":2},{"id":"slovakia-slovak-republic","label":"Slovakia (Slovak Republic)","level":1},{"id":"bratislava-slovakia-slovak-republic","label":"Bratislava","level":2},{"id":"south-korea","label":"South Korea","level":1},{"id":"seoul-south-korea","label":"Seoul","level":2},{"id":"spain","label":"Spain","level":1},{"id":"barcelona-spain","label":"Barcelona","level":2},{"id":"sweden","label":"Sweden","level":1},{"id":"stockholm-sweden","label":"Stockholm","level":2},{"id":"taiwan","label":"Taiwan","level":1},{"id":"taipei-taiwan","label":"Taipei","level":2},{"id":"the-netherlands","label":"The Netherlands","level":1},{"id":"amsterdam-the-netherlands","label":"Amsterdam","level":2},{"id":"rotterdam-the-netherlands","label":"Rotterdam","level":2},{"id":"schiphol-the-netherlands","label":"Schiphol","level":2},{"id":"united-kingdom","label":"United Kingdom","level":1},{"id":"london-united-kingdom","label":"London","level":2},{"id":"united-states","label":"United States","level":1},{"id":"campbell-california","label":"Campbell, California","level":2},{"id":"menlo-park-california","label":"Menlo Park, California","level":2},{"id":"mountain-view-california","label":"Mountain View, California","level":2},{"id":"oakland-california","label":"Oakland, California","level":2},{"id":"san-francisco-california","label":"San Francisco, California","level":2},{"id":"san-jose-california","label":"San Jose, California","level":2},{"id":"san-mateo-california","label":"San Mateo, California","level":2},{"id":"santa-clara-california","label":"Santa Clara, California","level":2},{"id":"sunnyvale-california","label":"Sunnyvale, California","level":2},{"id":"middletown-delaware","label":"Middletown, Delaware","level":2},{"id":"miami-florida","label":"Miami, Florida","level":2},{"id":"atlanta-georgia","label":"Atlanta, Georgia","level":2},{"id":"chicago-illinois","label":"Chicago, Illinois","level":2},{"id":"oak-brook-illinois","label":"Oak Brook, Illinois","level":2},{"id":"greenfield-indiana","label":"Greenfield, Indiana","level":2},{"id":"louisville-kentucky","label":"Louisville, Kentucky","level":2},{"id":"boston-massachusetts","label":"Boston, Massachusetts","level":2},{"id":"cambridge-massachusetts","label":"Cambridge, Massachusetts","level":2},{"id":"minneapolis-minnesota","label":"Minneapolis, Minnesota","level":2},{"id":"lincoln-nebraska","label":"Lincoln, Nebraska","level":2},{"id":"armonk-new-york","label":"Armonk, New York","level":2},{"id":"new-york-new-york","label":"New York, New York","level":2},{"id":"cincinnati-ohio","label":"Cincinnati, Ohio","level":2},{"id":"bend-oregon","label":"Bend, Oregon","level":2},{"id":"houston-texas","label":"Houston, Texas","level":2},{"id":"draper-utah","label":"Draper, Utah","level":2},{"id":"herndon-virginia","label":"Herndon, Virginia","level":2},{"id":"redmond-washington","label":"Redmond, Washington","level":2},{"id":"seattle-washington","label":"Seattle, Washington","level":2},{"id":"vietnam","label":"Vietnam","level":1},{"id":"ho-chi-minh-city-vietnam","label":"Ho Chi Minh City","level":2},{"id":"undefined","label":"undefined","level":1},{"id":"n-a","label":" N/A","level":2}]"> <select class="select-text" required> <option value="1" selected>Value</option> </select> <span class="select-highlight"></span> <span class="select-bar"></span> <label class="select-label">Headquarters</label> </div> <div class="select" data-type="multi" data-name="company-type" data-options="[{"id":"for-profit","label":"For Profit","level":1},{"id":"non-profit","label":"Non Profit","level":1}]"> <select class="select-text" required> <option value="1" selected>Value</option> </select> <span class="select-highlight"></span> <span class="select-bar"></span> <label class="select-label">Company Type</label> </div> <div class="select" data-type="multi" data-name="industries" data-options="[{"id":"accounting","label":"Accounting","level":1},{"id":"advertising","label":"Advertising","level":1},{"id":"advice","label":"Advice","level":1},{"id":"agriculture","label":"Agriculture","level":1},{"id":"ag-tech","label":"AgTech","level":1},{"id":"analytics","label":"Analytics","level":1},{"id":"application-performance-management","label":"Application Performance Management","level":1},{"id":"apps","label":"Apps","level":1},{"id":"art","label":"Art","level":1},{"id":"artificial-intelligence","label":"Artificial Intelligence","level":1},{"id":"augmented-reality","label":"Augmented Reality","level":1},{"id":"automotive","label":"Automotive","level":1},{"id":"autonomous-vehicles","label":"Autonomous Vehicles","level":1},{"id":"b2-b","label":"B2B","level":1},{"id":"banking","label":"Banking","level":1},{"id":"big-data","label":"Big Data","level":1},{"id":"billing","label":"Billing","level":1},{"id":"blogging-platforms","label":"Blogging Platforms","level":1},{"id":"brand-marketing","label":"Brand Marketing","level":1},{"id":"broadcasting","label":"Broadcasting","level":1},{"id":"business-development","label":"Business Development","level":1},{"id":"business-information-systems","label":"Business Information Systems","level":1},{"id":"business-intelligence","label":"Business Intelligence","level":1},{"id":"classifieds","label":"Classifieds","level":1},{"id":"clinical-trials","label":"Clinical Trials","level":1},{"id":"cloud-computing","label":"Cloud Computing","level":1},{"id":"cloud-data-services","label":"Cloud Data Services","level":1},{"id":"cloud-infrastructure","label":"Cloud Infrastructure","level":1},{"id":"cms","label":"CMS","level":1},{"id":"coffee","label":"Coffee","level":1},{"id":"collaboration","label":"Collaboration","level":1},{"id":"commercial-real-estate","label":"Commercial Real Estate","level":1},{"id":"computer","label":"Computer","level":1},{"id":"consulting","label":"Consulting","level":1},{"id":"consumer-applications","label":"Consumer Applications","level":1},{"id":"content","label":"Content","level":1},{"id":"content-creators","label":"Content Creators","level":1},{"id":"content-discovery","label":"Content Discovery","level":1},{"id":"credit","label":"Credit","level":1},{"id":"credit-cards","label":"Credit Cards","level":1},{"id":"crm","label":"CRM","level":1},{"id":"customer-service","label":"Customer Service","level":1},{"id":"data-integration","label":"Data Integration","level":1},{"id":"data-management","label":"Data Management","level":1},{"id":"data-visualization","label":"Data Visualization","level":1},{"id":"database","label":"Database","level":1},{"id":"delivery-service","label":"Delivery Service","level":1},{"id":"developer-ap-is","label":"Developer APIs","level":1},{"id":"developer-platform","label":"Developer Platform","level":1},{"id":"developer-tools","label":"Developer Tools","level":1},{"id":"digital-marketing","label":"Digital Marketing","level":1},{"id":"digital-media","label":"Digital Media","level":1},{"id":"digital-signage","label":"Digital Signage","level":1},{"id":"e-commerce","label":"E-Commerce","level":1},{"id":"e-commerce-platforms","label":"E-Commerce Platforms","level":1},{"id":"e-learning","label":"E-Learning","level":1},{"id":"ed-tech","label":"EdTech","level":1},{"id":"education","label":"Education","level":1},{"id":"electric-vehicle","label":"Electric Vehicle","level":1},{"id":"electronics","label":"Electronics","level":1},{"id":"energy","label":"Energy","level":1},{"id":"energy-management","label":"Energy Management","level":1},{"id":"enterprise-software","label":"Enterprise Software","level":1},{"id":"event-management","label":"Event Management","level":1},{"id":"events","label":"Events","level":1},{"id":"fashion","label":"Fashion","level":1},{"id":"finance","label":"Finance","level":1},{"id":"financial-services","label":"Financial Services","level":1},{"id":"fin-tech","label":"FinTech","level":1},{"id":"food-and-beverage","label":"Food and Beverage","level":1},{"id":"fuel","label":"Fuel","level":1},{"id":"furniture","label":"Furniture","level":1},{"id":"graphic-design","label":"Graphic Design","level":1},{"id":"grocery","label":"Grocery","level":1},{"id":"hardware","label":"Hardware","level":1},{"id":"health-care","label":"Health Care","level":1},{"id":"home-decor","label":"Home Decor","level":1},{"id":"hospitality","label":"Hospitality","level":1},{"id":"human-resources","label":"Human Resources","level":1},{"id":"information-services","label":"Information Services","level":1},{"id":"information-technology","label":"Information Technology","level":1},{"id":"infrastructure","label":"Infrastructure","level":1},{"id":"insurance","label":"Insurance","level":1},{"id":"internet","label":"Internet","level":1},{"id":"internet-of-things","label":"Internet of Things","level":1},{"id":"it-infrastructure","label":"IT Infrastructure","level":1},{"id":"knowledge-management","label":"Knowledge Management","level":1},{"id":"language-learning","label":"Language Learning","level":1},{"id":"lead-generation","label":"Lead Generation","level":1},{"id":"leisure","label":"Leisure","level":1},{"id":"local-advertising","label":"Local Advertising","level":1},{"id":"logistics","label":"Logistics","level":1},{"id":"machine-learning","label":"Machine Learning","level":1},{"id":"management-information-systems","label":"Management Information Systems","level":1},{"id":"manufacturing","label":"Manufacturing","level":1},{"id":"marketing","label":"Marketing","level":1},{"id":"marketing-automation","label":"Marketing Automation","level":1},{"id":"marketplace","label":"Marketplace","level":1},{"id":"media-and-entertainment","label":"Media and Entertainment","level":1},{"id":"medical","label":"Medical","level":1},{"id":"medical-device","label":"Medical Device","level":1},{"id":"messaging","label":"Messaging","level":1},{"id":"mobile","label":"Mobile","level":1},{"id":"mobile-apps","label":"Mobile Apps","level":1},{"id":"mobile-payments","label":"Mobile Payments","level":1},{"id":"music","label":"Music","level":1},{"id":"network-security","label":"Network Security","level":1},{"id":"news","label":"News","level":1},{"id":"oil-and-gas","label":"Oil and Gas","level":1},{"id":"online-auctions","label":"Online Auctions","level":1},{"id":"online-portals","label":"Online Portals","level":1},{"id":"open-source","label":"Open Source","level":1},{"id":"operating-systems","label":"Operating Systems","level":1},{"id":"outsourcing","label":"Outsourcing","level":1},{"id":"paa-s","label":"PaaS","level":1},{"id":"payments","label":"Payments","level":1},{"id":"personal-finance","label":"Personal Finance","level":1},{"id":"private-social-networking","label":"Private Social Networking","level":1},{"id":"product-management","label":"Product Management","level":1},{"id":"productivity-tools","label":"Productivity Tools","level":1},{"id":"professional-networking","label":"Professional Networking","level":1},{"id":"professional-services","label":"Professional Services","level":1},{"id":"project-management","label":"Project Management","level":1},{"id":"property-management","label":"Property Management","level":1},{"id":"publishing","label":"Publishing","level":1},{"id":"quality-assurance","label":"Quality Assurance","level":1},{"id":"real-estate","label":"Real Estate","level":1},{"id":"real-time","label":"Real Time","level":1},{"id":"restaurants","label":"Restaurants","level":1},{"id":"retail","label":"Retail","level":1},{"id":"ride-sharing","label":"Ride Sharing","level":1},{"id":"risk-management","label":"Risk Management","level":1},{"id":"saa-s","label":"SaaS","level":1},{"id":"sales-automation","label":"Sales Automation","level":1},{"id":"search-engine","label":"Search Engine","level":1},{"id":"shipping","label":"Shipping","level":1},{"id":"shopping","label":"Shopping","level":1},{"id":"sms","label":"SMS","level":1},{"id":"social-bookmarking","label":"Social Bookmarking","level":1},{"id":"social-media","label":"Social Media","level":1},{"id":"social-network","label":"Social Network","level":1},{"id":"software","label":"Software","level":1},{"id":"software-engineering","label":"Software Engineering","level":1},{"id":"solar","label":"Solar","level":1},{"id":"sports","label":"Sports","level":1},{"id":"supply-chain-management","label":"Supply Chain Management","level":1},{"id":"sustainability","label":"Sustainability","level":1},{"id":"tea","label":"Tea","level":1},{"id":"tourism","label":"Tourism","level":1},{"id":"trading-platform","label":"Trading Platform","level":1},{"id":"transaction-processing","label":"Transaction Processing","level":1},{"id":"transportation","label":"Transportation","level":1},{"id":"travel","label":"Travel","level":1},{"id":"travel-accommodations","label":"Travel Accommodations","level":1},{"id":"venture-capital","label":"Venture Capital","level":1},{"id":"video","label":"Video","level":1},{"id":"video-streaming","label":"Video Streaming","level":1},{"id":"virtual-reality","label":"Virtual Reality","level":1},{"id":"wearables","label":"Wearables","level":1},{"id":"web-apps","label":"Web Apps","level":1},{"id":"web-development","label":"Web Development","level":1},{"id":"wellness","label":"Wellness","level":1}]"> <select class="select-text" required> <option value="1" selected>Value</option> </select> <span class="select-highlight"></span> <span class="select-bar"></span> <label class="select-label">Industry</label> </div> <div class="sidebar-presets"> <h4>Example filters</h4> <a data-type="internal" class="preset" href="/format=card-mode&grouping=no&license=open-source&sort=first-commit"> Open source cards by age </a> <a data-type="internal" class="preset" href="/license=apache-license-2-0"> Apache-2.0 landscape </a> <a data-type="internal" class="preset" href="/format=card-mode&grouping=category"> Cards in categories </a> <a data-type="internal" class="preset" href="/format=card-mode&grouping=no&sort=stars"> Cards by stars </a> <a data-type="internal" class="preset" href="/format=card-mode&grouping=headquarters"> Group by location </a> <a data-type="internal" class="preset" href="/format=card-mode&grouping=no&sort=amount"> Cards by MCap/Funding </a> </div> <a data-type="external" target="_blank" class="sidebar-event" href="https://graphql.org/foundation/join" title="Become a member!"> <img src="/images/support-graphql.svg" alt="Become a member!" /> </a> </div> </div> <div class="app-overlay"></div> <div class="main"> <div class="disclaimer"> <span> <h1>GraphQL Landscape</h1> The GraphQL Foundation landscape (<a target="_blank" href="images/landscape.png">png</a>, <a target="_blank" href="images/landscape.pdf">pdf</a>) is dynamically generated below. It is modeled after the <a href="http://landscape.cncf.io">CNCF landscape</a> and based on the same open source code. </span> Please <a data-type="external" target="_blank" href="https://github.com/graphql/graphql-landscape">open</a> a pull request to correct any issues. Greyed logos are not open source. Last Updated: 2024-11-17T04:08:23. </div> <h4 class="summary"></h4> <div class="cards-section"> <div class="big-picture-switch big-picture-switch-normal"> <a href="landscape" data-mode="main"><div>Landscape</div></a> <a href="card-mode" data-mode="card"><div>Card Mode</div></a> </div> <div class="right-buttons"> <div class="fullscreen-exit"><svg viewBox="0 0 24 24"><path d="M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"></path></svg> </div> <div class="fullscreen-enter"><svg viewBox="0 0 24 24"><path d="M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"></path></svg> </div> <div class="zoom-out"><svg viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm5 11H7v-2h10v2z"></path></svg> </div> <div class="zoom-reset"></div> <div class="zoom-in"><svg viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm5 11h-4v4h-2v-4H7v-2h4V7h2v4h4v2z"></path></svg> </div> </div> <div data-mode="main" class="landscape-flex"> <div class="landscape-wrapper"> <div class="inner-landscape" style="padding: 10px; display: none;"> <div style="position: relative;"> <div style=" width: 475px; left: 0px; height: 160px; top: 0px; position: absolute; " class="big-picture-section"> <div style=" position: absolute; background: rgb(4,81,49); top: 20px; bottom: 0; left: 0; right: 0; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.2); padding: 1px; " > <div style=" top: 0; bottom: 0; left: 0; width: 30px; position: absolute; writing-mode: vertical-rl; transform: rotate(180deg); text-align: center; display: flex; align-items: center; justify-content: center; "> <a data-type="internal" href="/card-mode?category=projects&grouping=category" style=" display: flex; justify-content: center; align-items: center; text-align: center; width: 100%; flex: 1; font-size: 12px; color: #ffffff; background: none " >Projects</a> </div> <div style=" margin-left: 30px; height: 100%; display: flex; justify-content: space-evenly; background: white; "> <div style=" width: 84px; position: relative; overflow: visible; padding: 0; box-sizing: border-box; "> <div style=" position: absolute; top: -30px; left: 0; right: 0; height: 30px; display: flex; align-items: center; justify-content: center; text-align: center; "> <a data-type="internal" href="/card-mode?category=spec&grouping=category" class="white-link">Spec</a> </div> <div style=" display: grid; height: 100%; grid-template-columns: repeat(2, 34px); grid-auto-rows: 30px; justify-content: space-evenly; align-content: space-evenly;"> <div class="wrapper-large-4 item-wrapper oss"> <div data-id="graph-ql-spec" class="large-item large-item-4 item" style="background: rgb(24,54,114)"> <img loading="lazy" src="/logos/graph-ql-spec.svg" alt="GraphQL Spec" style=" width: calc(100% - 4px); height: calc(100% - 14px); padding: 5px; margin: 2px 2px 0 2px; "/> <div class="label" style=" position: absolute; bottom: 0; width: 100%; height: 18px; text-align: center; vertical-align: middle; background: rgb(24,54,114); color: white; font-size: 6.7px; line-height: 9px; ">GraphQL Foundation Project</div> </div> </div> </div> </div> <div style=" width: 2px; margin-top: 12px; height: calc(100% - 24px); border-left: 2px solid rgb(4,81,49) "></div> <div style=" width: 339px; position: relative; overflow: visible; padding: 0; box-sizing: border-box; "> <div style=" position: absolute; top: -30px; left: 0; right: 0; height: 30px; display: flex; align-items: center; justify-content: center; text-align: center; "> <a data-type="internal" href="/card-mode?category=tools&grouping=category" class="white-link">Tools</a> </div> <div style=" display: grid; height: 100%; grid-template-columns: repeat(8, 34px); grid-auto-rows: 30px; justify-content: space-evenly; align-content: space-evenly;"> <div class="wrapper-large-4 item-wrapper oss"> <div data-id="graphi-ql" class="large-item large-item-4 item" style="background: rgb(24,54,114)"> <img loading="lazy" src="/logos/graphi-ql.svg" alt="GraphiQL" style=" width: calc(100% - 4px); height: calc(100% - 14px); padding: 5px; margin: 2px 2px 0 2px; "/> <div class="label" style=" position: absolute; bottom: 0; width: 100%; height: 18px; text-align: center; vertical-align: middle; background: rgb(24,54,114); color: white; font-size: 6.7px; line-height: 9px; ">GraphQL Foundation Project</div> </div> </div><div class=" item-wrapper oss"> <img data-id="apollo-angular" loading="lazy" class="item small-item" src="/logos/apollo-angular.svg" alt="Apollo Angular" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="apollo-cli" loading="lazy" class="item small-item" src="/logos/apollo-cli.svg" alt="Apollo CLI" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="envelop" loading="lazy" class="item small-item" src="/logos/envelop.svg" alt="Envelop" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="graph-ql-cli" loading="lazy" class="item small-item" src="/logos/graph-ql-cli.svg" alt="GraphQL CLI" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="graph-ql-code-generator" loading="lazy" class="item small-item" src="/logos/graph-ql-code-generator.svg" alt="GraphQL Code Generator" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="graph-ql-config" loading="lazy" class="item small-item" src="/logos/graph-ql-config.svg" alt="GraphQL Config" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="graph-ql-helix" loading="lazy" class="item small-item" src="/logos/graph-ql-helix.svg" alt="GraphQL Helix" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="graph-ql-inspector" loading="lazy" class="item small-item" src="/logos/graph-ql-inspector.svg" alt="GraphQL Inspector" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="graph-ql-mesh" loading="lazy" class="item small-item" src="/logos/graph-ql-mesh.svg" alt="GraphQL Mesh" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="graph-ql-modules" loading="lazy" class="item small-item" src="/logos/graph-ql-modules.svg" alt="GraphQL Modules" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="graph-ql-scalars" loading="lazy" class="item small-item" src="/logos/graph-ql-scalars.svg" alt="GraphQL Scalars" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="graph-ql-shield" loading="lazy" class="item small-item" src="/logos/graph-ql-shield.svg" alt="GraphQL Shield" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="graph-ql-tools-by-the-guild" loading="lazy" class="item small-item" src="/logos/graph-ql-tools-by-the-guild.svg" alt="GraphQL Tools (by The Guild)" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="sofa" loading="lazy" class="item small-item" src="/logos/sofa.svg" alt="SOFA" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="swift-graph-ql" loading="lazy" class="item small-item" src="/logos/swift-graph-ql.svg" alt="SwiftGraphQL" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="tailcall" loading="lazy" class="item small-item" src="/logos/tailcall.svg" alt="Tailcall" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="tartiflette" loading="lazy" class="item small-item" src="/logos/tartiflette.svg" alt="Tartiflette" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="type-graph-ql" loading="lazy" class="item small-item" src="/logos/type-graph-ql.svg" alt="TypeGraphQL" style="border-color: ;" /> </div> </div> </div> </div> </div> </div> <div style=" width: 180px; left: 495px; height: 160px; top: 0px; position: absolute; " class="big-picture-section"> <div style=" position: absolute; background: rgb(7,136,62); top: 20px; bottom: 0; left: 0; right: 0; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.2); padding: 1px; " > <div style=" top: 0; bottom: 0; left: 0; width: 30px; position: absolute; writing-mode: vertical-rl; transform: rotate(180deg); text-align: center; display: flex; align-items: center; justify-content: center; "> <a data-type="internal" href="/card-mode?category=services&grouping=category" style=" display: flex; justify-content: center; align-items: center; text-align: center; width: 100%; flex: 1; font-size: 12px; color: #ffffff; background: none " >Services</a> </div> <div style=" margin-left: 30px; height: 100%; display: flex; justify-content: space-evenly; background: white; "> <div style=" width: 140px; position: relative; overflow: visible; padding: 0; box-sizing: border-box; "> <div style=" position: absolute; top: -30px; left: 0; right: 0; height: 30px; display: flex; align-items: center; justify-content: center; text-align: center; "> <a data-type="internal" href="/card-mode?category=services&grouping=category" class="white-link">Services</a> </div> <div style=" display: grid; height: 100%; grid-template-columns: repeat(4, 34px); grid-auto-rows: 30px; justify-content: space-evenly; align-content: space-evenly;"> <div class=" item-wrapper nonoss"> <img data-id="8base" loading="lazy" class="item small-item" src="/logos/8base.svg" alt="8base" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="apollo-server" loading="lazy" class="item small-item" src="/logos/apollo-server.svg" alt="Apollo Server" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="aws-app-sync" loading="lazy" class="item small-item" src="/logos/aws-app-sync.svg" alt="AWS AppSync" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="azure-api-management" loading="lazy" class="item small-item" src="/logos/azure-api-management.svg" alt="Azure API Management" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="grafbase" loading="lazy" class="item small-item" src="/logos/grafbase.svg" alt="Grafbase" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="graph-ql-inspector-service" loading="lazy" class="item small-item" src="/logos/graph-ql-inspector-service.svg" alt="GraphQL Inspector Service" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="hasura" loading="lazy" class="item small-item" src="/logos/hasura.svg" alt="Hasura" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="hive" loading="lazy" class="item small-item" src="/logos/hive.svg" alt="Hive" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="kraken-d" loading="lazy" class="item small-item" src="/logos/kraken-d.svg" alt="KrakenD" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="nhost" loading="lazy" class="item small-item" src="/logos/nhost.svg" alt="Nhost" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="step-zen" loading="lazy" class="item small-item" src="/logos/step-zen.svg" alt="StepZen" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="tyk" loading="lazy" class="item small-item" src="/logos/tyk.svg" alt="Tyk" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="wunder-graph" loading="lazy" class="item small-item" src="/logos/wunder-graph.svg" alt="WunderGraph" style="border-color: ;" /> </div> </div> </div> </div> </div> </div> <div style=" width: 275px; left: 695px; height: 160px; top: 0px; position: absolute; " class="big-picture-section"> <div style=" position: absolute; background: rgb(79,121,13); top: 20px; bottom: 0; left: 0; right: 0; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.2); padding: 1px; " > <div style=" top: 0; bottom: 0; left: 0; width: 30px; position: absolute; writing-mode: vertical-rl; transform: rotate(180deg); text-align: center; display: flex; align-items: center; justify-content: center; "> <a data-type="internal" href="/card-mode?category=databases&grouping=category" style=" display: flex; justify-content: center; align-items: center; text-align: center; width: 100%; flex: 1; font-size: 12px; color: #ffffff; background: none " >Databases</a> </div> <div style=" margin-left: 30px; height: 100%; display: flex; justify-content: space-evenly; background: white; "> <div style=" width: 235px; position: relative; overflow: visible; padding: 0; box-sizing: border-box; "> <div style=" position: absolute; top: -30px; left: 0; right: 0; height: 30px; display: flex; align-items: center; justify-content: center; text-align: center; "> <a data-type="internal" href="/card-mode?category=databases&grouping=category" class="white-link">Databases</a> </div> <div style=" display: grid; height: 100%; grid-template-columns: repeat(4, 34px); grid-auto-rows: 30px; justify-content: space-evenly; align-content: space-evenly;"> <div class=" item-wrapper oss"> <img data-id="arangodb" loading="lazy" class="item small-item" src="/logos/arangodb.svg" alt="Arangodb" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="cube" loading="lazy" class="item small-item" src="/logos/cube.svg" alt="Cube" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="dgraph" loading="lazy" class="item small-item" src="/logos/dgraph.svg" alt="Dgraph" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="edge-db" loading="lazy" class="item small-item" src="/logos/edge-db.svg" alt="EdgeDB" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="fauna" loading="lazy" class="item small-item" src="/logos/fauna.svg" alt="Fauna" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="neo4j" loading="lazy" class="item small-item" src="/logos/neo4j.svg" alt="Neo4j" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="weaviate" loading="lazy" class="item small-item" src="/logos/weaviate.svg" alt="Weaviate" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="yugabyte-db" loading="lazy" class="item small-item" src="/logos/yugabyte-db.svg" alt="YugabyteDB" style="border-color: ;" /> </div> </div> </div> </div> </div> </div> <div style=" width: 970px; left: 0px; height: 195px; top: 180px; position: absolute; " class="big-picture-section"> <div style=" position: absolute; background: rgb(126,115,14); top: 20px; bottom: 0; left: 0; right: 0; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.2); padding: 1px; " > <div style=" top: 0; bottom: 0; left: 0; width: 30px; position: absolute; writing-mode: vertical-rl; transform: rotate(180deg); text-align: center; display: flex; align-items: center; justify-content: center; "> <a data-type="internal" href="/card-mode?category=graph-ql-adopter&grouping=category" style=" display: flex; justify-content: center; align-items: center; text-align: center; width: 100%; flex: 1; font-size: 12px; color: #ffffff; background: none " >GraphQL Adopter</a> </div> <div style=" margin-left: 30px; height: 100%; display: flex; justify-content: space-evenly; background: white; "> <div style=" width: 930px; position: relative; overflow: visible; padding: 0; box-sizing: border-box; "> <div style=" position: absolute; top: -30px; left: 0; right: 0; height: 30px; display: flex; align-items: center; justify-content: center; text-align: center; "> <a data-type="internal" href="/card-mode?category=graph-ql-adopter&grouping=category" class="white-link">GraphQL Adopter</a> </div> <div style=" display: grid; height: 100%; grid-template-columns: repeat(20, 34px); grid-auto-rows: 30px; justify-content: space-evenly; align-content: space-evenly;"> <div class=" item-wrapper nonoss"> <img data-id="1stdibs-adopter" loading="lazy" class="item small-item" src="/logos/1stdibs-adopter.svg" alt="1stdibs (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="20-minutes" loading="lazy" class="item small-item" src="/logos/20-minutes.svg" alt="20 minutes" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="99designs-adopter" loading="lazy" class="item small-item" src="/logos/99designs-adopter.svg" alt="99designs (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="adayroi-adopter" loading="lazy" class="item small-item" src="/logos/adayroi-adopter.svg" alt="Adayroi (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="after-ship-adopter" loading="lazy" class="item small-item" src="/logos/after-ship-adopter.svg" alt="AfterShip (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="airbnb-adopter" loading="lazy" class="item small-item" src="/logos/airbnb-adopter.svg" alt="Airbnb (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="alembic-adopter" loading="lazy" class="item small-item" src="/logos/alembic-adopter.svg" alt="Alembic (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="allocine-adopter" loading="lazy" class="item small-item" src="/logos/allocine-adopter.svg" alt="Allocine (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="alpha-sights-adopter" loading="lazy" class="item small-item" src="/logos/alpha-sights-adopter.svg" alt="AlphaSights (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="amplitude-adopter" loading="lazy" class="item small-item" src="/logos/amplitude-adopter.svg" alt="Amplitude (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="ants-adopter" loading="lazy" class="item small-item" src="/logos/ants-adopter.svg" alt="Ants (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="appier-adopter" loading="lazy" class="item small-item" src="/logos/appier-adopter.svg" alt="Appier (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="arangodb-adopter" loading="lazy" class="item small-item" src="/logos/arangodb-adopter.svg" alt="Arangodb (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="artsy-adopter" loading="lazy" class="item small-item" src="/logos/artsy-adopter.svg" alt="Artsy (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="assertible-adopter" loading="lazy" class="item small-item" src="/logos/assertible-adopter.svg" alt="Assertible (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="atlassian-adopter" loading="lazy" class="item small-item" src="/logos/atlassian-adopter.svg" alt="Atlassian (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="attendify-adopter" loading="lazy" class="item small-item" src="/logos/attendify-adopter.svg" alt="Attendify (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="audi-adopter" loading="lazy" class="item small-item" src="/logos/audi-adopter.svg" alt="Audi (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="auto-guru-adopter" loading="lazy" class="item small-item" src="/logos/auto-guru-adopter.svg" alt="AutoGuru (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="bazinga-adopter" loading="lazy" class="item small-item" src="/logos/bazinga-adopter.svg" alt="Bazinga! (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="better-pt-adopter" loading="lazy" class="item small-item" src="/logos/better-pt-adopter.svg" alt="BetterPT (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="braintree-adopter" loading="lazy" class="item small-item" src="/logos/braintree-adopter.svg" alt="Braintree (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="buildkite-adopter" loading="lazy" class="item small-item" src="/logos/buildkite-adopter.svg" alt="Buildkite (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="bynder-adopter" loading="lazy" class="item small-item" src="/logos/bynder-adopter.svg" alt="Bynder (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="cheddar-adopter" loading="lazy" class="item small-item" src="/logos/cheddar-adopter.svg" alt="Cheddar (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="cherre-adopter" loading="lazy" class="item small-item" src="/logos/cherre-adopter.svg" alt="Cherre (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="circle-hd-adopter" loading="lazy" class="item small-item" src="/logos/circle-hd-adopter.svg" alt="CircleHD (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="cloverleaf-adopter" loading="lazy" class="item small-item" src="/logos/cloverleaf-adopter.svg" alt="Cloverleaf (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="club-med-adopter" loading="lazy" class="item small-item" src="/logos/club-med-adopter.svg" alt="ClubMed (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="colectica-adopter" loading="lazy" class="item small-item" src="/logos/colectica-adopter.svg" alt="Colectica (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="commerce-tools-adopter" loading="lazy" class="item small-item" src="/logos/commerce-tools-adopter.svg" alt="CommerceTools (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="compara-adopter" loading="lazy" class="item small-item" src="/logos/compara-adopter.svg" alt="Compara (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="conduit-adopter" loading="lazy" class="item small-item" src="/logos/conduit-adopter.svg" alt="Conduit (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="configure-one-adopter" loading="lazy" class="item small-item" src="/logos/configure-one-adopter.svg" alt="Configure One (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="coursera-adopter" loading="lazy" class="item small-item" src="/logos/coursera-adopter.svg" alt="Coursera (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="craft-cms-adopter" loading="lazy" class="item small-item" src="/logos/craft-cms-adopter.svg" alt="Craft CMS (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="credit-karma-adopter" loading="lazy" class="item small-item" src="/logos/credit-karma-adopter.svg" alt="Credit Karma (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="curio-adopter" loading="lazy" class="item small-item" src="/logos/curio-adopter.svg" alt="Curio (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="daily-motion-adopter" loading="lazy" class="item small-item" src="/logos/daily-motion-adopter.svg" alt="DailyMotion (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="devops-international-adopter" loading="lazy" class="item small-item" src="/logos/devops-international-adopter.svg" alt="DevopsInternational (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="directlyrics-adopter" loading="lazy" class="item small-item" src="/logos/directlyrics-adopter.svg" alt="Directlyrics (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="drift-adopter" loading="lazy" class="item small-item" src="/logos/drift-adopter.svg" alt="Drift (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="due-dil-adopter" loading="lazy" class="item small-item" src="/logos/due-dil-adopter.svg" alt="DueDil (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="easy-carros-adopter" loading="lazy" class="item small-item" src="/logos/easy-carros-adopter.svg" alt="Easy Carros (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="ediket-adopter" loading="lazy" class="item small-item" src="/logos/ediket-adopter.svg" alt="Ediket (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="event-one-adopter" loading="lazy" class="item small-item" src="/logos/event-one-adopter.svg" alt="eventOne (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="expert360-adopter" loading="lazy" class="item small-item" src="/logos/expert360-adopter.svg" alt="Expert360 (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="fair-consulting-group-adopter" loading="lazy" class="item small-item" src="/logos/fair-consulting-group-adopter.svg" alt="FAIR Consulting Group (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="fairfax-media-adopter" loading="lazy" class="item small-item" src="/logos/fairfax-media-adopter.svg" alt="Fairfax Media (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="file-jet-adopter" loading="lazy" class="item small-item" src="/logos/file-jet-adopter.svg" alt="FileJet (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="forward-networks-adopter" loading="lazy" class="item small-item" src="/logos/forward-networks-adopter.svg" alt="Forward Networks (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="gentux-adopter" loading="lazy" class="item small-item" src="/logos/gentux-adopter.svg" alt="Gentux (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="get-ninjas-adopter" loading="lazy" class="item small-item" src="/logos/get-ninjas-adopter.svg" alt="GetNinjas (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="git-hub-adopter" loading="lazy" class="item small-item" src="/logos/git-hub-adopter.svg" alt="GitHub (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="goalify-adopter" loading="lazy" class="item small-item" src="/logos/goalify-adopter.svg" alt="Goalify (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="graph-cms-adopter" loading="lazy" class="item small-item" src="/logos/graph-cms-adopter.svg" alt="GraphCMS (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="graph-cool-adopter" loading="lazy" class="item small-item" src="/logos/graph-cool-adopter.svg" alt="GraphCool (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="hackages-adopter" loading="lazy" class="item small-item" src="/logos/hackages-adopter.svg" alt="Hackages (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="hijup-adopter" loading="lazy" class="item small-item" src="/logos/hijup-adopter.svg" alt="Hijup (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="housing-anywhere-adopter" loading="lazy" class="item small-item" src="/logos/housing-anywhere-adopter.svg" alt="Housing Anywhere (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="hudl-adopter" loading="lazy" class="item small-item" src="/logos/hudl-adopter.svg" alt="Hudl (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="instacart" loading="lazy" class="item small-item" src="/logos/instacart.svg" alt="Instacart" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="instana-adopter" loading="lazy" class="item small-item" src="/logos/instana-adopter.svg" alt="Instana (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="intuit-adopter" loading="lazy" class="item small-item" src="/logos/intuit-adopter.svg" alt="Intuit (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="klm-adopter" loading="lazy" class="item small-item" src="/logos/klm-adopter.svg" alt="KLM (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper oss"> <img data-id="kyma-adopter" loading="lazy" class="item small-item" src="/logos/kyma-adopter.svg" alt="Kyma (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="loggi-adopter" loading="lazy" class="item small-item" src="/logos/loggi-adopter.svg" alt="Loggi (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="lyft-adopter" loading="lazy" class="item small-item" src="/logos/lyft-adopter.svg" alt="Lyft (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="magento-adopter" loading="lazy" class="item small-item" src="/logos/magento-adopter.svg" alt="Magento (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="meta-adopter" loading="lazy" class="item small-item" src="/logos/meta-adopter.svg" alt="Meta (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="nash-tech-adopter" loading="lazy" class="item small-item" src="/logos/nash-tech-adopter.svg" alt="NashTech (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="nbc-news-digital-adopter" loading="lazy" class="item small-item" src="/logos/nbc-news-digital-adopter.svg" alt="NBC News Digital (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="new-relic-adopter" loading="lazy" class="item small-item" src="/logos/new-relic-adopter.svg" alt="New Relic (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="northflank-adopter" loading="lazy" class="item small-item" src="/logos/northflank-adopter.svg" alt="Northflank (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="one-medical" loading="lazy" class="item small-item" src="/logos/one-medical.svg" alt="One Medical" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="pay-pal-adopter" loading="lazy" class="item small-item" src="/logos/pay-pal-adopter.svg" alt="PayPal (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="pinterest-adopter" loading="lazy" class="item small-item" src="/logos/pinterest-adopter.svg" alt="Pinterest (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="pluralsight-adopter" loading="lazy" class="item small-item" src="/logos/pluralsight-adopter.svg" alt="Pluralsight (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="rakuten" loading="lazy" class="item small-item" src="/logos/rakuten.svg" alt="Rakuten" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="research-gate-adopter" loading="lazy" class="item small-item" src="/logos/research-gate-adopter.svg" alt="ResearchGate (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="salsify-adopter" loading="lazy" class="item small-item" src="/logos/salsify-adopter.svg" alt="Salsify (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="satispay-adopter" loading="lazy" class="item small-item" src="/logos/satispay-adopter.svg" alt="Satispay (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="screen-cloud-adopter" loading="lazy" class="item small-item" src="/logos/screen-cloud-adopter.svg" alt="ScreenCloud (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="serverless" loading="lazy" class="item small-item" src="/logos/serverless.svg" alt="Serverless" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="shopify-adopter" loading="lazy" class="item small-item" src="/logos/shopify-adopter.svg" alt="Shopify (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="stackshare-adopter" loading="lazy" class="item small-item" src="/logos/stackshare-adopter.svg" alt="Stackshare (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="starbucks-adopter" loading="lazy" class="item small-item" src="/logos/starbucks-adopter.svg" alt="Starbucks (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="stellate-adopter" loading="lazy" class="item small-item" src="/logos/stellate-adopter.svg" alt="Stellate (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="supply-adopter" loading="lazy" class="item small-item" src="/logos/supply-adopter.svg" alt="Supply (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="swapcard-adopter" loading="lazy" class="item small-item" src="/logos/swapcard-adopter.svg" alt="Swapcard (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="the-guild-adopter" loading="lazy" class="item small-item" src="/logos/the-guild-adopter.svg" alt="The Guild (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="the-new-york-times-adopter" loading="lazy" class="item small-item" src="/logos/the-new-york-times-adopter.svg" alt="The New York Times (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="travaux-com-adopter" loading="lazy" class="item small-item" src="/logos/travaux-com-adopter.svg" alt="Travaux.com (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="tridge" loading="lazy" class="item small-item" src="/logos/tridge.svg" alt="Tridge" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="twitter" loading="lazy" class="item small-item" src="/logos/twitter.svg" alt="Twitter" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="vazco-adopter" loading="lazy" class="item small-item" src="/logos/vazco-adopter.svg" alt="Vazco (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="wayfair-adopter" loading="lazy" class="item small-item" src="/logos/wayfair-adopter.svg" alt="Wayfair (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="werkspot-adopter" loading="lazy" class="item small-item" src="/logos/werkspot-adopter.svg" alt="Werkspot (adopter)" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="world-kinect" loading="lazy" class="item small-item" src="/logos/world-kinect.svg" alt="World Kinect" style="border-color: ;" /> </div><div class=" item-wrapper nonoss"> <img data-id="yelp" loading="lazy" class="item small-item" src="/logos/yelp.svg" alt="Yelp" style="border-color: ;" /> </div> </div> </div> </div> </div> </div> <div style=" width: 650px; left: 0px; height: 150px; top: 390px; position: absolute; " class="big-picture-section"> <div style=" position: absolute; background: rgb(103,66,18); top: 20px; bottom: 0; left: 0; right: 0; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.2); padding: 1px; " > <div style=" top: 0; bottom: 0; left: 0; width: 30px; position: absolute; writing-mode: vertical-rl; transform: rotate(180deg); text-align: center; display: flex; align-items: center; justify-content: center; "> <a data-type="internal" href="/card-mode?category=graph-ql-foundation-member&grouping=category" style=" display: flex; justify-content: center; align-items: center; text-align: center; width: 100%; flex: 1; font-size: 12px; color: #ffffff; background: none " >GraphQL Foundation Member</a> </div> <div style=" margin-left: 30px; height: 100%; display: flex; justify-content: space-evenly; background: white; "> <div style=" width: 610px; position: relative; overflow: visible; padding: 0; box-sizing: border-box; "> <div style=" position: absolute; top: -30px; left: 0; right: 0; height: 30px; display: flex; align-items: center; justify-content: center; text-align: center; "> <a data-type="internal" href="/card-mode?category=general&grouping=category" class="white-link">General</a> </div> <div style=" display: grid; height: 100%; grid-template-columns: repeat(12, 34px); grid-auto-rows: 30px; justify-content: space-evenly; align-content: space-evenly;"> <div class=" item-wrapper oss"> <img data-id="airbnb-member" loading="lazy" class="item small-item" src="/logos/airbnb-member.svg" alt="Airbnb (member)" style="border-color: white;" /> </div><div class=" item-wrapper oss"> <img data-id="amazon-web-services-inc-member" loading="lazy" class="item small-item" src="/logos/amazon-web-services-inc-member.svg" alt="Amazon Web Services, Inc. (member)" style="border-color: white;" /> </div><div class=" item-wrapper oss"> <img data-id="apollo-graph-ql-member" loading="lazy" class="item small-item" src="/logos/apollo-graph-ql-member.svg" alt="Apollo GraphQL (member)" style="border-color: white;" /> </div><div class=" item-wrapper oss"> <img data-id="atlassian-us-inc-member" loading="lazy" class="item small-item" src="/logos/atlassian-us-inc-member.svg" alt="Atlassian US, Inc (member)" style="border-color: white;" /> </div><div class=" item-wrapper oss"> <img data-id="copilot-travel-inc-member" loading="lazy" class="item small-item" src="/logos/copilot-travel-inc-member.svg" alt="COPILOT TRAVEL Inc (member)" style="border-color: white;" /> </div><div class=" item-wrapper oss"> <img data-id="elementl-member" loading="lazy" class="item small-item" src="/logos/elementl-member.svg" alt="Elementl (member)" style="border-color: white;" /> </div><div class=" item-wrapper oss"> <img data-id="escape-member" loading="lazy" class="item small-item" src="/logos/escape-member.svg" alt="Escape (member)" style="border-color: white;" /> </div><div class=" item-wrapper oss"> <img data-id="goldman-sachs-co-llc-member" loading="lazy" class="item small-item" src="/logos/goldman-sachs-co-llc-member.svg" alt="Goldman Sachs & Co. LLC (member)" style="border-color: white;" /> </div><div class=" item-wrapper oss"> <img data-id="grafbase-member" loading="lazy" class="item small-item" src="/logos/grafbase-member.svg" alt="Grafbase (member)" style="border-color: white;" /> </div><div class=" item-wrapper oss"> <img data-id="hasura-inc-member" loading="lazy" class="item small-item" src="/logos/hasura-inc-member.svg" alt="Hasura, Inc. (member)" style="border-color: white;" /> </div><div class=" item-wrapper oss"> <img data-id="international-business-machines-corporation-member" loading="lazy" class="item small-item" src="/logos/international-business-machines-corporation-member.svg" alt="International Business Machines Corporation (member)" style="border-color: white;" /> </div><div class=" item-wrapper oss"> <img data-id="intuit-inc-member" loading="lazy" class="item small-item" src="/logos/intuit-inc-member.svg" alt="Intuit, Inc. (member)" style="border-color: white;" /> </div><div class=" item-wrapper oss"> <img data-id="meta-platforms-inc-member" loading="lazy" class="item small-item" src="/logos/meta-platforms-inc-member.svg" alt="Meta Platforms, Inc. (member)" style="border-color: white;" /> </div><div class=" item-wrapper oss"> <img data-id="microsoft-corporation-member" loading="lazy" class="item small-item" src="/logos/microsoft-corporation-member.svg" alt="Microsoft Corporation (member)" style="border-color: white;" /> </div><div class=" item-wrapper oss"> <img data-id="neo4j-inc-member" loading="lazy" class="item small-item" src="/logos/neo4j-inc-member.svg" alt="Neo4j, Inc. (member)" style="border-color: white;" /> </div><div class=" item-wrapper oss"> <img data-id="platformatic-member" loading="lazy" class="item small-item" src="/logos/platformatic-member.svg" alt="Platformatic (member)" style="border-color: white;" /> </div><div class=" item-wrapper oss"> <img data-id="postman-member" loading="lazy" class="item small-item" src="/logos/postman-member.svg" alt="Postman (member)" style="border-color: white;" /> </div><div class=" item-wrapper oss"> <img data-id="salsify-member" loading="lazy" class="item small-item" src="/logos/salsify-member.svg" alt="Salsify (member)" style="border-color: white;" /> </div><div class=" item-wrapper oss"> <img data-id="shopify-inc-member" loading="lazy" class="item small-item" src="/logos/shopify-inc-member.svg" alt="Shopify Inc. (member)" style="border-color: white;" /> </div><div class=" item-wrapper oss"> <img data-id="solo-io-inc-member" loading="lazy" class="item small-item" src="/logos/solo-io-inc-member.svg" alt="Solo.io, Inc. (member)" style="border-color: white;" /> </div><div class=" item-wrapper oss"> <img data-id="stellate-member" loading="lazy" class="item small-item" src="/logos/stellate-member.svg" alt="Stellate (member)" style="border-color: white;" /> </div><div class=" item-wrapper oss"> <img data-id="the-guild-member" loading="lazy" class="item small-item" src="/logos/the-guild-member.svg" alt="The Guild (member)" style="border-color: white;" /> </div><div class=" item-wrapper oss"> <img data-id="tyk-technologies-ltd-member" loading="lazy" class="item small-item" src="/logos/tyk-technologies-ltd-member.svg" alt="Tyk Technologies Ltd. (member)" style="border-color: white;" /> </div> </div> </div> </div> </div> </div><div style=" position: absolute; width: 310px; height: 130px; top: 390px; left: 665px; border: 1px solid black; background: white; border-radius: 10px; margin-top: 20px; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); "><div key='text' style=" position: absolute; top: 45px; left: 140px; right: 10px; bottom: undefinedpx; width: undefinedpx; height: undefinedpx; font-size: 40px; font-style: italic; text-align: justify; z-index: 1; "><div style=" position: absolute; left: 0; top: 0; width: 400%; height: 100%; transform: scale(0.25); transform-origin: left; "> This landscape is intended as a map to explore the GraphQL community, and also shows the member organizations of the GraphQL Foundation. </div></div><img src="/images/qr.svg" style=" position: absolute; top: 10px; left: 20px; right: undefinedpx; bottom: undefinedpx; width: 90px; height: 90px; " alt="QR Code" /><div key='title' style=" position: absolute; top: 95px; left: 10px; right: undefinedpx; bottom: undefinedpx; width: undefinedpx; height: undefinedpx; font-size: 21px; color: #666; ">l.graphql.org</div><img src="/images/left-logo.svg" style=" position: absolute; top: 10px; left: undefinedpx; right: 105px; bottom: undefinedpx; width: 90px; height: undefinedpx; " alt="Landscape Logo" /><img src="/images/right-logo.svg" style=" position: absolute; top: 10px; left: undefinedpx; right: 10px; bottom: undefinedpx; width: 90px; height: undefinedpx; " alt="GraphQL Foundation Logo" /></div></div> </div> </div> </div> <div class="column-content"></div> </div> <div id="footer" style=" margin-top: 10px; font-size: 9pt; width: 100%; text-align: center;"> Crunchbase data is used under license from Crunchbase to CNCF. For more information, please see the <a data-type="external" target="_blank" eventLabel="crunchbase-terms" href="https://github.com/graphql/graphql-landscape/blob/HEAD/README.md#license"> license </a> info. </div> <div id="embedded-footer"> <h1 style="margin-top: 20px; width: 100%; text-align: center;"> <a data-type="external" target="_blank" href="url">View</a> the full interactive landscape </h1> </div> </div> </div> </div> </body> </html>