import { Inject } from "@web-atoms/core/dist/di/Inject"; import { AtomWindowViewModel } from "@web-atoms/core/dist/view-model/AtomWindowViewModel"; import Load from "@web-atoms/core/dist/view-model/Load"; import FileModel from "../../model/FileModel"; import IContentModel from "../../model/IContentModel"; import SourceService from "../../services/SourceService"; import ajaxService from "./templates/ajaxService"; import ajaxServiceWithMock from "./templates/ajaxServiceWithMock"; import contentPage from "./templates/contentPage"; import json from "./templates/json"; import markdown from "./templates/markdown"; import popupPage from "./templates/popupPage"; import tsClass from "./templates/tsClass"; export default class NewItemViewModel extends AtomWindowViewModel { public file: FileModel; public folder: string; public name: string; public templates: IContentModel[] = [ tsClass, ajaxService, ajaxServiceWithMock, contentPage, popupPage, markdown, json ]; public selected = this.templates[0]; @Inject private sourceService: SourceService; @Load({ init: true }) public async loadFolder() { this.folder = this.file.url; } public async create() { try { await this.sourceService.expandTemplate( this.selected, "commands/new-item/templates", this.folder, this.name || this.selected.name); } finally { this.close(); } } }