{"version":3,"file":"components/Select/index.mjs","sources":["../../../src/components/Select/index.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { Button, Col, Input, Row, Select, Typography } from 'antd';\nimport { FileSearchOutlined, SelectOutlined } from '@ant-design/icons';\nimport { KeywordInput } from '../Form/keyword';\nimport { Size } from 'src/constants';\nimport { ServerAPIProvider } from '../Manifest';\nimport { SDK } from '@rsdoctor/types';\nimport './index.scss';\n\ninterface LoaderNamesSelectProps {\n  style?: React.CSSProperties;\n  onChange: (loaders: string[]) => void;\n  loaderNames: string[];\n}\n\nexport type ISelectLoaderProps = {\n  loaders: string[];\n  filename: string;\n  layer?: string;\n};\n\nexport const LoaderNamesSelect: React.FC<LoaderNamesSelectProps> = ({\n  style,\n  onChange,\n  loaderNames,\n}) => {\n  const [selectLoaders, setSelectLoaders] = useState([]);\n\n  const labelStyle: React.CSSProperties = { width: 120 };\n\n  return (\n    <Input.Group compact style={style}>\n      <Button style={labelStyle}>\n        <SelectOutlined />\n        <Typography.Text>Loaders</Typography.Text>\n      </Button>\n      <Select\n        mode=\"multiple\"\n        allowClear\n        defaultValue={selectLoaders}\n        className=\"loader-select\"\n        style={{ width: 300 }}\n        popupMatchSelectWidth={300}\n        placeholder={'select loaders'}\n        onChange={(e) => {\n          setSelectLoaders(e);\n          onChange(e);\n        }}\n      >\n        {loaderNames.map((e) => {\n          return (\n            <Select.Option key={e} label={e} value={e}>\n              {e}\n            </Select.Option>\n          );\n        })}\n      </Select>\n    </Input.Group>\n  );\n};\n\nconst LoaderLayerSelect: React.FC<{\n  onChange(value: string): void;\n  layers: string[];\n}> = ({ onChange, layers }) => {\n  const [layer, setLayer] = useState('');\n  const labelStyle: React.CSSProperties = { width: 120 };\n\n  return (\n    <Input.Group compact>\n      <Button style={labelStyle}>\n        <SelectOutlined />\n        <Typography.Text>Layers</Typography.Text>\n      </Button>\n      <Select\n        allowClear\n        className=\"layer-select\"\n        style={{ width: 150 }}\n        defaultValue={layer}\n        placeholder={'select layer'}\n        onChange={(e) => {\n          setLayer(e);\n          onChange(e);\n        }}\n      >\n        {layers?.length ? (\n          layers?.map((e) => {\n            return (\n              <Select.Option key={e} label={e} value={e}>\n                {e}\n              </Select.Option>\n            );\n          })\n        ) : (\n          <></>\n        )}\n      </Select>\n    </Input.Group>\n  );\n};\n\nexport const LoaderCommonSelect: React.FC<{\n  onChange(value: ISelectLoaderProps): void;\n  loaderNames: string[];\n}> = ({ onChange, loaderNames }) => {\n  const [selectLoaders, setSelectLoaders] = useState<string[]>([]);\n  const [filename, setFilename] = useState('');\n  const [layer, setLayer] = useState('');\n\n  useEffect(() => {\n    onChange({ loaders: selectLoaders, filename, layer });\n  }, [selectLoaders, filename, layer]);\n\n  return (\n    <Row style={{ marginBottom: Size.BasePadding, marginLeft: 10 }}>\n      <Col>\n        <LoaderNamesSelect\n          loaderNames={loaderNames}\n          style={{ marginRight: Size.BasePadding }}\n          onChange={(e) => {\n            setSelectLoaders(e);\n          }}\n        />\n      </Col>\n      <Col>\n        <KeywordInput\n          icon={<FileSearchOutlined />}\n          style={{ marginRight: Size.BasePadding }}\n          label=\"Filename\"\n          placeholder=\"search filename by keyword\"\n          onChange={(e) => {\n            setFilename(e);\n          }}\n        />\n      </Col>\n      <Col>\n        <ServerAPIProvider api={SDK.ServerAPI.API.GetLayers}>\n          {(layers) =>\n            layers.length ? (\n              <LoaderLayerSelect\n                layers={layers}\n                onChange={(e) => {\n                  setLayer(e);\n                }}\n              />\n            ) : (\n              <></>\n            )\n          }\n        </ServerAPIProvider>\n      </Col>\n    </Row>\n  );\n};\n"],"names":["LoaderNamesSelect","style","onChange","loaderNames","selectLoaders","setSelectLoaders","useState","labelStyle","Input","Button","SelectOutlined","Typography","Select","e","LoaderLayerSelect","layers","layer","setLayer","LoaderCommonSelect","filename","setFilename","useEffect","Row","Size","Col","KeywordInput","FileSearchOutlined","ServerAPIProvider","SDK"],"mappings":";;;;;;;;;AAqBO,MAAMA,oBAAsD,CAAC,EAClEC,KAAK,EACLC,QAAQ,EACRC,WAAW,EACZ;IACC,MAAM,CAACC,eAAeC,iBAAiB,GAAGC,SAAS,EAAE;IAErD,MAAMC,aAAkC;QAAE,OAAO;IAAI;IAErD,OAAO,WAAP,GACE,KAACC,MAAM,KAAK;QAAC,SAAO;QAAC,OAAOP;;0BAC1B,KAACQ,QAAMA;gBAAC,OAAOF;;kCACb,IAACG,gBAAcA,CAAAA;kCACf,IAACC,WAAW,IAAI;kCAAC;;;;0BAEnB,IAACC,QAAMA;gBACL,MAAK;gBACL,YAAU;gBACV,cAAcR;gBACd,WAAU;gBACV,OAAO;oBAAE,OAAO;gBAAI;gBACpB,uBAAuB;gBACvB,aAAa;gBACb,UAAU,CAACS;oBACTR,iBAAiBQ;oBACjBX,SAASW;gBACX;0BAECV,YAAY,GAAG,CAAC,CAACU,IACT,WAAP,GACE,IAACD,OAAO,MAAM;wBAAS,OAAOC;wBAAG,OAAOA;kCACrCA;uBADiBA;;;;AAQhC;AAEA,MAAMC,oBAGD,CAAC,EAAEZ,QAAQ,EAAEa,MAAM,EAAE;IACxB,MAAM,CAACC,OAAOC,SAAS,GAAGX,SAAS;IACnC,MAAMC,aAAkC;QAAE,OAAO;IAAI;IAErD,OAAO,WAAP,GACE,KAACC,MAAM,KAAK;QAAC,SAAO;;0BAClB,KAACC,QAAMA;gBAAC,OAAOF;;kCACb,IAACG,gBAAcA,CAAAA;kCACf,IAACC,WAAW,IAAI;kCAAC;;;;0BAEnB,IAACC,QAAMA;gBACL,YAAU;gBACV,WAAU;gBACV,OAAO;oBAAE,OAAO;gBAAI;gBACpB,cAAcI;gBACd,aAAa;gBACb,UAAU,CAACH;oBACTI,SAASJ;oBACTX,SAASW;gBACX;0BAECE,QAAQ,SACPA,QAAQ,IAAI,CAACF,IACJ,WAAP,GACE,IAACD,OAAO,MAAM;wBAAS,OAAOC;wBAAG,OAAOA;kCACrCA;uBADiBA,MAIxB,cAEA;;;;AAKV;AAEO,MAAMK,qBAGR,CAAC,EAAEhB,QAAQ,EAAEC,WAAW,EAAE;IAC7B,MAAM,CAACC,eAAeC,iBAAiB,GAAGC,SAAmB,EAAE;IAC/D,MAAM,CAACa,UAAUC,YAAY,GAAGd,SAAS;IACzC,MAAM,CAACU,OAAOC,SAAS,GAAGX,SAAS;IAEnCe,UAAU;QACRnB,SAAS;YAAE,SAASE;YAAee;YAAUH;QAAM;IACrD,GAAG;QAACZ;QAAee;QAAUH;KAAM;IAEnC,OAAO,WAAP,GACE,KAACM,KAAGA;QAAC,OAAO;YAAE,cAAcC,KAAK,WAAW;YAAE,YAAY;QAAG;;0BAC3D,IAACC,KAAGA;0BACF,kBAACxB,mBAAiBA;oBAChB,aAAaG;oBACb,OAAO;wBAAE,aAAaoB,KAAK,WAAW;oBAAC;oBACvC,UAAU,CAACV;wBACTR,iBAAiBQ;oBACnB;;;0BAGJ,IAACW,KAAGA;0BACF,kBAACC,cAAYA;oBACX,oBAAM,IAACC,oBAAkBA,CAAAA;oBACzB,OAAO;wBAAE,aAAaH,KAAK,WAAW;oBAAC;oBACvC,OAAM;oBACN,aAAY;oBACZ,UAAU,CAACV;wBACTO,YAAYP;oBACd;;;0BAGJ,IAACW,KAAGA;0BACF,kBAACG,mBAAiBA;oBAAC,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS;8BAChD,CAACb,SACAA,OAAO,MAAM,GAAG,WAAH,GACX,IAACD,mBAAiBA;4BAChB,QAAQC;4BACR,UAAU,CAACF;gCACTI,SAASJ;4BACX;2CAGF;;;;;AAOd"}