forked from badges/shields
-
Notifications
You must be signed in to change notification settings - Fork 1
/
1-663a9898414c7d986418.js.map
1 lines (1 loc) · 63.4 KB
/
1-663a9898414c7d986418.js.map
1
{"version":3,"sources":["webpack:///./frontend/components/common.js","webpack:///./frontend/lib/badge-url.js","webpack:///./frontend/lib/resolve-url.js","webpack:///./frontend/components/snippet.js","webpack:///./frontend/constants.js","webpack:///./frontend/components/meta.js","webpack:///./frontend/components/header.js","webpack:///./core/badge-urls/make-badge-url.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","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","staticBadgeUrl","baseUrl","label","message","color","options","path","makeStaticBadgeUrl","resolveUrl","dynamicBadgeUrl","datatype","dataUrl","query","_temp2","prefix","suffix","_ref2$queryParams","queryParams","_babel_runtime_helpers_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0___default","url","colorB","_temp","longCache","style","inQueryParams","_ref$format","format","outQueryParams","maxAge","resolveBadgeUrl","resolved","resolve","parsed","parse","search","__webpack_require__","d","__webpack_exports__","Snippet","StyledCode","react__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_0___default","n","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","withBackground","fontSize","snippet","_ref4$truncate","process","GATSBY_BASE_URL","react_helmet__WEBPACK_IMPORTED_MODULE_1__","_images_favicon_png__WEBPACK_IMPORTED_MODULE_2__","_images_favicon_png__WEBPACK_IMPORTED_MODULE_2___default","charSet","name","content","rel","type","href","favicon","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","queryString","require","pathToRegexp","badgeUrlFromPath","_ref$baseUrl","_ref$longCache","outExt","length","outQueryString","stringify","undefined","encodeField","s","encodeURIComponent","replace","module","exports","badgeUrlFromPattern","_ref2$baseUrl","pattern","namedParams","_ref2$format","_ref2$longCache","compile","strict","sensitive","toPath","_ref3$baseUrl","_ref3$color","namedLogo","_ref3$format","map","join","logo","_lib_resolve_url__WEBPACK_IMPORTED_MODULE_3__","_common__WEBPACK_IMPORTED_MODULE_4__","SpacedA","Footer","id","data","bareLink","badgeUrl","link","title","html","img","markdown","withoutLink","reStructuredText","result","quoteAsciiDocAttribute","attr","mapValues","obj","iteratee","k","asciiDoc","positional","named","some","includes","keys","items","concat","entries","renderAsciiDocAttributes","generateMarkup","generatorFn","rst","asciidoc","markupFormat","BuilderOuterContainer","BuilderInnerContainer","BuilderContainer","children","react_default","oneOfType","arrayOf","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","filter","t","forEach","constructPath","isComplete","token","delimiter","optional","_ref5","onChange","_this$constructor$con","constructor","componentDidMount","_this$state2","renderLiteral","literal","tokenIndex","key","renderNamedParamInput","patternToOptions","option","renderNamedParam","namedParamIndex","exampleValue","exampleParams","Fragment","htmlFor","humanizeString","render","_this2","builder_common_BuilderContainer","React","Component","object","func","QueryParamLabel","QueryParamInput","QueryParamCaption","supportedBadgeOptions","getBadgeOption","find","opt","QueryStringBuilder","handleServiceQueryParamChange","event","_event$target","checked","oldQueryParams","badgeOptions","noteQueryStringChanged","handleBadgeOptionChange","_Object$assign2","_event$target2","oldBadgeOptions","defaultStyle","isStringParam","defaults","getQueryString","outQuery","defaultValue","stringifyQueryString","_ref6","_this$constructor$get","_this$state3","renderServiceQueryParam","_ref7","stringParamCount","toLowerCase","renderBadgeOptionInput","advertisedStyles","renderBadgeOption","_getBadgeOption2","_getBadgeOption2$labe","hasDefaultValue","_this$state4","hasQueryParams","Boolean","_ref8","_ref9","defaultProps","ClickableControl","react_select_esm","Control","innerProps","onMouseDown","selectProps","onControlMouseDown","MarkupFormatSelect","Select","markupOptions","GetMarkupButton","selectRef","createRef","_callee","_assertThisInitialize","onMarkupRequested","regenerator_default","wrap","_context","prev","next","assertThisInitialized_default","current","blur","stop","onOptionClick","_callee2","_context2","isDisabled","ref","placeholder","closeMenuOnScroll","blurInputOnSelect","menuPlacement","isSearchable","classNamePrefix","components","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-663a9898414c7d986418.js","sourcesContent":["import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled, { css, createGlobalStyle } from 'styled-components'\n\nconst noAutocorrect = Object.freeze({\n autoComplete: 'off',\n autoCorrect: 'off',\n autoCapitalize: 'off',\n spellCheck: 'false',\n})\n\nconst nonBreakingSpace = '\\u00a0'\n\nconst GlobalStyle = createGlobalStyle`\n * {\n box-sizing: border-box;\n }\n`\n\nconst BaseFont = styled.div`\n font-family: Lekton, sans-serif;\n color: #534;\n`\n\nconst 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\nconst 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\nconst Badge = ({\n src,\n alt = '',\n display = 'inline',\n height = '20px',\n clickable = false,\n ...rest\n}) => (\n <BadgeWrapper height={height} clickable={clickable} display={display}>\n {src ? <img src={src} alt={alt} {...rest} /> : nonBreakingSpace}\n </BadgeWrapper>\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\nconst 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\nconst InlineInput = styled(StyledInput)`\n width: 70px;\n margin-left: 5px;\n margin-right: 5px;\n`\n\nconst BlockInput = styled(StyledInput)`\n width: 40%;\n background-color: transparent;\n`\n\nconst VerticalSpace = styled.hr`\n border: 0;\n display: block;\n height: 3mm;\n`\n\nexport {\n noAutocorrect,\n nonBreakingSpace,\n GlobalStyle,\n BaseFont,\n H2,\n H3,\n Badge,\n StyledInput,\n InlineInput,\n BlockInput,\n VerticalSpace,\n}\n","import resolveUrl from './resolve-url'\nimport { staticBadgeUrl as makeStaticBadgeUrl } from '../../core/badge-urls/make-badge-url'\n\nexport default function resolveBadgeUrl(\n url,\n baseUrl,\n { longCache, style, queryParams: inQueryParams, format = 'svg' } = {}\n) {\n const outQueryParams = Object.assign({}, inQueryParams)\n if (longCache) {\n outQueryParams.maxAge = '2592000'\n }\n if (style) {\n outQueryParams.style = style\n }\n\n return resolveUrl(`${url}.${format}`, baseUrl, outQueryParams)\n}\n\nexport function staticBadgeUrl(baseUrl, label, message, color, options) {\n const path = makeStaticBadgeUrl({ label, message, color })\n return resolveUrl(path, baseUrl, options)\n}\n\n// Options can include: { prefix, suffix, color, longCache, style, queryParams }\nexport function dynamicBadgeUrl(\n baseUrl,\n datatype,\n label,\n dataUrl,\n query,\n { prefix, suffix, color, queryParams = {}, ...rest } = {}\n) {\n Object.assign(queryParams, {\n label,\n url: dataUrl,\n query,\n })\n\n if (color) {\n queryParams.colorB = color\n }\n if (prefix) {\n queryParams.prefix = prefix\n }\n if (suffix) {\n queryParams.suffix = suffix\n }\n\n const outOptions = Object.assign({ queryParams }, rest)\n\n return resolveBadgeUrl(`/badge/dynamic/${datatype}`, baseUrl, outOptions)\n}\n","// I played with build-url and url-resolve-browser and neither of them did the\n// right thing. Previously this was based on url-path, which patched around\n// the URL API. This caused problems in Firefox 57, but only in the production\n// build.\n\n// Let's rewrite these without a deprecated API!\n// eslint-disable-next-line node/no-deprecated-api\nimport { resolve, parse, format } from 'url'\n\n// baseUrl and queryParams are optional.\nexport default function resolveUrl(url, baseUrl, queryParams) {\n const resolved = baseUrl ? resolve(baseUrl, url) : url\n const parsed = parse(resolved, /* parseQueryString */ true)\n parsed.query = Object.assign({}, parsed.query, queryParams)\n delete parsed.search\n return format(parsed)\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\nconst StyledCode = styled.code`\n line-height: 1.2em;\n padding: 0.1em 0.3em;\n\n border-radius: 4px;\n ${({ withBackground }) =>\n withBackground !== false &&\n css`\n background: #eef;\n `} font-family: Lekton;\n font-size: ${({ fontSize }) => fontSize};\n\n white-space: nowrap;\n`\n\nconst Snippet = ({ snippet, truncate = false, fontSize }) => (\n <CodeContainer truncate={truncate}>\n <ClickToSelect>\n <StyledCode fontSize={fontSize}>{snippet}</StyledCode>\n </ClickToSelect>\n </CodeContainer>\n)\nSnippet.propTypes = {\n snippet: PropTypes.string.isRequired,\n truncate: PropTypes.bool,\n fontSize: PropTypes.string,\n}\n\nexport { Snippet, StyledCode }\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 () => (\n <Helmet>\n <title>Shields.io: Quality metadata badges for open source projects</title>\n <meta charSet=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width,initial-scale=1\" />\n <meta name=\"description\" content={description} />\n <link rel=\"icon\" type=\"image/png\" href={favicon} />\n <link\n href=\"https://fonts.googleapis.com/css?family=Lato|Lekton\"\n rel=\"stylesheet\"\n />\n </Helmet>\n)\n","import { Link } from 'gatsby'\nimport React from 'react'\nimport styled from 'styled-components'\nimport { VerticalSpace } from './common'\nimport Logo from '../images/logo.svg'\n\nconst Highlights = styled.p`\n font-style: italic;\n`\n\nexport default () => (\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","'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 maxAge: 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\nmodule.exports = {\n badgeUrlFromPath,\n badgeUrlFromPattern,\n encodeField,\n staticBadgeUrl,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport resolveUrl from '../lib/resolve-url'\nimport { H2 } from './common'\n\nconst SpacedA = styled.a`\n margin-left: 10px;\n margin-right: 10px;\n`\n\nconst Footer = ({ baseUrl }) => (\n <section>\n <H2 id=\"like-this\">Like This?</H2>\n\n <p>\n <object\n data={resolveUrl(\n '/twitter/follow/shields_io.svg?style=social&label=Follow',\n baseUrl\n )}\n alt=\"Follow @shields_io\"\n />{' '}\n {}\n <object\n data={resolveUrl(\n '/opencollective/backers/shields.svg?style=social&link=https://opencollective.com/shields',\n baseUrl\n )}\n alt=\"Donate to us!\"\n />{' '}\n {}\n <object\n data={resolveUrl(\n '/opencollective/sponsors/shields.svg?style=social&link=https://opencollective.com/shields',\n baseUrl\n )}\n alt=\"Donate to us!\"\n />{' '}\n {}\n <object\n data={resolveUrl(\n '/github/forks/badges/shields.svg?style=social&label=Fork',\n baseUrl\n )}\n alt=\"Fork on GitHub\"\n />{' '}\n {}\n <object\n data={resolveUrl(\n '/discord/308323056592486420.svg?style=social&label=Chat&link=https://discord.gg/HjJCwm5',\n baseUrl\n )}\n alt=\"chat on Discord\"\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)\nexport default Footer\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 img = `<img alt=\"${title}\" 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 (typeof attr === 'string') {\n const withQuotesEscaped = attr.replace(/\"/g, '\\\\\"')\n return `\"${withQuotesEscaped}\"`\n } else if (attr == null) {\n return 'None'\n } else {\n return attr\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.includes(',')) || 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 default function generateAllMarkup(badgeUrl, link, title) {\n // This is a wee bit \"clever\". It runs each of the three functions on the\n // parameters provided, and returns the result in an object.\n return mapValues({ markdown, reStructuredText, asciiDoc }, fn =>\n fn(badgeUrl, link, title)\n )\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 { 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: PropTypes.object.isRequired,\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 value={value}\n onChange={this.handleTokenChange}\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 type=\"text\"\n name={name}\n value={value}\n onChange={this.handleTokenChange}\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 { 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' },\n { name: 'label', label: 'override label' },\n { name: 'colorB', 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\nexport default class QueryStringBuilder extends React.Component {\n constructor(props) {\n super(props)\n\n const { exampleParams, defaultStyle } = props\n\n const queryParams = {}\n Object.entries(exampleParams).forEach(([name, value]) => {\n const isStringParam = typeof value === 'string'\n queryParams[name] = isStringParam ? '' : true\n })\n\n const badgeOptions = {}\n const defaults = { style: defaultStyle }\n supportedBadgeOptions.forEach(({ name }) => {\n badgeOptions[name] = defaults[name] || ''\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 const isStringParam = typeof value === 'string'\n if (isStringParam) {\n if (value) {\n outQuery[name] = value\n } else {\n // Omit empty string params.\n isComplete = false\n }\n } else {\n // Translate `true` to `null`, which provides an empty query param\n // like `?compact_message`. Omit `false`. Omit default values.\n if (value) {\n outQuery[name] = null\n }\n }\n })\n\n Object.entries(badgeOptions).forEach(([name, value]) => {\n const { defaultValue } = getBadgeOption(name)\n if (value && value !== defaultValue) {\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 type=\"text\"\n name={name}\n checked={value}\n onChange={this.handleServiceQueryParamChange}\n {...noAutocorrect}\n />\n ) : (\n <input\n type=\"checkbox\"\n name={name}\n checked={value}\n onChange={this.handleServiceQueryParamChange}\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 value={value}\n onChange={this.handleBadgeOptionChange}\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 type=\"text\"\n name={name}\n checked={value}\n onChange={this.handleBadgeOptionChange}\n {...noAutocorrect}\n />\n )\n }\n }\n\n renderBadgeOption(name, value) {\n const {\n label = humanizeString(name),\n defaultValue: hasDefaultValue,\n } = getBadgeOption(name)\n return (\n <tr key={name}>\n <td>\n <QueryParamLabel htmlFor={name}>{label}</QueryParamLabel>\n </td>\n <td>\n {!hasDefaultValue && <QueryParamCaption>optional</QueryParamCaption>}\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: PropTypes.object.isRequired,\n defaultStyle: PropTypes.string,\n onChange: PropTypes.func,\n}\nQueryStringBuilder.defaultProps = {\n defaultStyle: '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 ref={this.selectRef}\n options={markupOptions}\n placeholder=\"Copy Badge URL\"\n value=\"\"\n isDisabled={isDisabled}\n closeMenuOnScroll\n blurInputOnSelect\n menuPlacement=\"auto\"\n isSearchable={false}\n onControlMouseDown={this.onControlMouseDown}\n onChange={this.onOptionClick}\n classNamePrefix=\"markup-format\"\n components={{\n Control: ClickableControl,\n }}\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 pose={pose}\n onPoseComplete={this.handlePoseComplete}\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 '../../lib/badge-url'\nimport { generateMarkup } from '../../lib/generate-image-markup'\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 // This is an item from the `examples` array within the\n // `serviceDefinition` schema.\n // https://github.com/badges/shields/blob/master/services/service-definitions.js\n baseUrl: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n pattern: PropTypes.string.isRequired,\n exampleNamedParams: PropTypes.object.isRequired,\n exampleQueryParams: PropTypes.object.isRequired,\n defaultStyle: 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 'preview',\n 'some parameters missing',\n 'lightgray'\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 ref={indicatorRef} copiedContent=\"Copied\">\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 defaultStyle,\n } = this.props\n\n return (\n <form action=\"\">\n <PathBuilder\n pattern={pattern}\n exampleParams={exampleNamedParams}\n onChange={this.handlePathChange}\n />\n <QueryStringBuilder\n exampleParams={exampleQueryParams}\n defaultStyle={defaultStyle}\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":""}