This commit is contained in:
syuilo 2026-05-25 15:07:22 +09:00
commit b8f67a3e69
2 changed files with 238 additions and 2 deletions

View file

@ -5,11 +5,11 @@
import type { GetOptionsSchemaUiDef, OptionsSchema } from './object.js';
type UiDef<OpSc extends OptionsSchema = OptionsSchema> = {
export type ObjectUiDef<OpSc extends OptionsSchema = OptionsSchema> = {
name: string;
options: GetOptionsSchemaUiDef<OpSc>;
};
export function defineObjectUi<const Def extends { options: { schema: OptionsSchema } }>(def: UiDef<Def['options']['schema']>): UiDef<Def['options']['schema']> {
export function defineObjectUi<const Def extends { options: { schema: OptionsSchema } }>(def: ObjectUiDef<Def['options']['schema']>): ObjectUiDef<Def['options']['schema']> {
return def;
}

View file

@ -0,0 +1,236 @@
/*
* SPDX-FileCopyrightText: syuilo and misskey-project
* SPDX-License-Identifier: AGPL-3.0-only
*/
import { a4Case_ui } from './objects/a4Case.ui.js';
import { aircon_ui } from './objects/aircon.ui.js';
import { allInOnePc_ui } from './objects/allInOnePc.ui.js';
import { aquarium_ui } from './objects/aquarium.ui.js';
import { aromaReedDiffuser_ui } from './objects/aromaReedDiffuser.ui.js';
import { banknote_ui } from './objects/banknote.ui.js';
import { beamLamp_ui } from './objects/beamLamp.ui.js';
import { bed_ui } from './objects/bed.ui.js';
import { blind_ui } from './objects/blind.ui.js';
import { book_ui } from './objects/book.ui.js';
import { books_ui } from './objects/books.ui.js';
import { boxWallShelf_ui } from './objects/boxWallShelf.ui.js';
import { cactusS_ui } from './objects/cactusS.ui.js';
import { cardboardBox_ui } from './objects/cardboardBox.ui.js';
import { ceilingFanLight_ui } from './objects/ceilingFanLight.ui.js';
import { chair_ui } from './objects/chair.ui.js';
import { clippedPicture_ui } from './objects/clippedPicture.ui.js';
import { coffeeCup_ui } from './objects/coffeeCup.ui.js';
import { colorBox_ui } from './objects/colorBox.ui.js';
import { cuboid_ui } from './objects/cuboid.ui.js';
import { cupNoodle_ui } from './objects/cupNoodle.ui.js';
import { curtain_ui } from './objects/curtain.ui.js';
import { custardPudding_ui } from './objects/custardPudding.ui.js';
import { descriptionPlate_ui } from './objects/descriptionPlate.ui.js';
import { desk_ui } from './objects/desk.ui.js';
import { desktopPc_ui } from './objects/desktopPc.ui.js';
import { djMixer_ui } from './objects/djMixer.ui.js';
import { djPlayer_ui } from './objects/djPlayer.ui.js';
import { ductRailSpotLights_ui } from './objects/ductRailSpotLights.ui.js';
import { ductTape_ui } from './objects/ductTape.ui.js';
import { electronicDisplayBoard_ui } from './objects/electronicDisplayBoard.ui.js';
import { emptyBento_ui } from './objects/emptyBento.ui.js';
import { energyDrink_ui } from './objects/energyDrink.ui.js';
import { envelope_ui } from './objects/envelope.ui.js';
import { facialTissue_ui } from './objects/facialTissue.ui.js';
import { glassCylinderPotPlant_ui } from './objects/glassCylinderPotPlant.ui.js';
import { handheldGameConsole_ui } from './objects/handheldGameConsole.ui.js';
import { hangingDuctRail_ui } from './objects/hangingDuctRail.ui.js';
import { hangingTShirt_ui } from './objects/hangingTShirt.ui.js';
import { icosahedron_ui } from './objects/icosahedron.ui.js';
import { ironFrameShelf5_ui, ironFrameShelf4_ui, ironFrameShelf3_ui } from './objects/ironFrameShelf.ui.js';
import { ironFrameTable_ui } from './objects/ironFrameTable.ui.js';
import { issyoubin_ui } from './objects/issyoubin.ui.js';
import { keyboard_ui } from './objects/keyboard.ui.js';
import { laptopPc_ui } from './objects/laptopPc.ui.js';
import { largeMousepad_ui } from './objects/largeMousepad.ui.js';
import { lavaLamp_ui } from './objects/lavaLamp.ui.js';
import { letterCase_ui } from './objects/letterCase.ui.js';
import { lowPartitionBar_ui } from './objects/lowPartitionBar.ui.js';
import { miObjet_ui } from './objects/mi-objet.ui.js';
import { milk_ui } from './objects/milk.ui.js';
import { miPlate_ui } from './objects/miPlate.ui.js';
import { miPlateDisplayed_ui } from './objects/miPlateDisplayed.ui.js';
import { mixer_ui } from './objects/mixer.ui.js';
import { monitor_ui } from './objects/monitor.ui.js';
import { monitorSpeaker_ui } from './objects/monitorSpeaker.ui.js';
import { monstera_ui } from './objects/monstera.ui.js';
import { mug_ui } from './objects/mug.ui.js';
import { newtonsCradle_ui } from './objects/newtonsCradle.ui.js';
import { openedCardboardBox_ui } from './objects/openedCardboardBox.ui.js';
import { pachira_ui } from './objects/pachira.ui.js';
import { petBottle_ui } from './objects/petBottle.ui.js';
import { piano_ui } from './objects/piano.ui.js';
import { pictureFrame_ui } from './objects/pictureFrame.ui.js';
import { pizza_ui } from './objects/pizza.ui.js';
import { plant_ui } from './objects/plant.ui.js';
import { plant2_ui } from './objects/plant2.ui.js';
import { poster_ui } from './objects/poster.ui.js';
import { powerStrip_ui } from './objects/powerStrip.ui.js';
import { radiometer_ui } from './objects/radiometer.ui.js';
import { randomBooks_ui } from './objects/randomBooks.ui.js';
import { recordPlayer_ui } from './objects/recordPlayer.ui.js';
import { rolledUpPoster_ui } from './objects/rolledUpPoster.ui.js';
import { roundRug_ui } from './objects/roundRug.ui.js';
import { router_ui } from './objects/router.ui.js';
import { siphon_ui } from './objects/siphon.ui.js';
import { snakeplant_ui } from './objects/snakeplant.ui.js';
import { sofa_ui } from './objects/sofa.ui.js';
import { speaker_ui } from './objects/speaker.ui.js';
import { speakerStand_ui } from './objects/speakerStand.ui.js';
import { spotLight_ui } from './objects/spotLight.ui.js';
import { sprayer_ui } from './objects/sprayer.ui.js';
import { stanchionPole_ui } from './objects/stanchionPole.ui.js';
import { steelRack_ui } from './objects/steelRack.ui.js';
import { stormGlass_ui } from './objects/stormGlass.ui.js';
import { tableSalt_ui } from './objects/tableSalt.ui.js';
import { tabletopCalendar_ui } from './objects/tabletopCalendar.ui.js';
import { tabletopDigitalClock_ui } from './objects/tabletopDigitalClock.ui.js';
import { tabletopFlag_ui } from './objects/tabletopFlag.ui.js';
import { tabletopGlassPictureFrame_ui } from './objects/tabletopGlassPictureFrame.ui.js';
import { tabletopIronFrameStand_ui } from './objects/tabletopIronFrameStand.ui.js';
import { tabletopLcdButtonsController_ui } from './objects/tabletopLcdButtonsController.ui.js';
import { tabletopPictureFrame_ui } from './objects/tabletopPictureFrame.ui.js';
import { tapestry_ui } from './objects/tapestry.ui.js';
import { tetrapod_ui } from './objects/tetrapod.ui.js';
import { tv_ui } from './objects/tv.ui.js';
import { twistedCubeObjet_ui } from './objects/twistedCubeObjet.ui.js';
import { usedTissue_ui } from './objects/usedTissue.ui.js';
import { wallCanvas_ui } from './objects/wallCanvas.ui.js';
import { wallClock_ui } from './objects/wallClock.ui.js';
import { wallGlassPictureFrame_ui } from './objects/wallGlassPictureFrame.ui.js';
import { wallMirror_ui } from './objects/wallMirror.ui.js';
import { wallMountSpotLight_ui } from './objects/wallMountSpotLight.ui.js';
import { wallShelf_ui } from './objects/wallShelf.ui.js';
import { wireBasket_ui } from './objects/wireBasket.ui.js';
import { wireNet_ui } from './objects/wireNet.ui.js';
import { woodRingFloorLamp_ui } from './objects/woodRingFloorLamp.ui.js';
import { woodRingsPendantLight_ui } from './objects/woodRingsPendantLight.ui.js';
import { woodSoundAbsorbingPanel_ui } from './objects/woodSoundAbsorbingPanel.ui.js';
import type { ObjectUiDef } from './defineObjectUi.js';
export const OBJECT_UI_DEFS = {
a4Case: a4Case_ui,
aircon: aircon_ui,
allInOnePc: allInOnePc_ui,
aquarium: aquarium_ui,
aromaReedDiffuser: aromaReedDiffuser_ui,
banknote: banknote_ui,
beamLamp: beamLamp_ui,
bed: bed_ui,
blind: blind_ui,
books: books_ui,
boxWallShelf: boxWallShelf_ui,
cactusS: cactusS_ui,
cardboardBox: cardboardBox_ui,
ceilingFanLight: ceilingFanLight_ui,
chair: chair_ui,
coffeeCup: coffeeCup_ui,
colorBox: colorBox_ui,
cuboid: cuboid_ui,
cupNoodle: cupNoodle_ui,
custardPudding: custardPudding_ui,
desk: desk_ui,
desktopPc: desktopPc_ui,
djMixer: djMixer_ui,
djPlayer: djPlayer_ui,
ductRailSpotLights: ductRailSpotLights_ui,
ductTape: ductTape_ui,
electronicDisplayBoard: electronicDisplayBoard_ui,
emptyBento: emptyBento_ui,
energyDrink: energyDrink_ui,
envelope: envelope_ui,
facialTissue: facialTissue_ui,
glassCylinderPotPlant: glassCylinderPotPlant_ui,
hangingTShirt: hangingTShirt_ui,
icosahedron: icosahedron_ui,
ironFrameShelf5: ironFrameShelf5_ui,
ironFrameShelf4: ironFrameShelf4_ui,
ironFrameShelf3: ironFrameShelf3_ui,
ironFrameTable: ironFrameTable_ui,
issyoubin: issyoubin_ui,
keyboard: keyboard_ui,
laptopPc: laptopPc_ui,
largeMousepad: largeMousepad_ui,
lavaLamp: lavaLamp_ui,
letterCase: letterCase_ui,
miObjet: miObjet_ui,
milk: milk_ui,
miPlate: miPlate_ui,
miPlateDisplayed: miPlateDisplayed_ui,
mixer: mixer_ui,
monitor: monitor_ui,
monitorSpeaker: monitorSpeaker_ui,
monstera: monstera_ui,
mug: mug_ui,
newtonsCradle: newtonsCradle_ui,
openedCardboardBox: openedCardboardBox_ui,
pachira: pachira_ui,
petBottle: petBottle_ui,
piano: piano_ui,
pictureFrame: pictureFrame_ui,
pizza: pizza_ui,
plant: plant_ui,
plant2: plant2_ui,
poster: poster_ui,
powerStrip: powerStrip_ui,
radiometer: radiometer_ui,
randomBooks: randomBooks_ui,
recordPlayer: recordPlayer_ui,
rolledUpPoster: rolledUpPoster_ui,
roundRug: roundRug_ui,
router: router_ui,
siphon: siphon_ui,
snakeplant: snakeplant_ui,
sofa: sofa_ui,
speaker: speaker_ui,
speakerStand: speakerStand_ui,
sprayer: sprayer_ui,
steelRack: steelRack_ui,
stormGlass: stormGlass_ui,
tableSalt: tableSalt_ui,
tabletopCalendar: tabletopCalendar_ui,
tabletopDigitalClock: tabletopDigitalClock_ui,
tabletopFlag: tabletopFlag_ui,
tabletopGlassPictureFrame: tabletopGlassPictureFrame_ui,
tabletopIronFrameStand: tabletopIronFrameStand_ui,
tabletopPictureFrame: tabletopPictureFrame_ui,
tabletopLcdButtonsController: tabletopLcdButtonsController_ui,
tapestry: tapestry_ui,
tetrapod: tetrapod_ui,
tv: tv_ui,
twistedCubeObjet: twistedCubeObjet_ui,
usedTissue: usedTissue_ui,
wallCanvas: wallCanvas_ui,
wallClock: wallClock_ui,
wallGlassPictureFrame: wallGlassPictureFrame_ui,
wallMirror: wallMirror_ui,
wallMountSpotLight: wallMountSpotLight_ui,
wallShelf: wallShelf_ui,
woodRingFloorLamp: woodRingFloorLamp_ui,
woodRingsPendantLight: woodRingsPendantLight_ui,
woodSoundAbsorbingPanel: woodSoundAbsorbingPanel_ui,
hangingDuctRail: hangingDuctRail_ui,
spotLight: spotLight_ui,
lowPartitionBar: lowPartitionBar_ui,
descriptionPlate: descriptionPlate_ui,
stanchionPole: stanchionPole_ui,
handheldGameConsole: handheldGameConsole_ui,
curtain: curtain_ui,
wireNet: wireNet_ui,
clippedPicture: clippedPicture_ui,
wireBasket: wireBasket_ui,
};
export function getObjectUiDef(type: string): ObjectUiDef {
const def = OBJECT_UI_DEFS[type as keyof typeof OBJECT_UI_DEFS];
if (def == null) {
throw new Error(`Unrecognized object type: ${type}`);
}
return def;
}