@startinblox/core 0.17.19 → 0.17.21-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -21,25 +21,18 @@ export const SolidAcChecker = {
21
21
  const ContextParser = JSONLDContextParser.ContextParser;
22
22
  const myParser = new ContextParser();
23
23
  const context = await myParser.parse(this.context);
24
+ const permissions = await this.resource.permissions;
24
25
 
25
26
  if (this.permission) {
26
27
  // User has permission of ...
27
- displayElement = this.resource.permissions.some(p => {
28
+ displayElement = permissions.some(p => {
28
29
  return ContextParser.compactIri(p, context) === this.permission;
29
30
  });
30
- /* displayElement = await asyncSome(
31
- (permission: object) => ContextParser.compactIri(permission.toString(), context) === this.permission,
32
- this.resource.permissions.mode['@type']
33
- )*/
34
31
  } else if (this.noPermission) {
35
32
  // User has no permission of ...
36
- displayElement = this.resource.permissions.every(p => {
33
+ displayElement = permissions.every(p => {
37
34
  return ContextParser.compactIri(p, context) !== this.noPermission;
38
35
  });
39
- /*displayElement = await asyncEvery(
40
- (permission: object) => ContextParser.compactIri(permission.toString(), context) !== this.noPermission,
41
- this.resource.permissions.mode['@type']
42
- )*/
43
36
  } else {
44
37
  // No parameter provided
45
38
  console.warn('solid-ac-checker: you should define at least one of "permission" or "no-permission" attribute.');
@@ -1 +1 @@
1
- {"version":3,"sources":["solid-ac-checker.ts"],"names":["JSONLDContextParser","Sib","StoreMixin","SolidAcChecker","name","use","attributes","permission","type","String","default","noPermission","populate","resource","displayElement","ContextParser","myParser","context","parse","permissions","some","p","compactIri","every","console","warn","element","removeAttribute","empty","setAttribute","register"],"mappings":"AAAA,OAAOA,mBAAP,MAAgC,uBAAhC;AACA,SAASC,GAAT,QAAoB,aAApB;AACA,SAASC,UAAT,QAA2B,sBAA3B;AAEA,OAAO,MAAMC,cAAc,GAAG;AAC5BC,EAAAA,IAAI,EAAE,kBADsB;AAE5BC,EAAAA,GAAG,EAAE,CAACH,UAAD,CAFuB;AAG5BI,EAAAA,UAAU,EAAE;AACVC,IAAAA,UAAU,EAAE;AACVC,MAAAA,IAAI,EAAEC,MADI;AAEVC,MAAAA,OAAO,EAAE;AAFC,KADF;AAKVC,IAAAA,YAAY,EAAE;AACZH,MAAAA,IAAI,EAAEC,MADM;AAEZC,MAAAA,OAAO,EAAE;AAFG;AALJ,GAHgB;;AAc5B,QAAME,QAAN,GAAgC;AAC9B,QAAI,CAAC,KAAKC,QAAV,EAAoB;AACpB,QAAIC,cAAJ;AACA,UAAMC,aAAa,GAAGf,mBAAmB,CAACe,aAA1C;AACA,UAAMC,QAAQ,GAAG,IAAID,aAAJ,EAAjB;AACA,UAAME,OAAO,GAAG,MAAMD,QAAQ,CAACE,KAAT,CAAe,KAAKD,OAApB,CAAtB;;AAEA,QAAI,KAAKV,UAAT,EAAqB;AAAE;AACrBO,MAAAA,cAAc,GAAG,KAAKD,QAAL,CAAcM,WAAd,CAA0BC,IAA1B,CAAgCC,CAAD,IAAW;AACzD,eAAON,aAAa,CAACO,UAAd,CAAyBD,CAAzB,EAA4BJ,OAA5B,MAAyC,KAAKV,UAArD;AACD,OAFgB,CAAjB;AAGA;AACN;AACA;AACA;AACK,KARD,MAQO,IAAI,KAAKI,YAAT,EAAuB;AAAE;AAC9BG,MAAAA,cAAc,GAAG,KAAKD,QAAL,CAAcM,WAAd,CAA0BI,KAA1B,CAAiCF,CAAD,IAAW;AAC1D,eAAON,aAAa,CAACO,UAAd,CAAyBD,CAAzB,EAA4BJ,OAA5B,MAAyC,KAAKN,YAArD;AACD,OAFgB,CAAjB;AAGA;AACN;AACA;AACA;AACK,KARM,MAQA;AAAE;AACPa,MAAAA,OAAO,CAACC,IAAR,CAAa,gGAAb;AACA;AACD;;AAED,QAAIX,cAAJ,EAAoB,KAAKY,OAAL,CAAaC,eAAb,CAA6B,QAA7B;AACrB,GA3C2B;;AA4C5BC,EAAAA,KAAK,GAAS;AACZ,SAAKF,OAAL,CAAaG,YAAb,CAA0B,QAA1B,EAAoC,EAApC;AACD;;AA9C2B,CAAvB;AAiDP5B,GAAG,CAAC6B,QAAJ,CAAa3B,cAAb","sourcesContent":["import JSONLDContextParser from 'jsonld-context-parser';\nimport { Sib } from '../libs/Sib';\nimport { StoreMixin } from '../mixins/storeMixin';\n\nexport const SolidAcChecker = {\n name: 'solid-ac-checker',\n use: [StoreMixin],\n attributes: {\n permission: {\n type: String,\n default: '',\n },\n noPermission: {\n type: String,\n default: '',\n }\n },\n\n async populate(): Promise<void> {\n if (!this.resource) return;\n let displayElement: boolean;\n const ContextParser = JSONLDContextParser.ContextParser;\n const myParser = new ContextParser();\n const context = await myParser.parse(this.context);\n\n if (this.permission) { // User has permission of ...\n displayElement = this.resource.permissions.some((p:any) => {\n return ContextParser.compactIri(p, context) === this.permission;\n });\n /* displayElement = await asyncSome(\n (permission: object) => ContextParser.compactIri(permission.toString(), context) === this.permission,\n this.resource.permissions.mode['@type']\n )*/\n } else if (this.noPermission) { // User has no permission of ...\n displayElement = this.resource.permissions.every((p:any) => {\n return ContextParser.compactIri(p, context) !== this.noPermission;\n });\n /*displayElement = await asyncEvery(\n (permission: object) => ContextParser.compactIri(permission.toString(), context) !== this.noPermission,\n this.resource.permissions.mode['@type']\n )*/\n } else { // No parameter provided\n console.warn('solid-ac-checker: you should define at least one of \"permission\" or \"no-permission\" attribute.');\n return;\n }\n\n if (displayElement) this.element.removeAttribute('hidden');\n },\n empty(): void {\n this.element.setAttribute('hidden', '');\n }\n};\n\nSib.register(SolidAcChecker);"]}
1
+ {"version":3,"sources":["solid-ac-checker.ts"],"names":["JSONLDContextParser","Sib","StoreMixin","SolidAcChecker","name","use","attributes","permission","type","String","default","noPermission","populate","resource","displayElement","ContextParser","myParser","context","parse","permissions","some","p","compactIri","every","console","warn","element","removeAttribute","empty","setAttribute","register"],"mappings":"AAAA,OAAOA,mBAAP,MAAgC,uBAAhC;AACA,SAASC,GAAT,QAAoB,aAApB;AACA,SAASC,UAAT,QAA2B,sBAA3B;AAEA,OAAO,MAAMC,cAAc,GAAG;AAC5BC,EAAAA,IAAI,EAAE,kBADsB;AAE5BC,EAAAA,GAAG,EAAE,CAACH,UAAD,CAFuB;AAG5BI,EAAAA,UAAU,EAAE;AACVC,IAAAA,UAAU,EAAE;AACVC,MAAAA,IAAI,EAAEC,MADI;AAEVC,MAAAA,OAAO,EAAE;AAFC,KADF;AAKVC,IAAAA,YAAY,EAAE;AACZH,MAAAA,IAAI,EAAEC,MADM;AAEZC,MAAAA,OAAO,EAAE;AAFG;AALJ,GAHgB;;AAc5B,QAAME,QAAN,GAAgC;AAC9B,QAAI,CAAC,KAAKC,QAAV,EAAoB;AACpB,QAAIC,cAAJ;AACA,UAAMC,aAAa,GAAGf,mBAAmB,CAACe,aAA1C;AACA,UAAMC,QAAQ,GAAG,IAAID,aAAJ,EAAjB;AACA,UAAME,OAAO,GAAG,MAAMD,QAAQ,CAACE,KAAT,CAAe,KAAKD,OAApB,CAAtB;AACA,UAAME,WAAW,GAAG,MAAM,KAAKN,QAAL,CAAcM,WAAxC;;AAEA,QAAI,KAAKZ,UAAT,EAAqB;AAAE;AACrBO,MAAAA,cAAc,GAAGK,WAAW,CAACC,IAAZ,CAAkBC,CAAD,IAAW;AAC3C,eAAON,aAAa,CAACO,UAAd,CAAyBD,CAAzB,EAA4BJ,OAA5B,MAAyC,KAAKV,UAArD;AACD,OAFgB,CAAjB;AAGD,KAJD,MAIO,IAAI,KAAKI,YAAT,EAAuB;AAAE;AAC9BG,MAAAA,cAAc,GAAGK,WAAW,CAACI,KAAZ,CAAmBF,CAAD,IAAW;AAC5C,eAAON,aAAa,CAACO,UAAd,CAAyBD,CAAzB,EAA4BJ,OAA5B,MAAyC,KAAKN,YAArD;AACD,OAFgB,CAAjB;AAGD,KAJM,MAIA;AAAE;AACPa,MAAAA,OAAO,CAACC,IAAR,CAAa,gGAAb;AACA;AACD;;AAED,QAAIX,cAAJ,EAAoB,KAAKY,OAAL,CAAaC,eAAb,CAA6B,QAA7B;AACrB,GApC2B;;AAqC5BC,EAAAA,KAAK,GAAS;AACZ,SAAKF,OAAL,CAAaG,YAAb,CAA0B,QAA1B,EAAoC,EAApC;AACD;;AAvC2B,CAAvB;AA0CP5B,GAAG,CAAC6B,QAAJ,CAAa3B,cAAb","sourcesContent":["import JSONLDContextParser from 'jsonld-context-parser';\nimport { Sib } from '../libs/Sib';\nimport { StoreMixin } from '../mixins/storeMixin';\n\nexport const SolidAcChecker = {\n name: 'solid-ac-checker',\n use: [StoreMixin],\n attributes: {\n permission: {\n type: String,\n default: '',\n },\n noPermission: {\n type: String,\n default: '',\n }\n },\n\n async populate(): Promise<void> {\n if (!this.resource) return;\n let displayElement: boolean;\n const ContextParser = JSONLDContextParser.ContextParser;\n const myParser = new ContextParser();\n const context = await myParser.parse(this.context);\n const permissions = await this.resource.permissions;\n\n if (this.permission) { // User has permission of ...\n displayElement = permissions.some((p:any) => {\n return ContextParser.compactIri(p, context) === this.permission;\n });\n } else if (this.noPermission) { // User has no permission of ...\n displayElement = permissions.every((p:any) => {\n return ContextParser.compactIri(p, context) !== this.noPermission;\n });\n } else { // No parameter provided\n console.warn('solid-ac-checker: you should define at least one of \"permission\" or \"no-permission\" attribute.');\n return;\n }\n\n if (displayElement) this.element.removeAttribute('hidden');\n },\n empty(): void {\n this.element.setAttribute('hidden', '');\n }\n};\n\nSib.register(SolidAcChecker);"]}
@@ -177,7 +177,7 @@ export const SolidDisplay = {
177
177
 
178
178
  for (let attr of this.element.attributes) {
179
179
  //copy widget and value attributes
180
- if (attr.name.startsWith('value-') || attr.name.startsWith('label-') || attr.name.startsWith('placeholder-') || attr.name.startsWith('widget-') || attr.name.startsWith('class-') || attr.name.startsWith('multiple-') || attr.name.startsWith('editable-') || attr.name.startsWith('action-') || attr.name.startsWith('default-') || attr.name == 'extra-context') attributes[attr.name] = attr.value;
180
+ if (attr.name.startsWith('value-') || attr.name.startsWith('label-') || attr.name.startsWith('placeholder-') || attr.name.startsWith('widget-') || attr.name.startsWith('class-') || attr.name.startsWith('multiple-') || attr.name.startsWith('editable-') || attr.name.startsWith('action-') || attr.name.startsWith('default-') || attr.name.startsWith('link-text-') || attr.name == 'extra-context') attributes[attr.name] = attr.value;
181
181
  if (attr.name.startsWith('child-')) attributes[attr.name.replace(/^child-/, '')] = attr.value;
182
182
 
183
183
  if (attr.name == 'next') {
@@ -1 +1 @@
1
- {"version":3,"sources":["solid-display.ts"],"names":["Sib","WidgetMixin","ListMixin","StoreMixin","PaginateMixin","FilterMixin","CounterMixin","SorterMixin","GrouperMixin","FederationMixin","HighlighterMixin","NextMixin","RequiredMixin","spread","html","render","ifDefined","SolidDisplay","name","use","attributes","defaultWidget","type","String","default","initialState","activeSubscription","removeActiveSubscription","created","route","document","querySelector","setTimeout","resourceId","addActiveCallback","detached","PubSub","unsubscribe","updateNavigateSubscription","subscribe","bind","element","setAttribute","removeActiveCallback","removeAttribute","childTag","dataset","child","tagName","defaultMultipleWidget","defaultSetWidget","dispatchSelect","event","linkTarget","target","closest","hasAttribute","resource","dispatchEvent","CustomEvent","detail","goToNext","enterKeydownAction","keyCode","getChildTemplate","template","fields","appendSingleElt","parent","getFields","widgetTemplates","Promise","all","map","field","createWidgetTemplate","renderDOM","resources","listPostProcessors","div","context","getChildAttributes","r","nextProcessor","shift","attr","startsWith","value","replace","register"],"mappings":"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","sourcesContent":["import { Sib } from '../libs/Sib';\nimport { WidgetMixin } from '../mixins/widgetMixin';\nimport { ListMixin } from '../mixins/listMixin';\nimport { StoreMixin } from '../mixins/storeMixin';\nimport { PaginateMixin } from '../mixins/paginateMixin';\nimport { FilterMixin } from '../mixins/filterMixin';\nimport { CounterMixin } from '../mixins/counterMixin';\nimport { SorterMixin } from '../mixins/sorterMixin';\nimport { GrouperMixin } from '../mixins/grouperMixin';\nimport { FederationMixin } from '../mixins/federationMixin';\nimport { HighlighterMixin } from '../mixins/highlighterMixin';\nimport { NextMixin } from '../mixins/nextMixin';\nimport { RequiredMixin } from '../mixins/requiredMixin';\nimport { spread } from '../libs/lit-helpers';\n\nimport { html, render } from 'lit-html';\nimport { ifDefined } from 'lit-html/directives/if-defined';\n\nexport const SolidDisplay = {\n name: 'solid-display',\n use: [\n WidgetMixin,\n ListMixin,\n StoreMixin,\n PaginateMixin,\n GrouperMixin,\n CounterMixin,\n HighlighterMixin,\n FilterMixin,\n SorterMixin,\n RequiredMixin,\n FederationMixin,\n NextMixin,\n ],\n attributes: {\n defaultWidget: {\n type: String,\n default: 'solid-display-value',\n },\n },\n initialState: {\n activeSubscription: null,\n removeActiveSubscription: null,\n },\n created(): void {\n // Set route active at initialization\n const route = document.querySelector('solid-route[active]') as any;\n if (!route) return;\n setTimeout(() => {\n if (route['resourceId'] === this.resourceId) this.addActiveCallback();\n });\n },\n detached(): void {\n if (this.activeSubscription) PubSub.unsubscribe(this.activeSubscription);\n if (this.removeActiveSubscription) PubSub.unsubscribe(this.removeActiveSubscription);\n },\n // Update subscription when id changes\n updateNavigateSubscription() {\n if (this.activeSubscription) PubSub.unsubscribe(this.activeSubscription);\n\n if (this.resourceId) {\n this.activeSubscription = PubSub.subscribe(\n 'enterRoute.' + this.resourceId,\n this.addActiveCallback.bind(this)\n );\n }\n },\n addActiveCallback() {\n this.element.setAttribute('active', '');\n this.removeActiveSubscription = PubSub.subscribe(\n 'leaveRoute',\n this.removeActiveCallback.bind(this)\n );\n },\n removeActiveCallback() {\n this.element.removeAttribute('active');\n PubSub.unsubscribe(this.removeActiveSubscription);\n },\n get childTag(): string {\n return this.element.dataset.child || this.element.tagName;\n },\n get defaultMultipleWidget(): string {\n return 'solid-multiple';\n },\n get defaultSetWidget(): string {\n return 'solid-set-default';\n },\n // Here \"even.target\" points to the content of the widgets of the children of solid-display\n dispatchSelect(event: Event, resourceId: string): void {\n const linkTarget = (event!.target as Element).closest('a');\n if (linkTarget && linkTarget.hasAttribute('href')) return;\n const resource = { \"@id\": resourceId };\n this.element.dispatchEvent(\n new CustomEvent('resourceSelect', { detail: { resource: resource } }),\n );\n this.goToNext(resource);\n },\n \n enterKeydownAction (event, resourceId: string): void {\n if (event.keyCode === 13) {\n const resource = { \"@id\" : resourceId };\n this.goToNext(resource);\n }\n },\n /**\n * Returns template of a child element (resource)\n * @param resourceId\n * @param attributes\n */\n getChildTemplate(resourceId: string, attributes: object) {\n let template = html`\n <solid-display\n data-src=${resourceId}\n @click=${(event: Event) => this.dispatchSelect(event, resourceId)}\n @keydown=${(event: Event) => this.enterKeydownAction(event, resourceId)}\n fields=${ifDefined(this.fields)}\n ...=${spread(attributes)}\n ></solid-display>\n `\n return template;\n },\n\n /**\n * Creates and render the content of a single element (resource)\n * @param parent\n */\n async appendSingleElt(parent: HTMLElement): Promise<void> {\n const fields = await this.getFields();\n const widgetTemplates = await Promise.all( // generate all widget templates\n fields.map((field: string) => this.createWidgetTemplate(field))\n );\n render(html`${widgetTemplates}`, parent);\n },\n\n /**\n * @override listMixin method to use litHtml\n *\n * Render resources from a container\n * @param resources\n * @param listPostProcessors\n * @param div\n * @param context\n */\n async renderDOM(\n resources: object[],\n listPostProcessors: Function[],\n div: HTMLElement,\n context: string,\n ) {\n const attributes = this.getChildAttributes(); // get attributes of children only once\n // and create a child template for each resource\n const template = html`${resources.map(r => r ? this.getChildTemplate(r['@id'], attributes) : null)}`;\n render(template, div);\n\n const nextProcessor = listPostProcessors.shift();\n if (nextProcessor)\n await nextProcessor(\n resources,\n listPostProcessors,\n div,\n context\n );\n },\n\n /**\n * Get attributes to dispatch to children from current element\n */\n getChildAttributes() {\n const attributes:{[key:string]: string} = {};\n for (let attr of this.element.attributes) {\n //copy widget and value attributes\n if (\n attr.name.startsWith('value-') ||\n attr.name.startsWith('label-') ||\n attr.name.startsWith('placeholder-') ||\n attr.name.startsWith('widget-') ||\n attr.name.startsWith('class-') ||\n attr.name.startsWith('multiple-') ||\n attr.name.startsWith('editable-') ||\n attr.name.startsWith('action-') ||\n attr.name.startsWith('default-') ||\n attr.name == 'extra-context'\n )\n attributes[attr.name] = attr.value;\n if (attr.name.startsWith('child-'))\n attributes[attr.name.replace(/^child-/, '')] = attr.value;\n if (attr.name == 'next') {\n attributes['role'] = 'button';\n attributes['tabindex'] = '0';\n }\n }\n return attributes;\n }\n};\n\nSib.register(SolidDisplay);\n"]}
1
+ {"version":3,"sources":["solid-display.ts"],"names":["Sib","WidgetMixin","ListMixin","StoreMixin","PaginateMixin","FilterMixin","CounterMixin","SorterMixin","GrouperMixin","FederationMixin","HighlighterMixin","NextMixin","RequiredMixin","spread","html","render","ifDefined","SolidDisplay","name","use","attributes","defaultWidget","type","String","default","initialState","activeSubscription","removeActiveSubscription","created","route","document","querySelector","setTimeout","resourceId","addActiveCallback","detached","PubSub","unsubscribe","updateNavigateSubscription","subscribe","bind","element","setAttribute","removeActiveCallback","removeAttribute","childTag","dataset","child","tagName","defaultMultipleWidget","defaultSetWidget","dispatchSelect","event","linkTarget","target","closest","hasAttribute","resource","dispatchEvent","CustomEvent","detail","goToNext","enterKeydownAction","keyCode","getChildTemplate","template","fields","appendSingleElt","parent","getFields","widgetTemplates","Promise","all","map","field","createWidgetTemplate","renderDOM","resources","listPostProcessors","div","context","getChildAttributes","r","nextProcessor","shift","attr","startsWith","value","replace","register"],"mappings":"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","sourcesContent":["import { Sib } from '../libs/Sib';\nimport { WidgetMixin } from '../mixins/widgetMixin';\nimport { ListMixin } from '../mixins/listMixin';\nimport { StoreMixin } from '../mixins/storeMixin';\nimport { PaginateMixin } from '../mixins/paginateMixin';\nimport { FilterMixin } from '../mixins/filterMixin';\nimport { CounterMixin } from '../mixins/counterMixin';\nimport { SorterMixin } from '../mixins/sorterMixin';\nimport { GrouperMixin } from '../mixins/grouperMixin';\nimport { FederationMixin } from '../mixins/federationMixin';\nimport { HighlighterMixin } from '../mixins/highlighterMixin';\nimport { NextMixin } from '../mixins/nextMixin';\nimport { RequiredMixin } from '../mixins/requiredMixin';\nimport { spread } from '../libs/lit-helpers';\n\nimport { html, render } from 'lit-html';\nimport { ifDefined } from 'lit-html/directives/if-defined';\n\nexport const SolidDisplay = {\n name: 'solid-display',\n use: [\n WidgetMixin,\n ListMixin,\n StoreMixin,\n PaginateMixin,\n GrouperMixin,\n CounterMixin,\n HighlighterMixin,\n FilterMixin,\n SorterMixin,\n RequiredMixin,\n FederationMixin,\n NextMixin,\n ],\n attributes: {\n defaultWidget: {\n type: String,\n default: 'solid-display-value',\n },\n },\n initialState: {\n activeSubscription: null,\n removeActiveSubscription: null,\n },\n created(): void {\n // Set route active at initialization\n const route = document.querySelector('solid-route[active]') as any;\n if (!route) return;\n setTimeout(() => {\n if (route['resourceId'] === this.resourceId) this.addActiveCallback();\n });\n },\n detached(): void {\n if (this.activeSubscription) PubSub.unsubscribe(this.activeSubscription);\n if (this.removeActiveSubscription) PubSub.unsubscribe(this.removeActiveSubscription);\n },\n // Update subscription when id changes\n updateNavigateSubscription() {\n if (this.activeSubscription) PubSub.unsubscribe(this.activeSubscription);\n\n if (this.resourceId) {\n this.activeSubscription = PubSub.subscribe(\n 'enterRoute.' + this.resourceId,\n this.addActiveCallback.bind(this)\n );\n }\n },\n addActiveCallback() {\n this.element.setAttribute('active', '');\n this.removeActiveSubscription = PubSub.subscribe(\n 'leaveRoute',\n this.removeActiveCallback.bind(this)\n );\n },\n removeActiveCallback() {\n this.element.removeAttribute('active');\n PubSub.unsubscribe(this.removeActiveSubscription);\n },\n get childTag(): string {\n return this.element.dataset.child || this.element.tagName;\n },\n get defaultMultipleWidget(): string {\n return 'solid-multiple';\n },\n get defaultSetWidget(): string {\n return 'solid-set-default';\n },\n // Here \"even.target\" points to the content of the widgets of the children of solid-display\n dispatchSelect(event: Event, resourceId: string): void {\n const linkTarget = (event!.target as Element).closest('a');\n if (linkTarget && linkTarget.hasAttribute('href')) return;\n const resource = { \"@id\": resourceId };\n this.element.dispatchEvent(\n new CustomEvent('resourceSelect', { detail: { resource: resource } }),\n );\n this.goToNext(resource);\n },\n \n enterKeydownAction (event, resourceId: string): void {\n if (event.keyCode === 13) {\n const resource = { \"@id\" : resourceId };\n this.goToNext(resource);\n }\n },\n /**\n * Returns template of a child element (resource)\n * @param resourceId\n * @param attributes\n */\n getChildTemplate(resourceId: string, attributes: object) {\n let template = html`\n <solid-display\n data-src=${resourceId}\n @click=${(event: Event) => this.dispatchSelect(event, resourceId)}\n @keydown=${(event: Event) => this.enterKeydownAction(event, resourceId)}\n fields=${ifDefined(this.fields)}\n ...=${spread(attributes)}\n ></solid-display>\n `\n return template;\n },\n\n /**\n * Creates and render the content of a single element (resource)\n * @param parent\n */\n async appendSingleElt(parent: HTMLElement): Promise<void> {\n const fields = await this.getFields();\n const widgetTemplates = await Promise.all( // generate all widget templates\n fields.map((field: string) => this.createWidgetTemplate(field))\n );\n render(html`${widgetTemplates}`, parent);\n },\n\n /**\n * @override listMixin method to use litHtml\n *\n * Render resources from a container\n * @param resources\n * @param listPostProcessors\n * @param div\n * @param context\n */\n async renderDOM(\n resources: object[],\n listPostProcessors: Function[],\n div: HTMLElement,\n context: string,\n ) {\n const attributes = this.getChildAttributes(); // get attributes of children only once\n // and create a child template for each resource\n const template = html`${resources.map(r => r ? this.getChildTemplate(r['@id'], attributes) : null)}`;\n render(template, div);\n\n const nextProcessor = listPostProcessors.shift();\n if (nextProcessor)\n await nextProcessor(\n resources,\n listPostProcessors,\n div,\n context\n );\n },\n\n /**\n * Get attributes to dispatch to children from current element\n */\n getChildAttributes() {\n const attributes:{[key:string]: string} = {};\n for (let attr of this.element.attributes) {\n //copy widget and value attributes\n if (\n attr.name.startsWith('value-') ||\n attr.name.startsWith('label-') ||\n attr.name.startsWith('placeholder-') ||\n attr.name.startsWith('widget-') ||\n attr.name.startsWith('class-') ||\n attr.name.startsWith('multiple-') ||\n attr.name.startsWith('editable-') ||\n attr.name.startsWith('action-') ||\n attr.name.startsWith('default-') ||\n attr.name.startsWith('link-text-') ||\n attr.name == 'extra-context'\n )\n attributes[attr.name] = attr.value;\n if (attr.name.startsWith('child-'))\n attributes[attr.name.replace(/^child-/, '')] = attr.value;\n if (attr.name == 'next') {\n attributes['role'] = 'button';\n attributes['tabindex'] = '0';\n }\n }\n return attributes;\n }\n};\n\nSib.register(SolidDisplay);\n"]}
@@ -58,8 +58,9 @@ class Store {
58
58
  this.subscriptionIndex = new Map();
59
59
  this.subscriptionVirtualContainersIndex = new Map();
60
60
  this.loadingList = new Set();
61
- this.headers = new Headers();
62
- this.headers.set('Content-Type', 'application/ld+json');
61
+ this.headers = {
62
+ 'Content-Type': 'application/ld+json'
63
+ };
63
64
  this.fetch = this.storeOptions.fetchMethod;
64
65
  this.session = this.storeOptions.session;
65
66
  }
@@ -68,6 +69,8 @@ class Store {
68
69
  * @param id - uri of the resource to fetch
69
70
  * @param context - context used to expand id and predicates when accessing the resource
70
71
  * @param idParent - uri of the parent caller used to expand uri for local files
72
+ * @param localData - data to put in cache
73
+ * @param forceFetch - force the fetch of data
71
74
  *
72
75
  * @returns The fetched resource
73
76
  *
@@ -75,10 +78,10 @@ class Store {
75
78
  */
76
79
 
77
80
 
78
- async getData(id, context = {}, idParent = "", localData) {
81
+ async getData(id, context = {}, idParent = "", localData, forceFetch = false) {
79
82
  if (localData == null && this.cache.has(id) && !this.loadingList.has(id)) {
80
83
  const resource = this.get(id);
81
- if (resource && resource.isFullResource()) return resource; // if resource is not complete, re-fetch it
84
+ if (resource && resource.isFullResource() && !forceFetch) return resource; // if resource is not complete, re-fetch it
82
85
  }
83
86
 
84
87
  return new Promise(async resolve => {
@@ -122,14 +125,30 @@ class Store {
122
125
  async fetchAuthn(iri, options) {
123
126
  let authenticated = false;
124
127
  if (this.session) authenticated = await this.session;
125
- return this.fetch && authenticated ? this.fetch.then(fn => fn(iri, options)) : fetch(iri, options);
128
+
129
+ if (this.fetch && authenticated) {
130
+ // authenticated
131
+ return this.fetch.then(fn => fn(iri, options));
132
+ } else {
133
+ // anonymous
134
+ if (options.headers) options.headers = this._convertHeaders(options.headers);
135
+ return fetch(iri, options).then(function (response) {
136
+ if (options.method === "PURGE" && !response.ok && response.status === 404) {
137
+ const err = new Error("PURGE call is returning 404");
138
+ throw err;
139
+ }
140
+
141
+ return response;
142
+ });
143
+ }
126
144
  }
127
145
 
128
146
  async fetchData(id, context = {}, idParent = "") {
129
147
  const iri = this._getAbsoluteIri(id, context, idParent);
130
148
 
131
- const headers = this.headers;
132
- headers.set('accept-language', this._getLanguage());
149
+ const headers = { ...this.headers,
150
+ 'accept-language': this._getLanguage()
151
+ };
133
152
  return this.fetchAuthn(iri, {
134
153
  method: 'GET',
135
154
  headers: headers,
@@ -195,11 +214,19 @@ class Store {
195
214
  await this.cacheGraph(key, resourceProxy, clientContext, parentContext, parentId);
196
215
  }
197
216
  }
217
+ /**
218
+ * Update fetch
219
+ * @param method - 'POST', 'PATCH', 'PUT', '_LOCAL'
220
+ * @param resource - resource to send
221
+ * @param id - uri to update
222
+ * @returns - object
223
+ */
224
+
198
225
 
199
226
  async _fetch(method, resource, id) {
200
- if (method !== '_LOCAL') return fetch(id, {
227
+ if (method !== '_LOCAL') return this.fetchAuthn(id, {
201
228
  method: method,
202
- headers: await this.headers,
229
+ headers: this.headers,
203
230
  body: JSON.stringify(resource),
204
231
  credentials: 'include'
205
232
  });
@@ -218,11 +245,15 @@ class Store {
218
245
 
219
246
  const expandedId = this._getExpandedId(id, context);
220
247
 
221
- return this._fetch(method, resource, id).then(response => {
248
+ return this._fetch(method, resource, id).then(async response => {
222
249
  if (response.ok) {
223
250
  var _response$headers;
224
251
 
225
- if (method !== '_LOCAL') this.clearCache(expandedId); // clear cache
252
+ if (method !== '_LOCAL') {
253
+ await this.purge(id);
254
+ this.clearCache(expandedId);
255
+ } // clear cache
256
+
226
257
 
227
258
  this.getData(expandedId, resource['@context']).then(async () => {
228
259
  // re-fetch data
@@ -378,6 +409,43 @@ class Store {
378
409
  async patch(resource, id) {
379
410
  return this._updateResource('PATCH', resource, id);
380
411
  }
412
+ /**
413
+ * Send a PURGE request to remove a resource from REDIS AD cache
414
+ * @param id - uri of the resource to patch
415
+ *
416
+ * @returns id of the edited resource
417
+ */
418
+
419
+
420
+ async purge(id) {
421
+ console.log('Purging resource ' + id);
422
+ await this.fetchAuthn(id, {
423
+ method: "PURGE",
424
+ headers: this.headers
425
+ }).catch(function (error) {
426
+ console.warn('No purge method allowed: ' + error);
427
+ });
428
+
429
+ try {
430
+ const fullURL = new URL(id);
431
+ console.log("Full URL object", fullURL);
432
+ var containerUrl = fullURL.hostname + fullURL.pathname.split('/')[0];
433
+ console.log("Container URL for wildcard purge", containerUrl);
434
+ const headers = { ...this.headers,
435
+ 'X-Cache-Purge-Match': 'wildcard'
436
+ };
437
+ console.log("Headers", headers);
438
+ await this.fetchAuthn(containerUrl + '/*', {
439
+ method: "PURGE",
440
+ headers: headers
441
+ }).catch(function (error) {
442
+ console.warn('No purge method allowed: ' + error);
443
+ });
444
+ } catch (error) {
445
+ console.warn('The resource ID is not a complete URL: ' + error);
446
+ return;
447
+ }
448
+ }
381
449
  /**
382
450
  * Send a DELETE request to delete a resource
383
451
  * @param id - uri of the resource to delete
@@ -395,11 +463,28 @@ class Store {
395
463
  headers: this.headers,
396
464
  credentials: 'include'
397
465
  });
466
+ await this.purge(id);
398
467
  const resourcesToNotify = this.subscriptionIndex.get(expandedId) || [];
399
468
  const resourcesToRefresh = this.subscriptionVirtualContainersIndex.get(expandedId) || [];
400
469
  this.refreshResources([...resourcesToNotify, ...resourcesToRefresh]).then(resourceIds => this.notifyResources(resourceIds));
401
470
  return deleted;
402
471
  }
472
+ /**
473
+ * Convert headers object to Headers
474
+ * @param headersObject - object
475
+ * @returns {Headers}
476
+ */
477
+
478
+
479
+ _convertHeaders(headersObject) {
480
+ const headers = new Headers();
481
+
482
+ for (const [key, value] of Object.entries(headersObject)) {
483
+ headers.set(key, value);
484
+ }
485
+
486
+ return headers;
487
+ }
403
488
 
404
489
  _getExpandedId(id, context) {
405
490
  return context && Object.keys(context) ? ContextParser.expandTerm(id, context) : id;
@@ -600,11 +685,12 @@ class CustomGetter {
600
685
  * @param id
601
686
  * @param context
602
687
  * @param iriParent
688
+ * @param forceFetch
603
689
  */
604
690
 
605
691
 
606
- async getResource(id, context, iriParent) {
607
- return store.getData(id, context, iriParent);
692
+ async getResource(id, context, iriParent, forceFetch = false) {
693
+ return store.getData(id, context, iriParent, undefined, forceFetch);
608
694
  }
609
695
  /**
610
696
  * Return true if the resource is a container
@@ -687,8 +773,16 @@ class CustomGetter {
687
773
  return Object.keys(this.resource).filter(p => !p.startsWith('@')).length > 0;
688
774
  }
689
775
 
690
- getPermissions() {
691
- const permissions = this.resource[this.getExpandedPredicate("permissions")];
776
+ async getPermissions() {
777
+ const permissionPredicate = this.getExpandedPredicate("permissions");
778
+ let permissions = this.resource[permissionPredicate];
779
+
780
+ if (!permissions) {
781
+ // if no permission, re-fetch data
782
+ await this.getResource(this.resourceId, this.clientContext, this.parentId, true);
783
+ permissions = this.resource[permissionPredicate];
784
+ }
785
+
692
786
  return permissions ? permissions.map(perm => ContextParser.expandTerm(perm.mode['@type'], this.serverContext, true)) : [];
693
787
  }
694
788
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["store.ts"],"names":["JSONLDContextParser","PubSub","ContextParser","myParser","base_context","rdf","rdfs","ldp","foaf","name","acl","permissions","mode","geo","lat","lng","Store","constructor","storeOptions","id","resolve","handler","event","detail","resource","document","removeEventListener","cache","Map","subscriptionIndex","subscriptionVirtualContainersIndex","loadingList","Set","headers","Headers","set","fetch","fetchMethod","session","getData","context","idParent","localData","has","get","isFullResource","Promise","addEventListener","resolveResource","add","clientContext","parse","_isLocalId","fetchData","error","console","delete","serverContext","resourceProxy","CustomGetter","getProxy","cacheGraph","dispatchEvent","CustomEvent","fetchAuthn","iri","options","authenticated","then","fn","_getAbsoluteIri","_getLanguage","method","credentials","response","ok","json","key","parentContext","parentId","properties","merge","getSubObjects","res","newParentContext","getChildren","cacheChildrenPromises","subscribeResourceTo","push","all","match","_fetch","body","JSON","stringify","store","clearCache","_updateResource","includes","Error","expandedId","_getExpandedId","nestedResources","getNestedResources","resourcesToRefresh","resourcesToNotify","refreshResources","resourceIds","notifyResources","filter","resourceWithContexts","map","resourceId","publish","cachedResource","isContainer","nestedProperties","excludeKeys","p","Object","keys","forEach","child","setLocalData","post","put","patch","deleted","expandTerm","startsWith","nestedResourceId","existingSubscriptions","subscribeVirtualContainerTo","virtualContainerId","parentIri","URL","location","href","_resourceIsComplete","length","localStorage","getItem","window","navigator","language","slice","selectLanguage","selectedLanguageCode","setItem","sibStore","sibAuth","querySelector","sibAuthDefined","customElements","whenDefined","localName","getFetch","Symbol","toPrimitive","expandProperties","prop","objectReplaceProperty","object","oldProp","newProp","defineProperty","getOwnPropertyDescriptor","path","path1","split","path2","value","getResource","getExpandedPredicate","e","lastPath1El","pop","unshift","undefined","join","iriParent","getProperties","getCompactedPredicate","getLdpContains","children","subObjects","property","isFullNestedResource","getResourceData","getPermissions","perm","compactIri","getCompactedIri","toString","Proxy","bind"],"mappings":"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","sourcesContent":["import JSONLDContextParser from 'jsonld-context-parser';\n//@ts-ignore\nimport PubSub from 'https://cdn.skypack.dev/pubsub-js';\nimport type { Resource } from '../../mixins/interfaces';\n\nconst ContextParser = JSONLDContextParser.ContextParser;\nconst myParser = new ContextParser();\n\nexport const base_context = {\n '@vocab': 'http://happy-dev.fr/owl/#',\n rdf: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n rdfs: 'http://www.w3.org/2000/01/rdf-schema#',\n ldp: 'http://www.w3.org/ns/ldp#',\n foaf: 'http://xmlns.com/foaf/0.1/',\n name: 'rdfs:label',\n acl: 'http://www.w3.org/ns/auth/acl#',\n permissions: 'acl:accessControl',\n mode: 'acl:mode',\n geo: \"http://www.w3.org/2003/01/geo/wgs84_pos#\",\n lat: \"geo:lat\",\n lng: \"geo:long\"\n};\n\nclass Store {\n cache: Map<string, any>;\n subscriptionIndex: Map<string, any>; // index of all the containers per resource\n subscriptionVirtualContainersIndex: Map<string, any>; // index of all the containers per resource\n loadingList: Set<String>;\n headers: Headers;\n fetch: Promise<any> | undefined;\n session: Promise<any> | undefined;\n\n constructor(private storeOptions: StoreOptions) {\n this.cache = new Map();\n this.subscriptionIndex = new Map();\n this.subscriptionVirtualContainersIndex = new Map();\n this.loadingList = new Set();\n this.headers = new Headers();\n this.headers.set('Content-Type', 'application/ld+json');\n this.fetch = this.storeOptions.fetchMethod;\n this.session = this.storeOptions.session;\n }\n\n /**\n * Fetch data and cache it\n * @param id - uri of the resource to fetch\n * @param context - context used to expand id and predicates when accessing the resource\n * @param idParent - uri of the parent caller used to expand uri for local files\n *\n * @returns The fetched resource\n *\n * @async\n */\n\n async getData(id: string, context:any = {}, idParent = \"\", localData?: object): Promise<Resource|null> {\n if (localData == null && this.cache.has(id) && !this.loadingList.has(id)) {\n const resource = this.get(id);\n if (resource && resource.isFullResource()) return resource; // if resource is not complete, re-fetch it\n }\n\n return new Promise(async (resolve) => {\n document.addEventListener('resourceReady', this.resolveResource(id, resolve));\n\n if (this.loadingList.has(id)) return;\n this.loadingList.add(id);\n\n // Generate proxy\n const clientContext = await myParser.parse(context);\n let resource: any = null;\n if(this._isLocalId(id)) {\n if(localData == null) localData = {};\n localData[\"@id\"] = id;\n resource = localData;\n } else try {\n resource = localData || await this.fetchData(id, clientContext, idParent);\n } catch (error) { console.error(error) }\n if (!resource) {\n this.loadingList.delete(id);\n resolve(null);\n return;\n }\n const serverContext = await myParser.parse([resource['@context'] || {}]);\n const resourceProxy = new CustomGetter(id, resource, clientContext, serverContext, idParent).getProxy();\n\n // Cache proxy\n await this.cacheGraph(id, resourceProxy, clientContext, serverContext, idParent || id);\n this.loadingList.delete(id);\n document.dispatchEvent(new CustomEvent('resourceReady', { detail: { id: id, resource: this.get(id) } }));\n });\n }\n\n async fetchAuthn(iri: string, options: any) {\n let authenticated = false;\n if (this.session) authenticated = await this.session;\n return (this.fetch && authenticated)\n ? this.fetch.then(fn => fn(iri, options))\n : fetch(iri, options);\n }\n\n async fetchData(id: string, context = {}, idParent = \"\") {\n const iri = this._getAbsoluteIri(id, context, idParent);\n const headers = this.headers;\n headers.set('accept-language', this._getLanguage());\n return this.fetchAuthn(iri, {\n method: 'GET',\n headers: headers,\n credentials: 'include'\n }).then(response => {\n if (!response.ok) return;\n return response.json()\n })\n }\n\n async cacheGraph(key: string, resource: any, clientContext: object, parentContext: object, parentId: string) {\n if (resource.properties) { // if proxy, cache it\n if (this.get(key)) { // if already cached, merge data\n this.cache.get(key).merge(resource);\n } else { // else, put in cache\n this.cache.set(key, resource);\n }\n }\n\n // Cache nested resources\n if (resource.getSubObjects) {\n for (let res of resource.getSubObjects()) {\n let newParentContext = parentContext;\n // If additional context in resource, use it to expand properties\n if (res['@context']) newParentContext = await myParser.parse({ ...parentContext, ...res['@context'] });\n const resourceProxy = new CustomGetter(res['@id'], res, clientContext, newParentContext, parentId).getProxy();\n // this.subscribeResourceTo(resource['@id'], res['@id']); // removed to prevent useless updates\n await this.cacheGraph(res['@id'], resourceProxy, clientContext, parentContext, parentId);\n }\n }\n\n // Cache children of container\n if (resource['@type'] == \"ldp:Container\" && resource.getChildren) {\n const cacheChildrenPromises: Promise<void>[] = [];\n for (let res of resource.getChildren()) {\n this.subscribeResourceTo(resource['@id'], res['@id']);\n cacheChildrenPromises.push(this.cacheGraph(res['@id'], res, clientContext, parentContext, parentId))\n }\n await Promise.all(cacheChildrenPromises);\n return;\n }\n\n // Create proxy, (fetch data) and cache resource\n if (resource['@id'] && !resource.properties) {\n if (resource['@id'].match(/^b\\d+$/)) return; // not anonymous node\n // Fetch data if\n if (resource['@type'] === \"sib:federatedContainer\" && resource['@cache'] !== 'false') { // if object is federated container\n await this.getData(resource['@id'], clientContext, parentId); // then init graph\n return;\n }\n const resourceProxy = new CustomGetter(resource['@id'], resource, clientContext, parentContext, parentId).getProxy();\n await this.cacheGraph(key, resourceProxy, clientContext, parentContext, parentId);\n }\n }\n\n async _fetch(method: string, resource: object, id: string): Promise<any> {\n if(method !== '_LOCAL')\n return fetch(id, {\n method: method,\n headers: await this.headers,\n body: JSON.stringify(resource),\n credentials: 'include'\n })\n\n const resourceProxy = store.get(id);\n const clientContext = resourceProxy ? resourceProxy.clientContext : resource['@context']\n this.clearCache(id);\n await this.getData(id, clientContext, '', resource);\n return {ok: true}\n }\n\n async _updateResource(method: string, resource: object, id: string) {\n if (!['POST', 'PUT', 'PATCH', '_LOCAL'].includes(method)) throw new Error('Error: method not allowed');\n\n const context = await myParser.parse([resource['@context'] || {}]); // parse context before expandTerm\n const expandedId = this._getExpandedId(id, context);\n return this._fetch(method, resource, id).then(response => {\n if (response.ok) {\n if(method !== '_LOCAL') this.clearCache(expandedId); // clear cache\n this.getData(expandedId, resource['@context']).then(async () => { // re-fetch data\n const nestedResources = await this.getNestedResources(resource, id);\n const resourcesToRefresh = this.subscriptionVirtualContainersIndex.get(expandedId) || [];\n const resourcesToNotify = this.subscriptionIndex.get(expandedId) || [];\n\n return this.refreshResources([...nestedResources, ...resourcesToRefresh]) // refresh related resources\n .then(resourceIds => this.notifyResources([expandedId, ...resourceIds, ...resourcesToNotify])); // notify components\n });\n return response.headers?.get('Location') || null;\n } else {\n throw response;\n }\n });\n }\n\n /**\n * Clear cache and refetch data for a list of ids\n * @param resourceIds -\n * @returns - all the resource ids\n */\n async refreshResources(resourceIds: string[]) {\n resourceIds = [...new Set(resourceIds.filter(id => this.cache.has(id)))]; // remove duplicates and not cached resources\n const resourceWithContexts = resourceIds.map(resourceId => ({ \"id\": resourceId, \"context\": store.get(resourceId)?.clientContext }));\n for (const resource of resourceWithContexts) {\n if (!this._isLocalId(resource.id)) this.clearCache(resource.id);\n }\n await Promise.all(resourceWithContexts.map(({ id, context }) => this.getData(id, context || base_context)))\n return resourceIds;\n }\n /**\n * Notifies all components for a list of ids\n * @param resourceIds -\n */\n async notifyResources(resourceIds: string[]) {\n resourceIds = [...new Set(resourceIds)]; // remove duplicates\n for (const id of resourceIds) PubSub.publish(id);\n }\n\n /**\n * Return id of nested properties of a resource\n * @param resource - object\n * @param id - string\n */\n async getNestedResources(resource: object, id: string) {\n const cachedResource = store.get(id);\n if (!cachedResource || cachedResource.isContainer()) return [];\n let nestedProperties:any[] = [];\n const excludeKeys = ['@context'];\n for (let p of Object.keys(resource)) {\n if (resource[p]\n && typeof resource[p] === 'object'\n && !excludeKeys.includes(p)\n && resource[p]['@id']) {\n nestedProperties.push(resource[p]['@id']);\n }\n }\n return nestedProperties;\n }\n\n /**\n * Returns the resource with id from the cache\n * @param id - id of the resource to retrieve\n *\n * @returns Resource (Proxy) if in the cache, null otherwise\n */\n get(id: string): Resource | null {\n return this.cache.get(id) || null;\n }\n\n\n /**\n * Removes a resource from the cache\n * @param id - id of the resource to remove from the cache\n */\n clearCache(id: string): void {\n if (this.cache.has(id)) {\n // For federation, clear each source\n const resource = this.cache.get(id);\n if (resource['@type'] === 'ldp:Container') {\n resource['ldp:contains'].forEach((child: object) => {\n if (child && child['@type'] === 'ldp:Container') this.cache.delete(child['@id'])\n })\n }\n\n this.cache.delete(id);\n }\n }\n\n /**\n * Send data to create a local resource in a container\n * @param resource - resource to create\n * @param id - uri of the container to add resource. should start with ``\n *\n * @returns id of the posted resource\n */\n async setLocalData(resource: object, id: string): Promise<string | null> {\n return this._updateResource('_LOCAL', resource, id);\n }\n\n /**\n * Send a POST request to create a resource in a container\n * @param resource - resource to create\n * @param id - uri of the container to add resource\n *\n * @returns id of the posted resource\n */\n async post(resource: object, id: string): Promise<string | null> {\n return this._updateResource('POST', resource, id);\n }\n\n /**\n * Send a PUT request to edit a resource\n * @param resource - resource data to send\n * @param id - uri of the resource to edit\n *\n * @returns id of the edited resource\n */\n async put(resource: object, id: string): Promise<string | null> {\n return this._updateResource('PUT', resource, id);\n }\n\n /**\n * Send a PATCH request to edit a resource\n * @param resource - resource data to send\n * @param id - uri of the resource to patch\n *\n * @returns id of the edited resource\n */\n async patch(resource: object, id: string): Promise<string | null> {\n return this._updateResource('PATCH', resource, id);\n }\n\n /**\n * Send a DELETE request to delete a resource\n * @param id - uri of the resource to delete\n * @param context - can be used to expand id\n *\n * @returns id of the deleted resource\n */\n async delete(id: string, context: object = {}) {\n const expandedId = this._getExpandedId(id, context);\n const deleted = await this.fetchAuthn(expandedId, {\n method: 'DELETE',\n headers: this.headers,\n credentials: 'include'\n });\n\n const resourcesToNotify = this.subscriptionIndex.get(expandedId) || [];\n const resourcesToRefresh = this.subscriptionVirtualContainersIndex.get(expandedId) || [];\n\n this.refreshResources([...resourcesToNotify, ...resourcesToRefresh])\n .then(resourceIds => this.notifyResources(resourceIds));\n\n return deleted;\n }\n\n _getExpandedId(id: string, context: object) {\n return (context && Object.keys(context)) ? ContextParser.expandTerm(id, context) : id;\n }\n\n _isLocalId(id: string) {\n return id.startsWith('store://local.');\n }\n\n /**\n * Make a resource listen changes of another one\n * @param resourceId - id of the resource which needs to be updated\n * @param nestedResourceId - id of the resource which will change\n */\n subscribeResourceTo(resourceId: string, nestedResourceId: string) {\n const existingSubscriptions = this.subscriptionIndex.get(nestedResourceId) || [];\n this.subscriptionIndex.set(nestedResourceId, [...new Set([...existingSubscriptions, resourceId])])\n }\n\n /**\n * Make a virtual container listen for changes of a resource\n * @param virtualContainerId - id of the container which needs to be updated\n * @param nestedResourceId - id of the resource which will change\n */\n subscribeVirtualContainerTo(virtualContainerId: string, nestedResourceId: string) {\n const existingSubscriptions = this.subscriptionVirtualContainersIndex.get(nestedResourceId) || [];\n this.subscriptionVirtualContainersIndex.set(nestedResourceId, [...new Set([...existingSubscriptions, virtualContainerId])])\n }\n\n /**\n * Return absolute IRI of the resource\n * @param id\n * @param context\n * @param parentId\n */\n _getAbsoluteIri(id: string, context: object, parentId: string): string {\n let iri = ContextParser.expandTerm(id, context); // expand if reduced ids\n if (parentId) { // and get full URL from parent caller for local files\n let parentIri = new URL(parentId, document.location.href).href;\n iri = new URL(iri, parentIri).href;\n } else {\n iri = new URL(iri, document.location.href).href;\n }\n return iri;\n }\n\n /**\n * Check if object is a full resource\n * @param resource\n */\n _resourceIsComplete(resource: object) {\n return !!(Object.keys(resource).filter(p => !p.startsWith('@')).length > 0 && resource['@id'])\n }\n\n /**\n * Return language of the users\n */\n _getLanguage() {\n return localStorage.getItem('language') || window.navigator.language.slice(0,2);\n }\n\n /**\n * Save the preferred language of the user\n * @param selectedLanguageCode\n */\n selectLanguage(selectedLanguageCode: string) {\n localStorage.setItem('language', selectedLanguageCode);\n }\n\n resolveResource = function(id: string, resolve) {\n const handler = function(event) {\n if (event.detail.id === id) {\n resolve(event.detail.resource);\n // TODO : callback\n document.removeEventListener('resourceReady', handler);\n }\n };\n return handler;\n };\n}\n\nlet store: Store;\nif (window.sibStore) {\n store = window.sibStore;\n} else {\n const sibAuth = document.querySelector('sib-auth');\n const storeOptions: StoreOptions = {}\n\n if (sibAuth) {\n const sibAuthDefined = customElements.whenDefined(sibAuth.localName);\n storeOptions.session = sibAuthDefined.then(() => (sibAuth as any).session)\n storeOptions.fetchMethod = sibAuthDefined.then(() => (sibAuth as any).getFetch())\n }\n\n store = new Store(storeOptions);\n window.sibStore = store;\n}\n\nexport {\n store\n};\n\n\nclass CustomGetter {\n resource: any; // content of the requested resource\n resourceId: string;\n clientContext: object; // context given by the app\n serverContext: object; // context given by the server\n parentId: string; // id of the parent resource, used to get the absolute url of the current resource\n\n constructor(resourceId: string, resource: object, clientContext: object, serverContext: object = {}, parentId: string = \"\") {\n this.clientContext = clientContext;\n this.serverContext = serverContext;\n this.parentId = parentId;\n this.resource = this.expandProperties({ ...resource }, serverContext);\n this.resourceId = resourceId;\n }\n\n /**\n * Expand all predicates of a resource with a given context\n * @param resource: object\n * @param context: object\n */\n expandProperties(resource: object, context: object | string) {\n for (let prop of Object.keys(resource)) {\n if (!prop) continue;\n this.objectReplaceProperty(resource, prop, ContextParser.expandTerm(prop, context as JSONLDContextParser.IJsonLdContextNormalized, true));\n }\n return resource\n }\n\n /**\n * Change the key of an object\n * @param object: object\n * @param oldProp: string - current key\n * @param newProp: string - new key to set\n */\n objectReplaceProperty(object: object, oldProp: string, newProp: string) {\n if (newProp !== oldProp) {\n Object.defineProperty(\n object,\n newProp,\n Object.getOwnPropertyDescriptor(object, oldProp) || ''\n );\n delete object[oldProp];\n }\n }\n\n /**\n * Get the property of a resource for a given path\n * @param path: string\n */\n async get(path: any) {\n if (!path) return;\n const path1: string[] = path.split('.');\n const path2: string[] = [];\n let value: any;\n if (!this.isFullResource()) { // if resource is not complete, fetch it first\n await this.getResource(this.resourceId, this.clientContext, this.parentId);\n }\n while (true) {\n try {\n value = this.resource[this.getExpandedPredicate(path1[0])];\n } catch (e) { break }\n\n if (path1.length <= 1) break; // no dot path\n const lastPath1El = path1.pop();\n if(lastPath1El) path2.unshift(lastPath1El);\n }\n if (path2.length === 0) { // end of the path\n if (!value || !value['@id']) return value; // no value or not a resource\n return await this.getResource(value['@id'], this.clientContext, this.parentId || this.resourceId); // return complete resource\n }\n if (!value) return undefined;\n let resource = await this.getResource(value['@id'], this.clientContext, this.parentId || this.resourceId);\n\n store.subscribeResourceTo(this.resourceId, value['@id']);\n return resource ? await resource[path2.join('.')] : undefined; // return value\n }\n\n /**\n * Cache resource in the store, and return the created proxy\n * @param id\n * @param context\n * @param iriParent\n */\n async getResource(id: string, context: object, iriParent: string): Promise<Resource | null> {\n return store.getData(id, context, iriParent);\n }\n\n /**\n * Return true if the resource is a container\n */\n isContainer(): boolean {\n return this.resource[\"@type\"] == \"ldp:Container\" || this.resource[\"@type\"] == \"sib:federatedContainer\";\n }\n\n /**\n * Get all properties of a resource\n */\n getProperties(): string[] {\n return Object.keys(this.resource).map(prop => this.getCompactedPredicate(prop));\n }\n\n /**\n * Get children of container as objects\n */\n getChildren(): object[] {\n return this.resource[this.getExpandedPredicate(\"ldp:contains\")] || [];\n }\n\n /**\n * Get children of container as Proxys\n */\n getLdpContains(): CustomGetter[] {\n const children = this.resource[this.getExpandedPredicate(\"ldp:contains\")];\n return children ? children.map((res: object) => store.get(res['@id'])) : [];\n }\n\n /**\n * Get all nested resource or containers which contains datas\n */\n getSubObjects() {\n let subObjects: any = [];\n for (let p of Object.keys(this.resource)) {\n let property = this.resource[p];\n if (!this.isFullNestedResource(property)) continue; // if not a resource, stop\n if (property['@type'] == \"ldp:Container\" &&\n (property['ldp:contains'] == undefined ||\n (property['ldp:contains'].length >= 1 && !this.isFullNestedResource(property['ldp:contains'][0])))\n ) continue; // if not a full container\n subObjects.push(property)\n }\n return subObjects;\n }\n\n merge(resource: CustomGetter) {\n this.resource = {...this.getResourceData(), ...resource.getResourceData()}\n }\n\n getResourceData(): object { return this.resource }\n\n /**\n * return true if prop is a resource with an @id and some properties\n * @param prop\n */\n isFullNestedResource(prop: any): boolean {\n return prop &&\n typeof prop == \"object\" &&\n prop['@id'] != undefined &&\n Object.keys(prop).filter(p => !p.startsWith('@')).length > 0;\n }\n /**\n * return true resource seems complete\n * @param prop\n */\n isFullResource(): boolean {\n return Object.keys(this.resource).filter(p => !p.startsWith('@')).length > 0;\n }\n\n getPermissions(): string[] {\n const permissions = this.resource[this.getExpandedPredicate(\"permissions\")];\n return permissions ? permissions.map(perm => ContextParser.expandTerm(perm.mode['@type'], this.serverContext, true)) : [];\n }\n\n /**\n * Remove the resource from the cache\n */\n clearCache(): void {\n store.clearCache(this.resourceId);\n }\n\n getExpandedPredicate(property: string) { return ContextParser.expandTerm(property, this.clientContext, true) }\n getCompactedPredicate(property: string) { return ContextParser.compactIri(property, this.clientContext, true) }\n getCompactedIri(id: string) { return ContextParser.compactIri(id, this.clientContext) }\n toString() { return this.getCompactedIri(this.resource['@id']) }\n [Symbol.toPrimitive]() { return this.getCompactedIri(this.resource['@id']) }\n\n\n /**\n * Returns a Proxy which handles the different get requests\n */\n getProxy() {\n return new Proxy(this, {\n get: (resource, property) => {\n if (!this.resource) return undefined;\n if (typeof resource[property] === 'function') return resource[property].bind(resource)\n\n switch (property) {\n case '@id':\n return this.getCompactedIri(this.resource['@id']); // Compact @id if possible\n case '@type':\n return this.resource['@type']; // return synchronously\n case 'properties':\n return this.getProperties();\n case 'ldp:contains':\n return this.getLdpContains(); // returns standard arrays synchronously\n case 'permissions':\n return this.getPermissions(); // get expanded permissions\n case 'clientContext':\n return this.clientContext; // get saved client context to re-fetch easily a resource\n case 'then':\n return;\n default:\n return resource.get(property);\n }\n }\n })\n }\n}"]}
1
+ {"version":3,"sources":["store.ts"],"names":["JSONLDContextParser","PubSub","ContextParser","myParser","base_context","rdf","rdfs","ldp","foaf","name","acl","permissions","mode","geo","lat","lng","Store","constructor","storeOptions","id","resolve","handler","event","detail","resource","document","removeEventListener","cache","Map","subscriptionIndex","subscriptionVirtualContainersIndex","loadingList","Set","headers","fetch","fetchMethod","session","getData","context","idParent","localData","forceFetch","has","get","isFullResource","Promise","addEventListener","resolveResource","add","clientContext","parse","_isLocalId","fetchData","error","console","delete","serverContext","resourceProxy","CustomGetter","getProxy","cacheGraph","dispatchEvent","CustomEvent","fetchAuthn","iri","options","authenticated","then","fn","_convertHeaders","response","method","ok","status","err","Error","_getAbsoluteIri","_getLanguage","credentials","json","key","parentContext","parentId","properties","merge","set","getSubObjects","res","newParentContext","getChildren","cacheChildrenPromises","subscribeResourceTo","push","all","match","_fetch","body","JSON","stringify","store","clearCache","_updateResource","includes","expandedId","_getExpandedId","purge","nestedResources","getNestedResources","resourcesToRefresh","resourcesToNotify","refreshResources","resourceIds","notifyResources","filter","resourceWithContexts","map","resourceId","publish","cachedResource","isContainer","nestedProperties","excludeKeys","p","Object","keys","forEach","child","setLocalData","post","put","patch","log","catch","warn","fullURL","URL","containerUrl","hostname","pathname","split","deleted","headersObject","Headers","value","entries","expandTerm","startsWith","nestedResourceId","existingSubscriptions","subscribeVirtualContainerTo","virtualContainerId","parentIri","location","href","_resourceIsComplete","length","localStorage","getItem","window","navigator","language","slice","selectLanguage","selectedLanguageCode","setItem","sibStore","sibAuth","querySelector","sibAuthDefined","customElements","whenDefined","localName","getFetch","Symbol","toPrimitive","expandProperties","prop","objectReplaceProperty","object","oldProp","newProp","defineProperty","getOwnPropertyDescriptor","path","path1","path2","getResource","getExpandedPredicate","e","lastPath1El","pop","unshift","undefined","join","iriParent","getProperties","getCompactedPredicate","getLdpContains","children","subObjects","property","isFullNestedResource","getResourceData","getPermissions","permissionPredicate","perm","compactIri","getCompactedIri","toString","Proxy","bind"],"mappings":"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","sourcesContent":["import JSONLDContextParser from 'jsonld-context-parser';\n//@ts-ignore\nimport PubSub from 'https://cdn.skypack.dev/pubsub-js';\nimport type { Resource } from '../../mixins/interfaces';\n\nconst ContextParser = JSONLDContextParser.ContextParser;\nconst myParser = new ContextParser();\n\nexport const base_context = {\n '@vocab': 'http://happy-dev.fr/owl/#',\n rdf: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n rdfs: 'http://www.w3.org/2000/01/rdf-schema#',\n ldp: 'http://www.w3.org/ns/ldp#',\n foaf: 'http://xmlns.com/foaf/0.1/',\n name: 'rdfs:label',\n acl: 'http://www.w3.org/ns/auth/acl#',\n permissions: 'acl:accessControl',\n mode: 'acl:mode',\n geo: \"http://www.w3.org/2003/01/geo/wgs84_pos#\",\n lat: \"geo:lat\",\n lng: \"geo:long\"\n};\n\nclass Store {\n cache: Map<string, any>;\n subscriptionIndex: Map<string, any>; // index of all the containers per resource\n subscriptionVirtualContainersIndex: Map<string, any>; // index of all the containers per resource\n loadingList: Set<String>;\n headers: object;\n fetch: Promise<any> | undefined;\n session: Promise<any> | undefined;\n\n constructor(private storeOptions: StoreOptions) {\n this.cache = new Map();\n this.subscriptionIndex = new Map();\n this.subscriptionVirtualContainersIndex = new Map();\n this.loadingList = new Set();\n this.headers = {'Content-Type': 'application/ld+json'};\n this.fetch = this.storeOptions.fetchMethod;\n this.session = this.storeOptions.session;\n }\n\n /**\n * Fetch data and cache it\n * @param id - uri of the resource to fetch\n * @param context - context used to expand id and predicates when accessing the resource\n * @param idParent - uri of the parent caller used to expand uri for local files\n * @param localData - data to put in cache\n * @param forceFetch - force the fetch of data\n *\n * @returns The fetched resource\n *\n * @async\n */\n\n async getData(id: string, context:any = {}, idParent = \"\", localData?: object, forceFetch: boolean = false): Promise<Resource|null> {\n if (localData == null && this.cache.has(id) && !this.loadingList.has(id)) {\n const resource = this.get(id);\n if (resource && resource.isFullResource() && !forceFetch) return resource; // if resource is not complete, re-fetch it\n }\n\n return new Promise(async (resolve) => {\n document.addEventListener('resourceReady', this.resolveResource(id, resolve));\n\n if (this.loadingList.has(id)) return;\n this.loadingList.add(id);\n\n // Generate proxy\n const clientContext = await myParser.parse(context);\n let resource: any = null;\n if(this._isLocalId(id)) {\n if(localData == null) localData = {};\n localData[\"@id\"] = id;\n resource = localData;\n } else try {\n resource = localData || await this.fetchData(id, clientContext, idParent);\n } catch (error) { console.error(error) }\n if (!resource) {\n this.loadingList.delete(id);\n resolve(null);\n return;\n }\n const serverContext = await myParser.parse([resource['@context'] || {}]);\n const resourceProxy = new CustomGetter(id, resource, clientContext, serverContext, idParent).getProxy();\n\n // Cache proxy\n await this.cacheGraph(id, resourceProxy, clientContext, serverContext, idParent || id);\n this.loadingList.delete(id);\n document.dispatchEvent(new CustomEvent('resourceReady', { detail: { id: id, resource: this.get(id) } }));\n });\n }\n\n async fetchAuthn(iri: string, options: any) {\n let authenticated = false;\n if (this.session) authenticated = await this.session;\n\n if (this.fetch && authenticated) { // authenticated\n return this.fetch.then(fn => fn(iri, options))\n } else { // anonymous\n if (options.headers) options.headers = this._convertHeaders(options.headers);\n return fetch(iri, options).then(function(response) {\n if (options.method === \"PURGE\" && !response.ok && response.status === 404) {\n const err = new Error(\"PURGE call is returning 404\");\n throw err;\n }\n return response;\n });\n }\n }\n\n async fetchData(id: string, context = {}, idParent = \"\") {\n const iri = this._getAbsoluteIri(id, context, idParent);\n const headers = { ...this.headers, 'accept-language': this._getLanguage() };\n return this.fetchAuthn(iri, {\n method: 'GET',\n headers: headers,\n credentials: 'include'\n }).then(response => {\n if (!response.ok) return;\n return response.json()\n })\n }\n\n async cacheGraph(key: string, resource: any, clientContext: object, parentContext: object, parentId: string) {\n if (resource.properties) { // if proxy, cache it\n if (this.get(key)) { // if already cached, merge data\n this.cache.get(key).merge(resource);\n } else { // else, put in cache\n this.cache.set(key, resource);\n }\n }\n\n // Cache nested resources\n if (resource.getSubObjects) {\n for (let res of resource.getSubObjects()) {\n let newParentContext = parentContext;\n // If additional context in resource, use it to expand properties\n if (res['@context']) newParentContext = await myParser.parse({ ...parentContext, ...res['@context'] });\n const resourceProxy = new CustomGetter(res['@id'], res, clientContext, newParentContext, parentId).getProxy();\n // this.subscribeResourceTo(resource['@id'], res['@id']); // removed to prevent useless updates\n await this.cacheGraph(res['@id'], resourceProxy, clientContext, parentContext, parentId);\n }\n }\n\n // Cache children of container\n if (resource['@type'] == \"ldp:Container\" && resource.getChildren) {\n const cacheChildrenPromises: Promise<void>[] = [];\n for (let res of resource.getChildren()) {\n this.subscribeResourceTo(resource['@id'], res['@id']);\n cacheChildrenPromises.push(this.cacheGraph(res['@id'], res, clientContext, parentContext, parentId))\n }\n await Promise.all(cacheChildrenPromises);\n return;\n }\n\n // Create proxy, (fetch data) and cache resource\n if (resource['@id'] && !resource.properties) {\n if (resource['@id'].match(/^b\\d+$/)) return; // not anonymous node\n // Fetch data if\n if (resource['@type'] === \"sib:federatedContainer\" && resource['@cache'] !== 'false') { // if object is federated container\n await this.getData(resource['@id'], clientContext, parentId); // then init graph\n return;\n }\n const resourceProxy = new CustomGetter(resource['@id'], resource, clientContext, parentContext, parentId).getProxy();\n await this.cacheGraph(key, resourceProxy, clientContext, parentContext, parentId);\n }\n }\n\n /**\n * Update fetch\n * @param method - 'POST', 'PATCH', 'PUT', '_LOCAL'\n * @param resource - resource to send\n * @param id - uri to update\n * @returns - object\n */\n async _fetch(method: string, resource: object, id: string): Promise<any> {\n if (method !== '_LOCAL')\n return this.fetchAuthn(id, {\n method: method,\n headers: this.headers,\n body: JSON.stringify(resource),\n credentials: 'include'\n });\n\n const resourceProxy = store.get(id);\n const clientContext = resourceProxy ? resourceProxy.clientContext : resource['@context']\n this.clearCache(id);\n await this.getData(id, clientContext, '', resource);\n return {ok: true}\n }\n\n async _updateResource(method: string, resource: object, id: string) {\n if (!['POST', 'PUT', 'PATCH', '_LOCAL'].includes(method)) throw new Error('Error: method not allowed');\n\n const context = await myParser.parse([resource['@context'] || {}]); // parse context before expandTerm\n const expandedId = this._getExpandedId(id, context);\n return this._fetch(method, resource, id).then(async(response) => {\n if (response.ok) {\n if(method !== '_LOCAL') {\n await this.purge(id);\n this.clearCache(expandedId);\n } // clear cache\n this.getData(expandedId, resource['@context']).then(async () => { // re-fetch data\n const nestedResources = await this.getNestedResources(resource, id);\n const resourcesToRefresh = this.subscriptionVirtualContainersIndex.get(expandedId) || [];\n const resourcesToNotify = this.subscriptionIndex.get(expandedId) || [];\n\n return this.refreshResources([...nestedResources, ...resourcesToRefresh]) // refresh related resources\n .then(resourceIds => this.notifyResources([expandedId, ...resourceIds, ...resourcesToNotify])); // notify components\n });\n return response.headers?.get('Location') || null;\n } else {\n throw response;\n }\n });\n }\n\n /**\n * Clear cache and refetch data for a list of ids\n * @param resourceIds -\n * @returns - all the resource ids\n */\n async refreshResources(resourceIds: string[]) {\n resourceIds = [...new Set(resourceIds.filter(id => this.cache.has(id)))]; // remove duplicates and not cached resources\n const resourceWithContexts = resourceIds.map(resourceId => ({ \"id\": resourceId, \"context\": store.get(resourceId)?.clientContext }));\n for (const resource of resourceWithContexts) {\n if (!this._isLocalId(resource.id)) this.clearCache(resource.id);\n }\n await Promise.all(resourceWithContexts.map(({ id, context }) => this.getData(id, context || base_context)))\n return resourceIds;\n }\n /**\n * Notifies all components for a list of ids\n * @param resourceIds -\n */\n async notifyResources(resourceIds: string[]) {\n resourceIds = [...new Set(resourceIds)]; // remove duplicates\n for (const id of resourceIds) PubSub.publish(id);\n }\n\n /**\n * Return id of nested properties of a resource\n * @param resource - object\n * @param id - string\n */\n async getNestedResources(resource: object, id: string) {\n const cachedResource = store.get(id);\n if (!cachedResource || cachedResource.isContainer()) return [];\n let nestedProperties:any[] = [];\n const excludeKeys = ['@context'];\n for (let p of Object.keys(resource)) {\n if (resource[p]\n && typeof resource[p] === 'object'\n && !excludeKeys.includes(p)\n && resource[p]['@id']) {\n nestedProperties.push(resource[p]['@id']);\n }\n }\n return nestedProperties;\n }\n\n /**\n * Returns the resource with id from the cache\n * @param id - id of the resource to retrieve\n *\n * @returns Resource (Proxy) if in the cache, null otherwise\n */\n get(id: string): Resource | null {\n return this.cache.get(id) || null;\n }\n\n\n /**\n * Removes a resource from the cache\n * @param id - id of the resource to remove from the cache\n */\n clearCache(id: string): void {\n if (this.cache.has(id)) {\n // For federation, clear each source\n const resource = this.cache.get(id);\n if (resource['@type'] === 'ldp:Container') {\n resource['ldp:contains'].forEach((child: object) => {\n if (child && child['@type'] === 'ldp:Container') this.cache.delete(child['@id'])\n })\n }\n\n this.cache.delete(id);\n }\n }\n\n /**\n * Send data to create a local resource in a container\n * @param resource - resource to create\n * @param id - uri of the container to add resource. should start with ``\n *\n * @returns id of the posted resource\n */\n async setLocalData(resource: object, id: string): Promise<string | null> {\n return this._updateResource('_LOCAL', resource, id);\n }\n\n /**\n * Send a POST request to create a resource in a container\n * @param resource - resource to create\n * @param id - uri of the container to add resource\n *\n * @returns id of the posted resource\n */\n async post(resource: object, id: string): Promise<string | null> {\n return this._updateResource('POST', resource, id);\n }\n\n /**\n * Send a PUT request to edit a resource\n * @param resource - resource data to send\n * @param id - uri of the resource to edit\n *\n * @returns id of the edited resource\n */\n async put(resource: object, id: string): Promise<string | null> {\n return this._updateResource('PUT', resource, id);\n }\n\n /**\n * Send a PATCH request to edit a resource\n * @param resource - resource data to send\n * @param id - uri of the resource to patch\n *\n * @returns id of the edited resource\n */\n async patch(resource: object, id: string): Promise<string | null> {\n return this._updateResource('PATCH', resource, id);\n }\n\n /**\n * Send a PURGE request to remove a resource from REDIS AD cache\n * @param id - uri of the resource to patch\n *\n * @returns id of the edited resource\n */\n async purge(id: string) {\n console.log('Purging resource ' + id);\n await this.fetchAuthn(id, {\n method: \"PURGE\",\n headers: this.headers\n }).catch(function(error) {\n console.warn('No purge method allowed: ' + error)\n });\n\n try {\n const fullURL = new URL(id);\n console.log(\"Full URL object\", fullURL);\n\n var containerUrl = fullURL.hostname + (fullURL.pathname.split('/'))[0];\n console.log(\"Container URL for wildcard purge\", containerUrl);\n const headers = { ...this.headers, 'X-Cache-Purge-Match': 'wildcard' };\n console.log(\"Headers\", headers);\n await this.fetchAuthn(containerUrl + '/*', {\n method: \"PURGE\",\n headers: headers\n }).catch(function(error) {\n console.warn('No purge method allowed: ' + error)\n });\n } catch (error) {\n console.warn('The resource ID is not a complete URL: ' + error);\n return;\n }\n }\n\n /**\n * Send a DELETE request to delete a resource\n * @param id - uri of the resource to delete\n * @param context - can be used to expand id\n *\n * @returns id of the deleted resource\n */\n async delete(id: string, context: object = {}) {\n const expandedId = this._getExpandedId(id, context);\n const deleted = await this.fetchAuthn(expandedId, {\n method: 'DELETE',\n headers: this.headers,\n credentials: 'include'\n });\n await this.purge(id);\n\n const resourcesToNotify = this.subscriptionIndex.get(expandedId) || [];\n const resourcesToRefresh = this.subscriptionVirtualContainersIndex.get(expandedId) || [];\n\n this.refreshResources([...resourcesToNotify, ...resourcesToRefresh])\n .then(resourceIds => this.notifyResources(resourceIds));\n\n return deleted;\n }\n\n /**\n * Convert headers object to Headers\n * @param headersObject - object\n * @returns {Headers}\n */\n _convertHeaders(headersObject: object): Headers {\n const headers = new Headers();\n for (const [key, value] of Object.entries(headersObject)){\n headers.set(key, value as string);\n }\n return headers;\n }\n\n _getExpandedId(id: string, context: object) {\n return (context && Object.keys(context)) ? ContextParser.expandTerm(id, context) : id;\n }\n\n _isLocalId(id: string) {\n return id.startsWith('store://local.');\n }\n\n /**\n * Make a resource listen changes of another one\n * @param resourceId - id of the resource which needs to be updated\n * @param nestedResourceId - id of the resource which will change\n */\n subscribeResourceTo(resourceId: string, nestedResourceId: string) {\n const existingSubscriptions = this.subscriptionIndex.get(nestedResourceId) || [];\n this.subscriptionIndex.set(nestedResourceId, [...new Set([...existingSubscriptions, resourceId])])\n }\n\n /**\n * Make a virtual container listen for changes of a resource\n * @param virtualContainerId - id of the container which needs to be updated\n * @param nestedResourceId - id of the resource which will change\n */\n subscribeVirtualContainerTo(virtualContainerId: string, nestedResourceId: string) {\n const existingSubscriptions = this.subscriptionVirtualContainersIndex.get(nestedResourceId) || [];\n this.subscriptionVirtualContainersIndex.set(nestedResourceId, [...new Set([...existingSubscriptions, virtualContainerId])])\n }\n\n /**\n * Return absolute IRI of the resource\n * @param id\n * @param context\n * @param parentId\n */\n _getAbsoluteIri(id: string, context: object, parentId: string): string {\n let iri = ContextParser.expandTerm(id, context); // expand if reduced ids\n if (parentId) { // and get full URL from parent caller for local files\n let parentIri = new URL(parentId, document.location.href).href;\n iri = new URL(iri, parentIri).href;\n } else {\n iri = new URL(iri, document.location.href).href;\n }\n return iri;\n }\n\n /**\n * Check if object is a full resource\n * @param resource\n */\n _resourceIsComplete(resource: object) {\n return !!(Object.keys(resource).filter(p => !p.startsWith('@')).length > 0 && resource['@id'])\n }\n\n /**\n * Return language of the users\n */\n _getLanguage() {\n return localStorage.getItem('language') || window.navigator.language.slice(0,2);\n }\n\n /**\n * Save the preferred language of the user\n * @param selectedLanguageCode\n */\n selectLanguage(selectedLanguageCode: string) {\n localStorage.setItem('language', selectedLanguageCode);\n }\n\n resolveResource = function(id: string, resolve) {\n const handler = function(event) {\n if (event.detail.id === id) {\n resolve(event.detail.resource);\n // TODO : callback\n document.removeEventListener('resourceReady', handler);\n }\n };\n return handler;\n };\n}\n\nlet store: Store;\nif (window.sibStore) {\n store = window.sibStore;\n} else {\n const sibAuth = document.querySelector('sib-auth');\n const storeOptions: StoreOptions = {}\n\n if (sibAuth) {\n const sibAuthDefined = customElements.whenDefined(sibAuth.localName);\n storeOptions.session = sibAuthDefined.then(() => (sibAuth as any).session)\n storeOptions.fetchMethod = sibAuthDefined.then(() => (sibAuth as any).getFetch())\n }\n\n store = new Store(storeOptions);\n window.sibStore = store;\n}\n\nexport {\n store\n};\n\n\nclass CustomGetter {\n resource: any; // content of the requested resource\n resourceId: string;\n clientContext: object; // context given by the app\n serverContext: object; // context given by the server\n parentId: string; // id of the parent resource, used to get the absolute url of the current resource\n\n constructor(resourceId: string, resource: object, clientContext: object, serverContext: object = {}, parentId: string = \"\") {\n this.clientContext = clientContext;\n this.serverContext = serverContext;\n this.parentId = parentId;\n this.resource = this.expandProperties({ ...resource }, serverContext);\n this.resourceId = resourceId;\n }\n\n /**\n * Expand all predicates of a resource with a given context\n * @param resource: object\n * @param context: object\n */\n expandProperties(resource: object, context: object | string) {\n for (let prop of Object.keys(resource)) {\n if (!prop) continue;\n this.objectReplaceProperty(resource, prop, ContextParser.expandTerm(prop, context as JSONLDContextParser.IJsonLdContextNormalized, true));\n }\n return resource\n }\n\n /**\n * Change the key of an object\n * @param object: object\n * @param oldProp: string - current key\n * @param newProp: string - new key to set\n */\n objectReplaceProperty(object: object, oldProp: string, newProp: string) {\n if (newProp !== oldProp) {\n Object.defineProperty(\n object,\n newProp,\n Object.getOwnPropertyDescriptor(object, oldProp) || ''\n );\n delete object[oldProp];\n }\n }\n\n /**\n * Get the property of a resource for a given path\n * @param path: string\n */\n async get(path: any) {\n if (!path) return;\n const path1: string[] = path.split('.');\n const path2: string[] = [];\n let value: any;\n if (!this.isFullResource()) { // if resource is not complete, fetch it first\n await this.getResource(this.resourceId, this.clientContext, this.parentId);\n }\n while (true) {\n try {\n value = this.resource[this.getExpandedPredicate(path1[0])];\n } catch (e) { break }\n\n if (path1.length <= 1) break; // no dot path\n const lastPath1El = path1.pop();\n if(lastPath1El) path2.unshift(lastPath1El);\n }\n if (path2.length === 0) { // end of the path\n if (!value || !value['@id']) return value; // no value or not a resource\n return await this.getResource(value['@id'], this.clientContext, this.parentId || this.resourceId); // return complete resource\n }\n if (!value) return undefined;\n let resource = await this.getResource(value['@id'], this.clientContext, this.parentId || this.resourceId);\n\n store.subscribeResourceTo(this.resourceId, value['@id']);\n return resource ? await resource[path2.join('.')] : undefined; // return value\n }\n\n /**\n * Cache resource in the store, and return the created proxy\n * @param id\n * @param context\n * @param iriParent\n * @param forceFetch\n */\n async getResource(id: string, context: object, iriParent: string, forceFetch: boolean = false): Promise<Resource | null> {\n return store.getData(id, context, iriParent, undefined, forceFetch);\n }\n\n /**\n * Return true if the resource is a container\n */\n isContainer(): boolean {\n return this.resource[\"@type\"] == \"ldp:Container\" || this.resource[\"@type\"] == \"sib:federatedContainer\";\n }\n\n /**\n * Get all properties of a resource\n */\n getProperties(): string[] {\n return Object.keys(this.resource).map(prop => this.getCompactedPredicate(prop));\n }\n\n /**\n * Get children of container as objects\n */\n getChildren(): object[] {\n return this.resource[this.getExpandedPredicate(\"ldp:contains\")] || [];\n }\n\n /**\n * Get children of container as Proxys\n */\n getLdpContains(): CustomGetter[] {\n const children = this.resource[this.getExpandedPredicate(\"ldp:contains\")];\n return children ? children.map((res: object) => store.get(res['@id'])) : [];\n }\n\n /**\n * Get all nested resource or containers which contains datas\n */\n getSubObjects() {\n let subObjects: any = [];\n for (let p of Object.keys(this.resource)) {\n let property = this.resource[p];\n if (!this.isFullNestedResource(property)) continue; // if not a resource, stop\n if (property['@type'] == \"ldp:Container\" &&\n (property['ldp:contains'] == undefined ||\n (property['ldp:contains'].length >= 1 && !this.isFullNestedResource(property['ldp:contains'][0])))\n ) continue; // if not a full container\n subObjects.push(property)\n }\n return subObjects;\n }\n\n merge(resource: CustomGetter) {\n this.resource = {...this.getResourceData(), ...resource.getResourceData()}\n }\n\n getResourceData(): object { return this.resource }\n\n /**\n * return true if prop is a resource with an @id and some properties\n * @param prop\n */\n isFullNestedResource(prop: any): boolean {\n return prop &&\n typeof prop == \"object\" &&\n prop['@id'] != undefined &&\n Object.keys(prop).filter(p => !p.startsWith('@')).length > 0;\n }\n /**\n * return true resource seems complete\n * @param prop\n */\n isFullResource(): boolean {\n return Object.keys(this.resource).filter(p => !p.startsWith('@')).length > 0;\n }\n\n async getPermissions(): Promise<string[]> {\n const permissionPredicate = this.getExpandedPredicate(\"permissions\");\n let permissions = this.resource[permissionPredicate];\n if (!permissions) { // if no permission, re-fetch data\n await this.getResource(this.resourceId, this.clientContext, this.parentId, true);\n permissions = this.resource[permissionPredicate];\n }\n return permissions ? permissions.map(perm => ContextParser.expandTerm(perm.mode['@type'], this.serverContext, true)) : [];\n }\n\n /**\n * Remove the resource from the cache\n */\n clearCache(): void {\n store.clearCache(this.resourceId);\n }\n\n getExpandedPredicate(property: string) { return ContextParser.expandTerm(property, this.clientContext, true) }\n getCompactedPredicate(property: string) { return ContextParser.compactIri(property, this.clientContext, true) }\n getCompactedIri(id: string) { return ContextParser.compactIri(id, this.clientContext) }\n toString() { return this.getCompactedIri(this.resource['@id']) }\n [Symbol.toPrimitive]() { return this.getCompactedIri(this.resource['@id']) }\n\n\n /**\n * Returns a Proxy which handles the different get requests\n */\n getProxy() {\n return new Proxy(this, {\n get: (resource, property) => {\n if (!this.resource) return undefined;\n if (typeof resource[property] === 'function') return resource[property].bind(resource)\n\n switch (property) {\n case '@id':\n return this.getCompactedIri(this.resource['@id']); // Compact @id if possible\n case '@type':\n return this.resource['@type']; // return synchronously\n case 'properties':\n return this.getProperties();\n case 'ldp:contains':\n return this.getLdpContains(); // returns standard arrays synchronously\n case 'permissions':\n return this.getPermissions(); // get expanded permissions\n case 'clientContext':\n return this.clientContext; // get saved client context to re-fetch easily a resource\n case 'then':\n return;\n default:\n return resource.get(property);\n }\n }\n })\n }\n}"]}
@@ -286,7 +286,7 @@ const WidgetMixin = {
286
286
  };
287
287
  const escapedField = this.getEscapedField(field); // transfer all multiple-[field]-[attr] attributes as [attr] for multiple widget [field]
288
288
 
289
- const multipleAttributes = ['fields', 'label', 'widget', 'add-label', 'remove-label', 'next', 'empty-widget'];
289
+ const multipleAttributes = ['fields', 'label', 'widget', 'add-label', 'remove-label', 'next', 'empty-widget', 'add-class', 'remove-class'];
290
290
 
291
291
  for (let attr of multipleAttributes) this.addToAttributes("multiple-".concat(escapedField, "-").concat(attr), attr, attrs); // transfer all [attr]-[field] attributes as [attr] attribute for widget [field]
292
292
 
@@ -294,7 +294,7 @@ const WidgetMixin = {
294
294
  const defaultAttributes = ['range', 'enum', 'label', 'placeholder', 'class',,
295
295
  /* 'widget', */
296
296
  'required', 'editable', 'autocomplete', 'upload-url', 'option-label', 'option-value', 'order-by', // deprecated. Remove in 0.15
297
- 'each-label', 'order-asc', 'order-desc', 'min', 'max', 'pattern', 'title', 'start-value', 'end-value', 'alt', 'step', 'maxlength', 'minlength', 'search-text', 'search-placeholder'];
297
+ 'each-label', 'order-asc', 'order-desc', 'min', 'max', 'pattern', 'title', 'start-value', 'end-value', 'alt', 'step', 'maxlength', 'minlength', 'search-text', 'search-placeholder', 'link-text'];
298
298
 
299
299
  for (let attr of defaultAttributes) this.addToAttributes("".concat(attr, "-").concat(escapedField), attr, attrs);
300
300
 
@@ -1 +1 @@
1
- {"version":3,"sources":["widgetMixin.ts"],"names":["spread","preHTML","parseFieldsString","findClosingBracketMatchIndex","newWidgetFactory","WidgetType","html","render","ifDefined","WidgetMixin","name","use","attributes","fields","type","String","default","undefined","initialState","nameWidgets","_div","created","attached","dataSrc","resource","noRender","populate","parentElement","div","document","createElement","element","appendChild","value","widgets","map","querySelector","getFields","attr","isContainer","res","console","error","Error","prop","properties","startsWith","push","getAction","field","action","getAttribute","editable","hasAttribute","getSetRegexp","RegExp","getSet","setString","match","firstSetBracket","indexOf","length","lastSetBracket","set","substring","isSet","foundSets","isString","fetchValue","getValue","escapedField","getEscapedField","resourceValue","empty","widgetFromTagName","tagName","CUSTOM","USER","customElements","get","NATIVE","getWidget","widget","defaultWidget","defaultSetWidget","multiple","attribute","defaultMultipleWidget","addToAttributes","lookForAttr","setAttrKey","widgetAttributes","attrs","multipleAttributes","defaultAttributes","addableAttributes","Array","from","filter","a","replace","resourceId","createWidgetTemplate","transformAttributes","createString","createSet","currentResource","widgetMeta","widgetTemplate","class","defineAttribute","setAttribute","setWidget","setAttributes","initializing","Object","keys","component","setFields","hasOnlyEmpty","valueSet","widgetsTemplate","Promise","all","template","slice"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAASA,MAAT,EAAiBC,OAAjB,QAAgC,qBAAhC;AACA,SAASC,iBAAT,EAA4BC,4BAA5B,QAAgE,iBAAhE;AACA,SAASC,gBAAT,QAAiC,mCAAjC;AACA,SAA0BC,UAA1B,QAAsD,cAAtD;AACA,SAASC,IAAT,EAAeC,MAAf,QAA6C,UAA7C;AACA,SAASC,SAAT,QAA0B,gCAA1B;AAEA,MAAMC,WAAW,GAAG;AAClBC,EAAAA,IAAI,EAAE,cADY;AAElBC,EAAAA,GAAG,EAAE,EAFa;AAGlBC,EAAAA,UAAU,EAAE;AACVC,IAAAA,MAAM,EAAE;AACNC,MAAAA,IAAI,EAAEC,MADA;AAENC,MAAAA,OAAO,EAAEC;AAFH;AADE,GAHM;AASlBC,EAAAA,YAAY,EAAE;AACZC,IAAAA,WAAW,EAAE,IADD;AAEZC,IAAAA,IAAI,EAAE;AAFM,GATI;;AAalBC,EAAAA,OAAO,GAAS;AACd,SAAKF,WAAL,GAAmB,EAAnB;AACD,GAfiB;;AAgBlBG,EAAAA,QAAQ,GAAS;AACf,QAAI,CAAC,KAAKC,OAAN,IAAiB,CAAC,KAAKC,QAAvB,IAAmC,KAAKC,QAAL,KAAkB,IAAzD,EAA+D,KAAKC,QAAL;AAChE,GAlBiB;;AAmBlB,MAAIC,aAAJ,GAA4B;AAC1B,WAAO,KAAP;AACD,GArBiB;;AAsBlB,MAAIC,GAAJ,GAAuB;AACrB,QAAI,KAAKR,IAAT,EAAe,OAAO,KAAKA,IAAZ;AACf,SAAKA,IAAL,GAAYS,QAAQ,CAACC,aAAT,CAAuB,KAAKH,aAA5B,CAAZ;AACA,SAAKI,OAAL,CAAaC,WAAb,CAAyB,KAAKZ,IAA9B;AACA,WAAO,KAAKA,IAAZ;AACD,GA3BiB;;AA4BlB,MAAIQ,GAAJ,CAAQK,KAAR,EAAe;AACb,SAAKb,IAAL,GAAYa,KAAZ;AACD,GA9BiB;;AA+BlB,MAAIC,OAAJ,GAAc;AACZ,WAAO,KAAKf,WAAL,CAAiBgB,GAAjB,CAAsBzB,IAAD,IAAkB,KAAKqB,OAAL,CAAaK,aAAb,mBAAqC1B,IAArC,SAAvC,CAAP;AACD,GAjCiB;;AAkClB;AACF;AACA;AACE,QAAM2B,SAAN,GAAoC;AAAE;AACpC,UAAMC,IAAI,GAAG,KAAKzB,MAAlB;AACA,QAAIyB,IAAI,KAAK,EAAb,EAAiB,OAAO,EAAP;AACjB,QAAIA,IAAJ,EAAU,OAAOpC,iBAAiB,CAACoC,IAAD,CAAxB;AAEV,QAAId,QAAQ,GAAG,KAAKA,QAApB;;AACA,QAAIA,QAAQ,IAAIA,QAAQ,CAACe,WAAT,EAAhB,EAAwC;AAAE;AACxC,WAAK,IAAIC,GAAT,IAAgBhB,QAAQ,CAAC,cAAD,CAAxB,EAA0C;AACxCA,QAAAA,QAAQ,GAAGgB,GAAX;AACA;AACD;AACF;;AAED,QAAI,CAAC,KAAKjB,OAAV,EAAmBkB,OAAO,CAACC,KAAR,CAAc,IAAIC,KAAJ,CAAU,uCAAV,CAAd;AACnB,QAAG,CAACnB,QAAJ,EAAc,OAAO,EAAP;AAEd,QAAIX,MAAgB,GAAG,EAAvB;;AACA,SAAK,MAAM+B,IAAX,IAAmBpB,QAAQ,CAACqB,UAA5B,EAAwC;AACtC,UAAK,CAACD,IAAI,CAACE,UAAL,CAAgB,GAAhB,CAAD,IAAyB,EAAEF,IAAI,KAAK,aAAX,CAA1B,KAAwD,MAAMpB,QAAQ,CAACoB,IAAD,CAAtE,CAAJ,EAAkF/B,MAAM,CAACkC,IAAP,CAAYH,IAAZ;AACnF;;AACD,WAAO/B,MAAP;AACD,GA1DiB;;AA2DlB;AACF;AACA;AACA;AACEmC,EAAAA,SAAS,CAACC,KAAD,EAAwB;AAC/B,UAAMC,MAAM,GAAG,KAAKnB,OAAL,CAAaoB,YAAb,CAA0B,YAAYF,KAAtC,CAAf;AACA,WAAOC,MAAP;AACD,GAlEiB;;AAmElB;AACF;AACA;AACA;AACEE,EAAAA,QAAQ,CAACH,KAAD,EAAwB;AAC9B,WAAO,KAAKlB,OAAL,CAAasB,YAAb,CAA0B,cAAcJ,KAAxC,CAAP;AACD,GAzEiB;;AA0ElB;AACF;AACA;AACA;AACEK,EAAAA,YAAY,CAACL,KAAD,EAAgB;AAC1B,WAAO,IAAIM,MAAJ,8BAAiCN,KAAjC,cAAiD,GAAjD,CAAP;AACD,GAhFiB;;AAiFlB;AACF;AACA;AACA;AACEO,EAAAA,MAAM,CAACP,KAAD,EAA0B;AAC9B,UAAMQ,SAAS,GAAG,KAAK5C,MAAL,CAAY6C,KAAZ,CAAkB,KAAKJ,YAAL,CAAkBL,KAAlB,CAAlB,CAAlB;AACA,QAAI,CAACQ,SAAL,EAAgB,OAAO,EAAP;AAChB,UAAME,eAAe,GAAG,KAAK9C,MAAL,CAAY+C,OAAZ,CAAoBH,SAAS,CAAC,CAAD,CAA7B,IAAqCA,SAAS,CAAC,CAAD,CAAT,CAAaI,MAAlD,GAA4D,CAApF;AACA,UAAMC,cAAc,GAAG3D,4BAA4B,CAAC,KAAKU,MAAN,EAAc8C,eAAd,CAAnD;AACA,UAAMI,GAAG,GAAG,KAAKlD,MAAL,CAAYmD,SAAZ,CAAsBL,eAAe,GAAG,CAAxC,EAA2CG,cAA3C,CAAZ;AACA,WAAO5D,iBAAiB,CAAC6D,GAAD,CAAxB;AACD,GA5FiB;;AA6FlB;AACF;AACA;AACA;AACEE,EAAAA,KAAK,CAAChB,KAAD,EAAyB;AAC5B,QAAI,CAAC,KAAKpC,MAAV,EAAkB,OAAO,KAAP;AAClB,QAAIqD,SAAS,GAAG,KAAKrD,MAAL,CAAY6C,KAAZ,CAAkB,KAAKJ,YAAL,CAAkBL,KAAlB,CAAlB,CAAhB;AACA,WAAOiB,SAAS,GAAGA,SAAS,CAACL,MAAV,GAAmB,CAAtB,GAA0B,KAA1C;AACD,GArGiB;;AAsGlBM,EAAAA,QAAQ,CAAClB,KAAD,EAAyB;AAC/B,WAAOA,KAAK,CAACH,UAAN,CAAiB,IAAjB,KAA0BG,KAAK,CAACH,UAAN,CAAiB,IAAjB,CAAjC;AACD,GAxGiB;;AAyGlB;AACF;AACA;AACA;AACA;AACE,QAAMsB,UAAN,CAAiBnB,KAAjB,EAAgCzB,QAAhC,EAAoD;AAClD,WAAOA,QAAQ,IAAI,CAACA,QAAQ,CAACe,WAAT,EAAb,GAAsC,MAAMf,QAAQ,CAACyB,KAAD,CAApD,GAA8DhC,SAArE;AACD,GAhHiB;;AAiHlB;AACF;AACA;AACA;AACE,QAAMoD,QAAN,CAAepB,KAAf,EAA8BzB,QAA9B,EAAkD;AAChD,UAAM8C,YAAY,GAAG,KAAKC,eAAL,CAAqBtB,KAArB,CAArB;;AACA,QAAI,KAAKD,SAAL,CAAesB,YAAf,CAAJ,EAAkC;AAChC,aAAO,KAAKtB,SAAL,CAAesB,YAAf,CAAP;AACD;;AACD,QAAI,KAAKvC,OAAL,CAAasB,YAAb,CAA0B,WAAWJ,KAArC,CAAJ,EAAiD;AAC/C,aAAO,KAAKlB,OAAL,CAAaoB,YAAb,CAA0B,WAAWF,KAArC,CAAP;AACD;;AACD,QAAIuB,aAAa,GAAG,MAAM,KAAKJ,UAAL,CAAgBnB,KAAhB,EAAuBzB,QAAvB,CAA1B,CARgD,CAUhD;;AACA,QAAIgD,aAAa,KAAKvD,SAAlB,IAA+BuD,aAAa,KAAK,EAAjD,IAAuDA,aAAa,KAAK,IAA7E,EAAmF;AACjF,aAAO,KAAKzC,OAAL,CAAasB,YAAb,CAA0B,aAAaJ,KAAvC,IACL,KAAKlB,OAAL,CAAaoB,YAAb,CAA0B,aAAaF,KAAvC,CADK,GAC2C,EADlD;AAGF,WAAOuB,aAAP;AACD,GArIiB;;AAsIlBC,EAAAA,KAAK,GAAS,CAAE,CAtIE;;AAuIlB;AACF;AACA;AACA;AACEC,EAAAA,iBAAiB,CAACC,OAAD,EAAkB;AACjC,QAAI7D,IAAI,GAAG6D,OAAO,CAAC7B,UAAR,CAAmB,OAAnB,IAA8BzC,UAAU,CAACuE,MAAzC,GAAkDvE,UAAU,CAACwE,IAAxE;;AACA,QAAI,CAACC,cAAc,CAACC,GAAf,CAAmBJ,OAAnB,CAAL,EAAkC;AAAE;AAClC,UAAIA,OAAO,CAAC7B,UAAR,CAAmB,OAAnB,CAAJ,EAAiC1C,gBAAgB,CAACuE,OAAD,CAAhB,CAAjC,CAA4D;AAA5D,WACK7D,IAAI,GAAGT,UAAU,CAAC2E,MAAlB,CAF2B,CAED;AAChC;;AACD,WAAO;AAAEL,MAAAA,OAAF;AAAW7D,MAAAA;AAAX,KAAP,CANiC,CAMP;AAC3B,GAlJiB;;AAmJlB;AACF;AACA;AACA;AACA;AACEmE,EAAAA,SAAS,CAAChC,KAAD,EAAgBgB,KAAc,GAAG,KAAjC,EAAyD;AAChE,UAAMiB,MAAM,GAAG,KAAKnD,OAAL,CAAaoB,YAAb,CAA0B,YAAYF,KAAtC,CAAf;AAEA,QAAIiC,MAAJ,EAAY,OAAO,KAAKR,iBAAL,CAAuBQ,MAAvB,CAAP;AACZ,QAAI,KAAKlC,SAAL,CAAeC,KAAf,CAAJ,EAA2B,OAAO,KAAKyB,iBAAL,CAAuB,cAAvB,CAAP;AAE3B,WAAO,CAACT,KAAD,GAAS,KAAKS,iBAAL,CAAuB,KAAKS,aAA5B,CAAT,GAAsD,KAAKT,iBAAL,CAAuB,KAAKU,gBAA5B,CAA7D;AACD,GA/JiB;;AAgKlB;AACF;AACA;AACA;AACEC,EAAAA,QAAQ,CAACpC,KAAD,EAAsC;AAC5C,UAAMqC,SAAS,GAAG,cAAcrC,KAAhC;AACA,QAAI,CAAC,KAAKlB,OAAL,CAAasB,YAAb,CAA0BiC,SAA1B,CAAL,EAA2C,OAAO,IAAP;AAC3C,UAAMJ,MAAM,GAAG,KAAKnD,OAAL,CAAaoB,YAAb,CAA0BmC,SAA1B,KAAwC,KAAKC,qBAA5D;AACA,WAAO,KAAKb,iBAAL,CAAuBQ,MAAvB,CAAP;AACD,GAzKiB;;AA0KlB;AACF;AACA;AACA;AACA;AACA;AACEM,EAAAA,eAAe,CAACC,WAAD,EAAsBC,UAAtB,EAA0C9E,UAA1C,EAA8D;AAC3E,UAAM0E,SAAS,GAAG,KAAKvD,OAAL,CAAaoB,YAAb,CAA0BsC,WAA1B,CAAlB;AACA,QAAIH,SAAS,IAAI,IAAjB,EAAuB;AACvB1E,IAAAA,UAAU,CAAC8E,UAAD,CAAV,GAAyBJ,SAAzB;AACD,GApLiB;;AAqLlB;AACF;AACA;AACA;AACA;AACEK,EAAAA,gBAAgB,CAAC1C,KAAD,EAAgBzB,QAAhB,EAA4C;AAC1D,UAAMoE,KAAK,GAAG;AAAElF,MAAAA,IAAI,EAAEuC;AAAR,KAAd;AACA,UAAMqB,YAAY,GAAG,KAAKC,eAAL,CAAqBtB,KAArB,CAArB,CAF0D,CAI1D;;AACA,UAAM4C,kBAAkB,GAAG,CACzB,QADyB,EAEzB,OAFyB,EAGzB,QAHyB,EAIzB,WAJyB,EAKzB,cALyB,EAMzB,MANyB,EAOzB,cAPyB,CAA3B;;AASA,SAAK,IAAIvD,IAAT,IAAiBuD,kBAAjB,EAAqC,KAAKL,eAAL,oBAAiClB,YAAjC,cAAiDhC,IAAjD,GAAyDA,IAAzD,EAA+DsD,KAA/D,EAdqB,CAgB1D;;;AACA,UAAME,iBAAiB,GAAG,CACxB,OADwB,EAExB,MAFwB,EAGxB,OAHwB,EAIxB,aAJwB,EAKxB,OALwB;AAMxB;AACA,cAPwB,EAQxB,UARwB,EASxB,cATwB,EAUxB,YAVwB,EAWxB,cAXwB,EAYxB,cAZwB,EAaxB,UAbwB,EAaZ;AACZ,gBAdwB,EAexB,WAfwB,EAgBxB,YAhBwB,EAiBxB,KAjBwB,EAkBxB,KAlBwB,EAmBxB,SAnBwB,EAoBxB,OApBwB,EAqBxB,aArBwB,EAsBxB,WAtBwB,EAuBxB,KAvBwB,EAwBxB,MAxBwB,EAyBxB,WAzBwB,EA0BxB,WA1BwB,EA2BxB,aA3BwB,EA4BxB,oBA5BwB,CAA1B;;AA8BA,SAAK,IAAIxD,IAAT,IAAiBwD,iBAAjB,EAAoC,KAAKN,eAAL,WAAwBlD,IAAxB,cAAgCgC,YAAhC,GAAgDhC,IAAhD,EAAuDsD,KAAvD;;AAEpC,UAAMG,iBAAyB,GAAIC,KAAK,CAACC,IAAN,CAAW,KAAKlE,OAAL,CAAanB,UAAxB,CAAD,CAAgDsF,MAAhD,CAAwDC,CAAD,IAAaA,CAAC,CAACzF,IAAF,CAAOoC,UAAP,mBAA6BwB,YAA7B,EAApE,CAAlC;;AACA,SAAK,IAAIhC,IAAT,IAAiByD,iBAAjB,EAAoC,KAAKP,eAAL,CAAqBlD,IAAI,CAAC5B,IAA1B,EAAgC4B,IAAI,CAAC5B,IAAL,CAAU0F,OAAV,mBAA6B9B,YAA7B,GAA6C,SAA7C,CAAhC,EAAyFsB,KAAzF;;AAEpC,UAAMS,UAAU,GAAG7E,QAAQ,GAAGA,QAAQ,CAAE,KAAF,CAAX,GAAsB,IAAjD;AACA,QAAI,KAAK6D,QAAL,CAAcf,YAAd,CAAJ,EAAiCsB,KAAK,CAAC,QAAD,CAAL,GAAkB,KAAKX,SAAL,CAAeX,YAAf,EAA6BK,OAA/C;AACjC,QAAI,KAAK3B,SAAL,CAAesB,YAAf,KAAgC+B,UAApC,EAAgDT,KAAK,CAAC,KAAD,CAAL,GAAe,KAAK7D,OAAL,CAAaoB,YAAb,CAA0B,SAASmB,YAAnC,KAAoD+B,UAAnE;AAChD,QAAI,KAAKjD,QAAL,CAAckB,YAAd,KAA+B+B,UAAnC,EAA+CT,KAAK,CAAC,UAAD,CAAL,GAAoBS,UAApB;AAE/C,WAAOT,KAAP;AACD,GApPiB;;AAqPlB;AACF;AACA;AACA;AACE,QAAMU,oBAAN,CAA2BrD,KAA3B,EAA0CzB,QAAQ,GAAG,IAArD,EAA2D+E,mBAAmB,GAAG,KAAjF,EAAiH;AAC/G,QAAI,KAAKpC,QAAL,CAAclB,KAAd,CAAJ,EAA0B,OAAO,KAAKuD,YAAL,CAAkBvD,KAAlB,CAAP,CADqF,CACpD;;AAC3D,QAAI,KAAKgB,KAAL,CAAWhB,KAAX,CAAJ,EAAuB,OAAO,MAAM,KAAKwD,SAAL,CAAexD,KAAf,CAAb;AAEvB,UAAMyD,eAAe,GAAGlF,QAAQ,IAAI,KAAKA,QAAzC;AACA,QAAIZ,UAAU,GAAG,KAAK+E,gBAAL,CAAsB1C,KAAtB,EAA6ByD,eAA7B,CAAjB;AACA,UAAMpC,YAAY,GAAG,KAAKC,eAAL,CAAqBtB,KAArB,CAArB;AACA,UAAM0D,UAAU,GAAG,KAAKtB,QAAL,CAAcf,YAAd,KAA+B,KAAKW,SAAL,CAAeX,YAAf,CAAlD;AACA,QAAIK,OAAO,GAAGgC,UAAU,CAAChC,OAAzB;AACA,QAAIiC,cAAc,GAAGtG,IAAH,mBAAlB,CAT+G,CAW/G;;AACA,QAAI2B,KAAK,GAAG,MAAM,KAAKoC,QAAL,CAAcpB,KAAd,EAAqByD,eAArB,CAAlB;;AACA,QAAIC,UAAU,CAAC7F,IAAX,KAAoBT,UAAU,CAAC2E,MAAnC,EAA2C;AAAE;AAC3C4B,MAAAA,cAAc,GAAG3G,OAAH,qBACT0E,OADS,EAEFnE,SAAS,CAACI,UAAU,CAACF,IAAZ,CAFP,EAGDF,SAAS,CAACI,UAAU,CAACiG,KAAZ,CAHR,EAIT5E,KAJS,EAIC0C,OAJD,CAAd;AAMD,KAPD,MAOO;AAAE;AACP;AACA,UAAI,CAAC1C,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAK,EAA7B,KAAoC,KAAKF,OAAL,CAAasB,YAAb,CAA0B,oBAAoBJ,KAA9C,CAAxC,EAA8F;AAC5F0B,QAAAA,OAAO,GAAG,KAAK5C,OAAL,CAAaoB,YAAb,CAA0B,oBAAoBF,KAA9C,CAAV;AACD,OAJI,CAKL;AACA;;;AACA,UAAIhB,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKhB,SAAhC,EAA2CL,UAAU,CAACqB,KAAX,GAAmB,EAAnB;;AAC3C,UAAI0E,UAAU,CAAC7F,IAAX,KAAoBT,UAAU,CAACwE,IAA/B,IAAuC5C,KAAK,CAAC,KAAD,CAAhD,EAAyD;AAAE;AACzDrB,QAAAA,UAAU,CAAC,UAAD,CAAV,GAAyBqB,KAAK,CAAC,KAAD,CAA9B;AACD,OAFD,MAEO;AAAE;AACPrB,QAAAA,UAAU,CAAC,OAAD,CAAV,GAAsBqB,KAAtB;AACD,OAZI,CAcL;;;AACA,UAAIA,KAAK,IAAIA,KAAK,CAAC,KAAD,CAAlB,EAA2BrB,UAAU,CAAC,gBAAD,CAAV,GAA+BqB,KAAK,CAAC,KAAD,CAApC,CAftB,CAiBL;;AACA,UAAIsE,mBAAJ,EAAyB3F,UAAU,GAAG,MAAM,KAAK2F,mBAAL,CAAyB3F,UAAzB,EAAqC8F,eAArC,CAAnB;AAEzBE,MAAAA,cAAc,GAAG3G,OAAH,qBAAc0E,OAAd,EAA6B3E,MAAM,CAACY,UAAD,CAAnC,EAAqD+D,OAArD,CAAd;AACD;;AAED,SAAKxD,WAAL,CAAiB4B,IAAjB,CAAsBE,KAAtB;AACA,WAAO2D,cAAP;AACD,GAtSiB;;AAuSlBE,EAAAA,eAAe,CAAC5B,MAAD,EAAsBI,SAAtB,EAAyCrD,KAAzC,EAAqD;AAClE,QAAIiD,MAAM,CAAC/B,YAAP,CAAoBmC,SAApB,MAAmCrD,KAAvC,EAA8C;AAAE;AAC9CiD,MAAAA,MAAM,CAAC6B,YAAP,CAAoBzB,SAApB,EAA+BrD,KAA/B,EAD4C,CACL;AACxC;AACF,GA3SiB;;AA4SlB;AACF;AACA;AACA;AACE,QAAMwE,SAAN,CAAgBxD,KAAhB,EAAwD;AACtD,UAAM+D,SAAS,GAAG,KAAK/B,SAAL,CAAehC,KAAf,EAAsB,IAAtB,CAAlB,CADsD,CAGtD;;AACA,UAAM2C,KAAK,GAAG;AAAElF,MAAAA,IAAI,EAAEuC;AAAR,KAAd;AACA,UAAMgE,aAAa,GAAG,CACpB,OADoB,EAEpB,OAFoB,CAAtB;;AAIA,SAAK,IAAI3E,IAAT,IAAiB2E,aAAjB,EAAgC,KAAKzB,eAAL,WAAwBlD,IAAxB,cAAgCW,KAAhC,GAAyCX,IAAzC,EAA+CsD,KAA/C,EATsB,CAWtD;;;AACA,QAAIV,MAAM,GAAG,KAAKnD,OAAL,CAAaK,aAAb,WAA8B4E,SAAS,CAACrC,OAAxC,qBAAyD1B,KAAzD,SAAb;AACA,QAAIiE,YAAY,GAAG,KAAnB,CAbsD,CAa5B;;AAC1B,QAAI,CAAChC,MAAL,EAAa;AACXA,MAAAA,MAAM,GAAGrD,QAAQ,CAACC,aAAT,CAAuBkF,SAAS,CAACrC,OAAjC,CAAT;AACAuC,MAAAA,YAAY,GAAG,IAAf;AACD;;AACD,SAAK,IAAIxG,IAAT,IAAiByG,MAAM,CAACC,IAAP,CAAYxB,KAAZ,CAAjB,EAAqC;AACnC,WAAKkB,eAAL,CAAqB5B,MAArB,EAA6BxE,IAA7B,EAAmCkF,KAAK,CAAClF,IAAD,CAAxC,EAAgDsG,SAAS,CAAClG,IAA1D;AACD;;AACD,QAAIoE,MAAM,CAACmC,SAAP,IAAoBH,YAAxB,EAAsChC,MAAM,CAACmC,SAAP,CAAiB9G,MAAjB;AACtC,QAAI+G,SAAS,GAAG,KAAK9D,MAAL,CAAYP,KAAZ,CAAhB,CAtBsD,CAuBtD;;AACA,QAAI,KAAKlB,OAAL,CAAasB,YAAb,CAA0B,WAAWJ,KAArC,CAAJ,EAAiD;AAC/C,UAAIsE,YAAY,GAAG,IAAnB;;AACA,WAAI,IAAItE,KAAR,IAAiBqE,SAAjB,EAA4B;AAC1B,YAAIrF,KAAa,GAAG,MAAM,KAAKoC,QAAL,CAAcpB,KAAd,EAAqB,KAAKzB,QAA1B,CAA1B;;AACA,YAAIS,KAAK,KAAK,EAAd,EAAkB;AAAE;AAClBsF,UAAAA,YAAY,GAAG,KAAf;AACA,mBAFgB,CAEN;AACX;AACF;;AAAA;;AACD,UAAGA,YAAH,EAAiB;AAAE;AACjB,cAAM3G,UAAU,GAAG,KAAK+E,gBAAL,CAAsB1C,KAAtB,EAA6B,KAAKzB,QAAlC,CAAnB;AACA,cAAMmD,OAAO,GAAG,KAAK5C,OAAL,CAAaoB,YAAb,iBAAmCF,KAAnC,EAAhB;AACA,cAAMuE,QAAQ,GAAG,KAAKzF,OAAL,CAAaoB,YAAb,iBAAmCF,KAAnC,YAAjB;AACA,YAAIuE,QAAJ,EAAc5G,UAAU,CAACqB,KAAX,GAAmBuF,QAAnB;AACd,eAAOvH,OAAP,qBAAkB0E,OAAlB,EAAiC3E,MAAM,CAACY,UAAD,CAAvC,EAAyD+D,OAAzD;AACD;;AAAA;AACF,KAxCqD,CA0CtD;;;AACA,UAAM8C,eAAe,GAAG,MAAMC,OAAO,CAACC,GAAR,CAAYL,SAAS,CAACnF,GAAV,CAAec,KAAD,IAAmB,KAAKqD,oBAAL,CAA0BrD,KAA1B,CAAjC,CAAZ,CAA9B;AACA,UAAM2E,QAAQ,GAAGtH,IAAH,qBAAUmH,eAAV,CAAd;AACAlH,IAAAA,MAAM,CAACqH,QAAD,EAAW1C,MAAM,CAAC9C,aAAP,CAAqB,gBAArB,KAA0C8C,MAArD,CAAN;AACA,WAAOA,MAAP;AACD,GA/ViB;;AAgWlBsB,EAAAA,YAAY,CAACvE,KAAD,EAAgC;AAC1C,WAAO3B,IAAP,qBACU2B,KAAK,CAAC4F,KAAN,CAAY,CAAZ,EAAe,CAAC,CAAhB,EAAmBzB,OAAnB,CAA2B,WAA3B,EAAwC,IAAxC,CADV;AAGD,GApWiB;;AAqWlB;AACF;AACA;AACA;AACE7B,EAAAA,eAAe,CAACtB,KAAD,EAAwB;AACrC,WAAOA,KAAK,CAACH,UAAN,CAAiB,GAAjB,IAAwBG,KAAK,CAAC4E,KAAN,CAAY,CAAZ,EAAe5E,KAAK,CAACY,MAArB,CAAxB,GAAuDZ,KAA9D;AACD;;AA3WiB,CAApB;AA8WA,SACExC,WADF","sourcesContent":["import { spread, preHTML } from '../libs/lit-helpers';\nimport { parseFieldsString, findClosingBracketMatchIndex } from '../libs/helpers';\nimport { newWidgetFactory } from '../new-widgets/new-widget-factory';\nimport { WidgetInterface, WidgetType, Resource } from './interfaces';\nimport { html, render, TemplateResult } from 'lit-html';\nimport { ifDefined } from 'lit-html/directives/if-defined';\n\nconst WidgetMixin = {\n name: 'widget-mixin',\n use: [],\n attributes: {\n fields: {\n type: String,\n default: undefined,\n }\n },\n initialState: {\n nameWidgets: null,\n _div: null\n },\n created(): void {\n this.nameWidgets = [];\n },\n attached(): void {\n if (!this.dataSrc && !this.resource && this.noRender === null) this.populate();\n },\n get parentElement(): string {\n return 'div';\n },\n get div(): HTMLElement {\n if (this._div) return this._div;\n this._div = document.createElement(this.parentElement);\n this.element.appendChild(this._div);\n return this._div;\n },\n set div(value) {\n this._div = value\n },\n get widgets() {\n return this.nameWidgets.map((name: string) => this.element.querySelector(`[name=\"${name}\"]`));\n },\n /**\n * Return field list of the component\n */\n async getFields(): Promise<string[]>{ // TODO : improve code\n const attr = this.fields;\n if (attr === '') return [];\n if (attr) return parseFieldsString(attr);\n\n let resource = this.resource as Resource;\n if (resource && resource.isContainer()) { // If container, keep the 1rst resource\n for (let res of resource['ldp:contains']) {\n resource = res;\n break;\n }\n }\n\n if (!this.dataSrc) console.error(new Error('You must provide a \"fields\" attribute'));\n if(!resource) return [];\n\n let fields: string[] = [];\n for (const prop of resource.properties) {\n if ((!prop.startsWith('@') && !(prop === \"permissions\")) && await resource[prop]) fields.push(prop);\n }\n return fields;\n },\n /**\n * return attribute if \"field\" is an action\n * @param field - string\n */\n getAction(field: string): string {\n const action = this.element.getAttribute('action-' + field);\n return action;\n },\n /**\n * return true if \"field\" is editable\n * @param field - string\n */\n editable(field: string): string {\n return this.element.hasAttribute('editable-' + field);\n },\n /**\n * Return regexp to check if \"field\" is a set\n * @param field - string\n */\n getSetRegexp(field: string) {\n return new RegExp(`(^|\\\\,|\\\\(|\\\\s)\\\\s*${field}\\\\s*\\\\(`, 'g')\n },\n /**\n * Return fields contained in set \"field\"\n * @param field - string\n */\n getSet(field: string): string[] {\n const setString = this.fields.match(this.getSetRegexp(field));\n if (!setString) return [];\n const firstSetBracket = this.fields.indexOf(setString[0]) + (setString[0].length) - 1;\n const lastSetBracket = findClosingBracketMatchIndex(this.fields, firstSetBracket);\n const set = this.fields.substring(firstSetBracket + 1, lastSetBracket);\n return parseFieldsString(set);\n },\n /**\n * Return true if \"field\" is a set\n * @param field - string\n */\n isSet(field: string): boolean {\n if (!this.fields) return false;\n let foundSets = this.fields.match(this.getSetRegexp(field));\n return foundSets ? foundSets.length > 0 : false;\n },\n isString(field: string): boolean {\n return field.startsWith('\\'') || field.startsWith('\\\"');\n },\n /**\n * Return the value of \"resource\" for predicate \"field\"\n * @param field - string\n * @param resource - Resource\n */\n async fetchValue(field: string, resource: Resource) {\n return resource && !resource.isContainer() ? await resource[field] : undefined;\n },\n /**\n * Return the value of the field\n * @param field - field\n */\n async getValue(field: string, resource: Resource) {\n const escapedField = this.getEscapedField(field);\n if (this.getAction(escapedField)) {\n return this.getAction(escapedField);\n }\n if (this.element.hasAttribute('value-' + field)) {\n return this.element.getAttribute('value-' + field);\n }\n let resourceValue = await this.fetchValue(field, resource);\n\n // Empty value\n if (resourceValue === undefined || resourceValue === '' || resourceValue === null) // If null or empty, return field default value\n return this.element.hasAttribute('default-' + field) ?\n this.element.getAttribute('default-' + field) : '';\n\n return resourceValue;\n },\n empty(): void {},\n /**\n * Return a widget from a tagName, and create it if necessary\n * @param tagName - string\n */\n widgetFromTagName(tagName: string) {\n let type = tagName.startsWith('solid') ? WidgetType.CUSTOM : WidgetType.USER;\n if (!customElements.get(tagName)) { // component does not exist\n if (tagName.startsWith('solid')) newWidgetFactory(tagName); // solid- -> create it\n else type = WidgetType.NATIVE; // or use a native tag\n }\n return { tagName, type }; // return tagName\n },\n /**\n * Return widget for field \"field\"\n * @param field - string\n * @param isSet - boolean\n */\n getWidget(field: string, isSet: boolean = false): WidgetInterface {\n const widget = this.element.getAttribute('widget-' + field);\n\n if (widget) return this.widgetFromTagName(widget);\n if (this.getAction(field)) return this.widgetFromTagName('solid-action');\n\n return !isSet ? this.widgetFromTagName(this.defaultWidget) : this.widgetFromTagName(this.defaultSetWidget);\n },\n /**\n * Return multiple widget if \"field\" is a multiple, false if it's not\n * @param field - string\n */\n multiple(field: string): WidgetInterface|null {\n const attribute = 'multiple-' + field;\n if (!this.element.hasAttribute(attribute)) return null;\n const widget = this.element.getAttribute(attribute) || this.defaultMultipleWidget;\n return this.widgetFromTagName(widget);\n },\n /**\n * If attribute \"lookForAttr\" is set on element, add \"attrKey\" to the \"attributes\" list\n * @param lookForAttr - string\n * @param setAttrKey - string\n * @param attributes - object\n */\n addToAttributes(lookForAttr: string, setAttrKey: string, attributes: object) {\n const attribute = this.element.getAttribute(lookForAttr);\n if (attribute == null) return;\n attributes[setAttrKey] = attribute;\n },\n /**\n * Return all the attributes of widget \"field\"\n * @param field - string\n * @param resource - Resource\n */\n widgetAttributes(field: string, resource: Resource): object {\n const attrs = { name: field };\n const escapedField = this.getEscapedField(field);\n\n // transfer all multiple-[field]-[attr] attributes as [attr] for multiple widget [field]\n const multipleAttributes = [\n 'fields',\n 'label',\n 'widget',\n 'add-label',\n 'remove-label',\n 'next', \n 'empty-widget'\n ];\n for (let attr of multipleAttributes) this.addToAttributes(`multiple-${escapedField}-${attr}`, attr, attrs)\n\n // transfer all [attr]-[field] attributes as [attr] attribute for widget [field]\n const defaultAttributes = [\n 'range',\n 'enum',\n 'label',\n 'placeholder',\n 'class',\n /* 'widget', */,\n 'required',\n 'editable',\n 'autocomplete',\n 'upload-url',\n 'option-label',\n 'option-value',\n 'order-by', // deprecated. Remove in 0.15\n 'each-label',\n 'order-asc',\n 'order-desc',\n 'min',\n 'max',\n 'pattern',\n 'title',\n 'start-value',\n 'end-value',\n 'alt',\n 'step',\n 'maxlength',\n 'minlength',\n 'search-text',\n 'search-placeholder',\n ];\n for (let attr of defaultAttributes) this.addToAttributes(`${attr}-${escapedField}`, attr, attrs)\n\n const addableAttributes: Attr[] = (Array.from(this.element.attributes) as Attr[]).filter((a: Attr) => a.name.startsWith(`addable-${escapedField}`));\n for (let attr of addableAttributes) this.addToAttributes(attr.name, attr.name.replace(`addable-${escapedField}`, 'addable'), attrs)\n\n const resourceId = resource ? resource!['@id'] : null;\n if (this.multiple(escapedField)) attrs['widget'] = this.getWidget(escapedField).tagName;\n if (this.getAction(escapedField) && resourceId) attrs['src'] = this.element.getAttribute('src-' + escapedField) || resourceId;\n if (this.editable(escapedField) && resourceId) attrs['value-id'] = resourceId;\n\n return attrs;\n },\n /**\n * Creates and return a widget for field + add it to the widget list\n * @param field - string\n */\n async createWidgetTemplate(field: string, resource = null, transformAttributes = false): Promise<TemplateResult> {\n if (this.isString(field)) return this.createString(field); // field is a static string\n if (this.isSet(field)) return await this.createSet(field);\n\n const currentResource = resource || this.resource;\n let attributes = this.widgetAttributes(field, currentResource);\n const escapedField = this.getEscapedField(field);\n const widgetMeta = this.multiple(escapedField) || this.getWidget(escapedField);\n let tagName = widgetMeta.tagName;\n let widgetTemplate = html``;\n\n // Set attributes\n let value = await this.getValue(field, currentResource);\n if (widgetMeta.type === WidgetType.NATIVE) { // native widget (ie: h1)\n widgetTemplate = preHTML`\n <${tagName}\n name=\"${ifDefined(attributes.name)}\"\n class=\"${ifDefined(attributes.class)}\"\n >${value}</${tagName}>\n `;\n } else { // custom widget (ie: solid-display-value)\n // Check if value is defined, and if the default widget is needed\n if ((value === null || value === '') && this.element.hasAttribute('default-widget-' + field)) {\n tagName = this.element.getAttribute('default-widget-' + field);\n }\n // Set attributes to the widget\n // setAttribute set a string. Make sure null values are empty\n if (value === null || value === undefined) attributes.value = '';\n if (widgetMeta.type === WidgetType.USER && value['@id']) { // if value is a resource and solid-widget used, set data-src\n attributes['data-src'] = value['@id'];\n } else { // otherwise, set value attribute\n attributes['value'] = value;\n }\n\n // Subscribe widgets if they show a resource\n if (value && value['@id']) attributes['auto-subscribe'] = value['@id'];\n\n // Transform store://XXX attributes\n if (transformAttributes) attributes = await this.transformAttributes(attributes, currentResource);\n\n widgetTemplate = preHTML`<${tagName} ...=${spread(attributes)}></${tagName}>`;\n }\n\n this.nameWidgets.push(field);\n return widgetTemplate;\n },\n defineAttribute(widget: HTMLElement, attribute: string, value: any) {\n if (widget.getAttribute(attribute) !== value) { // if attribute is different than previous one\n widget.setAttribute(attribute, value); // set it\n }\n },\n /**\n * Create a set and add fields to it\n * @param field - string\n */\n async createSet(field: string): Promise<TemplateResult> {\n const setWidget = this.getWidget(field, true);\n\n // Get set attributes\n const attrs = { name: field };\n const setAttributes = [\n 'class',\n 'label'\n ];\n for (let attr of setAttributes) this.addToAttributes(`${attr}-${field}`, attr, attrs);\n\n // Create widget if not already existing\n let widget = this.element.querySelector(`${setWidget.tagName}[name=\"${field}\"]`);\n let initializing = false; // used to render widget only first time\n if (!widget) {\n widget = document.createElement(setWidget.tagName);\n initializing = true;\n }\n for (let name of Object.keys(attrs)) {\n this.defineAttribute(widget, name, attrs[name], setWidget.type);\n }\n if (widget.component && initializing) widget.component.render();\n let setFields = this.getSet(field);\n // Catch widget for the set if all these fields are empty\n if (this.element.hasAttribute('empty-' + field)) {\n let hasOnlyEmpty = true;\n for(let field of setFields) {\n let value: string = await this.getValue(field, this.resource);\n if (value !== '') { // if one not empty\n hasOnlyEmpty = false;\n continue; // break loop\n }\n };\n if(hasOnlyEmpty) { // if only empty values, return empty-widget\n const attributes = this.widgetAttributes(field, this.resource);\n const tagName = this.element.getAttribute(`empty-${field}`);\n const valueSet = this.element.getAttribute(`empty-${field}-value`);\n if (valueSet) attributes.value = valueSet;\n return preHTML`<${tagName} ...=${spread(attributes)}></${tagName}>`;\n };\n }\n\n // Render template\n const widgetsTemplate = await Promise.all(setFields.map((field: string) => this.createWidgetTemplate(field)));\n const template = html`${widgetsTemplate}`;\n render(template, widget.querySelector('[data-content]') || widget);\n return widget;\n },\n createString(value: string): TemplateResult {\n return html`\n <span>${value.slice(1, -1).replace(/\\\\(['\"])/g, '$1')}</span>\n `;\n },\n /**\n * Returns field name without starting \"@\"\n * @param field\n */\n getEscapedField(field: string): string {\n return field.startsWith('@') ? field.slice(1, field.length) : field;\n }\n}\n\nexport {\n WidgetMixin\n}"]}
1
+ {"version":3,"sources":["widgetMixin.ts"],"names":["spread","preHTML","parseFieldsString","findClosingBracketMatchIndex","newWidgetFactory","WidgetType","html","render","ifDefined","WidgetMixin","name","use","attributes","fields","type","String","default","undefined","initialState","nameWidgets","_div","created","attached","dataSrc","resource","noRender","populate","parentElement","div","document","createElement","element","appendChild","value","widgets","map","querySelector","getFields","attr","isContainer","res","console","error","Error","prop","properties","startsWith","push","getAction","field","action","getAttribute","editable","hasAttribute","getSetRegexp","RegExp","getSet","setString","match","firstSetBracket","indexOf","length","lastSetBracket","set","substring","isSet","foundSets","isString","fetchValue","getValue","escapedField","getEscapedField","resourceValue","empty","widgetFromTagName","tagName","CUSTOM","USER","customElements","get","NATIVE","getWidget","widget","defaultWidget","defaultSetWidget","multiple","attribute","defaultMultipleWidget","addToAttributes","lookForAttr","setAttrKey","widgetAttributes","attrs","multipleAttributes","defaultAttributes","addableAttributes","Array","from","filter","a","replace","resourceId","createWidgetTemplate","transformAttributes","createString","createSet","currentResource","widgetMeta","widgetTemplate","class","defineAttribute","setAttribute","setWidget","setAttributes","initializing","Object","keys","component","setFields","hasOnlyEmpty","valueSet","widgetsTemplate","Promise","all","template","slice"],"mappings":"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","sourcesContent":["import { spread, preHTML } from '../libs/lit-helpers';\nimport { parseFieldsString, findClosingBracketMatchIndex } from '../libs/helpers';\nimport { newWidgetFactory } from '../new-widgets/new-widget-factory';\nimport { WidgetInterface, WidgetType, Resource } from './interfaces';\nimport { html, render, TemplateResult } from 'lit-html';\nimport { ifDefined } from 'lit-html/directives/if-defined';\n\nconst WidgetMixin = {\n name: 'widget-mixin',\n use: [],\n attributes: {\n fields: {\n type: String,\n default: undefined,\n }\n },\n initialState: {\n nameWidgets: null,\n _div: null\n },\n created(): void {\n this.nameWidgets = [];\n },\n attached(): void {\n if (!this.dataSrc && !this.resource && this.noRender === null) this.populate();\n },\n get parentElement(): string {\n return 'div';\n },\n get div(): HTMLElement {\n if (this._div) return this._div;\n this._div = document.createElement(this.parentElement);\n this.element.appendChild(this._div);\n return this._div;\n },\n set div(value) {\n this._div = value\n },\n get widgets() {\n return this.nameWidgets.map((name: string) => this.element.querySelector(`[name=\"${name}\"]`));\n },\n /**\n * Return field list of the component\n */\n async getFields(): Promise<string[]>{ // TODO : improve code\n const attr = this.fields;\n if (attr === '') return [];\n if (attr) return parseFieldsString(attr);\n\n let resource = this.resource as Resource;\n if (resource && resource.isContainer()) { // If container, keep the 1rst resource\n for (let res of resource['ldp:contains']) {\n resource = res;\n break;\n }\n }\n\n if (!this.dataSrc) console.error(new Error('You must provide a \"fields\" attribute'));\n if(!resource) return [];\n\n let fields: string[] = [];\n for (const prop of resource.properties) {\n if ((!prop.startsWith('@') && !(prop === \"permissions\")) && await resource[prop]) fields.push(prop);\n }\n return fields;\n },\n /**\n * return attribute if \"field\" is an action\n * @param field - string\n */\n getAction(field: string): string {\n const action = this.element.getAttribute('action-' + field);\n return action;\n },\n /**\n * return true if \"field\" is editable\n * @param field - string\n */\n editable(field: string): string {\n return this.element.hasAttribute('editable-' + field);\n },\n /**\n * Return regexp to check if \"field\" is a set\n * @param field - string\n */\n getSetRegexp(field: string) {\n return new RegExp(`(^|\\\\,|\\\\(|\\\\s)\\\\s*${field}\\\\s*\\\\(`, 'g')\n },\n /**\n * Return fields contained in set \"field\"\n * @param field - string\n */\n getSet(field: string): string[] {\n const setString = this.fields.match(this.getSetRegexp(field));\n if (!setString) return [];\n const firstSetBracket = this.fields.indexOf(setString[0]) + (setString[0].length) - 1;\n const lastSetBracket = findClosingBracketMatchIndex(this.fields, firstSetBracket);\n const set = this.fields.substring(firstSetBracket + 1, lastSetBracket);\n return parseFieldsString(set);\n },\n /**\n * Return true if \"field\" is a set\n * @param field - string\n */\n isSet(field: string): boolean {\n if (!this.fields) return false;\n let foundSets = this.fields.match(this.getSetRegexp(field));\n return foundSets ? foundSets.length > 0 : false;\n },\n isString(field: string): boolean {\n return field.startsWith('\\'') || field.startsWith('\\\"');\n },\n /**\n * Return the value of \"resource\" for predicate \"field\"\n * @param field - string\n * @param resource - Resource\n */\n async fetchValue(field: string, resource: Resource) {\n return resource && !resource.isContainer() ? await resource[field] : undefined;\n },\n /**\n * Return the value of the field\n * @param field - field\n */\n async getValue(field: string, resource: Resource) {\n const escapedField = this.getEscapedField(field);\n if (this.getAction(escapedField)) {\n return this.getAction(escapedField);\n }\n if (this.element.hasAttribute('value-' + field)) {\n return this.element.getAttribute('value-' + field);\n }\n let resourceValue = await this.fetchValue(field, resource);\n\n // Empty value\n if (resourceValue === undefined || resourceValue === '' || resourceValue === null) // If null or empty, return field default value\n return this.element.hasAttribute('default-' + field) ?\n this.element.getAttribute('default-' + field) : '';\n\n return resourceValue;\n },\n empty(): void {},\n /**\n * Return a widget from a tagName, and create it if necessary\n * @param tagName - string\n */\n widgetFromTagName(tagName: string) {\n let type = tagName.startsWith('solid') ? WidgetType.CUSTOM : WidgetType.USER;\n if (!customElements.get(tagName)) { // component does not exist\n if (tagName.startsWith('solid')) newWidgetFactory(tagName); // solid- -> create it\n else type = WidgetType.NATIVE; // or use a native tag\n }\n return { tagName, type }; // return tagName\n },\n /**\n * Return widget for field \"field\"\n * @param field - string\n * @param isSet - boolean\n */\n getWidget(field: string, isSet: boolean = false): WidgetInterface {\n const widget = this.element.getAttribute('widget-' + field);\n\n if (widget) return this.widgetFromTagName(widget);\n if (this.getAction(field)) return this.widgetFromTagName('solid-action');\n\n return !isSet ? this.widgetFromTagName(this.defaultWidget) : this.widgetFromTagName(this.defaultSetWidget);\n },\n /**\n * Return multiple widget if \"field\" is a multiple, false if it's not\n * @param field - string\n */\n multiple(field: string): WidgetInterface|null {\n const attribute = 'multiple-' + field;\n if (!this.element.hasAttribute(attribute)) return null;\n const widget = this.element.getAttribute(attribute) || this.defaultMultipleWidget;\n return this.widgetFromTagName(widget);\n },\n /**\n * If attribute \"lookForAttr\" is set on element, add \"attrKey\" to the \"attributes\" list\n * @param lookForAttr - string\n * @param setAttrKey - string\n * @param attributes - object\n */\n addToAttributes(lookForAttr: string, setAttrKey: string, attributes: object) {\n const attribute = this.element.getAttribute(lookForAttr);\n if (attribute == null) return;\n attributes[setAttrKey] = attribute;\n },\n /**\n * Return all the attributes of widget \"field\"\n * @param field - string\n * @param resource - Resource\n */\n widgetAttributes(field: string, resource: Resource): object {\n const attrs = { name: field };\n const escapedField = this.getEscapedField(field);\n\n // transfer all multiple-[field]-[attr] attributes as [attr] for multiple widget [field]\n const multipleAttributes = [\n 'fields',\n 'label',\n 'widget',\n 'add-label',\n 'remove-label',\n 'next', \n 'empty-widget',\n 'add-class',\n 'remove-class'\n ];\n for (let attr of multipleAttributes) this.addToAttributes(`multiple-${escapedField}-${attr}`, attr, attrs)\n\n // transfer all [attr]-[field] attributes as [attr] attribute for widget [field]\n const defaultAttributes = [\n 'range',\n 'enum',\n 'label',\n 'placeholder',\n 'class',\n /* 'widget', */,\n 'required',\n 'editable',\n 'autocomplete',\n 'upload-url',\n 'option-label',\n 'option-value',\n 'order-by', // deprecated. Remove in 0.15\n 'each-label',\n 'order-asc',\n 'order-desc',\n 'min',\n 'max',\n 'pattern',\n 'title',\n 'start-value',\n 'end-value',\n 'alt',\n 'step',\n 'maxlength',\n 'minlength',\n 'search-text',\n 'search-placeholder',\n 'link-text',\n ];\n for (let attr of defaultAttributes) this.addToAttributes(`${attr}-${escapedField}`, attr, attrs)\n\n const addableAttributes: Attr[] = (Array.from(this.element.attributes) as Attr[]).filter((a: Attr) => a.name.startsWith(`addable-${escapedField}`));\n for (let attr of addableAttributes) this.addToAttributes(attr.name, attr.name.replace(`addable-${escapedField}`, 'addable'), attrs)\n\n const resourceId = resource ? resource!['@id'] : null;\n if (this.multiple(escapedField)) attrs['widget'] = this.getWidget(escapedField).tagName;\n if (this.getAction(escapedField) && resourceId) attrs['src'] = this.element.getAttribute('src-' + escapedField) || resourceId;\n if (this.editable(escapedField) && resourceId) attrs['value-id'] = resourceId;\n\n return attrs;\n },\n /**\n * Creates and return a widget for field + add it to the widget list\n * @param field - string\n */\n async createWidgetTemplate(field: string, resource = null, transformAttributes = false): Promise<TemplateResult> {\n if (this.isString(field)) return this.createString(field); // field is a static string\n if (this.isSet(field)) return await this.createSet(field);\n\n const currentResource = resource || this.resource;\n let attributes = this.widgetAttributes(field, currentResource);\n const escapedField = this.getEscapedField(field);\n const widgetMeta = this.multiple(escapedField) || this.getWidget(escapedField);\n let tagName = widgetMeta.tagName;\n let widgetTemplate = html``;\n\n // Set attributes\n let value = await this.getValue(field, currentResource);\n if (widgetMeta.type === WidgetType.NATIVE) { // native widget (ie: h1)\n widgetTemplate = preHTML`\n <${tagName}\n name=\"${ifDefined(attributes.name)}\"\n class=\"${ifDefined(attributes.class)}\"\n >${value}</${tagName}>\n `;\n } else { // custom widget (ie: solid-display-value)\n // Check if value is defined, and if the default widget is needed\n if ((value === null || value === '') && this.element.hasAttribute('default-widget-' + field)) {\n tagName = this.element.getAttribute('default-widget-' + field);\n }\n // Set attributes to the widget\n // setAttribute set a string. Make sure null values are empty\n if (value === null || value === undefined) attributes.value = '';\n if (widgetMeta.type === WidgetType.USER && value['@id']) { // if value is a resource and solid-widget used, set data-src\n attributes['data-src'] = value['@id'];\n } else { // otherwise, set value attribute\n attributes['value'] = value;\n }\n\n // Subscribe widgets if they show a resource\n if (value && value['@id']) attributes['auto-subscribe'] = value['@id'];\n\n // Transform store://XXX attributes\n if (transformAttributes) attributes = await this.transformAttributes(attributes, currentResource);\n\n widgetTemplate = preHTML`<${tagName} ...=${spread(attributes)}></${tagName}>`;\n }\n\n this.nameWidgets.push(field);\n return widgetTemplate;\n },\n defineAttribute(widget: HTMLElement, attribute: string, value: any) {\n if (widget.getAttribute(attribute) !== value) { // if attribute is different than previous one\n widget.setAttribute(attribute, value); // set it\n }\n },\n /**\n * Create a set and add fields to it\n * @param field - string\n */\n async createSet(field: string): Promise<TemplateResult> {\n const setWidget = this.getWidget(field, true);\n\n // Get set attributes\n const attrs = { name: field };\n const setAttributes = [\n 'class',\n 'label'\n ];\n for (let attr of setAttributes) this.addToAttributes(`${attr}-${field}`, attr, attrs);\n\n // Create widget if not already existing\n let widget = this.element.querySelector(`${setWidget.tagName}[name=\"${field}\"]`);\n let initializing = false; // used to render widget only first time\n if (!widget) {\n widget = document.createElement(setWidget.tagName);\n initializing = true;\n }\n for (let name of Object.keys(attrs)) {\n this.defineAttribute(widget, name, attrs[name], setWidget.type);\n }\n if (widget.component && initializing) widget.component.render();\n let setFields = this.getSet(field);\n // Catch widget for the set if all these fields are empty\n if (this.element.hasAttribute('empty-' + field)) {\n let hasOnlyEmpty = true;\n for(let field of setFields) {\n let value: string = await this.getValue(field, this.resource);\n if (value !== '') { // if one not empty\n hasOnlyEmpty = false;\n continue; // break loop\n }\n };\n if(hasOnlyEmpty) { // if only empty values, return empty-widget\n const attributes = this.widgetAttributes(field, this.resource);\n const tagName = this.element.getAttribute(`empty-${field}`);\n const valueSet = this.element.getAttribute(`empty-${field}-value`);\n if (valueSet) attributes.value = valueSet;\n return preHTML`<${tagName} ...=${spread(attributes)}></${tagName}>`;\n };\n }\n\n // Render template\n const widgetsTemplate = await Promise.all(setFields.map((field: string) => this.createWidgetTemplate(field)));\n const template = html`${widgetsTemplate}`;\n render(template, widget.querySelector('[data-content]') || widget);\n return widget;\n },\n createString(value: string): TemplateResult {\n return html`\n <span>${value.slice(1, -1).replace(/\\\\(['\"])/g, '$1')}</span>\n `;\n },\n /**\n * Returns field name without starting \"@\"\n * @param field\n */\n getEscapedField(field: string): string {\n return field.startsWith('@') ? field.slice(1, field.length) : field;\n }\n}\n\nexport {\n WidgetMixin\n}"]}
@@ -9,7 +9,7 @@ function _templateObject2() {
9
9
  }
10
10
 
11
11
  function _templateObject() {
12
- const data = _taggedTemplateLiteral(["\n <solid-link\n data-src=", "\n next=", "\n >\n ", "\n </solid-link>\n "]);
12
+ const data = _taggedTemplateLiteral(["\n <solid-link\n data-src=", "\n next=", "\n id=", "\n link-text=", "\n >\n ", "\n </solid-link>\n "]);
13
13
 
14
14
  _templateObject = function () {
15
15
  return data;
@@ -22,10 +22,11 @@ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(
22
22
 
23
23
  import { html } from '../../_snowpack/pkg/lit-html.js';
24
24
  import { ifDefined } from '../../_snowpack/pkg/lit-html/directives/if-defined.js';
25
+ import { LinkTextMixin } from '../templatesDependencies/linkTextMixin.js';
25
26
  export const defaultTemplates = {
26
27
  action: {
27
- template: (value, attributes) => html(_templateObject(), ifDefined(attributes.src), ifDefined(value), attributes.label == null ? attributes.name || '' : attributes.label),
28
- dependencies: []
28
+ template: (value, attributes) => html(_templateObject(), ifDefined(attributes.src), ifDefined(value), ifDefined(attributes.id), ifDefined(attributes.linkText), attributes.linkText == null ? attributes.name || '' : attributes.linkText),
29
+ dependencies: [LinkTextMixin]
29
30
  },
30
31
  multiple: {
31
32
  template: (value, attributes) => html(_templateObject2(), value || '', ifDefined(attributes.fields), ifDefined(attributes.next), ifDefined(attributes.emptyWidget)),
@@ -1 +1 @@
1
- {"version":3,"sources":["defaultTemplatesDirectory.ts"],"names":["html","ifDefined","defaultTemplates","action","template","value","attributes","src","label","name","dependencies","multiple","fields","next","emptyWidget"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,SAASA,IAAT,QAAqB,UAArB;AACA,SAASC,SAAT,QAA0B,gCAA1B;AAEA,OAAO,MAAMC,gBAAgB,GAAG;AAC9BC,EAAAA,MAAM,EAAE;AACNC,IAAAA,QAAQ,EAAE,CAACC,KAAD,EAAgBC,UAAhB,KAAoCN,IAApC,oBAEKC,SAAS,CAACK,UAAU,CAACC,GAAZ,CAFd,EAGCN,SAAS,CAACI,KAAD,CAHV,EAKHC,UAAU,CAACE,KAAX,IAAoB,IAApB,GAA4BF,UAAU,CAACG,IAAX,IAAmB,EAA/C,GAAqDH,UAAU,CAACE,KAL7D,CADJ;AASNE,IAAAA,YAAY,EAAE;AATR,GADsB;AAY9BC,EAAAA,QAAQ,EAAE;AACRP,IAAAA,QAAQ,EAAE,CAACC,KAAD,EAAgBC,UAAhB,KAAoCN,IAApC,qBAEKK,KAAK,IAAI,EAFd,EAGGJ,SAAS,CAACK,UAAU,CAACM,MAAZ,CAHZ,EAICX,SAAS,CAACK,UAAU,CAACO,IAAZ,CAJV,EAKSZ,SAAS,CAACK,UAAU,CAACQ,WAAZ,CALlB,CADF;AASRJ,IAAAA,YAAY,EAAE;AATN;AAZoB,CAAzB","sourcesContent":["import { html } from 'lit-html';\nimport { ifDefined } from 'lit-html/directives/if-defined';\n\nexport const defaultTemplates = {\n action: {\n template: (value: string, attributes: any) => html`\n <solid-link\n data-src=${ifDefined(attributes.src)}\n next=${ifDefined(value)}\n >\n ${(attributes.label == null ? (attributes.name || '') : attributes.label)}\n </solid-link>\n `,\n dependencies: []\n },\n multiple: {\n template: (value: string, attributes: any) => html`\n <solid-display\n data-src=${value || ''}\n fields=${ifDefined(attributes.fields)}\n next=${ifDefined(attributes.next)}\n empty-widget=${ifDefined(attributes.emptyWidget)}\n ></solid-display>\n `,\n dependencies: []\n },\n}\n"]}
1
+ {"version":3,"sources":["defaultTemplatesDirectory.ts"],"names":["html","ifDefined","LinkTextMixin","defaultTemplates","action","template","value","attributes","src","id","linkText","name","dependencies","multiple","fields","next","emptyWidget"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,SAASA,IAAT,QAAqB,UAArB;AACA,SAASC,SAAT,QAA0B,gCAA1B;AACA,SAASC,aAAT,QAA8B,wCAA9B;AAEA,OAAO,MAAMC,gBAAgB,GAAG;AAC9BC,EAAAA,MAAM,EAAE;AACNC,IAAAA,QAAQ,EAAE,CAACC,KAAD,EAAgBC,UAAhB,KAAoCP,IAApC,oBAEKC,SAAS,CAACM,UAAU,CAACC,GAAZ,CAFd,EAGCP,SAAS,CAACK,KAAD,CAHV,EAIDL,SAAS,CAACM,UAAU,CAACE,EAAZ,CAJR,EAKMR,SAAS,CAACM,UAAU,CAACG,QAAZ,CALf,EAOJH,UAAU,CAACG,QAAX,IAAuB,IAAvB,GAA+BH,UAAU,CAACI,IAAX,IAAmB,EAAlD,GAAwDJ,UAAU,CAACG,QAP/D,CADJ;AAWNE,IAAAA,YAAY,EAAE,CAACV,aAAD;AAXR,GADsB;AAc9BW,EAAAA,QAAQ,EAAE;AACRR,IAAAA,QAAQ,EAAE,CAACC,KAAD,EAAgBC,UAAhB,KAAoCP,IAApC,qBAEKM,KAAK,IAAI,EAFd,EAGGL,SAAS,CAACM,UAAU,CAACO,MAAZ,CAHZ,EAICb,SAAS,CAACM,UAAU,CAACQ,IAAZ,CAJV,EAKSd,SAAS,CAACM,UAAU,CAACS,WAAZ,CALlB,CADF;AASRJ,IAAAA,YAAY,EAAE;AATN;AAdoB,CAAzB","sourcesContent":["import { html } from 'lit-html';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { LinkTextMixin } from '../templatesDependencies/linkTextMixin';\n\nexport const defaultTemplates = {\n action: {\n template: (value: string, attributes: any) => html`\n <solid-link\n data-src=${ifDefined(attributes.src)}\n next=${ifDefined(value)}\n id=${ifDefined(attributes.id)}\n link-text=${ifDefined(attributes.linkText)}\n >\n ${attributes.linkText == null ? (attributes.name || '') : attributes.linkText}\n </solid-link>\n `,\n dependencies: [LinkTextMixin]\n },\n multiple: {\n template: (value: string, attributes: any) => html`\n <solid-display\n data-src=${value || ''}\n fields=${ifDefined(attributes.fields)}\n next=${ifDefined(attributes.next)}\n empty-widget=${ifDefined(attributes.emptyWidget)}\n ></solid-display>\n `,\n dependencies: []\n },\n}\n"]}
@@ -29,7 +29,7 @@ function _templateObject4() {
29
29
  }
30
30
 
31
31
  function _templateObject3() {
32
- const data = _taggedTemplateLiteral(["\n <a\n name=", "\n href=", "\n target=", "\n ?data-editable=", "\n >\n ", "\n </a>\n "]);
32
+ const data = _taggedTemplateLiteral(["\n <a\n name=", "\n href=", "\n target=", "\n ?data-editable=", "\n id=", "\n link-text=", "\n >\n ", "\n </a>\n "]);
33
33
 
34
34
  _templateObject3 = function () {
35
35
  return data;
@@ -62,6 +62,7 @@ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(
62
62
 
63
63
  import { EditableMixin } from '../templatesDependencies/editableMixin.js';
64
64
  import { AltMixin } from '../templatesDependencies/altMixin.js';
65
+ import { LinkTextMixin } from '../templatesDependencies/linkTextMixin.js';
65
66
  import { html } from '../../_snowpack/pkg/lit-html.js';
66
67
  import { ifDefined } from '../../_snowpack/pkg/lit-html/directives/if-defined.js';
67
68
  export const displayTemplates = {
@@ -74,8 +75,8 @@ export const displayTemplates = {
74
75
  dependencies: [EditableMixin]
75
76
  },
76
77
  link: {
77
- template: (value, attributes) => html(_templateObject3(), ifDefined(attributes.name), (attributes.mailto || attributes.tel || '') + (value || '#'), ifDefined(attributes.target), attributes.editable, attributes.label || value || ''),
78
- dependencies: [EditableMixin]
78
+ template: (value, attributes) => html(_templateObject3(), ifDefined(attributes.name), (attributes.mailto || attributes.tel || '') + (value || '#'), ifDefined(attributes.target), attributes.editable, ifDefined(attributes.id), ifDefined(attributes.linkText), attributes.linkText || value || ''),
79
+ dependencies: [EditableMixin, LinkTextMixin]
79
80
  },
80
81
  img: {
81
82
  template: (value, attributes) => html(_templateObject4(), ifDefined(attributes.name), ifDefined(value), ifDefined(attributes.alt)),
@@ -1 +1 @@
1
- {"version":3,"sources":["displayTemplatesDirectory.ts"],"names":["EditableMixin","AltMixin","html","ifDefined","displayTemplates","value","template","dependencies","div","attributes","name","editable","link","mailto","tel","target","label","img","alt","boolean"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAASA,aAAT,QAA8B,wCAA9B;AACA,SAASC,QAAT,QAAyB,mCAAzB;AAEA,SAASC,IAAT,QAAqB,UAArB;AACA,SAASC,SAAT,QAA0B,gCAA1B;AAEA,OAAO,MAAMC,gBAAgB,GAAG;AAC9BC,EAAAA,KAAK,EAAE;AACLC,IAAAA,QAAQ,EAAGD,KAAD,IAAmBH,IAAnB,oBAA0BG,KAA1B,CADL;AAELE,IAAAA,YAAY,EAAE;AAFT,GADuB;AAK9BC,EAAAA,GAAG,EAAE;AACHF,IAAAA,QAAQ,EAAE,CAACD,KAAD,EAAgBI,UAAhB,KAAoCP,IAApC,qBAECC,SAAS,CAACM,UAAU,CAACC,IAAZ,CAFV,EAGWD,UAAU,CAACE,QAHtB,EAKJN,KALI,CADP;AASHE,IAAAA,YAAY,EAAE,CAAEP,aAAF;AATX,GALyB;AAgB9BY,EAAAA,IAAI,EAAE;AACJN,IAAAA,QAAQ,EAAE,CAACD,KAAD,EAAgBI,UAAhB,KAAoCP,IAApC,qBAECC,SAAS,CAACM,UAAU,CAACC,IAAZ,CAFV,EAGC,CAACD,UAAU,CAACI,MAAX,IAAqBJ,UAAU,CAACK,GAAhC,IAAuC,EAAxC,KAA6CT,KAAK,IAAI,GAAtD,CAHD,EAIGF,SAAS,CAACM,UAAU,CAACM,MAAZ,CAJZ,EAKWN,UAAU,CAACE,QALtB,EAOJF,UAAU,CAACO,KAAX,IAAoBX,KAApB,IAA6B,EAPzB,CADN;AAWJE,IAAAA,YAAY,EAAE,CAAEP,aAAF;AAXV,GAhBwB;AA6B9BiB,EAAAA,GAAG,EAAE;AACHX,IAAAA,QAAQ,EAAE,CAACD,KAAD,EAAgBI,UAAhB,KAAoCP,IAApC,qBAECC,SAAS,CAACM,UAAU,CAACC,IAAZ,CAFV,EAGAP,SAAS,CAACE,KAAD,CAHT,EAIAF,SAAS,CAACM,UAAU,CAACS,GAAZ,CAJT,CADP;AASHX,IAAAA,YAAY,EAAE,CAACN,QAAD;AATX,GA7ByB;AAwC9BkB,EAAAA,OAAO,EAAE;AACPb,IAAAA,QAAQ,EAAE,CAACD,KAAD,EAAgBI,UAAhB,KAAoCP,IAApC,qBACNG,KAAK,KAAK,MAAV,GAAmBH,IAAnB,qBAAiCO,UAAU,CAACO,KAAX,IAAoBP,UAAU,CAACC,IAA/B,IAAuC,EAAxE,IAAuF,EADjF,CADH;AAIPH,IAAAA,YAAY,EAAE;AAJP;AAxCqB,CAAzB","sourcesContent":["import { EditableMixin } from '../templatesDependencies/editableMixin';\nimport { AltMixin } from '../templatesDependencies/altMixin';\n\nimport { html } from 'lit-html';\nimport { ifDefined } from 'lit-html/directives/if-defined';\n\nexport const displayTemplates = {\n value: {\n template: (value: string) => html`${value}`,\n dependencies: []\n },\n div: {\n template: (value: string, attributes: any) => html`\n <div\n name=${ifDefined(attributes.name)}\n ?data-editable=${attributes.editable}\n >\n ${value}\n </div>\n `,\n dependencies: [ EditableMixin ]\n },\n link: {\n template: (value: string, attributes: any) => html`\n <a\n name=${ifDefined(attributes.name)}\n href=${(attributes.mailto || attributes.tel || '')+(value || '#')}\n target=${ifDefined(attributes.target)}\n ?data-editable=${attributes.editable}\n >\n ${attributes.label || value || ''}\n </a>\n `,\n dependencies: [ EditableMixin ]\n },\n img: {\n template: (value: string, attributes: any) => html`\n <img\n name=${ifDefined(attributes.name)}\n src=${ifDefined(value)}\n alt=${ifDefined(attributes.alt)}\n style=\"max-width: 100%; max-height: 100%;\"\n />\n `,\n dependencies: [AltMixin]\n },\n boolean: {\n template: (value: string, attributes: any) => html`\n ${value === 'true' ? html`<label>${attributes.label || attributes.name || ''}</label>` : ''}\n `,\n dependencies: []\n },\n}\n"]}
1
+ {"version":3,"sources":["displayTemplatesDirectory.ts"],"names":["EditableMixin","AltMixin","LinkTextMixin","html","ifDefined","displayTemplates","value","template","dependencies","div","attributes","name","editable","link","mailto","tel","target","id","linkText","img","alt","boolean","label"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAASA,aAAT,QAA8B,wCAA9B;AACA,SAASC,QAAT,QAAyB,mCAAzB;AACA,SAASC,aAAT,QAA8B,wCAA9B;AAEA,SAASC,IAAT,QAAqB,UAArB;AACA,SAASC,SAAT,QAA0B,gCAA1B;AAEA,OAAO,MAAMC,gBAAgB,GAAG;AAC9BC,EAAAA,KAAK,EAAE;AACLC,IAAAA,QAAQ,EAAGD,KAAD,IAAmBH,IAAnB,oBAA0BG,KAA1B,CADL;AAELE,IAAAA,YAAY,EAAE;AAFT,GADuB;AAK9BC,EAAAA,GAAG,EAAE;AACHF,IAAAA,QAAQ,EAAE,CAACD,KAAD,EAAgBI,UAAhB,KAAoCP,IAApC,qBAECC,SAAS,CAACM,UAAU,CAACC,IAAZ,CAFV,EAGWD,UAAU,CAACE,QAHtB,EAKJN,KALI,CADP;AASHE,IAAAA,YAAY,EAAE,CAAER,aAAF;AATX,GALyB;AAgB9Ba,EAAAA,IAAI,EAAE;AACJN,IAAAA,QAAQ,EAAE,CAACD,KAAD,EAAgBI,UAAhB,KAAoCP,IAApC,qBAECC,SAAS,CAACM,UAAU,CAACC,IAAZ,CAFV,EAGC,CAACD,UAAU,CAACI,MAAX,IAAqBJ,UAAU,CAACK,GAAhC,IAAuC,EAAxC,KAA6CT,KAAK,IAAI,GAAtD,CAHD,EAIGF,SAAS,CAACM,UAAU,CAACM,MAAZ,CAJZ,EAKWN,UAAU,CAACE,QALtB,EAMDR,SAAS,CAACM,UAAU,CAACO,EAAZ,CANR,EAOMb,SAAS,CAACM,UAAU,CAACQ,QAAZ,CAPf,EASJR,UAAU,CAACQ,QAAX,IAAuBZ,KAAvB,IAAgC,EAT5B,CADN;AAaJE,IAAAA,YAAY,EAAE,CAAER,aAAF,EAAkBE,aAAlB;AAbV,GAhBwB;AA+B9BiB,EAAAA,GAAG,EAAE;AACHZ,IAAAA,QAAQ,EAAE,CAACD,KAAD,EAAgBI,UAAhB,KAAoCP,IAApC,qBAECC,SAAS,CAACM,UAAU,CAACC,IAAZ,CAFV,EAGAP,SAAS,CAACE,KAAD,CAHT,EAIAF,SAAS,CAACM,UAAU,CAACU,GAAZ,CAJT,CADP;AASHZ,IAAAA,YAAY,EAAE,CAACP,QAAD;AATX,GA/ByB;AA0C9BoB,EAAAA,OAAO,EAAE;AACPd,IAAAA,QAAQ,EAAE,CAACD,KAAD,EAAgBI,UAAhB,KAAoCP,IAApC,qBACNG,KAAK,KAAK,MAAV,GAAmBH,IAAnB,qBAAiCO,UAAU,CAACY,KAAX,IAAoBZ,UAAU,CAACC,IAA/B,IAAuC,EAAxE,IAAuF,EADjF,CADH;AAIPH,IAAAA,YAAY,EAAE;AAJP;AA1CqB,CAAzB","sourcesContent":["import { EditableMixin } from '../templatesDependencies/editableMixin';\nimport { AltMixin } from '../templatesDependencies/altMixin';\nimport { LinkTextMixin } from '../templatesDependencies/linkTextMixin';\n\nimport { html } from 'lit-html';\nimport { ifDefined } from 'lit-html/directives/if-defined';\n\nexport const displayTemplates = {\n value: {\n template: (value: string) => html`${value}`,\n dependencies: []\n },\n div: {\n template: (value: string, attributes: any) => html`\n <div\n name=${ifDefined(attributes.name)}\n ?data-editable=${attributes.editable}\n >\n ${value}\n </div>\n `,\n dependencies: [ EditableMixin ]\n },\n link: {\n template: (value: string, attributes: any) => html`\n <a\n name=${ifDefined(attributes.name)}\n href=${(attributes.mailto || attributes.tel || '')+(value || '#')}\n target=${ifDefined(attributes.target)}\n ?data-editable=${attributes.editable}\n id=${ifDefined(attributes.id)}\n link-text=${ifDefined(attributes.linkText)}\n >\n ${attributes.linkText || value || ''}\n </a>\n `,\n dependencies: [ EditableMixin, LinkTextMixin ]\n },\n img: {\n template: (value: string, attributes: any) => html`\n <img\n name=${ifDefined(attributes.name)}\n src=${ifDefined(value)}\n alt=${ifDefined(attributes.alt)}\n style=\"max-width: 100%; max-height: 100%;\"\n />\n `,\n dependencies: [AltMixin]\n },\n boolean: {\n template: (value: string, attributes: any) => html`\n ${value === 'true' ? html`<label>${attributes.label || attributes.name || ''}</label>` : ''}\n `,\n dependencies: []\n },\n}\n"]}
@@ -79,7 +79,7 @@ function _templateObject22() {
79
79
  }
80
80
 
81
81
  function _templateObject21() {
82
- const data = _taggedTemplateLiteral(["\n <div data-index=", ">\n ", "\n <button type=\"button\" @click=", ">", "</button>\n </div>\n "]);
82
+ const data = _taggedTemplateLiteral(["\n <div data-index=", ">\n ", "\n <button type=\"button\" class=", " @click=", ">", "</button>\n </div>\n "]);
83
83
 
84
84
  _templateObject21 = function () {
85
85
  return data;
@@ -89,7 +89,7 @@ function _templateObject21() {
89
89
  }
90
90
 
91
91
  function _templateObject20() {
92
- const data = _taggedTemplateLiteral(["\n ", "\n <button type=\"button\" @click=", ">", "</button>\n "]);
92
+ const data = _taggedTemplateLiteral(["\n ", "\n <button type=\"button\" class=", " @click=", ">", "</button>\n "]);
93
93
 
94
94
  _templateObject20 = function () {
95
95
  return data;
@@ -358,7 +358,7 @@ export const formTemplates = {
358
358
  dependencies: [MultipleselectFormMixin, FormMixin]
359
359
  },
360
360
  multiple: {
361
- template: (_value, attributes) => html(_templateObject20(), (attributes.children || []).map((child, index) => html(_templateObject21(), attributes.name + index, child, () => attributes.removeItem(index), attributes.removeLabel)), attributes.addItem, attributes.addLabel),
361
+ template: (_value, attributes) => html(_templateObject20(), (attributes.children || []).map((child, index) => html(_templateObject21(), attributes.name + index, child, ifDefined(attributes.removeClass), () => attributes.removeItem(index), attributes.removeLabel)), ifDefined(attributes.addClass), attributes.addItem, attributes.addLabel),
362
362
  dependencies: [MultipleFormMixin, FormMixin]
363
363
  },
364
364
  multipleselect: {
@@ -1 +1 @@
1
- {"version":3,"sources":["formTemplatesDirectory.ts"],"names":["FormMixin","FormCheckboxMixin","FormMinMaxMixin","FormNumberMixin","FormDropdownMixin","FormCheckboxesMixin","FormRadioMixin","FormFileMixin","MultipleFormMixin","MultipleselectFormMixin","RangeMixin","FilterRangeFormMixin","ValueRichtextMixin","PatternMixin","FormStepMixin","FormLengthMixin","html","ifDefined","formTemplates","text","template","value","attributes","placeholder","name","id","pattern","title","required","autocomplete","maxlength","minlength","onChange","dependencies","textarea","checkbox","label","date","_value","originalValue","rangedate","startValue","endValue","number","min","max","step","rangenumber","hidden","dropdown","multiple","range","map","el","selectedValue","values","includes","Object","entries","enum","key","val","radio","multicheckbox","checkboxes","orderAsc","orderDesc","children","child","index","removeItem","removeLabel","addItem","addLabel","multipleselect","file","fileValue","selectFile","resetButtonHidden","resetFile","output","image","richtext","color","email","password","time"],"mappings":"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","sourcesContent":["import { FormMixin } from '../templatesDependencies/formMixin';\nimport { FormCheckboxMixin } from '../templatesDependencies/formCheckboxMixin';\nimport { FormMinMaxMixin } from '../templatesDependencies/formMinMaxMixin';\nimport { FormNumberMixin } from '../templatesDependencies/formNumberMixin';\nimport { FormDropdownMixin } from '../templatesDependencies/formDropdownMixin';\nimport { FormCheckboxesMixin } from '../templatesDependencies/formCheckboxesMixin';\nimport { FormRadioMixin } from '../templatesDependencies/formRadioMixin';\nimport { FormFileMixin } from '../templatesDependencies/formFileMixin';\nimport { MultipleFormMixin } from '../templatesDependencies/multipleFormMixin';\nimport { MultipleselectFormMixin } from '../templatesDependencies/multipleselectFormMixin';\nimport { RangeMixin } from '../templatesDependencies/rangeMixin';\nimport { FilterRangeFormMixin } from '../templatesDependencies/filterRangeFormMixin';\nimport { ValueRichtextMixin } from '../templatesDependencies/valueRichtextMixin';\nimport { PatternMixin } from '../templatesDependencies/patternMixin';\nimport { FormStepMixin } from '../templatesDependencies/formStepMixin';\nimport { FormLengthMixin } from '../templatesDependencies/formLengthMixin';\n\nimport { html } from 'lit-html';\nimport { ifDefined } from 'lit-html/directives/if-defined';\n\nexport const formTemplates = {\n text: {\n template: (value: string, attributes: any) => html`\n <input\n type=\"text\"\n placeholder=${ifDefined(attributes.placeholder)}\n name=${ifDefined(attributes.name)}\n id=${ifDefined(attributes.id)}\n value=${value || ''}\n pattern=${ifDefined(attributes.pattern)}\n title=${ifDefined(attributes.title)}\n ?required=${attributes.required}\n autocomplete=${ifDefined(attributes.autocomplete)}\n data-holder\n maxlength=${ifDefined(attributes.maxlength)}\n minlength=${ifDefined(attributes.minlength)}\n @change=${attributes.onChange}\n />\n `,\n dependencies: [ FormMixin, PatternMixin, FormLengthMixin ]\n },\n textarea: {\n template: (value: string, attributes: any) => html`\n <textarea\n name=${ifDefined(attributes.name)}\n id=${ifDefined(attributes.id)}\n placeholder=${ifDefined(attributes.placeholder)}\n data-holder\n ?required=${attributes.required}\n autocomplete=${ifDefined(attributes.autocomplete)}\n maxlength=${ifDefined(attributes.maxlength)}\n minlength=${ifDefined(attributes.minlength)}\n @change=${attributes.onChange}\n >${value}</textarea>\n `,\n dependencies: [ FormMixin, FormLengthMixin ]\n },\n checkbox: {\n template: (value: string, attributes: any) => html`\n <label>\n <input\n data-holder\n type=\"checkbox\"\n name=${ifDefined(attributes.name)}\n ?required=${attributes.required}\n ?checked=${value === 'true'}\n @change=${attributes.onChange}\n >\n <div>${attributes.label || attributes.name}</div>\n </label>\n `,\n dependencies: [ FormCheckboxMixin, FormMixin ]\n },\n date: {\n template: (_value: string, attributes: any) => html`\n <input\n type=\"date\"\n placeholder=${ifDefined(attributes.placeholder)}\n name=${ifDefined(attributes.name)}\n id=${ifDefined(attributes.id)}\n ?required=${attributes.required}\n value=${ifDefined(attributes.originalValue)}\n data-holder\n @change=${attributes.onChange}\n />\n `,\n dependencies: [ FormMixin ]\n },\n rangedate: {\n template: (_value: string, attributes: any) => html`\n <input\n data-holder\n type=\"date\"\n name=\"${attributes.name || ''}-start\"\n @change=${attributes.onChange}\n value=${ifDefined(attributes.startValue)}\n />\n <input\n data-holder\n type=\"date\"\n name=\"${attributes.name || ''}-end\"\n @change=${attributes.onChange}\n value=${ifDefined(attributes.endValue)}\n />\n `,\n dependencies: [ FilterRangeFormMixin, FormMixin ]\n },\n number: {\n template: (value: string, attributes: any) => html`\n <input\n type=\"number\"\n placeholder=${ifDefined(attributes.placeholder)}\n name=${ifDefined(attributes.name)}\n id=${ifDefined(attributes.id)}\n value=${value}\n min=${ifDefined(attributes.min)}\n max=${ifDefined(attributes.max)}\n step=${ifDefined(attributes.step)}\n ?required=${attributes.required}\n data-holder\n @change=${attributes.onChange}\n />\n `,\n dependencies: [ FormNumberMixin, FormMinMaxMixin, FormMixin, FormStepMixin ]\n },\n rangenumber: {\n template: (_value: string, attributes: any) => html`\n <input\n data-holder\n type=\"number\"\n name=\"${attributes.name || ''}-start\"\n @change=${attributes.onChange}\n value=${ifDefined(attributes.startValue)}\n />\n <input\n data-holder\n type=\"number\"\n name=\"${attributes.name || ''}-end\"\n @change=${attributes.onChange}\n value=${ifDefined(attributes.endValue)}\n />\n `,\n dependencies: [ FilterRangeFormMixin, FormNumberMixin, FormMixin ]\n },\n hidden: {\n template: (value: string, attributes: any) => html`\n <input\n type=\"hidden\"\n name=${ifDefined(attributes.name)}\n value=${value}\n data-holder\n @change=${attributes.onChange}\n />\n `,\n dependencies: [ FormMixin ]\n },\n dropdown: {\n template: (value: string, attributes: any) => html`\n <select\n name=${ifDefined(attributes.name)}\n id=${ifDefined(attributes.id)}\n data-holder\n ?required=${attributes.required}\n ?multiple=${attributes.multiple}\n autocomplete=${ifDefined(attributes.autocomplete)}\n @change=${attributes.onChange}\n >\n ${!(attributes.multiple || attributes.autocomplete) ? html`\n <option value=\"\" ?selected=${value === \"\"}>\n ${attributes.placeholder || '-'}\n </option>\n ` : ''}\n ${(attributes.range || []).map(el => html`\n <option\n value=${el.value}\n ?selected=${!attributes.multiple ? value === el.selectedValue : attributes.values.includes(el.selectedValue)}\n >\n ${el.label}\n </option>\n `)}\n ${Object.entries(attributes.enum || []).map(([key, val]) => html`\n <option\n value=\"${key}\"\n ?selected=${!attributes.multiple ? value === key : attributes.values.includes(key)}\n >\n ${val}\n </option>\n `)}\n </select>\n `,\n dependencies: [ FormDropdownMixin, FormMixin, RangeMixin ]\n },\n radio: {\n template: (value: string, attributes: any) => html`\n <div\n name=${ifDefined(attributes.name)}\n >\n ${(attributes.range || []).map(el => html`\n <label>\n <input\n type=\"radio\"\n name=${ifDefined(attributes.id)}\n value=${el.value}\n ?required=${attributes.required}\n ?checked=${value === el.selectedValue}\n > <span>${el.label}</span>\n </label>\n `)}\n ${Object.entries(attributes.enum || []).map(([key, val]) => html`\n <label>\n <input\n type=\"radio\"\n value=\"${key}\"\n name=${ifDefined(attributes.id)}\n ?required=${attributes.required}\n ?checked=${value === key}\n > <span>${val}</span>\n </label>\n `)}\n `,\n dependencies: [ FormRadioMixin, FormMixin, RangeMixin ]\n },\n multicheckbox: {\n template: (_value: string, attributes: any) => html`\n <div\n name=${ifDefined(attributes.name)}\n >\n ${(attributes.range || []).map(el => html`\n <label>\n <input\n type=\"checkbox\"\n value=${el.value}\n ?checked=${attributes.values.includes(el.selectedValue)}\n /> <span>${el.label}</span>\n </label>\n `)}\n ${Object.entries(attributes.enum || [])\n .map(([key, val]) => html`\n <label>\n <input type=\"checkbox\"\n value=\"${key}\"\n /> <span>${val}</span>\n </label>\n `)}\n </select>\n `,\n dependencies: [ FormCheckboxesMixin, FormMixin, RangeMixin ]\n },\n checkboxes: {\n template: (_value: string, attributes: any) => html`\n <solid-form-multicheckbox\n data-holder\n name=${ifDefined(attributes.name)}\n range=${ifDefined(attributes.range)}\n enum=${ifDefined(attributes.enum)}\n values=${ifDefined(attributes.values)}\n order-asc=${ifDefined(attributes.orderAsc)}\n order-desc=${ifDefined(attributes.orderDesc)}\n ?required=${attributes.required}\n ></solid-form-multicheckbox>\n `,\n dependencies: [ MultipleselectFormMixin, FormMixin ]\n },\n multiple: {\n template: (_value: string, attributes: any) => html`\n ${(attributes.children || []).map((child, index) => html`\n <div data-index=${attributes.name + index}>\n ${child}\n <button type=\"button\" @click=${() => attributes.removeItem(index)}>${attributes.removeLabel}</button>\n </div>\n `)}\n <button type=\"button\" @click=${attributes.addItem}>${attributes.addLabel}</button>\n `,\n dependencies: [ MultipleFormMixin, FormMixin ]\n },\n multipleselect: {\n template: (_value: string, attributes: any) => html`\n <solid-form-dropdown\n data-holder\n name=${ifDefined(attributes.name)}\n data-id=${ifDefined(attributes.id)}\n range=${ifDefined(attributes.range)}\n values=${ifDefined(attributes.values)}\n order-asc=${ifDefined(attributes.orderAsc)}\n order-desc=${ifDefined(attributes.orderDesc)}\n ?required=${attributes.required}\n multiple\n ></solid-form-dropdown>\n `,\n dependencies: [ MultipleselectFormMixin, FormMixin ]\n },\n file: {\n template: (value: string, attributes: any) => html`\n <div>\n <input\n data-holder\n type=\"text\"\n ?required=${attributes.required}\n name=${ifDefined(attributes.name)}\n value=${value || ''}\n >\n <input\n type=\"file\"\n id=${ifDefined(attributes.id)}\n value=${ifDefined(attributes.fileValue)}\n @change=${attributes.selectFile}\n />\n <button\n ?hidden=${attributes.resetButtonHidden}\n @click=${attributes.resetFile}\n >×</button>\n <span>${attributes.output}</span>\n </div>\n `,\n dependencies: [ FormFileMixin, FormMixin ]\n },\n image: {\n template: (value: string, attributes: any) => html`\n <div>\n <input\n data-holder\n type=\"text\"\n name=${ifDefined(attributes.name)}\n value=${value || ''}\n ?required=${attributes.required}\n >\n <input\n type=\"file\"\n accept=\"image/*\"\n id=${ifDefined(attributes.id)}\n value=${ifDefined(attributes.fileValue)}\n @change=${attributes.selectFile}\n />\n <img\n src=${value || ''}\n ?hidden=${value === ''}\n />\n <button\n ?hidden=${attributes.resetButtonHidden}\n @click=${attributes.resetFile}\n >×</button>\n <span>${attributes.output}</span>\n </div>\n `,\n dependencies: [ FormFileMixin, FormMixin ]\n },\n richtext: {\n template: (_value: string, attributes: any) => html`\n <div \n data-richtext\n name=${ifDefined(attributes.name)}\n data-holder\n ></div>\n `,\n dependencies: [ ValueRichtextMixin, FormMixin ]\n },\n color: {\n template: (_value: string, attributes: any) => html`\n <input\n type=\"color\"\n placeholder=${ifDefined(attributes.placeholder)}\n id=${ifDefined(attributes.id)}\n name=${ifDefined(attributes.name)}\n ?required=${attributes.required}\n value=${ifDefined(attributes.originalValue)}\n data-holder\n @change=${attributes.onChange}\n />\n `,\n dependencies: [ FormMixin ]\n },\n email: {\n template: (value: string, attributes: any) => html`\n <input\n type=\"email\"\n placeholder=${ifDefined(attributes.placeholder)}\n id=${ifDefined(attributes.id)}\n name=${ifDefined(attributes.name)}\n value=${value || ''}\n ?required=${attributes.required}\n data-holder\n maxlength=${ifDefined(attributes.maxlength)}\n minlength=${ifDefined(attributes.minlength)}\n @change=${attributes.onChange}\n />\n `,\n dependencies: [ FormMixin, FormLengthMixin ]\n },\n password: {\n template: (value: string, attributes: any) => html`\n <input\n type=\"password\"\n placeholder=${ifDefined(attributes.placeholder)}\n id=${ifDefined(attributes.id)}\n name=${ifDefined(attributes.name)}\n value=${value || ''}\n ?required=${attributes.required}\n pattern=${ifDefined(attributes.pattern)}\n title=${ifDefined(attributes.title)}\n data-holder\n maxlength=${ifDefined(attributes.maxlength)}\n minlength=${ifDefined(attributes.minlength)}\n @change=${attributes.onChange}\n />\n `,\n dependencies: [ FormMixin, PatternMixin, FormLengthMixin ]\n },\n time: {\n template: (value: string, attributes: any) => html`\n <input\n type=\"time\"\n placeholder=${ifDefined(attributes.placeholder)}\n name=${ifDefined(attributes.name)}\n id=${ifDefined(attributes.id)}\n value=${value || ''}\n min=${ifDefined(attributes.min)}\n max=${ifDefined(attributes.max)}\n step=${ifDefined(attributes.step)}\n ?required=${attributes.required}\n data-holder\n @change=${attributes.onChange}\n />\n `,\n dependencies: [ FormMixin, FormMinMaxMixin, FormStepMixin ]\n },\n}\n"]}
1
+ {"version":3,"sources":["formTemplatesDirectory.ts"],"names":["FormMixin","FormCheckboxMixin","FormMinMaxMixin","FormNumberMixin","FormDropdownMixin","FormCheckboxesMixin","FormRadioMixin","FormFileMixin","MultipleFormMixin","MultipleselectFormMixin","RangeMixin","FilterRangeFormMixin","ValueRichtextMixin","PatternMixin","FormStepMixin","FormLengthMixin","html","ifDefined","formTemplates","text","template","value","attributes","placeholder","name","id","pattern","title","required","autocomplete","maxlength","minlength","onChange","dependencies","textarea","checkbox","label","date","_value","originalValue","rangedate","startValue","endValue","number","min","max","step","rangenumber","hidden","dropdown","multiple","range","map","el","selectedValue","values","includes","Object","entries","enum","key","val","radio","multicheckbox","checkboxes","orderAsc","orderDesc","children","child","index","removeClass","removeItem","removeLabel","addClass","addItem","addLabel","multipleselect","file","fileValue","selectFile","resetButtonHidden","resetFile","output","image","richtext","color","email","password","time"],"mappings":"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","sourcesContent":["import { FormMixin } from '../templatesDependencies/formMixin';\nimport { FormCheckboxMixin } from '../templatesDependencies/formCheckboxMixin';\nimport { FormMinMaxMixin } from '../templatesDependencies/formMinMaxMixin';\nimport { FormNumberMixin } from '../templatesDependencies/formNumberMixin';\nimport { FormDropdownMixin } from '../templatesDependencies/formDropdownMixin';\nimport { FormCheckboxesMixin } from '../templatesDependencies/formCheckboxesMixin';\nimport { FormRadioMixin } from '../templatesDependencies/formRadioMixin';\nimport { FormFileMixin } from '../templatesDependencies/formFileMixin';\nimport { MultipleFormMixin } from '../templatesDependencies/multipleFormMixin';\nimport { MultipleselectFormMixin } from '../templatesDependencies/multipleselectFormMixin';\nimport { RangeMixin } from '../templatesDependencies/rangeMixin';\nimport { FilterRangeFormMixin } from '../templatesDependencies/filterRangeFormMixin';\nimport { ValueRichtextMixin } from '../templatesDependencies/valueRichtextMixin';\nimport { PatternMixin } from '../templatesDependencies/patternMixin';\nimport { FormStepMixin } from '../templatesDependencies/formStepMixin';\nimport { FormLengthMixin } from '../templatesDependencies/formLengthMixin';\n\nimport { html } from 'lit-html';\nimport { ifDefined } from 'lit-html/directives/if-defined';\n\nexport const formTemplates = {\n text: {\n template: (value: string, attributes: any) => html`\n <input\n type=\"text\"\n placeholder=${ifDefined(attributes.placeholder)}\n name=${ifDefined(attributes.name)}\n id=${ifDefined(attributes.id)}\n value=${value || ''}\n pattern=${ifDefined(attributes.pattern)}\n title=${ifDefined(attributes.title)}\n ?required=${attributes.required}\n autocomplete=${ifDefined(attributes.autocomplete)}\n data-holder\n maxlength=${ifDefined(attributes.maxlength)}\n minlength=${ifDefined(attributes.minlength)}\n @change=${attributes.onChange}\n />\n `,\n dependencies: [ FormMixin, PatternMixin, FormLengthMixin ]\n },\n textarea: {\n template: (value: string, attributes: any) => html`\n <textarea\n name=${ifDefined(attributes.name)}\n id=${ifDefined(attributes.id)}\n placeholder=${ifDefined(attributes.placeholder)}\n data-holder\n ?required=${attributes.required}\n autocomplete=${ifDefined(attributes.autocomplete)}\n maxlength=${ifDefined(attributes.maxlength)}\n minlength=${ifDefined(attributes.minlength)}\n @change=${attributes.onChange}\n >${value}</textarea>\n `,\n dependencies: [ FormMixin, FormLengthMixin ]\n },\n checkbox: {\n template: (value: string, attributes: any) => html`\n <label>\n <input\n data-holder\n type=\"checkbox\"\n name=${ifDefined(attributes.name)}\n ?required=${attributes.required}\n ?checked=${value === 'true'}\n @change=${attributes.onChange}\n >\n <div>${attributes.label || attributes.name}</div>\n </label>\n `,\n dependencies: [ FormCheckboxMixin, FormMixin ]\n },\n date: {\n template: (_value: string, attributes: any) => html`\n <input\n type=\"date\"\n placeholder=${ifDefined(attributes.placeholder)}\n name=${ifDefined(attributes.name)}\n id=${ifDefined(attributes.id)}\n ?required=${attributes.required}\n value=${ifDefined(attributes.originalValue)}\n data-holder\n @change=${attributes.onChange}\n />\n `,\n dependencies: [ FormMixin ]\n },\n rangedate: {\n template: (_value: string, attributes: any) => html`\n <input\n data-holder\n type=\"date\"\n name=\"${attributes.name || ''}-start\"\n @change=${attributes.onChange}\n value=${ifDefined(attributes.startValue)}\n />\n <input\n data-holder\n type=\"date\"\n name=\"${attributes.name || ''}-end\"\n @change=${attributes.onChange}\n value=${ifDefined(attributes.endValue)}\n />\n `,\n dependencies: [ FilterRangeFormMixin, FormMixin ]\n },\n number: {\n template: (value: string, attributes: any) => html`\n <input\n type=\"number\"\n placeholder=${ifDefined(attributes.placeholder)}\n name=${ifDefined(attributes.name)}\n id=${ifDefined(attributes.id)}\n value=${value}\n min=${ifDefined(attributes.min)}\n max=${ifDefined(attributes.max)}\n step=${ifDefined(attributes.step)}\n ?required=${attributes.required}\n data-holder\n @change=${attributes.onChange}\n />\n `,\n dependencies: [ FormNumberMixin, FormMinMaxMixin, FormMixin, FormStepMixin ]\n },\n rangenumber: {\n template: (_value: string, attributes: any) => html`\n <input\n data-holder\n type=\"number\"\n name=\"${attributes.name || ''}-start\"\n @change=${attributes.onChange}\n value=${ifDefined(attributes.startValue)}\n />\n <input\n data-holder\n type=\"number\"\n name=\"${attributes.name || ''}-end\"\n @change=${attributes.onChange}\n value=${ifDefined(attributes.endValue)}\n />\n `,\n dependencies: [ FilterRangeFormMixin, FormNumberMixin, FormMixin ]\n },\n hidden: {\n template: (value: string, attributes: any) => html`\n <input\n type=\"hidden\"\n name=${ifDefined(attributes.name)}\n value=${value}\n data-holder\n @change=${attributes.onChange}\n />\n `,\n dependencies: [ FormMixin ]\n },\n dropdown: {\n template: (value: string, attributes: any) => html`\n <select\n name=${ifDefined(attributes.name)}\n id=${ifDefined(attributes.id)}\n data-holder\n ?required=${attributes.required}\n ?multiple=${attributes.multiple}\n autocomplete=${ifDefined(attributes.autocomplete)}\n @change=${attributes.onChange}\n >\n ${!(attributes.multiple || attributes.autocomplete) ? html`\n <option value=\"\" ?selected=${value === \"\"}>\n ${attributes.placeholder || '-'}\n </option>\n ` : ''}\n ${(attributes.range || []).map(el => html`\n <option\n value=${el.value}\n ?selected=${!attributes.multiple ? value === el.selectedValue : attributes.values.includes(el.selectedValue)}\n >\n ${el.label}\n </option>\n `)}\n ${Object.entries(attributes.enum || []).map(([key, val]) => html`\n <option\n value=\"${key}\"\n ?selected=${!attributes.multiple ? value === key : attributes.values.includes(key)}\n >\n ${val}\n </option>\n `)}\n </select>\n `,\n dependencies: [ FormDropdownMixin, FormMixin, RangeMixin ]\n },\n radio: {\n template: (value: string, attributes: any) => html`\n <div\n name=${ifDefined(attributes.name)}\n >\n ${(attributes.range || []).map(el => html`\n <label>\n <input\n type=\"radio\"\n name=${ifDefined(attributes.id)}\n value=${el.value}\n ?required=${attributes.required}\n ?checked=${value === el.selectedValue}\n > <span>${el.label}</span>\n </label>\n `)}\n ${Object.entries(attributes.enum || []).map(([key, val]) => html`\n <label>\n <input\n type=\"radio\"\n value=\"${key}\"\n name=${ifDefined(attributes.id)}\n ?required=${attributes.required}\n ?checked=${value === key}\n > <span>${val}</span>\n </label>\n `)}\n `,\n dependencies: [ FormRadioMixin, FormMixin, RangeMixin ]\n },\n multicheckbox: {\n template: (_value: string, attributes: any) => html`\n <div\n name=${ifDefined(attributes.name)}\n >\n ${(attributes.range || []).map(el => html`\n <label>\n <input\n type=\"checkbox\"\n value=${el.value}\n ?checked=${attributes.values.includes(el.selectedValue)}\n /> <span>${el.label}</span>\n </label>\n `)}\n ${Object.entries(attributes.enum || [])\n .map(([key, val]) => html`\n <label>\n <input type=\"checkbox\"\n value=\"${key}\"\n /> <span>${val}</span>\n </label>\n `)}\n </select>\n `,\n dependencies: [ FormCheckboxesMixin, FormMixin, RangeMixin ]\n },\n checkboxes: {\n template: (_value: string, attributes: any) => html`\n <solid-form-multicheckbox\n data-holder\n name=${ifDefined(attributes.name)}\n range=${ifDefined(attributes.range)}\n enum=${ifDefined(attributes.enum)}\n values=${ifDefined(attributes.values)}\n order-asc=${ifDefined(attributes.orderAsc)}\n order-desc=${ifDefined(attributes.orderDesc)}\n ?required=${attributes.required}\n ></solid-form-multicheckbox>\n `,\n dependencies: [ MultipleselectFormMixin, FormMixin ]\n },\n multiple: {\n template: (_value: string, attributes: any) => html`\n ${(attributes.children || []).map((child, index) => html`\n <div data-index=${attributes.name + index}>\n ${child}\n <button type=\"button\" class=${ifDefined(attributes.removeClass)} @click=${() => attributes.removeItem(index)}>${attributes.removeLabel}</button>\n </div>\n `)}\n <button type=\"button\" class=${ifDefined(attributes.addClass)} @click=${attributes.addItem}>${attributes.addLabel}</button>\n `,\n dependencies: [ MultipleFormMixin, FormMixin ]\n },\n multipleselect: {\n template: (_value: string, attributes: any) => html`\n <solid-form-dropdown\n data-holder\n name=${ifDefined(attributes.name)}\n data-id=${ifDefined(attributes.id)}\n range=${ifDefined(attributes.range)}\n values=${ifDefined(attributes.values)}\n order-asc=${ifDefined(attributes.orderAsc)}\n order-desc=${ifDefined(attributes.orderDesc)}\n ?required=${attributes.required}\n multiple\n ></solid-form-dropdown>\n `,\n dependencies: [ MultipleselectFormMixin, FormMixin ]\n },\n file: {\n template: (value: string, attributes: any) => html`\n <div>\n <input\n data-holder\n type=\"text\"\n ?required=${attributes.required}\n name=${ifDefined(attributes.name)}\n value=${value || ''}\n >\n <input\n type=\"file\"\n id=${ifDefined(attributes.id)}\n value=${ifDefined(attributes.fileValue)}\n @change=${attributes.selectFile}\n />\n <button\n ?hidden=${attributes.resetButtonHidden}\n @click=${attributes.resetFile}\n >×</button>\n <span>${attributes.output}</span>\n </div>\n `,\n dependencies: [ FormFileMixin, FormMixin ]\n },\n image: {\n template: (value: string, attributes: any) => html`\n <div>\n <input\n data-holder\n type=\"text\"\n name=${ifDefined(attributes.name)}\n value=${value || ''}\n ?required=${attributes.required}\n >\n <input\n type=\"file\"\n accept=\"image/*\"\n id=${ifDefined(attributes.id)}\n value=${ifDefined(attributes.fileValue)}\n @change=${attributes.selectFile}\n />\n <img\n src=${value || ''}\n ?hidden=${value === ''}\n />\n <button\n ?hidden=${attributes.resetButtonHidden}\n @click=${attributes.resetFile}\n >×</button>\n <span>${attributes.output}</span>\n </div>\n `,\n dependencies: [ FormFileMixin, FormMixin ]\n },\n richtext: {\n template: (_value: string, attributes: any) => html`\n <div \n data-richtext\n name=${ifDefined(attributes.name)}\n data-holder\n ></div>\n `,\n dependencies: [ ValueRichtextMixin, FormMixin ]\n },\n color: {\n template: (_value: string, attributes: any) => html`\n <input\n type=\"color\"\n placeholder=${ifDefined(attributes.placeholder)}\n id=${ifDefined(attributes.id)}\n name=${ifDefined(attributes.name)}\n ?required=${attributes.required}\n value=${ifDefined(attributes.originalValue)}\n data-holder\n @change=${attributes.onChange}\n />\n `,\n dependencies: [ FormMixin ]\n },\n email: {\n template: (value: string, attributes: any) => html`\n <input\n type=\"email\"\n placeholder=${ifDefined(attributes.placeholder)}\n id=${ifDefined(attributes.id)}\n name=${ifDefined(attributes.name)}\n value=${value || ''}\n ?required=${attributes.required}\n data-holder\n maxlength=${ifDefined(attributes.maxlength)}\n minlength=${ifDefined(attributes.minlength)}\n @change=${attributes.onChange}\n />\n `,\n dependencies: [ FormMixin, FormLengthMixin ]\n },\n password: {\n template: (value: string, attributes: any) => html`\n <input\n type=\"password\"\n placeholder=${ifDefined(attributes.placeholder)}\n id=${ifDefined(attributes.id)}\n name=${ifDefined(attributes.name)}\n value=${value || ''}\n ?required=${attributes.required}\n pattern=${ifDefined(attributes.pattern)}\n title=${ifDefined(attributes.title)}\n data-holder\n maxlength=${ifDefined(attributes.maxlength)}\n minlength=${ifDefined(attributes.minlength)}\n @change=${attributes.onChange}\n />\n `,\n dependencies: [ FormMixin, PatternMixin, FormLengthMixin ]\n },\n time: {\n template: (value: string, attributes: any) => html`\n <input\n type=\"time\"\n placeholder=${ifDefined(attributes.placeholder)}\n name=${ifDefined(attributes.name)}\n id=${ifDefined(attributes.id)}\n value=${value || ''}\n min=${ifDefined(attributes.min)}\n max=${ifDefined(attributes.max)}\n step=${ifDefined(attributes.step)}\n ?required=${attributes.required}\n data-holder\n @change=${attributes.onChange}\n />\n `,\n dependencies: [ FormMixin, FormMinMaxMixin, FormStepMixin ]\n },\n}\n"]}
@@ -0,0 +1,14 @@
1
+ const LinkTextMixin = {
2
+ name: 'link-text-mixin',
3
+ attributes: {
4
+ linkText: {
5
+ type: String,
6
+ default: '',
7
+ callback: function (newValue) {
8
+ this.addToAttributes(newValue, 'linkText');
9
+ }
10
+ }
11
+ }
12
+ };
13
+ export { LinkTextMixin };
14
+ //# sourceMappingURL=linkTextMixin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["linkTextMixin.ts"],"names":["LinkTextMixin","name","attributes","linkText","type","String","default","callback","newValue","addToAttributes"],"mappings":"AAAA,MAAMA,aAAa,GAAG;AACpBC,EAAAA,IAAI,EAAE,iBADc;AAEpBC,EAAAA,UAAU,EAAE;AACVC,IAAAA,QAAQ,EAAE;AACRC,MAAAA,IAAI,EAAEC,MADE;AAERC,MAAAA,OAAO,EAAE,EAFD;AAGRC,MAAAA,QAAQ,EAAE,UAAUC,QAAV,EAA4B;AACpC,aAAKC,eAAL,CAAqBD,QAArB,EAA+B,UAA/B;AACD;AALO;AADA;AAFQ,CAAtB;AAaA,SACER,aADF","sourcesContent":["const LinkTextMixin = {\n name: 'link-text-mixin',\n attributes: {\n linkText: {\n type: String,\n default: '',\n callback: function (newValue: string) {\n this.addToAttributes(newValue, 'linkText');\n }\n },\n },\n}\n\nexport {\n LinkTextMixin\n}"]}
@@ -26,6 +26,22 @@ const MultipleFormMixin = {
26
26
  range: {
27
27
  type: String,
28
28
  default: ''
29
+ },
30
+ addClass: {
31
+ type: String,
32
+ default: undefined,
33
+ callback: function (value) {
34
+ if (value !== this.listAttributes['addClass']) this.listAttributes['addClass'] = value;
35
+ this.planRender();
36
+ }
37
+ },
38
+ removeClass: {
39
+ type: String,
40
+ default: undefined,
41
+ callback: function (value) {
42
+ if (value !== this.listAttributes['removeClass']) this.listAttributes['removeClass'] = value;
43
+ this.planRender();
44
+ }
29
45
  }
30
46
  },
31
47
 
@@ -34,6 +50,8 @@ const MultipleFormMixin = {
34
50
  this.listAttributes['children'] = [];
35
51
  this.listAttributes['addLabel'] = this.addLabel;
36
52
  this.listAttributes['removeLabel'] = this.removeLabel;
53
+ this.listAttributes['addClass'] = this.addClass;
54
+ this.listAttributes['removeClass'] = this.removeClass;
37
55
 
38
56
  this.listAttributes['addItem'] = () => {
39
57
  this.insertWidget();
@@ -1 +1 @@
1
- {"version":3,"sources":["multipleFormMixin.ts"],"names":["StoreMixin","MultipleFormMixin","name","use","attributes","widget","type","String","default","addLabel","callback","value","listAttributes","planRender","removeLabel","range","created","listValueTransformations","push","setDataSrc","bind","insertWidget","index","element","querySelector","remove","dispatchEvent","Event","bubbles","dataSrc","nextProcessor","shift","populate","resource","document","createElement","Object","keys","toggleAttribute","setAttribute","empty","getValue","dataHolder","Array","from","map","getValueFromElement","multiple"],"mappings":"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","sourcesContent":["import { StoreMixin } from '../../mixins/storeMixin';\n\nconst MultipleFormMixin = {\n name: 'multiple-form-mixin',\n use: [ StoreMixin ],\n attributes: {\n widget: {\n type: String,\n default: 'solid-form-text'\n },\n addLabel: {\n type: String,\n default: '+',\n callback: function(value) {\n if (value !== this.listAttributes['addLabel']) this.listAttributes['addLabel'] = value;\n this.planRender();\n }\n },\n removeLabel: {\n type: String,\n default: '×',\n callback: function(value) {\n if (value !== this.listAttributes['removeLabel']) this.listAttributes['removeLabel'] = value;\n this.planRender();\n }\n },\n range: {\n type: String,\n default: '',\n }\n },\n created() {\n this.listValueTransformations.push(this.setDataSrc.bind(this));\n\n this.listAttributes['children'] = [];\n this.listAttributes['addLabel'] = this.addLabel;\n this.listAttributes['removeLabel'] = this.removeLabel;\n this.listAttributes['addItem'] = () => {\n this.insertWidget();\n this.planRender();\n };\n this.listAttributes['removeItem'] = (index) => {\n this.element.querySelector(`[data-index=\"${this.name + index}\"]`).remove();\n this.element.dispatchEvent(new Event('change', {bubbles: true}));\n };\n },\n setDataSrc(value: string, listValueTransformations: Function[]) {\n if (value && value !== this.dataSrc) this.dataSrc = value;\n const nextProcessor = listValueTransformations.shift();\n if(nextProcessor) nextProcessor(value, listValueTransformations);\n },\n populate() {\n if (!this.resource || !this.resource['ldp:contains']) return;\n\n this.listAttributes['children'] = []; // reset list\n\n // set value in form\n for (let resource of this.resource['ldp:contains']) { // for each resource\n this.insertWidget(resource['@id']); // create a widget\n }\n this.planRender();\n },\n insertWidget(value: string = '') {\n if (!this.widget) return;\n const widget = document.createElement(this.widget);\n const attributes = {\n 'data-holder': true,\n 'name': this.name,\n 'value': value,\n 'range': this.range\n };\n for (let name of Object.keys(attributes)) {\n if (typeof attributes[name] === \"boolean\") widget.toggleAttribute(name, attributes[name]);\n else widget.setAttribute(name, attributes[name]);\n }\n this.listAttributes['children'].push(widget);\n },\n empty() {\n this.listAttributes['children'] = [];\n this.planRender();\n },\n getValue() {\n if (!this.dataHolder) return [];\n return Array.from(this.dataHolder).map((element: any) => this.getValueFromElement(element));\n },\n get type() {\n return 'resource';\n },\n get multiple() {\n return true;\n }\n\n}\n\nexport {\n MultipleFormMixin\n}"]}
1
+ {"version":3,"sources":["multipleFormMixin.ts"],"names":["StoreMixin","MultipleFormMixin","name","use","attributes","widget","type","String","default","addLabel","callback","value","listAttributes","planRender","removeLabel","range","addClass","undefined","removeClass","created","listValueTransformations","push","setDataSrc","bind","insertWidget","index","element","querySelector","remove","dispatchEvent","Event","bubbles","dataSrc","nextProcessor","shift","populate","resource","document","createElement","Object","keys","toggleAttribute","setAttribute","empty","getValue","dataHolder","Array","from","map","getValueFromElement","multiple"],"mappings":"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","sourcesContent":["import { StoreMixin } from '../../mixins/storeMixin';\n\nconst MultipleFormMixin = {\n name: 'multiple-form-mixin',\n use: [ StoreMixin ],\n attributes: {\n widget: {\n type: String,\n default: 'solid-form-text'\n },\n addLabel: {\n type: String,\n default: '+',\n callback: function(value) {\n if (value !== this.listAttributes['addLabel']) this.listAttributes['addLabel'] = value;\n this.planRender();\n }\n },\n removeLabel: {\n type: String,\n default: '×',\n callback: function(value) {\n if (value !== this.listAttributes['removeLabel']) this.listAttributes['removeLabel'] = value;\n this.planRender();\n }\n },\n range: {\n type: String,\n default: '',\n \n },\n addClass: {\n type: String,\n default: undefined,\n callback: function(value) {\n if (value !== this.listAttributes['addClass']) this.listAttributes['addClass'] = value;\n this.planRender();\n }\n },\n removeClass: {\n type: String,\n default: undefined,\n callback: function(value) {\n if (value !== this.listAttributes['removeClass']) this.listAttributes['removeClass'] = value;\n this.planRender();\n }\n }\n },\n created() {\n this.listValueTransformations.push(this.setDataSrc.bind(this));\n\n this.listAttributes['children'] = [];\n this.listAttributes['addLabel'] = this.addLabel;\n this.listAttributes['removeLabel'] = this.removeLabel;\n this.listAttributes['addClass'] = this.addClass;\n this.listAttributes['removeClass'] = this.removeClass;\n this.listAttributes['addItem'] = () => {\n this.insertWidget();\n this.planRender();\n };\n this.listAttributes['removeItem'] = (index) => {\n this.element.querySelector(`[data-index=\"${this.name + index}\"]`).remove();\n this.element.dispatchEvent(new Event('change', {bubbles: true}));\n };\n },\n setDataSrc(value: string, listValueTransformations: Function[]) {\n if (value && value !== this.dataSrc) this.dataSrc = value;\n const nextProcessor = listValueTransformations.shift();\n if(nextProcessor) nextProcessor(value, listValueTransformations);\n },\n populate() {\n if (!this.resource || !this.resource['ldp:contains']) return;\n\n this.listAttributes['children'] = []; // reset list\n\n // set value in form\n for (let resource of this.resource['ldp:contains']) { // for each resource\n this.insertWidget(resource['@id']); // create a widget\n }\n this.planRender();\n },\n insertWidget(value: string = '') {\n if (!this.widget) return;\n const widget = document.createElement(this.widget);\n const attributes = {\n 'data-holder': true,\n 'name': this.name,\n 'value': value,\n 'range': this.range\n };\n for (let name of Object.keys(attributes)) {\n if (typeof attributes[name] === \"boolean\") widget.toggleAttribute(name, attributes[name]);\n else widget.setAttribute(name, attributes[name]);\n }\n this.listAttributes['children'].push(widget);\n },\n empty() {\n this.listAttributes['children'] = [];\n this.planRender();\n },\n getValue() {\n if (!this.dataHolder) return [];\n return Array.from(this.dataHolder).map((element: any) => this.getValueFromElement(element));\n },\n get type() {\n return 'resource';\n },\n get multiple() {\n return true;\n }\n\n}\n\nexport {\n MultipleFormMixin\n}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@startinblox/core",
3
- "version": "0.17.19",
3
+ "version": "0.17.21-beta.3",
4
4
  "description": "This is a series of web component respecting both the web components standards and the Linked Data Platform convention.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -82,7 +82,7 @@
82
82
  "babel-loader": "^8.2.2",
83
83
  "babel-plugin-remove-import-js-extension": "0.0.3",
84
84
  "body-parser": "^1.19.0",
85
- "cypress": "^6.6.0",
85
+ "cypress": "^6.9.1",
86
86
  "cypress-plugin-tab": "^1.0.5",
87
87
  "delta-markdown-for-quill": "0.0.9",
88
88
  "dialog-polyfill": "^0.5.6",