"use strict"; import {Utils} from "../Utils/Utils.ecma.js"; import {Check} from "../Utils/Check.ecma.js"; /** * @typedef {import("../Application/AnP.ecma.js").AnP} AnP */ /** * @class * @constructor * @param {!AnP} anp * @returns {void} * @access private */ export const LicensesComponent = (function(){ /** * @constructs LicensesComponent * @param {!AnP} anp * @returns {void} * @access private */ const LicensesComponent = function(anp){ /** @type {LicensesComponent} */ const self = this; /** @type {boolean} */ let started = false; /** * @returns {void} * @access private */ const constructor = () => {}; /** * @param {?anp_start_callback} callback * @returns {boolean} * @access public */ this.start = (callback = null) => { /** @type {!anp_start_callback} */ const end = ok => { Utils.execute(callback, ok); return ok; }; return end(started ? false : started = true); }; /** * @param {!...Array.} [licenses] * @returns {Array.} * @access public */ this.build = (...licenses) => ["span", { class : "licenses" }, licenses.map(([name, ...inputs]) => ( Check.is_function(self[name]) ? self[name](...inputs) : []))]; /** * @returns {Array.} * @access public */ this.gplv3 = () => ["a", { class : "license gpl-v3", href : "https://www.gnu.org/licenses/gpl-3.0.txt", target : "_blank", title : "GPLv3" }, [ ["span", {class : "text"}, "GPLv3"], ["image", { sources : "https://www.gnu.org/graphics/gplv3-88x31.png", alt : "GPLv3" }] ]]; /** * @returns {Array.} * @access public */ this.cc_by_nc_sa_4 = () => { /** @type {string} */ const text = anp.i18n.get([ "Creative Commons Attribution-NonCommertial-ShareAlike 4.0 International (CC-SA-NC-BY 4.0)", "cc_by_nc_sa_4" ]); return ["a", { class : "license cc-by-nc-sa-4", href : "https://creativecommons.org/licenses/by-nc-sa/4.0/", target : "_blank", data_i18n : "cc_by_nc_sa_4", data_i18n_without : true, title : text }, [ ["span", {class : "text"}, text], ["image", { sources : "https://licensebuttons.net/l/by-nc-sa/4.0/88x31.png", data_i18n : "cc_by_nc_sa_4", data_i18n_without : true, alt : text }] ]]; }; /** * @param {?(number|string|Array.)} [year = null] * @param {?(string|Array.)} [authors = null] * @param {!boolean} [all_rights_reserved = false] * @returns {Array.} * @access public */ this.copyright = (year = null, authors = null, all_rights_reserved = false) => { /** @type {Object.} */ const variables = { year : Check.is_array(year) ? ( year.length == 1 ? year[0] : year.length == 2 ? year.join("-") : year.length ? year.slice(0, year.length - 1).join(", ") + " & " + year.slice(-1)[0] : "") : year || "", authors : Check.is_array(authors) ? ( authors.length == 1 ? authors[0] : authors.length == 2 ? authors.join(" & ") : authors.length ? authors.slice(0, authors.length - 1).join(", ") + " & " + authors.slice(-1)[0] : "") : authors || "", all_rights_reserved : all_rights_reserved ? anp.i18n.get([ "All rights reserved.", "all_rights_reserved" ]) : "" }, /** @type {string} */ text = anp.i18n.get([ "© Copyright{year}{authors}{all_rights_reserved}", "copyright" ], { year : variables.year = variables.year ? " " + variables.year + "." : "", authors : variables.authors = variables.authors ? " " + variables.authors + "." : "", all_rights_reserved : variables.all_rights_reserved = variables.all_rights_reserved ? (variables.year || variables.authors ? "" : ". ") + variables.all_rights_reserved : "" }); return ["span", { class : "license copyright", data_i18n : "copyriht", data_i18n_variables : variables, title : text }, text]; }; constructor(); }; return LicensesComponent; })();