{"version":3,"file":"styles.css","mappings":"AA4IA,gBAIA,eAFA,wDADA,oDAEA,yBAEA","sources":["webpack://@square/maker/./src/components/Link/src/Link.vue"],"sourcesContent":["<script>\nimport cssValidator from '@square/maker/utils/css-validator';\nimport { MThemeKey, defaultTheme, resolveThemeableProps } from '@square/maker/components/Theme';\n\nconst externalLinkPtrn = /^(https?:)?\\/\\//i;\nfunction isExternalLink(url) {\n\treturn typeof url === 'string' && externalLinkPtrn.test(url);\n}\n\n/**\n * checks if to route is valid in current vue router app\n */\nfunction hasRoute(router, to) {\n\tif (!router) {\n\t\treturn false;\n\t}\n\tconst resolved = router.resolve(to);\n\treturn resolved.resolved.matched.length > 0;\n}\n\n/**\n * gets RouterLink component from parent component if there is one\n */\nfunction getRouterLink(parent) {\n\treturn parent.$options.components['router-link'] || parent.$options.components.RouterLink;\n}\n\n/**\n * returns RouterLink component if RouterLink should be rendered\n */\nfunction shouldRenderRouterLink(parent, to) {\n\tconst RouterLink = getRouterLink(parent);\n\tif (!RouterLink) {\n\t\treturn false;\n\t}\n\tif (!to || !(to instanceof Object)) {\n\t\treturn false;\n\t}\n\tif (hasRoute(parent.$router, to) && !isExternalLink(to)) {\n\t\treturn RouterLink;\n\t}\n\treturn false;\n}\n\nfunction sanitizeVnodes(vnodes = []) {\n\tconst one = 1;\n\tconst lastIndex = vnodes.length - one;\n\treturn vnodes\n\t\t.map(\n\t\t\t(vnode, index) => {\n\t\t\t\t// removes trailing whitespace\n\t\t\t\t// after the last text vnode\n\t\t\t\tif (index === lastIndex && vnode.text) {\n\t\t\t\t\tvnode.text = vnode.text.trimEnd();\n\t\t\t\t}\n\t\t\t\treturn vnode;\n\t\t\t},\n\t\t)\n\t\t.filter(\n\t\t\t(vnode) => vnode.tag || (vnode.text && vnode.text.length > 0),\n\t\t);\n}\n\n/**\n * Link component\n * @inheritAttrs a\n * @inheritListeners a\n */\nexport default {\n\tinject: {\n\t\ttheme: {\n\t\t\tdefault: defaultTheme(),\n\t\t\tfrom: MThemeKey,\n\t\t},\n\t},\n\n\tinheritAttrs: false,\n\n\tprops: {\n\t\tto: {\n\t\t\ttype: [String, Object],\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * Color of link\n\t\t */\n\t\tcolor: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t\tvalidator: cssValidator('color'),\n\t\t},\n\t},\n\n\tcomputed: {\n\t\t...resolveThemeableProps('link', [\n\t\t\t'color',\n\t\t]),\n\t\tinlineStyles() {\n\t\t\treturn {\n\t\t\t\tcolor: this.resolvedColor,\n\t\t\t};\n\t\t},\n\t},\n\n\trender(createElement) {\n\t\tconst {\n\t\t\t$parent,\n\t\t\t$props,\n\t\t\tto,\n\t\t\t$s,\n\t\t\tattrs,\n\t\t\tinlineStyles,\n\t\t\t$listeners,\n\t\t\t$slots,\n\t\t} = this;\n\t\tconst defaultSlot = sanitizeVnodes($slots.default);\n\t\tconst RouterLink = shouldRenderRouterLink($parent, to);\n\t\tif (RouterLink) {\n\t\t\treturn createElement(RouterLink, {\n\t\t\t\tclass: $s.Link,\n\t\t\t\tattrs,\n\t\t\t\tstyle: inlineStyles,\n\t\t\t\tprops: $props,\n\t\t\t\ton: $listeners,\n\t\t\t}, defaultSlot);\n\t\t}\n\t\treturn createElement('a', {\n\t\t\tclass: $s.Link,\n\t\t\tattrs: {\n\t\t\t\thref: to,\n\t\t\t\t...attrs,\n\t\t\t},\n\t\t\tstyle: inlineStyles,\n\t\t\ton: $listeners,\n\t\t}, defaultSlot);\n\t},\n};\n</script>\n\n<style module=\"$s\">\n.Link {\n\tfont-weight: $maker-font-label-font-weight;\n\tfont-family: $maker-font-label-font-family;\n\ttext-decoration: underline;\n\tcursor: pointer;\n}\n</style>\n"],"names":[],"sourceRoot":""}