{"version":3,"file":"js/877-e64fb5917e98312b0b43.js","mappings":"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","sources":["webpack://paint_pad/./app/views/icons/check.svg","webpack://paint_pad/./app/views/icons/list_add.svg","webpack://paint_pad/./app/views/icons/list_added.svg","webpack://paint_pad/./app/views/icons/remove.svg","webpack://paint_pad/./app/assets/components/paint_block/index.js","webpack://paint_pad/./app/assets/components/paint_block/unauthenticated.js","webpack://paint_pad/./app/assets/components/paint_list/components/range_heading.js","webpack://paint_pad/./app/assets/components/paint_list/components/recipe_requirements.js","webpack://paint_pad/./app/assets/components/paint_list/components/type_heading.js","webpack://paint_pad/./app/assets/components/paint_list/index.js","webpack://paint_pad/./app/assets/components/paint_swatch.js","webpack://paint_pad/./app/assets/components/autolinked_text.js","webpack://paint_pad/./app/assets/components/recipe_content/components/step_content.js","webpack://paint_pad/./app/assets/components/recipe_content/components/recipe_item.js","webpack://paint_pad/./app/assets/components/recipe_content/components/recipe_items.js","webpack://paint_pad/./app/assets/components/recipe_content/index.js","webpack://paint_pad/./app/views/icons/star.svg","webpack://paint_pad/./app/assets/components/stars_button/index.js","webpack://paint_pad/./app/assets/lib/apollo_client.js","webpack://paint_pad/./app/assets/lib/filter_paints.js","webpack://paint_pad/./app/assets/lib/group_paints_by_type.js","webpack://paint_pad/./app/assets/lib/perform_direct_image_upload.js","webpack://paint_pad/./app/assets/lib/react_component_controller.js","webpack://paint_pad/./app/assets/lib/recipe_items.js","webpack://paint_pad/./app/assets/lib/request.js","webpack://paint_pad/./app/assets/lib/show_authentication_modal.js"],"sourcesContent":["var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgCheck = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"\n})));\nexport default SvgCheck;","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgListAdd = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 10H2v2h12v-2zm0-4H2v2h12V6zm4 8v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zM2 16h8v-2H2v2z\"\n})));\nexport default SvgListAdd;","var _defs, _clipPath, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgListAdded = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n width: 24,\n height: 24\n}, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"path\", {\n id: \"list_added_svg__a\",\n d: \"M0 0h24v24H0V0z\"\n}))), _clipPath || (_clipPath = /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"list_added_svg__b\"\n}, /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#list_added_svg__a\",\n overflow: \"visible\"\n}))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 10H2v2h12v-2zm0-4H2v2h12V6zM2 16h8v-2H2v2zm19.5-4.5L23 13l-6.99 7-4.51-4.5L13 14l3.01 3 5.49-5.5z\",\n clipPath: \"url(#list_added_svg__b)\"\n})));\nexport default SvgListAdded;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgRemove = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 13H5v-2h14v2z\"\n})));\nexport default SvgRemove;","import React from \"react\"\nimport ContentEditable from \"react-contenteditable\"\n\nimport PaintSwatch from \"components/paint_swatch\"\n\nimport CheckIcon from \"../../../views/icons/check.svg\"\nimport RemoveIcon from \"../../../views/icons/remove.svg\"\nimport ListAdd from \"../../../views/icons/list_add.svg\"\nimport ListAdded from \"../../../views/icons/list_added.svg\"\n\nimport \"./styles.scss\"\n\nconst PaintBlock = ({ quantity, needed, isMini, setQuantity, setNeeded, ...paint }) => {\n const isOwned = quantity > 0\n\n const classes = [\n \"paint-block\",\n isOwned ? \"paint-block--owned\" : \"\",\n isMini ? \"paint-block--mini\" : \"\",\n needed ? \"paint-block--needed\" : \"\"\n ]\n\n const onInventoryClick = () => {\n setQuantity(isOwned ? 0 : 1)\n }\n\n const onListClick = () => {\n const newNeeded = !needed\n\n setNeeded(newNeeded)\n }\n\n const onQuantityChange = event => {\n setQuantity(event.currentTarget.textContent)\n }\n\n const onQuantityFocus = event => {\n const selection = window.getSelection()\n const range = document.createRange()\n\n range.selectNodeContents(event.currentTarget)\n selection.removeAllRanges()\n selection.addRange(range)\n }\n\n return (\n
\n
\n \n {isOwned ? : }\n \n\n \n
\n\n
\n
\n \n
\n\n \n
\n
\n )\n}\n\nexport default PaintBlock\n","import React from \"react\"\n\nimport PaintBlock from \"../paint_block\"\n\nimport showAuthenticationModal from \"../../lib/show_authentication_modal\"\n\nconst UnauthenticatedPaintBlock = paint => {\n return (\n \n showAuthenticationModal(\"shopping_list\", {\n paint_id: paint.id\n })\n }\n setQuantity={quantity =>\n showAuthenticationModal(\"inventory\", {\n paint_id: paint.id,\n quantity\n })\n }\n {...paint}\n />\n )\n}\n\nexport default UnauthenticatedPaintBlock\n","import React from \"react\"\n\nconst RangeHeading = ({ name, url, paintTypes, selectedPaints, isLink }) => (\n
\n {isLink ? {name} : name}\n\n {paintTypes.length > 1 && {selectedPaints}}\n
\n)\n\nexport default RangeHeading\n","import React from \"react\"\n\nimport CheckIcon from \"../../../../views/icons/check.svg\"\n\nconst Summary = ({ ownedPaintsCount, totalPaints }) => {\n let message\n\n if (totalPaints === ownedPaintsCount) {\n message = \"You have all the paints you need for this recipe\"\n } else if (ownedPaintsCount > 0) {\n message = (\n \n You have{\" \"}\n \n {ownedPaintsCount} of {totalPaints} paints\n {\" \"}\n needed for this recipe\n \n )\n } else {\n message = (\n \n You don’t have any of the paints required for this recipe\n \n )\n }\n\n return

{message}

\n}\n\nconst ShoppingListSummary = ({\n totalPaints,\n missingPaints,\n neededPaints,\n handleClick\n}) => {\n if (neededPaints.length === 0 && missingPaints.length === 0) {\n return null\n }\n\n const onClick = event => {\n event.preventDefault()\n handleClick()\n }\n\n const message =\n totalPaints === missingPaints.length\n ? \"Add all paints to your shopping list\"\n : \"Add missing paints to your shopping list\"\n\n return (\n
\n {neededPaints.length > 0 && (\n

\n \n {neededPaints.length} {neededPaints.length > 1 ? \"paints\" : \"paint\"}\n {\" \"}\n {neededPaints.length > 1 ? \"are\" : \"is\"} on your{\" \"}\n shopping list\n

\n )}\n\n {missingPaints.length !== 0 && (\n

\n \n {message}\n \n

\n )}\n
\n )\n}\n\nconst RecipeRequirements = ({\n ownedPaintsCount,\n totalPaints,\n missingPaints,\n neededPaints,\n addToShoppingList\n}) => (\n \n {ownedPaintsCount === totalPaints && (\n
\n \n
\n )}\n\n
\n \n\n \n
\n \n)\n\nexport default React.memo(RecipeRequirements)\n","import React from \"react\"\n\nconst TypeHeading = ({ name, selectedPaints }) => (\n
\n {name}\n {selectedPaints}\n
\n)\n\nexport default TypeHeading\n","import React from \"react\"\nimport { intersection } from \"lodash\"\n\nimport groupPaintsByType from \"../../lib/group_paints_by_type\"\nimport PaintBlock from \"../paint_block\"\nimport UnauthenticatedPaintBlock from \"../paint_block/unauthenticated\"\nimport PaintSwatch from \"../paint_swatch\"\nimport RangeHeading from \"./components/range_heading\"\nimport RecipeRequirements from \"./components/recipe_requirements\"\nimport TypeHeading from \"./components/type_heading\"\n\nimport showAuthenticationModal from \"../../lib/show_authentication_modal\"\n\nconst PaintList = ({\n paints,\n paintRanges,\n includeUserTools = true,\n isAuthenticated = false,\n ownedAndNeededPaints = {\n quantities: {},\n neededPaints: []\n }\n}) => {\n const groupedPaints = groupPaintsByType(paintRanges, paints)\n const totalPaints = paints.length\n\n const ownedPaints = paints.reduce((obj, paint) => {\n obj[paint.id] = ownedAndNeededPaints.quantities[paint.id] || 0\n return obj\n }, {})\n const ownedPaintsCount = Object.values(ownedPaints).filter(\n quantity => quantity > 0\n ).length\n\n const neededPaints = intersection(\n ownedAndNeededPaints.neededPaints,\n Object.keys(ownedPaints)\n )\n\n const missingPaints = paints\n .filter(({ id }) => !ownedPaints[id] && !neededPaints.includes(id))\n .map(({ id }) => id)\n\n const addToShoppingList = isAuthenticated\n ? () => ownedAndNeededPaints.needAll(missingPaints)\n : () =>\n showAuthenticationModal(\"shopping_list\", {\n paint_id: missingPaints\n })\n\n return (\n \n )\n}\n\nexport default PaintList\n","import React from \"react\"\n\nclass PaintSwatch extends React.PureComponent {\n render() {\n let { name, swatchStyle, inline, manufacturerCode } = this.props\n\n return (\n \n {swatchStyle && (\n \n )}\n {swatchStyle && name && \" \"}\n {!inline && manufacturerCode && (\n \n )}\n {!inline && manufacturerCode && \" \"}\n {name && (\n \n )}\n \n )\n }\n}\n\nexport default PaintSwatch\n","import React from \"react\"\nimport Autolinker from \"autolinker\"\n\nconst NEWLINE_REGEX = /(\\r\\n|\\r|\\n)/g\n\n// This is a rip off of: https://github.com/yosuke-furukawa/react-nl2br/blob/master/index.js\nconst nl2br = text => {\n if (typeof text !== \"string\") {\n return text\n }\n\n return text.split(NEWLINE_REGEX).map(function (line, index) {\n if (line.match(NEWLINE_REGEX)) {\n return
\n }\n\n return line\n })\n}\n\nconst AutolinkedText = ({ text }) => {\n let elements = []\n let lastIndex = 0\n const parsedText = Autolinker.parse(text, {\n stripPrefix: { scheme: false, www: false }\n })\n\n parsedText.forEach(match => {\n if (match.getOffset() !== 0) {\n elements.push(nl2br(text.slice(lastIndex, match.getOffset())))\n }\n\n elements.push(\n \n {match.getAnchorText()}\n \n )\n lastIndex = match.offset + match.getMatchedText().length\n })\n\n if (lastIndex < text.length) {\n elements.push(nl2br(text.slice(lastIndex)))\n }\n\n return elements\n}\n\nexport default AutolinkedText\n","import React from \"react\"\nimport { isObject } from \"lodash\"\n\nimport AutolinkedText from \"components/autolinked_text\"\nimport PaintSwatch from \"components/paint_swatch\"\n\nclass StepContent extends React.PureComponent {\n render() {\n return (\n \n {this.props.tokens.map((token, key) => {\n if (isObject(token)) {\n return (\n \n )\n } else {\n return \n }\n })}\n \n )\n }\n}\n\nexport default StepContent\n","import React from \"react\"\n\nimport StepContent from \"./step_content\"\n\nconst elements = {\n heading: \"h2\",\n paragraph: \"p\",\n step: \"li\"\n}\n\nclass RecipeItem extends React.Component {\n render() {\n const { tokens, type, photo, photoSrc } = this.props\n const Element = elements[type]\n\n // TODO: refactor this using classnames\n const className = `recipe-item recipe-item--${type} ${\n photoSrc ? \"recipe-item--has-photo\" : \"\"\n }`\n\n return (\n \n {photo ? (\n <>\n \n \"\"\n \n\n \n \n \n \n ) : (\n \n \n \n )}\n \n )\n }\n}\n\nexport default RecipeItem\n","import React from \"react\"\nimport { first } from \"lodash\"\n\nimport RecipeItem from \"./recipe_item\"\n\nclass RecipeItems extends React.PureComponent {\n render() {\n const { items } = this.props\n\n return (\n <>\n {items.map(itemGroup => {\n const recipeItem = first(itemGroup)\n\n if (recipeItem.type == \"step\") {\n let classNames = \"recipe-items\"\n if (itemGroup.length > 9) classNames = `${classNames} recipe-items--long`\n\n return (\n
    item.id).join(\"-\")} className={classNames}>\n {itemGroup.map(item => (\n \n ))}\n
\n )\n } else {\n return \n }\n })}\n \n )\n }\n}\n\nexport default RecipeItems\n","import React from \"react\"\nimport { isEmpty } from \"lodash\"\n\nimport AutolinkedText from \"../autolinked_text\"\nimport RecipeItems from \"./components/recipe_items\"\n\nconst RecipeVideo = ({ videoId }) => (\n
\n \n
\n)\n\nconst RecipeContent = ({ description, items, videoId }) => {\n return (\n
\n {!isEmpty(videoId) && }\n {!isEmpty(description) && (\n

\n \n

\n )}\n\n {isEmpty(items) &&

No steps have been added to this recipe.

}\n {!isEmpty(items) && }\n
\n )\n}\n\nexport default RecipeContent\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgStar = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m12 17.27 4.15 2.51c.76.46 1.69-.22 1.49-1.08l-1.1-4.72 3.67-3.18c.67-.58.31-1.68-.57-1.75l-4.83-.41-1.89-4.46c-.34-.81-1.5-.81-1.84 0L9.19 8.63l-4.83.41c-.88.07-1.24 1.17-.57 1.75l3.67 3.18-1.1 4.72c-.2.86.73 1.54 1.49 1.08l4.15-2.5Z\"\n})));\nexport default SvgStar;","import React, { useState } from \"react\"\n\nimport Star from \"../../../views/icons/star.svg\"\nimport showAuthenticationModal from \"../../lib/show_authentication_modal\"\nimport { patch } from \"lib/request\"\n\nimport \"./styles/index.scss\"\n\nconst StarsButton = ({ isAuthenticated, isDisabled, recipeId, url, ...props }) => {\n const [isStarred, setIsStarred] = useState(props.isStarred)\n const [count, setCount] = useState(props.count)\n\n const className = [\n \"stars-button\",\n isStarred ? \"stars-button--starred\" : \"\",\n count == 0 ? \"stars-button--none\" : \"\",\n isDisabled ? \"stars-button--disabled\" : \"\"\n ].join(\" \")\n\n let handleClick = null\n\n if (!isDisabled && isAuthenticated) {\n handleClick = () => {\n if (!isStarred) {\n setIsStarred(true)\n setCount(count + 1)\n } else {\n setIsStarred(false)\n setCount(count - 1)\n }\n\n patch(url)\n }\n } else if (!isDisabled) {\n handleClick = () => {\n showAuthenticationModal(\"star\", {\n recipe_id: recipeId\n })\n }\n }\n\n return (\n \n )\n}\n\nexport default StarsButton\n","import { ApolloClient, InMemoryCache } from \"@apollo/client\"\n\nconst cache = new InMemoryCache({\n typePolicies: {\n LogEntry: {\n fields: {\n collection(existingCollection, { canRead }) {\n return canRead(existingCollection) ? existingCollection : null\n }\n }\n }\n }\n})\n\nconst client = new ApolloClient({ uri: \"/graphql\", cache })\n\nexport default client\n","import fuzzy from \"fuzzy\"\nimport { orderBy } from \"lodash\"\n\nconst OPTIONS = {\n pre: \"\",\n post: \"\"\n}\n\nconst filterByAttribute = (token, paints, attribute) =>\n fuzzy\n .filter(token, paints, { ...OPTIONS, extract: el => el[attribute] })\n .map(({ original, string, score }) => ({\n ...original,\n score,\n [attribute]: string\n }))\n\nconst filterByPaintRangeName = (token, paints) =>\n fuzzy\n .filter(\n token,\n paints.filter(paint => paint.paintRange),\n { extract: el => el.paintRange.name }\n )\n .map(({ original }) => original)\n\nconst filterByNameAndManufacturerCode = (token, paints) => {\n const paintsByName = filterByAttribute(token, paints, \"name\")\n const paintsByManufacturerCode = filterByAttribute(token, paints, \"manufacturerCode\")\n\n const combinedResults = [...paintsByName]\n paintsByManufacturerCode.forEach(paint => {\n const foundPaint = combinedResults.find(({ id }) => id === paint.id)\n\n if (foundPaint) {\n const { score, manufacturerCode } = paint\n\n Object.assign(foundPaint, {\n manufacturerCode,\n score: score + foundPaint.score\n })\n } else {\n combinedResults.push(paint)\n }\n })\n\n return combinedResults\n}\n\nexport default ({ token, paints, limit }) => {\n const [paintToken, paintRangeToken] = token.split(\"/\", 2).reverse()\n\n if (paintRangeToken) {\n paints = filterByPaintRangeName(paintRangeToken, paints)\n }\n\n const foundPaints = filterByNameAndManufacturerCode(paintToken, paints)\n\n let results\n\n if (foundPaints.length === 0) {\n results = paintRangeToken ? paints : filterByPaintRangeName(paintToken, paints)\n } else {\n results = orderBy(foundPaints, [\"score\", \"id\"], [\"desc\", \"asc\"])\n }\n\n if (limit) {\n return results.slice(0, limit)\n }\n\n return results\n}\n","import { sortBy } from \"lodash\"\n\nexport default (paintRanges, paints) =>\n sortBy(paintRanges, \"name\")\n .map(paintRange => {\n const paintsForRange = paints.filter(\n ({ paintRangeId }) => paintRangeId == paintRange.id\n )\n\n return {\n ...paintRange,\n selectedPaints: paintsForRange.length,\n paintTypes: paintRange.paintTypes\n .map(paintType => {\n const paintsForType = paintsForRange.filter(({ type }) => type == paintType)\n\n return {\n name: paintType,\n selectedPaints: paintsForType.length,\n paints: sortBy(paintsForType, [\"manufacturerCode\", \"name\"])\n }\n })\n .filter(({ selectedPaints }) => selectedPaints > 0)\n }\n })\n .filter(({ selectedPaints }) => selectedPaints > 0)\n","import { DirectUpload } from \"activestorage\"\nimport { startsWith } from \"lodash\"\n\nconst performDirectImageUpload = ({ fileInput, url, beforeUpload, afterUpload }) => {\n const file = fileInput.files[0]\n\n if (!file) {\n return\n }\n\n if (!startsWith(file.type, \"image/\")) {\n alert(\"That file doesn't look like an image! Try another file.\")\n\n fileInput.value = \"\"\n return\n }\n\n if (beforeUpload) {\n beforeUpload()\n }\n\n const upload = new DirectUpload(file, url)\n\n upload.create((error, attributes) => {\n if (error) {\n // TODO: proper error handling?\n alert(\"There was a problem uploading your image. Reload this page and try again.\")\n return\n }\n\n afterUpload(attributes)\n })\n}\n\nexport default performDirectImageUpload\n","import ReactDOM from \"react-dom\"\nimport { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n get mountPoint() {\n return this.element\n }\n\n get props() {\n this._props = this._props || JSON.parse(this.data.get(\"props\"))\n return this._props\n }\n\n get component() {\n throw \"You must override ReactComponentController.component() and return a React component\"\n }\n\n connect() {\n ReactDOM.render(this.component, this.mountPoint)\n }\n\n disconnect() {\n ReactDOM.unmountComponentAtNode(this.mountPoint)\n }\n}\n","import { compact, isEmpty, last, startCase, trim, uniq } from \"lodash\"\n\nconst PAINT_REGEX = /(:(?:\\d+[a-z]|[a-z]+)[a-z\\d/]*:)/i\n\nconst getPaintByToken = (token, paints) => {\n if (token.includes(\"/\")) {\n return paints.find(paint => paint.fullIdentifier == token)\n } else {\n return paints.find(paint => paint.identifier == token)\n }\n}\n\nconst convertTokenToObject = (token, paints, alternativePaintIds) => {\n if (!PAINT_REGEX.test(token)) {\n return token\n }\n\n token = trim(token, \":\")\n let paint = getPaintByToken(token, paints)\n\n if (paint && alternativePaintIds[paint.id]) {\n paint = paints.find(({ id }) => id === alternativePaintIds[paint.id])\n }\n\n if (paint) {\n return paint\n } else {\n return { name: startCase(token) }\n }\n}\n\nconst getTokenisedItem = (step, paints, alternativePaintIds = {}) => {\n const tokens = step.content\n .split(PAINT_REGEX)\n .map(token => convertTokenToObject(token, paints, alternativePaintIds))\n\n return {\n ...step,\n tokens,\n paintIds: uniq(compact(tokens.map(token => token.id))).sort()\n }\n}\n\nconst groupAndTokeniseRecipeItems = (items, paints, alternativePaintIds = {}) =>\n items\n .filter(item => !isEmpty(item.content))\n .reduce((collection, item) => {\n const lastItemGroup = last(collection)\n const lastItem = last(lastItemGroup)\n\n if (\n !lastItemGroup ||\n (lastItem && lastItem.type != item.type) ||\n item.type == \"heading\" ||\n item.type == \"paragraph\"\n ) {\n collection.push([])\n }\n\n const lastIndex = collection.length - 1\n\n collection[lastIndex].push(getTokenisedItem(item, paints, alternativePaintIds))\n\n return collection\n }, [])\n\nexport default groupAndTokeniseRecipeItems\n","import queryString from \"query-string\"\n\nconst handleErrors = response => {\n if (!response.ok) {\n throw Error(response.statusText)\n }\n return response\n}\n\nconst csrfToken = () => {\n const param = document.head.querySelector(\"[name=csrf-param]\")\n const token = document.head.querySelector(\"[name=csrf-token]\")\n\n if (param && token) {\n return { [param.content]: token.content }\n }\n}\n\nconst urlWithQueryString = (url, data) =>\n data ? `${url}?${queryString.stringify(data, { arrayFormat: \"bracket\" })}` : url\n\nexport const get = (url, data) =>\n fetch(urlWithQueryString(url, data), {\n method: \"GET\",\n credentials: \"same-origin\",\n headers: {\n \"content-type\": \"application/json\"\n }\n }).then(handleErrors)\n\nexport const post = (url, body) =>\n fetch(url, {\n method: \"POST\",\n body: JSON.stringify({ ...csrfToken(), ...body }),\n credentials: \"same-origin\",\n headers: {\n \"content-type\": \"application/json\"\n }\n }).then(handleErrors)\n\nexport const patch = (url, body) =>\n fetch(url, {\n method: \"PATCH\",\n body: JSON.stringify({ ...csrfToken(), ...body }),\n credentials: \"same-origin\",\n headers: {\n \"content-type\": \"application/json\"\n }\n }).then(handleErrors)\n\nexport const del = (url, body) =>\n fetch(url, {\n method: \"DELETE\",\n body: JSON.stringify({ ...csrfToken(), ...body }),\n credentials: \"same-origin\",\n headers: {\n \"content-type\": \"application/json\"\n }\n }).then(handleErrors)\n","const showAuthenticationModal = (mode, params = {}) => {\n const event = new CustomEvent(\"authentication-modal.show\", {\n detail: {\n mode,\n params\n }\n })\n\n window.dispatchEvent(event)\n}\n\nexport default showAuthenticationModal\n"],"names":["_path","_path2","_extends","Object","assign","bind","n","e","arguments","length","t","r","hasOwnProperty","call","apply","props","xmlns","viewBox","fill","d","width","height","_defs","_clipPath","xmlnsXlink","id","xlinkHref","overflow","clipPath","_ref","quantity","needed","isMini","setQuantity","setNeeded","paint","_objectWithoutProperties","_excluded","isOwned","classes","React","className","join","tabIndex","onClick","CheckIcon","RemoveIcon","ContentEditable","html","toString","onChange","event","currentTarget","textContent","onFocus","selection","window","getSelection","range","document","createRange","selectNodeContents","removeAllRanges","addRange","PaintSwatch","ListAdded","ListAdd","PaintBlock","showAuthenticationModal","paint_id","name","url","paintTypes","selectedPaints","isLink","href","Summary","message","ownedPaintsCount","totalPaints","ShoppingListSummary","_ref2","missingPaints","neededPaints","handleClick","preventDefault","RecipeRequirements","_ref3","addToShoppingList","concat","paints","paintRanges","_ref$includeUserTools","includeUserTools","_ref$isAuthenticated","isAuthenticated","_ref$ownedAndNeededPa","ownedAndNeededPaints","quantities","groupedPaints","groupPaintsByType","ownedPaints","reduce","obj","values","filter","intersection","keys","includes","map","needAll","paintRange","key","RangeHeading","paintType","TypeHeading","forPaint","UnauthenticatedPaintBlock","_React$PureComponent","_classCallCheck","_callSuper","_inherits","value","_this$props","this","swatchStyle","inline","manufacturerCode","style","dangerouslySetInnerHTML","__html","NEWLINE_REGEX","nl2br","text","split","line","index","match","elements","lastIndex","Autolinker","parse","stripPrefix","scheme","www","forEach","getOffset","push","slice","getAnchorHref","target","rel","getAnchorText","offset","getMatchedText","StepContent","tokens","token","isObject","AutolinkedText","heading","paragraph","step","_React$Component","RecipeItem","type","photo","photoSrc","Element","src","thumbSrc","alt","JSON","stringify","RecipeItems","items","itemGroup","recipeItem","first","classNames","item","RecipeVideo","videoId","title","frameBorder","allow","allowFullScreen","description","isEmpty","isDisabled","recipeId","_useState2","_slicedToArray","useState","isStarred","setIsStarred","_useState4","count","setCount","patch","recipe_id","disabled","Star","cache","InMemoryCache","typePolicies","LogEntry","fields","collection","existingCollection","canRead","ApolloClient","uri","OPTIONS","pre","post","filterByAttribute","attribute","fuzzy","_objectSpread","extract","el","original","string","score","_defineProperty","filterByPaintRangeName","_ref4","limit","_token$split$reverse2","reverse","paintToken","paintRangeToken","results","foundPaints","paintsByName","paintsByManufacturerCode","combinedResults","_toConsumableArray","foundPaint","find","filterByNameAndManufacturerCode","orderBy","sortBy","paintsForRange","paintRangeId","paintsForType","fileInput","beforeUpload","afterUpload","file","files","startsWith","alert","DirectUpload","create","error","attributes","_default","_Controller","get","element","_props","data","ReactDOM","component","mountPoint","Controller","PAINT_REGEX","getTokenisedItem","alternativePaintIds","undefined","content","test","fullIdentifier","identifier","getPaintByToken","trim","startCase","convertTokenToObject","paintIds","uniq","compact","sort","lastItemGroup","last","lastItem","handleErrors","response","ok","Error","statusText","csrfToken","param","head","querySelector","fetch","queryString","arrayFormat","urlWithQueryString","method","credentials","headers","then","body","del","mode","CustomEvent","detail","params","dispatchEvent"],"sourceRoot":""}