mirror of
https://github.com/misskey-dev/misskey.git
synced 2025-03-16 09:55:16 +09:00

* wip * bump misskey-dev/eslint-plugin * lint fixes (backend) * lint fixes (frontend) * lint fixes (frontend-embed) * rollback nsfwjs to 4.2.0 ref: infinitered/nsfwjs#904 * rollback openapi-typescript to v6 v7でOpenAPIのバリデーションが入るようになった関係でスコープ外での変更が避けられないため一時的に戻した * lint fixes (misskey-js) * temporarily disable errored lint rule (frontend-shared) * fix lint * temporarily ignore errored file for lint (frontend-shared) * rollback simplewebauthn/server to 12.0.0 v13 contains breaking changes that require some decision making * lint fixes (frontend-shared) * build misskey-js with types * fix(backend): migrate simplewebauthn/server to v12 * fix(misskey-js/autogen): ignore indent rules to generate consistent output * attempt to fix test changes due to capricorn86/happy-dom#1617 (XMLSerializer now produces valid XML) * attempt to fix test changes due to capricorn86/happy-dom#1617 (XMLSerializer now produces valid XML) * fix test * fix test * fix test * Apply suggestions from code review Co-authored-by: anatawa12 <anatawa12@icloud.com> * bump summaly to v5.2.0 * update tabler-icons to v3.30.0-based --------- Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Co-authored-by: anatawa12 <anatawa12@icloud.com>
89 lines
1.9 KiB
TypeScript
89 lines
1.9 KiB
TypeScript
/*
|
|
* SPDX-FileCopyrightText: syuilo and misskey-project
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
|
|
import type { ValidateViolation } from '@/components/grid/cell-validators.js';
|
|
import type { Size } from '@/components/grid/grid.js';
|
|
import type { GridColumn } from '@/components/grid/column.js';
|
|
import type { GridRow } from '@/components/grid/row.js';
|
|
import type { MenuItem } from '@/types/menu.js';
|
|
import type { GridContext } from '@/components/grid/grid-event.js';
|
|
|
|
export type CellValue = string | boolean | number | undefined | null | Array<unknown> | NonNullable<unknown>;
|
|
|
|
export type CellAddress = {
|
|
row: number;
|
|
col: number;
|
|
};
|
|
|
|
export const CELL_ADDRESS_NONE: CellAddress = {
|
|
row: -1,
|
|
col: -1,
|
|
};
|
|
|
|
export type GridCell = {
|
|
address: CellAddress;
|
|
value: CellValue;
|
|
column: GridColumn;
|
|
row: GridRow;
|
|
selected: boolean;
|
|
ranged: boolean;
|
|
contentSize: Size;
|
|
setting: GridCellSetting;
|
|
violation: ValidateViolation;
|
|
};
|
|
|
|
export type GridCellContextMenuFactory = (col: GridColumn, row: GridRow, value: CellValue, context: GridContext) => MenuItem[];
|
|
|
|
export type GridCellSetting = {
|
|
contextMenuFactory?: GridCellContextMenuFactory;
|
|
};
|
|
|
|
export function createCell(
|
|
column: GridColumn,
|
|
row: GridRow,
|
|
value: CellValue,
|
|
setting: GridCellSetting,
|
|
): GridCell {
|
|
const newValue = (row.using && column.setting.valueTransformer)
|
|
? column.setting.valueTransformer(row, column, value)
|
|
: value;
|
|
|
|
return {
|
|
address: { row: row.index, col: column.index },
|
|
value: newValue,
|
|
column,
|
|
row,
|
|
selected: false,
|
|
ranged: false,
|
|
contentSize: { width: 0, height: 0 },
|
|
violation: {
|
|
valid: true,
|
|
params: {
|
|
column,
|
|
row,
|
|
value,
|
|
allCells: [],
|
|
},
|
|
violations: [],
|
|
},
|
|
setting,
|
|
};
|
|
}
|
|
|
|
export function resetCell(cell: GridCell): void {
|
|
cell.selected = false;
|
|
cell.ranged = false;
|
|
cell.violation = {
|
|
valid: true,
|
|
params: {
|
|
column: cell.column,
|
|
row: cell.row,
|
|
value: cell.value,
|
|
allCells: [],
|
|
},
|
|
violations: [],
|
|
};
|
|
}
|