{"version":3,"file":"CodeShowcase.mjs","names":[],"sources":["../../../src/awesome/CodeShowcase/CodeShowcase.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { type CSSProperties, memo, useState } from 'react';\n\nimport Segmented from '@/base-ui/Segmented';\nimport Highlighter from '@/Highlighter';\n\nimport { styles } from './style';\nimport type { CodeShowcaseProps } from './type';\n\nconst CodeShowcase = memo<CodeShowcaseProps>(\n  ({\n    activeKey: controlledKey,\n    className,\n    defaultActiveKey,\n    items,\n    minHeight,\n    onChange,\n    style,\n    ...rest\n  }) => {\n    const [innerKey, setInnerKey] = useState(defaultActiveKey ?? items[0]?.key);\n    const activeKey = controlledKey ?? innerKey;\n    const active = items.find((item) => item.key === activeKey) ?? items[0];\n\n    if (!active) return null;\n\n    return (\n      <div\n        className={cx(styles.root, className)}\n        style={{ '--code-showcase-min-height': `${minHeight}px`, ...style } as CSSProperties}\n        {...rest}\n      >\n        {items.length > 1 && (\n          <Segmented\n            className={styles.tabs}\n            options={items.map(({ key, label }) => ({ label, value: key }))}\n            value={active.key}\n            variant={'outlined'}\n            onChange={(key) => {\n              setInnerKey(key);\n              onChange?.(key);\n            }}\n          />\n        )}\n        <div className={styles.panes}>\n          <Highlighter\n            className={styles.code}\n            language={active.language ?? 'tsx'}\n            variant={'outlined'}\n          >\n            {active.code}\n          </Highlighter>\n          <div className={styles.preview}>{active.preview}</div>\n        </div>\n      </div>\n    );\n  },\n);\n\nCodeShowcase.displayName = 'CodeShowcase';\n\nexport default CodeShowcase;\n"],"mappings":";;;;;;;;AAWA,MAAM,eAAe,MAClB,EACC,WAAW,eACX,WACA,kBACA,OACA,WACA,UACA,OACA,GAAG,WACC;CACJ,MAAM,CAAC,UAAU,eAAe,SAAS,oBAAoB,MAAM,EAAE,EAAE,GAAG;CAC1E,MAAM,YAAY,iBAAiB;CACnC,MAAM,SAAS,MAAM,MAAM,SAAS,KAAK,QAAQ,SAAS,KAAK,MAAM;CAErE,IAAI,CAAC,QAAQ,OAAO;CAEpB,OACE,qBAAC,OAAD;EACE,WAAW,GAAG,OAAO,MAAM,SAAS;EACpC,OAAO;GAAE,8BAA8B,GAAG,UAAU;GAAK,GAAG;EAAM;EAClE,GAAI;EAHN,UAAA,CAKG,MAAM,SAAS,KACd,oBAAC,WAAD;GACE,WAAW,OAAO;GAClB,SAAS,MAAM,KAAK,EAAE,KAAK,aAAa;IAAE;IAAO,OAAO;GAAI,EAAE;GAC9D,OAAO,OAAO;GACd,SAAS;GACT,WAAW,QAAQ;IACjB,YAAY,GAAG;IACf,WAAW,GAAG;GAChB;EACD,CAAA,GAEH,qBAAC,OAAD;GAAK,WAAW,OAAO;GAAvB,UAAA,CACE,oBAAC,aAAD;IACE,WAAW,OAAO;IAClB,UAAU,OAAO,YAAY;IAC7B,SAAS;IAER,UAAA,OAAO;GACG,CAAA,GACb,oBAAC,OAAD;IAAK,WAAW,OAAO;IAAU,UAAA,OAAO;GAAa,CAAA,CAClD;EACF,CAAA,CAAA;;AAET,CACF;AAEA,aAAa,cAAc"}