{pageContext.image_text}
\n }\n >\n }\n\n{pageContext.title}
\n\n {pageContext.intro &&\n\n {pageContext.intro}\n
\n }\n\n {pageContext.main_link &&\n Registrer deg her »\n }\n\n {pageContext.content &&\n{"version":3,"file":"component---src-templates-article-js-13e3dc00de39f5298443.js","mappings":"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","sources":["webpack://tjene-penger.com/./node_modules/@sanity/block-content-to-hyperscript/internals.js","webpack://tjene-penger.com/./node_modules/@sanity/block-content-to-hyperscript/lib/blocksToNodes.js","webpack://tjene-penger.com/./node_modules/@sanity/block-content-to-hyperscript/lib/buildMarksTree.js","webpack://tjene-penger.com/./node_modules/@sanity/block-content-to-hyperscript/lib/generateKeys.js","webpack://tjene-penger.com/./node_modules/@sanity/block-content-to-hyperscript/lib/getImageUrl.js","webpack://tjene-penger.com/./node_modules/@sanity/block-content-to-hyperscript/lib/internals.js","webpack://tjene-penger.com/./node_modules/@sanity/block-content-to-hyperscript/lib/mergeSerializers.js","webpack://tjene-penger.com/./node_modules/@sanity/block-content-to-hyperscript/lib/nestLists.js","webpack://tjene-penger.com/./node_modules/@sanity/block-content-to-hyperscript/lib/serializers.js","webpack://tjene-penger.com/./node_modules/@sanity/block-content-to-hyperscript/node_modules/@sanity/generate-help-url/index.js","webpack://tjene-penger.com/./node_modules/@sanity/block-content-to-react/lib/BlockContent.js","webpack://tjene-penger.com/./node_modules/@sanity/block-content-to-react/lib/targets/dom.js","webpack://tjene-penger.com/./node_modules/@sanity/image-url/lib/browser/image-url.umd.js","webpack://tjene-penger.com/./src/components/footer.js","webpack://tjene-penger.com/./src/templates/article.js"],"sourcesContent":["module.exports = require('./lib/internals');","\"use strict\";\n\nvar objectAssign = require('object-assign');\n\nvar buildMarksTree = require('./buildMarksTree');\n\nvar nestLists = require('./nestLists');\n\nvar generateKeys = require('./generateKeys');\n\nvar mergeSerializers = require('./mergeSerializers'); // Properties to extract from props and pass to serializers as options\n\n\nvar optionProps = ['projectId', 'dataset', 'imageOptions', 'ignoreUnknownTypes'];\n\nvar isDefined = function isDefined(val) {\n return typeof val !== 'undefined';\n};\n\nvar defaults = {\n imageOptions: {},\n ignoreUnknownTypes: true\n};\n\nfunction blocksToNodes(h, properties, defaultSerializers, serializeSpan) {\n var props = objectAssign({}, defaults, properties);\n var rawBlocks = Array.isArray(props.blocks) ? props.blocks : [props.blocks];\n var keyedBlocks = generateKeys(rawBlocks);\n var blocks = nestLists(keyedBlocks, props.listNestMode);\n var serializers = mergeSerializers(defaultSerializers, props.serializers || {});\n var options = optionProps.reduce(function (opts, key) {\n var value = props[key];\n\n if (isDefined(value)) {\n opts[key] = value;\n }\n\n return opts;\n }, {});\n\n function serializeNode(node, index, siblings, isInline) {\n if (isList(node)) {\n return serializeList(node);\n }\n\n if (isListItem(node)) {\n return serializeListItem(node, findListItemIndex(node, siblings));\n }\n\n if (isSpan(node)) {\n return serializeSpan(node, serializers, index, {\n serializeNode: serializeNode\n });\n }\n\n return serializeBlock(node, index, isInline);\n }\n\n function findListItemIndex(node, siblings) {\n var index = 0;\n\n for (var i = 0; i < siblings.length; i++) {\n if (siblings[i] === node) {\n return index;\n }\n\n if (!isListItem(siblings[i])) {\n continue;\n }\n\n index++;\n }\n\n return index;\n }\n\n function serializeBlock(block, index, isInline) {\n var tree = buildMarksTree(block);\n var children = tree.map(function (node, i, siblings) {\n return serializeNode(node, i, siblings, true);\n });\n var blockProps = {\n key: block._key || \"block-\".concat(index),\n node: block,\n isInline: isInline,\n serializers: serializers,\n options: options\n };\n return h(serializers.block, blockProps, children);\n }\n\n function serializeListItem(block, index) {\n var key = block._key;\n var tree = buildMarksTree(block);\n var children = tree.map(serializeNode);\n return h(serializers.listItem, {\n node: block,\n serializers: serializers,\n index: index,\n key: key,\n options: options\n }, children);\n }\n\n function serializeList(list) {\n var type = list.listItem;\n var level = list.level;\n var key = list._key;\n var children = list.children.map(serializeNode);\n return h(serializers.list, {\n key: key,\n level: level,\n type: type,\n options: options\n }, children);\n } // Default to false, so `undefined` will evaluate to the default here\n\n\n var renderContainerOnSingleChild = Boolean(props.renderContainerOnSingleChild);\n var nodes = blocks.map(serializeNode);\n\n if (renderContainerOnSingleChild || nodes.length > 1) {\n var containerProps = props.className ? {\n className: props.className\n } : {};\n return h(serializers.container, containerProps, nodes);\n }\n\n if (nodes[0]) {\n return nodes[0];\n }\n\n return typeof serializers.empty === 'function' ? h(serializers.empty) : serializers.empty;\n}\n\nfunction isList(block) {\n return block._type === 'list' && block.listItem;\n}\n\nfunction isListItem(block) {\n return block._type === 'block' && block.listItem;\n}\n\nfunction isSpan(block) {\n return typeof block === 'string' || block.marks || block._type === 'span';\n}\n\nmodule.exports = blocksToNodes;","\"use strict\";\n\nvar defaultMarks = ['strong', 'em', 'code', 'underline', 'strike-through'];\n\nvar buildMarksTree = function buildMarksTree(block) {\n var children = block.children,\n markDefs = block.markDefs;\n\n if (!children || !children.length) {\n return [];\n }\n\n var sortedMarks = children.map(sortMarksByOccurences);\n var rootNode = {\n _type: 'span',\n children: []\n };\n var nodeStack = [rootNode];\n children.forEach(function (span, i) {\n var marksNeeded = sortedMarks[i];\n\n if (!marksNeeded) {\n var lastNode = nodeStack[nodeStack.length - 1];\n lastNode.children.push(span);\n return;\n }\n\n var pos = 1; // Start at position one. Root is always plain and should never be removed. (?)\n\n if (nodeStack.length > 1) {\n for (pos; pos < nodeStack.length; pos++) {\n var mark = nodeStack[pos].markKey;\n var index = marksNeeded.indexOf(mark); // eslint-disable-next-line max-depth\n\n if (index === -1) {\n break;\n }\n\n marksNeeded.splice(index, 1);\n }\n } // Keep from beginning to first miss\n\n\n nodeStack = nodeStack.slice(0, pos); // Add needed nodes\n\n var currentNode = findLastParentNode(nodeStack);\n marksNeeded.forEach(function (mark) {\n var node = {\n _type: 'span',\n _key: span._key,\n children: [],\n mark: markDefs.find(function (def) {\n return def._key === mark;\n }) || mark,\n markKey: mark\n };\n currentNode.children.push(node);\n nodeStack.push(node);\n currentNode = node;\n }); // Split at newlines to make individual line chunks, but keep newline\n // characters as individual elements in the array. We use these characters\n // in the span serializer to trigger hard-break rendering\n\n if (isTextSpan(span)) {\n var lines = span.text.split('\\n');\n\n for (var line = lines.length; line-- > 1;) {\n lines.splice(line, 0, '\\n');\n }\n\n currentNode.children = currentNode.children.concat(lines);\n } else {\n currentNode.children = currentNode.children.concat(span);\n }\n });\n return rootNode.children;\n}; // We want to sort all the marks of all the spans in the following order:\n// 1. Marks that are shared amongst the most adjacent siblings\n// 2. Non-default marks (links, custom metadata)\n// 3. Built-in, plain marks (bold, emphasis, code etc)\n\n\nfunction sortMarksByOccurences(span, i, spans) {\n if (!span.marks || span.marks.length === 0) {\n return span.marks || [];\n }\n\n var markOccurences = span.marks.reduce(function (occurences, mark) {\n occurences[mark] = occurences[mark] ? occurences[mark] + 1 : 1;\n\n for (var siblingIndex = i + 1; siblingIndex < spans.length; siblingIndex++) {\n var sibling = spans[siblingIndex];\n\n if (sibling.marks && Array.isArray(sibling.marks) && sibling.marks.indexOf(mark) !== -1) {\n occurences[mark]++;\n } else {\n break;\n }\n }\n\n return occurences;\n }, {});\n var sortByOccurence = sortMarks.bind(null, markOccurences); // Slicing because sort() mutates the input\n\n return span.marks.slice().sort(sortByOccurence);\n}\n\nfunction sortMarks(occurences, markA, markB) {\n var aOccurences = occurences[markA] || 0;\n var bOccurences = occurences[markB] || 0;\n\n if (aOccurences !== bOccurences) {\n return bOccurences - aOccurences;\n }\n\n var aDefaultPos = defaultMarks.indexOf(markA);\n var bDefaultPos = defaultMarks.indexOf(markB); // Sort default marks last\n\n if (aDefaultPos !== bDefaultPos) {\n return aDefaultPos - bDefaultPos;\n } // Sort other marks simply by key\n\n\n if (markA < markB) {\n return -1;\n } else if (markA > markB) {\n return 1;\n }\n\n return 0;\n}\n\nfunction isTextSpan(node) {\n return node._type === 'span' && typeof node.text === 'string' && (Array.isArray(node.marks) || typeof node.marks === 'undefined');\n}\n\nfunction findLastParentNode(nodes) {\n for (var i = nodes.length - 1; i >= 0; i--) {\n var node = nodes[i];\n\n if (node._type === 'span' && node.children) {\n return node;\n }\n }\n\n return undefined;\n}\n\nmodule.exports = buildMarksTree;","\"use strict\";\n\nvar objectAssign = require('object-assign');\n\nmodule.exports = function (blocks) {\n return blocks.map(function (block) {\n if (block._key) {\n return block;\n }\n\n return objectAssign({\n _key: getStaticKey(block)\n }, block);\n });\n};\n\nfunction getStaticKey(item) {\n return checksum(JSON.stringify(item)).toString(36).replace(/[^A-Za-z0-9]/g, '');\n}\n/* eslint-disable no-bitwise */\n\n\nfunction checksum(str) {\n var hash = 0;\n var strlen = str.length;\n\n if (strlen === 0) {\n return hash;\n }\n\n for (var i = 0; i < strlen; i++) {\n hash = (hash << 5) - hash + str.charCodeAt(i);\n hash &= hash; // Convert to 32bit integer\n }\n\n return hash;\n}\n/* eslint-enable no-bitwise */","\"use strict\";\n\nvar generateHelpUrl = require('@sanity/generate-help-url');\n\nvar urlBuilder = require('@sanity/image-url');\n\nvar objectAssign = require('object-assign');\n\nvar enc = encodeURIComponent;\nvar materializeError = \"You must either:\\n - Pass `projectId` and `dataset` to the block renderer\\n - Materialize images to include the `url` field.\\n\\nFor more information, see \".concat(generateHelpUrl('block-content-image-materializing'));\n\nvar getQueryString = function getQueryString(options) {\n var query = options.imageOptions;\n var keys = Object.keys(query);\n\n if (!keys.length) {\n return '';\n }\n\n var params = keys.map(function (key) {\n return \"\".concat(enc(key), \"=\").concat(enc(query[key]));\n });\n return \"?\".concat(params.join('&'));\n};\n\nvar buildUrl = function buildUrl(props) {\n var node = props.node,\n options = props.options;\n var projectId = options.projectId,\n dataset = options.dataset;\n var asset = node.asset;\n\n if (!asset) {\n throw new Error('Image does not have required `asset` property');\n }\n\n if (asset.url) {\n return asset.url + getQueryString(options);\n }\n\n if (!projectId || !dataset) {\n throw new Error(materializeError);\n }\n\n var ref = asset._ref;\n\n if (!ref) {\n throw new Error('Invalid image reference in block, no `_ref` found on `asset`');\n }\n\n return urlBuilder(objectAssign({\n projectId: projectId,\n dataset: dataset\n }, options.imageOptions || {})).image(node).toString();\n};\n\nmodule.exports = buildUrl;","\"use strict\";\n\nvar getSerializers = require('./serializers');\n\nvar _blocksToNodes = require('./blocksToNodes');\n\nvar getImageUrl = require('./getImageUrl');\n\nvar mergeSerializers = require('./mergeSerializers');\n\nmodule.exports = {\n blocksToNodes: function blocksToNodes(renderNode, props, defaultSerializers, serializeSpan) {\n if (defaultSerializers) {\n return _blocksToNodes(renderNode, props, defaultSerializers, serializeSpan);\n } // Backwards-compatibility\n\n\n var serializers = getSerializers(renderNode);\n return _blocksToNodes(renderNode, props, serializers.defaultSerializers, serializers.serializeSpan);\n },\n getSerializers: getSerializers,\n getImageUrl: getImageUrl,\n mergeSerializers: mergeSerializers\n};","\"use strict\";\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nvar objectAssign = require('object-assign');\n\nvar isDefined = function isDefined(val) {\n return typeof val !== 'undefined';\n}; // Recursively merge/replace default serializers with user-specified serializers\n\n\nmodule.exports = function mergeSerializers(defaultSerializers, userSerializers) {\n return Object.keys(defaultSerializers).reduce(function (acc, key) {\n var type = _typeof(defaultSerializers[key]);\n\n if (type === 'function') {\n acc[key] = isDefined(userSerializers[key]) ? userSerializers[key] : defaultSerializers[key];\n } else if (type === 'object') {\n acc[key] = objectAssign({}, defaultSerializers[key], userSerializers[key]);\n } else {\n acc[key] = typeof userSerializers[key] === 'undefined' ? defaultSerializers[key] : userSerializers[key];\n }\n\n return acc;\n }, {});\n};","\"use strict\";\n\nvar objectAssign = require('object-assign');\n/* eslint-disable max-depth, complexity */\n\n\nfunction nestLists(blocks) {\n var mode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'html';\n var tree = [];\n var currentList;\n\n for (var i = 0; i < blocks.length; i++) {\n var block = blocks[i];\n\n if (!isListBlock(block)) {\n tree.push(block);\n currentList = null;\n continue;\n } // Start of a new list?\n\n\n if (!currentList) {\n currentList = listFromBlock(block);\n tree.push(currentList);\n continue;\n } // New list item within same list?\n\n\n if (blockMatchesList(block, currentList)) {\n currentList.children.push(block);\n continue;\n } // Different list props, are we going deeper?\n\n\n if (block.level > currentList.level) {\n var newList = listFromBlock(block);\n\n if (mode === 'html') {\n // Because HTML is kinda weird, nested lists needs to be nested within list items\n // So while you would think that we could populate the parent list with a new sub-list,\n // We actually have to target the last list element (child) of the parent.\n // However, at this point we need to be very careful - simply pushing to the list of children\n // will mutate the input, and we don't want to blindly clone the entire tree.\n // Clone the last child while adding our new list as the last child of it\n var lastListItem = lastChild(currentList);\n var newLastChild = objectAssign({}, lastListItem, {\n children: lastListItem.children.concat(newList)\n }); // Swap the last child\n\n currentList.children[currentList.children.length - 1] = newLastChild;\n } else {\n currentList.children.push(newList);\n } // Set the newly created, deeper list as the current\n\n\n currentList = newList;\n continue;\n } // Different list props, are we going back up the tree?\n\n\n if (block.level < currentList.level) {\n // Current list has ended, and we need to hook up with a parent of the same level and type\n var match = findListMatching(tree[tree.length - 1], block);\n\n if (match) {\n currentList = match;\n currentList.children.push(block);\n continue;\n } // Similar parent can't be found, assume new list\n\n\n currentList = listFromBlock(block);\n tree.push(currentList);\n continue;\n } // Different list props, different list style?\n\n\n if (block.listItem !== currentList.listItem) {\n var _match = findListMatching(tree[tree.length - 1], {\n level: block.level\n });\n\n if (_match && _match.listItem === block.listItem) {\n currentList = _match;\n currentList.children.push(block);\n continue;\n } else {\n currentList = listFromBlock(block);\n tree.push(currentList);\n continue;\n }\n } // eslint-disable-next-line no-console\n\n\n console.warn('Unknown state encountered for block', block);\n tree.push(block);\n }\n\n return tree;\n}\n\nfunction isListBlock(block) {\n return Boolean(block.listItem);\n}\n\nfunction blockMatchesList(block, list) {\n return block.level === list.level && block.listItem === list.listItem;\n}\n\nfunction listFromBlock(block) {\n return {\n _type: 'list',\n _key: \"\".concat(block._key, \"-parent\"),\n level: block.level,\n listItem: block.listItem,\n children: [block]\n };\n}\n\nfunction lastChild(block) {\n return block.children && block.children[block.children.length - 1];\n}\n\nfunction findListMatching(rootNode, matching) {\n var filterOnType = typeof matching.listItem === 'string';\n\n if (rootNode._type === 'list' && rootNode.level === matching.level && filterOnType && rootNode.listItem === matching.listItem) {\n return rootNode;\n }\n\n var node = lastChild(rootNode);\n\n if (!node) {\n return false;\n }\n\n return findListMatching(node, matching);\n}\n\nmodule.exports = nestLists;","\"use strict\";\n\nvar objectAssign = require('object-assign');\n\nvar getImageUrl = require('./getImageUrl');\n\nmodule.exports = function (h, serializerOpts) {\n var serializeOptions = serializerOpts || {\n useDashedStyles: false\n }; // Low-level block serializer\n\n function BlockSerializer(props) {\n var node = props.node,\n serializers = props.serializers,\n options = props.options,\n isInline = props.isInline,\n children = props.children;\n var blockType = node._type;\n var serializer = serializers.types[blockType];\n\n if (!serializer) {\n if (options.ignoreUnknownTypes) {\n // eslint-disable-next-line no-console\n console.warn(\"Unknown block type \\\"\".concat(blockType, \"\\\", please specify a serializer for it in the `serializers.types` prop\"));\n return h(serializers.unknownType, {\n node: node,\n options: options,\n isInline: isInline\n }, children);\n }\n\n throw new Error(\"Unknown block type \\\"\".concat(blockType, \"\\\", please specify a serializer for it in the `serializers.types` prop\"));\n }\n\n return h(serializer, {\n node: node,\n options: options,\n isInline: isInline\n }, children);\n } // Low-level span serializer\n\n\n function SpanSerializer(props) {\n var _props$node = props.node,\n mark = _props$node.mark,\n children = _props$node.children;\n var isPlain = typeof mark === 'string';\n var markType = isPlain ? mark : mark._type;\n var serializer = props.serializers.marks[markType];\n\n if (!serializer) {\n // eslint-disable-next-line no-console\n console.warn(\"Unknown mark type \\\"\".concat(markType, \"\\\", please specify a serializer for it in the `serializers.marks` prop\"));\n return h(props.serializers.unknownMark, null, children);\n }\n\n return h(serializer, props.node, children);\n } // Low-level list serializer\n\n\n function ListSerializer(props) {\n var tag = props.type === 'bullet' ? 'ul' : 'ol';\n return h(tag, null, props.children);\n } // Low-level list item serializer\n\n\n function ListItemSerializer(props) {\n var children = !props.node.style || props.node.style === 'normal' ? // Don't wrap plain text in paragraphs inside of a list item\n props.children : // But wrap any other style in whatever the block serializer says to use\n h(props.serializers.types.block, props, props.children);\n return h('li', null, children);\n } // Unknown type default serializer\n\n\n function DefaultUnknownTypeSerializer(props) {\n return h('div', {\n style: {\n display: 'none'\n }\n }, \"Unknown block type \\\"\".concat(props.node._type, \"\\\", please specify a serializer for it in the `serializers.types` prop\"));\n } // Renderer of an actual block of type `block`. Confusing, we know.\n\n\n function BlockTypeSerializer(props) {\n var style = props.node.style || 'normal';\n\n if (/^h\\d/.test(style)) {\n return h(style, null, props.children);\n }\n\n return style === 'blockquote' ? h('blockquote', null, props.children) : h('p', null, props.children);\n } // Serializers for things that can be directly attributed to a tag without any props\n // We use partial application to do this, passing the tag name as the first argument\n\n\n function RawMarkSerializer(tag, props) {\n return h(tag, null, props.children);\n }\n\n function UnderlineSerializer(props) {\n var style = serializeOptions.useDashedStyles ? {\n 'text-decoration': 'underline'\n } : {\n textDecoration: 'underline'\n };\n return h('span', {\n style: style\n }, props.children);\n }\n\n function StrikeThroughSerializer(props) {\n return h('del', null, props.children);\n }\n\n function LinkSerializer(props) {\n return h('a', {\n href: props.mark.href\n }, props.children);\n }\n\n function ImageSerializer(props) {\n if (!props.node.asset) {\n return null;\n }\n\n var img = h('img', {\n src: getImageUrl(props)\n });\n return props.isInline ? img : h('figure', null, img);\n } // Serializer that recursively calls itself, producing a hyperscript tree of spans\n\n\n function serializeSpan(span, serializers, index, options) {\n if (span === '\\n' && serializers.hardBreak) {\n return h(serializers.hardBreak, {\n key: \"hb-\".concat(index)\n });\n }\n\n if (typeof span === 'string') {\n return serializers.text ? h(serializers.text, {\n key: \"text-\".concat(index)\n }, span) : span;\n }\n\n var children;\n\n if (span.children) {\n children = {\n children: span.children.map(function (child, i) {\n return options.serializeNode(child, i, span.children, true);\n })\n };\n }\n\n var serializedNode = objectAssign({}, span, children);\n return h(serializers.span, {\n key: span._key || \"span-\".concat(index),\n node: serializedNode,\n serializers: serializers\n });\n }\n\n var HardBreakSerializer = function HardBreakSerializer() {\n return h('br');\n };\n\n var defaultMarkSerializers = {\n strong: RawMarkSerializer.bind(null, 'strong'),\n em: RawMarkSerializer.bind(null, 'em'),\n code: RawMarkSerializer.bind(null, 'code'),\n underline: UnderlineSerializer,\n 'strike-through': StrikeThroughSerializer,\n link: LinkSerializer\n };\n var defaultSerializers = {\n // Common overrides\n types: {\n block: BlockTypeSerializer,\n image: ImageSerializer\n },\n marks: defaultMarkSerializers,\n // Less common overrides\n list: ListSerializer,\n listItem: ListItemSerializer,\n block: BlockSerializer,\n span: SpanSerializer,\n hardBreak: HardBreakSerializer,\n unknownType: DefaultUnknownTypeSerializer,\n unknownMark: 'span',\n // Container element\n container: 'div',\n // Allow overriding text renderer, but leave undefined to just use plain strings by default\n text: undefined,\n // Empty nodes (React uses null, hyperscript with empty strings)\n empty: ''\n };\n return {\n defaultSerializers: defaultSerializers,\n serializeSpan: serializeSpan\n };\n};","var baseUrl = 'https://docs.sanity.io/help/';\n\nmodule.exports = function generateHelpUrl(slug) {\n return baseUrl + slug;\n};","'use strict';\n\nvar React = require('react');\n\nvar PropTypes = require('prop-types');\n\nvar internals = require('@sanity/block-content-to-hyperscript/internals');\n\nvar _require = require('./targets/dom'),\n serializers = _require.serializers,\n serializeSpan = _require.serializeSpan,\n renderProps = _require.renderProps;\n\nvar getImageUrl = internals.getImageUrl,\n blocksToNodes = internals.blocksToNodes,\n mergeSerializers = internals.mergeSerializers;\nvar renderNode = React.createElement;\n\nvar SanityBlockContent = function SanityBlockContent(props) {\n var customSerializers = mergeSerializers(SanityBlockContent.defaultSerializers, props.serializers);\n var blockProps = Object.assign({}, renderProps, props, {\n serializers: customSerializers,\n blocks: props.blocks || []\n });\n return blocksToNodes(renderNode, blockProps, serializers, serializeSpan);\n}; // Expose default serializers to the user\n\n\nSanityBlockContent.defaultSerializers = serializers; // Expose logic for building image URLs from an image reference/node\n\nSanityBlockContent.getImageUrl = getImageUrl;\nSanityBlockContent.propTypes = {\n className: PropTypes.string,\n renderContainerOnSingleChild: PropTypes.bool,\n ignoreUnknownTypes: PropTypes.bool,\n // When rendering images, we need project id and dataset, unless images are materialized\n projectId: PropTypes.string,\n dataset: PropTypes.string,\n imageOptions: PropTypes.object,\n serializers: PropTypes.shape({\n // Common overrides\n types: PropTypes.object,\n marks: PropTypes.object,\n // Less common overrides\n list: PropTypes.func,\n listItem: PropTypes.func,\n // Low-level serializers\n block: PropTypes.func,\n span: PropTypes.func\n }),\n blocks: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.shape({\n _type: PropTypes.string.isRequired\n })), PropTypes.shape({\n _type: PropTypes.string.isRequired\n })]).isRequired\n};\nSanityBlockContent.defaultProps = {\n ignoreUnknownTypes: true,\n renderContainerOnSingleChild: false,\n serializers: {},\n imageOptions: {}\n};\nmodule.exports = SanityBlockContent;","'use strict';\n\nvar React = require('react');\n\nvar _require = require('@sanity/block-content-to-hyperscript/internals'),\n getSerializers = _require.getSerializers;\n\nvar renderNode = React.createElement;\n\nvar _getSerializers = getSerializers(renderNode),\n defaultSerializers = _getSerializers.defaultSerializers,\n serializeSpan = _getSerializers.serializeSpan;\n\nmodule.exports = {\n serializeSpan: serializeSpan,\n serializers: defaultSerializers,\n renderProps: {\n nestMarks: true\n }\n};","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = global || self, global.SanityImageUrlBuilder = factory());\n})(this, function () {\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n\n function _createForOfIteratorHelperLoose(o) {\n var i = 0;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n i = o[Symbol.iterator]();\n return i.next.bind(i);\n }\n\n var example = 'image-Tb9Ew8CXIwaY6R1kjMvI0uRR-2000x3000-jpg';\n\n function parseAssetId(ref) {\n var _ref$split = ref.split('-'),\n id = _ref$split[1],\n dimensionString = _ref$split[2],\n format = _ref$split[3];\n\n if (!id || !dimensionString || !format) {\n throw new Error(\"Malformed asset _ref '\" + ref + \"'. Expected an id like \\\"\" + example + \"\\\".\");\n }\n\n var _dimensionString$spli = dimensionString.split('x'),\n imgWidthStr = _dimensionString$spli[0],\n imgHeightStr = _dimensionString$spli[1];\n\n var width = +imgWidthStr;\n var height = +imgHeightStr;\n var isValidAssetId = isFinite(width) && isFinite(height);\n\n if (!isValidAssetId) {\n throw new Error(\"Malformed asset _ref '\" + ref + \"'. Expected an id like \\\"\" + example + \"\\\".\");\n }\n\n return {\n id: id,\n width: width,\n height: height,\n format: format\n };\n }\n\n var isRef = function isRef(src) {\n var source = src;\n return source ? typeof source._ref === 'string' : false;\n };\n\n var isAsset = function isAsset(src) {\n var source = src;\n return source ? typeof source._id === 'string' : false;\n };\n\n var isAssetStub = function isAssetStub(src) {\n var source = src;\n return source && source.asset ? typeof source.asset.url === 'string' : false;\n };\n\n function parseSource(source) {\n if (!source) {\n return null;\n }\n\n var image;\n\n if (typeof source === 'string' && isUrl(source)) {\n image = {\n asset: {\n _ref: urlToId(source)\n }\n };\n } else if (typeof source === 'string') {\n image = {\n asset: {\n _ref: source\n }\n };\n } else if (isRef(source)) {\n image = {\n asset: source\n };\n } else if (isAsset(source)) {\n image = {\n asset: {\n _ref: source._id || ''\n }\n };\n } else if (isAssetStub(source)) {\n image = {\n asset: {\n _ref: urlToId(source.asset.url)\n }\n };\n } else if (typeof source.asset === 'object') {\n image = source;\n } else {\n return null;\n }\n\n var img = source;\n\n if (img.crop) {\n image.crop = img.crop;\n }\n\n if (img.hotspot) {\n image.hotspot = img.hotspot;\n }\n\n return applyDefaults(image);\n }\n\n function isUrl(url) {\n return /^https?:\\/\\//.test(\"\" + url);\n }\n\n function urlToId(url) {\n var parts = url.split('/').slice(-1);\n return (\"image-\" + parts[0]).replace(/\\.([a-z]+)$/, '-$1');\n }\n\n function applyDefaults(image) {\n if (image.crop && image.hotspot) {\n return image;\n }\n\n var result = _extends({}, image);\n\n if (!result.crop) {\n result.crop = {\n left: 0,\n top: 0,\n bottom: 0,\n right: 0\n };\n }\n\n if (!result.hotspot) {\n result.hotspot = {\n x: 0.5,\n y: 0.5,\n height: 1.0,\n width: 1.0\n };\n }\n\n return result;\n }\n\n var SPEC_NAME_TO_URL_NAME_MAPPINGS = [['width', 'w'], ['height', 'h'], ['format', 'fm'], ['download', 'dl'], ['blur', 'blur'], ['sharpen', 'sharp'], ['invert', 'invert'], ['orientation', 'or'], ['minHeight', 'min-h'], ['maxHeight', 'max-h'], ['minWidth', 'min-w'], ['maxWidth', 'max-w'], ['quality', 'q'], ['fit', 'fit'], ['crop', 'crop'], ['saturation', 'sat'], ['auto', 'auto'], ['dpr', 'dpr'], ['pad', 'pad']];\n\n function urlForImage(options) {\n var spec = _extends({}, options || {});\n\n var source = spec.source;\n delete spec.source;\n var image = parseSource(source);\n\n if (!image) {\n return null;\n }\n\n var id = image.asset._ref || image.asset._id || '';\n var asset = parseAssetId(id);\n var cropLeft = Math.round(image.crop.left * asset.width);\n var cropTop = Math.round(image.crop.top * asset.height);\n var crop = {\n left: cropLeft,\n top: cropTop,\n width: Math.round(asset.width - image.crop.right * asset.width - cropLeft),\n height: Math.round(asset.height - image.crop.bottom * asset.height - cropTop)\n };\n var hotSpotVerticalRadius = image.hotspot.height * asset.height / 2;\n var hotSpotHorizontalRadius = image.hotspot.width * asset.width / 2;\n var hotSpotCenterX = image.hotspot.x * asset.width;\n var hotSpotCenterY = image.hotspot.y * asset.height;\n var hotspot = {\n left: hotSpotCenterX - hotSpotHorizontalRadius,\n top: hotSpotCenterY - hotSpotVerticalRadius,\n right: hotSpotCenterX + hotSpotHorizontalRadius,\n bottom: hotSpotCenterY + hotSpotVerticalRadius\n };\n\n if (!(spec.rect || spec.focalPoint || spec.ignoreImageParams || spec.crop)) {\n spec = _extends(_extends({}, spec), fit({\n crop: crop,\n hotspot: hotspot\n }, spec));\n }\n\n return specToImageUrl(_extends(_extends({}, spec), {}, {\n asset: asset\n }));\n }\n\n function specToImageUrl(spec) {\n var cdnUrl = spec.baseUrl || 'https://cdn.sanity.io';\n var filename = spec.asset.id + \"-\" + spec.asset.width + \"x\" + spec.asset.height + \".\" + spec.asset.format;\n var baseUrl = cdnUrl + \"/images/\" + spec.projectId + \"/\" + spec.dataset + \"/\" + filename;\n var params = [];\n\n if (spec.rect) {\n var _spec$rect = spec.rect,\n left = _spec$rect.left,\n top = _spec$rect.top,\n width = _spec$rect.width,\n height = _spec$rect.height;\n var isEffectiveCrop = left !== 0 || top !== 0 || height !== spec.asset.height || width !== spec.asset.width;\n\n if (isEffectiveCrop) {\n params.push(\"rect=\" + left + \",\" + top + \",\" + width + \",\" + height);\n }\n }\n\n if (spec.bg) {\n params.push(\"bg=\" + spec.bg);\n }\n\n if (spec.focalPoint) {\n params.push(\"fp-x=\" + spec.focalPoint.x);\n params.push(\"fp-y=\" + spec.focalPoint.y);\n }\n\n var flip = [spec.flipHorizontal && 'h', spec.flipVertical && 'v'].filter(Boolean).join('');\n\n if (flip) {\n params.push(\"flip=\" + flip);\n }\n\n SPEC_NAME_TO_URL_NAME_MAPPINGS.forEach(function (mapping) {\n var specName = mapping[0],\n param = mapping[1];\n\n if (typeof spec[specName] !== 'undefined') {\n params.push(param + \"=\" + encodeURIComponent(spec[specName]));\n } else if (typeof spec[param] !== 'undefined') {\n params.push(param + \"=\" + encodeURIComponent(spec[param]));\n }\n });\n\n if (params.length === 0) {\n return baseUrl;\n }\n\n return baseUrl + \"?\" + params.join('&');\n }\n\n function fit(source, spec) {\n var cropRect;\n var imgWidth = spec.width;\n var imgHeight = spec.height;\n\n if (!(imgWidth && imgHeight)) {\n return {\n width: imgWidth,\n height: imgHeight,\n rect: source.crop\n };\n }\n\n var crop = source.crop;\n var hotspot = source.hotspot;\n var desiredAspectRatio = imgWidth / imgHeight;\n var cropAspectRatio = crop.width / crop.height;\n\n if (cropAspectRatio > desiredAspectRatio) {\n var height = crop.height;\n var width = height * desiredAspectRatio;\n var top = crop.top;\n var hotspotXCenter = (hotspot.right - hotspot.left) / 2 + hotspot.left;\n var left = hotspotXCenter - width / 2;\n\n if (left < crop.left) {\n left = crop.left;\n } else if (left + width > crop.left + crop.width) {\n left = crop.left + crop.width - width;\n }\n\n cropRect = {\n left: Math.round(left),\n top: Math.round(top),\n width: Math.round(width),\n height: Math.round(height)\n };\n } else {\n var _width = crop.width;\n\n var _height = _width / desiredAspectRatio;\n\n var _left = crop.left;\n var hotspotYCenter = (hotspot.bottom - hotspot.top) / 2 + hotspot.top;\n\n var _top = hotspotYCenter - _height / 2;\n\n if (_top < crop.top) {\n _top = crop.top;\n } else if (_top + _height > crop.top + crop.height) {\n _top = crop.top + crop.height - _height;\n }\n\n cropRect = {\n left: Math.max(0, Math.floor(_left)),\n top: Math.max(0, Math.floor(_top)),\n width: Math.round(_width),\n height: Math.round(_height)\n };\n }\n\n return {\n width: imgWidth,\n height: imgHeight,\n rect: cropRect\n };\n }\n\n var validFits = ['clip', 'crop', 'fill', 'fillmax', 'max', 'scale', 'min'];\n var validCrops = ['top', 'bottom', 'left', 'right', 'center', 'focalpoint', 'entropy'];\n var validAutoModes = ['format'];\n\n function isSanityClientLike(client) {\n return client ? typeof client.clientConfig === 'object' : false;\n }\n\n function rewriteSpecName(key) {\n var specs = SPEC_NAME_TO_URL_NAME_MAPPINGS;\n\n for (var _iterator = _createForOfIteratorHelperLoose(specs), _step; !(_step = _iterator()).done;) {\n var entry = _step.value;\n var specName = entry[0],\n param = entry[1];\n\n if (key === specName || key === param) {\n return specName;\n }\n }\n\n return key;\n }\n\n function urlBuilder(options) {\n var client = options;\n\n if (isSanityClientLike(client)) {\n var _client$clientConfig = client.clientConfig,\n apiUrl = _client$clientConfig.apiHost,\n projectId = _client$clientConfig.projectId,\n dataset = _client$clientConfig.dataset;\n var apiHost = apiUrl || 'https://api.sanity.io';\n return new ImageUrlBuilder(null, {\n baseUrl: apiHost.replace(/^https:\\/\\/api\\./, 'https://cdn.'),\n projectId: projectId,\n dataset: dataset\n });\n }\n\n return new ImageUrlBuilder(null, options);\n }\n\n var ImageUrlBuilder = /*#__PURE__*/function () {\n function ImageUrlBuilder(parent, options) {\n this.options = parent ? _extends(_extends({}, parent.options || {}), options || {}) : _extends({}, options || {});\n }\n\n var _proto = ImageUrlBuilder.prototype;\n\n _proto.withOptions = function withOptions(options) {\n var baseUrl = options.baseUrl || this.options.baseUrl;\n var newOptions = {\n baseUrl: baseUrl\n };\n\n for (var key in options) {\n if (options.hasOwnProperty(key)) {\n var specKey = rewriteSpecName(key);\n newOptions[specKey] = options[key];\n }\n }\n\n return new ImageUrlBuilder(this, _extends({\n baseUrl: baseUrl\n }, newOptions));\n };\n\n _proto.image = function image(source) {\n return this.withOptions({\n source: source\n });\n };\n\n _proto.dataset = function dataset(_dataset) {\n return this.withOptions({\n dataset: _dataset\n });\n };\n\n _proto.projectId = function projectId(_projectId) {\n return this.withOptions({\n projectId: _projectId\n });\n };\n\n _proto.bg = function bg(_bg) {\n return this.withOptions({\n bg: _bg\n });\n };\n\n _proto.dpr = function dpr(_dpr) {\n return this.withOptions({\n dpr: _dpr\n });\n };\n\n _proto.width = function width(_width) {\n return this.withOptions({\n width: _width\n });\n };\n\n _proto.height = function height(_height) {\n return this.withOptions({\n height: _height\n });\n };\n\n _proto.focalPoint = function focalPoint(x, y) {\n return this.withOptions({\n focalPoint: {\n x: x,\n y: y\n }\n });\n };\n\n _proto.maxWidth = function maxWidth(_maxWidth) {\n return this.withOptions({\n maxWidth: _maxWidth\n });\n };\n\n _proto.minWidth = function minWidth(_minWidth) {\n return this.withOptions({\n minWidth: _minWidth\n });\n };\n\n _proto.maxHeight = function maxHeight(_maxHeight) {\n return this.withOptions({\n maxHeight: _maxHeight\n });\n };\n\n _proto.minHeight = function minHeight(_minHeight) {\n return this.withOptions({\n minHeight: _minHeight\n });\n };\n\n _proto.size = function size(width, height) {\n return this.withOptions({\n width: width,\n height: height\n });\n };\n\n _proto.blur = function blur(_blur) {\n return this.withOptions({\n blur: _blur\n });\n };\n\n _proto.sharpen = function sharpen(_sharpen) {\n return this.withOptions({\n sharpen: _sharpen\n });\n };\n\n _proto.rect = function rect(left, top, width, height) {\n return this.withOptions({\n rect: {\n left: left,\n top: top,\n width: width,\n height: height\n }\n });\n };\n\n _proto.format = function format(_format) {\n return this.withOptions({\n format: _format\n });\n };\n\n _proto.invert = function invert(_invert) {\n return this.withOptions({\n invert: _invert\n });\n };\n\n _proto.orientation = function orientation(_orientation) {\n return this.withOptions({\n orientation: _orientation\n });\n };\n\n _proto.quality = function quality(_quality) {\n return this.withOptions({\n quality: _quality\n });\n };\n\n _proto.forceDownload = function forceDownload(download) {\n return this.withOptions({\n download: download\n });\n };\n\n _proto.flipHorizontal = function flipHorizontal() {\n return this.withOptions({\n flipHorizontal: true\n });\n };\n\n _proto.flipVertical = function flipVertical() {\n return this.withOptions({\n flipVertical: true\n });\n };\n\n _proto.ignoreImageParams = function ignoreImageParams() {\n return this.withOptions({\n ignoreImageParams: true\n });\n };\n\n _proto.fit = function fit(value) {\n if (validFits.indexOf(value) === -1) {\n throw new Error(\"Invalid fit mode \\\"\" + value + \"\\\"\");\n }\n\n return this.withOptions({\n fit: value\n });\n };\n\n _proto.crop = function crop(value) {\n if (validCrops.indexOf(value) === -1) {\n throw new Error(\"Invalid crop mode \\\"\" + value + \"\\\"\");\n }\n\n return this.withOptions({\n crop: value\n });\n };\n\n _proto.saturation = function saturation(_saturation) {\n return this.withOptions({\n saturation: _saturation\n });\n };\n\n _proto.auto = function auto(value) {\n if (validAutoModes.indexOf(value) === -1) {\n throw new Error(\"Invalid auto mode \\\"\" + value + \"\\\"\");\n }\n\n return this.withOptions({\n auto: value\n });\n };\n\n _proto.pad = function pad(_pad) {\n return this.withOptions({\n pad: _pad\n });\n };\n\n _proto.url = function url() {\n return urlForImage(this.options);\n };\n\n _proto.toString = function toString() {\n return this.url();\n };\n\n return ImageUrlBuilder;\n }();\n\n return urlBuilder;\n});","import React from \"react\"\n\nconst Footer = () =>{\n return(\n \n )\n}\n\nexport default Footer","import React from 'react'\nimport BlockContent from '@sanity/block-content-to-react'\nimport {GatsbyImage} from \"gatsby-plugin-image\";\nimport {Link} from \"gatsby\";\nimport Footer from \"../components/footer\";\n\n\nconst serializers = {\n types: {\n code: props => (\n
\n {props.node.code}
\n
\n )\n }\n}\n\nconst Article = ({pageContext,data}) =>{\n console.log(pageContext);\n\n return (\n <>\n {pageContext.image_text}
\n }\n >\n }\n\n\n {pageContext.intro}\n
\n }\n\n {pageContext.main_link &&\n Registrer deg her »\n }\n\n {pageContext.content &&\n