{"version":3,"sources":["jsdelivr-header.js","/npm/poi-plugin-senka-calc@5.4.0/index.tsx"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,qJCNA,IAAA,OAAA,uBAAA,QAAA,UACA,kBAAA,uBAAA,QAAA,sBACA,WAAA,QAAA,yBACA,OAAA,QAAA,eACA,MAAA,QAAA,cAEA,MAAA,QAAA,gBACA,aAAA,QAAA,sBACA,gBAAA,QAAA,mBAGA,QAAA,QAAA,UACA,gBAAA,uBAAA,QAAA,oBACA,YAAA,QAAA,eACA,YAAA,QAAA,sBACA,UAAA,QAAA,oBAGA,UAAA,QAAA,c,0GAEA,MAAM,IAAM,0BAAO,IAAV,WAAA,CAAA,YAAA,yBAAA,YAAA,eAAG,CAAH,mBAIH,IAAM,0BAAO,IAAV,WAAA,CAAA,YAAA,yBAAA,YAAA,eAAG,CAAH,aAIH,sBAA8C,MAAO,EAAU,EAAS,KAC5E,GAAI,EAAQ,iBAAkB,aAA1B,EAA0B,EAAU,eAAe,CACrD,MAAM,EAAW,SAAS,EAAQ,eAC5B,QAAgB,EAAA,sBAAe,GACrC,oBAAa,WAAW,EAAQ,MAAO,EAAQ,aAAc,GAC7D,EAAS,CACP,KAAM,qCACN,WAEH,GAGG,2BAAsD,MAAO,EAAU,KAC3E,GAAI,oBAAa,iBAAmB,OAAO,KAAK,EAAQ,mBAAqB,IAAI,OAAS,EAAG,CAC3F,MAAM,EAAuB,KACxB,EAAA,cACD,EACA,oBACA,QACA,SACA,UACA,UACA,WACA,YACA,eACA,cACA,cACA,kBAEF,MAAO,oBAAa,MACpB,KAAM,wBAAO,GAAG,cAAc,UAE1B,EAAW,oBAAa,eACxB,EAAA,uBAAgB,EAAU,EACjC,GAGG,eAAgB,EAAA,0BACpB,yBACA,uBAGI,oBAAqB,EAAA,0BACzB,+BACA,4BAGF,IACI,MADA,mBAAiC,KAArC,EAGI,WAAa,wBAAO,GAAG,cAAc,MAAM,SAExC,MAAM,cAAgB,KAC3B,oBAAqB,EAAA,yBAAQ,mBAAO,CAAC,cAAe,oBAAqB,CAAE,iBAAiB,IAC5F,MAAQ,aAAY,UAClB,GAAI,wBAAO,GAAG,cAAc,QAAQ,YAAa,CAC/C,WAAa,wBAAO,GAAG,cAAc,MAAM,SAC3C,MAAM,QAAgB,EAAA,sBAAe,oBAAa,UAClD,mBAAM,SAAS,CACb,KAAM,qCACN,WAEH,IACA,IATH,E,oCAYK,MAAM,iBAAmB,KAC9B,qBACA,mBAAqB,KAArB,EACI,OACF,cAAc,OAEhB,MAAQ,IAAR,E,0CAGF,MAAM,YAAc,CAClB,mDACA,uDACA,wDAGW,WAAuB,IAEhC,OAAA,QAAA,cAAC,IAAD,KACG,YAAY,KAAI,GAAO,OAAA,QAAA,cAAA,QAAM,IAAK,EAAK,KAAM,QAAQ,QAAQ,GAAM,IAAI,iBACxE,OAAA,QAAA,cAAC,IAAD,KACE,OAAA,QAAA,cAAC,MAAA,KAAD,MACA,OAAA,QAAA,cAAC,UAAA,SAAD,OAEF,OAAA,QAAA,cAAC,IAAD,KACE,OAAA,QAAA,cAAC,YAAA,WAAD,Q,8BAMD,MAAM,iBAAmB,CAC9B,wC","file":"/npm/poi-plugin-senka-calc@5.4.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/poi-plugin-senka-calc@5.4.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import React from 'react'\nimport styled from 'styled-components'\nimport { basicSelector } from 'views/utils/selectors'\nimport { magicManager } from './lib/magic'\nimport { getAchieveData, saveArchiveData } from './lib/util'\nimport { Archive } from './lib/type'\nimport { Info } from './views/info'\nimport { store } from 'views/create-store'\nimport { Dispatcher, observe, observer } from 'redux-observers'\nimport { APIBasic } from 'kcsapi/api_port/port/response'\nimport { PluginState } from './reducers'\nimport { pick } from 'lodash'\nimport moment from 'moment-timezone'\nimport { pluginDataSelector } from './selectors'\nimport { Calculator } from './views/calculator'\nimport { Calender } from './views/calendar'\nimport { InitializeAction } from './reducers/actions'\n\nexport { reducer } from './reducers'\n\nconst Row = styled.div`\n  display: flex;\n`\n\nconst Col = styled.div`\n  flex: 1;\n`\n\nconst basicObserverCallback: Dispatcher<APIBasic> = async (dispatch, current, previous) => {\n  if (current.api_member_id !== previous?.api_member_id) {\n    const memberId = parseInt(current.api_member_id)\n    const archive = await getAchieveData(memberId)\n    magicManager.initialize(archive.magic, current.api_nickname, memberId)\n    dispatch({\n      type: '@@poi-plugin-senka-calc/initialize',\n      archive,\n    } as InitializeAction)\n  }\n}\n\nconst pluginDataObserverCallback: Dispatcher<PluginState> = async (dispatch, current) => {\n  if (magicManager.isInitialized() && Object.keys(current.experienceHistory || {}).length > 0) {\n    const archiveData: Archive = {\n      ...pick(\n        current,\n        'experienceHistory',\n        'rank5',\n        'rank20',\n        'rank100',\n        'rank501',\n        'rankUser',\n        'exHistory',\n        'questHistory',\n        'currentRank',\n        'targetSenka',\n        'excludedQuests',\n      ),\n      magic: magicManager.magic,\n      date: moment.tz('Asia/Tokyo').format(),\n    }\n    const memberId = magicManager.memberId\n    await saveArchiveData(memberId, archiveData)\n  }\n}\n\nconst basicObserver = observer(\n  basicSelector,\n  basicObserverCallback\n)\n\nconst pluginDataObserver = observer(\n  pluginDataSelector,\n  pluginDataObserverCallback\n)\n\nlet unsuscribeObserver: () => void = () => undefined\nlet timer: ReturnType<typeof setInterval> | null\n\nlet endOfMonth = moment.tz('Asia/Tokyo').endOf('month')\n\nexport const pluginDidLoad = () => {\n  unsuscribeObserver = observe(store, [basicObserver, pluginDataObserver], { skipInitialCall: false })\n  timer = setInterval(async () => {\n    if (moment.tz('Asia/Tokyo').isAfter(endOfMonth)) {\n      endOfMonth = moment.tz('Asia/Tokyo').endOf('month')\n      const archive = await getAchieveData(magicManager.memberId)\n      store.dispatch({\n        type: '@@poi-plugin-senka-calc/initialize',\n        archive,\n      } as InitializeAction)\n    }\n  }, 1000)\n}\n\nexport const pluginWillUnload = () => {\n  unsuscribeObserver()\n  unsuscribeObserver = () => undefined\n  if (timer) {\n    clearInterval(timer)\n  }\n  timer = null\n}\n\nconst requiredCSS = [\n  '@blueprintjs/select/lib/css/blueprint-select.css',\n  '@blueprintjs/popover2/lib/css/blueprint-popover2.css',\n  '@blueprintjs/datetime/lib/css/blueprint-datetime.css',\n]\n\nexport const reactClass: React.FC = () => {\n  return (\n    <Row>\n      {requiredCSS.map(css => <link key={css} href={require.resolve(css)} rel=\"stylesheet\" />)}\n      <Col>\n        <Info />\n        <Calender />\n      </Col>\n      <Col>\n        <Calculator />\n      </Col>\n    </Row>\n  )\n}\n\nexport const switchPluginPath = [\n  '/kcsapi/api_req_ranking/mxltvkpyuklh',\n]\n"]}