{
  "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": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAqB;AAErB,qBAAuC;AAUhC,MAAM,SAAwC,gCAAU,OAAO;AAClE,QAAM,EAAE,YAAY,aAAa,GAAG,OAAO,IAAI;AAC/C,QAAM,aAAa,mBAAe,0BAAmB,KAAK;AAE1D,QAAM,UAAW;AAAA,IACb;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW,QAAQ,aAAa;AAAA,EACpC,EACK,OAAO,OAAO,EACd,KAAK,GAAG,EACR,KAAK;AAEV,iBAAe,MAAO,IAAe;AACjC,QAAI,MAAM,SAAS;AACf,iBAAW,QAAQ;AACnB,YAAM,MAAM,QAAQ,EAAE;AACtB,iBAAW,QAAQ;AAAA,IACvB;AAAA,EACJ;AANe;AAQf,SAAO;AAAA,aACE,MAAM;AAAA,kBACD,KAAK;AAAA,mBACJ,WAAW,SAAS,OAAO,QAAQ;AAAA,oBAClC,OAAO;AAAA;AAAA,wCAEa,MAAM,QAAQ;AAAA;AAEtD,GA9BqD;",
  "names": []
}
