forked from badges/shields
-
Notifications
You must be signed in to change notification settings - Fork 1
/
1-b50ef7deb517f89a82ee.js.map
1 lines (1 loc) · 64.2 KB
/
1-b50ef7deb517f89a82ee.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","_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","react_helmet__WEBPACK_IMPORTED_MODULE_1__","_images_favicon_png__WEBPACK_IMPORTED_MODULE_2__","_images_favicon_png__WEBPACK_IMPORTED_MODULE_2___default","charSet","content","name","href","favicon","rel","type","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","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","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","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","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-b50ef7deb517f89a82ee.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 clickable={clickable} display={display} height={height}>\n {src ? <img alt={alt} src={src} {...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.color = 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 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","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 alt=\"Follow @shields_io\"\n data={resolveUrl(\n '/twitter/follow/shields_io.svg?style=social&label=Follow',\n baseUrl\n )}\n />{' '}\n {}\n <object\n alt=\"Donate to us!\"\n data={resolveUrl(\n '/opencollective/backers/shields.svg?style=social&link=https://opencollective.com/shields',\n baseUrl\n )}\n />{' '}\n {}\n <object\n alt=\"Donate to us!\"\n data={resolveUrl(\n '/opencollective/sponsors/shields.svg?style=social&link=https://opencollective.com/shields',\n baseUrl\n )}\n />{' '}\n {}\n <object\n alt=\"Fork on GitHub\"\n data={resolveUrl(\n '/github/forks/badges/shields.svg?style=social&label=Fork',\n baseUrl\n )}\n />{' '}\n {}\n <object\n alt=\"chat on Discord\"\n data={resolveUrl(\n '/discord/308323056592486420.svg?style=social&label=Chat&link=https://discord.gg/HjJCwm5',\n baseUrl\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)\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 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 { 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 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 { 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: PropTypes.object.isRequired,\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 '../../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 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 '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 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":""}