2025-01-07 14:04:00 +01:00

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 {
}