{
  "version": 3,
  "sources": ["../../src/Icon.tsx", "../../../shared/src/build/defaultAttributes.ts", "../../../shared/src/utils/mergeClasses.ts", "../../../shared/src/build/buildLucideIconNode.ts", "../../../shared/src/utils/hasA11yProp.ts"],
  "sourcesContent": ["import { createMemo, For, splitProps, useContext } from 'solid-js';\nimport { Dynamic } from 'solid-js/web';\nimport { buildLucideIconNode, hasA11yProp, mergeClasses } from '@lucide/shared';\nimport { LucideIconData, LucideIconNode, LucideProps } from './types';\nimport { LucideContext } from './context';\n\ntype IconProps =\n  | {\n      icon: LucideIconData;\n      iconNode?: never;\n    }\n  | {\n      icon?: never;\n      iconNode?: LucideIconNode[];\n    };\n\nconst Icon = (props: LucideProps & IconProps) => {\n  const [localProps, rest] = splitProps(props, [\n    'color',\n    'size',\n    'width',\n    'height',\n    'strokeWidth',\n    'children',\n    'class',\n    'icon',\n    'iconNode',\n    'absoluteStrokeWidth',\n    'nonScalingStroke',\n  ]);\n\n  const globalProps = useContext(LucideContext);\n\n  const icon = createMemo<LucideIconData>(\n    () =>\n      localProps.icon ?? {\n        node: localProps.iconNode ?? ([] as LucideIconNode[]),\n        size: 24,\n        aliases: [],\n      },\n  );\n\n  const builtIcon = createMemo(() =>\n    buildLucideIconNode(icon(), {\n      color: localProps.color ?? globalProps.color,\n      width: localProps.width ?? localProps.size ?? globalProps.size,\n      height: localProps.height ?? localProps.size ?? globalProps.size,\n      strokeWidth: localProps.strokeWidth ?? globalProps.strokeWidth,\n      absoluteStrokeWidth: localProps.absoluteStrokeWidth ?? globalProps.absoluteStrokeWidth,\n      nonScalingStroke: localProps.nonScalingStroke ?? globalProps.nonScalingStroke,\n      className: mergeClasses('lucide-icon', globalProps.class, localProps.class),\n      hasA11yProp: Boolean(localProps.children) || hasA11yProp(rest),\n      attributes: rest,\n    }),\n  );\n\n  return (\n    <svg {...builtIcon()[1]}>\n      <For each={builtIcon()[2] ?? []}>\n        {([elementName, attrs]) => {\n          return (\n            <Dynamic\n              component={elementName}\n              {...attrs}\n            />\n          );\n        }}\n      </For>\n    </svg>\n  );\n};\n\nexport default Icon;\n", "const defaultAttributes = {\n  xmlns: 'http://www.w3.org/2000/svg',\n  width: 24,\n  height: 24,\n  viewBox: '0 0 24 24',\n  fill: 'none',\n  stroke: 'currentColor',\n  'stroke-width': 2,\n  'stroke-linecap': 'round',\n  'stroke-linejoin': 'round',\n} as const;\n\nexport default defaultAttributes;\n", "/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n  classes\n    .filter((className, index, array) => {\n      return (\n        Boolean(className) &&\n        (className as string).trim() !== '' &&\n        array.indexOf(className) === index\n      );\n    })\n    .join(' ')\n    .trim();\n", "import type { LucideBuildParams, LucideIconData, LucideIconNode, SVGProps } from './types';\nimport defaultAttributes from './defaultAttributes';\nimport { mergeClasses } from '../utils/mergeClasses';\n\nfunction isDefined<T>(value: T | null | undefined): value is T {\n  return value !== null && value !== undefined;\n}\n\n/**\n * Creates a Lucide icon node (an svgson-like format) from a Lucide icon object.\n *\n * @param icon The icon to build.\n * @param params Additional build parameters.\n */\nfunction buildLucideIconNode(icon: LucideIconData, params: LucideBuildParams = {}): LucideIconNode {\n  const attributeNames = params.attributeNames ?? {};\n  const getAttributeName = (attributeName: string) =>\n    attributeNames[attributeName] ?? attributeName;\n\n  const viewBoxWidth = icon.size ?? icon.width ?? defaultAttributes['width'];\n  const viewBoxHeight = icon.size ?? icon.height ?? defaultAttributes['height'];\n  const aliasClassNames =\n    icon.aliases\n      ?.filter((alias: string): alias is string => typeof alias === 'string' && alias.trim() !== '')\n      .map((alias: string) => `lucide-${alias}`) ?? [];\n  const iconClassNames = [...(icon.name ? [`lucide-${icon.name}`] : []), ...aliasClassNames];\n  const classNamesFromClassName = params.className?.split(' ').filter(Boolean) ?? [];\n  const className =\n    params.includeDefaultClasses === false\n      ? mergeClasses(...classNamesFromClassName)\n      : mergeClasses('lucide', ...iconClassNames, ...classNamesFromClassName);\n\n  const calculatedStrokeWidth = params.absoluteStrokeWidth\n    ? (Number(params.strokeWidth ?? defaultAttributes['stroke-width']) *\n        Number(icon.size ?? icon.width ?? defaultAttributes['width'])) /\n      Number(params.size ?? params.width ?? defaultAttributes['width'])\n    : (params.strokeWidth ?? defaultAttributes['stroke-width']);\n\n  const attributes = {\n    ...Object.entries(defaultAttributes).reduce((attrs, [attrName, value]) => {\n      attrs[getAttributeName(attrName)] = value;\n      return attrs;\n    }, {} as SVGProps),\n    ...('color' in params &&\n      params.color && {\n        [getAttributeName('stroke')]: params.color,\n      }),\n    ...('size' in params &&\n      isDefined(params.size) && {\n        [getAttributeName('width')]: params.size,\n        [getAttributeName('height')]: params.size,\n      }),\n    ...('width' in params &&\n      isDefined(params.width) && {\n        [getAttributeName('width')]: params.width,\n      }),\n    ...('height' in params &&\n      isDefined(params.height) && {\n        [getAttributeName('height')]: params.height,\n      }),\n    [getAttributeName('stroke-width')]: calculatedStrokeWidth,\n    ...(className && {\n      [getAttributeName('class')]: className,\n    }),\n    [getAttributeName('viewBox')]: `0 0 ${viewBoxWidth} ${viewBoxHeight}`,\n    ...(params.hasA11yProp === false\n      ? {\n          [getAttributeName('aria-hidden')]: 'true',\n        }\n      : {}),\n    ...('attributes' in params && params.attributes),\n  };\n\n  return [\n    'svg',\n    attributes,\n    icon.node.map((child): LucideIconNode => {\n      const [name, attrs, children] = child;\n      const nextAttrs = params.nonScalingStroke\n        ? { [getAttributeName('vector-effect')]: 'non-scaling-stroke', ...attrs }\n        : attrs;\n\n      return children ? [name, nextAttrs, children] : [name, nextAttrs];\n    }),\n  ];\n}\n\nexport default buildLucideIconNode;\n", "/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: object) => {\n  for (const prop in props) {\n    if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n      return true;\n    }\n  }\n\n  return false;\n};\n"],
  "mappings": "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",
  "names": []
}
