solid-ui 3.1.3-15 → 3.1.3-16

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.
Files changed (123) hide show
  1. package/dist/chat/message.cjs.js +1 -1
  2. package/dist/chat/message.cjs.js.map +1 -1
  3. package/dist/chat/message.esm.js +9 -8
  4. package/dist/chat/message.esm.js.map +1 -1
  5. package/dist/chunks/{DialogProvider-0HIHjONx.js → DialogProvider-BFllJFfq.js} +2 -2
  6. package/dist/chunks/{DialogProvider-0HIHjONx.js.map → DialogProvider-BFllJFfq.js.map} +1 -1
  7. package/dist/chunks/{account-Ch8h_zTv.js → account-CFAjLyt5.js} +10 -10
  8. package/dist/chunks/{account-Ch8h_zTv.js.map → account-CFAjLyt5.js.map} +1 -1
  9. package/dist/chunks/{auth-D4NUMSzc.js → auth-IpQoQHJx.js} +10 -10
  10. package/dist/chunks/{auth-D4NUMSzc.js.map → auth-IpQoQHJx.js.map} +1 -1
  11. package/dist/chunks/{avatar-BWtz4RlU.js → avatar-CJ728tvg.js} +3 -3
  12. package/dist/chunks/{avatar-BWtz4RlU.js.map → avatar-CJ728tvg.js.map} +1 -1
  13. package/dist/chunks/{button-BJyFKOKO.js → button-CnmrOsEf.js} +2 -2
  14. package/dist/chunks/{button-BJyFKOKO.js.map → button-CnmrOsEf.js.map} +1 -1
  15. package/dist/chunks/{chunk.64OG2H45-BADxAtEI.js → chunk.64OG2H45-BFgXEuP7.js} +2 -2
  16. package/dist/chunks/{chunk.64OG2H45-BADxAtEI.js.map → chunk.64OG2H45-BFgXEuP7.js.map} +1 -1
  17. package/dist/chunks/{combobox-0NWv9K3D.js → combobox-D3eGdicW.js} +3 -3
  18. package/dist/chunks/{combobox-0NWv9K3D.js.map → combobox-D3eGdicW.js.map} +1 -1
  19. package/dist/chunks/{combobox-option-B-twy1Zn.js → combobox-option-BcXpUnWu.js} +2 -2
  20. package/dist/chunks/{combobox-option-B-twy1Zn.js.map → combobox-option-BcXpUnWu.js.map} +1 -1
  21. package/dist/chunks/{components-DrP7BOrs.js → components-BHoVP7zE.js} +13 -11
  22. package/dist/chunks/{components-DrP7BOrs.js.map → components-BHoVP7zE.js.map} +1 -1
  23. package/dist/chunks/{dialog-CcMVH-Ut.js → dialog-D9Ellvjx.js} +4 -4
  24. package/dist/chunks/{dialog-CcMVH-Ut.js.map → dialog-D9Ellvjx.js.map} +1 -1
  25. package/dist/chunks/{dialog-content-DcD_s3hK.js → dialog-content-B2FmmQvH.js} +2 -2
  26. package/dist/chunks/{dialog-content-DcD_s3hK.js.map → dialog-content-B2FmmQvH.js.map} +1 -1
  27. package/dist/chunks/{dialog-footer-CHgSH7G5.js → dialog-footer-CxjoqQJF.js} +2 -2
  28. package/dist/chunks/{dialog-footer-CHgSH7G5.js.map → dialog-footer-CxjoqQJF.js.map} +1 -1
  29. package/dist/chunks/{dialog-header-BjellR7_.js → dialog-header-0dobhr5C.js} +2 -2
  30. package/dist/chunks/{dialog-header-BjellR7_.js.map → dialog-header-0dobhr5C.js.map} +1 -1
  31. package/dist/chunks/{dialogs-CeHuLUo5.js → dialogs-D2n-R0lI.js} +2 -2
  32. package/dist/chunks/{dialogs-CeHuLUo5.js.map → dialogs-D2n-R0lI.js.map} +1 -1
  33. package/dist/chunks/{dialogs-root-CvsON-m8.js → dialogs-root-ngPW2Q6K.js} +3 -3
  34. package/dist/chunks/{dialogs-root-CvsON-m8.js.map → dialogs-root-ngPW2Q6K.js.map} +1 -1
  35. package/dist/chunks/{guard-BIesxo_f.js → guard-CkfPYP4e.js} +3 -3
  36. package/dist/chunks/{guard-BIesxo_f.js.map → guard-CkfPYP4e.js.map} +1 -1
  37. package/dist/chunks/{index.esm-CyyOkz04.js → index.esm-BW2SOmt6.js} +343 -255
  38. package/dist/chunks/index.esm-BW2SOmt6.js.map +1 -0
  39. package/dist/chunks/{input-CFDN76Y5.js → input-BIhn_8nf.js} +2 -2
  40. package/dist/chunks/{input-CFDN76Y5.js.map → input-BIhn_8nf.js.map} +1 -1
  41. package/dist/chunks/{jsonld-52q5nY_t.js → jsonld-PfYSYrj9.js} +120 -99
  42. package/dist/chunks/{jsonld-52q5nY_t.js.map → jsonld-PfYSYrj9.js.map} +1 -1
  43. package/dist/chunks/{login-button-BhdKFJ-F.js → login-button-C7TABAml.js} +4 -4
  44. package/dist/chunks/{login-button-BhdKFJ-F.js.map → login-button-C7TABAml.js.map} +1 -1
  45. package/dist/chunks/{logout-button-ClbKS9ss.js → logout-button-BDpulDka.js} +4 -4
  46. package/dist/chunks/{logout-button-ClbKS9ss.js.map → logout-button-BDpulDka.js.map} +1 -1
  47. package/dist/chunks/{menu-DVgG-el5.js → menu-hMtmUkel.js} +3 -3
  48. package/dist/chunks/{menu-DVgG-el5.js.map → menu-hMtmUkel.js.map} +1 -1
  49. package/dist/chunks/{menu-item-Bj3NgLzB.js → menu-item-BdCkmJol.js} +2 -2
  50. package/dist/chunks/{menu-item-Bj3NgLzB.js.map → menu-item-BdCkmJol.js.map} +1 -1
  51. package/dist/chunks/{photo-capture-CVKE0SKx.js → photo-capture-Bvixtxsq.js} +4 -4
  52. package/dist/chunks/{photo-capture-CVKE0SKx.js.map → photo-capture-Bvixtxsq.js.map} +1 -1
  53. package/dist/chunks/{photo-capture-modal-DARmhHUH.js → photo-capture-modal-BhmL3kYD.js} +6 -6
  54. package/dist/chunks/{photo-capture-modal-DARmhHUH.js.map → photo-capture-modal-BhmL3kYD.js.map} +1 -1
  55. package/dist/chunks/{provider-CBSBzOfP.js → provider-DP9Us_Aw.js} +5 -5
  56. package/dist/chunks/{provider-CBSBzOfP.js.map → provider-DP9Us_Aw.js.map} +1 -1
  57. package/dist/chunks/{rdf-form-BeuzVBOP.js → rdf-form-CUUvMplY.js} +4 -4
  58. package/dist/chunks/{rdf-form-BeuzVBOP.js.map → rdf-form-CUUvMplY.js.map} +1 -1
  59. package/dist/chunks/{rdf-input-n73oeSkf.js → rdf-input-CH5Aah6g.js} +5 -5
  60. package/dist/chunks/{rdf-input-n73oeSkf.js.map → rdf-input-CH5Aah6g.js.map} +1 -1
  61. package/dist/chunks/{select-BuIxSm1A.js → select-BcC-ICqO.js} +2 -2
  62. package/dist/chunks/{select-BuIxSm1A.js.map → select-BcC-ICqO.js.map} +1 -1
  63. package/dist/chunks/{select-option-Z8qZsCQo.js → select-option-B0uXcj2O.js} +2 -2
  64. package/dist/chunks/{select-option-Z8qZsCQo.js.map → select-option-B0uXcj2O.js.map} +1 -1
  65. package/dist/chunks/{signup-button-B-AgjjAK.js → signup-button-06D4XyCv.js} +4 -4
  66. package/dist/chunks/{signup-button-B-AgjjAK.js.map → signup-button-06D4XyCv.js.map} +1 -1
  67. package/dist/chunks/{solid-emblem-D4ItOckU.js → solid-emblem-CcQOqRX0.js} +2 -2
  68. package/dist/chunks/{solid-emblem-D4ItOckU.js.map → solid-emblem-CcQOqRX0.js.map} +1 -1
  69. package/dist/chunks/{src-B5SL8UtS.js → src--J7RRo6J.js} +1732 -1687
  70. package/dist/chunks/src--J7RRo6J.js.map +1 -0
  71. package/dist/chunks/{style-CjYxsW7j.js → style-_Eni1Wf8.js} +12 -10
  72. package/dist/chunks/{style-CjYxsW7j.js.map → style-_Eni1Wf8.js.map} +1 -1
  73. package/dist/components/account.js +1 -1
  74. package/dist/components/avatar.js +1 -1
  75. package/dist/components/button.js +1 -1
  76. package/dist/components/combobox-option.js +1 -1
  77. package/dist/components/combobox.js +1 -1
  78. package/dist/components/dialog-content.js +1 -1
  79. package/dist/components/dialog-footer.js +1 -1
  80. package/dist/components/dialog-header.js +1 -1
  81. package/dist/components/dialog-provider.js +1 -1
  82. package/dist/components/dialog.js +1 -1
  83. package/dist/components/dialogs-root.js +1 -1
  84. package/dist/components/guard.js +1 -1
  85. package/dist/components/input.js +1 -1
  86. package/dist/components/login-button.js +1 -1
  87. package/dist/components/login-modal.js +1 -1
  88. package/dist/components/logout-button.js +1 -1
  89. package/dist/components/menu-item.js +1 -1
  90. package/dist/components/menu.js +1 -1
  91. package/dist/components/photo-capture-modal.js +1 -1
  92. package/dist/components/photo-capture.js +1 -1
  93. package/dist/components/provider.js +1 -1
  94. package/dist/components/rdf-form.js +1 -1
  95. package/dist/components/rdf-input.js +1 -1
  96. package/dist/components/select-option.js +1 -1
  97. package/dist/components/select.js +1 -1
  98. package/dist/components/signup-button.js +1 -1
  99. package/dist/components/solid-emblem.js +1 -1
  100. package/dist/components.js +26 -26
  101. package/dist/index.js +6 -6
  102. package/dist/lib/log.cjs.js +1 -1
  103. package/dist/lib/log.cjs.js.map +1 -1
  104. package/dist/lib/log.esm.js +10 -8
  105. package/dist/lib/log.esm.js.map +1 -1
  106. package/dist/lib/table.cjs.js.map +1 -1
  107. package/dist/lib/table.esm.js.map +1 -1
  108. package/dist/loader.js +6 -6
  109. package/dist/login/login.cjs.js +1 -1
  110. package/dist/login/login.cjs.js.map +1 -1
  111. package/dist/login/login.d.ts.map +1 -1
  112. package/dist/login/login.esm.js +6 -0
  113. package/dist/login/login.esm.js.map +1 -1
  114. package/dist/solid-ui.js +83 -83
  115. package/dist/solid-ui.min.js +83 -83
  116. package/dist/solid-ui.min.js.map +1 -1
  117. package/dist/widgets/forms.cjs.js +1 -1
  118. package/dist/widgets/forms.cjs.js.map +1 -1
  119. package/dist/widgets/forms.esm.js +13 -11
  120. package/dist/widgets/forms.esm.js.map +1 -1
  121. package/package.json +2 -2
  122. package/dist/chunks/index.esm-CyyOkz04.js.map +0 -1
  123. package/dist/chunks/src-B5SL8UtS.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { g as e, i as t, o as n, p as r, u as i } from "./components-DrP7BOrs.js";
1
+ import { g as e, i as t, o as n, p as r, u as i } from "./components-BHoVP7zE.js";
2
2
  import { t as a } from "./query-BYu9q8lA.js";
3
3
  //#region src/components/menu-item/MenuItem.styles.css
4
4
  var o = r`:host{&>a,&>div{width:100%;color:var(--solid-ui-color-gray-600);font-weight:500;font-size:var(--solid-ui-font-size-md);border-radius:5px;justify-content:flex-start;align-items:center;gap:5px;padding:10px;display:flex;position:relative;&[data-selected]{background:var(--solid-ui-color-primary-selected)}}& ::slotted([slot=left-icon]),& ::slotted([slot=right-icon]){width:var(--solid-ui-font-size-xl);height:var(--solid-ui-font-size-xl)}& a:after{content:\"\";width:100%;height:100%;position:absolute;top:0;left:0}}`, s, c, l, u, d, f, p, m, h, g, _, v, y, b, x, S;
@@ -248,4 +248,4 @@ var I = F;
248
248
  //#endregion
249
249
  export { F as n, I as t };
250
250
 
251
- //# sourceMappingURL=menu-item-Bj3NgLzB.js.map
251
+ //# sourceMappingURL=menu-item-BdCkmJol.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"menu-item-Bj3NgLzB.js","names":["customElement","WebComponent","property","query","html","styles","_classDecs","_MenuItem","_MenuItem2","_A","WeakMap","_B","_C","_ref","_hrefDecs","type","String","reflect","_selectedDecs","Boolean","_anchorDecs","_MenuItem3","MenuItem","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_href","_init_selected","_init_anchor","_classPrivateFieldGet","href","v","_classPrivateFieldSet","selected","anchor","render","click","e","c","_initClass","_applyDecs","_Class","_identity","_defineProperty","default","MenuItem"],"sources":["../../src/components/menu-item/MenuItem.styles.css","../../src/components/menu-item/MenuItem.ts","../../src/components/menu-item/index.ts"],"sourcesContent":[":host {\n & > a,\n & > div {\n width: 100%;\n display: flex;\n position: relative;\n justify-content: flex-start;\n align-items: center;\n gap: 5px;\n padding: 10px;\n border-radius: 5px;\n color: var(--solid-ui-color-gray-600);\n font-weight: 500;\n font-size: var(--solid-ui-font-size-md);\n\n &[data-selected] {\n background: var(--solid-ui-color-primary-selected);\n }\n }\n\n ::slotted([slot=\"left-icon\"]), ::slotted([slot=\"right-icon\"]) {\n width: var(--solid-ui-font-size-xl);\n height: var(--solid-ui-font-size-xl);\n }\n\n a::after {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n}\n","import { customElement, WebComponent } from '@/lib/components'\nimport { property, query } from 'lit/decorators.js'\nimport { html } from 'lit'\n\nimport styles from './MenuItem.styles.css'\n\n@customElement('solid-ui-menu-item')\nexport default class MenuItem extends WebComponent {\n static styles = styles\n\n @property({ type: String, reflect: true })\n accessor href: string | undefined\n\n @property({ type: Boolean, reflect: true })\n accessor selected: boolean = false\n\n @query('a')\n private accessor anchor: HTMLAnchorElement | null = null\n\n render () {\n if (this.href) {\n return html`\n <a href=\"${this.href}\" target=\"_blank\" rel=\"noopener noreferrer\" ?data-selected=${this.selected}>\n <slot name=\"left-icon\"></slot>\n <slot></slot>\n <slot name=\"right-icon\"></slot>\n </a>\n `\n }\n\n return html`\n <div ?data-selected=${this.selected}>\n <slot name=\"left-icon\"></slot>\n <slot></slot>\n <slot name=\"right-icon\"></slot>\n </div>\n `\n }\n\n click () {\n this.anchor?.click()\n }\n}\n","import MenuItem from './MenuItem'\n\nexport { MenuItem }\nexport default MenuItem\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACI0CM,IAAA,CAEzCN,EAAc,oBAAoB,CAAC;AAAA,IAAAO;AAAA,KAAAC,KAAAC,kBAAA,IAAAC,QAAA,GAAAC,kBAAA,IAAAD,QAAA,GAAAE,kBAAA,IAAAF,QAAA,GAAAG,KAAAC,IAIjCZ,EAAS;CAAEa,MAAMC;CAAQC,SAAS;AAAK,CAAC,GAACC,IAGzChB,EAAS;CAAEa,MAAMI;CAASF,SAAS;AAAK,CAAC,GAACG,IAG1CjB,EAAM,GAAG,GAAC,SAAAkB,IAVb,cACsCpB,EAAa;CAAAsB,YAAA,GAAAC,GAAA;EAOfC,AAPe,MAAA,GAAAD,CAAA,GAAAC,EAAA,MAAAhB,IAAAiB,EAAA,IAAA,GAAAC,EAAA,IAAA,EAAA,GAAAF,EAAA,MAAAd,GAAAiB,EAAA,MAOpB,EAAK,CAAA,GAAAH,EAAA,MAAAb,GAAAiB,EAAA,MAGkB,IAAI,CAAA;CAAA;CAAA,KAAAhB,KAAA;EAAA,OAAAiB,EAAArB,GAAA,IAAA;CAAA;CAAA,IAN/CsB,KAAIC,GAAA;EAAAC,EAAAxB,GAAA,MAAAuB,CAAA;CAAA;CAAA,IAGJE,WAAQ;EAAA,OAAAJ,EAAAnB,GAAA,IAAA;CAAA;CAAA,IAARuB,SAAQF,GAAA;EAAAC,EAAAtB,GAAA,MAAAqB,CAAA;CAAA;CAAA,IAGAG,SAAM;EAAA,OAAAL,EAAAlB,GAAA,IAAA;CAAA;CAAA,IAANuB,OAAMH,GAAA;EAAAC,EAAArB,GAAA,MAAAoB,CAAA;CAAA;CAEvBI,SAAU;EAWR,OAVI,KAAKL,OACA3B,CAAI;mBACE,KAAK2B,KAAI,6DAA8D,KAAKG,SAAQ;;;;;UAQ5F9B,CAAI;8BACe,KAAK8B,SAAQ;;;;;;CAMzC;CAEAG,QAAS;EACP,KAAKF,QAAQE,MAAM;CACrB;AACF,GAAC,CAAAC,GAAA,CAAAX,GAAAC,GAAAC,GAAAH,IAAAa,GAAA,CAAAhC,GAAAiC,MAAAC,EAAApB,GAAA;CAAA;EAAAP;EAAA;EAAA;CAAA;CAAA;EAAAI;EAAA;EAAA;CAAA;CAAA;EAAAE;EAAA;EAAA;CAAA;AAAA,GAAAd,GAAA,GAAA,KAAA,GAnCqCL,CAAY,GAAAoB,IAAAqB,IAAA,cAAAC,EAAA;CAAApB,cAAA;EAAA,MAAAhB,CAAA,GAAAqC,EAAA,MAAA,UAChCvC,CAAM,GAAAmC,EAAA;CAAA;AAAA,GAAAI,EAAAF,GAAAlC,GAAA,KAAA,CAAA,GAAAkC,GAAA;;;ACLxB,IAAA,IAAeI"}
1
+ {"version":3,"file":"menu-item-BdCkmJol.js","names":["customElement","WebComponent","property","query","html","styles","_classDecs","_MenuItem","_MenuItem2","_A","WeakMap","_B","_C","_ref","_hrefDecs","type","String","reflect","_selectedDecs","Boolean","_anchorDecs","_MenuItem3","MenuItem","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_href","_init_selected","_init_anchor","_classPrivateFieldGet","href","v","_classPrivateFieldSet","selected","anchor","render","click","e","c","_initClass","_applyDecs","_Class","_identity","_defineProperty","default","MenuItem"],"sources":["../../src/components/menu-item/MenuItem.styles.css","../../src/components/menu-item/MenuItem.ts","../../src/components/menu-item/index.ts"],"sourcesContent":[":host {\n & > a,\n & > div {\n width: 100%;\n display: flex;\n position: relative;\n justify-content: flex-start;\n align-items: center;\n gap: 5px;\n padding: 10px;\n border-radius: 5px;\n color: var(--solid-ui-color-gray-600);\n font-weight: 500;\n font-size: var(--solid-ui-font-size-md);\n\n &[data-selected] {\n background: var(--solid-ui-color-primary-selected);\n }\n }\n\n ::slotted([slot=\"left-icon\"]), ::slotted([slot=\"right-icon\"]) {\n width: var(--solid-ui-font-size-xl);\n height: var(--solid-ui-font-size-xl);\n }\n\n a::after {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n}\n","import { customElement, WebComponent } from '@/lib/components'\nimport { property, query } from 'lit/decorators.js'\nimport { html } from 'lit'\n\nimport styles from './MenuItem.styles.css'\n\n@customElement('solid-ui-menu-item')\nexport default class MenuItem extends WebComponent {\n static styles = styles\n\n @property({ type: String, reflect: true })\n accessor href: string | undefined\n\n @property({ type: Boolean, reflect: true })\n accessor selected: boolean = false\n\n @query('a')\n private accessor anchor: HTMLAnchorElement | null = null\n\n render () {\n if (this.href) {\n return html`\n <a href=\"${this.href}\" target=\"_blank\" rel=\"noopener noreferrer\" ?data-selected=${this.selected}>\n <slot name=\"left-icon\"></slot>\n <slot></slot>\n <slot name=\"right-icon\"></slot>\n </a>\n `\n }\n\n return html`\n <div ?data-selected=${this.selected}>\n <slot name=\"left-icon\"></slot>\n <slot></slot>\n <slot name=\"right-icon\"></slot>\n </div>\n `\n }\n\n click () {\n this.anchor?.click()\n }\n}\n","import MenuItem from './MenuItem'\n\nexport { MenuItem }\nexport default MenuItem\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACI0CM,IAAA,CAEzCN,EAAc,oBAAoB,CAAC;AAAA,IAAAO;AAAA,KAAAC,KAAAC,kBAAA,IAAAC,QAAA,GAAAC,kBAAA,IAAAD,QAAA,GAAAE,kBAAA,IAAAF,QAAA,GAAAG,KAAAC,IAIjCZ,EAAS;CAAEa,MAAMC;CAAQC,SAAS;AAAK,CAAC,GAACC,IAGzChB,EAAS;CAAEa,MAAMI;CAASF,SAAS;AAAK,CAAC,GAACG,IAG1CjB,EAAM,GAAG,GAAC,SAAAkB,IAVb,cACsCpB,EAAa;CAAAsB,YAAA,GAAAC,GAAA;EAOfC,AAPe,MAAA,GAAAD,CAAA,GAAAC,EAAA,MAAAhB,IAAAiB,EAAA,IAAA,GAAAC,EAAA,IAAA,EAAA,GAAAF,EAAA,MAAAd,GAAAiB,EAAA,MAOpB,EAAK,CAAA,GAAAH,EAAA,MAAAb,GAAAiB,EAAA,MAGkB,IAAI,CAAA;CAAA;CAAA,KAAAhB,KAAA;EAAA,OAAAiB,EAAArB,GAAA,IAAA;CAAA;CAAA,IAN/CsB,KAAIC,GAAA;EAAAC,EAAAxB,GAAA,MAAAuB,CAAA;CAAA;CAAA,IAGJE,WAAQ;EAAA,OAAAJ,EAAAnB,GAAA,IAAA;CAAA;CAAA,IAARuB,SAAQF,GAAA;EAAAC,EAAAtB,GAAA,MAAAqB,CAAA;CAAA;CAAA,IAGAG,SAAM;EAAA,OAAAL,EAAAlB,GAAA,IAAA;CAAA;CAAA,IAANuB,OAAMH,GAAA;EAAAC,EAAArB,GAAA,MAAAoB,CAAA;CAAA;CAEvBI,SAAU;EAWR,OAVI,KAAKL,OACA3B,CAAI;mBACE,KAAK2B,KAAI,6DAA8D,KAAKG,SAAQ;;;;;UAQ5F9B,CAAI;8BACe,KAAK8B,SAAQ;;;;;;CAMzC;CAEAG,QAAS;EACP,KAAKF,QAAQE,MAAM;CACrB;AACF,GAAC,CAAAC,GAAA,CAAAX,GAAAC,GAAAC,GAAAH,IAAAa,GAAA,CAAAhC,GAAAiC,MAAAC,EAAApB,GAAA;CAAA;EAAAP;EAAA;EAAA;CAAA;CAAA;EAAAI;EAAA;EAAA;CAAA;CAAA;EAAAE;EAAA;EAAA;CAAA;AAAA,GAAAd,GAAA,GAAA,KAAA,GAnCqCL,CAAY,GAAAoB,IAAAqB,IAAA,cAAAC,EAAA;CAAApB,cAAA;EAAA,MAAAhB,CAAA,GAAAqC,EAAA,MAAA,UAChCvC,CAAM,GAAAmC,EAAA;CAAA;AAAA,GAAAI,EAAAF,GAAAlC,GAAA,KAAA,CAAA,GAAAkC,GAAA;;;ACLxB,IAAA,IAAeI"}
@@ -1,6 +1,6 @@
1
- import { g as e, i as t, t as n, u as r } from "./components-DrP7BOrs.js";
2
- import { t as i } from "./dialogs-CeHuLUo5.js";
3
- import { t as a } from "./photo-capture-modal-DARmhHUH.js";
1
+ import { g as e, i as t, t as n, u as r } from "./components-BHoVP7zE.js";
2
+ import { t as i } from "./dialogs-D2n-R0lI.js";
3
+ import { t as a } from "./photo-capture-modal-BhmL3kYD.js";
4
4
  //#region src/components/photo-capture/PhotoCapture.ts
5
5
  var o, s, c, l, u, d, f, p, m, h, g, _, v, y, b, x, S, C, w, T, E, D, O, k, A, j, M, N, P, ee, F;
6
6
  function te(e, t, n) {
@@ -399,4 +399,4 @@ var ce = B;
399
399
  //#endregion
400
400
  export { B as n, ce as t };
401
401
 
402
- //# sourceMappingURL=photo-capture-CVKE0SKx.js.map
402
+ //# sourceMappingURL=photo-capture-Bvixtxsq.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"photo-capture-CVKE0SKx.js","names":["html","property","customElement","FormControlComponent","showDialog","PhotoCaptureModal","_classDecs","_PhotoCapture","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_ref","_labelDecs","type","String","reflect","_headingDecs","_captureLabelDecs","attribute","_confirmLabelDecs","_retakeLabelDecs","_cancelLabelDecs","_facingModeDecs","_constraintsDecs","_captureFormatDecs","_captureQualityDecs","Number","_showCancelButtonDecs","Boolean","_fileNamePrefixDecs","_mediaConstraintsDecs","PhotoCapture","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_label","_init_heading","_init_captureLabel","_init_confirmLabel","_init_retakeLabel","_init_cancelLabel","_init_facingMode","_init_constraints","_init_captureFormat","_init_captureQuality","undefined","_init_showCancelButton","_init_fileNamePrefix","_init_mediaConstraints","_defineProperty","_classPrivateFieldGet","label","v","_classPrivateFieldSet","heading","captureLabel","confirmLabel","retakeLabel","cancelLabel","facingMode","constraints","captureFormat","captureQuality","showCancelButton","fileNamePrefix","mediaConstraints","render","onClick","disabled","props","name","onClose","value","controlTrait","setValue","_PhotoCapture2","e","c","_initClass","_applyDecs","default","PhotoCapture"],"sources":["../../src/components/photo-capture/PhotoCapture.ts","../../src/components/photo-capture/index.ts"],"sourcesContent":["import { html } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { customElement, FormControlComponent } from '@/lib/components'\nimport { showDialog } from '@/lib/dialogs'\n\nimport PhotoCaptureModal from '@/components/photo-capture-modal'\n\n@customElement('solid-ui-photo-capture')\nexport default class PhotoCapture extends FormControlComponent<File> {\n @property({ type: String, reflect: true })\n accessor label = 'Take Photo'\n\n @property({ type: String, reflect: true })\n accessor heading = 'Take a photo'\n\n @property({ type: String, attribute: 'capture-label', reflect: true })\n accessor captureLabel = 'Take Photo'\n\n @property({ type: String, attribute: 'confirm-label', reflect: true })\n accessor confirmLabel = 'Use Photo'\n\n @property({ type: String, attribute: 'retake-label', reflect: true })\n accessor retakeLabel = 'Retake'\n\n @property({ type: String, attribute: 'cancel-label', reflect: true })\n accessor cancelLabel = 'Cancel'\n\n @property({ type: String, attribute: 'facing-mode', reflect: true })\n accessor facingMode = 'user'\n\n @property({ type: String, reflect: true })\n accessor constraints = ''\n\n @property({ type: String, attribute: 'capture-format', reflect: true })\n accessor captureFormat = 'image/png'\n\n @property({ type: Number, attribute: 'capture-quality' })\n accessor captureQuality: number | undefined = undefined\n\n @property({ type: Boolean, attribute: 'show-cancel-button', reflect: true })\n accessor showCancelButton = true\n\n @property({ type: String, attribute: 'file-name-prefix', reflect: true })\n accessor fileNamePrefix = ''\n\n @property({ attribute: false })\n accessor mediaConstraints: MediaStreamConstraints | undefined = undefined\n\n protected controlElement = null\n\n protected render () {\n return html`\n <slot name=\"trigger\" @click=${this.onClick}>\n <solid-ui-button ?disabled=\"${this.disabled}\">${this.label}</solid-ui-button>\n </slot>\n `\n }\n\n private onClick () {\n showDialog(PhotoCaptureModal, {\n props: {\n name: this.name,\n heading: this.heading,\n captureLabel: this.captureLabel,\n confirmLabel: this.confirmLabel,\n retakeLabel: this.retakeLabel,\n cancelLabel: this.cancelLabel,\n fileNamePrefix: this.fileNamePrefix,\n mediaConstraints: this.mediaConstraints,\n constraints: this.constraints,\n captureFormat: this.captureFormat,\n captureQuality: this.captureQuality,\n showCancelButton: this.showCancelButton,\n facingMode: this.facingMode,\n },\n onClose: value => this.controlTrait.setValue(value ?? null)\n })\n }\n}\n","import PhotoCapture from './PhotoCapture'\n\nexport * from './PhotoCapture'\nexport { PhotoCapture }\nexport default PhotoCapture\n"],"mappings":"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"}
1
+ {"version":3,"file":"photo-capture-Bvixtxsq.js","names":["html","property","customElement","FormControlComponent","showDialog","PhotoCaptureModal","_classDecs","_PhotoCapture","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_ref","_labelDecs","type","String","reflect","_headingDecs","_captureLabelDecs","attribute","_confirmLabelDecs","_retakeLabelDecs","_cancelLabelDecs","_facingModeDecs","_constraintsDecs","_captureFormatDecs","_captureQualityDecs","Number","_showCancelButtonDecs","Boolean","_fileNamePrefixDecs","_mediaConstraintsDecs","PhotoCapture","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_label","_init_heading","_init_captureLabel","_init_confirmLabel","_init_retakeLabel","_init_cancelLabel","_init_facingMode","_init_constraints","_init_captureFormat","_init_captureQuality","undefined","_init_showCancelButton","_init_fileNamePrefix","_init_mediaConstraints","_defineProperty","_classPrivateFieldGet","label","v","_classPrivateFieldSet","heading","captureLabel","confirmLabel","retakeLabel","cancelLabel","facingMode","constraints","captureFormat","captureQuality","showCancelButton","fileNamePrefix","mediaConstraints","render","onClick","disabled","props","name","onClose","value","controlTrait","setValue","_PhotoCapture2","e","c","_initClass","_applyDecs","default","PhotoCapture"],"sources":["../../src/components/photo-capture/PhotoCapture.ts","../../src/components/photo-capture/index.ts"],"sourcesContent":["import { html } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { customElement, FormControlComponent } from '@/lib/components'\nimport { showDialog } from '@/lib/dialogs'\n\nimport PhotoCaptureModal from '@/components/photo-capture-modal'\n\n@customElement('solid-ui-photo-capture')\nexport default class PhotoCapture extends FormControlComponent<File> {\n @property({ type: String, reflect: true })\n accessor label = 'Take Photo'\n\n @property({ type: String, reflect: true })\n accessor heading = 'Take a photo'\n\n @property({ type: String, attribute: 'capture-label', reflect: true })\n accessor captureLabel = 'Take Photo'\n\n @property({ type: String, attribute: 'confirm-label', reflect: true })\n accessor confirmLabel = 'Use Photo'\n\n @property({ type: String, attribute: 'retake-label', reflect: true })\n accessor retakeLabel = 'Retake'\n\n @property({ type: String, attribute: 'cancel-label', reflect: true })\n accessor cancelLabel = 'Cancel'\n\n @property({ type: String, attribute: 'facing-mode', reflect: true })\n accessor facingMode = 'user'\n\n @property({ type: String, reflect: true })\n accessor constraints = ''\n\n @property({ type: String, attribute: 'capture-format', reflect: true })\n accessor captureFormat = 'image/png'\n\n @property({ type: Number, attribute: 'capture-quality' })\n accessor captureQuality: number | undefined = undefined\n\n @property({ type: Boolean, attribute: 'show-cancel-button', reflect: true })\n accessor showCancelButton = true\n\n @property({ type: String, attribute: 'file-name-prefix', reflect: true })\n accessor fileNamePrefix = ''\n\n @property({ attribute: false })\n accessor mediaConstraints: MediaStreamConstraints | undefined = undefined\n\n protected controlElement = null\n\n protected render () {\n return html`\n <slot name=\"trigger\" @click=${this.onClick}>\n <solid-ui-button ?disabled=\"${this.disabled}\">${this.label}</solid-ui-button>\n </slot>\n `\n }\n\n private onClick () {\n showDialog(PhotoCaptureModal, {\n props: {\n name: this.name,\n heading: this.heading,\n captureLabel: this.captureLabel,\n confirmLabel: this.confirmLabel,\n retakeLabel: this.retakeLabel,\n cancelLabel: this.cancelLabel,\n fileNamePrefix: this.fileNamePrefix,\n mediaConstraints: this.mediaConstraints,\n constraints: this.constraints,\n captureFormat: this.captureFormat,\n captureQuality: this.captureQuality,\n showCancelButton: this.showCancelButton,\n facingMode: this.facingMode,\n },\n onClose: value => this.controlTrait.setValue(value ?? null)\n })\n }\n}\n","import PhotoCapture from './PhotoCapture'\n\nexport * from './PhotoCapture'\nexport { PhotoCapture }\nexport default PhotoCapture\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { a as e, c as t, g as n, i as r, p as i, r as a, u as o } from "./components-DrP7BOrs.js";
2
- import "./dialog-CcMVH-Ut.js";
3
- import "./button-BJyFKOKO.js";
4
- import "./dialog-content-DcD_s3hK.js";
5
- import "./dialog-footer-CHgSH7G5.js";
1
+ import { a as e, c as t, g as n, i as r, p as i, r as a, u as o } from "./components-BHoVP7zE.js";
2
+ import "./dialog-D9Ellvjx.js";
3
+ import "./button-CnmrOsEf.js";
4
+ import "./dialog-content-B2FmmQvH.js";
5
+ import "./dialog-footer-CxjoqQJF.js";
6
6
  //#region src/components/photo-capture-modal/PhotoCaptureModal.styles.css
7
7
  var s = i`.viewport{background:#ebebeb;border-radius:.5rem;justify-content:center;align-items:center;width:100%;min-height:200px;display:flex;overflow:hidden}.viewport video,.viewport img{object-fit:cover;border-radius:.5rem;width:100%;max-width:260px;height:auto;margin:0 auto;display:block}.status{text-align:center;width:100%;color:var(--photo-capture-muted-text);font-size:.875rem}.status.error{color:var(--color-error,#b00020)}`, c, l, u, d, f, p, m, h, g, _, v, y, b, x, S, C, w, T, E, D, O, k, A, j, M, ee, te, ne, re, ie, ae, N, P, F, I, L, R, z, B, V, H, U, W, G, K, q, J, oe, se, ce, le, ue, de, fe, pe, me, he, ge;
8
8
  function Y(e, t, n) {
@@ -557,4 +557,4 @@ var Te = $;
557
557
  //#endregion
558
558
  export { $ as n, Te as t };
559
559
 
560
- //# sourceMappingURL=photo-capture-modal-DARmhHUH.js.map
560
+ //# sourceMappingURL=photo-capture-modal-BhmL3kYD.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"photo-capture-modal-DARmhHUH.js","names":["customElement","DialogComponent","html","nothing","property","state","styles","_classDecs","_PhotoCaptureModal","_PhotoCaptureModal2","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_ref","_nameDecs","type","String","reflect","_headingDecs","_captureLabelDecs","_confirmLabelDecs","_retakeLabelDecs","_cancelLabelDecs","attribute","_fileNamePrefixDecs","_mediaConstraintsDecs","_constraintsDecs","_captureFormatDecs","_captureQualityDecs","Number","_showCancelButtonDecs","Boolean","_facingModeDecs","_errorMessageDecs","_previewUrlDecs","_startingPreviewDecs","_valueDecs","_PhotoCaptureModal3","PhotoCaptureModal","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_name","_init_heading","_init_captureLabel","_init_confirmLabel","_init_retakeLabel","_init_cancelLabel","_init_fileNamePrefix","_init_mediaConstraints","undefined","_init_constraints","_init_captureFormat","_init_captureQuality","_init_showCancelButton","_init_facingMode","_init_errorMessage","_init_previewUrl","_init_startingPreview","_init_value","_defineProperty","_classPrivateFieldGet","name","v","_classPrivateFieldSet","heading","captureLabel","confirmLabel","retakeLabel","cancelLabel","fileNamePrefix","mediaConstraints","constraints","captureFormat","captureQuality","showCancelButton","facingMode","errorMessage","previewUrl","startingPreview","value","disconnectedCallback","stopStream","revokePreviewUrl","willUpdate","changed","has","normalizedValue","File","syncPreviewFromValue","updated","stream","queuePreviewStart","video","shadowRoot","querySelector","srcObject","render","renderViewport","renderStatus","close","onRetake","onConfirm","onCapture","contents","clearValue","width","videoWidth","clientWidth","height","videoHeight","clientHeight","canvas","document","createElement","context","getContext","drawImage","blob","Promise","resolve","toBlob","createFileFromBlob","contentType","extension","fileExtensionForMimeType","safePrefix","trim","Date","now","mimeType","startPreview","catch","getTracks","forEach","track","stop","file","URL","createObjectURL","revokeObjectURL","navigator","mediaDevices","getUserMedia","resolveMediaConstraints","requestUpdate","updateComplete","play","error","message","JSON","parse","Error","ideal","e","c","_initClass","_applyDecs","_Class","_identity","default","PhotoCaptureModal"],"sources":["../../src/components/photo-capture-modal/PhotoCaptureModal.styles.css","../../src/components/photo-capture-modal/PhotoCaptureModal.ts","../../src/components/photo-capture-modal/index.ts"],"sourcesContent":[".viewport {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n min-height: 200px;\n border-radius: 0.5rem;\n overflow: hidden;\n background: color-mix(in srgb, #ffffff 92%, #000 8%);\n}\n\n.viewport video,\n.viewport img {\n display: block;\n width: 100%;\n max-width: 260px;\n height: auto;\n border-radius: 0.5rem;\n margin: 0 auto;\n object-fit: cover;\n}\n\n.status {\n width: 100%;\n text-align: center;\n color: var(--photo-capture-muted-text);\n font-size: 0.875rem;\n}\n\n.status.error {\n color: var(--color-error, #b00020);\n}\n","import { customElement, DialogComponent } from '@/lib/components'\nimport { html, PropertyValues, nothing } from 'lit'\nimport { property, state } from 'lit/decorators.js'\n\nimport '@/components/button'\nimport '@/components/dialog'\nimport '@/components/dialog-content'\nimport '@/components/dialog-footer'\n\nimport styles from './PhotoCaptureModal.styles.css'\n\n@customElement('solid-ui-photo-capture-modal')\nexport default class PhotoCaptureModal extends DialogComponent<File> {\n static styles = styles\n\n @property({ type: String, reflect: true })\n accessor name = ''\n\n @property({ type: String, reflect: true })\n accessor heading = 'Take a photo'\n\n @property({ type: String, reflect: true })\n accessor captureLabel = 'Take Photo'\n\n @property({ type: String, reflect: true })\n accessor confirmLabel = 'Use Photo'\n\n @property({ type: String, reflect: true })\n accessor retakeLabel = 'Retake'\n\n @property({ type: String, attribute: 'cancel-label', reflect: true })\n accessor cancelLabel = 'Cancel'\n\n @property({ type: String, attribute: 'file-name-prefix', reflect: true })\n accessor fileNamePrefix = ''\n\n @property({ attribute: false })\n accessor mediaConstraints: MediaStreamConstraints | undefined = undefined\n\n @property({ type: String, reflect: true })\n accessor constraints = ''\n\n @property({ type: String, attribute: 'capture-format', reflect: true })\n accessor captureFormat = 'image/png'\n\n @property({ type: Number, attribute: 'capture-quality' })\n accessor captureQuality: number | undefined = undefined\n\n @property({ type: Boolean, attribute: 'show-cancel-button', reflect: true })\n accessor showCancelButton = true\n\n @property({ type: String, attribute: 'facing-mode', reflect: true })\n accessor facingMode = 'user'\n\n @state()\n accessor errorMessage = ''\n\n @state()\n accessor previewUrl = ''\n\n @state()\n accessor startingPreview = false\n\n @state()\n accessor value: File | null = null\n\n private stream: MediaStream | null = null\n\n disconnectedCallback () {\n this.stopStream()\n this.revokePreviewUrl()\n super.disconnectedCallback()\n }\n\n protected willUpdate (changed: PropertyValues<this>) {\n super.willUpdate(changed)\n\n if (changed.has('value')) {\n const normalizedValue = this.value instanceof File ? this.value : null\n\n if (normalizedValue !== this.value) {\n this.value = normalizedValue\n\n return\n }\n\n this.syncPreviewFromValue(normalizedValue)\n }\n }\n\n protected updated (changed: PropertyValues<this>) {\n if (\n !this.value &&\n !this.stream &&\n !this.startingPreview &&\n (changed.has('previewUrl') || changed.has('value'))\n ) {\n this.queuePreviewStart()\n }\n\n if (this.stream) {\n const video = this.shadowRoot?.querySelector<HTMLVideoElement>('video')\n\n if (video && video.srcObject !== this.stream) {\n video.srcObject = this.stream\n }\n }\n }\n\n protected render () {\n return html`\n <solid-ui-dialog title=${this.heading}>\n <solid-ui-dialog-content>\n ${this.renderViewport()}\n ${this.renderStatus()}\n </solid-ui-dialog-content>\n <solid-ui-dialog-footer>\n ${this.showCancelButton\n ? html`<solid-ui-button variant=\"secondary\" @click=${() => this.close()}>${this.cancelLabel}</solid-ui-button>`\n : nothing\n }\n\n ${this.value\n ? html`\n <solid-ui-button @click=${this.onRetake}>${this.retakeLabel}</solid-ui-button>\n <solid-ui-button @click=${this.onConfirm}>${this.confirmLabel}</solid-ui-button>\n `\n : html`\n <solid-ui-button\n ?disabled=${this.startingPreview || !this.stream}\n @click=${this.onCapture}\n >\n ${this.captureLabel}\n </solid-ui-button>\n `\n }\n </solid-ui-dialog-footer>\n </solid-ui-dialog>\n `\n }\n\n private renderViewport () {\n const contents = this.previewUrl\n ? html`<img src=\"${this.previewUrl}\" alt=\"Captured photo preview\" />`\n : html`<video autoplay playsinline muted></video>`\n\n return html`<div class=\"viewport\">${contents}</div>`\n }\n\n private renderStatus () {\n if (this.errorMessage) {\n return html`<div class=\"status error\">${this.errorMessage}</div>`\n }\n\n if (this.startingPreview) {\n return html`<div class=\"status\">Opening camera…</div>`\n }\n\n if (!this.value) {\n return html`<div class=\"status\">Preview the camera and take a photo when ready.</div>`\n }\n\n return html`<div class=\"status\">Review the photo before confirming it.</div>`\n }\n\n private onRetake () {\n this.clearValue()\n this.queuePreviewStart()\n }\n\n private onConfirm () {\n if (!this.value) {\n return\n }\n\n this.close(this.value)\n }\n\n private async onCapture () {\n const video = this.shadowRoot?.querySelector<HTMLVideoElement>('video')\n\n if (!video) {\n return\n }\n\n const width = video.videoWidth || video.clientWidth || 640\n const height = video.videoHeight || video.clientHeight || 480\n const canvas = document.createElement('canvas')\n canvas.width = width\n canvas.height = height\n\n const context = canvas.getContext('2d')\n\n if (!context) {\n this.errorMessage = 'Unable to capture a photo in this browser'\n\n return\n }\n\n context.drawImage(video, 0, 0, width, height)\n\n const blob = await new Promise<Blob | null>(resolve => {\n canvas.toBlob(resolve, this.captureFormat, this.captureQuality)\n })\n\n if (!blob) {\n this.errorMessage = 'Unable to create an image from the current camera frame'\n\n return\n }\n\n this.value = this.createFileFromBlob(blob)\n this.errorMessage = ''\n }\n\n private createFileFromBlob (blob: Blob): File {\n const contentType = blob.type || this.captureFormat\n const extension = this.fileExtensionForMimeType(contentType)\n const safePrefix = (this.fileNamePrefix || this.name || 'photo').trim() || 'photo'\n\n return new File([blob], `${safePrefix}-${Date.now()}.${extension}`, { type: contentType })\n }\n\n private fileExtensionForMimeType (mimeType: string): string {\n switch (mimeType) {\n case 'image/jpeg':\n return 'jpg'\n case 'image/webp':\n return 'webp'\n case 'image/gif':\n return 'gif'\n default:\n return 'png'\n }\n }\n\n private queuePreviewStart () {\n this.startPreview().catch(() => undefined)\n }\n\n private stopStream () {\n if (!this.stream) {\n return\n }\n\n this.stream.getTracks().forEach(track => track.stop())\n this.stream = null\n\n const video = this.shadowRoot?.querySelector<HTMLVideoElement>('video')\n\n if (video) {\n video.srcObject = null\n }\n }\n\n private syncPreviewFromValue (file: File | null) {\n this.revokePreviewUrl()\n\n if (!file) {\n return\n }\n\n this.stopStream()\n this.previewUrl = URL.createObjectURL(file)\n }\n\n private clearValue () {\n this.value = null\n this.errorMessage = ''\n }\n\n private revokePreviewUrl () {\n if (this.previewUrl) {\n URL.revokeObjectURL(this.previewUrl)\n }\n\n this.previewUrl = ''\n }\n\n private async startPreview () {\n if (this.value || this.startingPreview) {\n return\n }\n\n if (!navigator.mediaDevices?.getUserMedia) {\n this.errorMessage = 'Camera access is not available in this browser'\n\n return\n }\n\n this.startingPreview = true\n this.errorMessage = ''\n\n try {\n const stream = await navigator.mediaDevices.getUserMedia(this.resolveMediaConstraints())\n\n this.stream = stream\n this.requestUpdate()\n\n await this.updateComplete\n\n const video = this.shadowRoot?.querySelector<HTMLVideoElement>('video')\n\n if (video) {\n video.srcObject = stream\n\n await video.play?.().catch(() => undefined)\n }\n } catch (error) {\n this.errorMessage = (error as Error)?.message || 'Unable to start the camera preview'\n } finally {\n this.startingPreview = false\n }\n }\n\n private resolveMediaConstraints (): MediaStreamConstraints {\n if (this.mediaConstraints) {\n return this.mediaConstraints\n }\n\n if (this.constraints) {\n try {\n return JSON.parse(this.constraints) as MediaStreamConstraints\n } catch (error) {\n throw new Error(`Invalid constraints JSON: ${(error as Error).message}`)\n }\n }\n\n return {\n video: this.facingMode\n ? { facingMode: { ideal: this.facingMode } }\n : true\n }\n }\n}\n","import PhotoCaptureModal from './PhotoCaptureModal'\n\nexport { PhotoCaptureModal }\nexport default PhotoCaptureModal\n"],"mappings":"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"}
1
+ {"version":3,"file":"photo-capture-modal-BhmL3kYD.js","names":["customElement","DialogComponent","html","nothing","property","state","styles","_classDecs","_PhotoCaptureModal","_PhotoCaptureModal2","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_ref","_nameDecs","type","String","reflect","_headingDecs","_captureLabelDecs","_confirmLabelDecs","_retakeLabelDecs","_cancelLabelDecs","attribute","_fileNamePrefixDecs","_mediaConstraintsDecs","_constraintsDecs","_captureFormatDecs","_captureQualityDecs","Number","_showCancelButtonDecs","Boolean","_facingModeDecs","_errorMessageDecs","_previewUrlDecs","_startingPreviewDecs","_valueDecs","_PhotoCaptureModal3","PhotoCaptureModal","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_name","_init_heading","_init_captureLabel","_init_confirmLabel","_init_retakeLabel","_init_cancelLabel","_init_fileNamePrefix","_init_mediaConstraints","undefined","_init_constraints","_init_captureFormat","_init_captureQuality","_init_showCancelButton","_init_facingMode","_init_errorMessage","_init_previewUrl","_init_startingPreview","_init_value","_defineProperty","_classPrivateFieldGet","name","v","_classPrivateFieldSet","heading","captureLabel","confirmLabel","retakeLabel","cancelLabel","fileNamePrefix","mediaConstraints","constraints","captureFormat","captureQuality","showCancelButton","facingMode","errorMessage","previewUrl","startingPreview","value","disconnectedCallback","stopStream","revokePreviewUrl","willUpdate","changed","has","normalizedValue","File","syncPreviewFromValue","updated","stream","queuePreviewStart","video","shadowRoot","querySelector","srcObject","render","renderViewport","renderStatus","close","onRetake","onConfirm","onCapture","contents","clearValue","width","videoWidth","clientWidth","height","videoHeight","clientHeight","canvas","document","createElement","context","getContext","drawImage","blob","Promise","resolve","toBlob","createFileFromBlob","contentType","extension","fileExtensionForMimeType","safePrefix","trim","Date","now","mimeType","startPreview","catch","getTracks","forEach","track","stop","file","URL","createObjectURL","revokeObjectURL","navigator","mediaDevices","getUserMedia","resolveMediaConstraints","requestUpdate","updateComplete","play","error","message","JSON","parse","Error","ideal","e","c","_initClass","_applyDecs","_Class","_identity","default","PhotoCaptureModal"],"sources":["../../src/components/photo-capture-modal/PhotoCaptureModal.styles.css","../../src/components/photo-capture-modal/PhotoCaptureModal.ts","../../src/components/photo-capture-modal/index.ts"],"sourcesContent":[".viewport {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n min-height: 200px;\n border-radius: 0.5rem;\n overflow: hidden;\n background: color-mix(in srgb, #ffffff 92%, #000 8%);\n}\n\n.viewport video,\n.viewport img {\n display: block;\n width: 100%;\n max-width: 260px;\n height: auto;\n border-radius: 0.5rem;\n margin: 0 auto;\n object-fit: cover;\n}\n\n.status {\n width: 100%;\n text-align: center;\n color: var(--photo-capture-muted-text);\n font-size: 0.875rem;\n}\n\n.status.error {\n color: var(--color-error, #b00020);\n}\n","import { customElement, DialogComponent } from '@/lib/components'\nimport { html, PropertyValues, nothing } from 'lit'\nimport { property, state } from 'lit/decorators.js'\n\nimport '@/components/button'\nimport '@/components/dialog'\nimport '@/components/dialog-content'\nimport '@/components/dialog-footer'\n\nimport styles from './PhotoCaptureModal.styles.css'\n\n@customElement('solid-ui-photo-capture-modal')\nexport default class PhotoCaptureModal extends DialogComponent<File> {\n static styles = styles\n\n @property({ type: String, reflect: true })\n accessor name = ''\n\n @property({ type: String, reflect: true })\n accessor heading = 'Take a photo'\n\n @property({ type: String, reflect: true })\n accessor captureLabel = 'Take Photo'\n\n @property({ type: String, reflect: true })\n accessor confirmLabel = 'Use Photo'\n\n @property({ type: String, reflect: true })\n accessor retakeLabel = 'Retake'\n\n @property({ type: String, attribute: 'cancel-label', reflect: true })\n accessor cancelLabel = 'Cancel'\n\n @property({ type: String, attribute: 'file-name-prefix', reflect: true })\n accessor fileNamePrefix = ''\n\n @property({ attribute: false })\n accessor mediaConstraints: MediaStreamConstraints | undefined = undefined\n\n @property({ type: String, reflect: true })\n accessor constraints = ''\n\n @property({ type: String, attribute: 'capture-format', reflect: true })\n accessor captureFormat = 'image/png'\n\n @property({ type: Number, attribute: 'capture-quality' })\n accessor captureQuality: number | undefined = undefined\n\n @property({ type: Boolean, attribute: 'show-cancel-button', reflect: true })\n accessor showCancelButton = true\n\n @property({ type: String, attribute: 'facing-mode', reflect: true })\n accessor facingMode = 'user'\n\n @state()\n accessor errorMessage = ''\n\n @state()\n accessor previewUrl = ''\n\n @state()\n accessor startingPreview = false\n\n @state()\n accessor value: File | null = null\n\n private stream: MediaStream | null = null\n\n disconnectedCallback () {\n this.stopStream()\n this.revokePreviewUrl()\n super.disconnectedCallback()\n }\n\n protected willUpdate (changed: PropertyValues<this>) {\n super.willUpdate(changed)\n\n if (changed.has('value')) {\n const normalizedValue = this.value instanceof File ? this.value : null\n\n if (normalizedValue !== this.value) {\n this.value = normalizedValue\n\n return\n }\n\n this.syncPreviewFromValue(normalizedValue)\n }\n }\n\n protected updated (changed: PropertyValues<this>) {\n if (\n !this.value &&\n !this.stream &&\n !this.startingPreview &&\n (changed.has('previewUrl') || changed.has('value'))\n ) {\n this.queuePreviewStart()\n }\n\n if (this.stream) {\n const video = this.shadowRoot?.querySelector<HTMLVideoElement>('video')\n\n if (video && video.srcObject !== this.stream) {\n video.srcObject = this.stream\n }\n }\n }\n\n protected render () {\n return html`\n <solid-ui-dialog title=${this.heading}>\n <solid-ui-dialog-content>\n ${this.renderViewport()}\n ${this.renderStatus()}\n </solid-ui-dialog-content>\n <solid-ui-dialog-footer>\n ${this.showCancelButton\n ? html`<solid-ui-button variant=\"secondary\" @click=${() => this.close()}>${this.cancelLabel}</solid-ui-button>`\n : nothing\n }\n\n ${this.value\n ? html`\n <solid-ui-button @click=${this.onRetake}>${this.retakeLabel}</solid-ui-button>\n <solid-ui-button @click=${this.onConfirm}>${this.confirmLabel}</solid-ui-button>\n `\n : html`\n <solid-ui-button\n ?disabled=${this.startingPreview || !this.stream}\n @click=${this.onCapture}\n >\n ${this.captureLabel}\n </solid-ui-button>\n `\n }\n </solid-ui-dialog-footer>\n </solid-ui-dialog>\n `\n }\n\n private renderViewport () {\n const contents = this.previewUrl\n ? html`<img src=\"${this.previewUrl}\" alt=\"Captured photo preview\" />`\n : html`<video autoplay playsinline muted></video>`\n\n return html`<div class=\"viewport\">${contents}</div>`\n }\n\n private renderStatus () {\n if (this.errorMessage) {\n return html`<div class=\"status error\">${this.errorMessage}</div>`\n }\n\n if (this.startingPreview) {\n return html`<div class=\"status\">Opening camera…</div>`\n }\n\n if (!this.value) {\n return html`<div class=\"status\">Preview the camera and take a photo when ready.</div>`\n }\n\n return html`<div class=\"status\">Review the photo before confirming it.</div>`\n }\n\n private onRetake () {\n this.clearValue()\n this.queuePreviewStart()\n }\n\n private onConfirm () {\n if (!this.value) {\n return\n }\n\n this.close(this.value)\n }\n\n private async onCapture () {\n const video = this.shadowRoot?.querySelector<HTMLVideoElement>('video')\n\n if (!video) {\n return\n }\n\n const width = video.videoWidth || video.clientWidth || 640\n const height = video.videoHeight || video.clientHeight || 480\n const canvas = document.createElement('canvas')\n canvas.width = width\n canvas.height = height\n\n const context = canvas.getContext('2d')\n\n if (!context) {\n this.errorMessage = 'Unable to capture a photo in this browser'\n\n return\n }\n\n context.drawImage(video, 0, 0, width, height)\n\n const blob = await new Promise<Blob | null>(resolve => {\n canvas.toBlob(resolve, this.captureFormat, this.captureQuality)\n })\n\n if (!blob) {\n this.errorMessage = 'Unable to create an image from the current camera frame'\n\n return\n }\n\n this.value = this.createFileFromBlob(blob)\n this.errorMessage = ''\n }\n\n private createFileFromBlob (blob: Blob): File {\n const contentType = blob.type || this.captureFormat\n const extension = this.fileExtensionForMimeType(contentType)\n const safePrefix = (this.fileNamePrefix || this.name || 'photo').trim() || 'photo'\n\n return new File([blob], `${safePrefix}-${Date.now()}.${extension}`, { type: contentType })\n }\n\n private fileExtensionForMimeType (mimeType: string): string {\n switch (mimeType) {\n case 'image/jpeg':\n return 'jpg'\n case 'image/webp':\n return 'webp'\n case 'image/gif':\n return 'gif'\n default:\n return 'png'\n }\n }\n\n private queuePreviewStart () {\n this.startPreview().catch(() => undefined)\n }\n\n private stopStream () {\n if (!this.stream) {\n return\n }\n\n this.stream.getTracks().forEach(track => track.stop())\n this.stream = null\n\n const video = this.shadowRoot?.querySelector<HTMLVideoElement>('video')\n\n if (video) {\n video.srcObject = null\n }\n }\n\n private syncPreviewFromValue (file: File | null) {\n this.revokePreviewUrl()\n\n if (!file) {\n return\n }\n\n this.stopStream()\n this.previewUrl = URL.createObjectURL(file)\n }\n\n private clearValue () {\n this.value = null\n this.errorMessage = ''\n }\n\n private revokePreviewUrl () {\n if (this.previewUrl) {\n URL.revokeObjectURL(this.previewUrl)\n }\n\n this.previewUrl = ''\n }\n\n private async startPreview () {\n if (this.value || this.startingPreview) {\n return\n }\n\n if (!navigator.mediaDevices?.getUserMedia) {\n this.errorMessage = 'Camera access is not available in this browser'\n\n return\n }\n\n this.startingPreview = true\n this.errorMessage = ''\n\n try {\n const stream = await navigator.mediaDevices.getUserMedia(this.resolveMediaConstraints())\n\n this.stream = stream\n this.requestUpdate()\n\n await this.updateComplete\n\n const video = this.shadowRoot?.querySelector<HTMLVideoElement>('video')\n\n if (video) {\n video.srcObject = stream\n\n await video.play?.().catch(() => undefined)\n }\n } catch (error) {\n this.errorMessage = (error as Error)?.message || 'Unable to start the camera preview'\n } finally {\n this.startingPreview = false\n }\n }\n\n private resolveMediaConstraints (): MediaStreamConstraints {\n if (this.mediaConstraints) {\n return this.mediaConstraints\n }\n\n if (this.constraints) {\n try {\n return JSON.parse(this.constraints) as MediaStreamConstraints\n } catch (error) {\n throw new Error(`Invalid constraints JSON: ${(error as Error).message}`)\n }\n }\n\n return {\n video: this.facingMode\n ? { facingMode: { ideal: this.facingMode } }\n : true\n }\n }\n}\n","import PhotoCaptureModal from './PhotoCaptureModal'\n\nexport { PhotoCaptureModal }\nexport default PhotoCaptureModal\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { n as e, o as t } from "./auth-D4NUMSzc.js";
2
- import { g as n, i as r, o as i, u as a } from "./components-DrP7BOrs.js";
3
- import { n as o } from "./DialogProvider-0HIHjONx.js";
4
- import "./dialogs-root-CvsON-m8.js";
1
+ import { n as e, o as t } from "./auth-IpQoQHJx.js";
2
+ import { g as n, i as r, o as i, u as a } from "./components-BHoVP7zE.js";
3
+ import { n as o } from "./DialogProvider-BFllJFfq.js";
4
+ import "./dialogs-root-ngPW2Q6K.js";
5
5
  //#region src/components/provider/Provider.ts
6
6
  var s, c, l, u, d, f, p, m, h;
7
7
  function g(e, t, n) {
@@ -212,4 +212,4 @@ var k = E;
212
212
  //#endregion
213
213
  export { E as n, k as t };
214
214
 
215
- //# sourceMappingURL=provider-CBSBzOfP.js.map
215
+ //# sourceMappingURL=provider-DP9Us_Aw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider-CBSBzOfP.js","names":["customElement","WebComponent","provide","html","property","authContext","SolidAuth","DEFAULT_SIGNUP_URL","_classDecs","_Provider","_A","WeakMap","_B","_ref","_signupUrlDecs","type","String","reflect","_authDecs","context","Provider","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_signupUrl","_init_auth","_classPrivateFieldGet","signupUrl","v","_classPrivateFieldSet","auth","connectedCallback","initialize","willUpdate","changedProperties","has","render","_Provider2","e","c","_initClass","_applyDecs","default","Provider"],"sources":["../../src/components/provider/Provider.ts","../../src/components/provider/index.ts"],"sourcesContent":["import { customElement, WebComponent } from '@/lib/components'\nimport { provide } from '@lit/context'\nimport { html, type PropertyValues } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { authContext } from '@/lib/auth'\nimport { SolidAuth, DEFAULT_SIGNUP_URL } from '@/lib/auth'\n\nimport '@/components/dialogs-root'\n\n@customElement('solid-ui-provider')\nexport default class Provider extends WebComponent {\n @property({ type: String, reflect: true })\n accessor signupUrl: string | undefined\n\n @provide({ context: authContext })\n private accessor auth = new SolidAuth()\n\n async connectedCallback () {\n super.connectedCallback()\n\n await this.auth.initialize()\n }\n\n protected willUpdate (changedProperties: PropertyValues<this>) {\n super.willUpdate(changedProperties)\n\n if (changedProperties.has('signupUrl')) {\n this.auth.signupUrl = this.signupUrl ?? DEFAULT_SIGNUP_URL\n }\n }\n\n protected render () {\n return html`\n <slot></slot>\n <solid-ui-dialogs-root></solid-ui-dialogs-root>\n `\n }\n}\n","import Provider from './Provider'\n\nexport { Provider }\nexport default Provider\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOkCQ,IAAA,CAEjCR,EAAc,mBAAmB,CAAC;AAAA,IAAAS,GAAAC,kBAAA,IAAAC,QAAA,GAAAC,kBAAA,IAAAD,QAAA;AAAAE,KAAAC,IAEhCV,EAAS;CAAEW,MAAMC;CAAQC,SAAS;AAAK,CAAC,GAACC,IAGzChB,EAAQ,EAAEiB,SAASd,EAAY,CAAC,GAAC,cAuBnCiC,IAAAlB,cA3BqCnB,EAAa;CAAAoB,YAAA,GAAAC,GAAA;EAAAC,AAAA,MAAA,GAAAD,CAAA,GAAAC,EAAA,MAAAb,IAAAc,EAAA,IAAA,GAAAC,EAAA,IAAA,EAAA,GAAAF,EAAA,MAAAX,GAAAc,EAAA,MAKzB,IAAIpB,EAAU,CAAC,CAAA;CAAA;CAAA,KAAAO,KAAA;EAAA,OAAAc,EAAAjB,GAAA,IAAA;CAAA;CAAA,IAH9BkB,UAASC,GAAA;EAAAC,EAAApB,GAAA,MAAAmB,CAAA;CAAA;CAAA,IAGDE,OAAI;EAAA,OAAAJ,EAAAf,GAAA,IAAA;CAAA;CAAA,IAAJmB,KAAIF,GAAA;EAAAC,EAAAlB,GAAA,MAAAiB,CAAA;CAAA;CAErB,MAAMG,oBAAqB;EAGzB,AAFA,MAAMA,kBAAkB,GAExB,MAAM,KAAKD,KAAKE,WAAW;CAC7B;CAEUC,WAAYC,GAAyC;EAG7D,AAFA,MAAMD,WAAWC,CAAiB,GAE9BA,EAAkBC,IAAI,WAAW,MACnC,KAAKL,KAAKH,YAAY,KAAKA,aAAAA;CAE/B;CAEUS,SAAU;EAClB,OAAOlC,CAAI;;;;CAIb;AACF,GAAC,CAAAoC,GAAA,CAAAd,GAAAC,GAAAF,IAAAgB,GAAA,CAAA/B,GAAAgC,MAAAC,EAAAJ,GAAA,CAAA;CAAAxB;CAAA;CAAA;AAAA,GAAA;CAAAI;CAAA;CAAA;AAAA,CAAA,GAAAV,GAAA,GAAA,KAAA,GA3BqCP,CAAY,GAAAwC,EAAA;;;ACPlD,IAAA,IAAeG"}
1
+ {"version":3,"file":"provider-DP9Us_Aw.js","names":["customElement","WebComponent","provide","html","property","authContext","SolidAuth","DEFAULT_SIGNUP_URL","_classDecs","_Provider","_A","WeakMap","_B","_ref","_signupUrlDecs","type","String","reflect","_authDecs","context","Provider","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_signupUrl","_init_auth","_classPrivateFieldGet","signupUrl","v","_classPrivateFieldSet","auth","connectedCallback","initialize","willUpdate","changedProperties","has","render","_Provider2","e","c","_initClass","_applyDecs","default","Provider"],"sources":["../../src/components/provider/Provider.ts","../../src/components/provider/index.ts"],"sourcesContent":["import { customElement, WebComponent } from '@/lib/components'\nimport { provide } from '@lit/context'\nimport { html, type PropertyValues } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { authContext } from '@/lib/auth'\nimport { SolidAuth, DEFAULT_SIGNUP_URL } from '@/lib/auth'\n\nimport '@/components/dialogs-root'\n\n@customElement('solid-ui-provider')\nexport default class Provider extends WebComponent {\n @property({ type: String, reflect: true })\n accessor signupUrl: string | undefined\n\n @provide({ context: authContext })\n private accessor auth = new SolidAuth()\n\n async connectedCallback () {\n super.connectedCallback()\n\n await this.auth.initialize()\n }\n\n protected willUpdate (changedProperties: PropertyValues<this>) {\n super.willUpdate(changedProperties)\n\n if (changedProperties.has('signupUrl')) {\n this.auth.signupUrl = this.signupUrl ?? DEFAULT_SIGNUP_URL\n }\n }\n\n protected render () {\n return html`\n <slot></slot>\n <solid-ui-dialogs-root></solid-ui-dialogs-root>\n `\n }\n}\n","import Provider from './Provider'\n\nexport { Provider }\nexport default Provider\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOkCQ,IAAA,CAEjCR,EAAc,mBAAmB,CAAC;AAAA,IAAAS,GAAAC,kBAAA,IAAAC,QAAA,GAAAC,kBAAA,IAAAD,QAAA;AAAAE,KAAAC,IAEhCV,EAAS;CAAEW,MAAMC;CAAQC,SAAS;AAAK,CAAC,GAACC,IAGzChB,EAAQ,EAAEiB,SAASd,EAAY,CAAC,GAAC,cAuBnCiC,IAAAlB,cA3BqCnB,EAAa;CAAAoB,YAAA,GAAAC,GAAA;EAAAC,AAAA,MAAA,GAAAD,CAAA,GAAAC,EAAA,MAAAb,IAAAc,EAAA,IAAA,GAAAC,EAAA,IAAA,EAAA,GAAAF,EAAA,MAAAX,GAAAc,EAAA,MAKzB,IAAIpB,EAAU,CAAC,CAAA;CAAA;CAAA,KAAAO,KAAA;EAAA,OAAAc,EAAAjB,GAAA,IAAA;CAAA;CAAA,IAH9BkB,UAASC,GAAA;EAAAC,EAAApB,GAAA,MAAAmB,CAAA;CAAA;CAAA,IAGDE,OAAI;EAAA,OAAAJ,EAAAf,GAAA,IAAA;CAAA;CAAA,IAAJmB,KAAIF,GAAA;EAAAC,EAAAlB,GAAA,MAAAiB,CAAA;CAAA;CAErB,MAAMG,oBAAqB;EAGzB,AAFA,MAAMA,kBAAkB,GAExB,MAAM,KAAKD,KAAKE,WAAW;CAC7B;CAEUC,WAAYC,GAAyC;EAG7D,AAFA,MAAMD,WAAWC,CAAiB,GAE9BA,EAAkBC,IAAI,WAAW,MACnC,KAAKL,KAAKH,YAAY,KAAKA,aAAAA;CAE/B;CAEUS,SAAU;EAClB,OAAOlC,CAAI;;;;CAIb;AACF,GAAC,CAAAoC,GAAA,CAAAd,GAAAC,GAAAF,IAAAgB,GAAA,CAAA/B,GAAAgC,MAAAC,EAAAJ,GAAA,CAAA;CAAAxB;CAAA;CAAA;AAAA,GAAA;CAAAI;CAAA;CAAA;AAAA,CAAA,GAAAV,GAAA,GAAA,KAAA,GA3BqCP,CAAY,GAAAwC,EAAA;;;ACPlD,IAAA,IAAeG"}
@@ -1,6 +1,6 @@
1
- import { m as e, x as t } from "./index.esm-CyyOkz04.js";
2
- import { b as n, g as r, i, o as a, r as o, u as s } from "./components-DrP7BOrs.js";
3
- import { a as c, i as l, o as u, r as d, s as f } from "./rdf-input-n73oeSkf.js";
1
+ import { m as e, x as t } from "./index.esm-BW2SOmt6.js";
2
+ import { b as n, g as r, i, o as a, r as o, u as s } from "./components-BHoVP7zE.js";
3
+ import { a as c, i as l, o as u, r as d, s as f } from "./rdf-input-CH5Aah6g.js";
4
4
  //#region src/components/rdf-form/RDFForm.ts
5
5
  var p, m, h, g, _, v, y, b, x, S, C, w, T, E, D, O, k, A, j;
6
6
  function M(e, t, n) {
@@ -336,4 +336,4 @@ var Q = W;
336
336
  //#endregion
337
337
  export { W as n, Q as t };
338
338
 
339
- //# sourceMappingURL=rdf-form-BeuzVBOP.js.map
339
+ //# sourceMappingURL=rdf-form-CUUvMplY.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rdf-form-BeuzVBOP.js","names":["property","state","html","consume","customElement","WebComponent","ns","fetchData","findForm","sortBySequence","sym","DEFAULT_STORE","storeContext","urlConverter","fromAttribute","value","URL","toAttribute","hrefFromUrlValue","href","_classDecs","_RDFForm","_A","WeakMap","_B","_C","_D","_E","_F","_G","_ref","_storeContextDecs","context","subscribe","_passedInStoreDecs","attribute","_entireDataIsReadonlyDecs","_loadVersionDecs","_documentsLoadedDecs","_formUrlDecs","converter","_subjectUrlDecs","RDFForm","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_storeContext","_init_passedInStore","_init_entireDataIsReadonly","_init__loadVersion","_init__documentsLoaded","_init_formUrl","_init_subjectUrl","_classPrivateFieldGet","v","_classPrivateFieldSet","passedInStore","currentStore","store","entireDataIsReadonly","_loadVersion","_documentsLoaded","formUrl","subjectUrl","render","updater","editable","undefined","formRoot","Error","formDocument","parts","each","ui","partsBySequence","partItems","flatMap","item","Array","isArray","elements","uiFields","map","types","rdf","typeNode","String","hashIndex","lastIndexOf","fieldValue","slice","part","willUpdate","changedProperties","has","loadDocumentsIfNeeded","error","console","_RDFForm2","e","c","_initClass","_applyDecs","default","RDFForm"],"sources":["../../src/components/rdf-form/RDFForm.ts","../../src/components/rdf-form/index.ts"],"sourcesContent":["import { property, state } from 'lit/decorators.js'\nimport { html } from 'lit/html.js'\nimport type { PropertyValues } from 'lit'\nimport { consume } from '@lit/context'\nimport { customElement, WebComponent } from '@/lib/components'\nimport ns from '../../lib/ns'\nimport { fetchData, findForm, sortBySequence } from '../../lib/forms/rdfFormsHelper'\nimport { sym, LiveStore } from 'rdflib'\nimport '@/components/rdf-input'\nimport { DEFAULT_STORE, storeContext, StoreContext } from '@/lib/forms/store/StoreContext'\n\nconst urlConverter = {\n fromAttribute (value: string | null): URL | null {\n if (!value) return null\n\n try {\n return new URL(value)\n } catch {\n return null\n }\n },\n toAttribute (value: URL | null) {\n if (!value) return null\n return value\n }\n}\n\nconst hrefFromUrlValue = (value: URL | null): string =>\n value?.href ?? ''\n\n@customElement('solid-ui-rdf-form')\nexport default class RDFForm extends WebComponent {\n @consume({ context: storeContext, subscribe: true })\n private accessor storeContext: StoreContext = DEFAULT_STORE\n\n @property({ attribute: false })\n accessor passedInStore: LiveStore | null = null\n\n private get currentStore (): LiveStore {\n return this.passedInStore ?? this.storeContext.store\n }\n\n @state()\n private accessor entireDataIsReadonly: boolean = true // to protect data, we default to not editable\n\n @state()\n private accessor _loadVersion = 0\n\n @state()\n private accessor _documentsLoaded = false\n\n @property({ converter: urlConverter })\n accessor formUrl: URL | null = null\n\n @property({ converter: urlConverter })\n accessor subjectUrl: URL | null = null\n\n render () {\n if (!this._documentsLoaded) {\n return html``\n }\n\n const store = this.currentStore\n\n const subjectUrl = hrefFromUrlValue(this.subjectUrl)\n if (subjectUrl && store.updater?.editable(subjectUrl) !== undefined && store.updater?.editable(subjectUrl) !== false) {\n this.entireDataIsReadonly = false\n }\n\n const formRoot = findForm(this.currentStore, hrefFromUrlValue(this.formUrl)) // If there are more 'a ui:Form' elements in a form file\n if (!formRoot) throw new Error('No ui:Form found in ' + hrefFromUrlValue(this.formUrl))\n\n const formDocument = sym(hrefFromUrlValue(this.formUrl)) // rdflib NamedNode for the document\n const parts = store.each(formRoot, ns.ui('parts'), null, formDocument)\n const partsBySequence = sortBySequence(store, parts)\n const partItems = (partsBySequence || []).flatMap(item => {\n if (item && typeof item === 'object' && 'elements' in item && Array.isArray((item as any).elements)) {\n return (item as any).elements\n }\n return [item]\n })\n const uiFields = partItems.map(item => {\n const types = store.each(item as any, ns.rdf('type'), null, formDocument)\n const typeNode = types[0]\n const value = typeNode ? ((typeNode as any).value || String(typeNode)) : ((item as any).value || String(item))\n const hashIndex = value.lastIndexOf('#')\n return {\n value: item,\n fieldValue: hashIndex >= 0 ? value.slice(hashIndex + 1) : value\n }\n })\n\n return html`\n <form>\n ${uiFields.map(part => {\n switch (part.fieldValue) {\n case 'PhoneField':\n case 'EmailField':\n case 'ColorField':\n case 'DateField':\n case 'DateTimeField':\n case 'TimeField':\n case 'NumericField':\n case 'IntegerField':\n case 'DecimalField':\n case 'FloatField':\n case 'TextField':\n case 'SingleLineTextField':\n case 'NamedNodeURIField': {\n return html` <solid-ui-rdf-input \n .formSubject=${sym(part.value)} \n .dataSubject=${sym(subjectUrl)}\n .storeVersion=${this._loadVersion}\n .readonly=${this.entireDataIsReadonly}\n ></solid-ui-rdf-input>\n <br>`\n }\n case 'MultiLineTextField':\n return html`<input .rdf=${part}></input>`\n case 'BooleanField':\n return html`<input .rdf=${part}></input>`\n case 'TristateField':\n return html`<input .rdf=${part}></input>`\n case 'Classifier':\n return html`<input .rdf=${part}></input>`\n case 'Choice':\n return html`<input .rdf=${part}></input>`\n case 'Multiple':\n return html`<input .rdf=${part}></input>`\n case 'Options':\n return html`<input .rdf=${part}></input>`\n case 'AutocompleteField':\n return html`<input .rdf=${part}></input>`\n case 'Comment':\n case 'Heading':\n return html`<input .rdf=${part}></input>`\n default:\n return html`<div>Unknown part type: ${part}</div>`\n }\n })}\n </form>\n `\n }\n\n protected override willUpdate (changedProperties: PropertyValues<this>) {\n super.willUpdate(changedProperties)\n if (changedProperties.has('formUrl') ||\n changedProperties.has('subjectUrl') ||\n changedProperties.has('passedInStore')\n ) {\n this.loadDocumentsIfNeeded()\n }\n }\n\n private async loadDocumentsIfNeeded () {\n const store = this.currentStore\n const formUrl = hrefFromUrlValue(this.formUrl)\n const subjectUrl = hrefFromUrlValue(this.subjectUrl)\n\n if (!formUrl || !subjectUrl) return\n\n try {\n await fetchData(store, formUrl)\n await fetchData(store, subjectUrl)\n this._loadVersion += 1\n this._documentsLoaded = true\n } catch (error) {\n console.error('Failed to load RDF documents', error)\n }\n }\n}\n","import RDFForm from './RDFForm'\n\nexport { RDFForm }\nexport default RDFForm\n"],"mappings":"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"}
1
+ {"version":3,"file":"rdf-form-CUUvMplY.js","names":["property","state","html","consume","customElement","WebComponent","ns","fetchData","findForm","sortBySequence","sym","DEFAULT_STORE","storeContext","urlConverter","fromAttribute","value","URL","toAttribute","hrefFromUrlValue","href","_classDecs","_RDFForm","_A","WeakMap","_B","_C","_D","_E","_F","_G","_ref","_storeContextDecs","context","subscribe","_passedInStoreDecs","attribute","_entireDataIsReadonlyDecs","_loadVersionDecs","_documentsLoadedDecs","_formUrlDecs","converter","_subjectUrlDecs","RDFForm","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_storeContext","_init_passedInStore","_init_entireDataIsReadonly","_init__loadVersion","_init__documentsLoaded","_init_formUrl","_init_subjectUrl","_classPrivateFieldGet","v","_classPrivateFieldSet","passedInStore","currentStore","store","entireDataIsReadonly","_loadVersion","_documentsLoaded","formUrl","subjectUrl","render","updater","editable","undefined","formRoot","Error","formDocument","parts","each","ui","partsBySequence","partItems","flatMap","item","Array","isArray","elements","uiFields","map","types","rdf","typeNode","String","hashIndex","lastIndexOf","fieldValue","slice","part","willUpdate","changedProperties","has","loadDocumentsIfNeeded","error","console","_RDFForm2","e","c","_initClass","_applyDecs","default","RDFForm"],"sources":["../../src/components/rdf-form/RDFForm.ts","../../src/components/rdf-form/index.ts"],"sourcesContent":["import { property, state } from 'lit/decorators.js'\nimport { html } from 'lit/html.js'\nimport type { PropertyValues } from 'lit'\nimport { consume } from '@lit/context'\nimport { customElement, WebComponent } from '@/lib/components'\nimport ns from '../../lib/ns'\nimport { fetchData, findForm, sortBySequence } from '../../lib/forms/rdfFormsHelper'\nimport { sym, LiveStore } from 'rdflib'\nimport '@/components/rdf-input'\nimport { DEFAULT_STORE, storeContext, StoreContext } from '@/lib/forms/store/StoreContext'\n\nconst urlConverter = {\n fromAttribute (value: string | null): URL | null {\n if (!value) return null\n\n try {\n return new URL(value)\n } catch {\n return null\n }\n },\n toAttribute (value: URL | null) {\n if (!value) return null\n return value\n }\n}\n\nconst hrefFromUrlValue = (value: URL | null): string =>\n value?.href ?? ''\n\n@customElement('solid-ui-rdf-form')\nexport default class RDFForm extends WebComponent {\n @consume({ context: storeContext, subscribe: true })\n private accessor storeContext: StoreContext = DEFAULT_STORE\n\n @property({ attribute: false })\n accessor passedInStore: LiveStore | null = null\n\n private get currentStore (): LiveStore {\n return this.passedInStore ?? this.storeContext.store\n }\n\n @state()\n private accessor entireDataIsReadonly: boolean = true // to protect data, we default to not editable\n\n @state()\n private accessor _loadVersion = 0\n\n @state()\n private accessor _documentsLoaded = false\n\n @property({ converter: urlConverter })\n accessor formUrl: URL | null = null\n\n @property({ converter: urlConverter })\n accessor subjectUrl: URL | null = null\n\n render () {\n if (!this._documentsLoaded) {\n return html``\n }\n\n const store = this.currentStore\n\n const subjectUrl = hrefFromUrlValue(this.subjectUrl)\n if (subjectUrl && store.updater?.editable(subjectUrl) !== undefined && store.updater?.editable(subjectUrl) !== false) {\n this.entireDataIsReadonly = false\n }\n\n const formRoot = findForm(this.currentStore, hrefFromUrlValue(this.formUrl)) // If there are more 'a ui:Form' elements in a form file\n if (!formRoot) throw new Error('No ui:Form found in ' + hrefFromUrlValue(this.formUrl))\n\n const formDocument = sym(hrefFromUrlValue(this.formUrl)) // rdflib NamedNode for the document\n const parts = store.each(formRoot, ns.ui('parts'), null, formDocument)\n const partsBySequence = sortBySequence(store, parts)\n const partItems = (partsBySequence || []).flatMap(item => {\n if (item && typeof item === 'object' && 'elements' in item && Array.isArray((item as any).elements)) {\n return (item as any).elements\n }\n return [item]\n })\n const uiFields = partItems.map(item => {\n const types = store.each(item as any, ns.rdf('type'), null, formDocument)\n const typeNode = types[0]\n const value = typeNode ? ((typeNode as any).value || String(typeNode)) : ((item as any).value || String(item))\n const hashIndex = value.lastIndexOf('#')\n return {\n value: item,\n fieldValue: hashIndex >= 0 ? value.slice(hashIndex + 1) : value\n }\n })\n\n return html`\n <form>\n ${uiFields.map(part => {\n switch (part.fieldValue) {\n case 'PhoneField':\n case 'EmailField':\n case 'ColorField':\n case 'DateField':\n case 'DateTimeField':\n case 'TimeField':\n case 'NumericField':\n case 'IntegerField':\n case 'DecimalField':\n case 'FloatField':\n case 'TextField':\n case 'SingleLineTextField':\n case 'NamedNodeURIField': {\n return html` <solid-ui-rdf-input \n .formSubject=${sym(part.value)} \n .dataSubject=${sym(subjectUrl)}\n .storeVersion=${this._loadVersion}\n .readonly=${this.entireDataIsReadonly}\n ></solid-ui-rdf-input>\n <br>`\n }\n case 'MultiLineTextField':\n return html`<input .rdf=${part}></input>`\n case 'BooleanField':\n return html`<input .rdf=${part}></input>`\n case 'TristateField':\n return html`<input .rdf=${part}></input>`\n case 'Classifier':\n return html`<input .rdf=${part}></input>`\n case 'Choice':\n return html`<input .rdf=${part}></input>`\n case 'Multiple':\n return html`<input .rdf=${part}></input>`\n case 'Options':\n return html`<input .rdf=${part}></input>`\n case 'AutocompleteField':\n return html`<input .rdf=${part}></input>`\n case 'Comment':\n case 'Heading':\n return html`<input .rdf=${part}></input>`\n default:\n return html`<div>Unknown part type: ${part}</div>`\n }\n })}\n </form>\n `\n }\n\n protected override willUpdate (changedProperties: PropertyValues<this>) {\n super.willUpdate(changedProperties)\n if (changedProperties.has('formUrl') ||\n changedProperties.has('subjectUrl') ||\n changedProperties.has('passedInStore')\n ) {\n this.loadDocumentsIfNeeded()\n }\n }\n\n private async loadDocumentsIfNeeded () {\n const store = this.currentStore\n const formUrl = hrefFromUrlValue(this.formUrl)\n const subjectUrl = hrefFromUrlValue(this.subjectUrl)\n\n if (!formUrl || !subjectUrl) return\n\n try {\n await fetchData(store, formUrl)\n await fetchData(store, subjectUrl)\n this._loadVersion += 1\n this._documentsLoaded = true\n } catch (error) {\n console.error('Failed to load RDF documents', error)\n }\n }\n}\n","import RDFForm from './RDFForm'\n\nexport { RDFForm }\nexport default RDFForm\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { I as e, S as t, m as n, x as r } from "./index.esm-CyyOkz04.js";
2
- import { t as i, u as a } from "./style-CjYxsW7j.js";
3
- import { b as o, g as s, i as c, o as l, r as u, u as d, x as f, y as p } from "./components-DrP7BOrs.js";
4
- import "./input-CFDN76Y5.js";
1
+ import { I as e, S as t, m as n, x as r } from "./index.esm-BW2SOmt6.js";
2
+ import { t as i, u as a } from "./style-_Eni1Wf8.js";
3
+ import { b as o, g as s, i as c, o as l, r as u, u as d, x as f, y as p } from "./components-BHoVP7zE.js";
4
+ import "./input-BIhn_8nf.js";
5
5
  //#region src/lib/forms/rdfFormsHelper.ts
6
6
  async function m(e, t) {
7
7
  let n = r(t);
@@ -437,4 +437,4 @@ var ne = q;
437
437
  //#endregion
438
438
  export { m as a, b as i, q as n, _ as o, y as r, h as s, ne as t };
439
439
 
440
- //# sourceMappingURL=rdf-input-n73oeSkf.js.map
440
+ //# sourceMappingURL=rdf-input-CH5Aah6g.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rdf-input-n73oeSkf.js","names":["sym","parse","ns","baseUri","loadDocument","store","documentSource","documentName","documentURI","preferRemote","finalDocumentUri","document","holds","undefined","removeStatements","statementsMatching","parseSource","Promise","resolve","reject","err","console","error","fetcher","load","force","clearPreviousData","then","catch","trim","length","Error","fetchData","sortBySequence","list","subfields","map","p","k","any","ui","seq","Number","value","isNaN","sort","a","b","pair","mostSpecificClassURI","subject","typeUri","findTypeURIs","specificTypes","bottomTypeURIs","finalTypes","t","push","findForm","sourceUri","docUrl","split","fragment","includes","candidate","rdf","forms","each","found","find","term","termType","ns","style","fieldParams","ui","uri","size","type","dt","pattern","namedNode","defaultInputValue","formGroupStyle","element","commentStyle","formHeadingStyle","NoopStore","store","Error","createContext","NoopStore","DEFAULT_STORE","storeContext","Symbol","property","state","html","ns","customElement","generateId","WebComponent","Literal","st","label","mostSpecificClassURI","fieldParams","fieldTypeParams","DEFAULT_STORE","storeContext","consume","_classDecs","_RDFInput","_A","WeakMap","_B","_C","_D","_E","_F","_ref","_storeContextDecs","context","subscribe","_formSubjectDecs","attribute","type","Object","_dataSubjectDecs","_storeVersionDecs","Number","_localInputValueDecs","_readonlyDecs","Boolean","reflect","RDFInput","_classPrivateFieldGet","v","_classPrivateFieldSet","formSubject","dataSubject","storeVersion","localInputValue","readonly","constructor","_classPrivateFieldInitSpec","_initProto","_init_storeContext","_init_formSubject","_init_dataSubject","_init_storeVersion","_init_localInputValue","_defineProperty","_init_readonly","id","render","formDocument","getDocument","uiPropertyTerm","getFormProperty","ui","inputLabel","getInputLabel","getReadOnly","fieldType","store","undefined","params","inputType","selectedTerm","getSelectedTerm","placeholder","defaultInputValue","inputValue","_updateInFlight","_pendingUpdateValue","termToInputValue","updateData","subject","doc","graph","any","formFieldSubject","uiLabel","propertyLabel","value","anyJS","defaultTerm","inputTerm","term","decodeURIComponent","String","stripped","replace","e","newValue","target","runPendingUpdate","dataDocument","updater","editable","toDeleteSt","statementsMatching","toInsertSt","objectFromNewValue","namedNode","sym","encodeURIComponent","dt","trim","xsd","map","statement","predicate","why","length","updateMany","err","console","error","_RDFInput2","c","_initClass","_applyDecs","default","RDFInput"],"sources":["../../src/lib/forms/rdfFormsHelper.ts","../../src/lib/forms/fieldParams.ts","../../src/lib/forms/store/NoopStore.ts","../../src/lib/forms/store/StoreContext.ts","../../src/components/rdf-input/RDFInput.ts","../../src/components/rdf-input/index.ts"],"sourcesContent":["import { sym, LiveStore, parse } from 'rdflib'\nimport type { Term } from 'rdflib/lib/tf-types'\n// eslint-disable-next-line camelcase\nimport type { Quad_Subject, NamedNode } from 'rdflib/lib/tf-types'\nimport ns from '../../lib/ns'\n\nconst baseUri = 'https://solidos.github.io/solid-ui/src/ontology/'\n\nexport function loadDocument (\n store: LiveStore,\n documentSource: string,\n documentName: string,\n documentURI?: string,\n preferRemote = false\n) {\n const finalDocumentUri = documentURI || baseUri + documentName // Full URI to the file\n const document = sym(finalDocumentUri) // rdflib NamedNode for the document\n\n if (store.holds(undefined, undefined, undefined, document)) {\n store.removeStatements(store.statementsMatching(undefined, undefined, undefined, document))\n }\n\n const parseSource = () => {\n return new Promise<void>((resolve, reject) => {\n parse(documentSource, store, finalDocumentUri, 'text/turtle', (err) => {\n if (err) {\n console.error('Parse document error for ', finalDocumentUri, err)\n reject(err)\n } else {\n resolve()\n }\n })\n })\n }\n\n if (preferRemote && documentURI) {\n return store.fetcher.load(documentURI, {\n force: true,\n clearPreviousData: true,\n }).then(() => {}).catch((err) => {\n if (documentSource && documentSource.trim().length > 0) {\n return parseSource()\n }\n throw err\n })\n }\n\n if (documentSource && documentSource.trim().length > 0) {\n return parseSource()\n }\n\n if (documentURI) {\n return store.fetcher.load(documentURI, {\n force: true,\n clearPreviousData: true,\n }).then(() => {})\n }\n\n return Promise.reject(new Error(`No document source or URI for ${documentName}`))\n}\n\nexport async function fetchData (\n store: LiveStore,\n documentURI: string\n) {\n const document = sym(documentURI) // rdflib NamedNode for the document\n\n if (store.holds(undefined, undefined, undefined, document)) {\n store.removeStatements(store.statementsMatching(undefined, undefined, undefined, document))\n }\n\n return await store.fetcher.load(documentURI, {\n force: true,\n clearPreviousData: true,\n })\n}\n\nexport function sortBySequence (\n store: LiveStore,\n list: Term[]\n) {\n const subfields = list.map((p) => {\n const k = store.any(p as any, ns.ui('sequence'))\n const seq = k ? Number((k as { value: string }).value) : 9999\n return [Number.isNaN(seq) ? 9999 : seq, p] as const\n })\n\n subfields.sort((a, b) => a[0] - b[0])\n\n return subfields.map(pair => pair[1])\n}\n\n/**\n * Which class of field is this? Relies on http://www.w3.org/2000/01/rdf-schema#subClassOf and\n * https://linkeddata.github.io/rdflib.js/doc/classes/formula.html#bottomtypeuris\n * to find the most specific RDF type if there are multiple.\n *\n * @param subject a form field, e.g. `namedNode('https://timbl.com/timbl/Public/Test/Forms/individualForm.ttl#fullNameField')`\n * @returns the URI of the most specific known class, e.g. `http://www.w3.org/ns/ui#SingleLineTextField`\n */\n// eslint-disable-next-line camelcase\nexport function mostSpecificClassURI (store: LiveStore, subject: Quad_Subject): string {\n const typeUri = store.findTypeURIs(subject)\n const specificTypes = store.bottomTypeURIs(typeUri) // most specific\n const finalTypes: any[] = []\n for (const t in specificTypes) finalTypes.push(t)\n // if (finalTypes.length > 1) throw \"Didn't expect \"+subject+\" to have multiple bottom types: \"+finalTypes\n return finalTypes[0]\n}\n\n// Find the first ui:Form node in a store, optionally matching a fragment.\n// code based on Jeff Zucker's sol-components: https://github.com/jeff-zucker/sol-components (core/form-utils.js)\nexport function findForm (store: LiveStore, sourceUri: string): NamedNode | null {\n const docUrl = sourceUri.split('#')[0]\n const fragment = sourceUri.includes('#') ? sourceUri.split('#')[1] : null\n if (fragment) {\n const candidate = sym(docUrl + '#' + fragment)\n if (store.holds(candidate, ns.rdf('type'), ns.ui('Form'))) return candidate\n }\n const forms = store.each(null, ns.rdf('type'), ns.ui('Form'))\n const found = forms.find((term) => term.termType === 'NamedNode')\n return found ? (found as NamedNode) : null\n}\n","import ns from '../../lib/ns'\nimport { style } from '../../lib/style'\n\nexport type InputType =\n | 'hidden'\n | 'text'\n | 'search'\n | 'tel'\n | 'url'\n | 'email'\n | 'password'\n | 'datetime'\n | 'date'\n | 'month'\n | 'week'\n | 'time'\n | 'datetime-local'\n | 'number'\n | 'range'\n | 'color'\n | 'checkbox'\n | 'radio'\n | 'file'\n | 'submit'\n | 'image'\n | 'reset'\n | 'button'\n\nexport type FieldParamsObject = {\n size?: number, // input element size attribute\n type?: InputType, // input element type attribute. Default: 'text' (not for Comment and Heading)\n element?: string, // element type to use (Comment and Heading only)\n style?: string, // style to use\n dt?: string, // xsd data type for the RDF Literal corresponding to the field value. Default: xsd:string\n defaultInputValue?: string, // e.g. 'mailto:'. Default value in input field, will be removed when displaying actual value to user.\n namedNode?: boolean, // if true, field value corresponds to the URI of an RDF NamedNode. Overrides dt and defaultInputValue.\n pattern?: RegExp // for client-side input validation; field will go red if violated, green if ok\n}\n\n/**\n * The fieldParams object defines various constants\n * for use in various form fields. Depending on the\n * field in questions, different values may be read\n * from here.\n */\nexport const fieldParams: { [ fieldUri: string ]: FieldParamsObject } = {\n /**\n * Text field\n *\n * For possible date popups see e.g. http://www.dynamicdrive.com/dynamicindex7/jasoncalendar.htm\n * or use HTML5: http://www.w3.org/TR/2011/WD-html-markup-20110113/input.date.html\n */\n [ns.ui('ColorField').uri]: {\n size: 9,\n type: 'color',\n style: 'height: 3em;', // around 1.5em is padding\n dt: 'color',\n pattern: /^\\s*#[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]([0-9a-f][0-9a-f])?\\s*$/\n }, // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/color\n\n [ns.ui('DateField').uri]: {\n size: 20,\n type: 'date',\n dt: 'date',\n pattern: /^\\s*[0-9][0-9][0-9][0-9](-[0-1]?[0-9]-[0-3]?[0-9])?Z?\\s*$/\n },\n\n [ns.ui('DateTimeField').uri]: {\n size: 20,\n type: 'datetime-local', // See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/datetime\n dt: 'dateTime',\n pattern: /^\\s*[0-9][0-9][0-9][0-9](-[0-1]?[0-9]-[0-3]?[0-9])?(T[0-2][0-9]:[0-5][0-9](:[0-5][0-9])?)?Z?\\s*$/\n },\n\n [ns.ui('TimeField').uri]: {\n size: 10,\n type: 'time',\n dt: 'time',\n pattern: /^\\s*([0-2]?[0-9]:[0-5][0-9](:[0-5][0-9])?)\\s*$/\n },\n\n [ns.ui('IntegerField').uri]: {\n size: 12,\n style: 'text-align: right;',\n dt: 'integer',\n pattern: /^\\s*-?[0-9]+\\s*$/\n },\n\n [ns.ui('DecimalField').uri]: {\n size: 12,\n style: 'text-align: right;',\n dt: 'decimal',\n pattern: /^\\s*-?[0-9]*(\\.[0-9]*)?\\s*$/\n },\n\n [ns.ui('FloatField').uri]: {\n size: 12,\n style: 'text-align: right;',\n dt: 'float',\n pattern: /^\\s*-?[0-9]*(\\.[0-9]*)?((e|E)-?[0-9]*)?\\s*$/\n },\n\n [ns.ui('SingleLineTextField').uri]: {\n\n },\n [ns.ui('NamedNodeURIField').uri]: {\n namedNode: true\n },\n [ns.ui('TextField').uri]: {\n\n },\n\n [ns.ui('PhoneField').uri]: {\n size: 20,\n defaultInputValue: 'tel:',\n pattern: /^\\+?[\\d-]+[\\d]*$/\n },\n\n [ns.ui('EmailField').uri]: {\n size: 30,\n defaultInputValue: 'mailto:',\n pattern: /^\\s*.*@.*\\..*\\s*$/ // @@ Get the right regexp here\n },\n\n [ns.ui('Group').uri]: {\n style: style.formGroupStyle\n },\n\n /**\n * Non-interactive fields\n */\n [ns.ui('Comment').uri]: {\n element: 'p',\n style: style.commentStyle\n },\n [ns.ui('Heading').uri]: {\n element: 'h3',\n style: style.formHeadingStyle\n }\n}\n","import { LiveStore } from 'rdflib'\nimport { StoreContext } from './StoreContext'\n\nexport default class NoopStore implements StoreContext {\n get store (): LiveStore {\n throw new Error('Cannot use RDF forms without a store')\n }\n}\n","import { createContext } from '@lit/context'\nimport { LiveStore } from 'rdflib'\nimport NoopStore from './NoopStore'\n\nexport interface StoreContext {\n store: LiveStore\n}\n\nexport const DEFAULT_STORE = new NoopStore()\nexport const storeContext = createContext<StoreContext>(Symbol('storeContext'))\n","import { property, state } from 'lit/decorators.js'\nimport { html } from 'lit/html.js'\nimport ns from '../../lib/ns'\nimport { customElement, generateId, WebComponent } from '@/lib/components'\nimport { Literal, NamedNode, st } from 'rdflib'\nimport { label } from '../../utils'\nimport { mostSpecificClassURI } from '../../lib/forms/rdfFormsHelper'\nimport { FieldParamsObject, fieldParams as fieldTypeParams, InputType } from '../../lib/forms/fieldParams'\nimport { DEFAULT_STORE, storeContext, StoreContext } from '@/lib/forms/store/StoreContext'\nimport { consume } from '@lit/context'\nimport '@/components/input'\n\n@customElement('solid-ui-rdf-input')\nexport default class RDFInput extends WebComponent {\n // example RDF Turtle format source:\n // :nameField a ui:SingleLineTextField ;\n // ui:property vcard:fn;\n // ui:label \"name\" .\n\n // formSubject describes the field metadata\n // dataSubject points to the data resource containing the value\n\n @consume({ context: storeContext, subscribe: true })\n private accessor storeContext: StoreContext = DEFAULT_STORE\n\n @property({ attribute: false, type: Object })\n accessor formSubject: NamedNode | null = null\n\n @property({ attribute: false, type: Object })\n accessor dataSubject: NamedNode | null = null\n\n @property({ type: Number })\n accessor storeVersion = 0\n\n @state()\n private accessor localInputValue: string | null = null\n\n private _updateInFlight = false\n private _pendingUpdateValue: string | null = null\n\n @property({ type: Boolean, reflect: true })\n accessor readonly: boolean = true // to protect data, we default to not editable\n\n constructor () {\n super()\n\n this.id = generateId()\n }\n\n render () {\n const formDocument = this.getDocument(this.formSubject)\n\n // for building the HTML input element\n const uiPropertyTerm = this.getFormProperty(this.formSubject, ns.ui('property'), formDocument)\n const inputLabel = this.getInputLabel(this.formSubject, uiPropertyTerm, formDocument)\n const readonly = this.getReadOnly(this.readonly, this.formSubject, formDocument)\n\n const fieldType = this.formSubject ? mostSpecificClassURI(this.storeContext.store, this.formSubject) : undefined\n const params = fieldType ? fieldTypeParams[fieldType] ?? {} : {}\n const inputType: InputType = params.type ?? 'text'\n\n // for populating the HTML input element\n const selectedTerm = this.getSelectedTerm(this.dataSubject, uiPropertyTerm, this.formSubject, params)\n const placeholder = readonly ? '' : this.defaultInputValue(params)\n const inputValue = this._updateInFlight || this._pendingUpdateValue !== null\n ? this.localInputValue ?? ''\n : this.termToInputValue(selectedTerm)\n\n return html`\n <solid-ui-input\n label=\"${inputLabel}\"\n name=\"name-${this.id}\"\n .value=${inputValue}\n .placeholder=${placeholder}\n type=\"${inputType}\"\n ?readonly=${readonly}\n @input=${this.updateData}\n ></solid-ui-input>`\n }\n\n private getDocument (subject: NamedNode | null | undefined) {\n return subject?.doc ? subject.doc() : undefined\n }\n\n private getFormProperty (subject: NamedNode | null | undefined, property: NamedNode, graph?: any): NamedNode | undefined {\n if (!subject) return undefined\n return this.storeContext.store.any(subject, property, null, graph) as NamedNode | undefined\n }\n\n private getInputLabel (formFieldSubject: NamedNode | null | undefined, uiPropertyTerm?: NamedNode, graph?: any): string {\n if (!formFieldSubject) return ''\n const uiLabel = this.storeContext.store.any(formFieldSubject, ns.ui('label'), null, graph)\n const propertyLabel = uiPropertyTerm ? label(uiPropertyTerm, true) : ''\n return uiLabel ? uiLabel.value : propertyLabel\n }\n\n private getReadOnly (readonly: boolean, formFieldSubject?: NamedNode | null, graph?: any): boolean {\n if (formFieldSubject && readonly === false) { // if readonly is false, we can ovverride it if the field is marked as uneditable in the form\n return !!this.storeContext.store.anyJS(formFieldSubject, ns.ui('suppressEmptyUneditable'), null, graph)\n }\n return readonly\n }\n\n private getSelectedTerm (\n dataSubject?: NamedNode | null,\n uiPropertyTerm?: NamedNode,\n formFieldSubject?: NamedNode | null,\n params?: { defaultInputValue?: string }\n ) {\n const defaultTerm = formFieldSubject\n ? this.storeContext.store.any(formFieldSubject, ns.ui('default'))\n : undefined\n\n if (!uiPropertyTerm || !dataSubject) {\n return defaultTerm\n }\n\n const inputTerm = this.storeContext.store.any(dataSubject, uiPropertyTerm)\n return inputTerm || defaultTerm\n }\n\n private termToInputValue (term: any) {\n if (!term || !('value' in term) || !term.value) return ''\n\n try {\n return decodeURIComponent(term.value)\n } catch {\n return String(term.value)\n }\n }\n\n private defaultInputValue (params: { defaultInputValue?: string } = {}) {\n const stripped = params.defaultInputValue ?? ''\n return stripped.replace(/ /g, '')\n }\n\n private async updateData (e: CustomEvent) {\n const newValue = (e.target as HTMLInputElement).value\n this.localInputValue = newValue\n this._pendingUpdateValue = newValue\n\n if (this._updateInFlight) {\n return\n }\n\n await this.runPendingUpdate()\n }\n\n private async runPendingUpdate () {\n if (this._pendingUpdateValue === null) {\n return\n }\n\n const newValue = this._pendingUpdateValue\n this._pendingUpdateValue = null\n this._updateInFlight = true\n\n const uiPropertyTerm = this.getFormProperty(this.formSubject, ns.ui('property'), this.getDocument(this.formSubject))\n if (!uiPropertyTerm || !this.dataSubject) {\n this._updateInFlight = false\n this.localInputValue = ''\n return\n }\n\n const dataDocument = this.getDocument(this.dataSubject)\n if (dataDocument && this.storeContext.store.updater?.editable(dataDocument) === false) {\n this._updateInFlight = false\n return\n }\n\n const toDeleteSt = this.storeContext.store.statementsMatching(this.dataSubject, uiPropertyTerm)\n let toInsertSt: Array<ReturnType<typeof st>> = []\n\n if (newValue) {\n let objectFromNewValue\n const fieldType = this.formSubject ? mostSpecificClassURI(this.storeContext.store, this.formSubject) : undefined\n const params: FieldParamsObject = fieldType ? fieldTypeParams[fieldType] ?? {} : {}\n if (params.namedNode) {\n objectFromNewValue = this.storeContext.store.sym(newValue)\n } else if (params.defaultInputValue) {\n objectFromNewValue = encodeURIComponent(newValue.replace(/ /g, ''))\n objectFromNewValue = this.storeContext.store.sym(params.defaultInputValue + objectFromNewValue)\n } else {\n if (params.dt) {\n objectFromNewValue = new Literal(\n newValue.trim(),\n undefined,\n ns.xsd(params.dt)\n )\n } else {\n objectFromNewValue = new Literal(newValue)\n }\n }\n toInsertSt = toDeleteSt.map((statement) => st(statement.subject, statement.predicate, objectFromNewValue, statement.why))\n if (toInsertSt.length === 0) {\n toInsertSt = [st(this.dataSubject, uiPropertyTerm, objectFromNewValue, this.getDocument(this.dataSubject))]\n }\n }\n\n try {\n await this.storeContext.store.updater.updateMany(toDeleteSt, toInsertSt as any)\n this.storeVersion += 1\n } catch (err) {\n console.error('RDFInput update failed', err)\n } finally {\n this._updateInFlight = false\n }\n\n if (this._pendingUpdateValue !== null) {\n await this.runPendingUpdate()\n }\n }\n}\n","import RDFInput from './RDFInput'\n\nexport { RDFInput }\nexport default RDFInput\n"],"mappings":";;;;;AA6DA,eAAsBgC,EACpB3B,GACAG,GACA;CACA,IAAMG,IAAWX,EAAIQ,CAAW;CAMhC,OAJIH,EAAMO,MAAMC,KAAAA,GAAWA,KAAAA,GAAWA,KAAAA,GAAWF,CAAQ,KACvDN,EAAMS,iBAAiBT,EAAMU,mBAAmBF,KAAAA,GAAWA,KAAAA,GAAWA,KAAAA,GAAWF,CAAQ,CAAC,GAGrF,MAAMN,EAAMkB,QAAQC,KAAKhB,GAAa;EAC3CiB,OAAO;EACPC,mBAAmB;CACrB,CAAC;AACH;AAEA,SAAgBO,EACd5B,GACA6B,GACA;CACA,IAAMC,IAAYD,EAAKE,KAAKC,MAAM;EAChC,IAAMC,IAAIjC,EAAMkC,IAAIF,GAAUnC,EAAGsC,GAAG,UAAU,CAAC,GACzCC,IAAMH,IAAII,OAAQJ,EAAwBK,KAAK,IAAI;EACzD,OAAO,CAACD,OAAOE,MAAMH,CAAG,IAAI,OAAOA,GAAKJ,CAAC;CAC3C,CAAC;CAID,OAFAF,EAAUU,MAAMC,GAAGC,MAAMD,EAAE,KAAKC,EAAE,EAAE,GAE7BZ,EAAUC,KAAIY,MAAQA,EAAK,EAAE;AACtC;AAWA,SAAgBC,EAAsB5C,GAAkB6C,GAA+B;CACrF,IAAMC,IAAU9C,EAAM+C,aAAaF,CAAO,GACpCG,IAAgBhD,EAAMiD,eAAeH,CAAO,GAC5CI,IAAoB,CAAA;CAC1B,KAAK,IAAMC,KAAKH,GAAeE,EAAWE,KAAKD,CAAC;CAEhD,OAAOD,EAAW;AACpB;AAIA,SAAgBG,EAAUrD,GAAkBsD,GAAqC;CAC/E,IAAMC,IAASD,EAAUE,MAAM,GAAG,CAAC,CAAC,IAC9BC,IAAWH,EAAUI,SAAS,GAAG,IAAIJ,EAAUE,MAAM,GAAG,CAAC,CAAC,KAAK;CACrE,IAAIC,GAAU;EACZ,IAAME,IAAYhE,EAAI4D,IAAS,MAAME,CAAQ;EAC7C,IAAIzD,EAAMO,MAAMoD,GAAW9D,EAAG+D,IAAI,MAAM,GAAG/D,EAAGsC,GAAG,MAAM,CAAC,GAAG,OAAOwB;CACpE;CAGA,OAFc3D,EAAM8D,KAAK,MAAMjE,EAAG+D,IAAI,MAAM,GAAG/D,EAAGsC,GAAG,MAAM,CAC7C0B,CAAAA,CAAMG,MAAMC,MAASA,EAAKC,aAAa,WAC9CH,KAA+B;AACxC;;;AC7EA,IAAaM,IAA2D;EAOrEF,EAAGG,GAAG,YAAY,CAAC,CAACC,MAAM;EACzBC,MAAM;EACNC,MAAM;EACNL,OAAO;EACPM,IAAI;EACJC,SAAS;CACX;EAECR,EAAGG,GAAG,WAAW,CAAC,CAACC,MAAM;EACxBC,MAAM;EACNC,MAAM;EACNC,IAAI;EACJC,SAAS;CACX;EAECR,EAAGG,GAAG,eAAe,CAAC,CAACC,MAAM;EAC5BC,MAAM;EACNC,MAAM;EACNC,IAAI;EACJC,SAAS;CACX;EAECR,EAAGG,GAAG,WAAW,CAAC,CAACC,MAAM;EACxBC,MAAM;EACNC,MAAM;EACNC,IAAI;EACJC,SAAS;CACX;EAECR,EAAGG,GAAG,cAAc,CAAC,CAACC,MAAM;EAC3BC,MAAM;EACNJ,OAAO;EACPM,IAAI;EACJC,SAAS;CACX;EAECR,EAAGG,GAAG,cAAc,CAAC,CAACC,MAAM;EAC3BC,MAAM;EACNJ,OAAO;EACPM,IAAI;EACJC,SAAS;CACX;EAECR,EAAGG,GAAG,YAAY,CAAC,CAACC,MAAM;EACzBC,MAAM;EACNJ,OAAO;EACPM,IAAI;EACJC,SAAS;CACX;EAECR,EAAGG,GAAG,qBAAqB,CAAC,CAACC,MAAM,CAEpC;EACCJ,EAAGG,GAAG,mBAAmB,CAAC,CAACC,MAAM,EAChCK,WAAW,GACb;EACCT,EAAGG,GAAG,WAAW,CAAC,CAACC,MAAM,CAE1B;EAECJ,EAAGG,GAAG,YAAY,CAAC,CAACC,MAAM;EACzBC,MAAM;EACNK,mBAAmB;EACnBF,SAAS;CACX;EAECR,EAAGG,GAAG,YAAY,CAAC,CAACC,MAAM;EACzBC,MAAM;EACNK,mBAAmB;EACnBF,SAAS;CACX;EAECR,EAAGG,GAAG,OAAO,CAAC,CAACC,MAAM,EACpBH,OAAOA,EAAMU,eACf;EAKCX,EAAGG,GAAG,SAAS,CAAC,CAACC,MAAM;EACtBQ,SAAS;EACTX,OAAOA,EAAMY;CACf;EACCb,EAAGG,GAAG,SAAS,CAAC,CAACC,MAAM;EACtBQ,SAAS;EACTX,OAAOA,EAAMa;CACf;AACF,GEnIaM,IAAgB,IAAID,MDLsB;CACrD,IAAIH,QAAoB;EACtB,MAAUC,MAAM,sCAAsC;CACxD;AACF,ECC2C,GAC9BI,IAAeH,EAA4BI,OAAO,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACCnDiB,IAAA,CAE1BZ,EAAc,oBAAoB,CAAC;AAAA,IAAAa,GAAAC,kBAAA,IAAAC,QAAA,GAAAC,kBAAA,IAAAD,QAAA,GAAAE,kBAAA,IAAAF,QAAA,GAAAG,kBAAA,IAAAH,QAAA,GAAAI,kBAAA,IAAAJ,QAAA,GAAAK,kBAAA,IAAAL,QAAA;AAAAM,KAAAC,IAUjCX,EAAQ;CAAEY,SAASb;CAAcc,WAAW;AAAK,CAAC,GAACC,IAGnD7B,EAAS;CAAE8B,WAAW;CAAOC,MAAMC;AAAO,CAAC,GAACC,IAG5CjC,EAAS;CAAE8B,WAAW;CAAOC,MAAMC;AAAO,CAAC,GAACE,IAG5ClC,EAAS,EAAE+B,MAAMI,OAAO,CAAC,GAACC,IAG1BnC,EAAM,GAACoC,IAMPrC,EAAS;CAAE+B,MAAMO;CAASC,SAAS;AAAK,CAAC,GAAC,iBA4K5CsF,IAAArF,cAvMqClC,EAAa;CAAA,KAAAmB,KAAA;EAAA,OAAAgB,EAAAvB,GAAA,IAAA;CAAA;CAAA,IAUhCJ,aAAY4B,GAAA;EAAAC,EAAAzB,GAAA,MAAAwB,CAAA;CAAA;CAAA,IAGpBE,cAAW;EAAA,OAAAH,EAAArB,GAAA,IAAA;CAAA;CAAA,IAAXwB,YAAWF,GAAA;EAAAC,EAAAvB,GAAA,MAAAsB,CAAA;CAAA;CAAA,IAGXG,cAAW;EAAA,OAAAJ,EAAApB,GAAA,IAAA;CAAA;CAAA,IAAXwB,YAAWH,GAAA;EAAAC,EAAAtB,GAAA,MAAAqB,CAAA;CAAA;CAAA,IAGXI,eAAY;EAAA,OAAAL,EAAAnB,GAAA,IAAA;CAAA;CAAA,IAAZwB,aAAYJ,GAAA;EAAAC,EAAArB,GAAA,MAAAoB,CAAA;CAAA;CAAA,IAGJK,kBAAe;EAAA,OAAAN,EAAAlB,GAAA,IAAA;CAAA;CAAA,IAAfwB,gBAAeL,GAAA;EAAAC,EAAApB,GAAA,MAAAmB,CAAA;CAAA;CAME,IAAzBM,WAAQ;EAAA,OAAAP,EAAAjB,GAAA,IAAA;CAAA;CAAA,IAARwB,SAAQN,GAAA;EAAAC,EAAAnB,GAAA,MAAAkB,CAAA;CAAA;CAEjBO,cAAe;EAGb,AAFA,MAAM,GAxBRC,EAAA,MAAAhC,IAAAiC,EAAA,IAAA,GAAAC,EAAA,MAG8CvC,CAAa,EAAA,GAAAqC,EAAA,MAAA9B,GAAAiC,EAAA,MAGlB,IAAI,CAAA,GAAAH,EAAA,MAAA7B,GAAAiC,EAAA,MAGJ,IAAI,CAAA,GAAAJ,EAAA,MAAA5B,GAAAiC,EAAA,MAGrB,CAAC,CAAA,GAAAL,EAAA,MAAA3B,GAAAiC,EAAA,MAGyB,IAAI,CAAA,GAAAC,EAAA,MAAA,mBAE5B,EAAK,GAAAA,EAAA,MAAA,uBACc,IAAI,GAAAP,EAAA,MAAA1B,GAAAkC,EAAA,MAGpB,EAAI,CAAA,GAK/B,KAAKC,KAAKtD,EAAW;CACvB;CAEAuD,SAAU;EACR,IAAMC,IAAe,KAAKC,YAAY,KAAKlB,WAAW,GAGhDmB,IAAiB,KAAKC,gBAAgB,KAAKpB,aAAazC,EAAG8D,GAAG,UAAU,GAAGJ,CAAY,GACvFK,IAAa,KAAKC,cAAc,KAAKvB,aAAamB,GAAgBF,CAAY,GAC9Eb,IAAW,KAAKoB,YAAY,KAAKpB,UAAU,KAAKJ,aAAaiB,CAAY,GAEzEQ,IAAY,KAAKzB,cAAclC,EAAqB,KAAKI,aAAawD,OAAO,KAAK1B,WAAW,IAAI2B,KAAAA,GACjGC,IAASH,IAAYzD,EAAgByD,MAAc,CAAC,IAAI,CAAC,GACzDI,IAAuBD,EAAOzC,QAAQ,QAGtC2C,IAAe,KAAKC,gBAAgB,KAAK9B,aAAakB,GAAgB,KAAKnB,aAAa4B,CAAM,GAC9FI,IAAc5B,IAAW,KAAK,KAAK6B,kBAAkBL,CAAM,GAC3DM,IAAa,KAAKC,mBAAmB,KAAKC,wBAAwB,OACpE,KAAKjC,mBAAmB,KACxB,KAAKkC,iBAAiBP,CAAY;EAEtC,OAAOxE,CAAI;;iBAEEgE,EAAU;qBACN,KAAKP,GAAE;iBACXmB,EAAU;uBACJF,EAAW;gBAClBH,EAAS;oBACLzB,EAAQ;iBACX,KAAKkC,WAAU;;CAE9B;CAEQpB,YAAaqB,GAAuC;EAC1D,OAAOA,GAASC,MAAMD,EAAQC,IAAI,IAAIb,KAAAA;CACxC;CAEQP,gBAAiBmB,GAAuCnF,GAAqBqF,GAAoC;EAClHF,OACL,OAAO,KAAKrE,aAAawD,MAAMgB,IAAIH,GAASnF,GAAU,MAAMqF,CAAK;CACnE;CAEQlB,cAAeoB,GAAgDxB,GAA4BsB,GAAqB;EACtH,IAAI,CAACE,GAAkB,OAAO;EAC9B,IAAMC,IAAU,KAAK1E,aAAawD,MAAMgB,IAAIC,GAAkBpF,EAAG8D,GAAG,OAAO,GAAG,MAAMoB,CAAK,GACnFI,IAAgB1B,IAAiBtD,EAAMsD,GAAgB,EAAI,IAAI;EACrE,OAAOyB,IAAUA,EAAQE,QAAQD;CACnC;CAEQrB,YAAapB,GAAmBuC,GAAqCF,GAAsB;EAIjG,OAHIE,KAAoBvC,MAAa,KAC5B,CAAC,CAAC,KAAKlC,aAAawD,MAAMqB,MAAMJ,GAAkBpF,EAAG8D,GAAG,yBAAyB,GAAG,MAAMoB,CAAK,IAEjGrC;CACT;CAEQ2B,gBACN9B,GACAkB,GACAwB,GACAf,GACA;EACA,IAAMoB,IAAcL,IAChB,KAAKzE,aAAawD,MAAMgB,IAAIC,GAAkBpF,EAAG8D,GAAG,SAAS,CAAC,IAC9DM,KAAAA;EAOJ,OALI,CAACR,KAAkB,CAAClB,IACf+C,IAGS,KAAK9E,aAAawD,MAAMgB,IAAIzC,GAAakB,CACpD8B,KAAaD;CACtB;CAEQX,iBAAkBa,GAAW;EACnC,IAAI,CAACA,KAAQ,EAAE,WAAWA,MAAS,CAACA,EAAKJ,OAAO,OAAO;EAEvD,IAAI;GACF,OAAOK,mBAAmBD,EAAKJ,KAAK;EACtC,QAAQ;GACN,OAAOM,OAAOF,EAAKJ,KAAK;EAC1B;CACF;CAEQb,kBAAmBL,IAAyC,CAAC,GAAG;EAEtE,QADiBA,EAAOK,qBAAqB,GAAA,CAC7BqB,QAAQ,MAAM,EAAE;CAClC;CAEA,MAAchB,WAAYiB,GAAgB;EACxC,IAAMC,IAAYD,EAAEE,OAA4BX;EAChD,KAAK3C,kBAAkBqD,GACvB,KAAKpB,sBAAsBoB,GAEvB,MAAKrB,mBAIT,MAAM,KAAKuB,iBAAiB;CAC9B;CAEA,MAAcA,mBAAoB;EAChC,IAAI,KAAKtB,wBAAwB,MAC/B;EAGF,IAAMoB,IAAW,KAAKpB;EAEtB,AADA,KAAKA,sBAAsB,MAC3B,KAAKD,kBAAkB;EAEvB,IAAMhB,IAAiB,KAAKC,gBAAgB,KAAKpB,aAAazC,EAAG8D,GAAG,UAAU,GAAG,KAAKH,YAAY,KAAKlB,WAAW,CAAC;EACnH,IAAI,CAACmB,KAAkB,CAAC,KAAKlB,aAAa;GAExC,AADA,KAAKkC,kBAAkB,IACvB,KAAKhC,kBAAkB;GACvB;EACF;EAEA,IAAMwD,IAAe,KAAKzC,YAAY,KAAKjB,WAAW;EACtD,IAAI0D,KAAgB,KAAKzF,aAAawD,MAAMkC,SAASC,SAASF,CAAY,MAAM,IAAO;GACrF,KAAKxB,kBAAkB;GACvB;EACF;EAEA,IAAM2B,IAAa,KAAK5F,aAAawD,MAAMqC,mBAAmB,KAAK9D,aAAakB,CAAc,GAC1F6C,IAA2C,CAAA;EAE/C,IAAIR,GAAU;GACZ,IAAIS,GACExC,IAAY,KAAKzB,cAAclC,EAAqB,KAAKI,aAAawD,OAAO,KAAK1B,WAAW,IAAI2B,KAAAA,GACjGC,IAA4BH,IAAYzD,EAAgByD,MAAc,CAAC,IAAI,CAAC;GAkBlF,AAjBIG,EAAOsC,YACTD,IAAqB,KAAK/F,aAAawD,MAAMyC,IAAIX,CAAQ,IAChD5B,EAAOK,qBAChBgC,IAAqBG,mBAAmBZ,EAASF,QAAQ,MAAM,EAAE,CAAC,GAClEW,IAAqB,KAAK/F,aAAawD,MAAMyC,IAAIvC,EAAOK,oBAAoBgC,CAAkB,KAE9F,AAOEA,IAPErC,EAAOyC,KACY,IAAI1G,EACvB6F,EAASc,KAAK,GACd3C,KAAAA,GACApE,EAAGgH,IAAI3C,EAAOyC,EAAE,CAClB,IAEqB,IAAI1G,EAAQ6F,CAAQ,GAG7CQ,IAAaF,EAAWU,KAAKC,MAAc7G,EAAG6G,EAAUlC,SAASkC,EAAUC,WAAWT,GAAoBQ,EAAUE,GAAG,CAAC,GACpHX,EAAWY,WAAW,MACxBZ,IAAa,CAACpG,EAAG,KAAKqC,aAAakB,GAAgB8C,GAAoB,KAAK/C,YAAY,KAAKjB,WAAW,CAAC,CAAC;EAE9G;EAEA,IAAI;GAEF,AADA,MAAM,KAAK/B,aAAawD,MAAMkC,QAAQiB,WAAWf,GAAYE,CAAiB,GAC9E,KAAK9D,gBAAgB;EACvB,SAAS4E,GAAK;GACZC,QAAQC,MAAM,0BAA0BF,CAAG;EAC7C,UAAU;GACR,KAAK3C,kBAAkB;EACzB;EAEA,AAAI,KAAKC,wBAAwB,QAC/B,MAAM,KAAKsB,iBAAiB;CAEhC;AACF,GAAC,CAAAH,GAAA,CAAA/C,GAAAC,GAAAC,GAAAC,GAAAC,GAAAE,GAAAP,IAAA2E,GAAA,CAAA7G,GAAA8G,MAAAC,EAAAH,GAAA;CAAA;EAAAnG;EAAA;EAAA;CAAA;CAAA;EAAAG;EAAA;EAAA;CAAA;CAAA;EAAAI;EAAA;EAAA;CAAA;CAAA;EAAAC;EAAA;EAAA;CAAA;CAAA;EAAAE;EAAA;EAAA;CAAA;CAAA;EAAAC;EAAA;EAAA;CAAA;AAAA,GAAArB,GAAA,GAAA,KAAA,GAvMqCV,CAAY,GAAAyH,EAAA;;;ACVlD,IAAA,KAAeG"}
1
+ {"version":3,"file":"rdf-input-CH5Aah6g.js","names":["sym","parse","ns","baseUri","loadDocument","store","documentSource","documentName","documentURI","preferRemote","finalDocumentUri","document","holds","undefined","removeStatements","statementsMatching","parseSource","Promise","resolve","reject","err","console","error","fetcher","load","force","clearPreviousData","then","catch","trim","length","Error","fetchData","sortBySequence","list","subfields","map","p","k","any","ui","seq","Number","value","isNaN","sort","a","b","pair","mostSpecificClassURI","subject","typeUri","findTypeURIs","specificTypes","bottomTypeURIs","finalTypes","t","push","findForm","sourceUri","docUrl","split","fragment","includes","candidate","rdf","forms","each","found","find","term","termType","ns","style","fieldParams","ui","uri","size","type","dt","pattern","namedNode","defaultInputValue","formGroupStyle","element","commentStyle","formHeadingStyle","NoopStore","store","Error","createContext","NoopStore","DEFAULT_STORE","storeContext","Symbol","property","state","html","ns","customElement","generateId","WebComponent","Literal","st","label","mostSpecificClassURI","fieldParams","fieldTypeParams","DEFAULT_STORE","storeContext","consume","_classDecs","_RDFInput","_A","WeakMap","_B","_C","_D","_E","_F","_ref","_storeContextDecs","context","subscribe","_formSubjectDecs","attribute","type","Object","_dataSubjectDecs","_storeVersionDecs","Number","_localInputValueDecs","_readonlyDecs","Boolean","reflect","RDFInput","_classPrivateFieldGet","v","_classPrivateFieldSet","formSubject","dataSubject","storeVersion","localInputValue","readonly","constructor","_classPrivateFieldInitSpec","_initProto","_init_storeContext","_init_formSubject","_init_dataSubject","_init_storeVersion","_init_localInputValue","_defineProperty","_init_readonly","id","render","formDocument","getDocument","uiPropertyTerm","getFormProperty","ui","inputLabel","getInputLabel","getReadOnly","fieldType","store","undefined","params","inputType","selectedTerm","getSelectedTerm","placeholder","defaultInputValue","inputValue","_updateInFlight","_pendingUpdateValue","termToInputValue","updateData","subject","doc","graph","any","formFieldSubject","uiLabel","propertyLabel","value","anyJS","defaultTerm","inputTerm","term","decodeURIComponent","String","stripped","replace","e","newValue","target","runPendingUpdate","dataDocument","updater","editable","toDeleteSt","statementsMatching","toInsertSt","objectFromNewValue","namedNode","sym","encodeURIComponent","dt","trim","xsd","map","statement","predicate","why","length","updateMany","err","console","error","_RDFInput2","c","_initClass","_applyDecs","default","RDFInput"],"sources":["../../src/lib/forms/rdfFormsHelper.ts","../../src/lib/forms/fieldParams.ts","../../src/lib/forms/store/NoopStore.ts","../../src/lib/forms/store/StoreContext.ts","../../src/components/rdf-input/RDFInput.ts","../../src/components/rdf-input/index.ts"],"sourcesContent":["import { sym, LiveStore, parse } from 'rdflib'\nimport type { Term } from 'rdflib/lib/tf-types'\n// eslint-disable-next-line camelcase\nimport type { Quad_Subject, NamedNode } from 'rdflib/lib/tf-types'\nimport ns from '../../lib/ns'\n\nconst baseUri = 'https://solidos.github.io/solid-ui/src/ontology/'\n\nexport function loadDocument (\n store: LiveStore,\n documentSource: string,\n documentName: string,\n documentURI?: string,\n preferRemote = false\n) {\n const finalDocumentUri = documentURI || baseUri + documentName // Full URI to the file\n const document = sym(finalDocumentUri) // rdflib NamedNode for the document\n\n if (store.holds(undefined, undefined, undefined, document)) {\n store.removeStatements(store.statementsMatching(undefined, undefined, undefined, document))\n }\n\n const parseSource = () => {\n return new Promise<void>((resolve, reject) => {\n parse(documentSource, store, finalDocumentUri, 'text/turtle', (err) => {\n if (err) {\n console.error('Parse document error for ', finalDocumentUri, err)\n reject(err)\n } else {\n resolve()\n }\n })\n })\n }\n\n if (preferRemote && documentURI) {\n return store.fetcher.load(documentURI, {\n force: true,\n clearPreviousData: true,\n }).then(() => {}).catch((err) => {\n if (documentSource && documentSource.trim().length > 0) {\n return parseSource()\n }\n throw err\n })\n }\n\n if (documentSource && documentSource.trim().length > 0) {\n return parseSource()\n }\n\n if (documentURI) {\n return store.fetcher.load(documentURI, {\n force: true,\n clearPreviousData: true,\n }).then(() => {})\n }\n\n return Promise.reject(new Error(`No document source or URI for ${documentName}`))\n}\n\nexport async function fetchData (\n store: LiveStore,\n documentURI: string\n) {\n const document = sym(documentURI) // rdflib NamedNode for the document\n\n if (store.holds(undefined, undefined, undefined, document)) {\n store.removeStatements(store.statementsMatching(undefined, undefined, undefined, document))\n }\n\n return await store.fetcher.load(documentURI, {\n force: true,\n clearPreviousData: true,\n })\n}\n\nexport function sortBySequence (\n store: LiveStore,\n list: Term[]\n) {\n const subfields = list.map((p) => {\n const k = store.any(p as any, ns.ui('sequence'))\n const seq = k ? Number((k as { value: string }).value) : 9999\n return [Number.isNaN(seq) ? 9999 : seq, p] as const\n })\n\n subfields.sort((a, b) => a[0] - b[0])\n\n return subfields.map(pair => pair[1])\n}\n\n/**\n * Which class of field is this? Relies on http://www.w3.org/2000/01/rdf-schema#subClassOf and\n * https://linkeddata.github.io/rdflib.js/doc/classes/formula.html#bottomtypeuris\n * to find the most specific RDF type if there are multiple.\n *\n * @param subject a form field, e.g. `namedNode('https://timbl.com/timbl/Public/Test/Forms/individualForm.ttl#fullNameField')`\n * @returns the URI of the most specific known class, e.g. `http://www.w3.org/ns/ui#SingleLineTextField`\n */\n// eslint-disable-next-line camelcase\nexport function mostSpecificClassURI (store: LiveStore, subject: Quad_Subject): string {\n const typeUri = store.findTypeURIs(subject)\n const specificTypes = store.bottomTypeURIs(typeUri) // most specific\n const finalTypes: any[] = []\n for (const t in specificTypes) finalTypes.push(t)\n // if (finalTypes.length > 1) throw \"Didn't expect \"+subject+\" to have multiple bottom types: \"+finalTypes\n return finalTypes[0]\n}\n\n// Find the first ui:Form node in a store, optionally matching a fragment.\n// code based on Jeff Zucker's sol-components: https://github.com/jeff-zucker/sol-components (core/form-utils.js)\nexport function findForm (store: LiveStore, sourceUri: string): NamedNode | null {\n const docUrl = sourceUri.split('#')[0]\n const fragment = sourceUri.includes('#') ? sourceUri.split('#')[1] : null\n if (fragment) {\n const candidate = sym(docUrl + '#' + fragment)\n if (store.holds(candidate, ns.rdf('type'), ns.ui('Form'))) return candidate\n }\n const forms = store.each(null, ns.rdf('type'), ns.ui('Form'))\n const found = forms.find((term) => term.termType === 'NamedNode')\n return found ? (found as NamedNode) : null\n}\n","import ns from '../../lib/ns'\nimport { style } from '../../lib/style'\n\nexport type InputType =\n | 'hidden'\n | 'text'\n | 'search'\n | 'tel'\n | 'url'\n | 'email'\n | 'password'\n | 'datetime'\n | 'date'\n | 'month'\n | 'week'\n | 'time'\n | 'datetime-local'\n | 'number'\n | 'range'\n | 'color'\n | 'checkbox'\n | 'radio'\n | 'file'\n | 'submit'\n | 'image'\n | 'reset'\n | 'button'\n\nexport type FieldParamsObject = {\n size?: number, // input element size attribute\n type?: InputType, // input element type attribute. Default: 'text' (not for Comment and Heading)\n element?: string, // element type to use (Comment and Heading only)\n style?: string, // style to use\n dt?: string, // xsd data type for the RDF Literal corresponding to the field value. Default: xsd:string\n defaultInputValue?: string, // e.g. 'mailto:'. Default value in input field, will be removed when displaying actual value to user.\n namedNode?: boolean, // if true, field value corresponds to the URI of an RDF NamedNode. Overrides dt and defaultInputValue.\n pattern?: RegExp // for client-side input validation; field will go red if violated, green if ok\n}\n\n/**\n * The fieldParams object defines various constants\n * for use in various form fields. Depending on the\n * field in questions, different values may be read\n * from here.\n */\nexport const fieldParams: { [ fieldUri: string ]: FieldParamsObject } = {\n /**\n * Text field\n *\n * For possible date popups see e.g. http://www.dynamicdrive.com/dynamicindex7/jasoncalendar.htm\n * or use HTML5: http://www.w3.org/TR/2011/WD-html-markup-20110113/input.date.html\n */\n [ns.ui('ColorField').uri]: {\n size: 9,\n type: 'color',\n style: 'height: 3em;', // around 1.5em is padding\n dt: 'color',\n pattern: /^\\s*#[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]([0-9a-f][0-9a-f])?\\s*$/\n }, // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/color\n\n [ns.ui('DateField').uri]: {\n size: 20,\n type: 'date',\n dt: 'date',\n pattern: /^\\s*[0-9][0-9][0-9][0-9](-[0-1]?[0-9]-[0-3]?[0-9])?Z?\\s*$/\n },\n\n [ns.ui('DateTimeField').uri]: {\n size: 20,\n type: 'datetime-local', // See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/datetime\n dt: 'dateTime',\n pattern: /^\\s*[0-9][0-9][0-9][0-9](-[0-1]?[0-9]-[0-3]?[0-9])?(T[0-2][0-9]:[0-5][0-9](:[0-5][0-9])?)?Z?\\s*$/\n },\n\n [ns.ui('TimeField').uri]: {\n size: 10,\n type: 'time',\n dt: 'time',\n pattern: /^\\s*([0-2]?[0-9]:[0-5][0-9](:[0-5][0-9])?)\\s*$/\n },\n\n [ns.ui('IntegerField').uri]: {\n size: 12,\n style: 'text-align: right;',\n dt: 'integer',\n pattern: /^\\s*-?[0-9]+\\s*$/\n },\n\n [ns.ui('DecimalField').uri]: {\n size: 12,\n style: 'text-align: right;',\n dt: 'decimal',\n pattern: /^\\s*-?[0-9]*(\\.[0-9]*)?\\s*$/\n },\n\n [ns.ui('FloatField').uri]: {\n size: 12,\n style: 'text-align: right;',\n dt: 'float',\n pattern: /^\\s*-?[0-9]*(\\.[0-9]*)?((e|E)-?[0-9]*)?\\s*$/\n },\n\n [ns.ui('SingleLineTextField').uri]: {\n\n },\n [ns.ui('NamedNodeURIField').uri]: {\n namedNode: true\n },\n [ns.ui('TextField').uri]: {\n\n },\n\n [ns.ui('PhoneField').uri]: {\n size: 20,\n defaultInputValue: 'tel:',\n pattern: /^\\+?[\\d-]+[\\d]*$/\n },\n\n [ns.ui('EmailField').uri]: {\n size: 30,\n defaultInputValue: 'mailto:',\n pattern: /^\\s*.*@.*\\..*\\s*$/ // @@ Get the right regexp here\n },\n\n [ns.ui('Group').uri]: {\n style: style.formGroupStyle\n },\n\n /**\n * Non-interactive fields\n */\n [ns.ui('Comment').uri]: {\n element: 'p',\n style: style.commentStyle\n },\n [ns.ui('Heading').uri]: {\n element: 'h3',\n style: style.formHeadingStyle\n }\n}\n","import { LiveStore } from 'rdflib'\nimport { StoreContext } from './StoreContext'\n\nexport default class NoopStore implements StoreContext {\n get store (): LiveStore {\n throw new Error('Cannot use RDF forms without a store')\n }\n}\n","import { createContext } from '@lit/context'\nimport { LiveStore } from 'rdflib'\nimport NoopStore from './NoopStore'\n\nexport interface StoreContext {\n store: LiveStore\n}\n\nexport const DEFAULT_STORE = new NoopStore()\nexport const storeContext = createContext<StoreContext>(Symbol('storeContext'))\n","import { property, state } from 'lit/decorators.js'\nimport { html } from 'lit/html.js'\nimport ns from '../../lib/ns'\nimport { customElement, generateId, WebComponent } from '@/lib/components'\nimport { Literal, NamedNode, st } from 'rdflib'\nimport { label } from '../../utils'\nimport { mostSpecificClassURI } from '../../lib/forms/rdfFormsHelper'\nimport { FieldParamsObject, fieldParams as fieldTypeParams, InputType } from '../../lib/forms/fieldParams'\nimport { DEFAULT_STORE, storeContext, StoreContext } from '@/lib/forms/store/StoreContext'\nimport { consume } from '@lit/context'\nimport '@/components/input'\n\n@customElement('solid-ui-rdf-input')\nexport default class RDFInput extends WebComponent {\n // example RDF Turtle format source:\n // :nameField a ui:SingleLineTextField ;\n // ui:property vcard:fn;\n // ui:label \"name\" .\n\n // formSubject describes the field metadata\n // dataSubject points to the data resource containing the value\n\n @consume({ context: storeContext, subscribe: true })\n private accessor storeContext: StoreContext = DEFAULT_STORE\n\n @property({ attribute: false, type: Object })\n accessor formSubject: NamedNode | null = null\n\n @property({ attribute: false, type: Object })\n accessor dataSubject: NamedNode | null = null\n\n @property({ type: Number })\n accessor storeVersion = 0\n\n @state()\n private accessor localInputValue: string | null = null\n\n private _updateInFlight = false\n private _pendingUpdateValue: string | null = null\n\n @property({ type: Boolean, reflect: true })\n accessor readonly: boolean = true // to protect data, we default to not editable\n\n constructor () {\n super()\n\n this.id = generateId()\n }\n\n render () {\n const formDocument = this.getDocument(this.formSubject)\n\n // for building the HTML input element\n const uiPropertyTerm = this.getFormProperty(this.formSubject, ns.ui('property'), formDocument)\n const inputLabel = this.getInputLabel(this.formSubject, uiPropertyTerm, formDocument)\n const readonly = this.getReadOnly(this.readonly, this.formSubject, formDocument)\n\n const fieldType = this.formSubject ? mostSpecificClassURI(this.storeContext.store, this.formSubject) : undefined\n const params = fieldType ? fieldTypeParams[fieldType] ?? {} : {}\n const inputType: InputType = params.type ?? 'text'\n\n // for populating the HTML input element\n const selectedTerm = this.getSelectedTerm(this.dataSubject, uiPropertyTerm, this.formSubject, params)\n const placeholder = readonly ? '' : this.defaultInputValue(params)\n const inputValue = this._updateInFlight || this._pendingUpdateValue !== null\n ? this.localInputValue ?? ''\n : this.termToInputValue(selectedTerm)\n\n return html`\n <solid-ui-input\n label=\"${inputLabel}\"\n name=\"name-${this.id}\"\n .value=${inputValue}\n .placeholder=${placeholder}\n type=\"${inputType}\"\n ?readonly=${readonly}\n @input=${this.updateData}\n ></solid-ui-input>`\n }\n\n private getDocument (subject: NamedNode | null | undefined) {\n return subject?.doc ? subject.doc() : undefined\n }\n\n private getFormProperty (subject: NamedNode | null | undefined, property: NamedNode, graph?: any): NamedNode | undefined {\n if (!subject) return undefined\n return this.storeContext.store.any(subject, property, null, graph) as NamedNode | undefined\n }\n\n private getInputLabel (formFieldSubject: NamedNode | null | undefined, uiPropertyTerm?: NamedNode, graph?: any): string {\n if (!formFieldSubject) return ''\n const uiLabel = this.storeContext.store.any(formFieldSubject, ns.ui('label'), null, graph)\n const propertyLabel = uiPropertyTerm ? label(uiPropertyTerm, true) : ''\n return uiLabel ? uiLabel.value : propertyLabel\n }\n\n private getReadOnly (readonly: boolean, formFieldSubject?: NamedNode | null, graph?: any): boolean {\n if (formFieldSubject && readonly === false) { // if readonly is false, we can ovverride it if the field is marked as uneditable in the form\n return !!this.storeContext.store.anyJS(formFieldSubject, ns.ui('suppressEmptyUneditable'), null, graph)\n }\n return readonly\n }\n\n private getSelectedTerm (\n dataSubject?: NamedNode | null,\n uiPropertyTerm?: NamedNode,\n formFieldSubject?: NamedNode | null,\n params?: { defaultInputValue?: string }\n ) {\n const defaultTerm = formFieldSubject\n ? this.storeContext.store.any(formFieldSubject, ns.ui('default'))\n : undefined\n\n if (!uiPropertyTerm || !dataSubject) {\n return defaultTerm\n }\n\n const inputTerm = this.storeContext.store.any(dataSubject, uiPropertyTerm)\n return inputTerm || defaultTerm\n }\n\n private termToInputValue (term: any) {\n if (!term || !('value' in term) || !term.value) return ''\n\n try {\n return decodeURIComponent(term.value)\n } catch {\n return String(term.value)\n }\n }\n\n private defaultInputValue (params: { defaultInputValue?: string } = {}) {\n const stripped = params.defaultInputValue ?? ''\n return stripped.replace(/ /g, '')\n }\n\n private async updateData (e: CustomEvent) {\n const newValue = (e.target as HTMLInputElement).value\n this.localInputValue = newValue\n this._pendingUpdateValue = newValue\n\n if (this._updateInFlight) {\n return\n }\n\n await this.runPendingUpdate()\n }\n\n private async runPendingUpdate () {\n if (this._pendingUpdateValue === null) {\n return\n }\n\n const newValue = this._pendingUpdateValue\n this._pendingUpdateValue = null\n this._updateInFlight = true\n\n const uiPropertyTerm = this.getFormProperty(this.formSubject, ns.ui('property'), this.getDocument(this.formSubject))\n if (!uiPropertyTerm || !this.dataSubject) {\n this._updateInFlight = false\n this.localInputValue = ''\n return\n }\n\n const dataDocument = this.getDocument(this.dataSubject)\n if (dataDocument && this.storeContext.store.updater?.editable(dataDocument) === false) {\n this._updateInFlight = false\n return\n }\n\n const toDeleteSt = this.storeContext.store.statementsMatching(this.dataSubject, uiPropertyTerm)\n let toInsertSt: Array<ReturnType<typeof st>> = []\n\n if (newValue) {\n let objectFromNewValue\n const fieldType = this.formSubject ? mostSpecificClassURI(this.storeContext.store, this.formSubject) : undefined\n const params: FieldParamsObject = fieldType ? fieldTypeParams[fieldType] ?? {} : {}\n if (params.namedNode) {\n objectFromNewValue = this.storeContext.store.sym(newValue)\n } else if (params.defaultInputValue) {\n objectFromNewValue = encodeURIComponent(newValue.replace(/ /g, ''))\n objectFromNewValue = this.storeContext.store.sym(params.defaultInputValue + objectFromNewValue)\n } else {\n if (params.dt) {\n objectFromNewValue = new Literal(\n newValue.trim(),\n undefined,\n ns.xsd(params.dt)\n )\n } else {\n objectFromNewValue = new Literal(newValue)\n }\n }\n toInsertSt = toDeleteSt.map((statement) => st(statement.subject, statement.predicate, objectFromNewValue, statement.why))\n if (toInsertSt.length === 0) {\n toInsertSt = [st(this.dataSubject, uiPropertyTerm, objectFromNewValue, this.getDocument(this.dataSubject))]\n }\n }\n\n try {\n await this.storeContext.store.updater.updateMany(toDeleteSt, toInsertSt as any)\n this.storeVersion += 1\n } catch (err) {\n console.error('RDFInput update failed', err)\n } finally {\n this._updateInFlight = false\n }\n\n if (this._pendingUpdateValue !== null) {\n await this.runPendingUpdate()\n }\n }\n}\n","import RDFInput from './RDFInput'\n\nexport { RDFInput }\nexport default RDFInput\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { c as e, g as t, i as n, p as r, r as i, t as a, u as o } from "./components-DrP7BOrs.js";
1
+ import { c as e, g as t, i as n, p as r, r as i, t as a, u as o } from "./components-BHoVP7zE.js";
2
2
  import { t as s } from "./query-BYu9q8lA.js";
3
3
  import "./chevron-down-ujxRg3MD.js";
4
4
  //#region src/lib/values.ts
@@ -267,4 +267,4 @@ var L = I;
267
267
  //#endregion
268
268
  export { I as n, L as t };
269
269
 
270
- //# sourceMappingURL=select-BuIxSm1A.js.map
270
+ //# sourceMappingURL=select-BcC-ICqO.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"select-BuIxSm1A.js","names":["isEmptyValue","value","undefined","customElement","FormControlComponent","html","nothing","property","query","state","isEmptyValue","styles","_classDecs","_Select","_Select2","_A","WeakMap","_B","_ref","_optionsDecs","type","Array","_controlElementDecs","_optionsDecs2","_Select3","Select","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_controlElement","_init__options","value","_options","options","querySelectorAll","from","map","option","label","textContent","controlElement","_classPrivateFieldGet","v","_classPrivateFieldSet","render","defaultOption","some","controlTrait","renderLabel","controlId","name","required","onChange","find","setValue","dispatchEvent","CustomEvent","bubbles","composed","detail","e","c","_initClass","_applyDecs","_Class","_identity","_defineProperty","default","Select"],"sources":["../../src/lib/values.ts","../../src/components/select/Select.styles.css","../../src/components/select/Select.ts","../../src/components/select/index.ts"],"sourcesContent":["export function isEmptyValue (value: unknown): boolean {\n return value === null || value === undefined || value === ''\n}\n",":host {\n display: inline-flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 5px;\n\n label {\n color: var(--solid-ui-color-gray-600);\n font-size: var(--solid-ui-font-size-sm);\n font-weight: 400;\n }\n\n .input-wrapper {\n position: relative;\n width: 100%;\n\n select {\n appearance: none;\n border: 1px solid var(--solid-ui-color-gray-400);\n border-radius: 5px;\n padding: 10px;\n padding-right: 40px;\n width: 100%;\n background: white;\n color: var(--solid-ui-color-gray-700);\n font-size: inherit;\n cursor: pointer;\n }\n\n icon-lucide-chevron-down {\n position: absolute;\n right: 15px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--solid-ui-color-gray-500);\n width: var(--solid-ui-font-size-lg);\n height: var(--solid-ui-font-size-lg);\n pointer-events: none;\n }\n }\n}\n","import { customElement, FormControlComponent } from '@/lib/components'\nimport { html, nothing } from 'lit'\nimport { property, query, state } from 'lit/decorators.js'\nimport { isEmptyValue } from '@/lib/values'\nimport type SelectOption from '@/components/select-option/SelectOption'\n\nimport '~icons/lucide/chevron-down'\n\nimport styles from './Select.styles.css'\n\nexport type SelectOptionData = {\n value: unknown;\n label: string;\n}\n\nexport type SelectChangeEvent = CustomEvent<{ option: SelectOptionData }>\n\n@customElement('solid-ui-select')\nexport default class Select extends FormControlComponent {\n static styles = styles\n\n @property({ type: Array })\n set options (value: SelectOptionData[] | null) {\n this._options = value\n }\n\n get options (): SelectOptionData[] {\n if (this._options) {\n return this._options\n }\n\n const options = this.querySelectorAll<SelectOption>(\n 'solid-ui-select-option'\n )\n\n return Array.from(options).map((option) => ({\n value: option.value,\n label: option.textContent,\n }))\n }\n\n @query('select')\n protected accessor controlElement: HTMLSelectElement | null = null;\n\n @state()\n private accessor _options: SelectOptionData[] | null = null\n\n protected render () {\n const defaultOption = this.options.some(option => isEmptyValue(option.value))\n ? nothing\n : html`<option disabled value=\"\" ?selected=${!this.value}>Select an option</option>`\n\n return html`\n ${this.controlTrait.renderLabel()}\n\n <div class=\"input-wrapper\">\n <select\n id=\"${this.controlTrait.controlId}\"\n name=${this.name}\n ?required=${this.required}\n @change=${this.onChange}\n >\n ${defaultOption}\n ${this.options.map(\n (option) =>\n html`<option\n .value=${option.value}\n ?selected=${option.value === this.value}\n >\n ${option.label}\n </option>`\n )}\n </select>\n <icon-lucide-chevron-down></icon-lucide-chevron-down>\n </div>\n `\n }\n\n private onChange () {\n const value = this.controlElement?.value ?? null\n const option = this.options.find((option) => option.value === value)\n\n this.controlTrait.setValue(value)\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail: { option } }))\n }\n}\n","import Select from './Select'\n\nexport * from './Select'\nexport { Select }\nexport default Select\n"],"mappings":"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"}
1
+ {"version":3,"file":"select-BcC-ICqO.js","names":["isEmptyValue","value","undefined","customElement","FormControlComponent","html","nothing","property","query","state","isEmptyValue","styles","_classDecs","_Select","_Select2","_A","WeakMap","_B","_ref","_optionsDecs","type","Array","_controlElementDecs","_optionsDecs2","_Select3","Select","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_controlElement","_init__options","value","_options","options","querySelectorAll","from","map","option","label","textContent","controlElement","_classPrivateFieldGet","v","_classPrivateFieldSet","render","defaultOption","some","controlTrait","renderLabel","controlId","name","required","onChange","find","setValue","dispatchEvent","CustomEvent","bubbles","composed","detail","e","c","_initClass","_applyDecs","_Class","_identity","_defineProperty","default","Select"],"sources":["../../src/lib/values.ts","../../src/components/select/Select.styles.css","../../src/components/select/Select.ts","../../src/components/select/index.ts"],"sourcesContent":["export function isEmptyValue (value: unknown): boolean {\n return value === null || value === undefined || value === ''\n}\n",":host {\n display: inline-flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 5px;\n\n label {\n color: var(--solid-ui-color-gray-600);\n font-size: var(--solid-ui-font-size-sm);\n font-weight: 400;\n }\n\n .input-wrapper {\n position: relative;\n width: 100%;\n\n select {\n appearance: none;\n border: 1px solid var(--solid-ui-color-gray-400);\n border-radius: 5px;\n padding: 10px;\n padding-right: 40px;\n width: 100%;\n background: white;\n color: var(--solid-ui-color-gray-700);\n font-size: inherit;\n cursor: pointer;\n }\n\n icon-lucide-chevron-down {\n position: absolute;\n right: 15px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--solid-ui-color-gray-500);\n width: var(--solid-ui-font-size-lg);\n height: var(--solid-ui-font-size-lg);\n pointer-events: none;\n }\n }\n}\n","import { customElement, FormControlComponent } from '@/lib/components'\nimport { html, nothing } from 'lit'\nimport { property, query, state } from 'lit/decorators.js'\nimport { isEmptyValue } from '@/lib/values'\nimport type SelectOption from '@/components/select-option/SelectOption'\n\nimport '~icons/lucide/chevron-down'\n\nimport styles from './Select.styles.css'\n\nexport type SelectOptionData = {\n value: unknown;\n label: string;\n}\n\nexport type SelectChangeEvent = CustomEvent<{ option: SelectOptionData }>\n\n@customElement('solid-ui-select')\nexport default class Select extends FormControlComponent {\n static styles = styles\n\n @property({ type: Array })\n set options (value: SelectOptionData[] | null) {\n this._options = value\n }\n\n get options (): SelectOptionData[] {\n if (this._options) {\n return this._options\n }\n\n const options = this.querySelectorAll<SelectOption>(\n 'solid-ui-select-option'\n )\n\n return Array.from(options).map((option) => ({\n value: option.value,\n label: option.textContent,\n }))\n }\n\n @query('select')\n protected accessor controlElement: HTMLSelectElement | null = null;\n\n @state()\n private accessor _options: SelectOptionData[] | null = null\n\n protected render () {\n const defaultOption = this.options.some(option => isEmptyValue(option.value))\n ? nothing\n : html`<option disabled value=\"\" ?selected=${!this.value}>Select an option</option>`\n\n return html`\n ${this.controlTrait.renderLabel()}\n\n <div class=\"input-wrapper\">\n <select\n id=\"${this.controlTrait.controlId}\"\n name=${this.name}\n ?required=${this.required}\n @change=${this.onChange}\n >\n ${defaultOption}\n ${this.options.map(\n (option) =>\n html`<option\n .value=${option.value}\n ?selected=${option.value === this.value}\n >\n ${option.label}\n </option>`\n )}\n </select>\n <icon-lucide-chevron-down></icon-lucide-chevron-down>\n </div>\n `\n }\n\n private onChange () {\n const value = this.controlElement?.value ?? null\n const option = this.options.find((option) => option.value === value)\n\n this.controlTrait.setValue(value)\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail: { option } }))\n }\n}\n","import Select from './Select'\n\nexport * from './Select'\nexport { Select }\nexport default Select\n"],"mappings":"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"}