import type { PartialSelectItem, SelectItemResult, UseSelectResultStateAccessor } from "./useSelectComponent"; import type { AdaptorSelectOption, StringSelectComponentBuilder, AdaptorStringSelectInteraction } from "../../adaptor"; import type { Lazy } from "../../util/lazy"; export type UsePagedSelectComponentParams = { optionsResolver: (maxItemNumPerPage: number) => PartialSelectItem[][]; onSelected?: (selected: SelectItemResult[]) => void; pageTorus?: boolean; minValues?: number; filter?: (interaction: Readonly) => boolean; } & ({ showSelectedAlways?: false; maxValues?: number; } | { showSelectedAlways: true; maxValues: number; }); /** * @param result 選択状態が追加されたSelectItemの配列 * @param Select Selectコンポーネントのビルダー * @param page 現在のページ * @param pageNum 全ページ数 * @param setPage ページを変更する関数 * @param stateAccessor 選択状態を外部から操作するための関数群 */ export type UsePagedSelectComponentResult = { result: (SelectItemResult & { page: number; })[]; Select: StringSelectComponentBuilder<{ customId: string; options: AdaptorSelectOption[]; minValues: 0; maxValues: number | undefined; }>; page: number; pageNum: number; setPage: (dispatch: Lazy) => void; stateAccessor: UseSelectResultStateAccessor; }; /** * ページ分割されたSelectコンポーネントと選択状態を提供するRenderHook * @param optionsResolver ページ分割されたオプションを返す関数 * @param onSelected 選択状態が変化した時に呼ばれるハンドラ * @param maxValues 選択可能なオプションの最大数 ページごとではなく全てのページを合わせた選択数 showSelectedAlwaysがtrueの場合、1~24の値を指定する必要がある (デフォルト: 制限無し) * @param minValues 選択可能なオプションの最小数 ページごとではなく全てのページの合わせた選択数 (デフォルト: 0) * @param showSelectedAlways 選択済みのオプションを常に表示するかどうか trueの場合、maxValuesの値だけ1ページごとに表示されるオプションの数が減る * @param pageTorus ページの最大値を超えた場合に最小値に戻るかどうか (デフォルト: false) * @param filter interactionに反応するかどうかのフィルタ falseを返すとdeferUpdateとonSelectedは実行されない * @returns { result, Select, page, pageNum, setPage, stateAccessor} */ export declare const usePagedSelectComponent: ({ optionsResolver, onSelected, maxValues, minValues, showSelectedAlways, pageTorus, filter, }: UsePagedSelectComponentParams) => UsePagedSelectComponentResult; export declare const useRangedNumberState: ({ initial, min, max, torus, }: { initial: Lazy; min: number; max: number; torus: boolean; }) => [number, (dispatch: Lazy) => void]; /** * オプションをページごとに分割する関数 * 1ページごとのオプション数が多くなるように前詰めで分割する * @param option */ export declare const closeSplitter: (option: readonly T[]) => (maxOptionNumPerPage: number) => T[][]; /** * オプションをページごとに分割する関数 * 1ページごとのオプション数が均等になるように分割する * @param options */ export declare const equalitySplitter: (options: readonly T[]) => (maxOptionNumPerPage: number) => T[][]; //# sourceMappingURL=usePagedSelectComponent.d.ts.map