{
  "version": 3,
  "sources": ["../src/button.ts"],
  "sourcesContent": ["import { html } from 'htm/preact'\nimport { type FunctionComponent } from 'preact'\nimport { type Signal, useSignal } from '@preact/signals'\n\ninterface ButtonProps {\n    onClick?:(ev:MouseEvent)=>void|Promise<void>;\n    isSpinning?:Signal<boolean>;\n    className?:string;\n    disabled?:boolean;\n    class?:string;\n}\n\nexport const Button:FunctionComponent<ButtonProps> = function (props) {\n    const { isSpinning: _isSpinning, ..._props } = props\n    const isSpinning = _isSpinning || useSignal<boolean>(false)\n\n    const classes = ([\n        'btn',\n        props.className,\n        props.class,\n        isSpinning.value ? 'spinning' : ''\n    ])\n        .filter(Boolean)\n        .join(' ')\n        .trim()\n\n    async function click (ev:MouseEvent) {\n        if (props.onClick) {\n            isSpinning.value = true\n            await props.onClick(ev)\n            isSpinning.value = false\n        }\n    }\n\n    return html`<button\n        ...${_props}\n        onClick=${click}\n        disabled=${isSpinning.value || _props.disabled}\n        className=${classes}\n    >\n        <span className=\"btn-content\">${props.children}</span>\n    </button>`\n}\n"],
  "mappings": "4dAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,YAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAqB,sBAErBC,EAAuC,2BAUhC,MAAMC,EAAwCC,EAAA,SAAUC,EAAO,CAClE,KAAM,CAAE,WAAYC,EAAa,GAAGC,CAAO,EAAIF,EACzCG,EAAaF,MAAe,aAAmB,EAAK,EAEpDG,EAAW,CACb,MACAJ,EAAM,UACNA,EAAM,MACNG,EAAW,MAAQ,WAAa,EACpC,EACK,OAAO,OAAO,EACd,KAAK,GAAG,EACR,KAAK,EAEV,eAAeE,EAAOC,EAAe,CAC7BN,EAAM,UACNG,EAAW,MAAQ,GACnB,MAAMH,EAAM,QAAQM,CAAE,EACtBH,EAAW,MAAQ,GAE3B,CANe,OAAAJ,EAAAM,EAAA,SAQR;AAAA,aACEH,CAAM;AAAA,kBACDG,CAAK;AAAA,mBACJF,EAAW,OAASD,EAAO,QAAQ;AAAA,oBAClCE,CAAO;AAAA;AAAA,wCAEaJ,EAAM,QAAQ;AAAA,cAEtD,EA9BqD",
  "names": ["button_exports", "__export", "Button", "__toCommonJS", "import_preact", "import_signals", "Button", "__name", "props", "_isSpinning", "_props", "isSpinning", "classes", "click", "ev"]
}
