forked from badges/shields
-
Notifications
You must be signed in to change notification settings - Fork 1
/
1-33f8597833e2de5af935.js.map
1 lines (1 loc) · 66.8 KB
/
1-33f8597833e2de5af935.js.map
1
{"version":3,"sources":["webpack:///./frontend/components/common.js","webpack:///./core/badge-urls/make-badge-url.js","webpack:///./frontend/lib/service-definitions/service-definition-prop-types.js","webpack:///./frontend/components/snippet.js","webpack:///./frontend/constants.js","webpack:///./frontend/components/meta.js","webpack:///./frontend/components/header.js","webpack:///./frontend/components/footer.js","webpack:///./frontend/lib/generate-image-markup.js","webpack:///./frontend/components/customizer/builder-common.js","webpack:///./frontend/components/customizer/path-builder.js","webpack:///./frontend/components/customizer/query-string-builder.js","webpack:///./frontend/components/customizer/request-markup-button.js","webpack:///./frontend/components/customizer/copied-content-indicator.js","webpack:///./frontend/components/customizer/customizer.js","webpack:///./frontend/images/favicon.png","webpack:///./frontend/lib/pattern-helpers.js"],"names":["noAutocorrect","Object","freeze","autoComplete","autoCorrect","autoCapitalize","spellCheck","nonBreakingSpace","GlobalStyle","createGlobalStyle","_templateObject","BaseFont","styled","div","withConfig","displayName","componentId","H2","h2","H3","h3","BadgeWrapper","span","_ref","height","_ref2","display","_ref3","clickable","css","Badge","_ref4","src","_ref4$alt","alt","_ref4$display","_ref4$height","_ref4$clickable","rest","_babel_runtime_helpers_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1___default","react__WEBPACK_IMPORTED_MODULE_4___default","a","createElement","assign","propTypes","PropTypes","string","isRequired","oneOf","bool","StyledInput","input","InlineInput","BlockInput","VerticalSpace","hr","queryString","require","pathToRegexp","badgeUrlFromPath","_ref$baseUrl","baseUrl","path","queryParams","style","_ref$format","format","_ref$longCache","longCache","outExt","length","outQueryString","stringify","cacheSeconds","undefined","encodeField","s","encodeURIComponent","replace","module","exports","badgeUrlFromPattern","_ref2$baseUrl","pattern","namedParams","_ref2$format","_ref2$longCache","compile","strict","sensitive","toPath","staticBadgeUrl","_ref3$baseUrl","label","message","_ref3$color","color","namedLogo","_ref3$format","map","join","logo","queryStringStaticBadgeUrl","_ref4$baseUrl","labelColor","logoColor","logoWidth","logoPosition","_ref4$format","dynamicBadgeUrl","_ref5","datatype","dataUrl","query","prefix","suffix","_ref5$format","url","__webpack_require__","d","__webpack_exports__","objectOfKeyValuesPropType","examplePropType","serviceDefinitionPropType","prop_types__WEBPACK_IMPORTED_MODULE_0__","prop_types__WEBPACK_IMPORTED_MODULE_0___default","n","arrayOfStringsPropType","arrayOf","objectOf","exact","title","example","preview","keywords","documentation","__html","category","name","isDeprecated","route","oneOfType","examples","StyledCode","Snippet","react__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_0___default","prop_types__WEBPACK_IMPORTED_MODULE_1__","prop_types__WEBPACK_IMPORTED_MODULE_1___default","_mapbox_react_click_to_select__WEBPACK_IMPORTED_MODULE_2__","_mapbox_react_click_to_select__WEBPACK_IMPORTED_MODULE_2___default","styled_components__WEBPACK_IMPORTED_MODULE_3__","CodeContainer","truncate","code","fontSize","snippet","_ref3$truncate","process","GATSBY_BASE_URL","Meta","react_helmet__WEBPACK_IMPORTED_MODULE_1__","_images_favicon_png__WEBPACK_IMPORTED_MODULE_2__","_images_favicon_png__WEBPACK_IMPORTED_MODULE_2___default","description","charSet","content","href","favicon","rel","type","Header","gatsby__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_1__","react__WEBPACK_IMPORTED_MODULE_1___default","styled_components__WEBPACK_IMPORTED_MODULE_2__","_common__WEBPACK_IMPORTED_MODULE_3__","Logo","Highlights","p","to","Footer","_core_badge_urls_make_badge_url__WEBPACK_IMPORTED_MODULE_3__","_common__WEBPACK_IMPORTED_MODULE_4__","SpacedA","id","data","link","bareLink","badgeUrl","html","img","markdown","withoutLink","reStructuredText","result","quoteAsciiDocAttribute","attr","asciiDoc","positional","named","some","includes","keys","obj","iteratee","k","mapValues","items","concat","entries","renderAsciiDocAttributes","generateMarkup","generatorFn","rst","asciidoc","markupFormat","BuilderOuterContainer","BuilderInnerContainer","BuilderContainer","children","react_default","node","labelFont","BuilderLabel","BuilderCaption","PathBuilderColumn","withHorizPadding","PathLiteral","isFirstToken","NamedParamLabelContainer","inputStyling","NamedParamInput","NamedParamSelect","select","NamedParamCaption","PathBuilder","props","_this","_React$Component","call","this","handleTokenChange","evt","_Object$assign","_evt$target","target","value","_this$state","state","tokens","oldNamedParams","setState","notePathChanged","parse","filter","t","forEach","constructPath","isComplete","token","delimiter","optional","onChange","_this$constructor$con","constructor","componentDidMount","_this$state2","renderLiteral","literal","tokenIndex","key","renderNamedParamInput","options","patternToOptions","option","renderNamedParam","namedParamIndex","exampleValue","exampleParams","Fragment","htmlFor","humanizeString","render","_this2","builder_common_BuilderContainer","React","Component","func","QueryParamLabel","QueryParamInput","QueryParamCaption","supportedBadgeOptions","shieldsDefaultValue","getBadgeOption","find","opt","QueryStringBuilder","handleServiceQueryParamChange","event","_event$target","checked","oldQueryParams","badgeOptions","noteQueryStringChanged","handleBadgeOptionChange","_Object$assign2","_event$target2","oldBadgeOptions","initialStyle","isStringParam","getQueryString","outQuery","stringifyQueryString","_ref6","_this$constructor$get","_this$state3","renderServiceQueryParam","_ref7","stringParamCount","toLowerCase","renderBadgeOptionInput","advertisedStyles","renderBadgeOption","_getBadgeOption2","_getBadgeOption2$labe","hasShieldsDefaultValue","_this$state4","hasQueryParams","Boolean","_ref8","_ref9","defaultProps","ClickableControl","react_select_esm","Control","innerProps","onMouseDown","selectProps","onControlMouseDown","object","MarkupFormatSelect","Select","markupOptions","GetMarkupButton","selectRef","createRef","_callee","_assertThisInitialize","onMarkupRequested","regenerator_default","wrap","_context","prev","next","assertThisInitialized_default","current","blur","stop","onOptionClick","_callee2","_context2","isDisabled","blurInputOnSelect","classNamePrefix","closeMenuOnScroll","components","isSearchable","menuPlacement","placeholder","ref","PureComponent","ContentAnchor","ContentContainer","PosedContentContainer","posed","hidden","opacity","transition","duration","effectStart","top","effectEnd","CopiedContentIndicator","pose","handlePoseComplete","trigger","onPoseComplete","copiedContent","Customizer","indicatorRef","copyMarkup","builtBadgeUrl","markup","generateBuiltBadgeUrl","clipboardCopy","t0","abrupt","handlePathChange","pathIsComplete","handleQueryStringChange","renderLivePreview","common","renderMarkupAndLivePreview","copied_content_indicator_CopiedContentIndicator","request_markup_button","_this$props","exampleNamedParams","exampleQueryParams","action","path_builder_PathBuilder","query_string_builder_QueryStringBuilder","_window$location","window","location","protocol","hostname","basicChars","split","part","match"],"mappings":"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","file":"1-33f8597833e2de5af935.js","sourcesContent":["import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled, { css, createGlobalStyle } from 'styled-components'\n\nexport const noAutocorrect = Object.freeze({\n autoComplete: 'off',\n autoCorrect: 'off',\n autoCapitalize: 'off',\n spellCheck: 'false',\n})\n\nexport const nonBreakingSpace = '\\u00a0'\n\nexport const GlobalStyle = createGlobalStyle`\n * {\n box-sizing: border-box;\n }\n`\n\nexport const BaseFont = styled.div`\n font-family: Lekton, sans-serif;\n color: #534;\n`\n\nexport const H2 = styled.h2`\n font-style: italic;\n\n margin-top: 12mm;\n font-variant: small-caps;\n\n ::before {\n content: '☙ ';\n }\n\n ::after {\n content: ' ❧';\n }\n`\n\nexport const H3 = styled.h3`\n font-style: italic;\n`\n\nconst BadgeWrapper = styled.span`\n padding: 2px;\n height: ${({ height }) => height};\n vertical-align: middle;\n display: ${({ display }) => display};\n\n ${({ clickable }) =>\n clickable &&\n css`\n cursor: pointer;\n `};\n`\n\nexport function Badge({\n src,\n alt = '',\n display = 'inline',\n height = '20px',\n clickable = false,\n ...rest\n}) {\n return (\n <BadgeWrapper clickable={clickable} display={display} height={height}>\n {src ? <img alt={alt} src={src} {...rest} /> : nonBreakingSpace}\n </BadgeWrapper>\n )\n}\nBadge.propTypes = {\n src: PropTypes.string.isRequired,\n alt: PropTypes.string,\n display: PropTypes.oneOf(['inline', 'block', 'inline-block']),\n height: PropTypes.string,\n clickable: PropTypes.bool,\n}\n\nexport const StyledInput = styled.input`\n height: 15px;\n border: solid #b9a;\n border-width: 0 0 1px 0;\n padding: 0;\n\n text-align: center;\n\n color: #534;\n\n :focus {\n outline: 0;\n }\n`\n\nexport const InlineInput = styled(StyledInput)`\n width: 70px;\n margin-left: 5px;\n margin-right: 5px;\n`\n\nexport const BlockInput = styled(StyledInput)`\n width: 40%;\n background-color: transparent;\n`\n\nexport const VerticalSpace = styled.hr`\n border: 0;\n display: block;\n height: 3mm;\n`\n","'use strict'\n\nconst queryString = require('query-string')\nconst pathToRegexp = require('path-to-regexp')\n\nfunction badgeUrlFromPath({\n baseUrl = '',\n path,\n queryParams,\n style,\n format = 'svg',\n longCache = false,\n}) {\n const outExt = format.length ? `.${format}` : ''\n\n const outQueryString = queryString.stringify({\n cacheSeconds: longCache ? '2592000' : undefined,\n style,\n ...queryParams,\n })\n const suffix = outQueryString ? `?${outQueryString}` : ''\n\n return `${baseUrl}${path}${outExt}${suffix}`\n}\n\nfunction badgeUrlFromPattern({\n baseUrl = '',\n pattern,\n namedParams,\n queryParams,\n style,\n format = 'svg',\n longCache = false,\n}) {\n const toPath = pathToRegexp.compile(pattern, {\n strict: true,\n sensitive: true,\n })\n\n const path = toPath(namedParams)\n\n return badgeUrlFromPath({\n baseUrl,\n path,\n queryParams,\n style,\n format,\n longCache,\n })\n}\n\nfunction encodeField(s) {\n return encodeURIComponent(s.replace(/-/g, '--').replace(/_/g, '__'))\n}\n\nfunction staticBadgeUrl({\n baseUrl = '',\n label,\n message,\n color = 'lightgray',\n style,\n namedLogo,\n format = 'svg',\n}) {\n const path = [label, message, color].map(encodeField).join('-')\n const outQueryString = queryString.stringify({\n style,\n logo: namedLogo,\n })\n const suffix = outQueryString ? `?${outQueryString}` : ''\n return `${baseUrl}/badge/${path}.${format}${suffix}`\n}\n\nfunction queryStringStaticBadgeUrl({\n baseUrl = '',\n label,\n message,\n color,\n labelColor,\n style,\n namedLogo,\n logoColor,\n logoWidth,\n logoPosition,\n format = 'svg',\n}) {\n // schemaVersion could be a parameter if we iterate on it,\n // for now it's hardcoded to the only supported version.\n const schemaVersion = '1'\n const suffix = `?${queryString.stringify({\n label,\n message,\n color,\n labelColor,\n style,\n logo: namedLogo,\n logoColor,\n logoWidth,\n logoPosition,\n })}`\n return `${baseUrl}/static/v${schemaVersion}.${format}${suffix}`\n}\n\nfunction dynamicBadgeUrl({\n baseUrl,\n datatype,\n label,\n dataUrl,\n query,\n prefix,\n suffix,\n color,\n style,\n format = 'svg',\n}) {\n const queryParams = {\n label,\n url: dataUrl,\n query,\n style,\n }\n\n if (color) {\n queryParams.color = color\n }\n if (prefix) {\n queryParams.prefix = prefix\n }\n if (suffix) {\n queryParams.suffix = suffix\n }\n\n const outQueryString = queryString.stringify(queryParams)\n return `${baseUrl}/badge/dynamic/${datatype}.${format}?${outQueryString}`\n}\n\nmodule.exports = {\n badgeUrlFromPath,\n badgeUrlFromPattern,\n encodeField,\n staticBadgeUrl,\n queryStringStaticBadgeUrl,\n dynamicBadgeUrl,\n}\n","import PropTypes from 'prop-types'\n\n// This should be kept in sync with the schema in\n// `core/base-service/service-definitions.js`.\n\nconst arrayOfStringsPropType = PropTypes.arrayOf(PropTypes.string.isRequired)\n .isRequired\nconst objectOfKeyValuesPropType = PropTypes.objectOf(PropTypes.string)\n .isRequired\n\nconst examplePropType = PropTypes.exact({\n title: PropTypes.string.isRequired,\n example: PropTypes.exact({\n pattern: PropTypes.string.isRequired,\n namedParams: objectOfKeyValuesPropType,\n queryParams: objectOfKeyValuesPropType,\n }).isRequired,\n preview: PropTypes.exact({\n label: PropTypes.string,\n message: PropTypes.string.isRequired,\n color: PropTypes.string.isRequired,\n style: PropTypes.string,\n namedLogo: PropTypes.string,\n }).isRequired,\n keywords: arrayOfStringsPropType,\n documentation: PropTypes.exact({\n __html: PropTypes.string.isRequired,\n }),\n})\n\nconst serviceDefinitionPropType = PropTypes.exact({\n category: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n isDeprecated: PropTypes.bool.isRequired,\n // Route is missing for e.g. Buildkite.\n route: PropTypes.oneOfType([\n PropTypes.exact({\n pattern: PropTypes.string.isRequired,\n queryParams: arrayOfStringsPropType,\n }),\n PropTypes.exact({\n format: PropTypes.string.isRequired,\n queryParams: arrayOfStringsPropType,\n }),\n ]),\n examples: PropTypes.arrayOf(examplePropType).isRequired,\n}).isRequired\n\nexport {\n arrayOfStringsPropType,\n objectOfKeyValuesPropType,\n examplePropType,\n serviceDefinitionPropType,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport ClickToSelect from '@mapbox/react-click-to-select'\nimport styled, { css } from 'styled-components'\n\nconst CodeContainer = styled.span`\n position: relative;\n\n vertical-align: middle;\n display: inline-block;\n\n ${({ truncate }) =>\n truncate &&\n css`\n max-width: 40%;\n overflow: hidden;\n text-overflow: ellipsis;\n `};\n`\n\nexport const StyledCode = styled.code`\n line-height: 1.2em;\n padding: 0.1em 0.3em;\n\n border-radius: 4px;\n background: #eef;\n font-family: Lekton;\n font-size: ${({ fontSize }) => fontSize};\n\n white-space: nowrap;\n`\n\nexport function Snippet({ snippet, truncate = false, fontSize }) {\n return (\n <CodeContainer truncate={truncate}>\n <ClickToSelect>\n <StyledCode fontSize={fontSize}>{snippet}</StyledCode>\n </ClickToSelect>\n </CodeContainer>\n )\n}\nSnippet.propTypes = {\n snippet: PropTypes.string.isRequired,\n truncate: PropTypes.bool,\n fontSize: PropTypes.string,\n}\n","const baseUrl = process.env.GATSBY_BASE_URL || ''\n\nexport { baseUrl }\n","import React from 'react'\nimport { Helmet } from 'react-helmet'\nimport favicon from '../images/favicon.png'\n\nconst description = `We serve fast and scalable informational images as badges\nfor GitHub, Travis CI, Jenkins, WordPress and many more services. Use them to\ntrack the state of your projects, or for promotional purposes.`\n\nexport default function Meta() {\n return (\n <Helmet>\n <title>\n Shields.io: Quality metadata badges for open source projects\n </title>\n <meta charSet=\"utf-8\" />\n <meta content=\"width=device-width,initial-scale=1\" name=\"viewport\" />\n <meta content={description} name=\"description\" />\n <link href={favicon} rel=\"icon\" type=\"image/png\" />\n <link\n href=\"https://fonts.googleapis.com/css?family=Lato|Lekton\"\n rel=\"stylesheet\"\n />\n </Helmet>\n )\n}\n","import { Link } from 'gatsby'\nimport React from 'react'\nimport styled from 'styled-components'\nimport Logo from '../images/logo.svg'\nimport { VerticalSpace } from './common'\n\nconst Highlights = styled.p`\n font-style: italic;\n`\n\nexport default function Header() {\n return (\n <section>\n <Link to=\"/\">\n <Logo />\n </Link>\n\n <VerticalSpace />\n\n <Highlights>\n Pixel-perfect Retina-ready Fast Consistent \n Hackable No tracking\n </Highlights>\n </section>\n )\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { badgeUrlFromPath } from '../../core/badge-urls/make-badge-url'\nimport { H2 } from './common'\n\nconst SpacedA = styled.a`\n margin-left: 10px;\n margin-right: 10px;\n`\n\nexport default function Footer({ baseUrl }) {\n return (\n <section>\n <H2 id=\"like-this\">Like This?</H2>\n\n <p>\n <object\n alt=\"Follow @shields_io\"\n data={badgeUrlFromPath({\n baseUrl,\n path: '/twitter/follow/shields_io',\n queryParams: { label: 'Follow' },\n style: 'social',\n })}\n />{' '}\n {}\n <object\n alt=\"Donate to us!\"\n data={badgeUrlFromPath({\n baseUrl,\n path: '/opencollective/backers/shields',\n queryParams: { link: 'https://opencollective.com/shields' },\n style: 'social',\n })}\n />{' '}\n {}\n <object\n alt=\"Donate to us!\"\n data={badgeUrlFromPath({\n baseUrl,\n path: '/opencollective/sponsors/shields',\n queryParams: { link: 'https://opencollective.com/shields' },\n style: 'social',\n })}\n />{' '}\n {}\n <object\n alt=\"Fork on GitHub\"\n data={badgeUrlFromPath({\n baseUrl,\n path: '/github/forks/badges/shields',\n queryParams: { label: 'Fork' },\n style: 'social',\n })}\n />{' '}\n {}\n <object\n alt=\"chat on Discord\"\n data={badgeUrlFromPath({\n baseUrl,\n path: '/discord/308323056592486420',\n queryParams: {\n label: 'Chat',\n link: 'https://discord.gg/HjJCwm5',\n },\n style: 'social',\n })}\n />\n </p>\n\n <p>\n What is your favorite badge service to use?\n <br />\n <a href=\"https://github.com/badges/shields/blob/master/CONTRIBUTING.md\">\n Tell us\n </a>{' '}\n and we might bring it to you!\n </p>\n\n <p>\n <SpacedA href=\"https://status.shields.io/\">Status</SpacedA>\n <SpacedA href=\"https://github.com/badges/shields\">GitHub</SpacedA>\n </p>\n </section>\n )\n}\nFooter.propTypes = {\n baseUrl: PropTypes.string.isRequired,\n}\n","export function bareLink(badgeUrl, link, title = '') {\n return badgeUrl\n}\n\nexport function html(badgeUrl, link, title) {\n // To be more robust, this should escape the title.\n const alt = title ? ` alt=\"${title}\"` : ''\n const img = `<img${alt} src=\"${badgeUrl}\">`\n if (link) {\n return `<a href=\"${link}\">${img}</a>`\n } else {\n return img\n }\n}\n\nexport function markdown(badgeUrl, link, title) {\n const withoutLink = `![${title || ''}](${badgeUrl})`\n if (link) {\n return `[${withoutLink}](${link})`\n } else {\n return withoutLink\n }\n}\n\nexport function reStructuredText(badgeUrl, link, title) {\n let result = `.. image:: ${badgeUrl}`\n if (title) {\n result += ` :alt: ${title}`\n }\n if (link) {\n result += ` :target: ${link}`\n }\n return result\n}\n\nfunction quoteAsciiDocAttribute(attr) {\n if (attr == null) {\n return 'None'\n } else {\n const withQuotesEscaped = attr.replace(/\"/g, '\\\\\"')\n return `\"${withQuotesEscaped}\"`\n }\n}\n\n// lodash.mapvalues is huge!\nfunction mapValues(obj, iteratee) {\n const result = {}\n for (const k in obj) {\n result[k] = iteratee(obj[k])\n }\n return result\n}\n\nexport function renderAsciiDocAttributes(positional, named) {\n // http://asciidoc.org/userguide.html#X21\n const needsQuoting =\n positional.some(attr => attr && attr.includes(',')) ||\n Object.keys(named).length > 0\n\n if (needsQuoting) {\n positional = positional.map(attr => quoteAsciiDocAttribute(attr))\n named = mapValues(named, attr => quoteAsciiDocAttribute(attr))\n }\n\n const items = positional.concat(\n Object.entries(named).map(([k, v]) => `${k}=${v}`)\n )\n\n if (items.length) {\n return `[${items.join(',')}]`\n } else {\n return '[]'\n }\n}\n\nexport function asciiDoc(badgeUrl, link, title) {\n const positional = title ? [title] : []\n const named = link ? { link } : {}\n const attrs = renderAsciiDocAttributes(positional, named)\n return `image:${badgeUrl}${attrs}`\n}\n\nexport function generateMarkup({ badgeUrl, link, title, markupFormat }) {\n const generatorFn = {\n markdown,\n rst: reStructuredText,\n asciidoc: asciiDoc,\n link: bareLink,\n html,\n }[markupFormat]\n return generatorFn(badgeUrl, link, title)\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\nconst BuilderOuterContainer = styled.div`\n margin-top: 10px;\n margin-bottom: 10px;\n`\n\n// The inner container is inline-block so that its width matches its columns.\nconst BuilderInnerContainer = styled.div`\n display: inline-block;\n\n padding: 1px 14px 10px;\n\n border-radius: 4px;\n background: #eef;\n`\n\nconst BuilderContainer = ({ children }) => (\n <BuilderOuterContainer>\n <BuilderInnerContainer>{children}</BuilderInnerContainer>\n </BuilderOuterContainer>\n)\nBuilderContainer.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]),\n}\n\nconst labelFont = `\n font-family: system-ui;\n font-size: 11px;\n`\n\nconst BuilderLabel = styled.label`\n ${labelFont}\n\n text-transform: lowercase;\n`\n\nconst BuilderCaption = styled.span`\n ${labelFont}\n\n color: #999;\n`\n\nexport { BuilderContainer, BuilderLabel, BuilderCaption }\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled, { css } from 'styled-components'\nimport pathToRegexp from 'path-to-regexp'\nimport humanizeString from 'humanize-string'\nimport { objectOfKeyValuesPropType } from '../../lib/service-definitions/service-definition-prop-types'\nimport { patternToOptions } from '../../lib/pattern-helpers'\nimport { noAutocorrect, StyledInput } from '../common'\nimport {\n BuilderContainer,\n BuilderLabel,\n BuilderCaption,\n} from './builder-common'\n\nconst PathBuilderColumn = styled.span`\n height: 78px;\n\n float: left;\n display: flex;\n flex-direction: column;\n\n margin: 0;\n\n ${({ withHorizPadding }) =>\n withHorizPadding &&\n css`\n padding: 0 8px;\n `};\n`\n\nconst PathLiteral = styled.div`\n margin-top: 39px;\n ${({ isFirstToken }) =>\n isFirstToken &&\n css`\n margin-left: 3px;\n `};\n`\n\nconst NamedParamLabelContainer = styled.span`\n display: flex;\n flex-direction: column;\n height: 37px;\n width: 100%;\n justify-content: center;\n`\n\nconst inputStyling = `\n width: 100%;\n text-align: center;\n`\n\n// 2px to align with input boxes alongside.\nconst NamedParamInput = styled(StyledInput)`\n ${inputStyling}\n margin-top: 2px;\n margin-bottom: 10px;\n`\n\nconst NamedParamSelect = styled.select`\n ${inputStyling}\n margin-bottom: 9px;\n font-size: 10px;\n`\n\nconst NamedParamCaption = styled(BuilderCaption)`\n width: 100%;\n text-align: center;\n`\n\nexport default class PathBuilder extends React.Component {\n static propTypes = {\n pattern: PropTypes.string.isRequired,\n exampleParams: objectOfKeyValuesPropType,\n onChange: PropTypes.func,\n }\n\n constructor(props) {\n super(props)\n\n const { pattern } = props\n const tokens = pathToRegexp.parse(pattern)\n\n const namedParams = {}\n\n // `pathToRegexp.parse()` returns a mixed array of strings for literals\n // and objects for parameters. Filter out the literals and work with the\n // objects.\n tokens\n .filter(t => typeof t !== 'string')\n .forEach(({ name }) => {\n namedParams[name] = ''\n })\n\n this.state = {\n tokens,\n namedParams,\n }\n }\n\n static constructPath({ tokens, namedParams }) {\n let isComplete = true\n const path = tokens\n .map(token => {\n if (typeof token === 'string') {\n return token\n } else {\n const { delimiter, name, optional } = token\n const value = namedParams[name]\n if (value) {\n return `${delimiter}${value}`\n } else if (optional) {\n return ''\n } else {\n isComplete = false\n return `${delimiter}:${name}`\n }\n }\n })\n .join('')\n return { path, isComplete }\n }\n\n notePathChanged({ tokens, namedParams }) {\n const { onChange } = this.props\n if (onChange) {\n const { path, isComplete } = this.constructor.constructPath({\n tokens,\n namedParams,\n })\n onChange({ path, isComplete })\n }\n }\n\n componentDidMount() {\n // Ensure the default style is applied right away.\n const { tokens, namedParams } = this.state\n this.notePathChanged({ tokens, namedParams })\n }\n\n handleTokenChange = evt => {\n const { name, value } = evt.target\n const { tokens, namedParams: oldNamedParams } = this.state\n\n const namedParams = {\n ...oldNamedParams,\n [name]: value,\n }\n\n this.setState({ namedParams })\n this.notePathChanged({ tokens, namedParams })\n }\n\n renderLiteral(literal, tokenIndex) {\n return (\n <PathBuilderColumn key={`${tokenIndex}-${literal}`}>\n <PathLiteral isFirstToken={tokenIndex === 0}>{literal}</PathLiteral>\n </PathBuilderColumn>\n )\n }\n\n renderNamedParamInput(token) {\n const { name, pattern } = token\n const options = patternToOptions(pattern)\n\n const { namedParams } = this.state\n const value = namedParams[name]\n\n if (options) {\n return (\n <NamedParamSelect\n name={name}\n onChange={this.handleTokenChange}\n value={value}\n >\n <option key=\"empty\" value=\"\">\n {' '}\n </option>\n {options.map(option => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </NamedParamSelect>\n )\n } else {\n return (\n <NamedParamInput\n name={name}\n onChange={this.handleTokenChange}\n type=\"text\"\n value={value}\n {...noAutocorrect}\n />\n )\n }\n }\n\n renderNamedParam(token, tokenIndex, namedParamIndex) {\n const { delimiter, name, optional } = token\n\n const { exampleParams } = this.props\n const exampleValue = exampleParams[name] || '(not set)'\n\n return (\n <React.Fragment key={token.name}>\n {this.renderLiteral(delimiter, tokenIndex)}\n <PathBuilderColumn withHorizPadding>\n <NamedParamLabelContainer>\n <BuilderLabel htmlFor={name}>{humanizeString(name)}</BuilderLabel>\n {optional ? <BuilderLabel>(optional)</BuilderLabel> : null}\n </NamedParamLabelContainer>\n {this.renderNamedParamInput(token)}\n <NamedParamCaption>\n {namedParamIndex === 0 ? `e.g. ${exampleValue}` : exampleValue}\n </NamedParamCaption>\n </PathBuilderColumn>\n </React.Fragment>\n )\n }\n\n render() {\n const { tokens } = this.state\n let namedParamIndex = 0\n return (\n <BuilderContainer>\n {tokens.map((token, tokenIndex) =>\n typeof token === 'string'\n ? this.renderLiteral(token, tokenIndex)\n : this.renderNamedParam(token, tokenIndex, namedParamIndex++)\n )}\n </BuilderContainer>\n )\n }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport humanizeString from 'humanize-string'\nimport { stringify as stringifyQueryString } from 'query-string'\nimport { advertisedStyles } from '../../../supported-features.json'\nimport { objectOfKeyValuesPropType } from '../../lib/service-definitions/service-definition-prop-types'\nimport { noAutocorrect, StyledInput } from '../common'\nimport {\n BuilderContainer,\n BuilderLabel,\n BuilderCaption,\n} from './builder-common'\n\nconst QueryParamLabel = styled(BuilderLabel)`\n margin: 5px;\n`\n\nconst QueryParamInput = styled(StyledInput)`\n margin: 5px 10px;\n`\n\nconst QueryParamCaption = styled(BuilderCaption)`\n margin: 5px;\n`\n\nconst supportedBadgeOptions = [\n { name: 'style', shieldsDefaultValue: 'flat' },\n { name: 'label', label: 'override label' },\n { name: 'color', label: 'override color' },\n { name: 'logo', label: 'named logo' },\n { name: 'logoColor', label: 'override logo color' },\n]\n\nfunction getBadgeOption(name) {\n return supportedBadgeOptions.find(opt => opt.name === name)\n}\n\n// The UI for building the query string, which includes two kinds of settings:\n// 1. Custom query params defined by the service, stored in\n// `this.state.queryParams`\n// 2. The standard badge options which apply to all badges, stored in\n// `this.state.badgeOptions`\nexport default class QueryStringBuilder extends React.Component {\n constructor(props) {\n super(props)\n\n const { exampleParams, initialStyle } = props\n\n // Create empty values in `this.state.queryParams` for each of the custom\n // query params defined in `this.props.exampleParams`.\n const queryParams = {}\n Object.entries(exampleParams).forEach(([name, value]) => {\n // Custom query params are either string or boolean. Inspect the example\n // value to infer which one, and set empty values accordingly.\n // Throughout the component, these two types are supported in the same\n // manner: by inspecting this value type.\n const isStringParam = typeof value === 'string'\n queryParams[name] = isStringParam ? '' : true\n })\n\n // Create empty values in `this.state.badgeOptions` for each of the\n // standard badge options. When `this.props.initialStyle` has been\n // provided, use that as the initial style.\n const badgeOptions = {}\n supportedBadgeOptions.forEach(({ name }) => {\n if (name === 'style') {\n badgeOptions[name] = initialStyle\n } else {\n badgeOptions[name] = ''\n }\n })\n\n this.state = { queryParams, badgeOptions }\n }\n\n static getQueryString({ queryParams, badgeOptions }) {\n const outQuery = {}\n let isComplete = true\n\n Object.entries(queryParams).forEach(([name, value]) => {\n // As above, there are two types of supported params: strings and\n // booleans.\n const isStringParam = typeof value === 'string'\n if (isStringParam) {\n if (value) {\n outQuery[name] = value\n } else {\n // Skip empty params.\n isComplete = false\n }\n } else {\n // Generate empty query params for boolean parameters by translating\n // `{ compact_message: true }` to `?compact_message`. When values are\n // false, skip the param.\n if (value) {\n outQuery[name] = null\n }\n }\n })\n\n Object.entries(badgeOptions).forEach(([name, value]) => {\n const { shieldsDefaultValue } = getBadgeOption(name)\n if (value && value !== shieldsDefaultValue) {\n outQuery[name] = value\n }\n })\n\n const queryString = stringifyQueryString(outQuery)\n\n return { queryString, isComplete }\n }\n\n noteQueryStringChanged({ queryParams, badgeOptions }) {\n const { onChange } = this.props\n if (onChange) {\n const { queryString, isComplete } = this.constructor.getQueryString({\n queryParams,\n badgeOptions,\n })\n onChange({ queryString, isComplete })\n }\n }\n\n componentDidMount() {\n // Ensure the default style is applied right away.\n const { queryParams, badgeOptions } = this.state\n this.noteQueryStringChanged({ queryParams, badgeOptions })\n }\n\n handleServiceQueryParamChange = event => {\n const { name, type } = event.target\n const value =\n type === 'checkbox' ? event.target.checked : event.target.value\n const { queryParams: oldQueryParams, badgeOptions } = this.state\n\n const queryParams = {\n ...oldQueryParams,\n [name]: value,\n }\n\n this.setState({ queryParams })\n this.noteQueryStringChanged({ queryParams, badgeOptions })\n }\n\n handleBadgeOptionChange = event => {\n const { name, value } = event.target\n const { badgeOptions: oldBadgeOptions, queryParams } = this.state\n\n const badgeOptions = {\n ...oldBadgeOptions,\n [name]: value,\n }\n\n this.setState({ badgeOptions })\n this.noteQueryStringChanged({ queryParams, badgeOptions })\n }\n\n renderServiceQueryParam({ name, value, isStringParam, stringParamCount }) {\n const exampleValue = this.props.exampleParams[name]\n return (\n <tr key={name}>\n <td>\n <QueryParamLabel htmlFor={name}>\n {humanizeString(name).toLowerCase()}\n </QueryParamLabel>\n </td>\n <td>\n {isStringParam && (\n <QueryParamCaption>\n {stringParamCount === 0 ? `e.g. ${exampleValue}` : exampleValue}\n </QueryParamCaption>\n )}\n </td>\n <td>\n {isStringParam ? (\n <QueryParamInput\n checked={value}\n name={name}\n onChange={this.handleServiceQueryParamChange}\n type=\"text\"\n {...noAutocorrect}\n />\n ) : (\n <input\n checked={value}\n name={name}\n onChange={this.handleServiceQueryParamChange}\n type=\"checkbox\"\n />\n )}\n </td>\n </tr>\n )\n }\n\n renderBadgeOptionInput(name, value) {\n if (name === 'style') {\n return (\n <select\n name=\"style\"\n onChange={this.handleBadgeOptionChange}\n value={value}\n >\n {advertisedStyles.map(style => (\n <option key={style} value={style}>\n {style}\n </option>\n ))}\n </select>\n )\n } else {\n return (\n <QueryParamInput\n checked={value}\n name={name}\n onChange={this.handleBadgeOptionChange}\n type=\"text\"\n {...noAutocorrect}\n />\n )\n }\n }\n\n renderBadgeOption(name, value) {\n const {\n label = humanizeString(name),\n shieldsDefaultValue: hasShieldsDefaultValue,\n } = getBadgeOption(name)\n return (\n <tr key={name}>\n <td>\n <QueryParamLabel htmlFor={name}>{label}</QueryParamLabel>\n </td>\n <td>\n {!hasShieldsDefaultValue && (\n <QueryParamCaption>optional</QueryParamCaption>\n )}\n </td>\n <td>{this.renderBadgeOptionInput(name, value)}</td>\n </tr>\n )\n }\n\n render() {\n const { queryParams, badgeOptions } = this.state\n const hasQueryParams = Boolean(Object.keys(queryParams).length)\n let stringParamCount = 0\n return (\n <>\n {hasQueryParams && (\n <BuilderContainer>\n <table>\n <tbody>\n {Object.entries(queryParams).map(([name, value]) => {\n const isStringParam = typeof value === 'string'\n return this.renderServiceQueryParam({\n name,\n value,\n isStringParam,\n stringParamCount: isStringParam\n ? stringParamCount++\n : undefined,\n })\n })}\n </tbody>\n </table>\n </BuilderContainer>\n )}\n <BuilderContainer>\n <table>\n <tbody>\n {Object.entries(badgeOptions).map(([name, value]) =>\n this.renderBadgeOption(name, value)\n )}\n </tbody>\n </table>\n </BuilderContainer>\n </>\n )\n }\n}\nQueryStringBuilder.propTypes = {\n exampleParams: objectOfKeyValuesPropType,\n initialStyle: PropTypes.string,\n onChange: PropTypes.func,\n}\nQueryStringBuilder.defaultProps = {\n initialStyle: 'flat',\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport Select, { components } from 'react-select'\n\nconst ClickableControl = props => (\n <components.Control\n {...props}\n innerProps={{\n onMouseDown: props.selectProps.onControlMouseDown,\n }}\n />\n)\nClickableControl.propTypes = {\n selectProps: PropTypes.object.isRequired,\n}\n\nconst MarkupFormatSelect = styled(Select)`\n width: 200px;\n\n margin-left: auto;\n margin-right: auto;\n\n font-family: 'Lato', sans-serif;\n font-size: 12px;\n\n .markup-format__control {\n background-image: linear-gradient(-180deg, #00aeff 0%, #0076ff 100%);\n border: 1px solid rgba(238, 239, 241, 0.8);\n border-width: 0;\n box-shadow: unset;\n cursor: copy;\n }\n\n .markup-format__control--is-disabled {\n background: rgba(0, 118, 255, 0.3);\n cursor: none;\n }\n\n .markup-format__placeholder {\n color: #eeeff1;\n }\n\n .markup-format__indicator {\n color: rgba(238, 239, 241, 0.81);\n cursor: pointer;\n }\n\n .markup-format__indicator:hover {\n color: #eeeff1;\n }\n\n .markup-format__control--is-focused .markup-format__indicator,\n .markup-format__control--is-focused .markup-format__indicator:hover {\n color: #ffffff;\n }\n\n .markup-format__option {\n text-align: left;\n cursor: copy;\n }\n`\n\nconst markupOptions = [\n { value: 'markdown', label: 'Copy Markdown' },\n { value: 'rst', label: 'Copy reStructuredText' },\n { value: 'asciidoc', label: 'Copy AsciiDoc' },\n { value: 'html', label: 'Copy HTML' },\n]\n\nclass GetMarkupButton extends React.PureComponent {\n selectRef = React.createRef()\n\n onControlMouseDown = async event => {\n const { selectRef } = this\n const { onMarkupRequested } = this.props\n\n if (onMarkupRequested) {\n await onMarkupRequested('link')\n }\n selectRef.current.blur()\n }\n\n onOptionClick = async ({ value: markupFormat }) => {\n const { onMarkupRequested } = this.props\n if (onMarkupRequested) {\n await onMarkupRequested(markupFormat)\n }\n }\n\n render() {\n const { isDisabled } = this.props\n\n return (\n <MarkupFormatSelect\n blurInputOnSelect\n classNamePrefix=\"markup-format\"\n closeMenuOnScroll\n components={{\n Control: ClickableControl,\n }}\n isDisabled={isDisabled}\n isSearchable={false}\n menuPlacement=\"auto\"\n onChange={this.onOptionClick}\n onControlMouseDown={this.onControlMouseDown}\n options={markupOptions}\n placeholder=\"Copy Badge URL\"\n ref={this.selectRef}\n value=\"\"\n />\n )\n }\n}\nGetMarkupButton.propTypes = {\n onMarkupRequested: PropTypes.func.isRequired,\n isDisabled: PropTypes.bool,\n}\nexport default GetMarkupButton\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport posed from 'react-pose'\nimport styled from 'styled-components'\n\nconst ContentAnchor = styled.span`\n position: relative;\n display: inline-block;\n`\n\n// 100vw allows providing styled content which is wider than its container.\nconst ContentContainer = styled.span`\n width: 100vw;\n\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n\n will-change: opacity, top;\n\n pointer-events: none;\n`\n\nconst PosedContentContainer = posed(ContentContainer)({\n hidden: { opacity: 0, transition: { duration: 100 } },\n effectStart: { top: '-10px', opacity: 1.0, transition: { duration: 0 } },\n effectEnd: { top: '-75px', opacity: 0.5 },\n})\n\n// When `trigger()` is called, render copied content that floats up, then\n// disappears.\nexport default class CopiedContentIndicator extends React.Component {\n state = {\n pose: 'hidden',\n }\n\n trigger() {\n this.setState({ pose: 'effectStart' })\n }\n\n handlePoseComplete = () => {\n const { pose } = this.state\n if (pose === 'effectStart') {\n this.setState({ pose: 'effectEnd' })\n } else {\n this.setState({ pose: 'hidden' })\n }\n }\n\n render() {\n const { pose } = this.state\n return (\n <ContentAnchor>\n <PosedContentContainer\n onPoseComplete={this.handlePoseComplete}\n pose={pose}\n >\n {this.props.copiedContent}\n </PosedContentContainer>\n {this.props.children}\n </ContentAnchor>\n )\n }\n}\nCopiedContentIndicator.propTypes = {\n copiedContent: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]),\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]),\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport clipboardCopy from 'clipboard-copy'\nimport { staticBadgeUrl } from '../../../core/badge-urls/make-badge-url'\nimport { generateMarkup } from '../../lib/generate-image-markup'\nimport { objectOfKeyValuesPropType } from '../../lib/service-definitions/service-definition-prop-types'\nimport { Badge } from '../common'\nimport PathBuilder from './path-builder'\nimport QueryStringBuilder from './query-string-builder'\nimport RequestMarkupButtom from './request-markup-button'\nimport CopiedContentIndicator from './copied-content-indicator'\n\nexport default class Customizer extends React.Component {\n static propTypes = {\n baseUrl: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n pattern: PropTypes.string.isRequired,\n exampleNamedParams: objectOfKeyValuesPropType,\n exampleQueryParams: objectOfKeyValuesPropType,\n initialStyle: PropTypes.string,\n }\n\n indicatorRef = React.createRef()\n\n state = {\n path: '',\n link: '',\n message: undefined,\n }\n\n get baseUrl() {\n const { baseUrl } = this.props\n if (baseUrl) {\n return baseUrl\n } else {\n // Default to the current hostname for when there is no `BASE_URL` set\n // at build time (as in most PaaS deploys).\n const { protocol, hostname } = window.location\n return `${protocol}//${hostname}`\n }\n }\n\n generateBuiltBadgeUrl() {\n const { baseUrl } = this\n const { path, queryString } = this.state\n\n const suffix = queryString ? `?${queryString}` : ''\n return `${baseUrl}${path}.svg${suffix}`\n }\n\n renderLivePreview() {\n // There are some usability issues here. It would be better if the message\n // changed from a validation error to a loading message once the\n // parameters were filled in, and also switched back to loading when the\n // parameters changed.\n const { baseUrl } = this.props\n const { pathIsComplete } = this.state\n let src\n if (pathIsComplete) {\n src = this.generateBuiltBadgeUrl()\n } else {\n src = staticBadgeUrl({\n baseUrl,\n label: 'preview',\n message: 'some parameters missing',\n })\n }\n return (\n <p>\n <Badge display=\"block\" src={src} />\n </p>\n )\n }\n\n copyMarkup = async markupFormat => {\n const { title } = this.props\n const { link } = this.state\n\n const builtBadgeUrl = this.generateBuiltBadgeUrl()\n const markup = generateMarkup({\n badgeUrl: builtBadgeUrl,\n link,\n title,\n markupFormat,\n })\n\n try {\n await clipboardCopy(markup)\n } catch (e) {\n this.setState({\n message: 'Copy failed',\n markup,\n })\n return\n }\n\n this.setState({ markup })\n this.indicatorRef.current.trigger()\n }\n\n renderMarkupAndLivePreview() {\n const { indicatorRef } = this\n const { markup, message, pathIsComplete } = this.state\n\n return (\n <div>\n {this.renderLivePreview()}\n <CopiedContentIndicator copiedContent=\"Copied\" ref={indicatorRef}>\n <RequestMarkupButtom\n isDisabled={!pathIsComplete}\n onMarkupRequested={this.copyMarkup}\n />\n </CopiedContentIndicator>\n {message && (\n <div>\n <p>{message}</p>\n <p>Markup: {markup}</p>\n </div>\n )}\n </div>\n )\n }\n\n handlePathChange = ({ path, isComplete }) => {\n this.setState({ path, pathIsComplete: isComplete })\n }\n\n handleQueryStringChange = ({ queryString, isComplete }) => {\n this.setState({ queryString })\n }\n\n render() {\n const {\n pattern,\n exampleNamedParams,\n exampleQueryParams,\n initialStyle,\n } = this.props\n\n return (\n <form action=\"\">\n <PathBuilder\n exampleParams={exampleNamedParams}\n onChange={this.handlePathChange}\n pattern={pattern}\n />\n <QueryStringBuilder\n exampleParams={exampleQueryParams}\n initialStyle={initialStyle}\n onChange={this.handleQueryStringChange}\n />\n <div>{this.renderMarkupAndLivePreview()}</div>\n </form>\n )\n }\n}\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAABE0lEQVR4AWJkAIKkpCQ7TU3NySIiIlosQMCABejbMWAFf//8YXj77vWn27duZWVGz1nKGBYWZiQkJHSIkZGRmwEPCMxiwAt+/fz3/86VL8EAbuiiAKEoiMLwGcHdCQMBiUAlurDErmJ75tmKP8A3oiJyuF6vAxglws+0C5pv81GJaJdzhlWMMJssaaXM3C0CpmSDLAQtgH3BiCIVB2NRMKWEIoXQMBiLgjHGP9nQ+6ZPLgqGgs9xriDovX8A6Jjgw8ZyIigzn5xz+yZ+6O/tsz7Hy8tb/PLlywPAHMOFT/G3LwRc95fxPyerQCojuKwLDLQAGjoJWIzpAw1mw6bB0guHSYyMDBysnO/5hUTTGvM3rQEAI8qCnLiY3O4AAAAASUVORK5CYII=\"","// Given a patternToRegex `pattern` with multiple-choice options like\n// `foo|bar|baz`, return an array with the options. If it can't be described\n// as multiple-choice options, return `undefined`.\nconst basicChars = /^[A-za-z0-9-]+$/\nfunction patternToOptions(pattern) {\n const split = pattern.split('|')\n if (split.some(part => !part.match(basicChars))) {\n return undefined\n } else {\n return split\n }\n}\n\nmodule.exports = { patternToOptions }\n"],"sourceRoot":""}