import * as React from "react"; import * as d from "../../localData"; import type { ElementOperation } from "./ElementOperation"; import { Link } from "../ui/Link"; import type { UseDefinyAppResult } from "../hook/useDefinyApp"; import { css } from "@emotion/css"; import { neverFunc } from "../../common/util"; export type TypePartIdSelection = never; export type TypePartIdValue = { readonly typePartId: d.TypePartId; readonly canEdit: boolean; } & Pick; const TypePartIdSelectionView: ElementOperation< TypePartIdSelection, TypePartIdValue >["selectionView"] = React.memo((props) => { React.useEffect(() => { props.value.typePartResource.requestToServerIfEmpty(props.value.typePartId); }, [props.value.typePartId, props.value.typePartResource]); const typePartResource = props.value.typePartResource.getFromMemoryCache( props.value.typePartId ); if (typePartResource === undefined) { return ( リクエスト準備中 ); } if (typePartResource._ === "Deleted") { return ( 削除された型パーツ ); } if (typePartResource._ === "Unknown") { return ( 取得に失敗 ); } if (typePartResource._ === "Requesting") { return ( 取得中 ); } return (
{typePartResource.dataWithTime.data.name}
); }); TypePartIdSelectionView.displayName = "TypePartIdSelectionView"; const TypePartIdDetailView: ElementOperation< TypePartIdSelection, TypePartIdValue >["detailView"] = React.memo(() => { return
検索欄と, 候補の選択肢
; }); TypePartIdDetailView.displayName = "TypePartIdDetailView"; export const typePartIdOperation: ElementOperation< TypePartIdSelection, TypePartIdValue > = { moveUp: neverFunc, moveDown: neverFunc, moveFirstChild: () => undefined, moveParent: () => undefined, selectionView: TypePartIdSelectionView, detailView: TypePartIdDetailView, };