{"ast":null,"code":"import React from'react';import useRequest from'use-request';import api from'./api';import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";const OptimisticExample=()=>{const{value:status}=useRequest(api.getLikeStatus,[]);const{value,pending,execute}=useRequest(liked=>api.toggleLike(liked),{optimisticPatch:_ref=>{var _ref2,_value$count;let[liked]=_ref;const count=(_ref2=(_value$count=value===null||value===void 0?void 0:value.count)!==null&&_value$count!==void 0?_value$count:status===null||status===void 0?void 0:status.count)!==null&&_ref2!==void 0?_ref2:0;return{liked,count:count+(liked?1:-1)};}});const current=value||status;const liked=(current===null||current===void 0?void 0:current.liked)||false;const count=(current===null||current===void 0?void 0:current.count)||0;return/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsxs(\"button\",{className:\"like-btn\".concat(liked?' liked':''),onClick:()=>execute(!liked),children:[/*#__PURE__*/_jsx(\"span\",{className:\"heart\",children:liked?'\\u2764\\uFE0F':'\\uD83E\\uDD0D'}),/*#__PURE__*/_jsx(\"span\",{children:count})]}),/*#__PURE__*/_jsx(\"div\",{style:{marginTop:12,fontSize:'0.75rem',color:'var(--text-dim)'},children:pending?'Syncing...':'Click to toggle'})]});};export default OptimisticExample;","map":{"version":3,"names":["React","useRequest","api","jsx","_jsx","jsxs","_jsxs","OptimisticExample","value","status","getLikeStatus","pending","execute","liked","toggleLike","optimisticPatch","_ref","_ref2","_value$count","count","current","children","className","concat","onClick","style","marginTop","fontSize","color"],"sources":["/root/.openclaw/workspace/projects/termosa-use-request/example/src/OptimisticExample.js"],"sourcesContent":["import React from 'react'\nimport useRequest from 'use-request'\nimport api from './api'\n\nconst OptimisticExample = () => {\n  const { value: status } = useRequest(api.getLikeStatus, [])\n\n  const { value, pending, execute } = useRequest(\n    (liked) => api.toggleLike(liked),\n    { optimisticPatch: ([liked]) => {\n      const count = value?.count ?? status?.count ?? 0\n      return { liked, count: count + (liked ? 1 : -1) }\n    } }\n  )\n\n  const current = value || status\n  const liked = current?.liked || false\n  const count = current?.count || 0\n\n  return (\n    <div>\n      <button\n        className={`like-btn${liked ? ' liked' : ''}`}\n        onClick={() => execute(!liked)}\n      >\n        <span className=\"heart\">{liked ? '\\u2764\\uFE0F' : '\\uD83E\\uDD0D'}</span>\n        <span>{count}</span>\n      </button>\n      <div style={{ marginTop: 12, fontSize: '0.75rem', color: 'var(--text-dim)' }}>\n        {pending ? 'Syncing...' : 'Click to toggle'}\n      </div>\n    </div>\n  )\n}\n\nexport default OptimisticExample\n"],"mappings":"AAAA,MAAO,CAAAA,KAAK,KAAM,OAAO,CACzB,MAAO,CAAAC,UAAU,KAAM,aAAa,CACpC,MAAO,CAAAC,GAAG,KAAM,OAAO,QAAAC,GAAA,IAAAC,IAAA,CAAAC,IAAA,IAAAC,KAAA,yBAEvB,KAAM,CAAAC,iBAAiB,CAAGA,CAAA,GAAM,CAC9B,KAAM,CAAEC,KAAK,CAAEC,MAAO,CAAC,CAAGR,UAAU,CAACC,GAAG,CAACQ,aAAa,CAAE,EAAE,CAAC,CAE3D,KAAM,CAAEF,KAAK,CAAEG,OAAO,CAAEC,OAAQ,CAAC,CAAGX,UAAU,CAC3CY,KAAK,EAAKX,GAAG,CAACY,UAAU,CAACD,KAAK,CAAC,CAChC,CAAEE,eAAe,CAAEC,IAAA,EAAa,KAAAC,KAAA,CAAAC,YAAA,IAAZ,CAACL,KAAK,CAAC,CAAAG,IAAA,CACzB,KAAM,CAAAG,KAAK,EAAAF,KAAA,EAAAC,YAAA,CAAGV,KAAK,SAALA,KAAK,iBAALA,KAAK,CAAEW,KAAK,UAAAD,YAAA,UAAAA,YAAA,CAAIT,MAAM,SAANA,MAAM,iBAANA,MAAM,CAAEU,KAAK,UAAAF,KAAA,UAAAA,KAAA,CAAI,CAAC,CAChD,MAAO,CAAEJ,KAAK,CAAEM,KAAK,CAAEA,KAAK,EAAIN,KAAK,CAAG,CAAC,CAAG,CAAC,CAAC,CAAE,CAAC,CACnD,CAAE,CACJ,CAAC,CAED,KAAM,CAAAO,OAAO,CAAGZ,KAAK,EAAIC,MAAM,CAC/B,KAAM,CAAAI,KAAK,CAAG,CAAAO,OAAO,SAAPA,OAAO,iBAAPA,OAAO,CAAEP,KAAK,GAAI,KAAK,CACrC,KAAM,CAAAM,KAAK,CAAG,CAAAC,OAAO,SAAPA,OAAO,iBAAPA,OAAO,CAAED,KAAK,GAAI,CAAC,CAEjC,mBACEb,KAAA,QAAAe,QAAA,eACEf,KAAA,WACEgB,SAAS,YAAAC,MAAA,CAAaV,KAAK,CAAG,QAAQ,CAAG,EAAE,CAAG,CAC9CW,OAAO,CAAEA,CAAA,GAAMZ,OAAO,CAAC,CAACC,KAAK,CAAE,CAAAQ,QAAA,eAE/BjB,IAAA,SAAMkB,SAAS,CAAC,OAAO,CAAAD,QAAA,CAAER,KAAK,CAAG,cAAc,CAAG,cAAc,CAAO,CAAC,cACxET,IAAA,SAAAiB,QAAA,CAAOF,KAAK,CAAO,CAAC,EACd,CAAC,cACTf,IAAA,QAAKqB,KAAK,CAAE,CAAEC,SAAS,CAAE,EAAE,CAAEC,QAAQ,CAAE,SAAS,CAAEC,KAAK,CAAE,iBAAkB,CAAE,CAAAP,QAAA,CAC1EV,OAAO,CAAG,YAAY,CAAG,iBAAiB,CACxC,CAAC,EACH,CAAC,CAEV,CAAC,CAED,cAAe,CAAAJ,iBAAiB","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}