UNPKG

@dbp-topics/signature

Version:

[GitLab Repository](https://gitlab.tugraz.at/dbp/esign/signature) | [npmjs package](https://www.npmjs.com/package/@dbp-topics/signature) | [Unpkg CDN](https://unpkg.com/browse/@dbp-topics/signature/) | [Esign Bundle](https://gitlab.tugraz.at/dbp/esign/dbp

1 lines 31 kB
{"version":3,"file":"jsonld.78121145.es.js","sources":["../../vendor/toolkit/packages/common/src/mini-spinner.js","../../vendor/toolkit/packages/common/src/button.js","../../node_modules/lit-html/directive.js","../../node_modules/lit-html/directives/class-map.js","../../node_modules/lit-html/directives/unsafe-html.js","../../vendor/toolkit/packages/common/notification.js","../../vendor/toolkit/packages/common/jsonld.js","../../vendor/toolkit/packages/common/src/i18n.js"],"sourcesContent":["import {html, LitElement, css} from 'lit';\n\nexport class MiniSpinner extends LitElement {\n constructor() {\n super();\n this.text = '';\n }\n\n static get properties() {\n return {\n text: {type: String},\n };\n }\n\n static get styles() {\n // language=css\n return css`\n .outer {\n display: inline-block;\n vertical-align: sub;\n }\n .inner {\n display: flex;\n }\n .ring {\n display: inline-block;\n position: relative;\n width: 1em;\n height: 1em;\n }\n .ring div {\n box-sizing: border-box;\n display: block;\n position: absolute;\n width: 100%;\n height: 100%;\n border: 0.2em solid currentColor;\n border-radius: 50%;\n animation: ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n border-color: currentColor transparent transparent transparent;\n }\n .ring div:nth-child(1) {\n animation-delay: -0.45s;\n }\n .ring div:nth-child(2) {\n animation-delay: -0.3s;\n }\n .ring div:nth-child(3) {\n animation-delay: -0.15s;\n }\n @keyframes ring {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n .text {\n display: inline-block;\n margin-left: 0.5em;\n font-size: 0.7em;\n }\n `;\n }\n\n render() {\n const textHtml =\n this.text !== ''\n ? html`\n <div class=\"text\">${this.text}</div>\n `\n : html``;\n\n return html`\n <div class=\"outer\">\n <div class=\"inner\">\n <div class=\"ring\">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n </div>\n ${textHtml}\n </div>\n </div>\n `;\n }\n}\n","import {html, LitElement, css} from 'lit';\nimport {ScopedElementsMixin} from '@open-wc/scoped-elements';\nimport {MiniSpinner} from './mini-spinner.js';\nimport * as commonStyles from '../styles.js';\n\n/**\n * dbp-button implements a button with Bulma styles and automatic spinner and\n * disabling if button is clicked\n *\n * Use the attribute \"no-spinner-on-click\" to disable the spinner, then you can\n * start it with start() and stop it with stop()\n *\n * Type can be is-primary/is-info/is-success/is-warning/is-danger\n */\nexport class Button extends ScopedElementsMixin(LitElement) {\n constructor() {\n super();\n this.value = '';\n this.type = '';\n this.spinner = false;\n this.noSpinnerOnClick = false;\n this.disabled = false;\n\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1061240#c12\n this.addEventListener('click', (e) => {\n if (this.disabled) {\n e.stopImmediatePropagation();\n }\n\n if (!this.noSpinnerOnClick) {\n this.start();\n }\n });\n }\n\n static get scopedElements() {\n return {\n 'dbp-mini-spinner': MiniSpinner,\n };\n }\n\n connectedCallback() {\n super.connectedCallback();\n }\n\n static get properties() {\n return {\n value: {type: String},\n type: {type: String},\n spinner: {type: Boolean},\n noSpinnerOnClick: {type: Boolean, attribute: 'no-spinner-on-click'},\n disabled: {type: Boolean, reflect: true},\n };\n }\n\n start() {\n this.spinner = true;\n this.disabled = true;\n }\n\n stop() {\n this.spinner = false;\n this.disabled = false;\n }\n\n isDisabled() {\n return this.disabled;\n }\n\n static get styles() {\n // language=css\n return css`\n ${commonStyles.getThemeCSS()}\n ${commonStyles.getButtonCSS()}\n\n .spinner {\n margin-left: 0.5em;\n }\n `;\n }\n\n render() {\n return html`\n <button\n class=\"button ${this.type}\"\n ?disabled=\"${this.disabled}\">\n ${this.value}\n <dbp-mini-spinner\n class=\"spinner\"\n style=\"display: ${this.spinner ? 'inline' : 'none'}\"></dbp-mini-spinner>\n </button>\n `;\n }\n}\n\nexport class LoadingButton extends ScopedElementsMixin(LitElement) {\n constructor() {\n super();\n this.value = '';\n this.type = '';\n this.loading = false;\n this.disabled = false;\n\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1061240#c12\n this.addEventListener('click', (e) => {\n if (this.disabled) {\n e.stopImmediatePropagation();\n }\n });\n }\n\n static get scopedElements() {\n return {\n 'dbp-mini-spinner': MiniSpinner,\n };\n }\n\n static get properties() {\n return {\n // value is deprecated, use the main slot instead\n value: {type: String},\n type: {type: String},\n loading: {type: Boolean},\n disabled: {type: Boolean, reflect: true},\n };\n }\n\n start() {\n this.loading = true;\n this.disabled = true;\n }\n\n stop() {\n this.loading = false;\n this.disabled = false;\n }\n\n static get styles() {\n // language=css\n return css`\n ${commonStyles.getThemeCSS()}\n ${commonStyles.getButtonCSS()}\n\n .spinner {\n padding-left: 0.5em;\n min-width: 16px;\n }\n\n .loading-container {\n display: flex;\n align-items: baseline;\n }\n\n .label {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n :host {\n display: inline-block;\n }\n\n .is-not-loading .label {\n padding-left: 12px;\n padding-right: 12px;\n }\n\n .button {\n width: 100%;\n }\n\n @media only screen and (orientation: portrait) and (max-width: 768px) {\n .button {\n min-height: 36px;\n }\n\n .label {\n margin: auto;\n }\n }\n `;\n }\n\n render() {\n return html`\n <button\n class=\"button ${this.type} loading-container ${!this.loading\n ? 'is-not-loading'\n : ''}\"\n ?disabled=\"${this.disabled}\">\n <div class=\"label\"><slot>${this.value}</slot></div>\n <dbp-mini-spinner\n class=\"spinner\"\n style=\"display: ${this.loading ? 'inline' : 'none'}\"></dbp-mini-spinner>\n </button>\n `;\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{noChange as t}from\"../lit-html.js\";import{directive as i,Directive as s,PartType as r}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o=i(class extends s{constructor(t){var i;if(super(t),t.type!==r.ATTRIBUTE||\"class\"!==t.name||(null===(i=t.strings)||void 0===i?void 0:i.length)>2)throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\")}render(t){return\" \"+Object.keys(t).filter((i=>t[i])).join(\" \")+\" \"}update(i,[s]){var r,o;if(void 0===this.nt){this.nt=new Set,void 0!==i.strings&&(this.st=new Set(i.strings.join(\" \").split(/\\s/).filter((t=>\"\"!==t))));for(const t in s)s[t]&&!(null===(r=this.st)||void 0===r?void 0:r.has(t))&&this.nt.add(t);return this.render(s)}const e=i.element.classList;this.nt.forEach((t=>{t in s||(e.remove(t),this.nt.delete(t))}));for(const t in s){const i=!!s[t];i===this.nt.has(t)||(null===(o=this.st)||void 0===o?void 0:o.has(t))||(i?(e.add(t),this.nt.add(t)):(e.remove(t),this.nt.delete(t)))}return t}});export{o as classMap};\n//# sourceMappingURL=class-map.js.map\n","import{nothing as t,noChange as i}from\"../lit-html.js\";import{Directive as r,PartType as s,directive as n}from\"../directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends r{constructor(i){if(super(i),this.it=t,i.type!==s.CHILD)throw Error(this.constructor.directiveName+\"() can only be used in child bindings\")}render(r){if(r===t||null==r)return this._t=void 0,this.it=r;if(r===i)return r;if(\"string\"!=typeof r)throw Error(this.constructor.directiveName+\"() called with a non-string value\");if(r===this.it)return this._t;this.it=r;const s=[r];return s.raw=s,this._t={_$litType$:this.constructor.resultType,strings:s,values:[]}}}e.directiveName=\"unsafeHTML\",e.resultType=1;const o=n(e);export{e as UnsafeHTMLDirective,o as unsafeHTML};\n//# sourceMappingURL=unsafe-html.js.map\n","/**\n * Sends a notification via the event\n *\n * Type can be info/success/warning/danger\n *\n * example options:\n *\n * {\n * \"summary\": \"Item deleted\",\n * \"body\": \"Item foo was deleted!\",\n * \"type\": \"info\",\n * \"timeout\": 5,\n * }\n *\n * @param options\n */\nfunction send(options) {\n const event = new CustomEvent('dbp-notification-send', {\n bubbles: true,\n cancelable: true,\n detail: options,\n });\n\n const result = window.dispatchEvent(event);\n\n // true means the event was not handled\n if (result) {\n alert(\n (options.summary !== undefined && options.summary !== ''\n ? options.summary + ': '\n : '') + options.body\n );\n console.log('Use the web component dbp-notification to show fancy notifications.');\n }\n}\n\nexport {send};\n","import {send as notify} from './notification';\nimport * as utils from './utils';\nimport {createInstance} from './src/i18n';\n\nexport default class JSONLD {\n constructor(baseApiUrl, entities) {\n this.entities = entities;\n this.baseApiUrl = baseApiUrl;\n\n let idToEntityNameMatchList = {};\n for (const entityName in entities) {\n const id = entities[entityName]['@id'];\n idToEntityNameMatchList[id] = entityName;\n }\n\n this.idToEntityNameMatchList = idToEntityNameMatchList;\n }\n\n static async getInstance(apiUrl, lang = 'de') {\n let promise = JSONLD.promises[apiUrl];\n if (promise === undefined) {\n promise = new Promise((resolve, reject) => {\n JSONLD._initialize(\n apiUrl,\n (instance) => resolve(instance),\n (error) => reject(error),\n lang\n );\n });\n JSONLD.promises[apiUrl] = promise;\n }\n return promise;\n }\n\n static initialize(apiUrl, successFnc, failureFnc, lang = 'de') {\n console.warn('DEPRECATED: JSONLD.initialize(), use JSONLD.getInstance() instead');\n JSONLD._initialize(apiUrl, successFnc, failureFnc, lang);\n }\n\n static doInitializationOnce(apiUrl) {\n // No longer needed, remove any calls\n console.warn('DEPRECATED: JSONLD.doInitializationOnce() calls can be removed');\n }\n\n static _initialize(apiUrl, successFnc, failureFnc, lang = 'de') {\n JSONLD._i18n.changeLanguage(lang);\n\n // if init api call was already successfully finished execute the success function\n if (JSONLD.instances[apiUrl] !== undefined) {\n if (typeof successFnc == 'function') successFnc(JSONLD.instances[apiUrl]);\n\n return;\n }\n\n // init the arrays\n if (JSONLD.successFunctions[apiUrl] === undefined) JSONLD.successFunctions[apiUrl] = [];\n if (JSONLD.failureFunctions[apiUrl] === undefined) JSONLD.failureFunctions[apiUrl] = [];\n\n // add success and failure functions\n if (typeof successFnc == 'function') JSONLD.successFunctions[apiUrl].push(successFnc);\n if (typeof failureFnc == 'function') JSONLD.failureFunctions[apiUrl].push(failureFnc);\n\n if (!apiUrl || JSONLD.initStarted[apiUrl] !== undefined) {\n return;\n }\n\n JSONLD.initStarted[apiUrl] = true;\n JSONLD._doInitialization(apiUrl);\n }\n\n static _doInitialization(apiUrl) {\n const xhr = new XMLHttpRequest();\n const i18n = JSONLD._i18n;\n xhr.open('GET', apiUrl, true);\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (xhr.status === 200) {\n const json = JSON.parse(xhr.responseText);\n\n let entryPoints = {};\n for (let property in json) {\n // for some reason the properties start with a lower case character\n if (!property.startsWith('@'))\n entryPoints[property.toLowerCase()] = json[property];\n }\n\n // read the link header of the api response\n // const utils = require(\"./utils\");\n const links = utils.parseLinkHeader(this.getResponseHeader('link'));\n\n // get the hydra apiDocumentation url\n const apiDocUrl = links['http://www.w3.org/ns/hydra/core#apiDocumentation'];\n\n if (apiDocUrl !== undefined) {\n // load the hydra apiDocumentation\n const docXhr = new XMLHttpRequest();\n docXhr.open('GET', apiDocUrl, true);\n docXhr.setRequestHeader('Content-Type', 'application/json');\n docXhr.onreadystatechange = function () {\n if (docXhr.readyState !== 4) {\n return;\n }\n\n if (docXhr.status === 200) {\n JSONLD._gatherEntities(docXhr, apiUrl, entryPoints);\n } else {\n JSONLD._executeFailureFunctions(\n apiUrl,\n i18n.t('jsonld.api-documentation-server', {apiUrl: apiDocUrl})\n );\n }\n };\n\n docXhr.send();\n } else {\n JSONLD._executeFailureFunctions(\n apiUrl,\n i18n.t('jsonld.error-hydra-documentation-url-not-set', {apiUrl: apiUrl})\n );\n }\n } else {\n JSONLD._executeFailureFunctions(\n apiUrl,\n i18n.t('jsonld.error-api-server', {apiUrl: apiUrl})\n );\n }\n };\n\n xhr.send();\n }\n\n /**\n * Gather the entities\n *\n * @param docXhr\n * @param apiUrl\n * @param entryPoints\n */\n static _gatherEntities(docXhr, apiUrl, entryPoints) {\n const json = JSON.parse(docXhr.responseText);\n const supportedClasses = json['hydra:supportedClass'];\n\n let entities = {};\n const baseUrl = utils.parseBaseUrl(apiUrl);\n\n // gather the entities\n supportedClasses.forEach(function (classData) {\n // add entry point url\n const entityName = classData['hydra:title'];\n let entryPoint = entryPoints[entityName.toLowerCase()];\n if (entryPoint !== undefined && !entryPoint.startsWith('http'))\n entryPoint = baseUrl + entryPoint;\n classData['@entryPoint'] = entryPoint;\n\n entities[entityName] = classData;\n });\n\n const instance = new JSONLD(baseUrl, entities);\n JSONLD.instances[apiUrl] = instance;\n\n // return the initialized JSONLD object\n if (JSONLD.successFunctions[apiUrl] !== undefined) {\n for (const fnc of JSONLD.successFunctions[apiUrl]) {\n if (typeof fnc == 'function') {\n fnc(instance);\n }\n }\n }\n JSONLD.successFunctions[apiUrl] = [];\n }\n\n /**\n * Execute failure functions and send general notification\n *\n * @param apiUrl\n * @param message\n */\n static _executeFailureFunctions(apiUrl, message = '') {\n const i18n = JSONLD._i18n;\n if (JSONLD.failureFunctions[apiUrl] !== undefined) {\n for (const fnc of JSONLD.failureFunctions[apiUrl]) {\n if (typeof fnc == 'function') {\n fnc(new Error(message));\n }\n }\n }\n JSONLD.failureFunctions[apiUrl] = [];\n\n if (message !== '') {\n notify({\n summary: i18n.t('error.summary'),\n body: message,\n type: 'danger',\n });\n }\n }\n\n getEntityForIdentifier(identifier) {\n let entityName = this.getEntityNameForIdentifier(identifier);\n return this.getEntityForEntityName(entityName);\n }\n\n getEntityForEntityName(entityName) {\n return this.entities[entityName];\n }\n\n getApiUrlForEntityName(entityName) {\n const entity = this.getEntityForEntityName(entityName);\n\n if (entity === undefined || entity['@entryPoint'] === undefined) {\n throw new Error(`Entity \"${entityName}\" not found!`);\n }\n\n return entity['@entryPoint'];\n }\n\n getEntityNameForIdentifier(identifier) {\n return this.idToEntityNameMatchList[identifier];\n }\n\n getApiIdentifierList() {\n let keys = [];\n for (const property in this.idToEntityNameMatchList) {\n keys.push(property);\n }\n\n return keys;\n }\n\n /**\n * Expands a member of a list to a object with schema.org properties\n *\n * @param member\n * @param [context]\n */\n expandMember(member, context) {\n if (context === undefined) {\n context = member['@context'];\n }\n\n let result = {'@id': member['@id']};\n for (const key of Object.keys(context)) {\n const value = context[key];\n if (member[key] !== undefined) result[value] = member[key];\n }\n\n return result;\n }\n\n /**\n * Compacts an expanded member of a list to a object with local properties\n *\n * @param member\n * @param localContext\n */\n compactMember(member, localContext) {\n let result = {};\n\n for (const property in localContext) {\n const value = member[localContext[property]];\n\n if (value !== undefined) {\n result[property] = value;\n }\n }\n\n return result;\n }\n\n /**\n * Transforms hydra members to a local context\n *\n * @param data\n * @param localContext\n * @returns {Array} An array of transformed objects\n */\n transformMembers(data, localContext) {\n const members = data['hydra:member'];\n\n if (members === undefined || members.length === 0) {\n return [];\n }\n\n const otherContext = data['@context'];\n let results = [];\n let that = this;\n\n members.forEach(function (member) {\n results.push(that.compactMember(that.expandMember(member, otherContext), localContext));\n });\n\n return results;\n }\n}\n\nJSONLD._i18n = createInstance();\nJSONLD.instances = {};\nJSONLD.successFunctions = {};\nJSONLD.failureFunctions = {};\nJSONLD.initStarted = {};\nJSONLD.promises = {};\n","import {createInstance as _createInstance, setOverridesByGlobalCache} from '../i18next.js';\n\nimport de from './i18n/de/translation.json';\nimport en from './i18n/en/translation.json';\n\nexport function createInstance() {\n return _createInstance({en: en, de: de}, 'de', 'en');\n}\n\nexport function createInstanceGivenResources(en, de) {\n return _createInstance({en: en, de: de}, 'de', 'en');\n}\n\nexport {setOverridesByGlobalCache};\n"],"names":["MiniSpinner","LitElement","constructor","super","this","text","properties","type","String","styles","css","_t","_","render","textHtml","html","_t2","_t3","_t4","Button","ScopedElementsMixin","value","spinner","noSpinnerOnClick","disabled","addEventListener","e","stopImmediatePropagation","start","scopedElements","connectedCallback","Boolean","attribute","reflect","stop","isDisabled","_t5","commonStyles.getThemeCSS","commonStyles.getButtonCSS","_t6","t","ATTRIBUTE","CHILD","PROPERTY","BOOLEAN_ATTRIBUTE","EVENT","ELEMENT","_$litDirective$","values","i","_$AU","_$AM","_$AT","_$Ct","_$Ci","_$AS","update","o","s","r","name","strings","length","Error","Object","keys","filter","join","nt","Set","st","split","has","add","element","classList","forEach","remove","delete","it","directiveName","raw","_$litType$","resultType","n","send","options","event","CustomEvent","bubbles","cancelable","detail","window","dispatchEvent","alert","undefined","summary","body","console","log","JSONLD","baseApiUrl","entities","idToEntityNameMatchList","entityName","static","apiUrl","lang","promise","promises","Promise","resolve","reject","_initialize","instance","error","successFnc","failureFnc","warn","_i18n","changeLanguage","instances","successFunctions","failureFunctions","push","initStarted","_doInitialization","xhr","XMLHttpRequest","i18n","open","onreadystatechange","readyState","status","json","JSON","parse","responseText","entryPoints","property","startsWith","toLowerCase","apiDocUrl","utils.parseLinkHeader","getResponseHeader","docXhr","setRequestHeader","_gatherEntities","_executeFailureFunctions","supportedClasses","baseUrl","utils.parseBaseUrl","classData","entryPoint","fnc","message","notify","getEntityForIdentifier","identifier","getEntityNameForIdentifier","getEntityForEntityName","getApiUrlForEntityName","entity","getApiIdentifierList","expandMember","member","context","result","key","compactMember","localContext","transformMembers","data","members","otherContext","results","that","_createInstance","en","de"],"mappings":"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"}