diff --git a/package.json b/package.json index 8040cd61..90053b46 100644 --- a/package.json +++ b/package.json @@ -12,11 +12,12 @@ "author": "Misode", "license": "MIT", "dependencies": { + "@mcschema/core": "^0.2.6", + "@mcschema/java-1.16": "^0.1.0", "@types/split.js": "^1.4.0", "copy-webpack-plugin": "^6.0.1", "html-webpack-plugin": "^4.3.0", "merge-jsons-webpack-plugin": "^1.0.21", - "minecraft-schemas": "^0.2.4", "split.js": "^1.5.11", "ts-loader": "^7.0.4", "typescript": "^3.9.3", diff --git a/src/app/ErrorsView.ts b/src/app/ErrorsView.ts index 5297dc38..8b124b4c 100644 --- a/src/app/ErrorsView.ts +++ b/src/app/ErrorsView.ts @@ -1,14 +1,16 @@ -import { locale, DataModel, ModelListener } from "minecraft-schemas"; -import { Errors } from "minecraft-schemas/lib/model/Errors"; +import { + AbstractView, + DataModel, + Errors, + locale, +} from '@mcschema/core' -export class ErrorsView implements ModelListener { - model: DataModel +export class ErrorsView extends AbstractView { target: HTMLElement constructor(model: DataModel, target: HTMLElement) { - this.model = model + super(model) this.target = target - model.addListener(this) } errors(errors: Errors): void { diff --git a/src/app/RegistryFetcher.ts b/src/app/RegistryFetcher.ts index 8357fc20..3aad47a5 100644 --- a/src/app/RegistryFetcher.ts +++ b/src/app/RegistryFetcher.ts @@ -1,4 +1,4 @@ -import { CollectionRegistry } from "minecraft-schemas"; +import { CollectionRegistry } from '@mcschema/core' export const mcdata = (version: string, registry: string) => `https://raw.githubusercontent.com/Arcensoth/mcdata/${version}/processed/reports/registries/${registry}/${registry}.min.json` diff --git a/src/app/Sandbox.ts b/src/app/Sandbox.ts index 2b95cccb..c92a1834 100644 --- a/src/app/Sandbox.ts +++ b/src/app/Sandbox.ts @@ -13,7 +13,7 @@ import { RangeNode, Resource, SCHEMAS -} from 'minecraft-schemas' +} from '@mcschema/core' SCHEMAS.register('foo', ObjectNode({ foo: StringNode(), diff --git a/src/app/app.ts b/src/app/app.ts index 6acae148..2e7081b1 100644 --- a/src/app/app.ts +++ b/src/app/app.ts @@ -1,17 +1,15 @@ import Split from 'split.js' import { + AbstractView, + Base, + COLLECTIONS, DataModel, - TreeView, - SourceView, - ConditionSchema, - LootTableSchema, - AdvancementSchema, - DimensionSchema, - DimensionTypeSchema, - LOCALES, locale, - COLLECTIONS -} from 'minecraft-schemas' + LOCALES, + SourceView, + TreeView, +} from '@mcschema/core' +import { schemas } from '@mcschema/java-1.16' import { RegistryFetcher } from './RegistryFetcher' import { SandboxSchema } from './Sandbox' import { ErrorsView } from './ErrorsView' @@ -38,11 +36,11 @@ const languages: { [key: string]: string } = { } const models: { [key: string]: DataModel } = { - 'loot-table': new DataModel(LootTableSchema), - 'predicate': new DataModel(ConditionSchema), - 'advancement': new DataModel(AdvancementSchema), - 'dimension': new DataModel(DimensionSchema), - 'dimension-type': new DataModel(DimensionTypeSchema), + 'loot-table': new DataModel(schemas['loot-table']), + 'predicate': new DataModel(schemas['predicate']), + 'advancement': new DataModel(schemas['advancement']), + 'dimension': new DataModel(schemas['dimension']), + 'dimension-type': new DataModel(schemas['dimension-type']), 'sandbox': new DataModel(SandboxSchema) } @@ -81,40 +79,53 @@ const fetchLocale = async (id: string) => { } LOCALES.language = localStorage.getItem(LOCAL_STORAGE_LANGUAGE)?.toLowerCase() ?? 'en' +const homeLink = document.getElementById('home-link')! +const homeGenerators = document.getElementById('home-generators')! +const selectedModel = document.getElementById('selected-model')! +const modelSelector = document.getElementById('model-selector')! +const modelSelectorMenu = document.getElementById('model-selector-menu')! +const languageSelector = document.getElementById('language-selector')! +const languageSelectorMenu = document.getElementById('language-selector-menu')! +const themeSelector = document.getElementById('theme-selector')! +const treeViewEl = document.getElementById('tree-view')! +const sourceViewEl = document.getElementById('source-view')! +const errorsViewEl = document.getElementById('errors-view')! +const homeViewEl = document.getElementById('home-view')! +const errorsToggle = document.getElementById('errors-toggle')! +const sourceViewOutput = (document.getElementById('source-view-output') as HTMLTextAreaElement) +const treeViewOutput = document.getElementById('tree-view-output')! +const sourceControlsToggle = document.getElementById('source-controls-toggle')! +const sourceControlsMenu = document.getElementById('source-controls-menu')! +const sourceControlsCopy = document.getElementById('source-controls-copy')! +const sourceControlsDownload = document.getElementById('source-controls-download')! +const sourceToggle = document.getElementById('source-toggle')! +const treeControlsToggle = document.getElementById('tree-controls-toggle')! +const treeControlsMenu = document.getElementById('tree-controls-menu')! +const treeControlsVersionToggle = document.getElementById('tree-controls-version-toggle')! +const treeControlsVersionMenu = document.getElementById('tree-controls-version-menu')! +const treeControlsReset = document.getElementById('tree-controls-reset')! +const treeControlsUndo = document.getElementById('tree-controls-undo')! +const treeControlsRedo = document.getElementById('tree-controls-redo')! + +const dummyModel = new DataModel(Base) + +const views: {[key: string]: AbstractView} = { + 'tree': new TreeView(dummyModel, treeViewOutput, { + showErrors: true, + observer: treeViewObserver + }), + 'source': new SourceView(dummyModel, sourceViewOutput, { + indentation: 2 + }), + 'errors': new ErrorsView(dummyModel, errorsViewEl) +} + Promise.all([ fetchLocale(LOCALES.language), ...(LOCALES.language === 'en' ? [] : [fetchLocale('en')]), RegistryFetcher(COLLECTIONS, registries) ]).then(responses => { - const homeLink = document.getElementById('home-link')! - const homeGenerators = document.getElementById('home-generators')! - const selectedModel = document.getElementById('selected-model')! - const modelSelector = document.getElementById('model-selector')! - const modelSelectorMenu = document.getElementById('model-selector-menu')! - const languageSelector = document.getElementById('language-selector')! - const languageSelectorMenu = document.getElementById('language-selector-menu')! - const themeSelector = document.getElementById('theme-selector')! - const treeViewEl = document.getElementById('tree-view')! - const sourceViewEl = document.getElementById('source-view')! - const errorsViewEl = document.getElementById('errors-view')! - const homeViewEl = document.getElementById('home-view')! - const errorsToggle = document.getElementById('errors-toggle')! - const sourceViewOutput = (document.getElementById('source-view-output') as HTMLTextAreaElement) - const treeViewOutput = document.getElementById('tree-view-output')! - const sourceControlsToggle = document.getElementById('source-controls-toggle')! - const sourceControlsMenu = document.getElementById('source-controls-menu')! - const sourceControlsCopy = document.getElementById('source-controls-copy')! - const sourceControlsDownload = document.getElementById('source-controls-download')! - const sourceToggle = document.getElementById('source-toggle')! - const treeControlsToggle = document.getElementById('tree-controls-toggle')! - const treeControlsMenu = document.getElementById('tree-controls-menu')! - const treeControlsVersionToggle = document.getElementById('tree-controls-version-toggle')! - const treeControlsVersionMenu = document.getElementById('tree-controls-version-menu')! - const treeControlsReset = document.getElementById('tree-controls-reset')! - const treeControlsUndo = document.getElementById('tree-controls-undo')! - const treeControlsRedo = document.getElementById('tree-controls-redo')! - let selected = '' const updateModel = () => { @@ -122,15 +133,7 @@ Promise.all([ selectedModel.textContent = locale(`title.home`) } else { selectedModel.textContent = locale(`title.${selected}`) - new TreeView(models[selected], treeViewOutput, { - showErrors: true, - observer: treeViewObserver - }), - new SourceView(models[selected], sourceViewOutput, { - indentation: 2 - }), - new ErrorsView(models[selected], errorsViewEl) - + Object.values(views).forEach(v => v.setModel(models[selected])) models[selected].invalidate() }