{"version":3,"file":"index-DgXbGbDQ.js","sources":["../../../node_modules/@mui/icons-material/ArrowDropUp.js","../../../app/javascript/entrypoints/pages/FavoritesPage/StockTable/index.tsx"],"sourcesContent":["\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m7 14 5-5 5 5z\"\n}), 'ArrowDropUp');\nexports.default = _default;","import React, { useState } from 'react';\n\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport ArrowDropUpIcon from '@mui/icons-material/ArrowDropUp';\n\nimport type { Stock } from '../../../output/models';\n\nimport { StockRow } from './StockRow';\n\nimport { color } from '../../../utils';\n\ninterface Props {\n stocks: Stock[];\n}\n\nexport const StockTable: React.FC = ({ stocks }) => {\n const [stocksSorted, setStocksSorted] = useState(stocks);\n const [sortColumn, setSortColumn] = useState('');\n const [sortDirection, setSortDirection] = useState('');\n\n const sortStock = (column: string) => {\n const currentDirection = column === sortColumn ? sortDirection : '';\n const nextDirection =\n currentDirection === 'down' ? 'up' : currentDirection === 'up' ? '' : 'down';\n\n if (nextDirection === 'up') {\n setStocksSorted(sortAscending(stocks, column));\n } else if (nextDirection === 'down') {\n setStocksSorted(sortDescending(stocks, column));\n } else {\n setStocksSorted(stocks);\n }\n\n setSortColumn(column);\n setSortDirection(nextDirection);\n };\n\n return (\n \n \n \n \n \n \n {\n sortStock('per');\n }}\n >\n PER\n {indicator('per', sortColumn, sortDirection)}\n \n {\n sortStock('pbr');\n }}\n >\n PBR\n {indicator('pbr', sortColumn, sortDirection)}\n \n {\n sortStock('operating_income_ratio');\n }}\n >\n OPR\n {indicator('operating_income_ratio', sortColumn, sortDirection)}\n \n {\n sortStock('dividend_yield');\n }}\n >\n 配当\n {indicator('dividend_yield', sortColumn, sortDirection)}\n \n {\n sortStock('change_rate');\n }}\n >\n 前日比\n {indicator('change_rate', sortColumn, sortDirection)}\n \n {\n sortStock('ytd');\n }}\n >\n 年初来\n {indicator('ytd', sortColumn, sortDirection)}\n \n \n \n \n \n {stocksSorted.map((stock, index) => (\n \n ))}\n \n
\n コード\n 銘柄名リンク
\n );\n};\n\nconst indicator = (\n column: string,\n sortColumn: string,\n sortDirection: string | undefined,\n): JSX.Element | undefined => {\n if (column === sortColumn) {\n if (sortDirection === 'up') {\n return (\n \n );\n } else if (sortDirection === 'down') {\n return (\n \n );\n }\n }\n};\n\nconst sortAscending = (stocks: Stock[], column: string): Stock[] => {\n return stocks.toSorted((a, b): number => {\n // @ts-ignore\n return (a[column] ?? 0) - (b[column] ?? 0);\n });\n};\n\nconst sortDescending = (stocks: Stock[], column: string): Stock[] => {\n return stocks.toSorted((a, b): number => {\n // @ts-ignore\n return (b[column] ?? 0) - (a[column] ?? 0);\n });\n};\n"],"names":["_interopRequireDefault","require$$0","ArrowDropUp","default_1","_createSvgIcon","require$$1","_jsxRuntime","require$$2","_default","StockTable","stocks","stocksSorted","setStocksSorted","useState","sortColumn","setSortColumn","sortDirection","setSortDirection","sortStock","column","currentDirection","nextDirection","sortAscending","sortDescending","jsxs","jsx","indicator","stock","index","StockRow","ArrowDropUpIcon","color","ArrowDropDownIcon","a","b"],"mappings":"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","x_google_ignoreList":[0]}