UNPKG

@carbon/icons-vue

Version:

Vue components for icons in digital and software products using the Carbon Design System

71 lines (70 loc) 2.09 kB
/** * Copyright IBM Corp. 2019, 2023 * * This source code is licensed under the Apache-2.0 license found in the * LICENSE file in the root directory of this source tree. * * Code generated by @carbon/icon-build-helpers. DO NOT EDIT. */ import { getAttributes } from "@carbon/icon-helpers"; import * as Vue from "vue"; //#region virtual:./utils.js /** * Copyright IBM Corp. 2018, 2023 * * This source code is licensed under the Apache-2.0 license found in the * LICENSE file in the root directory of this source tree. */ function getVueExport(key) { return Vue[key]; } const h = getVueExport("h"); const createApp = getVueExport("createApp"); const getSvgAttrs = (title, svgAttrs, componentAttrs) => { return getAttributes({ ...svgAttrs, preserveAspectRatio: "xMidYMid meet", xmlns: "http://www.w3.org/2000/svg", title, ...componentAttrs }); }; const getVue2SvgAttrs = (title, svgAttrs, data, listeners) => { const result = { attrs: getSvgAttrs(title, svgAttrs, data.attrs), on: listeners, style: { ...data.staticStyle, ...data.style } }; delete result.attrs.style; if (data.staticClass || data.class) { result.class = {}; if (data.staticClass) result.class[data.staticClass] = true; if (data.class) result.class[data.class] = true; } return result; }; const createSVGComponent = (name, svgAttrs, svgContent) => ({ props: { title: String }, name, ...createApp ? { setup({ title }, { attrs: componentAttrs, slots }) { return () => h("svg", getSvgAttrs(title, svgAttrs, componentAttrs), [ ...title ? [h("title", title)] : [], ...svgContent.map(({ elem, attrs }) => h(elem, attrs)), ...slots.default ? slots.default() : [] ]); } } : { functional: true, render(createElement, { props: { title }, children, data, listeners }) { return createElement("svg", getVue2SvgAttrs(title, svgAttrs, data, listeners), [ ...title ? [createElement("title", null, title)] : [], ...svgContent.map(({ elem, attrs }) => createElement(elem, { attrs })), ...children || [] ]); } } }); //#endregion export { createSVGComponent as t };