83 lines
2.3 KiB
Swift
83 lines
2.3 KiB
Swift
import Foundation
|
|
|
|
final class PageSettings: ObservableObject {
|
|
|
|
@Published
|
|
var contentWidth: Int
|
|
|
|
@Published
|
|
var largeImageWidth: Int
|
|
|
|
@Published
|
|
var pageLinkImageSize: Int
|
|
|
|
@Published
|
|
var defaultCssFile: FileResource?
|
|
|
|
@Published
|
|
var codeHighlightingJsFile: FileResource?
|
|
|
|
@Published
|
|
var modelViewerJsFile: FileResource?
|
|
|
|
@Published
|
|
var imageCompareJsFile: FileResource?
|
|
|
|
@Published
|
|
var imageCompareCssFile: FileResource?
|
|
|
|
@Published
|
|
var german: LocalizedPageSettings
|
|
|
|
@Published
|
|
var english: LocalizedPageSettings
|
|
|
|
init(file: PageSettingsFile, files: [String : FileResource]) {
|
|
self.contentWidth = file.contentWidth
|
|
self.largeImageWidth = file.largeImageWidth
|
|
self.pageLinkImageSize = file.pageLinkImageSize
|
|
self.defaultCssFile = file.defaultCssFile.map { files[$0] }
|
|
self.codeHighlightingJsFile = file.codeHighlightingJsFile.map { files[$0] }
|
|
self.modelViewerJsFile = file.modelViewerJsFile.map { files[$0] }
|
|
self.imageCompareCssFile = file.imageCompareCssFile.map { files[$0] }
|
|
self.imageCompareJsFile = file.imageCompareJsFile.map { files[$0] }
|
|
self.german = .init(file: file.german)
|
|
self.english = .init(file: file.english)
|
|
}
|
|
|
|
var file: PageSettingsFile {
|
|
.init(contentWidth: contentWidth,
|
|
largeImageWidth: largeImageWidth,
|
|
pageLinkImageSize: pageLinkImageSize,
|
|
defaultCssFile: defaultCssFile?.id,
|
|
codeHighlightingJsFile: codeHighlightingJsFile?.id,
|
|
modelViewerJsFile: modelViewerJsFile?.id,
|
|
imageCompareJsFile: imageCompareJsFile?.id,
|
|
imageCompareCssFile: imageCompareCssFile?.id,
|
|
german: german.file,
|
|
english: english.file)
|
|
}
|
|
|
|
func remove(_ file: FileResource) {
|
|
if codeHighlightingJsFile == file {
|
|
codeHighlightingJsFile = nil
|
|
}
|
|
if modelViewerJsFile == file {
|
|
modelViewerJsFile = nil
|
|
}
|
|
if defaultCssFile == file {
|
|
defaultCssFile = nil
|
|
}
|
|
if imageCompareJsFile == file {
|
|
imageCompareJsFile = nil
|
|
}
|
|
if imageCompareCssFile == file {
|
|
imageCompareCssFile = nil
|
|
}
|
|
}
|
|
}
|
|
|
|
extension PageSettings: LocalizedItem {
|
|
|
|
}
|