001/*
002 *  Licensed to the Apache Software Foundation (ASF) under one
003 *  or more contributor license agreements.  See the NOTICE file
004 *  distributed with this work for additional information
005 *  regarding copyright ownership.  The ASF licenses this file
006 *  to you under the Apache License, Version 2.0 (the
007 *  "License"); you may not use this file except in compliance
008 *  with the License.  You may obtain a copy of the License at
009 *
010 *        http://www.apache.org/licenses/LICENSE-2.0
011 *
012 *  Unless required by applicable law or agreed to in writing,
013 *  software distributed under the License is distributed on an
014 *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015 *  KIND, either express or implied.  See the License for the
016 *  specific language governing permissions and limitations
017 *  under the License.
018 */
019package org.apache.causeway.viewer.commons.prism;
020
021import java.util.List;
022import java.util.Optional;
023
024import lombok.RequiredArgsConstructor;
025
026@RequiredArgsConstructor
027public enum Prism {
028    DEFAULT("", false),
029    COY("-coy", true),
030    DARK("-dark", false),
031    FUNKY("-funky", false),
032    OKAIDIA("-okaidia", false),
033    SOLARIZEDLIGHT("-solarizedlight", false),
034    TOMORROW("-tomorrow", false),
035    TWILIGHT("-twilight", false),
036    ;
037    final String themeSuffix;
038    final boolean override;
039
040    public String cssPrimaryFile() {
041        return "prism/themes/prism" + themeSuffix + ".min.css";
042    }
043
044    public Optional<String> cssOverrideFile() {
045        return override
046                ? Optional.of("prismoverride/prism" + themeSuffix + ".css")
047                : Optional.empty();
048    }
049
050    public List<String> cssFiles() {
051        return cssOverrideFile()
052                .map(cssOverride->List.of(cssPrimaryFile(), cssOverride))
053                .orElse(List.of(cssPrimaryFile()));
054    }
055
056    public String jsFile() {
057        return "prism/prism" + ".js";
058    }
059}