{"version":3,"file":"like.js","mappings":"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","sources":["webpack://gitfab2/./node_modules/hyperapp/index.js","webpack://gitfab2/./app/frontend/like.ts"],"sourcesContent":["var SSR_NODE = 1\nvar TEXT_NODE = 3\nvar EMPTY_OBJ = {}\nvar EMPTY_ARR = []\nvar SVG_NS = \"http://www.w3.org/2000/svg\"\n\nvar id = (a) => a\nvar map = EMPTY_ARR.map\nvar isArray = Array.isArray\nvar enqueue =\n typeof requestAnimationFrame !== \"undefined\"\n ? requestAnimationFrame\n : setTimeout\n\nvar createClass = (obj) => {\n var out = \"\"\n\n if (typeof obj === \"string\") return obj\n\n if (isArray(obj)) {\n for (var k = 0, tmp; k < obj.length; k++) {\n if ((tmp = createClass(obj[k]))) {\n out += (out && \" \") + tmp\n }\n }\n } else {\n for (var k in obj) {\n if (obj[k]) out += (out && \" \") + k\n }\n }\n\n return out\n}\n\nvar shouldRestart = (a, b) => {\n for (var k in { ...a, ...b }) {\n if (typeof (isArray(a[k]) ? a[k][0] : a[k]) === \"function\") {\n b[k] = a[k]\n } else if (a[k] !== b[k]) return true\n }\n}\n\nvar patchSubs = (oldSubs, newSubs = EMPTY_ARR, dispatch) => {\n for (\n var subs = [], i = 0, oldSub, newSub;\n i < oldSubs.length || i < newSubs.length;\n i++\n ) {\n oldSub = oldSubs[i]\n newSub = newSubs[i]\n\n subs.push(\n newSub && newSub !== true\n ? !oldSub ||\n newSub[0] !== oldSub[0] ||\n shouldRestart(newSub[1], oldSub[1])\n ? [\n newSub[0],\n newSub[1],\n (oldSub && oldSub[2](), newSub[0](dispatch, newSub[1])),\n ]\n : oldSub\n : oldSub && oldSub[2]()\n )\n }\n return subs\n}\n\nvar getKey = (vdom) => (vdom == null ? vdom : vdom.key)\n\nvar patchProperty = (node, key, oldValue, newValue, listener, isSvg) => {\n if (key === \"style\") {\n for (var k in { ...oldValue, ...newValue }) {\n oldValue = newValue == null || newValue[k] == null ? \"\" : newValue[k]\n if (k[0] === \"-\") {\n node[key].setProperty(k, oldValue)\n } else {\n node[key][k] = oldValue\n }\n }\n } else if (key[0] === \"o\" && key[1] === \"n\") {\n if (\n !((node.events || (node.events = {}))[(key = key.slice(2))] = newValue)\n ) {\n node.removeEventListener(key, listener)\n } else if (!oldValue) {\n node.addEventListener(key, listener)\n }\n } else if (!isSvg && key !== \"list\" && key !== \"form\" && key in node) {\n node[key] = newValue == null ? \"\" : newValue\n } else if (newValue == null || newValue === false) {\n node.removeAttribute(key)\n } else {\n node.setAttribute(key, newValue)\n }\n}\n\nvar createNode = (vdom, listener, isSvg) => {\n var props = vdom.props\n var node =\n vdom.type === TEXT_NODE\n ? document.createTextNode(vdom.tag)\n : (isSvg = isSvg || vdom.tag === \"svg\")\n ? document.createElementNS(SVG_NS, vdom.tag, props.is && props)\n : document.createElement(vdom.tag, props.is && props)\n\n for (var k in props) {\n patchProperty(node, k, null, props[k], listener, isSvg)\n }\n\n for (var i = 0; i < vdom.children.length; i++) {\n node.appendChild(\n createNode(\n (vdom.children[i] = maybeVNode(vdom.children[i])),\n listener,\n isSvg\n )\n )\n }\n\n return (vdom.node = node)\n}\n\nvar patch = (parent, node, oldVNode, newVNode, listener, isSvg) => {\n if (oldVNode === newVNode) {\n } else if (\n oldVNode != null &&\n oldVNode.type === TEXT_NODE &&\n newVNode.type === TEXT_NODE\n ) {\n if (oldVNode.tag !== newVNode.tag) node.nodeValue = newVNode.tag\n } else if (oldVNode == null || oldVNode.tag !== newVNode.tag) {\n node = parent.insertBefore(\n createNode((newVNode = maybeVNode(newVNode)), listener, isSvg),\n node\n )\n if (oldVNode != null) {\n parent.removeChild(oldVNode.node)\n }\n } else {\n var tmpVKid\n var oldVKid\n\n var oldKey\n var newKey\n\n var oldProps = oldVNode.props\n var newProps = newVNode.props\n\n var oldVKids = oldVNode.children\n var newVKids = newVNode.children\n\n var oldHead = 0\n var newHead = 0\n var oldTail = oldVKids.length - 1\n var newTail = newVKids.length - 1\n\n isSvg = isSvg || newVNode.tag === \"svg\"\n\n for (var i in { ...oldProps, ...newProps }) {\n if (\n (i === \"value\" || i === \"selected\" || i === \"checked\"\n ? node[i]\n : oldProps[i]) !== newProps[i]\n ) {\n patchProperty(node, i, oldProps[i], newProps[i], listener, isSvg)\n }\n }\n\n while (newHead <= newTail && oldHead <= oldTail) {\n if (\n (oldKey = getKey(oldVKids[oldHead])) == null ||\n oldKey !== getKey(newVKids[newHead])\n ) {\n break\n }\n\n patch(\n node,\n oldVKids[oldHead].node,\n oldVKids[oldHead],\n (newVKids[newHead] = maybeVNode(\n newVKids[newHead++],\n oldVKids[oldHead++]\n )),\n listener,\n isSvg\n )\n }\n\n while (newHead <= newTail && oldHead <= oldTail) {\n if (\n (oldKey = getKey(oldVKids[oldTail])) == null ||\n oldKey !== getKey(newVKids[newTail])\n ) {\n break\n }\n\n patch(\n node,\n oldVKids[oldTail].node,\n oldVKids[oldTail],\n (newVKids[newTail] = maybeVNode(\n newVKids[newTail--],\n oldVKids[oldTail--]\n )),\n listener,\n isSvg\n )\n }\n\n if (oldHead > oldTail) {\n while (newHead <= newTail) {\n node.insertBefore(\n createNode(\n (newVKids[newHead] = maybeVNode(newVKids[newHead++])),\n listener,\n isSvg\n ),\n (oldVKid = oldVKids[oldHead]) && oldVKid.node\n )\n }\n } else if (newHead > newTail) {\n while (oldHead <= oldTail) {\n node.removeChild(oldVKids[oldHead++].node)\n }\n } else {\n for (var keyed = {}, newKeyed = {}, i = oldHead; i <= oldTail; i++) {\n if ((oldKey = oldVKids[i].key) != null) {\n keyed[oldKey] = oldVKids[i]\n }\n }\n\n while (newHead <= newTail) {\n oldKey = getKey((oldVKid = oldVKids[oldHead]))\n newKey = getKey(\n (newVKids[newHead] = maybeVNode(newVKids[newHead], oldVKid))\n )\n\n if (\n newKeyed[oldKey] ||\n (newKey != null && newKey === getKey(oldVKids[oldHead + 1]))\n ) {\n if (oldKey == null) {\n node.removeChild(oldVKid.node)\n }\n oldHead++\n continue\n }\n\n if (newKey == null || oldVNode.type === SSR_NODE) {\n if (oldKey == null) {\n patch(\n node,\n oldVKid && oldVKid.node,\n oldVKid,\n newVKids[newHead],\n listener,\n isSvg\n )\n newHead++\n }\n oldHead++\n } else {\n if (oldKey === newKey) {\n patch(\n node,\n oldVKid.node,\n oldVKid,\n newVKids[newHead],\n listener,\n isSvg\n )\n newKeyed[newKey] = true\n oldHead++\n } else {\n if ((tmpVKid = keyed[newKey]) != null) {\n patch(\n node,\n node.insertBefore(tmpVKid.node, oldVKid && oldVKid.node),\n tmpVKid,\n newVKids[newHead],\n listener,\n isSvg\n )\n newKeyed[newKey] = true\n } else {\n patch(\n node,\n oldVKid && oldVKid.node,\n null,\n newVKids[newHead],\n listener,\n isSvg\n )\n }\n }\n newHead++\n }\n }\n\n while (oldHead <= oldTail) {\n if (getKey((oldVKid = oldVKids[oldHead++])) == null) {\n node.removeChild(oldVKid.node)\n }\n }\n\n for (var i in keyed) {\n if (newKeyed[i] == null) {\n node.removeChild(keyed[i].node)\n }\n }\n }\n }\n\n return (newVNode.node = node)\n}\n\nvar propsChanged = (a, b) => {\n for (var k in a) if (a[k] !== b[k]) return true\n for (var k in b) if (a[k] !== b[k]) return true\n}\n\nvar maybeVNode = (newVNode, oldVNode) =>\n newVNode !== true && newVNode !== false && newVNode\n ? typeof newVNode.tag === \"function\"\n ? ((!oldVNode ||\n oldVNode.memo == null ||\n propsChanged(oldVNode.memo, newVNode.memo)) &&\n ((oldVNode = newVNode.tag(newVNode.memo)).memo = newVNode.memo),\n oldVNode)\n : newVNode\n : text(\"\")\n\nvar recycleNode = (node) =>\n node.nodeType === TEXT_NODE\n ? text(node.nodeValue, node)\n : createVNode(\n node.nodeName.toLowerCase(),\n EMPTY_OBJ,\n map.call(node.childNodes, recycleNode),\n SSR_NODE,\n node\n )\n\nvar createVNode = (tag, { key, ...props }, children, type, node) => ({\n tag,\n props,\n key,\n children,\n type,\n node,\n})\n\nexport var memo = (tag, memo) => ({ tag, memo })\n\nexport var text = (value, node) =>\n createVNode(value, EMPTY_OBJ, EMPTY_ARR, TEXT_NODE, node)\n\nexport var h = (tag, { class: c, ...props }, children = EMPTY_ARR) =>\n createVNode(\n tag,\n { ...props, ...(c ? { class: createClass(c) } : EMPTY_OBJ) },\n isArray(children) ? children : [children]\n )\n\nexport var app = ({\n node,\n view,\n subscriptions,\n dispatch = id,\n init = EMPTY_OBJ,\n}) => {\n var vdom = node && recycleNode(node)\n var subs = []\n var state\n var busy\n\n var update = (newState) => {\n if (state !== newState) {\n if ((state = newState) == null) dispatch = subscriptions = render = id\n if (subscriptions) subs = patchSubs(subs, subscriptions(state), dispatch)\n if (view && !busy) enqueue(render, (busy = true))\n }\n }\n\n var render = () =>\n (node = patch(\n node.parentNode,\n node,\n vdom,\n (vdom = view(state)),\n listener,\n (busy = false)\n ))\n\n var listener = function (event) {\n dispatch(this.events[event.type], event)\n }\n\n return (\n (dispatch = dispatch((action, props) =>\n typeof action === \"function\"\n ? dispatch(action(state, props))\n : isArray(action)\n ? typeof action[0] === \"function\"\n ? dispatch(action[0], action[1])\n : action\n .slice(1)\n .map(\n (fx) => fx && fx !== true && (fx[0] || fx)(dispatch, fx[1]),\n update(action[0])\n )\n : update(action)\n ))(init),\n dispatch\n )\n}\n","import { app, h, Dispatch } from \"hyperapp\";\n\ninterface State {\n clickEnabled: boolean;\n liked: boolean;\n likeUrl: string;\n visible: boolean;\n}\n\nconst sendRequest = (url: string, method: string) => {\n return fetch(url, {\n method: method,\n credentials: \"same-origin\",\n headers: new Headers({\n 'X-CSRF-Token': getCsrfToken()\n })\n });\n};\n\nconst getCsrfToken = () => {\n const tokenDom = document.querySelector(\"meta[name=csrf-token]\");\n if (tokenDom) {\n return tokenDom.getAttribute(\"content\") || \"\";\n } else {\n return \"\";\n }\n}\n\nconst Enable = (state: State, clickEnabled: boolean) => ({ ...state, clickEnabled });\nconst SetIcon = (state: State, liked: boolean) => ({ ...state, liked });\nconst Like = (state: State) => [\n state,\n (dispatch: Dispatch) => {\n dispatch(Enable, false);\n sendRequest(state.likeUrl, \"POST\")\n .then(response => {\n if (response.ok) {\n dispatch(SetIcon, true);\n } else {\n dispatch(SetIcon, false);\n }\n dispatch(Enable, true);\n }).catch(_ => {\n alertError();\n dispatch(Enable, true);\n });\n }\n];\nconst Unlike = (state: State) => [\n state,\n (dispatch: Dispatch) => {\n dispatch(Enable, false);\n sendRequest(state.likeUrl, \"DELETE\")\n .then(response => {\n if (response.ok) {\n dispatch(SetIcon, false);\n } else {\n dispatch(SetIcon, true);\n }\n dispatch(Enable, true);\n }).catch(_ => {\n alertError();\n dispatch(Enable, true);\n });\n }\n];\n\nconst alertError = () =>\n alert(\"An unexpected error occurred. Please try again later.\");\n\nconst init = (container: HTMLDivElement, likeUrl: string, liked: boolean, visible: boolean) => {\n app({\n init: {\n clickEnabled: true,\n liked: liked,\n likeUrl: likeUrl,\n visible: visible,\n } as State,\n view: (state) =>\n h(\"span\", {\n className: `${state.visible ? \"icon\" : \"\"} ${\n state.liked ? \"icon-liked\" : \"icon-like\"\n } ${state.clickEnabled ? \"\" : \"disabled\"}`,\n // @ts-ignore\n onclick: (state, event) => {\n event.stopPropagation();\n if (state.clickEnabled) {\n if (state.liked) {\n return Unlike;\n } else {\n return Like;\n }\n } else {\n return state;\n }\n },\n }, []),\n node: container\n })\n};\n\nconst container = document.querySelector(\"#like-component\");\nif (container && container.dataset.likeUrl) {\n const likeUrl = container.dataset.likeUrl;\n fetch(likeUrl, {\n credentials: \"same-origin\",\n headers: new Headers({\n 'X-CSRF-Token': getCsrfToken()\n })\n }).then(response => response.json())\n .then(data => init(container, likeUrl, data.like.liked, true))\n .catch(_ => init(container, likeUrl, false, false));\n}\n"],"names":["EMPTY_OBJ","EMPTY_ARR","id","a","map","isArray","Array","enqueue","requestAnimationFrame","setTimeout","createClass","obj","out","tmp","k","length","shouldRestart","b","getKey","vdom","key","patchProperty","node","oldValue","newValue","listener","isSvg","setProperty","events","slice","addEventListener","removeEventListener","removeAttribute","setAttribute","createNode","props","type","document","createTextNode","tag","createElementNS","is","createElement","i","children","appendChild","maybeVNode","patch","parent","oldVNode","newVNode","nodeValue","insertBefore","removeChild","tmpVKid","oldVKid","oldKey","newKey","oldProps","newProps","oldVKids","newVKids","oldHead","newHead","oldTail","newTail","keyed","newKeyed","memo","propsChanged","recycleNode","nodeType","createVNode","nodeName","toLowerCase","call","childNodes","value","app","view","subscriptions","dispatch","init","state","busy","subs","update","newState","render","oldSubs","newSubs","oldSub","newSub","push","patchSubs","parentNode","event","this","action","fx","sendRequest","url","method","fetch","credentials","headers","Headers","getCsrfToken","tokenDom","querySelector","getAttribute","Enable","clickEnabled","SetIcon","liked","Like","likeUrl","then","response","ok","catch","_","alertError","Unlike","alert","container","visible","class","c","h","className","onclick","stopPropagation","dataset","json","data","like"],"sourceRoot":""}