solid-ui 3.1.3-13 → 3.1.3-15
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.
- package/README.md +0 -14
- package/dist/_virtual/_rolldown/runtime.cjs.js +1 -1
- package/dist/acl/access-controller.cjs.js.map +1 -1
- package/dist/acl/access-groups.cjs.js +1 -1
- package/dist/acl/access-groups.cjs.js.map +1 -1
- package/dist/acl/access-groups.esm.js +2 -1
- package/dist/acl/access-groups.esm.js.map +1 -1
- package/dist/acl/acl.cjs.js.map +1 -1
- package/dist/acl/acl.esm.js.map +1 -1
- package/dist/chat/bookmarks.esm.js +2 -1
- package/dist/chat/bookmarks.esm.js.map +1 -1
- package/dist/chat/chatLogic.cjs.js +1 -1
- package/dist/chat/chatLogic.cjs.js.map +1 -1
- package/dist/chat/chatLogic.esm.js +2 -2
- package/dist/chat/chatLogic.esm.js.map +1 -1
- package/dist/chat/keys.cjs.js +1 -1
- package/dist/chat/keys.cjs.js.map +1 -1
- package/dist/chat/keys.d.ts +1 -1
- package/dist/chat/keys.d.ts.map +1 -1
- package/dist/chat/keys.esm.js +5 -2
- package/dist/chat/keys.esm.js.map +1 -1
- package/dist/chat/signature.cjs.js +1 -1
- package/dist/chat/signature.cjs.js.map +1 -1
- package/dist/chat/signature.esm.js +2 -1
- package/dist/chat/signature.esm.js.map +1 -1
- package/dist/chunks/{DialogProvider-B7wEBrVN.js → DialogProvider-0HIHjONx.js} +11 -11
- package/dist/chunks/{DialogProvider-B7wEBrVN.js.map → DialogProvider-0HIHjONx.js.map} +1 -1
- package/dist/chunks/{account-DeNlj01m.js → account-Ch8h_zTv.js} +20 -21
- package/dist/chunks/{account-DeNlj01m.js.map → account-Ch8h_zTv.js.map} +1 -1
- package/dist/chunks/{auth-Knq99zZ9.js → auth-D4NUMSzc.js} +98 -72
- package/dist/chunks/auth-D4NUMSzc.js.map +1 -0
- package/dist/chunks/{avatar-DgO_p94F.js → avatar-BWtz4RlU.js} +7 -8
- package/dist/chunks/{avatar-DgO_p94F.js.map → avatar-BWtz4RlU.js.map} +1 -1
- package/dist/chunks/{button-Dvkek1tx.js → button-BJyFKOKO.js} +12 -15
- package/dist/chunks/{button-Dvkek1tx.js.map → button-BJyFKOKO.js.map} +1 -1
- package/dist/chunks/{chunk.7MPIABXH-DNcYOuE8.js → chunk.64OG2H45-BADxAtEI.js} +97 -50
- package/dist/chunks/chunk.64OG2H45-BADxAtEI.js.map +1 -0
- package/dist/chunks/{combobox-B5j4LoHY.js → combobox-0NWv9K3D.js} +106 -93
- package/dist/chunks/combobox-0NWv9K3D.js.map +1 -0
- package/dist/chunks/{combobox-option-C5lKAumO.js → combobox-option-B-twy1Zn.js} +6 -7
- package/dist/chunks/{combobox-option-C5lKAumO.js.map → combobox-option-B-twy1Zn.js.map} +1 -1
- package/dist/chunks/components-DrP7BOrs.js +1281 -0
- package/dist/chunks/components-DrP7BOrs.js.map +1 -0
- package/dist/chunks/{dialog-DZgm_Tph.js → dialog-CcMVH-Ut.js} +16 -16
- package/dist/chunks/{dialog-DZgm_Tph.js.map → dialog-CcMVH-Ut.js.map} +1 -1
- package/dist/chunks/{dialog-content-DY-ROHyi.js → dialog-content-DcD_s3hK.js} +2 -3
- package/dist/chunks/{dialog-content-DY-ROHyi.js.map → dialog-content-DcD_s3hK.js.map} +1 -1
- package/dist/chunks/{dialog-footer-BAZTjZ8J.js → dialog-footer-CHgSH7G5.js} +2 -3
- package/dist/chunks/{dialog-footer-BAZTjZ8J.js.map → dialog-footer-CHgSH7G5.js.map} +1 -1
- package/dist/chunks/{dialog-header-COzPcK8F.js → dialog-header-BjellR7_.js} +2 -3
- package/dist/chunks/{dialog-header-COzPcK8F.js.map → dialog-header-BjellR7_.js.map} +1 -1
- package/dist/chunks/{dialogs-DEuwXC46.js → dialogs-CeHuLUo5.js} +2 -2
- package/dist/chunks/{dialogs-DEuwXC46.js.map → dialogs-CeHuLUo5.js.map} +1 -1
- package/dist/chunks/{dialogs-root-BYp6fIUE.js → dialogs-root-CvsON-m8.js} +5 -6
- package/dist/chunks/{dialogs-root-BYp6fIUE.js.map → dialogs-root-CvsON-m8.js.map} +1 -1
- package/dist/chunks/{guard-DI4k0FkM.js → guard-BIesxo_f.js} +7 -8
- package/dist/chunks/{guard-DI4k0FkM.js.map → guard-BIesxo_f.js.map} +1 -1
- package/dist/chunks/{solid-logic.esm-BrMdCG2_.js → index.esm-CyyOkz04.js} +2663 -2745
- package/dist/chunks/index.esm-CyyOkz04.js.map +1 -0
- package/dist/chunks/{input-CCpEhtqA.js → input-CFDN76Y5.js} +99 -54
- package/dist/chunks/input-CFDN76Y5.js.map +1 -0
- package/dist/chunks/{jsonld-B61R4iOL.js → jsonld-52q5nY_t.js} +22 -27
- package/dist/chunks/{jsonld-B61R4iOL.js.map → jsonld-52q5nY_t.js.map} +1 -1
- package/dist/chunks/{login-button-BafqiKef.js → login-button-BhdKFJ-F.js} +8 -9
- package/dist/chunks/{login-button-BafqiKef.js.map → login-button-BhdKFJ-F.js.map} +1 -1
- package/dist/chunks/{logout-button-D54NF9EW.js → logout-button-ClbKS9ss.js} +8 -9
- package/dist/chunks/{logout-button-D54NF9EW.js.map → logout-button-ClbKS9ss.js.map} +1 -1
- package/dist/chunks/{menu-DKxtACGA.js → menu-DVgG-el5.js} +39 -35
- package/dist/chunks/menu-DVgG-el5.js.map +1 -0
- package/dist/chunks/{menu-item-D9BqJtKZ.js → menu-item-Bj3NgLzB.js} +5 -6
- package/dist/chunks/{menu-item-D9BqJtKZ.js.map → menu-item-Bj3NgLzB.js.map} +1 -1
- package/dist/chunks/{photo-capture-BoZF621r.js → photo-capture-CVKE0SKx.js} +18 -19
- package/dist/chunks/{photo-capture-BoZF621r.js.map → photo-capture-CVKE0SKx.js.map} +1 -1
- package/dist/chunks/{photo-capture-modal-BLZtHDj1.js → photo-capture-modal-DARmhHUH.js} +26 -26
- package/dist/chunks/{photo-capture-modal-BLZtHDj1.js.map → photo-capture-modal-DARmhHUH.js.map} +1 -1
- package/dist/chunks/{provider-Btl6Lnki.js → provider-CBSBzOfP.js} +9 -10
- package/dist/chunks/{provider-Btl6Lnki.js.map → provider-CBSBzOfP.js.map} +1 -1
- package/dist/chunks/rdf-form-BeuzVBOP.js +339 -0
- package/dist/chunks/rdf-form-BeuzVBOP.js.map +1 -0
- package/dist/chunks/rdf-input-n73oeSkf.js +440 -0
- package/dist/chunks/rdf-input-n73oeSkf.js.map +1 -0
- package/dist/chunks/{rolldown-runtime-B1bRi_D7.js → rolldown-runtime-Cb76FRpK.js} +2 -2
- package/dist/chunks/{select-XkieYvDm.js → select-BuIxSm1A.js} +9 -10
- package/dist/chunks/{select-XkieYvDm.js.map → select-BuIxSm1A.js.map} +1 -1
- package/dist/chunks/{select-option-DUg4AWzw.js → select-option-Z8qZsCQo.js} +6 -7
- package/dist/chunks/{select-option-DUg4AWzw.js.map → select-option-Z8qZsCQo.js.map} +1 -1
- package/dist/chunks/{signup-button-D5wS8_gB.js → signup-button-B-AgjjAK.js} +8 -9
- package/dist/chunks/{signup-button-D5wS8_gB.js.map → signup-button-B-AgjjAK.js.map} +1 -1
- package/dist/chunks/{solid-emblem-XHk-oomv.js → solid-emblem-D4ItOckU.js} +2 -3
- package/dist/chunks/{solid-emblem-XHk-oomv.js.map → solid-emblem-D4ItOckU.js.map} +1 -1
- package/dist/chunks/{src-CJICzMIV.js → src-B5SL8UtS.js} +2741 -3207
- package/dist/chunks/src-B5SL8UtS.js.map +1 -0
- package/dist/chunks/style-CjYxsW7j.js +536 -0
- package/dist/chunks/style-CjYxsW7j.js.map +1 -0
- package/dist/components/account/Account.cjs.js.map +1 -1
- package/dist/components/account.js +1 -1
- package/dist/components/all.cjs.js +1 -1
- package/dist/components/all.esm.js +2 -1
- package/dist/components/avatar/Avatar.cjs.js.map +1 -1
- package/dist/components/avatar.js +1 -1
- package/dist/components/button/Button.cjs.js +1 -1
- package/dist/components/button/Button.cjs.js.map +1 -1
- package/dist/components/button/Button.esm.js +1 -3
- package/dist/components/button/Button.esm.js.map +1 -1
- package/dist/components/button.js +1 -1
- package/dist/components/combobox/Combobox.cjs.js +2 -2
- package/dist/components/combobox/Combobox.cjs.js.map +1 -1
- package/dist/components/combobox/Combobox.d.ts +1 -0
- package/dist/components/combobox/Combobox.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.esm.js +61 -47
- package/dist/components/combobox/Combobox.esm.js.map +1 -1
- package/dist/components/combobox-option/ComboboxOption.cjs.js.map +1 -1
- package/dist/components/combobox-option.js +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/dialog/Dialog.cjs.js +4 -4
- package/dist/components/dialog/Dialog.cjs.js.map +1 -1
- package/dist/components/dialog/Dialog.esm.js +5 -4
- package/dist/components/dialog/Dialog.esm.js.map +1 -1
- package/dist/components/dialog-content.js +1 -1
- package/dist/components/dialog-footer.js +1 -1
- package/dist/components/dialog-header.js +1 -1
- package/dist/components/dialog-provider/DialogProvider.cjs.js.map +1 -1
- package/dist/components/dialog-provider.js +1 -1
- package/dist/components/dialog.js +1 -1
- package/dist/components/dialogs-root/DialogsRoot.cjs.js.map +1 -1
- package/dist/components/dialogs-root.js +1 -1
- package/dist/components/guard/Guard.cjs.js.map +1 -1
- package/dist/components/guard.js +1 -1
- package/dist/components/input/Input.cjs.js +3 -2
- package/dist/components/input/Input.cjs.js.map +1 -1
- package/dist/components/input/Input.d.ts +3 -0
- package/dist/components/input/Input.d.ts.map +1 -1
- package/dist/components/input/Input.esm.js +99 -53
- package/dist/components/input/Input.esm.js.map +1 -1
- package/dist/components/input/Input.styles.cjs.js +1 -1
- package/dist/components/input/Input.styles.cjs.js.map +1 -1
- package/dist/components/input/Input.styles.esm.js +1 -1
- package/dist/components/input/Input.styles.esm.js.map +1 -1
- package/dist/components/input.js +1 -1
- package/dist/components/login-button/LoginButton.cjs.js.map +1 -1
- package/dist/components/login-button.js +1 -1
- package/dist/components/login-modal/LoginModal.cjs.js.map +1 -1
- package/dist/components/login-modal.js +1 -1
- package/dist/components/logout-button/LogoutButton.cjs.js.map +1 -1
- package/dist/components/logout-button.js +1 -1
- package/dist/components/menu/Menu.cjs.js +1 -1
- package/dist/components/menu/Menu.cjs.js.map +1 -1
- package/dist/components/menu/Menu.d.ts.map +1 -1
- package/dist/components/menu/Menu.esm.js +1 -1
- package/dist/components/menu/Menu.esm.js.map +1 -1
- package/dist/components/menu/Menu.test.d.ts +1 -0
- package/dist/components/menu/Menu.test.d.ts.map +1 -0
- package/dist/components/menu-item/MenuItem.cjs.js.map +1 -1
- package/dist/components/menu-item.js +1 -1
- package/dist/components/menu.js +1 -1
- package/dist/components/photo-capture/PhotoCapture.cjs.js.map +1 -1
- package/dist/components/photo-capture-modal/PhotoCaptureModal.cjs.js +1 -1
- package/dist/components/photo-capture-modal/PhotoCaptureModal.cjs.js.map +1 -1
- package/dist/components/photo-capture-modal/PhotoCaptureModal.esm.js +2 -1
- package/dist/components/photo-capture-modal/PhotoCaptureModal.esm.js.map +1 -1
- package/dist/components/photo-capture-modal.js +1 -1
- package/dist/components/photo-capture.js +1 -1
- package/dist/components/provider/Provider.cjs.js.map +1 -1
- package/dist/components/provider.js +1 -1
- package/dist/components/rdf-form/RDFForm.cjs.js +12 -0
- package/dist/components/rdf-form/RDFForm.cjs.js.map +1 -0
- package/dist/components/rdf-form/RDFForm.d.ts +17 -0
- package/dist/components/rdf-form/RDFForm.d.ts.map +1 -0
- package/dist/components/rdf-form/RDFForm.esm.js +344 -0
- package/dist/components/rdf-form/RDFForm.esm.js.map +1 -0
- package/dist/components/rdf-form/RDForm.stories.d.ts +20 -0
- package/dist/components/rdf-form/RDForm.stories.d.ts.map +1 -0
- package/dist/components/rdf-form/index.cjs.js +2 -0
- package/dist/components/rdf-form/index.cjs.js.map +1 -0
- package/dist/components/rdf-form/index.d.ts +4 -0
- package/dist/components/rdf-form/index.d.ts.map +1 -0
- package/dist/components/rdf-form/index.esm.js +7 -0
- package/dist/components/rdf-form/index.esm.js.map +1 -0
- package/dist/components/rdf-form.js +2 -0
- package/dist/components/rdf-input/RDFInput.cjs.js +11 -0
- package/dist/components/rdf-input/RDFInput.cjs.js.map +1 -0
- package/dist/components/rdf-input/RDFInput.d.ts +24 -0
- package/dist/components/rdf-input/RDFInput.d.ts.map +1 -0
- package/dist/components/rdf-input/RDFInput.esm.js +349 -0
- package/dist/components/rdf-input/RDFInput.esm.js.map +1 -0
- package/dist/components/rdf-input/index.cjs.js +2 -0
- package/dist/components/rdf-input/index.cjs.js.map +1 -0
- package/dist/components/rdf-input/index.d.ts +4 -0
- package/dist/components/rdf-input/index.d.ts.map +1 -0
- package/dist/components/rdf-input/index.esm.js +7 -0
- package/dist/components/rdf-input/index.esm.js.map +1 -0
- package/dist/components/rdf-input.js +2 -0
- package/dist/components/select/Select.cjs.js.map +1 -1
- package/dist/components/select-option/SelectOption.cjs.js.map +1 -1
- package/dist/components/select-option.js +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/signup-button/SignupButton.cjs.js.map +1 -1
- package/dist/components/signup-button.js +1 -1
- package/dist/components/solid-emblem.js +1 -1
- package/dist/components.js +26 -25
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +3 -2
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +8 -7
- package/dist/lib/auth/SolidAuth.cjs.js +1 -1
- package/dist/lib/auth/SolidAuth.cjs.js.map +1 -1
- package/dist/lib/auth/SolidAuth.esm.js +3 -1
- package/dist/lib/auth/SolidAuth.esm.js.map +1 -1
- package/dist/lib/auth/context.cjs.js.map +1 -1
- package/dist/lib/components/dialog-component/DialogComponent.cjs.js.map +1 -1
- package/dist/lib/components/form-control-component/FormControlComponent.cjs.js.map +1 -1
- package/dist/lib/components/web-component/WebComponent.cjs.js +1 -1
- package/dist/lib/components/web-component/WebComponent.cjs.js.map +1 -1
- package/dist/lib/components/web-component/WebComponent.esm.js +2 -1
- package/dist/lib/components/web-component/WebComponent.esm.js.map +1 -1
- package/dist/lib/dialogs/context.cjs.js.map +1 -1
- package/dist/lib/file-explorer/context.cjs.js +2 -0
- package/dist/lib/file-explorer/context.cjs.js.map +1 -0
- package/dist/lib/file-explorer/context.d.ts +22 -0
- package/dist/lib/file-explorer/context.d.ts.map +1 -0
- package/dist/lib/file-explorer/context.esm.js +7 -0
- package/dist/lib/file-explorer/context.esm.js.map +1 -0
- package/dist/lib/forms/fieldParams.cjs.js +2 -0
- package/dist/lib/forms/fieldParams.cjs.js.map +1 -0
- package/dist/lib/forms/fieldParams.d.ts +21 -0
- package/dist/lib/forms/fieldParams.d.ts.map +1 -0
- package/dist/lib/forms/fieldParams.esm.js +74 -0
- package/dist/lib/forms/fieldParams.esm.js.map +1 -0
- package/dist/lib/forms/rdfFormsHelper.cjs.js +2 -0
- package/dist/lib/forms/rdfFormsHelper.cjs.js.map +1 -0
- package/dist/lib/forms/rdfFormsHelper.d.ts +16 -0
- package/dist/lib/forms/rdfFormsHelper.d.ts.map +1 -0
- package/dist/lib/forms/rdfFormsHelper.esm.js +34 -0
- package/dist/lib/forms/rdfFormsHelper.esm.js.map +1 -0
- package/dist/lib/forms/store/NoopStore.cjs.js +2 -0
- package/dist/lib/forms/store/NoopStore.cjs.js.map +1 -0
- package/dist/lib/forms/store/NoopStore.d.ts +6 -0
- package/dist/lib/forms/store/NoopStore.d.ts.map +1 -0
- package/dist/lib/forms/store/NoopStore.esm.js +10 -0
- package/dist/lib/forms/store/NoopStore.esm.js.map +1 -0
- package/dist/lib/forms/store/StoreContext.cjs.js +2 -0
- package/dist/lib/forms/store/StoreContext.cjs.js.map +1 -0
- package/dist/lib/forms/store/StoreContext.d.ts +10 -0
- package/dist/lib/forms/store/StoreContext.d.ts.map +1 -0
- package/dist/lib/forms/store/StoreContext.esm.js +8 -0
- package/dist/lib/forms/store/StoreContext.esm.js.map +1 -0
- package/dist/lib/ns.cjs.js.map +1 -1
- package/dist/lib/pad.cjs.js +1 -1
- package/dist/lib/pad.cjs.js.map +1 -1
- package/dist/lib/pad.esm.js +6 -5
- package/dist/lib/pad.esm.js.map +1 -1
- package/dist/lib/participation.cjs.js +1 -1
- package/dist/lib/participation.cjs.js.map +1 -1
- package/dist/lib/participation.esm.js +4 -2
- package/dist/lib/participation.esm.js.map +1 -1
- package/dist/lib/preferences.cjs.js +1 -1
- package/dist/lib/preferences.cjs.js.map +1 -1
- package/dist/lib/preferences.esm.js +9 -7
- package/dist/lib/preferences.esm.js.map +1 -1
- package/dist/lib/table.cjs.js +2 -2
- package/dist/lib/table.cjs.js.map +1 -1
- package/dist/lib/table.esm.js +2 -2
- package/dist/lib/table.esm.js.map +1 -1
- package/dist/loader.js +8 -7
- package/dist/login/login.cjs.js.map +1 -1
- package/dist/media/media-capture.esm.js +2 -1
- package/dist/media/media-capture.esm.js.map +1 -1
- package/dist/solid-ui.js +107 -156
- package/dist/solid-ui.min.js +107 -156
- package/dist/solid-ui.min.js.map +1 -1
- package/dist/storybook/components/StorybookProvider.d.ts +1 -0
- package/dist/storybook/components/StorybookProvider.d.ts.map +1 -1
- package/dist/storybook/store/StorybookStore.d.ts +6 -0
- package/dist/storybook/store/StorybookStore.d.ts.map +1 -0
- package/dist/utils/headerFooterHelpers.cjs.js +1 -1
- package/dist/utils/headerFooterHelpers.cjs.js.map +1 -1
- package/dist/utils/headerFooterHelpers.esm.js +2 -1
- package/dist/utils/headerFooterHelpers.esm.js.map +1 -1
- package/dist/utils/index.cjs.js +1 -1
- package/dist/utils/index.cjs.js.map +1 -1
- package/dist/utils/index.esm.js +1 -1
- package/dist/utils/index.esm.js.map +1 -1
- package/dist/utils/keyHelpers/accessData.cjs.js +1 -1
- package/dist/utils/keyHelpers/accessData.cjs.js.map +1 -1
- package/dist/utils/keyHelpers/accessData.d.ts +3 -3
- package/dist/utils/keyHelpers/accessData.d.ts.map +1 -1
- package/dist/utils/keyHelpers/accessData.esm.js +2 -1
- package/dist/utils/keyHelpers/accessData.esm.js.map +1 -1
- package/dist/utils/keyHelpers/otherHelpers.d.ts +1 -1
- package/dist/utils/keyHelpers/otherHelpers.d.ts.map +1 -1
- package/dist/widgets/buttons.cjs.js +2 -2
- package/dist/widgets/buttons.cjs.js.map +1 -1
- package/dist/widgets/buttons.esm.js +10 -5
- package/dist/widgets/buttons.esm.js.map +1 -1
- package/dist/widgets/dragAndDrop.cjs.js +1 -1
- package/dist/widgets/dragAndDrop.cjs.js.map +1 -1
- package/dist/widgets/dragAndDrop.esm.js +1 -1
- package/dist/widgets/dragAndDrop.esm.js.map +1 -1
- package/dist/widgets/forms/autocomplete/autocompleteBar.esm.js +25 -18
- package/dist/widgets/forms/autocomplete/autocompleteBar.esm.js.map +1 -1
- package/dist/widgets/forms/autocomplete/autocompleteField.cjs.js.map +1 -1
- package/dist/widgets/forms/autocomplete/publicData.cjs.js +1 -1
- package/dist/widgets/forms/autocomplete/publicData.cjs.js.map +1 -1
- package/dist/widgets/forms/autocomplete/publicData.d.ts +3 -3
- package/dist/widgets/forms/autocomplete/publicData.d.ts.map +1 -1
- package/dist/widgets/forms/autocomplete/publicData.esm.js +6 -4
- package/dist/widgets/forms/autocomplete/publicData.esm.js.map +1 -1
- package/dist/widgets/forms/basic.cjs.js +1 -1
- package/dist/widgets/forms/basic.cjs.js.map +1 -1
- package/dist/widgets/forms/basic.esm.js +27 -25
- package/dist/widgets/forms/basic.esm.js.map +1 -1
- package/dist/widgets/forms/formStyle.cjs.js +1 -1
- package/dist/widgets/forms/formStyle.cjs.js.map +1 -1
- package/dist/widgets/forms/formStyle.esm.js +4 -4
- package/dist/widgets/forms/formStyle.esm.js.map +1 -1
- package/dist/widgets/forms.cjs.js +2 -2
- package/dist/widgets/forms.cjs.js.map +1 -1
- package/dist/widgets/forms.esm.js +10 -8
- package/dist/widgets/forms.esm.js.map +1 -1
- package/dist/widgets/multiSelect.cjs.js +1 -1
- package/dist/widgets/multiSelect.cjs.js.map +1 -1
- package/dist/widgets/multiSelect.esm.js +2 -1
- package/dist/widgets/multiSelect.esm.js.map +1 -1
- package/dist/widgets/peoplePicker.cjs.js.map +1 -1
- package/package.json +4 -3
- package/dist/chunks/auth-Knq99zZ9.js.map +0 -1
- package/dist/chunks/chunk.7MPIABXH-DNcYOuE8.js.map +0 -1
- package/dist/chunks/combobox-B5j4LoHY.js.map +0 -1
- package/dist/chunks/components-BD458q30.js +0 -758
- package/dist/chunks/components-BD458q30.js.map +0 -1
- package/dist/chunks/footer-BLSjn5ur.js +0 -144
- package/dist/chunks/footer-BLSjn5ur.js.map +0 -1
- package/dist/chunks/headerFooterHelpers-CPd5d20q.js +0 -52
- package/dist/chunks/headerFooterHelpers-CPd5d20q.js.map +0 -1
- package/dist/chunks/input-CCpEhtqA.js.map +0 -1
- package/dist/chunks/lit-C4H1jI4q.js +0 -527
- package/dist/chunks/lit-C4H1jI4q.js.map +0 -1
- package/dist/chunks/menu-DKxtACGA.js.map +0 -1
- package/dist/chunks/solid-logic.esm-BrMdCG2_.js.map +0 -1
- package/dist/chunks/src-CJICzMIV.js.map +0 -1
- package/dist/components/footer/index.cjs.js +0 -1
- package/dist/components/footer/index.d.ts +0 -2
- package/dist/components/footer/index.d.ts.map +0 -1
- package/dist/components/footer/index.esm.js +0 -3
- package/dist/components/footer.js +0 -2
- package/dist/v2/components/layout/footer/Footer.cjs.js +0 -73
- package/dist/v2/components/layout/footer/Footer.cjs.js.map +0 -1
- package/dist/v2/components/layout/footer/Footer.d.ts +0 -60
- package/dist/v2/components/layout/footer/Footer.d.ts.map +0 -1
- package/dist/v2/components/layout/footer/Footer.esm.js +0 -143
- package/dist/v2/components/layout/footer/Footer.esm.js.map +0 -1
- package/dist/v2/components/layout/footer/Footer.test.d.ts +0 -1
- package/dist/v2/components/layout/footer/Footer.test.d.ts.map +0 -1
- package/dist/v2/components/layout/footer/index.cjs.js +0 -2
- package/dist/v2/components/layout/footer/index.cjs.js.map +0 -1
- package/dist/v2/components/layout/footer/index.d.ts +0 -3
- package/dist/v2/components/layout/footer/index.d.ts.map +0 -1
- package/dist/v2/components/layout/footer/index.esm.js +0 -8
- package/dist/v2/components/layout/footer/index.esm.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../../lib/ns.cjs.js"),t=require("../../utils/label.cjs.js");require("../../utils/index.cjs.js");const n=require("../../lib/styleConstants.cjs.js"),r=require("../../lib/style.cjs.js"),i=require("../error.cjs.js"),a=require("./fieldParams.cjs.js"),o=require("./fieldFunction.cjs.js");let s=require("rdflib");var c=require("solid-logic").solidLogicSingleton.store;function l(t,a,o,s,c){o.style.display=`flex`,o.style.flexDirection=`row`;let l=o.appendChild(t.createElement(`div`));l.style.width=n.default.formFieldNameBoxWidth;let d=o.appendChild(t.createElement(`div`));return l.setAttribute(`class`,`formFieldName`),l.setAttribute(`style`,r.style.formFieldNameBoxStyle),d.setAttribute(`class`,`formFieldValue`),c?l.appendChild(t.createTextNode(c)):a.any(s,e.default.ui(`property`))?l.appendChild(u(t,a.any(s,e.default.ui(`property`)),s)):(d.appendChild(i.errorMessageBlock(t,`No property or label given for form field: `+s)),l.appendChild(t.createTextNode(`???`))),d}function u(n,r,i){let a=c.any(i,e.default.ui(`label`));if(a||=t.label(r,!0),r===void 0)return n.createTextNode(`@@Internal error: undefined property`);let o=n.createElement(`a`);return r.uri&&o.setAttribute(`href`,r.uri),o.setAttribute(`style`,`color: #3B5998; text-decoration: none;`),o.textContent=a,o}function d(e,t,n){let r=c.statementsMatching(e,t);if(r.length===0)return n;if(!c.updater)throw Error(`Store has no updater`);return r.length>0&&r[0].why.value&&c.updater.editable(r[0].why.value,c)?c.sym(r[0].why.value):n}function f(t,u,f,p,m,h,g){let _=c,v=m.doc?m.doc():null,y=t.createElement(`div`),b=_.any(m,e.default.ui(`property`));if(u&&u.appendChild(y),!b)return y.appendChild(i.errorMessageBlock(t,`Error: No property given for text field: `+m));let x=l(t,_,y,m),S=_.anyJS(m,e.default.ui(`suppressEmptyUneditable`),null,v),C=
|
|
1
|
+
const e=require("../../lib/ns.cjs.js"),t=require("../../utils/label.cjs.js");require("../../utils/index.cjs.js");const n=require("../../lib/styleConstants.cjs.js"),r=require("../../lib/style.cjs.js"),i=require("../error.cjs.js"),a=require("./fieldParams.cjs.js"),o=require("./fieldFunction.cjs.js");let s=require("rdflib");var c=require("solid-logic").solidLogicSingleton.store;function l(t,a,o,s,c){o.style.display=`flex`,o.style.flexDirection=`row`;let l=o.appendChild(t.createElement(`div`));l.style.width=n.default.formFieldNameBoxWidth;let d=o.appendChild(t.createElement(`div`));return l.setAttribute(`class`,`formFieldName`),l.setAttribute(`style`,r.style.formFieldNameBoxStyle),d.setAttribute(`class`,`formFieldValue`),c?l.appendChild(t.createTextNode(c)):a.any(s,e.default.ui(`property`))?l.appendChild(u(t,a.any(s,e.default.ui(`property`)),s)):(d.appendChild(i.errorMessageBlock(t,`No property or label given for form field: `+s)),l.appendChild(t.createTextNode(`???`))),d}function u(n,r,i){let a=c.any(i,e.default.ui(`label`));if(a||=t.label(r,!0),r===void 0)return n.createTextNode(`@@Internal error: undefined property`);let o=n.createElement(`a`);return r.uri&&o.setAttribute(`href`,r.uri),o.setAttribute(`style`,`color: #3B5998; text-decoration: none;`),o.textContent=a,o}function d(e,t,n){let r=c.statementsMatching(e,t);if(r.length===0)return n;if(!c.updater)throw Error(`Store has no updater`);return r.length>0&&r[0].why.value&&c.updater.editable(r[0].why.value,c)?c.sym(r[0].why.value):n}function f(t,u,f,p,m,h,g){let _=c,v=m.doc?m.doc():null,y=t.createElement(`div`),b=_.any(m,e.default.ui(`property`));if(u&&u.appendChild(y),!b)return y.appendChild(i.errorMessageBlock(t,`Error: No property given for text field: `+m));let x=l(t,_,y,m),S=_.anyJS(m,e.default.ui(`suppressEmptyUneditable`),null,v),C=o.mostSpecificClassURI(m),w=a.fieldParams[C];w===void 0&&(w={style:``});let T=w.style||``,E=r.style.textInputStyle+T,D=t.createElement(`input`);D.style=E,x.appendChild(D),D.setAttribute(`type`,w.type?w.type:`text`);let O=(D.getAttribute(`type`)||``).toLowerCase(),k=O===`date`||O===`datetime-local`,A=_.anyJS(m,e.default.ui(`size`))||n.default.textInputSize||20;D.setAttribute(`size`,A);let j=_.any(m,e.default.ui(`maxLength`));D.setAttribute(`maxLength`,j?``+j:n.default.basicMaxLength),h||=d(p,b,h);let M=_.any(p,b,void 0,h);if(M||=_.any(m,e.default.ui(`default`)),M&&M.value&&w.uriPrefix?D.value=decodeURIComponent(M.value.replace(w.uriPrefix,``)).replace(/ /g,``):M&&(D.value=M.value||M.value||``),D.setAttribute(`style`,E),!_.updater)throw Error(`kb has no updater`);return _.updater.editable(h.uri)?(D.addEventListener(`keyup`,function(e){w.pattern&&D.setAttribute(`style`,E+(D.value.match(w.pattern)?`color: green;`:`color: red;`))},!0),D.addEventListener(`change`,function(n){if(k&&t.activeElement===D){D.dataset&&(D.dataset.deferredChange=`true`);return}if(w.pattern&&!D.value.match(w.pattern))return;let r=!k;r&&(D.disabled=!0),D.setAttribute(`style`,E+`color: gray;`);let a=_.statementsMatching(p,b),o;w.namedNode?o=_.sym(D.value):w.uriPrefix?(o=encodeURIComponent(D.value.replace(/ /g,``)),o=_.sym(w.uriPrefix+D.value)):o=w.dt?new s.Literal(D.value.trim(),void 0,e.default.xsd(w.dt)):new s.Literal(D.value);let c=a.map(e=>(0,s.st)(e.subject,e.predicate,o,e.why));c.length===0&&(c=[(0,s.st)(p,b,o,h)]);function l(e,t,n){let r=[];if(t.forEach(e=>{r.includes(e.why.uri)||r.push(e.why.uri)}),e.forEach(e=>{r.includes(e.why.uri)||r.push(e.why.uri)}),r.length===0)throw Error(`updateMany has no docs to patch`);if(!_.updater)throw Error(`kb has no updater`);if(r.length===1)return _.updater.update(e,t,n);let i=r.pop(),a=t.filter(e=>e.why.uri===i),o=t.filter(e=>e.why.uri!==i),s=e.filter(e=>e.why.uri===i),c=e.filter(e=>e.why.uri!==i);_.updater.update(s,a,function(e,t,r){t?l(c,o,n):n(e,t,r)})}l(a,c,function(e,n,a){n?(r&&(D.disabled=!1),D.setAttribute(`style`,E)):y.appendChild(i.errorMessageBlock(t,a)),g(n,a)})},!0),D.addEventListener(`blur`,function(e){if(k&&D.dataset&&D.dataset.deferredChange===`true`){delete D.dataset.deferredChange;let e=new Event(`change`,{bubbles:!0});D.dispatchEvent(e)}},!0),y):(D.readOnly=!0,D.style=r.style.textInputStyleUneditable+T,S&&D.value===``&&(y.style.display=`none`),y)}exports.basicField=f,exports.fieldLabel=u,exports.fieldStore=d,exports.renderNameValuePair=l;
|
|
2
2
|
//# sourceMappingURL=basic.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basic.cjs.js","names":[],"sources":["../../../src/widgets/forms/basic.ts"],"sourcesContent":["import { BlankNode, Literal, NamedNode, Node, st, Store, Variable } from 'rdflib'\nimport { solidLogicSingleton } from 'solid-logic'\nimport ns from '../../lib/ns'\nimport { style } from '../../lib/style'\nimport styleConstants from '../../lib/styleConstants'\nimport { label } from '../../utils'\nimport { errorMessageBlock } from '../error'\nimport { mostSpecificClassURI } from './fieldFunction'\nimport { fieldParams } from './fieldParams'\n\nconst store = solidLogicSingleton.store\n\n/* Style and create a name, value pair\n*/\nexport function renderNameValuePair (dom: HTMLDocument, kb: Store, box: HTMLElement, form: NamedNode, label?: string):HTMLElement {\n // const property = kb.any(form, ns.ui('property'))\n box.style.display = 'flex'\n box.style.flexDirection = 'row'\n const lhs = box.appendChild(dom.createElement('div'))\n lhs.style.width = styleConstants.formFieldNameBoxWidth\n const rhs = box.appendChild(dom.createElement('div'))\n\n lhs.setAttribute('class', 'formFieldName')\n lhs.setAttribute('style', style.formFieldNameBoxStyle)\n rhs.setAttribute('class', 'formFieldValue')\n if (label) {\n lhs.appendChild(dom.createTextNode(label))\n } else if (kb.any(form, ns.ui('property'))) { // Assume more space for error on right\n lhs.appendChild(fieldLabel(dom, kb.any(form, ns.ui('property')) as NamedNode, form))\n } else {\n rhs.appendChild(errorMessageBlock(dom, 'No property or label given for form field: ' + form))\n lhs.appendChild(dom.createTextNode('???'))\n }\n return rhs\n}\n\n/**\n * Create an anchor element with a label as the anchor text.\n *\n * @param dom The DOM\n * @param property href for the anchor element\n * @param fieldInQuestion field to produce a label for\n *\n * @internal exporting this only for unit tests\n */\nexport function fieldLabel (dom: HTMLDocument, property: NamedNode | undefined, fieldInQuestion: Node): HTMLElement | Text {\n let lab = store.any(fieldInQuestion as any, ns.ui('label'))\n if (!lab) lab = label(property, true) // Init capital\n if (property === undefined) {\n return dom.createTextNode('@@Internal error: undefined property')\n }\n const anchor = dom.createElement('a')\n /* istanbul ignore next */\n if (property.uri) anchor.setAttribute('href', property.uri)\n anchor.setAttribute('style', 'color: #3B5998; text-decoration: none;') // Not too blue and no underline\n anchor.textContent = lab as any\n return anchor\n}\n\n/**\n * Returns the document for the first quad that matches\n * the subject and predicate provided, or default if that\n * store is not editable.\n *\n * @param subject Subject about which we want to find an editable RDF document\n * @param predicate Predicate about which we want to find an editable RDF document\n * @param def default RDF document to return if none found\n *\n * @internal exporting this only for unit tests\n */\nexport function fieldStore (subject: NamedNode | BlankNode | Variable, predicate: NamedNode | Variable, def: NamedNode | undefined): NamedNode | undefined {\n const sts = store.statementsMatching(subject, predicate)\n if (sts.length === 0) return def // can used default as no data yet\n if (!store.updater) {\n throw new Error('Store has no updater')\n }\n if (\n sts.length > 0 &&\n sts[0].why.value &&\n store.updater.editable(sts[0].why.value, store)\n ) {\n return store.sym(sts[0].why.value)\n }\n return def\n}\n\n/**\n * Render a basic form field\n *\n * The same function is used for many similar one-value fields, with different\n * regexps used to validate.\n *\n * @param dom The HTML Document object aka Document Object Model\n * @param container If present, the created widget will be appended to this\n * @param already A hash table of (form, subject) kept to prevent recursive forms looping\n * @param subject The thing about which the form displays/edits data\n * @param form The form or field to be rendered\n * @param doc The web document in which the data is\n * @param callbackFunction Called when data is changed?\n *\n * @returns The HTML widget created\n */\n\nexport function basicField (\n dom: HTMLDocument,\n container: HTMLElement | undefined,\n already,\n subject: NamedNode | BlankNode | Variable,\n form: NamedNode,\n doc: NamedNode | undefined,\n callbackFunction: (_ok: boolean, _errorMessage: string) => void\n): HTMLElement {\n const kb = store\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n const box = dom.createElement('div')\n\n const property = kb.any(form, ns.ui('property'))\n if (container) container.appendChild(box)\n if (!property) {\n return box.appendChild(\n errorMessageBlock(dom, 'Error: No property given for text field: ' + form)\n )\n }\n const rhs = renderNameValuePair(dom, kb, box, form)\n\n // It can be cleaner to just remove empty fields if you can't edit them anyway\n const suppressEmptyUneditable = kb.anyJS(form, ns.ui('suppressEmptyUneditable'), null, formDoc)\n\n const uri = mostSpecificClassURI(form)\n let params = fieldParams[uri]\n if (params === undefined) params = { style: '' } // non-bottom field types can do this\n const paramStyle = params.style || ''\n const inputStyle = style.textInputStyle + paramStyle\n const field = dom.createElement('input')\n ;(field as any).style = inputStyle\n rhs.appendChild(field)\n field.setAttribute('type', params.type ? params.type : 'text')\n const fieldType = (field.getAttribute('type') || '').toLowerCase()\n const deferWhileFocused = fieldType === 'date' || fieldType === 'datetime-local'\n\n const size = kb.anyJS(form, ns.ui('size')) || styleConstants.textInputSize || 20\n field.setAttribute('size', size)\n\n const maxLength = kb.any(form, ns.ui('maxLength'))\n field.setAttribute('maxLength', maxLength ? '' + maxLength : styleConstants.basicMaxLength)\n\n doc = doc || fieldStore(subject, property as any, doc)\n\n let obj = kb.any(subject, property as any, undefined, doc)\n if (!obj) {\n obj = kb.any(form, ns.ui('default'))\n }\n if (obj && obj.value && params.uriPrefix) {\n // eg tel: or mailto:\n field.value = decodeURIComponent(obj.value.replace(params.uriPrefix, '')) // should have no spaces but in case\n .replace(/ /g, '')\n } else if (obj) {\n /* istanbul ignore next */\n field.value = obj.value || obj.value || ''\n }\n field.setAttribute('style', inputStyle)\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n if (!kb.updater.editable((doc as NamedNode).uri)) {\n field.readOnly = true // was: disabled. readOnly is better\n ;(field as any).style = style.textInputStyleUneditable + paramStyle\n if (suppressEmptyUneditable && field.value === '') {\n box.style.display = 'none' // clutter\n }\n return box\n }\n\n // read-write:\n field.addEventListener(\n 'keyup',\n function (_e) {\n if (params.pattern) {\n field.setAttribute(\n 'style',\n inputStyle +\n (field.value.match(params.pattern)\n ? 'color: green;'\n : 'color: red;')\n )\n }\n },\n true\n )\n field.addEventListener(\n 'change',\n function (_e) {\n if (deferWhileFocused && dom.activeElement === field) {\n if (field.dataset) {\n field.dataset.deferredChange = 'true'\n }\n return\n }\n // i.e. lose focus with changed data\n if (params.pattern && !field.value.match(params.pattern)) return\n const disabledForSave = !deferWhileFocused\n if (disabledForSave) {\n field.disabled = true // See if this stops getting two dates from fumbling, e.g., the chrome datepicker.\n }\n field.setAttribute('style', inputStyle + 'color: gray;') // pending\n const ds = kb.statementsMatching(subject, property as any) // remove any multiple values\n let result\n if (params.namedNode) {\n result = kb.sym(field.value)\n } else if (params.uriPrefix) {\n result = encodeURIComponent(field.value.replace(/ /g, ''))\n result = kb.sym(params.uriPrefix + field.value)\n } else {\n if (params.dt) {\n result = new Literal(\n field.value.trim(),\n undefined,\n ns.xsd(params.dt)\n )\n } else {\n result = new Literal(field.value)\n }\n }\n let is = ds.map(statement => st(statement.subject, statement.predicate, result, statement.why)) // can include >1 doc\n if (is.length === 0) {\n // or none\n is = [st(subject, property as any, result, doc)]\n }\n\n function updateMany (ds, is: { why: { uri: string } }[], callback) {\n const docs: any[] = []\n is.forEach(st => {\n if (!docs.includes(st.why.uri)) docs.push(st.why.uri)\n })\n ds.forEach(st => {\n /* istanbul ignore next */\n if (!docs.includes(st.why.uri)) docs.push(st.why.uri)\n })\n /* istanbul ignore next */\n if (docs.length === 0) {\n throw new Error('updateMany has no docs to patch')\n }\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n if (docs.length === 1) {\n return kb.updater.update(ds, is as any, callback)\n }\n // return kb.updater.update(ds, is, callback)\n\n const doc = docs.pop()\n const is1 = is.filter(st => st.why.uri === doc)\n const is2 = is.filter(st => st.why.uri !== doc)\n const ds1 = ds.filter(st => st.why.uri === doc)\n const ds2 = ds.filter(st => st.why.uri !== doc)\n kb.updater.update(ds1, is1 as any, function (uri, ok, body) {\n if (ok) {\n updateMany(ds2, is2, callback)\n } else {\n callback(uri, ok, body)\n }\n })\n }\n\n updateMany(ds, is as any, function (uri, ok, body) {\n // kb.updater.update(ds, is, function (uri, ok, body) {\n if (ok) {\n if (disabledForSave) {\n field.disabled = false\n }\n field.setAttribute('style', inputStyle)\n } else {\n box.appendChild(errorMessageBlock(dom, body))\n }\n callbackFunction(ok, body)\n })\n },\n true\n )\n field.addEventListener(\n 'blur',\n function (_e) {\n if (\n deferWhileFocused &&\n field.dataset &&\n field.dataset.deferredChange === 'true'\n ) {\n delete field.dataset.deferredChange\n const event = new Event('change', { bubbles: true })\n field.dispatchEvent(event)\n }\n },\n true\n )\n return box\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"basic.cjs.js","names":[],"sources":["../../../src/widgets/forms/basic.ts"],"sourcesContent":["import { BlankNode, Literal, NamedNode, Node, st, Store, Variable } from 'rdflib'\nimport { solidLogicSingleton } from 'solid-logic'\nimport ns from '../../lib/ns'\nimport { style } from '../../lib/style'\nimport styleConstants from '../../lib/styleConstants'\nimport { label } from '../../utils'\nimport { errorMessageBlock } from '../error'\nimport { mostSpecificClassURI } from './fieldFunction'\nimport { fieldParams } from './fieldParams'\n\nconst store = solidLogicSingleton.store\n\n/* Style and create a name, value pair\n*/\nexport function renderNameValuePair (dom: HTMLDocument, kb: Store, box: HTMLElement, form: NamedNode, label?: string):HTMLElement {\n // const property = kb.any(form, ns.ui('property'))\n box.style.display = 'flex'\n box.style.flexDirection = 'row'\n const lhs = box.appendChild(dom.createElement('div'))\n lhs.style.width = styleConstants.formFieldNameBoxWidth\n const rhs = box.appendChild(dom.createElement('div'))\n\n lhs.setAttribute('class', 'formFieldName')\n lhs.setAttribute('style', style.formFieldNameBoxStyle)\n rhs.setAttribute('class', 'formFieldValue')\n if (label) {\n lhs.appendChild(dom.createTextNode(label))\n } else if (kb.any(form, ns.ui('property'))) { // Assume more space for error on right\n lhs.appendChild(fieldLabel(dom, kb.any(form, ns.ui('property')) as NamedNode, form))\n } else {\n rhs.appendChild(errorMessageBlock(dom, 'No property or label given for form field: ' + form))\n lhs.appendChild(dom.createTextNode('???'))\n }\n return rhs\n}\n\n/**\n * Create an anchor element with a label as the anchor text.\n *\n * @param dom The DOM\n * @param property href for the anchor element\n * @param fieldInQuestion field to produce a label for\n *\n * @internal exporting this only for unit tests\n */\nexport function fieldLabel (dom: HTMLDocument, property: NamedNode | undefined, fieldInQuestion: Node): HTMLElement | Text {\n let lab = store.any(fieldInQuestion as any, ns.ui('label'))\n if (!lab) lab = label(property, true) // Init capital\n if (property === undefined) {\n return dom.createTextNode('@@Internal error: undefined property')\n }\n const anchor = dom.createElement('a')\n /* istanbul ignore next */\n if (property.uri) anchor.setAttribute('href', property.uri)\n anchor.setAttribute('style', 'color: #3B5998; text-decoration: none;') // Not too blue and no underline\n anchor.textContent = lab as any\n return anchor\n}\n\n/**\n * Returns the document for the first quad that matches\n * the subject and predicate provided, or default if that\n * store is not editable.\n *\n * @param subject Subject about which we want to find an editable RDF document\n * @param predicate Predicate about which we want to find an editable RDF document\n * @param def default RDF document to return if none found\n *\n * @internal exporting this only for unit tests\n */\nexport function fieldStore (subject: NamedNode | BlankNode | Variable, predicate: NamedNode | Variable, def: NamedNode | undefined): NamedNode | undefined {\n const sts = store.statementsMatching(subject, predicate)\n if (sts.length === 0) return def // can used default as no data yet\n if (!store.updater) {\n throw new Error('Store has no updater')\n }\n if (\n sts.length > 0 &&\n sts[0].why.value &&\n store.updater.editable(sts[0].why.value, store)\n ) {\n return store.sym(sts[0].why.value)\n }\n return def\n}\n\n/**\n * Render a basic form field\n *\n * The same function is used for many similar one-value fields, with different\n * regexps used to validate.\n *\n * @param dom The HTML Document object aka Document Object Model\n * @param container If present, the created widget will be appended to this\n * @param already A hash table of (form, subject) kept to prevent recursive forms looping\n * @param subject The thing about which the form displays/edits data\n * @param form The form or field to be rendered\n * @param doc The web document in which the data is\n * @param callbackFunction Called when data is changed?\n *\n * @returns The HTML widget created\n */\n\nexport function basicField (\n dom: HTMLDocument,\n container: HTMLElement | undefined,\n already,\n subject: NamedNode | BlankNode | Variable,\n form: NamedNode,\n doc: NamedNode | undefined,\n callbackFunction: (_ok: boolean, _errorMessage: string) => void\n): HTMLElement {\n const kb = store\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n const box = dom.createElement('div')\n\n const property = kb.any(form, ns.ui('property'))\n if (container) container.appendChild(box)\n if (!property) {\n return box.appendChild(\n errorMessageBlock(dom, 'Error: No property given for text field: ' + form)\n )\n }\n const rhs = renderNameValuePair(dom, kb, box, form)\n\n // It can be cleaner to just remove empty fields if you can't edit them anyway\n const suppressEmptyUneditable = kb.anyJS(form, ns.ui('suppressEmptyUneditable'), null, formDoc)\n\n const uri = mostSpecificClassURI(form)\n let params = fieldParams[uri]\n if (params === undefined) params = { style: '' } // non-bottom field types can do this\n const paramStyle = params.style || ''\n const inputStyle = style.textInputStyle + paramStyle\n const field = dom.createElement('input')\n ;(field as any).style = inputStyle\n rhs.appendChild(field)\n field.setAttribute('type', params.type ? params.type : 'text')\n const fieldType = (field.getAttribute('type') || '').toLowerCase()\n const deferWhileFocused = fieldType === 'date' || fieldType === 'datetime-local'\n\n const size = kb.anyJS(form, ns.ui('size')) || styleConstants.textInputSize || 20\n field.setAttribute('size', size)\n\n const maxLength = kb.any(form, ns.ui('maxLength'))\n field.setAttribute('maxLength', maxLength ? '' + maxLength : styleConstants.basicMaxLength)\n\n doc = doc || fieldStore(subject, property as any, doc)\n\n let obj = kb.any(subject, property as any, undefined, doc)\n if (!obj) {\n obj = kb.any(form, ns.ui('default'))\n }\n if (obj && obj.value && params.uriPrefix) {\n // eg tel: or mailto:\n field.value = decodeURIComponent(obj.value.replace(params.uriPrefix, '')) // should have no spaces but in case\n .replace(/ /g, '')\n } else if (obj) {\n /* istanbul ignore next */\n field.value = obj.value || obj.value || ''\n }\n field.setAttribute('style', inputStyle)\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n if (!kb.updater.editable((doc as NamedNode).uri)) {\n field.readOnly = true // was: disabled. readOnly is better\n ;(field as any).style = style.textInputStyleUneditable + paramStyle\n if (suppressEmptyUneditable && field.value === '') {\n box.style.display = 'none' // clutter\n }\n return box\n }\n\n // read-write:\n field.addEventListener(\n 'keyup',\n function (_e) {\n if (params.pattern) {\n field.setAttribute(\n 'style',\n inputStyle +\n (field.value.match(params.pattern)\n ? 'color: green;'\n : 'color: red;')\n )\n }\n },\n true\n )\n field.addEventListener(\n 'change',\n function (_e) {\n if (deferWhileFocused && dom.activeElement === field) {\n if (field.dataset) {\n field.dataset.deferredChange = 'true'\n }\n return\n }\n // i.e. lose focus with changed data\n if (params.pattern && !field.value.match(params.pattern)) return\n const disabledForSave = !deferWhileFocused\n if (disabledForSave) {\n field.disabled = true // See if this stops getting two dates from fumbling, e.g., the chrome datepicker.\n }\n field.setAttribute('style', inputStyle + 'color: gray;') // pending\n const ds = kb.statementsMatching(subject, property as any) // remove any multiple values\n let result\n if (params.namedNode) {\n result = kb.sym(field.value)\n } else if (params.uriPrefix) {\n result = encodeURIComponent(field.value.replace(/ /g, ''))\n result = kb.sym(params.uriPrefix + field.value)\n } else {\n if (params.dt) {\n result = new Literal(\n field.value.trim(),\n undefined,\n ns.xsd(params.dt)\n )\n } else {\n result = new Literal(field.value)\n }\n }\n let is = ds.map(statement => st(statement.subject, statement.predicate, result, statement.why)) // can include >1 doc\n if (is.length === 0) {\n // or none\n is = [st(subject, property as any, result, doc)]\n }\n\n function updateMany (ds, is: { why: { uri: string } }[], callback) {\n const docs: any[] = []\n is.forEach(st => {\n if (!docs.includes(st.why.uri)) docs.push(st.why.uri)\n })\n ds.forEach(st => {\n /* istanbul ignore next */\n if (!docs.includes(st.why.uri)) docs.push(st.why.uri)\n })\n /* istanbul ignore next */\n if (docs.length === 0) {\n throw new Error('updateMany has no docs to patch')\n }\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n if (docs.length === 1) {\n return kb.updater.update(ds, is as any, callback)\n }\n // return kb.updater.update(ds, is, callback)\n\n const doc = docs.pop()\n const is1 = is.filter(st => st.why.uri === doc)\n const is2 = is.filter(st => st.why.uri !== doc)\n const ds1 = ds.filter(st => st.why.uri === doc)\n const ds2 = ds.filter(st => st.why.uri !== doc)\n kb.updater.update(ds1, is1 as any, function (uri, ok, body) {\n if (ok) {\n updateMany(ds2, is2, callback)\n } else {\n callback(uri, ok, body)\n }\n })\n }\n\n updateMany(ds, is as any, function (uri, ok, body) {\n // kb.updater.update(ds, is, function (uri, ok, body) {\n if (ok) {\n if (disabledForSave) {\n field.disabled = false\n }\n field.setAttribute('style', inputStyle)\n } else {\n box.appendChild(errorMessageBlock(dom, body))\n }\n callbackFunction(ok, body)\n })\n },\n true\n )\n field.addEventListener(\n 'blur',\n function (_e) {\n if (\n deferWhileFocused &&\n field.dataset &&\n field.dataset.deferredChange === 'true'\n ) {\n delete field.dataset.deferredChange\n const event = new Event('change', { bubbles: true })\n field.dispatchEvent(event)\n }\n },\n true\n )\n return box\n}\n"],"mappings":"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"}
|
|
@@ -32,28 +32,30 @@ function p(e, t, n) {
|
|
|
32
32
|
function m(t, l, f, m, h, g, _) {
|
|
33
33
|
let v = u, y = h.doc ? h.doc() : null, b = t.createElement("div"), x = v.any(h, e.ui("property"));
|
|
34
34
|
if (l && l.appendChild(b), !x) return b.appendChild(i(t, "Error: No property given for text field: " + h));
|
|
35
|
-
let S = d(t, v, b, h), C = v.anyJS(h, e.ui("suppressEmptyUneditable"), null, y), w =
|
|
36
|
-
|
|
37
|
-
let
|
|
38
|
-
|
|
39
|
-
let
|
|
40
|
-
|
|
41
|
-
let
|
|
42
|
-
|
|
43
|
-
let
|
|
44
|
-
if (
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
35
|
+
let S = d(t, v, b, h), C = v.anyJS(h, e.ui("suppressEmptyUneditable"), null, y), w = o(h), T = a[w];
|
|
36
|
+
T === void 0 && (T = { style: "" });
|
|
37
|
+
let E = T.style || "", D = r.textInputStyle + E, O = t.createElement("input");
|
|
38
|
+
O.style = D, S.appendChild(O), O.setAttribute("type", T.type ? T.type : "text");
|
|
39
|
+
let k = (O.getAttribute("type") || "").toLowerCase(), A = k === "date" || k === "datetime-local", j = v.anyJS(h, e.ui("size")) || n.textInputSize || 20;
|
|
40
|
+
O.setAttribute("size", j);
|
|
41
|
+
let M = v.any(h, e.ui("maxLength"));
|
|
42
|
+
O.setAttribute("maxLength", M ? "" + M : n.basicMaxLength), g ||= p(m, x, g);
|
|
43
|
+
let N = v.any(m, x, void 0, g);
|
|
44
|
+
if (N ||= v.any(h, e.ui("default")), N && N.value && T.uriPrefix ? O.value = decodeURIComponent(N.value.replace(T.uriPrefix, "")).replace(/ /g, "") : N &&
|
|
45
|
+
/* istanbul ignore next */
|
|
46
|
+
(O.value = N.value || N.value || ""), O.setAttribute("style", D), !v.updater) throw Error("kb has no updater");
|
|
47
|
+
return v.updater.editable(g.uri) ? (O.addEventListener("keyup", function(e) {
|
|
48
|
+
T.pattern && O.setAttribute("style", D + (O.value.match(T.pattern) ? "color: green;" : "color: red;"));
|
|
49
|
+
}, !0), O.addEventListener("change", function(n) {
|
|
50
|
+
if (A && t.activeElement === O) {
|
|
51
|
+
O.dataset && (O.dataset.deferredChange = "true");
|
|
50
52
|
return;
|
|
51
53
|
}
|
|
52
|
-
if (
|
|
53
|
-
let r = !
|
|
54
|
-
r && (
|
|
54
|
+
if (T.pattern && !O.value.match(T.pattern)) return;
|
|
55
|
+
let r = !A;
|
|
56
|
+
r && (O.disabled = !0), O.setAttribute("style", D + "color: gray;");
|
|
55
57
|
let a = v.statementsMatching(m, x), o;
|
|
56
|
-
|
|
58
|
+
T.namedNode ? o = v.sym(O.value) : T.uriPrefix ? (o = encodeURIComponent(O.value.replace(/ /g, "")), o = v.sym(T.uriPrefix + O.value)) : o = T.dt ? new s(O.value.trim(), void 0, e.xsd(T.dt)) : new s(O.value);
|
|
57
59
|
let l = a.map((e) => c(e.subject, e.predicate, o, e.why));
|
|
58
60
|
l.length === 0 && (l = [c(m, x, o, g)]);
|
|
59
61
|
function u(e, t, n) {
|
|
@@ -73,15 +75,15 @@ function m(t, l, f, m, h, g, _) {
|
|
|
73
75
|
});
|
|
74
76
|
}
|
|
75
77
|
u(a, l, function(e, n, a) {
|
|
76
|
-
n ? (r && (
|
|
78
|
+
n ? (r && (O.disabled = !1), O.setAttribute("style", D)) : b.appendChild(i(t, a)), _(n, a);
|
|
77
79
|
});
|
|
78
|
-
}, !0),
|
|
79
|
-
if (
|
|
80
|
-
delete
|
|
80
|
+
}, !0), O.addEventListener("blur", function(e) {
|
|
81
|
+
if (A && O.dataset && O.dataset.deferredChange === "true") {
|
|
82
|
+
delete O.dataset.deferredChange;
|
|
81
83
|
let e = new Event("change", { bubbles: !0 });
|
|
82
|
-
|
|
84
|
+
O.dispatchEvent(e);
|
|
83
85
|
}
|
|
84
|
-
}, !0), b) : (
|
|
86
|
+
}, !0), b) : (O.readOnly = !0, O.style = r.textInputStyleUneditable + E, C && O.value === "" && (b.style.display = "none"), b);
|
|
85
87
|
}
|
|
86
88
|
//#endregion
|
|
87
89
|
export { m as basicField, f as fieldLabel, p as fieldStore, d as renderNameValuePair };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basic.esm.js","names":[],"sources":["../../../src/widgets/forms/basic.ts"],"sourcesContent":["import { BlankNode, Literal, NamedNode, Node, st, Store, Variable } from 'rdflib'\nimport { solidLogicSingleton } from 'solid-logic'\nimport ns from '../../lib/ns'\nimport { style } from '../../lib/style'\nimport styleConstants from '../../lib/styleConstants'\nimport { label } from '../../utils'\nimport { errorMessageBlock } from '../error'\nimport { mostSpecificClassURI } from './fieldFunction'\nimport { fieldParams } from './fieldParams'\n\nconst store = solidLogicSingleton.store\n\n/* Style and create a name, value pair\n*/\nexport function renderNameValuePair (dom: HTMLDocument, kb: Store, box: HTMLElement, form: NamedNode, label?: string):HTMLElement {\n // const property = kb.any(form, ns.ui('property'))\n box.style.display = 'flex'\n box.style.flexDirection = 'row'\n const lhs = box.appendChild(dom.createElement('div'))\n lhs.style.width = styleConstants.formFieldNameBoxWidth\n const rhs = box.appendChild(dom.createElement('div'))\n\n lhs.setAttribute('class', 'formFieldName')\n lhs.setAttribute('style', style.formFieldNameBoxStyle)\n rhs.setAttribute('class', 'formFieldValue')\n if (label) {\n lhs.appendChild(dom.createTextNode(label))\n } else if (kb.any(form, ns.ui('property'))) { // Assume more space for error on right\n lhs.appendChild(fieldLabel(dom, kb.any(form, ns.ui('property')) as NamedNode, form))\n } else {\n rhs.appendChild(errorMessageBlock(dom, 'No property or label given for form field: ' + form))\n lhs.appendChild(dom.createTextNode('???'))\n }\n return rhs\n}\n\n/**\n * Create an anchor element with a label as the anchor text.\n *\n * @param dom The DOM\n * @param property href for the anchor element\n * @param fieldInQuestion field to produce a label for\n *\n * @internal exporting this only for unit tests\n */\nexport function fieldLabel (dom: HTMLDocument, property: NamedNode | undefined, fieldInQuestion: Node): HTMLElement | Text {\n let lab = store.any(fieldInQuestion as any, ns.ui('label'))\n if (!lab) lab = label(property, true) // Init capital\n if (property === undefined) {\n return dom.createTextNode('@@Internal error: undefined property')\n }\n const anchor = dom.createElement('a')\n /* istanbul ignore next */\n if (property.uri) anchor.setAttribute('href', property.uri)\n anchor.setAttribute('style', 'color: #3B5998; text-decoration: none;') // Not too blue and no underline\n anchor.textContent = lab as any\n return anchor\n}\n\n/**\n * Returns the document for the first quad that matches\n * the subject and predicate provided, or default if that\n * store is not editable.\n *\n * @param subject Subject about which we want to find an editable RDF document\n * @param predicate Predicate about which we want to find an editable RDF document\n * @param def default RDF document to return if none found\n *\n * @internal exporting this only for unit tests\n */\nexport function fieldStore (subject: NamedNode | BlankNode | Variable, predicate: NamedNode | Variable, def: NamedNode | undefined): NamedNode | undefined {\n const sts = store.statementsMatching(subject, predicate)\n if (sts.length === 0) return def // can used default as no data yet\n if (!store.updater) {\n throw new Error('Store has no updater')\n }\n if (\n sts.length > 0 &&\n sts[0].why.value &&\n store.updater.editable(sts[0].why.value, store)\n ) {\n return store.sym(sts[0].why.value)\n }\n return def\n}\n\n/**\n * Render a basic form field\n *\n * The same function is used for many similar one-value fields, with different\n * regexps used to validate.\n *\n * @param dom The HTML Document object aka Document Object Model\n * @param container If present, the created widget will be appended to this\n * @param already A hash table of (form, subject) kept to prevent recursive forms looping\n * @param subject The thing about which the form displays/edits data\n * @param form The form or field to be rendered\n * @param doc The web document in which the data is\n * @param callbackFunction Called when data is changed?\n *\n * @returns The HTML widget created\n */\n\nexport function basicField (\n dom: HTMLDocument,\n container: HTMLElement | undefined,\n already,\n subject: NamedNode | BlankNode | Variable,\n form: NamedNode,\n doc: NamedNode | undefined,\n callbackFunction: (_ok: boolean, _errorMessage: string) => void\n): HTMLElement {\n const kb = store\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n const box = dom.createElement('div')\n\n const property = kb.any(form, ns.ui('property'))\n if (container) container.appendChild(box)\n if (!property) {\n return box.appendChild(\n errorMessageBlock(dom, 'Error: No property given for text field: ' + form)\n )\n }\n const rhs = renderNameValuePair(dom, kb, box, form)\n\n // It can be cleaner to just remove empty fields if you can't edit them anyway\n const suppressEmptyUneditable = kb.anyJS(form, ns.ui('suppressEmptyUneditable'), null, formDoc)\n\n const uri = mostSpecificClassURI(form)\n let params = fieldParams[uri]\n if (params === undefined) params = { style: '' } // non-bottom field types can do this\n const paramStyle = params.style || ''\n const inputStyle = style.textInputStyle + paramStyle\n const field = dom.createElement('input')\n ;(field as any).style = inputStyle\n rhs.appendChild(field)\n field.setAttribute('type', params.type ? params.type : 'text')\n const fieldType = (field.getAttribute('type') || '').toLowerCase()\n const deferWhileFocused = fieldType === 'date' || fieldType === 'datetime-local'\n\n const size = kb.anyJS(form, ns.ui('size')) || styleConstants.textInputSize || 20\n field.setAttribute('size', size)\n\n const maxLength = kb.any(form, ns.ui('maxLength'))\n field.setAttribute('maxLength', maxLength ? '' + maxLength : styleConstants.basicMaxLength)\n\n doc = doc || fieldStore(subject, property as any, doc)\n\n let obj = kb.any(subject, property as any, undefined, doc)\n if (!obj) {\n obj = kb.any(form, ns.ui('default'))\n }\n if (obj && obj.value && params.uriPrefix) {\n // eg tel: or mailto:\n field.value = decodeURIComponent(obj.value.replace(params.uriPrefix, '')) // should have no spaces but in case\n .replace(/ /g, '')\n } else if (obj) {\n /* istanbul ignore next */\n field.value = obj.value || obj.value || ''\n }\n field.setAttribute('style', inputStyle)\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n if (!kb.updater.editable((doc as NamedNode).uri)) {\n field.readOnly = true // was: disabled. readOnly is better\n ;(field as any).style = style.textInputStyleUneditable + paramStyle\n if (suppressEmptyUneditable && field.value === '') {\n box.style.display = 'none' // clutter\n }\n return box\n }\n\n // read-write:\n field.addEventListener(\n 'keyup',\n function (_e) {\n if (params.pattern) {\n field.setAttribute(\n 'style',\n inputStyle +\n (field.value.match(params.pattern)\n ? 'color: green;'\n : 'color: red;')\n )\n }\n },\n true\n )\n field.addEventListener(\n 'change',\n function (_e) {\n if (deferWhileFocused && dom.activeElement === field) {\n if (field.dataset) {\n field.dataset.deferredChange = 'true'\n }\n return\n }\n // i.e. lose focus with changed data\n if (params.pattern && !field.value.match(params.pattern)) return\n const disabledForSave = !deferWhileFocused\n if (disabledForSave) {\n field.disabled = true // See if this stops getting two dates from fumbling, e.g., the chrome datepicker.\n }\n field.setAttribute('style', inputStyle + 'color: gray;') // pending\n const ds = kb.statementsMatching(subject, property as any) // remove any multiple values\n let result\n if (params.namedNode) {\n result = kb.sym(field.value)\n } else if (params.uriPrefix) {\n result = encodeURIComponent(field.value.replace(/ /g, ''))\n result = kb.sym(params.uriPrefix + field.value)\n } else {\n if (params.dt) {\n result = new Literal(\n field.value.trim(),\n undefined,\n ns.xsd(params.dt)\n )\n } else {\n result = new Literal(field.value)\n }\n }\n let is = ds.map(statement => st(statement.subject, statement.predicate, result, statement.why)) // can include >1 doc\n if (is.length === 0) {\n // or none\n is = [st(subject, property as any, result, doc)]\n }\n\n function updateMany (ds, is: { why: { uri: string } }[], callback) {\n const docs: any[] = []\n is.forEach(st => {\n if (!docs.includes(st.why.uri)) docs.push(st.why.uri)\n })\n ds.forEach(st => {\n /* istanbul ignore next */\n if (!docs.includes(st.why.uri)) docs.push(st.why.uri)\n })\n /* istanbul ignore next */\n if (docs.length === 0) {\n throw new Error('updateMany has no docs to patch')\n }\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n if (docs.length === 1) {\n return kb.updater.update(ds, is as any, callback)\n }\n // return kb.updater.update(ds, is, callback)\n\n const doc = docs.pop()\n const is1 = is.filter(st => st.why.uri === doc)\n const is2 = is.filter(st => st.why.uri !== doc)\n const ds1 = ds.filter(st => st.why.uri === doc)\n const ds2 = ds.filter(st => st.why.uri !== doc)\n kb.updater.update(ds1, is1 as any, function (uri, ok, body) {\n if (ok) {\n updateMany(ds2, is2, callback)\n } else {\n callback(uri, ok, body)\n }\n })\n }\n\n updateMany(ds, is as any, function (uri, ok, body) {\n // kb.updater.update(ds, is, function (uri, ok, body) {\n if (ok) {\n if (disabledForSave) {\n field.disabled = false\n }\n field.setAttribute('style', inputStyle)\n } else {\n box.appendChild(errorMessageBlock(dom, body))\n }\n callbackFunction(ok, body)\n })\n },\n true\n )\n field.addEventListener(\n 'blur',\n function (_e) {\n if (\n deferWhileFocused &&\n field.dataset &&\n field.dataset.deferredChange === 'true'\n ) {\n delete field.dataset.deferredChange\n const event = new Event('change', { bubbles: true })\n field.dispatchEvent(event)\n }\n },\n true\n )\n return box\n}\n"],"mappings":";;;;;;;;;;;AAUA,IAAM,IAAQ,EAAoB;AAIlC,SAAgB,EAAqB,GAAmB,GAAW,GAAkB,GAAiB,GAA4B;CAGhI,AADA,EAAI,MAAM,UAAU,QACpB,EAAI,MAAM,gBAAgB;CAC1B,IAAM,IAAM,EAAI,YAAY,EAAI,cAAc,KAAK,CAAC;CACpD,EAAI,MAAM,QAAQ,EAAe;CACjC,IAAM,IAAM,EAAI,YAAY,EAAI,cAAc,KAAK,CAAC;CAapD,OAXA,EAAI,aAAa,SAAS,eAAe,GACzC,EAAI,aAAa,SAAS,EAAM,qBAAqB,GACrD,EAAI,aAAa,SAAS,gBAAgB,GACtC,IACF,EAAI,YAAY,EAAI,eAAe,CAAK,CAAC,IAChC,EAAG,IAAI,GAAM,EAAG,GAAG,UAAU,CAAC,IACvC,EAAI,YAAY,EAAW,GAAK,EAAG,IAAI,GAAM,EAAG,GAAG,UAAU,CAAC,GAAgB,CAAI,CAAC,KAEnF,EAAI,YAAY,EAAkB,GAAK,gDAAgD,CAAI,CAAC,GAC5F,EAAI,YAAY,EAAI,eAAe,KAAK,CAAC,IAEpC;AACT;AAWA,SAAgB,EAAY,GAAmB,GAAiC,GAA2C;CACzH,IAAI,IAAM,EAAM,IAAI,GAAwB,EAAG,GAAG,OAAO,CAAC;CAE1D,IADA,AAAU,MAAM,EAAM,GAAU,EAAI,GAChC,MAAa,KAAA,GACf,OAAO,EAAI,eAAe,sCAAsC;CAElE,IAAM,IAAS,EAAI,cAAc,GAAG;CAKpC,OAHI,EAAS,OAAK,EAAO,aAAa,QAAQ,EAAS,GAAG,GAC1D,EAAO,aAAa,SAAS,wCAAwC,GACrE,EAAO,cAAc,GACd;AACT;AAaA,SAAgB,EAAY,GAA2C,GAAiC,GAAmD;CACzJ,IAAM,IAAM,EAAM,mBAAmB,GAAS,CAAS;CACvD,IAAI,EAAI,WAAW,GAAG,OAAO;CAC7B,IAAI,CAAC,EAAM,SACT,MAAU,MAAM,sBAAsB;CASxC,OANE,EAAI,SAAS,KACb,EAAI,EAAE,CAAC,IAAI,SACX,EAAM,QAAQ,SAAS,EAAI,EAAE,CAAC,IAAI,OAAO,CAAK,IAEvC,EAAM,IAAI,EAAI,EAAE,CAAC,IAAI,KAAK,IAE5B;AACT;AAmBA,SAAgB,EACd,GACA,GACA,GACA,GACA,GACA,GACA,GACa;CACb,IAAM,IAAK,GACL,IAAU,EAAK,MAAM,EAAK,IAAI,IAAI,MAElC,IAAM,EAAI,cAAc,KAAK,GAE7B,IAAW,EAAG,IAAI,GAAM,EAAG,GAAG,UAAU,CAAC;CAE/C,IADI,KAAW,EAAU,YAAY,CAAG,GACpC,CAAC,GACH,OAAO,EAAI,YACT,EAAkB,GAAK,8CAA8C,CAAI,CAC3E;CAEF,IAAM,IAAM,EAAoB,GAAK,GAAI,GAAK,CAAI,GAG5C,IAA0B,EAAG,MAAM,GAAM,EAAG,GAAG,yBAAyB,GAAG,MAAM,CAAO,GAG1F,IAAS,EADD,EAAqB,CACR;CACzB,AAAI,MAAW,KAAA,MAAW,IAAS,EAAE,OAAO,GAAG;CAC/C,IAAM,IAAa,EAAO,SAAS,IAC7B,IAAa,EAAM,iBAAiB,GACpC,IAAQ,EAAI,cAAc,OAAO;CAGvC,AAFC,EAAe,QAAQ,GACxB,EAAI,YAAY,CAAK,GACrB,EAAM,aAAa,QAAQ,EAAO,OAAO,EAAO,OAAO,MAAM;CAC7D,IAAM,KAAa,EAAM,aAAa,MAAM,KAAK,GAAA,CAAI,YAAY,GAC3D,IAAoB,MAAc,UAAU,MAAc,kBAE1D,IAAO,EAAG,MAAM,GAAM,EAAG,GAAG,MAAM,CAAC,KAAK,EAAe,iBAAiB;CAC9E,EAAM,aAAa,QAAQ,CAAI;CAE/B,IAAM,IAAY,EAAG,IAAI,GAAM,EAAG,GAAG,WAAW,CAAC;CAGjD,AAFA,EAAM,aAAa,aAAa,IAAY,KAAK,IAAY,EAAe,cAAc,GAE1F,MAAa,EAAW,GAAS,GAAiB,CAAG;CAErD,IAAI,IAAM,EAAG,IAAI,GAAS,GAAiB,KAAA,GAAW,CAAG;CAazD,IAZA,AACE,MAAM,EAAG,IAAI,GAAM,EAAG,GAAG,SAAS,CAAC,GAEjC,KAAO,EAAI,SAAS,EAAO,YAE7B,EAAM,QAAQ,mBAAmB,EAAI,MAAM,QAAQ,EAAO,WAAW,EAAE,CAAC,CAAC,CACtE,QAAQ,MAAM,EAAE,IACV,MAET,EAAM,QAAQ,EAAI,SAAS,EAAI,SAAS,KAE1C,EAAM,aAAa,SAAS,CAAU,GAClC,CAAC,EAAG,SACN,MAAU,MAAM,mBAAmB;CAoIrC,OAlIK,EAAG,QAAQ,SAAU,EAAkB,GAAG,KAU/C,EAAM,iBACJ,SACA,SAAU,GAAI;EACZ,AAAI,EAAO,WACT,EAAM,aACJ,SACA,KACG,EAAM,MAAM,MAAM,EAAO,OAAO,IAC7B,kBACA,cACR;CAEJ,GACA,EACF,GACA,EAAM,iBACJ,UACA,SAAU,GAAI;EACZ,IAAI,KAAqB,EAAI,kBAAkB,GAAO;GACpD,AAAI,EAAM,YACR,EAAM,QAAQ,iBAAiB;GAEjC;EACF;EAEA,IAAI,EAAO,WAAW,CAAC,EAAM,MAAM,MAAM,EAAO,OAAO,GAAG;EAC1D,IAAM,IAAkB,CAAC;EAIzB,AAHI,MACF,EAAM,WAAW,KAEnB,EAAM,aAAa,SAAS,IAAa,cAAc;EACvD,IAAM,IAAK,EAAG,mBAAmB,GAAS,CAAe,GACrD;EACJ,AAAI,EAAO,YACT,IAAS,EAAG,IAAI,EAAM,KAAK,IAClB,EAAO,aAChB,IAAS,mBAAmB,EAAM,MAAM,QAAQ,MAAM,EAAE,CAAC,GACzD,IAAS,EAAG,IAAI,EAAO,YAAY,EAAM,KAAK,KAE9C,AAOE,IAPE,EAAO,KACA,IAAI,EACX,EAAM,MAAM,KAAK,GACjB,KAAA,GACA,EAAG,IAAI,EAAO,EAAE,CAClB,IAES,IAAI,EAAQ,EAAM,KAAK;EAGpC,IAAI,IAAK,EAAG,KAAI,MAAa,EAAG,EAAU,SAAS,EAAU,WAAW,GAAQ,EAAU,GAAG,CAAC;EAC9F,AAAI,EAAG,WAAW,MAEhB,IAAK,CAAC,EAAG,GAAS,GAAiB,GAAQ,CAAG,CAAC;EAGjD,SAAS,EAAY,GAAI,GAAgC,GAAU;GACjE,IAAM,IAAc,CAAC;;GASrB,IARA,EAAG,SAAQ,MAAM;IACf,AAAK,EAAK,SAAS,EAAG,IAAI,GAAG,KAAG,EAAK,KAAK,EAAG,IAAI,GAAG;GACtD,CAAC,GACD,EAAG,SAAQ,MAAM;;IAEf,AAAK,EAAK,SAAS,EAAG,IAAI,GAAG,KAAG,EAAK,KAAK,EAAG,IAAI,GAAG;GACtD,CAAC,GAEG,EAAK,WAAW,GAClB,MAAU,MAAM,iCAAiC;GAEnD,IAAI,CAAC,EAAG,SACN,MAAU,MAAM,mBAAmB;GAErC,IAAI,EAAK,WAAW,GAClB,OAAO,EAAG,QAAQ,OAAO,GAAI,GAAW,CAAQ;GAIlD,IAAM,IAAM,EAAK,IAAI,GACf,IAAM,EAAG,QAAO,MAAM,EAAG,IAAI,QAAQ,CAAG,GACxC,IAAM,EAAG,QAAO,MAAM,EAAG,IAAI,QAAQ,CAAG,GACxC,IAAM,EAAG,QAAO,MAAM,EAAG,IAAI,QAAQ,CAAG,GACxC,IAAM,EAAG,QAAO,MAAM,EAAG,IAAI,QAAQ,CAAG;GAC9C,EAAG,QAAQ,OAAO,GAAK,GAAY,SAAU,GAAK,GAAI,GAAM;IAC1D,AAAI,IACF,EAAW,GAAK,GAAK,CAAQ,IAE7B,EAAS,GAAK,GAAI,CAAI;GAE1B,CAAC;EACH;EAEA,EAAW,GAAI,GAAW,SAAU,GAAK,GAAI,GAAM;GAUjD,AARI,KACE,MACF,EAAM,WAAW,KAEnB,EAAM,aAAa,SAAS,CAAU,KAEtC,EAAI,YAAY,EAAkB,GAAK,CAAI,CAAC,GAE9C,EAAiB,GAAI,CAAI;EAC3B,CAAC;CACH,GACA,EACF,GACA,EAAM,iBACJ,QACA,SAAU,GAAI;EACZ,IACE,KACA,EAAM,WACN,EAAM,QAAQ,mBAAmB,QACjC;GACA,OAAO,EAAM,QAAQ;GACrB,IAAM,IAAQ,IAAI,MAAM,UAAU,EAAE,SAAS,GAAK,CAAC;GACnD,EAAM,cAAc,CAAK;EAC3B;CACF,GACA,EACF,GACO,MAjIL,EAAM,WAAW,IAChB,EAAe,QAAQ,EAAM,2BAA2B,GACrD,KAA2B,EAAM,UAAU,OAC7C,EAAI,MAAM,UAAU,SAEf;AA6HX"}
|
|
1
|
+
{"version":3,"file":"basic.esm.js","names":[],"sources":["../../../src/widgets/forms/basic.ts"],"sourcesContent":["import { BlankNode, Literal, NamedNode, Node, st, Store, Variable } from 'rdflib'\nimport { solidLogicSingleton } from 'solid-logic'\nimport ns from '../../lib/ns'\nimport { style } from '../../lib/style'\nimport styleConstants from '../../lib/styleConstants'\nimport { label } from '../../utils'\nimport { errorMessageBlock } from '../error'\nimport { mostSpecificClassURI } from './fieldFunction'\nimport { fieldParams } from './fieldParams'\n\nconst store = solidLogicSingleton.store\n\n/* Style and create a name, value pair\n*/\nexport function renderNameValuePair (dom: HTMLDocument, kb: Store, box: HTMLElement, form: NamedNode, label?: string):HTMLElement {\n // const property = kb.any(form, ns.ui('property'))\n box.style.display = 'flex'\n box.style.flexDirection = 'row'\n const lhs = box.appendChild(dom.createElement('div'))\n lhs.style.width = styleConstants.formFieldNameBoxWidth\n const rhs = box.appendChild(dom.createElement('div'))\n\n lhs.setAttribute('class', 'formFieldName')\n lhs.setAttribute('style', style.formFieldNameBoxStyle)\n rhs.setAttribute('class', 'formFieldValue')\n if (label) {\n lhs.appendChild(dom.createTextNode(label))\n } else if (kb.any(form, ns.ui('property'))) { // Assume more space for error on right\n lhs.appendChild(fieldLabel(dom, kb.any(form, ns.ui('property')) as NamedNode, form))\n } else {\n rhs.appendChild(errorMessageBlock(dom, 'No property or label given for form field: ' + form))\n lhs.appendChild(dom.createTextNode('???'))\n }\n return rhs\n}\n\n/**\n * Create an anchor element with a label as the anchor text.\n *\n * @param dom The DOM\n * @param property href for the anchor element\n * @param fieldInQuestion field to produce a label for\n *\n * @internal exporting this only for unit tests\n */\nexport function fieldLabel (dom: HTMLDocument, property: NamedNode | undefined, fieldInQuestion: Node): HTMLElement | Text {\n let lab = store.any(fieldInQuestion as any, ns.ui('label'))\n if (!lab) lab = label(property, true) // Init capital\n if (property === undefined) {\n return dom.createTextNode('@@Internal error: undefined property')\n }\n const anchor = dom.createElement('a')\n /* istanbul ignore next */\n if (property.uri) anchor.setAttribute('href', property.uri)\n anchor.setAttribute('style', 'color: #3B5998; text-decoration: none;') // Not too blue and no underline\n anchor.textContent = lab as any\n return anchor\n}\n\n/**\n * Returns the document for the first quad that matches\n * the subject and predicate provided, or default if that\n * store is not editable.\n *\n * @param subject Subject about which we want to find an editable RDF document\n * @param predicate Predicate about which we want to find an editable RDF document\n * @param def default RDF document to return if none found\n *\n * @internal exporting this only for unit tests\n */\nexport function fieldStore (subject: NamedNode | BlankNode | Variable, predicate: NamedNode | Variable, def: NamedNode | undefined): NamedNode | undefined {\n const sts = store.statementsMatching(subject, predicate)\n if (sts.length === 0) return def // can used default as no data yet\n if (!store.updater) {\n throw new Error('Store has no updater')\n }\n if (\n sts.length > 0 &&\n sts[0].why.value &&\n store.updater.editable(sts[0].why.value, store)\n ) {\n return store.sym(sts[0].why.value)\n }\n return def\n}\n\n/**\n * Render a basic form field\n *\n * The same function is used for many similar one-value fields, with different\n * regexps used to validate.\n *\n * @param dom The HTML Document object aka Document Object Model\n * @param container If present, the created widget will be appended to this\n * @param already A hash table of (form, subject) kept to prevent recursive forms looping\n * @param subject The thing about which the form displays/edits data\n * @param form The form or field to be rendered\n * @param doc The web document in which the data is\n * @param callbackFunction Called when data is changed?\n *\n * @returns The HTML widget created\n */\n\nexport function basicField (\n dom: HTMLDocument,\n container: HTMLElement | undefined,\n already,\n subject: NamedNode | BlankNode | Variable,\n form: NamedNode,\n doc: NamedNode | undefined,\n callbackFunction: (_ok: boolean, _errorMessage: string) => void\n): HTMLElement {\n const kb = store\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n const box = dom.createElement('div')\n\n const property = kb.any(form, ns.ui('property'))\n if (container) container.appendChild(box)\n if (!property) {\n return box.appendChild(\n errorMessageBlock(dom, 'Error: No property given for text field: ' + form)\n )\n }\n const rhs = renderNameValuePair(dom, kb, box, form)\n\n // It can be cleaner to just remove empty fields if you can't edit them anyway\n const suppressEmptyUneditable = kb.anyJS(form, ns.ui('suppressEmptyUneditable'), null, formDoc)\n\n const uri = mostSpecificClassURI(form)\n let params = fieldParams[uri]\n if (params === undefined) params = { style: '' } // non-bottom field types can do this\n const paramStyle = params.style || ''\n const inputStyle = style.textInputStyle + paramStyle\n const field = dom.createElement('input')\n ;(field as any).style = inputStyle\n rhs.appendChild(field)\n field.setAttribute('type', params.type ? params.type : 'text')\n const fieldType = (field.getAttribute('type') || '').toLowerCase()\n const deferWhileFocused = fieldType === 'date' || fieldType === 'datetime-local'\n\n const size = kb.anyJS(form, ns.ui('size')) || styleConstants.textInputSize || 20\n field.setAttribute('size', size)\n\n const maxLength = kb.any(form, ns.ui('maxLength'))\n field.setAttribute('maxLength', maxLength ? '' + maxLength : styleConstants.basicMaxLength)\n\n doc = doc || fieldStore(subject, property as any, doc)\n\n let obj = kb.any(subject, property as any, undefined, doc)\n if (!obj) {\n obj = kb.any(form, ns.ui('default'))\n }\n if (obj && obj.value && params.uriPrefix) {\n // eg tel: or mailto:\n field.value = decodeURIComponent(obj.value.replace(params.uriPrefix, '')) // should have no spaces but in case\n .replace(/ /g, '')\n } else if (obj) {\n /* istanbul ignore next */\n field.value = obj.value || obj.value || ''\n }\n field.setAttribute('style', inputStyle)\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n if (!kb.updater.editable((doc as NamedNode).uri)) {\n field.readOnly = true // was: disabled. readOnly is better\n ;(field as any).style = style.textInputStyleUneditable + paramStyle\n if (suppressEmptyUneditable && field.value === '') {\n box.style.display = 'none' // clutter\n }\n return box\n }\n\n // read-write:\n field.addEventListener(\n 'keyup',\n function (_e) {\n if (params.pattern) {\n field.setAttribute(\n 'style',\n inputStyle +\n (field.value.match(params.pattern)\n ? 'color: green;'\n : 'color: red;')\n )\n }\n },\n true\n )\n field.addEventListener(\n 'change',\n function (_e) {\n if (deferWhileFocused && dom.activeElement === field) {\n if (field.dataset) {\n field.dataset.deferredChange = 'true'\n }\n return\n }\n // i.e. lose focus with changed data\n if (params.pattern && !field.value.match(params.pattern)) return\n const disabledForSave = !deferWhileFocused\n if (disabledForSave) {\n field.disabled = true // See if this stops getting two dates from fumbling, e.g., the chrome datepicker.\n }\n field.setAttribute('style', inputStyle + 'color: gray;') // pending\n const ds = kb.statementsMatching(subject, property as any) // remove any multiple values\n let result\n if (params.namedNode) {\n result = kb.sym(field.value)\n } else if (params.uriPrefix) {\n result = encodeURIComponent(field.value.replace(/ /g, ''))\n result = kb.sym(params.uriPrefix + field.value)\n } else {\n if (params.dt) {\n result = new Literal(\n field.value.trim(),\n undefined,\n ns.xsd(params.dt)\n )\n } else {\n result = new Literal(field.value)\n }\n }\n let is = ds.map(statement => st(statement.subject, statement.predicate, result, statement.why)) // can include >1 doc\n if (is.length === 0) {\n // or none\n is = [st(subject, property as any, result, doc)]\n }\n\n function updateMany (ds, is: { why: { uri: string } }[], callback) {\n const docs: any[] = []\n is.forEach(st => {\n if (!docs.includes(st.why.uri)) docs.push(st.why.uri)\n })\n ds.forEach(st => {\n /* istanbul ignore next */\n if (!docs.includes(st.why.uri)) docs.push(st.why.uri)\n })\n /* istanbul ignore next */\n if (docs.length === 0) {\n throw new Error('updateMany has no docs to patch')\n }\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n if (docs.length === 1) {\n return kb.updater.update(ds, is as any, callback)\n }\n // return kb.updater.update(ds, is, callback)\n\n const doc = docs.pop()\n const is1 = is.filter(st => st.why.uri === doc)\n const is2 = is.filter(st => st.why.uri !== doc)\n const ds1 = ds.filter(st => st.why.uri === doc)\n const ds2 = ds.filter(st => st.why.uri !== doc)\n kb.updater.update(ds1, is1 as any, function (uri, ok, body) {\n if (ok) {\n updateMany(ds2, is2, callback)\n } else {\n callback(uri, ok, body)\n }\n })\n }\n\n updateMany(ds, is as any, function (uri, ok, body) {\n // kb.updater.update(ds, is, function (uri, ok, body) {\n if (ok) {\n if (disabledForSave) {\n field.disabled = false\n }\n field.setAttribute('style', inputStyle)\n } else {\n box.appendChild(errorMessageBlock(dom, body))\n }\n callbackFunction(ok, body)\n })\n },\n true\n )\n field.addEventListener(\n 'blur',\n function (_e) {\n if (\n deferWhileFocused &&\n field.dataset &&\n field.dataset.deferredChange === 'true'\n ) {\n delete field.dataset.deferredChange\n const event = new Event('change', { bubbles: true })\n field.dispatchEvent(event)\n }\n },\n true\n )\n return box\n}\n"],"mappings":";;;;;;;;;;;AAUA,IAAM,IAAQ,EAAoB;AAIlC,SAAgB,EAAqB,GAAmB,GAAW,GAAkB,GAAiB,GAA4B;CAGhI,AADA,EAAI,MAAM,UAAU,QACpB,EAAI,MAAM,gBAAgB;CAC1B,IAAM,IAAM,EAAI,YAAY,EAAI,cAAc,KAAK,CAAC;CACpD,EAAI,MAAM,QAAQ,EAAe;CACjC,IAAM,IAAM,EAAI,YAAY,EAAI,cAAc,KAAK,CAAC;CAapD,OAXA,EAAI,aAAa,SAAS,eAAe,GACzC,EAAI,aAAa,SAAS,EAAM,qBAAqB,GACrD,EAAI,aAAa,SAAS,gBAAgB,GACtC,IACF,EAAI,YAAY,EAAI,eAAe,CAAK,CAAC,IAChC,EAAG,IAAI,GAAM,EAAG,GAAG,UAAU,CAAC,IACvC,EAAI,YAAY,EAAW,GAAK,EAAG,IAAI,GAAM,EAAG,GAAG,UAAU,CAAC,GAAgB,CAAI,CAAC,KAEnF,EAAI,YAAY,EAAkB,GAAK,gDAAgD,CAAI,CAAC,GAC5F,EAAI,YAAY,EAAI,eAAe,KAAK,CAAC,IAEpC;AACT;AAWA,SAAgB,EAAY,GAAmB,GAAiC,GAA2C;CACzH,IAAI,IAAM,EAAM,IAAI,GAAwB,EAAG,GAAG,OAAO,CAAC;CAE1D,IADA,AAAU,MAAM,EAAM,GAAU,EAAI,GAChC,MAAa,KAAA,GACf,OAAO,EAAI,eAAe,sCAAsC;CAElE,IAAM,IAAS,EAAI,cAAc,GAAG;CAKpC,OAHI,EAAS,OAAK,EAAO,aAAa,QAAQ,EAAS,GAAG,GAC1D,EAAO,aAAa,SAAS,wCAAwC,GACrE,EAAO,cAAc,GACd;AACT;AAaA,SAAgB,EAAY,GAA2C,GAAiC,GAAmD;CACzJ,IAAM,IAAM,EAAM,mBAAmB,GAAS,CAAS;CACvD,IAAI,EAAI,WAAW,GAAG,OAAO;CAC7B,IAAI,CAAC,EAAM,SACT,MAAU,MAAM,sBAAsB;CASxC,OANE,EAAI,SAAS,KACb,EAAI,EAAE,CAAC,IAAI,SACX,EAAM,QAAQ,SAAS,EAAI,EAAE,CAAC,IAAI,OAAO,CAAK,IAEvC,EAAM,IAAI,EAAI,EAAE,CAAC,IAAI,KAAK,IAE5B;AACT;AAmBA,SAAgB,EACd,GACA,GACA,GACA,GACA,GACA,GACA,GACa;CACb,IAAM,IAAK,GACL,IAAU,EAAK,MAAM,EAAK,IAAI,IAAI,MAElC,IAAM,EAAI,cAAc,KAAK,GAE7B,IAAW,EAAG,IAAI,GAAM,EAAG,GAAG,UAAU,CAAC;CAE/C,IADI,KAAW,EAAU,YAAY,CAAG,GACpC,CAAC,GACH,OAAO,EAAI,YACT,EAAkB,GAAK,8CAA8C,CAAI,CAC3E;CAEF,IAAM,IAAM,EAAoB,GAAK,GAAI,GAAK,CAAI,GAG5C,IAA0B,EAAG,MAAM,GAAM,EAAG,GAAG,yBAAyB,GAAG,MAAM,CAAO,GAExF,IAAM,EAAqB,CAAI,GACjC,IAAS,EAAY;CACzB,AAAI,MAAW,KAAA,MAAW,IAAS,EAAE,OAAO,GAAG;CAC/C,IAAM,IAAa,EAAO,SAAS,IAC7B,IAAa,EAAM,iBAAiB,GACpC,IAAQ,EAAI,cAAc,OAAO;CAGvC,AAFC,EAAe,QAAQ,GACxB,EAAI,YAAY,CAAK,GACrB,EAAM,aAAa,QAAQ,EAAO,OAAO,EAAO,OAAO,MAAM;CAC7D,IAAM,KAAa,EAAM,aAAa,MAAM,KAAK,GAAA,CAAI,YAAY,GAC3D,IAAoB,MAAc,UAAU,MAAc,kBAE1D,IAAO,EAAG,MAAM,GAAM,EAAG,GAAG,MAAM,CAAC,KAAK,EAAe,iBAAiB;CAC9E,EAAM,aAAa,QAAQ,CAAI;CAE/B,IAAM,IAAY,EAAG,IAAI,GAAM,EAAG,GAAG,WAAW,CAAC;CAGjD,AAFA,EAAM,aAAa,aAAa,IAAY,KAAK,IAAY,EAAe,cAAc,GAE1F,MAAa,EAAW,GAAS,GAAiB,CAAG;CAErD,IAAI,IAAM,EAAG,IAAI,GAAS,GAAiB,KAAA,GAAW,CAAG;CAazD,IAZA,AACE,MAAM,EAAG,IAAI,GAAM,EAAG,GAAG,SAAS,CAAC,GAEjC,KAAO,EAAI,SAAS,EAAO,YAE7B,EAAM,QAAQ,mBAAmB,EAAI,MAAM,QAAQ,EAAO,WAAW,EAAE,CAAC,CAAC,CACtE,QAAQ,MAAM,EAAE,IACV;;EAET,EAAM,QAAQ,EAAI,SAAS,EAAI,SAAS,KAE1C,EAAM,aAAa,SAAS,CAAU,GAClC,CAAC,EAAG,SACN,MAAU,MAAM,mBAAmB;CAoIrC,OAlIK,EAAG,QAAQ,SAAU,EAAkB,GAAG,KAU/C,EAAM,iBACJ,SACA,SAAU,GAAI;EACZ,AAAI,EAAO,WACT,EAAM,aACJ,SACA,KACG,EAAM,MAAM,MAAM,EAAO,OAAO,IAC7B,kBACA,cACR;CAEJ,GACA,EACF,GACA,EAAM,iBACJ,UACA,SAAU,GAAI;EACZ,IAAI,KAAqB,EAAI,kBAAkB,GAAO;GACpD,AAAI,EAAM,YACR,EAAM,QAAQ,iBAAiB;GAEjC;EACF;EAEA,IAAI,EAAO,WAAW,CAAC,EAAM,MAAM,MAAM,EAAO,OAAO,GAAG;EAC1D,IAAM,IAAkB,CAAC;EAIzB,AAHI,MACF,EAAM,WAAW,KAEnB,EAAM,aAAa,SAAS,IAAa,cAAc;EACvD,IAAM,IAAK,EAAG,mBAAmB,GAAS,CAAe,GACrD;EACJ,AAAI,EAAO,YACT,IAAS,EAAG,IAAI,EAAM,KAAK,IAClB,EAAO,aAChB,IAAS,mBAAmB,EAAM,MAAM,QAAQ,MAAM,EAAE,CAAC,GACzD,IAAS,EAAG,IAAI,EAAO,YAAY,EAAM,KAAK,KAE9C,AAOE,IAPE,EAAO,KACA,IAAI,EACX,EAAM,MAAM,KAAK,GACjB,KAAA,GACA,EAAG,IAAI,EAAO,EAAE,CAClB,IAES,IAAI,EAAQ,EAAM,KAAK;EAGpC,IAAI,IAAK,EAAG,KAAI,MAAa,EAAG,EAAU,SAAS,EAAU,WAAW,GAAQ,EAAU,GAAG,CAAC;EAC9F,AAAI,EAAG,WAAW,MAEhB,IAAK,CAAC,EAAG,GAAS,GAAiB,GAAQ,CAAG,CAAC;EAGjD,SAAS,EAAY,GAAI,GAAgC,GAAU;GACjE,IAAM,IAAc,CAAC;;GASrB,IARA,EAAG,SAAQ,MAAM;IACf,AAAK,EAAK,SAAS,EAAG,IAAI,GAAG,KAAG,EAAK,KAAK,EAAG,IAAI,GAAG;GACtD,CAAC,GACD,EAAG,SAAQ,MAAM;;IAEf,AAAK,EAAK,SAAS,EAAG,IAAI,GAAG,KAAG,EAAK,KAAK,EAAG,IAAI,GAAG;GACtD,CAAC,GAEG,EAAK,WAAW,GAClB,MAAU,MAAM,iCAAiC;GAEnD,IAAI,CAAC,EAAG,SACN,MAAU,MAAM,mBAAmB;GAErC,IAAI,EAAK,WAAW,GAClB,OAAO,EAAG,QAAQ,OAAO,GAAI,GAAW,CAAQ;GAIlD,IAAM,IAAM,EAAK,IAAI,GACf,IAAM,EAAG,QAAO,MAAM,EAAG,IAAI,QAAQ,CAAG,GACxC,IAAM,EAAG,QAAO,MAAM,EAAG,IAAI,QAAQ,CAAG,GACxC,IAAM,EAAG,QAAO,MAAM,EAAG,IAAI,QAAQ,CAAG,GACxC,IAAM,EAAG,QAAO,MAAM,EAAG,IAAI,QAAQ,CAAG;GAC9C,EAAG,QAAQ,OAAO,GAAK,GAAY,SAAU,GAAK,GAAI,GAAM;IAC1D,AAAI,IACF,EAAW,GAAK,GAAK,CAAQ,IAE7B,EAAS,GAAK,GAAI,CAAI;GAE1B,CAAC;EACH;EAEA,EAAW,GAAI,GAAW,SAAU,GAAK,GAAI,GAAM;GAUjD,AARI,KACE,MACF,EAAM,WAAW,KAEnB,EAAM,aAAa,SAAS,CAAU,KAEtC,EAAI,YAAY,EAAkB,GAAK,CAAI,CAAC,GAE9C,EAAiB,GAAI,CAAI;EAC3B,CAAC;CACH,GACA,EACF,GACA,EAAM,iBACJ,QACA,SAAU,GAAI;EACZ,IACE,KACA,EAAM,WACN,EAAM,QAAQ,mBAAmB,QACjC;GACA,OAAO,EAAM,QAAQ;GACrB,IAAM,IAAQ,IAAI,MAAM,UAAU,EAAE,SAAS,GAAK,CAAC;GACnD,EAAM,cAAc,CAAK;EAC3B;CACF,GACA,EACF,GACO,MAjIL,EAAM,WAAW,IAChB,EAAe,QAAQ,EAAM,2BAA2B,GACrD,KAA2B,EAAM,UAAU,OAC7C,EAAI,MAAM,UAAU,SAEf;AA6HX"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../../lib/ns.cjs.js"),t=require("./fieldParams.cjs.js"),n=require("./fieldFunction.cjs.js");let r=require("solid-logic");var i=`https://www.w3.org/ns/css#`;function a(a,o){let s=
|
|
1
|
+
const e=require("../../lib/ns.cjs.js"),t=require("./fieldParams.cjs.js"),n=require("./fieldFunction.cjs.js");let r=require("solid-logic");var i=`https://www.w3.org/ns/css#`;function a(a,o){let s=n.mostSpecificClassURI(o),c=t.fieldParams[s]||{},l=r.store.any(o,e.default.ui(`style`));if(!l){c.style&&a.setAttribute(`style`,c.style);return}l.termType===`Literal`?l&&a.setAttribute(`style`,l.value):r.store.statementsMatching(l,null,null,o.doc()).forEach(e=>{if(e.predicate.uri&&e.predicate.uri.startsWith(i)){let t=e.predicate.uri.slice(26);try{a.style[t]=e.object.value}catch{console.warn(`setFieldStyle: Error setting element style ${t} to "${e.object.value}"`),console.warn(`setFieldStyle: ... Element tagName was "${a.tagName||`???`}"`)}}})}exports.setFieldStyle=a;
|
|
2
2
|
//# sourceMappingURL=formStyle.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formStyle.cjs.js","names":[],"sources":["../../../src/widgets/forms/formStyle.ts"],"sourcesContent":["import ns from '../../lib/ns'\nimport { Node } from 'rdflib'\nimport { store } from 'solid-logic'\nimport { fieldParams } from './fieldParams'\n\nimport { mostSpecificClassURI } from './fieldFunction'\n\nconst STYLE_URI_PREFIX = 'https://www.w3.org/ns/css#'\n\nexport function setFieldStyle (ele:HTMLElement, field:Node) {\n const classUri = mostSpecificClassURI(field)\n const params = fieldParams[classUri] || {}\n\n const style = store.any(field as any, ns.ui('style'))\n if (!style) {\n if (params.style) {\n ele.setAttribute('style', params.style)\n }\n return\n }\n if (style.termType === 'Literal') {\n if (style) ele.setAttribute('style', style.value)\n } else {\n const sts = store.statementsMatching(style as any, null, null, (field as any).doc())\n sts.forEach(st => {\n if (st.predicate.uri && st.predicate.uri.startsWith(STYLE_URI_PREFIX)) {\n const cssAttribute = st.predicate.uri.slice(STYLE_URI_PREFIX.length)\n try {\n ele.style[cssAttribute] = st.object.value\n } catch (_err) {\n console.warn(`setFieldStyle: Error setting element style ${cssAttribute} to \"${st.object.value}\"`)\n console.warn(`setFieldStyle: ... Element tagName was \"${ele.tagName || '???'}\"`)\n }\n }\n })\n }\n}\n"],"mappings":"0IAOA,IAAM,EAAmB,6BAEzB,SAAgB,EAAe,EAAiB,EAAY,
|
|
1
|
+
{"version":3,"file":"formStyle.cjs.js","names":[],"sources":["../../../src/widgets/forms/formStyle.ts"],"sourcesContent":["import ns from '../../lib/ns'\nimport { Node } from 'rdflib'\nimport { store } from 'solid-logic'\nimport { fieldParams } from './fieldParams'\n\nimport { mostSpecificClassURI } from './fieldFunction'\n\nconst STYLE_URI_PREFIX = 'https://www.w3.org/ns/css#'\n\nexport function setFieldStyle (ele:HTMLElement, field:Node) {\n const classUri = mostSpecificClassURI(field)\n const params = fieldParams[classUri] || {}\n\n const style = store.any(field as any, ns.ui('style'))\n if (!style) {\n if (params.style) {\n ele.setAttribute('style', params.style)\n }\n return\n }\n if (style.termType === 'Literal') {\n if (style) ele.setAttribute('style', style.value)\n } else {\n const sts = store.statementsMatching(style as any, null, null, (field as any).doc())\n sts.forEach(st => {\n if (st.predicate.uri && st.predicate.uri.startsWith(STYLE_URI_PREFIX)) {\n const cssAttribute = st.predicate.uri.slice(STYLE_URI_PREFIX.length)\n try {\n ele.style[cssAttribute] = st.object.value\n } catch (_err) {\n console.warn(`setFieldStyle: Error setting element style ${cssAttribute} to \"${st.object.value}\"`)\n console.warn(`setFieldStyle: ... Element tagName was \"${ele.tagName || '???'}\"`)\n }\n }\n })\n }\n}\n"],"mappings":"0IAOA,IAAM,EAAmB,6BAEzB,SAAgB,EAAe,EAAiB,EAAY,CAC1D,IAAM,EAAW,EAAA,qBAAqB,CAAK,EACrC,EAAS,EAAA,YAAY,IAAa,CAAC,EAEnC,EAAQ,EAAA,MAAM,IAAI,EAAc,EAAA,QAAG,GAAG,OAAO,CAAC,EACpD,GAAI,CAAC,EAAO,CACN,EAAO,OACT,EAAI,aAAa,QAAS,EAAO,KAAK,EAExC,MACF,CACI,EAAM,WAAa,UACjB,GAAO,EAAI,aAAa,QAAS,EAAM,KAAK,EAGhD,EADY,MAAM,mBAAmB,EAAc,KAAM,KAAO,EAAc,IAAI,CAClF,CAAA,CAAI,QAAQ,GAAM,CAChB,GAAI,EAAG,UAAU,KAAO,EAAG,UAAU,IAAI,WAAW,CAAgB,EAAG,CACrE,IAAM,EAAe,EAAG,UAAU,IAAI,MAAM,EAAuB,EACnE,GAAI,CACF,EAAI,MAAM,GAAgB,EAAG,OAAO,KACtC,MAAe,CACb,QAAQ,KAAK,8CAA8C,EAAa,OAAO,EAAG,OAAO,MAAM,EAAE,EACjG,QAAQ,KAAK,6CAA6C,EAAI,SAAW,MAAM,EAAE,CACnF,CACF,CACF,CAAC,CAEL"}
|
|
@@ -5,12 +5,12 @@ import { store as r } from "solid-logic";
|
|
|
5
5
|
//#region src/widgets/forms/formStyle.ts
|
|
6
6
|
var i = "https://www.w3.org/ns/css#";
|
|
7
7
|
function a(a, o) {
|
|
8
|
-
let s =
|
|
9
|
-
if (!
|
|
10
|
-
|
|
8
|
+
let s = n(o), c = t[s] || {}, l = r.any(o, e.ui("style"));
|
|
9
|
+
if (!l) {
|
|
10
|
+
c.style && a.setAttribute("style", c.style);
|
|
11
11
|
return;
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
l.termType === "Literal" ? l && a.setAttribute("style", l.value) : r.statementsMatching(l, null, null, o.doc()).forEach((e) => {
|
|
14
14
|
if (e.predicate.uri && e.predicate.uri.startsWith(i)) {
|
|
15
15
|
let t = e.predicate.uri.slice(26);
|
|
16
16
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formStyle.esm.js","names":[],"sources":["../../../src/widgets/forms/formStyle.ts"],"sourcesContent":["import ns from '../../lib/ns'\nimport { Node } from 'rdflib'\nimport { store } from 'solid-logic'\nimport { fieldParams } from './fieldParams'\n\nimport { mostSpecificClassURI } from './fieldFunction'\n\nconst STYLE_URI_PREFIX = 'https://www.w3.org/ns/css#'\n\nexport function setFieldStyle (ele:HTMLElement, field:Node) {\n const classUri = mostSpecificClassURI(field)\n const params = fieldParams[classUri] || {}\n\n const style = store.any(field as any, ns.ui('style'))\n if (!style) {\n if (params.style) {\n ele.setAttribute('style', params.style)\n }\n return\n }\n if (style.termType === 'Literal') {\n if (style) ele.setAttribute('style', style.value)\n } else {\n const sts = store.statementsMatching(style as any, null, null, (field as any).doc())\n sts.forEach(st => {\n if (st.predicate.uri && st.predicate.uri.startsWith(STYLE_URI_PREFIX)) {\n const cssAttribute = st.predicate.uri.slice(STYLE_URI_PREFIX.length)\n try {\n ele.style[cssAttribute] = st.object.value\n } catch (_err) {\n console.warn(`setFieldStyle: Error setting element style ${cssAttribute} to \"${st.object.value}\"`)\n console.warn(`setFieldStyle: ... Element tagName was \"${ele.tagName || '???'}\"`)\n }\n }\n })\n }\n}\n"],"mappings":";;;;;AAOA,IAAM,IAAmB;AAEzB,SAAgB,EAAe,GAAiB,GAAY;
|
|
1
|
+
{"version":3,"file":"formStyle.esm.js","names":[],"sources":["../../../src/widgets/forms/formStyle.ts"],"sourcesContent":["import ns from '../../lib/ns'\nimport { Node } from 'rdflib'\nimport { store } from 'solid-logic'\nimport { fieldParams } from './fieldParams'\n\nimport { mostSpecificClassURI } from './fieldFunction'\n\nconst STYLE_URI_PREFIX = 'https://www.w3.org/ns/css#'\n\nexport function setFieldStyle (ele:HTMLElement, field:Node) {\n const classUri = mostSpecificClassURI(field)\n const params = fieldParams[classUri] || {}\n\n const style = store.any(field as any, ns.ui('style'))\n if (!style) {\n if (params.style) {\n ele.setAttribute('style', params.style)\n }\n return\n }\n if (style.termType === 'Literal') {\n if (style) ele.setAttribute('style', style.value)\n } else {\n const sts = store.statementsMatching(style as any, null, null, (field as any).doc())\n sts.forEach(st => {\n if (st.predicate.uri && st.predicate.uri.startsWith(STYLE_URI_PREFIX)) {\n const cssAttribute = st.predicate.uri.slice(STYLE_URI_PREFIX.length)\n try {\n ele.style[cssAttribute] = st.object.value\n } catch (_err) {\n console.warn(`setFieldStyle: Error setting element style ${cssAttribute} to \"${st.object.value}\"`)\n console.warn(`setFieldStyle: ... Element tagName was \"${ele.tagName || '???'}\"`)\n }\n }\n })\n }\n}\n"],"mappings":";;;;;AAOA,IAAM,IAAmB;AAEzB,SAAgB,EAAe,GAAiB,GAAY;CAC1D,IAAM,IAAW,EAAqB,CAAK,GACrC,IAAS,EAAY,MAAa,CAAC,GAEnC,IAAQ,EAAM,IAAI,GAAc,EAAG,GAAG,OAAO,CAAC;CACpD,IAAI,CAAC,GAAO;EACV,AAAI,EAAO,SACT,EAAI,aAAa,SAAS,EAAO,KAAK;EAExC;CACF;CACA,AAAI,EAAM,aAAa,YACjB,KAAO,EAAI,aAAa,SAAS,EAAM,KAAK,IAGhD,EADkB,mBAAmB,GAAc,MAAM,MAAO,EAAc,IAAI,CAClF,CAAA,CAAI,SAAQ,MAAM;EAChB,IAAI,EAAG,UAAU,OAAO,EAAG,UAAU,IAAI,WAAW,CAAgB,GAAG;GACrE,IAAM,IAAe,EAAG,UAAU,IAAI,MAAM,EAAuB;GACnE,IAAI;IACF,EAAI,MAAM,KAAgB,EAAG,OAAO;GACtC,QAAe;IAEb,AADA,QAAQ,KAAK,8CAA8C,EAAa,OAAO,EAAG,OAAO,MAAM,EAAE,GACjG,QAAQ,KAAK,6CAA6C,EAAI,WAAW,MAAM,EAAE;GACnF;EACF;CACF,CAAC;AAEL"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const e=require("../_virtual/_rolldown/runtime.cjs.js"),t=require("../lib/ns.cjs.js"),n=require("../lib/log.cjs.js"),r=require("../utils/label.cjs.js"),i=require("../utils/index.cjs.js"),a=require("../lib/debug.cjs.js"),o=require("../lib/styleConstants.cjs.js"),s=require("../lib/style.cjs.js"),c=require("./error.cjs.js"),l=require("../lib/iconBase.cjs.js"),u=require("./buttons.cjs.js"),d=require("./forms/fieldParams.cjs.js"),f=require("./forms/fieldFunction.cjs.js"),p=require("./forms/formStyle.cjs.js"),m=require("./forms/basic.cjs.js"),h=require("./forms/autocomplete/autocompleteField.cjs.js"),g=require("./multiSelect.cjs.js");require("./index.cjs.js");let _=require("rdflib");_=e.__toESM(_);let v=require("solid-logic");var y=`✓`,b=`✕`,x=`-`,S=v.store;f.field[t.default.ui(`AutocompleteField`).uri]=h.autocompleteField;function C(e,n,r,i,o,s,c){let l=s.children;for(let u=0;u<c.length;u++){let d=c[u];if(f.mostSpecificClassURI(d)===t.default.ui(`Options`).uri){let t=f.fieldFunction(e,d)(e,null,n,r,d,i,o);a.log(`Refreshing Options field by replacing it.`),s.insertBefore(t,l[u]),s.removeChild(l[u+1])}}}f.field[t.default.ui(`Form`).uri]=f.field[t.default.ui(`Group`).uri]=function(e,n,r,i,a,o,l){let u=e.createElement(`div`),d=t.default.ui;if(n&&n.appendChild(u),!a)return;let p=i.toNT()+`|`+a.toNT();if(r[p])return u.appendChild(e.createTextNode(`Group: see above `+p)),u;let m={};for(let e in r)m[e]=1;m[p]=1;let h=a.doc?a.doc():null,g=S.any(a,d(`weight`),null,h),_=g?Number(g.value):1;if(_>3||_<0)return u.appendChild(c.errorMessageBlock(e,`Form Group weight ${_} should be 0-3`));u.setAttribute(`style`,s.style.formGroupStyle[_]),u.style.display=`flex`,u.style.flexDirection=`column`,u.class=`form-weight-`+_;let v=S.any(a,d(`parts`),null,h),y;if(v?y=v.elements:(v=S.each(a,d(`part`),null,h),y=j(v)),!v)return u.appendChild(c.errorMessageBlock(e,`No parts to form! `));for(let t=0;t<y.length;t++){let n=y[t],a=f.fieldFunction(e,n);u.appendChild(a(e,null,m,i,n,o,function(t,n){t&&n&&n.widget&&n.widget===`select`&&C(e,r,i,o,l,u,y),l(t,{widget:`group`,change:n})}))}return u},f.field[t.default.ui(`Options`).uri]=function(e,n,r,i,a,o,s){let l=v.store,u=e.createElement(`div`),d=a.doc?a.doc():null,f=t.default.ui;n&&n.appendChild(u);let p=l.any(a,f(`dependingOn`));p||=t.default.rdf(`type`);let m=l.each(a,f(`case`),null,d);m||u.appendChild(c.errorMessageBlock(e,`No cases to Options form. `));let h;h=p.sameTerm(t.default.rdf(`type`))?Object.keys(l.findTypeURIs(i)).map(e=>_.sym(e)):l.each(i,p);for(let t=0;t<m.length;t++){let n=m[t],p=l.each(n,f(`for`),null,d),g=!1;for(let e=0;e<p.length;e++)for(let t of h){let n=p[e];(t.sameTerm(p)||t.termType===n.termType&&t.value===n.value)&&(g=!0)}if(g){let t=l.the(n,f(`use`));if(t)D(e,u,r,i,t,o,s);else return u.appendChild(c.errorMessageBlock(e,`No "use" part for case in form `+a)),u;break}}return u},f.field[t.default.ui(`Multiple`).uri]=function(e,o,s,d,p,m,h){function g(e){return e.map(e=>e.toString().slice(-7)).join(`, `)}async function y(){let t=V(m);if(O)L(),F.elements.push(t),await R();else{let n=A?[_.st(t,k,d,m)]:[_.st(d,k,t,m)];try{await S.updater.update([],n)}catch(t){let n=`Error adding to unordered multiple: `+t;w.appendChild(c.errorMessageBlock(e,n)),a.error(n)}z()}}function b(t){async function r(){if(O){a.log(`pre delete: `+g(F.elements));for(let e=0;e<F.elements.length;e++)if(F.elements[e].sameTerm(t)){F.elements.splice(e,1),await R();return}}else if(S.holds(d,k,t,m)){let n=[_.st(d,k,t,m)];S.updater.update(n,[],function(t,n,r){n?P.removeChild(p):P.appendChild(c.errorMessageBlock(e,`Multiple: delete failed: `+r))})}}async function i(e,n){a.log(`pre move: `+g(F.elements));let r;for(r=0;r<F.elements.length&&!F.elements[r].sameTerm(t);r++);if(r===F.elements.length&&alert(`list move: not found element for `+t),n){if(r===0){alert(`@@ boop - already at top -temp message`);return}F.elements.splice(r-1,2,F.elements[r],F.elements[r-1])}else{if(r===F.elements.length-1){alert(`@@ boop - already at bottom -temp message`);return}F.elements.splice(r,2,F.elements[r+1],F.elements[r])}await R()}function o(e,n){a.log(`Item done callback for item ${t.toString()}`),e||a.error(` Item done callback: Error: `+n),h(e,n)}n.debug(`Multiple: render object: `+t);let p=f.fieldFunction(e,N)(e,null,s,t,N,m,o);if(p.subject=t,S.updater.editable(m.uri)&&(u.deleteButtonWithCheck(e,p,j,r),O)){let t=e.createElement(`div`);t.style.display=`grid`,t.style.gridTemplateColumns=`auto 3em`,t.style.gridTemplateRows=`50% 50%`;let n=u.button(e,l.icons.iconBase+`noun_1369237.svg`,`Move Up`,async e=>i(e,!0)),r=u.button(e,l.icons.iconBase+`noun_1369241.svg`,`Move Down`,async e=>i(e,!1)),a=e.createElement(`div`);return a.appendChild(p),t.appendChild(a),t.appendChild(n),t.appendChild(r),n.style.gridColumn=2,r.style.gridColumn=2,n.style.gridRow=1,r.style.padding=`0em`,n.style.padding=`0em`,r.style.gridRow=2,a.style.gridColumn=1,a.style.gridRowStart=`span 2`,t}return p}let x=l.icons.iconBase+`noun_19460_green.svg`,S=v.store,C=p.doc?p.doc():null,w=e.createElement(`div`),T=w,E=t.default.ui;o&&o.appendChild(w);let D=S.any(p,E(`ordered`)),O=D?_.Node.toJS(D):!1,k=S.any(p,E(`property`)),A=S.anyJS(p,E(`reverse`),null,C);if(!k)return w.appendChild(c.errorMessageBlock(e,`No property to multiple: `+p)),T;let j=S.any(p,E(`label`));j||=r.label(k);let M=S.any(p,E(`min`));M=M?0+M.value:0;let N=S.any(p,E(`part`));if(!N)return w.appendChild(c.errorMessageBlock(e,`No part to multiple: `+p)),T;let P=w.appendChild(e.createElement(`div`));P.style.display=`flex`,P.style.flexDirection=`column`;let F,I;if(I=A?S.any(null,k,d,m):S.any(d,k,null,m),O?(F=A?S.any(null,k,d,m):S.any(d,k,null,m),I=F?F.elements:[]):(I=A?S.each(null,k,d,m):S.each(d,k,null,m),F=null),S.updater.editable(m.uri)){let t=w.appendChild(e.createElement(`div`));t.style.padding=`0.5em`;let n=t.appendChild(e.createElement(`img`));n.setAttribute(`src`,x),n.setAttribute(`style`,`margin: 0.2em; width: 1.5em; height:1.5em`),n.title=`Click to add another `+j;let r=e.createElement(`span`);r.textContent=(I.length===0?`Add another `:`Add `)+j,t.addEventListener(`click`,async e=>{await y()},!0),t.appendChild(r)}function L(){F||(F=new _.Collection,A?S.add(F,k,d,m):S.add(d,k,F,m))}async function R(){a.log(`save list: `+g(F.elements)),L();try{await S.fetcher.putBack(m)}catch(t){w.appendChild(c.errorMessageBlock(e,`Error trying to put back a list: `+t));return}z()}function z(){let e;if(O){let t=A?S.the(null,k,d,m):S.the(d,k,null,m);e=t?t.elements:[]}else e=A?S.each(null,k,d,m):S.each(d,k,null,m),e.sort();i.syncTableToArrayReOrdered(P,e,b)}P.refresh=z,z();async function B(){let e=M-I.length;if(e>0){for(let t=0;t<e;t++)a.log(`Adding extra: min `+M),await y();await R()}}return B().then(()=>{a.log(` Multiple render: async stuff ok`)},e=>{a.error(` Multiple render: async stuff fails. #### `,e)}),T},f.field[t.default.ui(`PhoneField`).uri]=m.basicField,f.field[t.default.ui(`EmailField`).uri]=m.basicField,f.field[t.default.ui(`ColorField`).uri]=m.basicField,f.field[t.default.ui(`DateField`).uri]=m.basicField,f.field[t.default.ui(`DateTimeField`).uri]=m.basicField,f.field[t.default.ui(`TimeField`).uri]=m.basicField,f.field[t.default.ui(`NumericField`).uri]=m.basicField,f.field[t.default.ui(`IntegerField`).uri]=m.basicField,f.field[t.default.ui(`DecimalField`).uri]=m.basicField,f.field[t.default.ui(`FloatField`).uri]=m.basicField,f.field[t.default.ui(`TextField`).uri]=m.basicField,f.field[t.default.ui(`SingleLineTextField`).uri]=m.basicField,f.field[t.default.ui(`NamedNodeURIField`).uri]=m.basicField,f.field[t.default.ui(`MultiLineTextField`).uri]=function(e,n,r,i,a,s,l){let u=t.default.ui,d=v.store,f=a.doc?a.doc():null,p=d.any(a,u(`property`));if(!p)return c.errorMessageBlock(e,`No property to text field: `+a);let h=e.createElement(`div`);h.style.display=`flex`,h.style.flexDirection=`row`;let g=h.appendChild(e.createElement(`div`));g.style.width=o.default.formFieldNameBoxWidth;let _=h.appendChild(e.createElement(`div`));g.appendChild(m.fieldLabel(e,p,a)),s=m.fieldStore(i,p,s);let y=d.anyJS(i,p,null,s)||``,b=d.updater.editable(s.uri),x=a&&d.anyJS(a,t.default.ui(`suppressEmptyUneditable`),null,f);!b&&x&&y===``&&(h.style.display=`none`);let S=F(e,d,i,p,s,l);return _.appendChild(S),n&&n.appendChild(h),h};function w(e,n,i,a,o,s,l,u){let d=t.default.ui,f=v.store,p=f.any(o,d(`property`));if(!p){let t=c.errorMessageBlock(e,`No property to boolean field: `+o);return n&&n.appendChild(t),t}let h=f.any(o,d(`label`));h||=r.label(p,!0),s=m.fieldStore(a,p,s);let g=f.any(a,p);g===void 0&&(g=!1);let y=_.st(a,p,!0,s),b=_.st(a,p,!1,s),x=B(e,f,h,b,y,o,s,u);return n&&n.appendChild(x),x}f.field[t.default.ui(`BooleanField`).uri]=function(e,t,n,r,i,a,o){return w(e,t,n,r,i,a,o,!1)},f.field[t.default.ui(`TristateField`).uri]=function(e,t,n,r,i,a,o){return w(e,t,n,r,i,a,o,!0)},f.field[t.default.ui(`Classifier`).uri]=function(e,r,i,a,o,l,u){let d=v.store,f=t.default.ui,p=d.any(o,f(`category`));if(!p)return c.errorMessageBlock(e,`No category for classifier: `+o);n.debug(`Classifier: dataDoc=`+l);let h=function(e,t){return u(e||e,t)},g=e.createElement(`div`);g.setAttribute(`class`,`classifierBox`);let _=e.createElement(`div`);_.setAttribute(`class`,`formFieldName classifierBox-label`),_.appendChild(m.fieldLabel(e,p,o)),g.appendChild(_);let y=e.createElement(`div`);y.setAttribute(`class`,`formFieldValue classifierBox-selectBox`);let b=z(e,d,a,p,l,h);if(b&&b.querySelectorAll){let e=b.querySelectorAll(`select`);e.length&&!d.updater.editable(l.uri)&&e.forEach(e=>{e.readOnly=!0,e.style=s.style.textInputStyleUneditable})}return y.appendChild(b),g.appendChild(y),r&&r.appendChild(g),g},f.field[t.default.ui(`Choice`).uri]=function(e,n,r,i,a,o,s){let l=t.default.ui,d=v.store,f=a.doc?a.doc():null,p,h=e.createElement(`div`);h.setAttribute(`class`,`choiceBox`),n&&n.appendChild(h);let y=e.createElement(`div`);y.setAttribute(`class`,`formFieldName choiceBox-label`),h.appendChild(y);let b=e.createElement(`div`);b.setAttribute(`class`,`formFieldValue choiceBox-selectBox`),h.appendChild(b);let x=d.any(a,l(`property`));if(!x)return h.appendChild(c.errorMessageBlock(e,`No property for Choice: `+a));y.appendChild(m.fieldLabel(e,x,a));let S=d.any(a,l(`from`));if(!S)return c.errorMessageBlock(e,`No 'from' for Choice: `+a);let C=d.any(a,l(`use`)),w={form:a,subForm:C,disambiguate:!1};function E(e){let n=[],r;n=d.each(void 0,t.default.rdf(`type`),S,f);for(let t in W(d,S,e))n.push(d.fromNT(t));if(S.sameTerm(t.default.rdfs(`Class`)))for(p in u.allClassURIs())n.push(d.sym(p));else if(S.sameTerm(t.default.rdf(`Property`))){for(p in r=u.propertyTriage(d),r.op)n.push(d.fromNT(p));for(p in r.dp)n.push(d.fromNT(p));w.disambiguate=!0}else if(S.sameTerm(t.default.owl(`ObjectProperty`))){for(p in r=u.propertyTriage(d),r.op)n.push(d.fromNT(p));w.disambiguate=!0}else if(S.sameTerm(t.default.owl(`DatatypeProperty`))){for(p in r=u.propertyTriage(d),r.dp)n.push(d.fromNT(p));w.disambiguate=!0}return n}d.any(a,l(`canMintNew`))&&(w.mint=`* Create new *`);let D=d.any(a,l(`multiselect`));D&&(w.multiSelect=!0);let O=d.each(a,l(`search-full-store`)).length?null:o,k;return b.refresh=function(){let n=d.each(i,x,null,o).map(e=>e.value),r=E(O);if(r.push(n),r=M(r),k=H(e,b,d,i,x,r,n,S,w,o,s),b.innerHTML=``,b.appendChild(k),D){let r=new g.IconicMultiSelect({placeholder:k.selected,select:k,container:b,textField:`textField`,valueField:`valueField`});r.init(),r.subscribe(function(r){if(r.action===`REMOVE_OPTION`&&(n=n.filter(function(e){return e!==r.value})),r.action===`CLEAR_ALL_OPTIONS`&&(n=[]),r.action===`ADD_OPTION`)if((r.value+``).includes(`Create new`)){let r=V(o),a=[];a.push(_.st(i,x,d.sym(r),o)),S&&a.push(_.st(r,t.default.rdf(`type`),d.sym(S),o)),C&&T(e,b,{},_.sym(r),C,o,function(t,i){t?(d.updater.update([],a,function(t,n,r){n||b.appendChild(c.errorMessageBlock(e,`Error updating select: `+r))}),n.push(r),s&&s(t,{widget:`select`,event:`new`})):b.appendChild(c.errorMessageBlock(e,`Error updating data in field of select: `+i))})}else n.push(r.value);k.update(n)})}},b.refresh(),k&&k.refresh&&k.refresh(),h};function T(e,t,n,r,i,a,o){f.fieldFunction(e,i)(e,t,n,r,i,a,o)}f.field[t.default.ui(`Comment`).uri]=f.field[t.default.ui(`Heading`).uri]=function(e,n,r,i,a,o,s){let c=t.default.ui,l=v.store,u=l.any(a,c(`contents`));u||=`Error: No contents in comment field.`;let m=a.doc?a.doc():null,h=d.fieldParams[f.mostSpecificClassURI(a)]||{},g=e.createElement(`div`);n&&n.appendChild(g);let _=g.appendChild(e.createElement(h.element));_.textContent=u,p.setFieldStyle(_,a);let y=l.anyJS(a,t.default.ui(`suppressIfUneditable`),null,m),b=l.updater.editable(o.uri);return y&&!b&&(g.style.display=`none`),g};function E(e,n,i,a,o){let s=e.createElement(`button`);return s.setAttribute(`type`,`button`),s.innerHTML=`Edit `+r.label(t.default.ui(`Form`)),s.addEventListener(`click`,function(r){D(e,n,{},i,t.default.ui(`FormForm`),a,o).setAttribute(`style`,t.default.ui(`FormForm`).sameTerm(i)?`background-color: #fee;`:`background-color: #ffffe7;`),s.parentNode.removeChild(s)},!0),s}function D(e,t,n,r,i,a,o){return f.fieldFunction(e,i)(e,t,n,r,i,a,o)}function O(e,n){let r=e.each(void 0,t.default.rdf(`range`),n);[t.default.rdfs(`comment`),t.default.dc(`title`),t.default.foaf(`name`),t.default.foaf(`homepage`)].forEach(function(e){r.push(e)});let i=e.each(void 0,t.default.rdf(`type`),n);i.length>60&&(i=i.slice(0,60));let a={};for(let t=0;t<(i.length>60?60:i.length);t++)e.statementsMatching(i[t],void 0,void 0).forEach(function(e){a[e.predicate.uri]=!0});r.forEach(function(e){a[e.uri]=!0});let o=[];for(let t in a)o.push(e.sym(t));return o}function k(e,r,i){let a=[e.sym(r)];for(;a.length>0;){let r=a.shift(),o=e.each(r,i);if(n.debug(`Lists for `+r+`, `+i+`: `+o.length),o.length!==0)return o;let s=e.each(r,t.default.rdfs(`subClassOf`));for(let e=0;e<s.length;e++)a.push(s[e]),n.debug(`findClosest: add super: `+s[e])}return[]}function A(e){let r=v.store;n.debug(`formsFor: subject=`+e);let i=r.findTypeURIs(e),a;for(a in i)n.debug(` type: `+a);let o=r.bottomTypeURIs(i),s=[];for(let e in o)n.debug(`candidatesFor: trying bottom type =`+e),s=s.concat(k(r,e,t.default.ui(`creationForm`))),s=s.concat(k(r,e,t.default.ui(`annotationForm`)));return s}function j(e){let n=e.map(function(e){return[S.any(e,t.default.ui(`sequence`))||9999,e]});return n.sort(function(e,t){return e[0]-t[0]}),n.map(function(e){return e[1]})}function M(e){let t=e.map(function(e){return[r.label(e).toLowerCase(),e]});return t.sort(),t.map(function(e){return e[1]})}function N(e,t,n,i,a,o,s,c){let l=e.createElement(`button`);return l.setAttribute(`type`,`button`),l.innerHTML=`New `+r.label(a),l.addEventListener(`click`,function(r){l.parentNode.appendChild(P(e,t,n,i,a,o,s,c))},!1),l}function P(e,i,a,s,c,l,d,p){let m=e.createElement(`form`);if(!l){let a=k(i,c.uri,t.default.ui(`creationForm`));if(a.length===0){let t=m.appendChild(e.createElement(`p`));t.textContent=`I am sorry, you need to provide information about a `+r.label(c)+` but I don't know enough information about those to ask you.`;let n=m.appendChild(e.createElement(`button`));return n.setAttribute(`type`,`button`),n.setAttribute(`style`,`float: right;`),n.innerHTML=`Goto `+r.label(c),n.addEventListener(`click`,function(t){e.outlineManager.GotoSubject(c,!0,void 0,!0,void 0)},!1),m}n.debug(`lists[0] is `+a[0]),l=a[0]}n.debug(`form is `+l),m.setAttribute(`style`,`border: 0.05em solid ${o.default.formBorderColor}; color: ${o.default.formBorderColor}`),m.innerHTML=`<h3>New `+r.label(c)+`</h3>`;let h=f.fieldFunction(e,l),g=V(d),v=!1,y=function(n,r){if(!n)return p(n,r);let o=[];a&&!i.holds(a,s,g,d)&&o.push(_.st(a,s,g,d)),a&&!i.holds(g,t.default.rdf(`type`),c,d)&&o.push(_.st(g,t.default.rdf(`type`),c,d)),o.length?i.updater.update([],o,b):p(!0,r),v||=m.appendChild(u.linkButton(e,g))};function b(e,t,n){return p(t,n)}n.info(`paneUtils Object is `+g);let x=h(e,m,{},g,l,d,y);return u.removeButton(e,x).setAttribute(`style`,`float: right;`),m.AJAR_subject=g,m}function F(e,t,n,r,i,a){let l=e.createElement(`div`),d=t.anyJS(n,r,null,i)||``,f=e.createElement(`textarea`);l.appendChild(f),f.rows=d?d.split(`
|
|
1
|
+
const e=require("../_virtual/_rolldown/runtime.cjs.js"),t=require("../lib/ns.cjs.js"),n=require("../lib/log.cjs.js"),r=require("../utils/label.cjs.js"),i=require("../utils/index.cjs.js"),a=require("../lib/debug.cjs.js"),o=require("../lib/styleConstants.cjs.js"),s=require("../lib/style.cjs.js"),c=require("./error.cjs.js"),l=require("../lib/iconBase.cjs.js"),u=require("./buttons.cjs.js"),d=require("./forms/fieldParams.cjs.js"),f=require("./forms/fieldFunction.cjs.js"),p=require("./forms/formStyle.cjs.js"),m=require("./forms/basic.cjs.js"),h=require("./forms/autocomplete/autocompleteField.cjs.js"),g=require("./multiSelect.cjs.js");require("./index.cjs.js");let _=require("rdflib");_=e.__toESM(_);let v=require("solid-logic");var y=`✓`,b=`✕`,x=`-`,S=v.store;f.field[t.default.ui(`AutocompleteField`).uri]=h.autocompleteField;function C(e,n,r,i,o,s,c){let l=s.children;for(let u=0;u<c.length;u++){let d=c[u];if(f.mostSpecificClassURI(d)===t.default.ui(`Options`).uri){let t=f.fieldFunction(e,d)(e,null,n,r,d,i,o);a.log(`Refreshing Options field by replacing it.`),s.insertBefore(t,l[u]),s.removeChild(l[u+1])}}}f.field[t.default.ui(`Form`).uri]=f.field[t.default.ui(`Group`).uri]=function(e,n,r,i,a,o,l){let u=e.createElement(`div`),d=t.default.ui;if(n&&n.appendChild(u),!a)return;let p=i.toNT()+`|`+a.toNT();if(r[p])return u.appendChild(e.createTextNode(`Group: see above `+p)),u;let m={};for(let e in r)m[e]=1;m[p]=1;let h=a.doc?a.doc():null,g=S.any(a,d(`weight`),null,h),_=g?Number(g.value):1;if(_>3||_<0)return u.appendChild(c.errorMessageBlock(e,`Form Group weight ${_} should be 0-3`));u.setAttribute(`style`,s.style.formGroupStyle[_]),u.style.display=`flex`,u.style.flexDirection=`column`,u.class=`form-weight-`+_;let v=S.any(a,d(`parts`),null,h),y;if(v?y=v.elements:(v=S.each(a,d(`part`),null,h),y=j(v)),!v)return u.appendChild(c.errorMessageBlock(e,`No parts to form! `));for(let t=0;t<y.length;t++){let n=y[t],a=f.fieldFunction(e,n);u.appendChild(a(e,null,m,i,n,o,function(t,n){t&&n&&n.widget&&n.widget===`select`&&C(e,r,i,o,l,u,y),l(t,{widget:`group`,change:n})}))}return u},f.field[t.default.ui(`Options`).uri]=function(e,n,r,i,a,o,s){let l=v.store,u=e.createElement(`div`),d=a.doc?a.doc():null,f=t.default.ui;n&&n.appendChild(u);let p=l.any(a,f(`dependingOn`));p||=t.default.rdf(`type`);let m=l.each(a,f(`case`),null,d);m||u.appendChild(c.errorMessageBlock(e,`No cases to Options form. `));let h;h=p.sameTerm(t.default.rdf(`type`))?Object.keys(l.findTypeURIs(i)).map(e=>_.sym(e)):l.each(i,p);for(let t=0;t<m.length;t++){let n=m[t],p=l.each(n,f(`for`),null,d),g=!1;for(let e=0;e<p.length;e++)for(let t of h){let n=p[e];(t.sameTerm(p)||t.termType===n.termType&&t.value===n.value)&&(g=!0)}if(g){let t=l.the(n,f(`use`));if(t)D(e,u,r,i,t,o,s);else return u.appendChild(c.errorMessageBlock(e,`No "use" part for case in form `+a)),u;break}}return u},f.field[t.default.ui(`Multiple`).uri]=function(e,o,s,d,p,m,h){function g(e){return e.map(e=>e.toString().slice(-7)).join(`, `)}async function y(){let t=V(m);if(O)L(),F.elements.push(t),await R();else{let n=A?[_.st(t,k,d,m)]:[_.st(d,k,t,m)];try{await S.updater.update([],n)}catch(t){let n=`Error adding to unordered multiple: `+t;w.appendChild(c.errorMessageBlock(e,n)),a.error(n)}z()}}function b(t){async function r(){if(O){a.log(`pre delete: `+g(F.elements));for(let e=0;e<F.elements.length;e++)if(F.elements[e].sameTerm(t)){F.elements.splice(e,1),await R();return}}else if(S.holds(d,k,t,m)){let n=[_.st(d,k,t,m)];S.updater.update(n,[],function(t,n,r){n?P.removeChild(p):P.appendChild(c.errorMessageBlock(e,`Multiple: delete failed: `+r))})}}async function i(e,n){a.log(`pre move: `+g(F.elements));let r;for(r=0;r<F.elements.length&&!F.elements[r].sameTerm(t);r++);if(r===F.elements.length&&alert(`list move: not found element for `+t),n){if(r===0){alert(`@@ boop - already at top -temp message`);return}F.elements.splice(r-1,2,F.elements[r],F.elements[r-1])}else{if(r===F.elements.length-1){alert(`@@ boop - already at bottom -temp message`);return}F.elements.splice(r,2,F.elements[r+1],F.elements[r])}await R()}function o(e,n){a.log(`Item done callback for item ${t.toString()}`),e||a.error(` Item done callback: Error: `+n),h(e,n)}n.debug(`Multiple: render object: `+t);let p=f.fieldFunction(e,N)(e,null,s,t,N,m,o);if(p.subject=t,S.updater.editable(m.uri)&&(u.deleteButtonWithCheck(e,p,j,r),O)){let t=e.createElement(`div`);t.style.display=`grid`,t.style.gridTemplateColumns=`auto 3em`,t.style.gridTemplateRows=`50% 50%`;let n=u.button(e,l.icons.iconBase+`noun_1369237.svg`,`Move Up`,async e=>i(e,!0)),r=u.button(e,l.icons.iconBase+`noun_1369241.svg`,`Move Down`,async e=>i(e,!1)),a=e.createElement(`div`);return a.appendChild(p),t.appendChild(a),t.appendChild(n),t.appendChild(r),n.style.gridColumn=2,r.style.gridColumn=2,n.style.gridRow=1,r.style.padding=`0em`,n.style.padding=`0em`,r.style.gridRow=2,a.style.gridColumn=1,a.style.gridRowStart=`span 2`,t}return p}let x=l.icons.iconBase+`noun_19460_green.svg`,S=v.store,C=p.doc?p.doc():null,w=e.createElement(`div`),T=w,E=t.default.ui;o&&o.appendChild(w);let D=S.any(p,E(`ordered`)),O=D?_.Node.toJS(D):!1,k=S.any(p,E(`property`)),A=S.anyJS(p,E(`reverse`),null,C);if(!k)return w.appendChild(c.errorMessageBlock(e,`No property to multiple: `+p)),T;let j=S.any(p,E(`label`));j||=r.label(k);let M=S.any(p,E(`min`));M=M?0+M.value:0;let N=S.any(p,E(`part`));if(!N)return w.appendChild(c.errorMessageBlock(e,`No part to multiple: `+p)),T;let P=w.appendChild(e.createElement(`div`));P.style.display=`flex`,P.style.flexDirection=`column`;let F,I;if(I=A?S.any(null,k,d,m):S.any(d,k,null,m),O?(F=A?S.any(null,k,d,m):S.any(d,k,null,m),I=F?F.elements:[]):(I=A?S.each(null,k,d,m):S.each(d,k,null,m),F=null),S.updater.editable(m.uri)){let t=w.appendChild(e.createElement(`div`));t.style.padding=`0.5em`;let n=t.appendChild(e.createElement(`img`));n.setAttribute(`src`,x),n.setAttribute(`style`,`margin: 0.2em; width: 1.5em; height:1.5em`),n.title=`Click to add another `+j;let r=e.createElement(`span`);r.textContent=(I.length===0?`Add another `:`Add `)+j,t.addEventListener(`click`,async e=>{await y()},!0),t.appendChild(r)}function L(){F||(F=new _.Collection,A?S.add(F,k,d,m):S.add(d,k,F,m))}async function R(){a.log(`save list: `+g(F.elements)),L();try{await S.fetcher.putBack(m)}catch(t){w.appendChild(c.errorMessageBlock(e,`Error trying to put back a list: `+t));return}z()}function z(){let e;if(O){let t=A?S.the(null,k,d,m):S.the(d,k,null,m);e=t?t.elements:[]}else e=A?S.each(null,k,d,m):S.each(d,k,null,m),e.sort();i.syncTableToArrayReOrdered(P,e,b)}P.refresh=z,z();async function B(){let e=M-I.length;if(e>0){for(let t=0;t<e;t++)a.log(`Adding extra: min `+M),await y();await R()}}return B().then(()=>{a.log(` Multiple render: async stuff ok`)},e=>{a.error(` Multiple render: async stuff fails. #### `,e)}),T},f.field[t.default.ui(`PhoneField`).uri]=m.basicField,f.field[t.default.ui(`EmailField`).uri]=m.basicField,f.field[t.default.ui(`ColorField`).uri]=m.basicField,f.field[t.default.ui(`DateField`).uri]=m.basicField,f.field[t.default.ui(`DateTimeField`).uri]=m.basicField,f.field[t.default.ui(`TimeField`).uri]=m.basicField,f.field[t.default.ui(`NumericField`).uri]=m.basicField,f.field[t.default.ui(`IntegerField`).uri]=m.basicField,f.field[t.default.ui(`DecimalField`).uri]=m.basicField,f.field[t.default.ui(`FloatField`).uri]=m.basicField,f.field[t.default.ui(`TextField`).uri]=m.basicField,f.field[t.default.ui(`SingleLineTextField`).uri]=m.basicField,f.field[t.default.ui(`NamedNodeURIField`).uri]=m.basicField,f.field[t.default.ui(`MultiLineTextField`).uri]=function(e,n,r,i,a,s,l){let u=t.default.ui,d=v.store,f=a.doc?a.doc():null,p=d.any(a,u(`property`));if(!p)return c.errorMessageBlock(e,`No property to text field: `+a);let h=e.createElement(`div`);h.style.display=`flex`,h.style.flexDirection=`row`;let g=h.appendChild(e.createElement(`div`));g.style.width=o.default.formFieldNameBoxWidth;let _=h.appendChild(e.createElement(`div`));g.appendChild(m.fieldLabel(e,p,a)),s=m.fieldStore(i,p,s);let y=d.anyJS(i,p,null,s)||``,b=d.updater.editable(s.uri),x=a&&d.anyJS(a,t.default.ui(`suppressEmptyUneditable`),null,f);!b&&x&&y===``&&(h.style.display=`none`);let S=F(e,d,i,p,s,l);return _.appendChild(S),n&&n.appendChild(h),h};function w(e,n,i,a,o,s,l,u){let d=t.default.ui,f=v.store,p=f.any(o,d(`property`));if(!p){let t=c.errorMessageBlock(e,`No property to boolean field: `+o);return n&&n.appendChild(t),t}let h=f.any(o,d(`label`));h||=r.label(p,!0),s=m.fieldStore(a,p,s);let g=f.any(a,p);g===void 0&&(g=!1);let y=_.st(a,p,!0,s),b=_.st(a,p,!1,s),x=B(e,f,h,b,y,o,s,u);return n&&n.appendChild(x),x}f.field[t.default.ui(`BooleanField`).uri]=function(e,t,n,r,i,a,o){return w(e,t,n,r,i,a,o,!1)},f.field[t.default.ui(`TristateField`).uri]=function(e,t,n,r,i,a,o){return w(e,t,n,r,i,a,o,!0)},f.field[t.default.ui(`Classifier`).uri]=function(e,r,i,a,o,l,u){let d=v.store,f=t.default.ui,p=d.any(o,f(`category`));if(!p)return c.errorMessageBlock(e,`No category for classifier: `+o);n.debug(`Classifier: dataDoc=`+l);let h=function(e,t){return u(e||e,t)},g=e.createElement(`div`);g.setAttribute(`class`,`classifierBox`);let _=e.createElement(`div`);_.setAttribute(`class`,`formFieldName classifierBox-label`),_.appendChild(m.fieldLabel(e,p,o)),g.appendChild(_);let y=e.createElement(`div`);y.setAttribute(`class`,`formFieldValue classifierBox-selectBox`);let b=z(e,d,a,p,l,h);if(b&&b.querySelectorAll){let e=b.querySelectorAll(`select`);e.length&&!d.updater.editable(l.uri)&&e.forEach(e=>{e.readOnly=!0,e.style=s.style.textInputStyleUneditable})}return y.appendChild(b),g.appendChild(y),r&&r.appendChild(g),g},f.field[t.default.ui(`Choice`).uri]=function(e,n,r,i,a,o,s){let l=t.default.ui,d=v.store,f=a.doc?a.doc():null,p,h=e.createElement(`div`);h.setAttribute(`class`,`choiceBox`),n&&n.appendChild(h);let y=e.createElement(`div`);y.setAttribute(`class`,`formFieldName choiceBox-label`),h.appendChild(y);let b=e.createElement(`div`);b.setAttribute(`class`,`formFieldValue choiceBox-selectBox`),h.appendChild(b);let x=d.any(a,l(`property`));if(!x)return h.appendChild(c.errorMessageBlock(e,`No property for Choice: `+a));y.appendChild(m.fieldLabel(e,x,a));let S=d.any(a,l(`from`));if(!S)return c.errorMessageBlock(e,`No 'from' for Choice: `+a);let C=d.any(a,l(`use`)),w={form:a,subForm:C,disambiguate:!1};function E(e){let n=[],r;n=d.each(void 0,t.default.rdf(`type`),S,f);for(let t in W(d,S,e))n.push(d.fromNT(t));if(S.sameTerm(t.default.rdfs(`Class`)))for(p in u.allClassURIs())n.push(d.sym(p));else if(S.sameTerm(t.default.rdf(`Property`))){for(p in r=u.propertyTriage(d),r.op)n.push(d.fromNT(p));for(p in r.dp)n.push(d.fromNT(p));w.disambiguate=!0}else if(S.sameTerm(t.default.owl(`ObjectProperty`))){for(p in r=u.propertyTriage(d),r.op)n.push(d.fromNT(p));w.disambiguate=!0}else if(S.sameTerm(t.default.owl(`DatatypeProperty`))){for(p in r=u.propertyTriage(d),r.dp)n.push(d.fromNT(p));w.disambiguate=!0}return n}d.any(a,l(`canMintNew`))&&(w.mint=`* Create new *`);let D=d.any(a,l(`multiselect`));D&&(w.multiSelect=!0);let O=d.each(a,l(`search-full-store`)).length?null:o,k;return b.refresh=function(){let n=d.each(i,x,null,o).map(e=>e.value),r=E(O);if(r.push(n),r=M(r),k=H(e,b,d,i,x,r,n,S,w,o,s),b.innerHTML=``,b.appendChild(k),D){let r=new g.IconicMultiSelect({placeholder:k.selected,select:k,container:b,textField:`textField`,valueField:`valueField`});r.init(),r.subscribe(function(r){if(r.action===`REMOVE_OPTION`&&(n=n.filter(function(e){return e!==r.value})),r.action===`CLEAR_ALL_OPTIONS`&&(n=[]),r.action===`ADD_OPTION`)if((r.value+``).includes(`Create new`)){let r=V(o),a=[];a.push(_.st(i,x,d.sym(r),o)),S&&a.push(_.st(r,t.default.rdf(`type`),d.sym(S),o)),C&&T(e,b,{},_.sym(r),C,o,function(t,i){t?(d.updater.update([],a,function(t,n,r){n||b.appendChild(c.errorMessageBlock(e,`Error updating select: `+r))}),n.push(r),s&&s(t,{widget:`select`,event:`new`})):b.appendChild(c.errorMessageBlock(e,`Error updating data in field of select: `+i))})}else n.push(r.value);k.update(n)})}},b.refresh(),k&&k.refresh&&k.refresh(),h};function T(e,t,n,r,i,a,o){f.fieldFunction(e,i)(e,t,n,r,i,a,o)}f.field[t.default.ui(`Comment`).uri]=f.field[t.default.ui(`Heading`).uri]=function(e,n,r,i,a,o,s){let c=t.default.ui,l=v.store,u=l.any(a,c(`contents`));u||=`Error: No contents in comment field.`;let m=a.doc?a.doc():null,h=f.mostSpecificClassURI(a),g=d.fieldParams[h]||{},_=e.createElement(`div`);n&&n.appendChild(_);let y=_.appendChild(e.createElement(g.element));y.textContent=u,p.setFieldStyle(y,a);let b=l.anyJS(a,t.default.ui(`suppressIfUneditable`),null,m),x=l.updater.editable(o.uri);return b&&!x&&(_.style.display=`none`),_};function E(e,n,i,a,o){let s=e.createElement(`button`);return s.setAttribute(`type`,`button`),s.innerHTML=`Edit `+r.label(t.default.ui(`Form`)),s.addEventListener(`click`,function(r){D(e,n,{},i,t.default.ui(`FormForm`),a,o).setAttribute(`style`,t.default.ui(`FormForm`).sameTerm(i)?`background-color: #fee;`:`background-color: #ffffe7;`),s.parentNode.removeChild(s)},!0),s}function D(e,t,n,r,i,a,o){return f.fieldFunction(e,i)(e,t,n,r,i,a,o)}function O(e,n){let r=e.each(void 0,t.default.rdf(`range`),n);[t.default.rdfs(`comment`),t.default.dc(`title`),t.default.foaf(`name`),t.default.foaf(`homepage`)].forEach(function(e){r.push(e)});let i=e.each(void 0,t.default.rdf(`type`),n);i.length>60&&(i=i.slice(0,60));let a={};for(let t=0;t<(i.length>60?60:i.length);t++)e.statementsMatching(i[t],void 0,void 0).forEach(function(e){a[e.predicate.uri]=!0});r.forEach(function(e){a[e.uri]=!0});let o=[];for(let t in a)o.push(e.sym(t));return o}function k(e,r,i){let a=[e.sym(r)];for(;a.length>0;){let r=a.shift(),o=e.each(r,i);if(n.debug(`Lists for `+r+`, `+i+`: `+o.length),o.length!==0)return o;let s=e.each(r,t.default.rdfs(`subClassOf`));for(let e=0;e<s.length;e++)a.push(s[e]),n.debug(`findClosest: add super: `+s[e])}return[]}function A(e){let r=v.store;n.debug(`formsFor: subject=`+e);let i=r.findTypeURIs(e),a;for(a in i)n.debug(` type: `+a);let o=r.bottomTypeURIs(i),s=[];for(let e in o)n.debug(`candidatesFor: trying bottom type =`+e),s=s.concat(k(r,e,t.default.ui(`creationForm`))),s=s.concat(k(r,e,t.default.ui(`annotationForm`)));return s}function j(e){let n=e.map(function(e){return[S.any(e,t.default.ui(`sequence`))||9999,e]});return n.sort(function(e,t){return e[0]-t[0]}),n.map(function(e){return e[1]})}function M(e){let t=e.map(function(e){return[r.label(e).toLowerCase(),e]});return t.sort(),t.map(function(e){return e[1]})}function N(e,t,n,i,a,o,s,c){let l=e.createElement(`button`);return l.setAttribute(`type`,`button`),l.innerHTML=`New `+r.label(a),l.addEventListener(`click`,function(r){l.parentNode.appendChild(P(e,t,n,i,a,o,s,c))},!1),l}function P(e,i,a,s,c,l,d,p){let m=e.createElement(`form`);if(!l){let a=k(i,c.uri,t.default.ui(`creationForm`));if(a.length===0){let t=m.appendChild(e.createElement(`p`));t.textContent=`I am sorry, you need to provide information about a `+r.label(c)+` but I don't know enough information about those to ask you.`;let n=m.appendChild(e.createElement(`button`));return n.setAttribute(`type`,`button`),n.setAttribute(`style`,`float: right;`),n.innerHTML=`Goto `+r.label(c),n.addEventListener(`click`,function(t){e.outlineManager.GotoSubject(c,!0,void 0,!0,void 0)},!1),m}n.debug(`lists[0] is `+a[0]),l=a[0]}n.debug(`form is `+l),m.setAttribute(`style`,`border: 0.05em solid ${o.default.formBorderColor}; color: ${o.default.formBorderColor}`),m.innerHTML=`<h3>New `+r.label(c)+`</h3>`;let h=f.fieldFunction(e,l),g=V(d),v=!1,y=function(n,r){if(!n)return p(n,r);let o=[];a&&!i.holds(a,s,g,d)&&o.push(_.st(a,s,g,d)),a&&!i.holds(g,t.default.rdf(`type`),c,d)&&o.push(_.st(g,t.default.rdf(`type`),c,d)),o.length?i.updater.update([],o,b):p(!0,r),v||=m.appendChild(u.linkButton(e,g))};function b(e,t,n){return p(t,n)}n.info(`paneUtils Object is `+g);let x=h(e,m,{},g,l,d,y);return u.removeButton(e,x).setAttribute(`style`,`float: right;`),m.AJAR_subject=g,m}function F(e,t,n,r,i,a){let l=e.createElement(`div`),d=t.anyJS(n,r,null,i)||``,f=e.createElement(`textarea`);l.appendChild(f),f.rows=d?d.split(`
|
|
2
2
|
`).length+2:2,f.cols=80,f.setAttribute(`style`,s.style.multilineTextInputStyle),d===null?f.select():f.value=d,l.refresh=function(){let e=t.any(n,r,null,i);e&&e.value!==f.value&&(f.value=e.value)};function p(s){h.disabled=!0,h.setAttribute(`style`,`visibility: hidden; float: right;`),f.disabled=!0,f.style.color=o.default.textInputColorPending;let u=t.statementsMatching(n,r,null,i),d=_.st(n,r,f.value,i);t.updater.update(u,d,function(t,n,r){n?(f.style.color=o.default.textInputColor,f.disabled=!1):l.appendChild(c.errorMessageBlock(e,`Error (while saving change to `+i.uri+`): `+r)),a&&a(n,r)})}let m=t.updater.editable(i.uri),h;return m?(h=u.continueButton(e,p),h.disabled=!0,h.style.visibility=`hidden`,h.style.float=`right`,l.appendChild(h),f.addEventListener(`keyup`,function(e){f.style.color=`green`,h&&(h.disabled=!1,h.style.visibility=``)},!0),f.addEventListener(`change`,p,!0)):(f.disabled=!0,f.style.backgroundColor=o.default.textInputBackgroundColorUneditable),l}function I(e,o,l,u,d,p,m,h){n.debug(`Select list length now `+d.length);let g=0,v={},y=o.updater.editable(m.uri);for(let e=0;e<d.length;e++){let t=d[e];t.uri||a.warn(`makeSelectForClassifierOptions: option does not have an uri: ${t}, with predicate: ${u}`),!(!t.uri||t.uri in v)&&(v[t.uri]=!0,g++)}if(g===0&&!p.mint)return c.errorMessageBlock(e,`Can't do selector with no options, subject= `+l+` property = `+u+`.`);n.debug(`makeSelectForClassifierOptions: dataDoc=`+m);let b,x=function(){return b={},u.sameTerm(t.default.rdf(`type`))?b=o.findTypeURIs(l):o.each(l,u,null,m).forEach(function(e){b[e.uri]=!0}),b};b=x();let S=function(t){C.disabled=!0;let r=[],i=[],a=function(e){o.holds(l,u,e,m)&&r.push(_.st(l,u,e,m))},s;for(let t=0;t<C.options.length;t++){let n=C.options[t];if(n.selected&&n.AJAR_mint){if(p.mintClass){let t=P(e,o,l,u,p.mintClass,null,m,function(e,t){e||h(e,t,{change:`new`})});C.parentNode.appendChild(t),s=t.AJAR_subject}else s=V(m);i.push(_.st(l,u,s,m)),p.mintStatementsFun&&(i=i.concat(p.mintStatementsFun(s)))}n.AJAR_uri&&(n.selected&&!(n.AJAR_uri in b)&&i.push(_.st(l,u,o.sym(n.AJAR_uri),m)),!n.selected&&n.AJAR_uri in b&&a(o.sym(n.AJAR_uri)),n.selected&&(C.currentURI=n.AJAR_uri))}let d=C.subSelect;for(;d&&d.currentURI;)a(o.sym(d.currentURI)),d=d.subSelect;for(d=C.superSelect;d&&d.currentURI;)a(o.sym(d.currentURI)),d=d.superSelect;function g(e,t){h(e,{widget:`select`,event:`new`})}n.info(`makeSelectForClassifierOptions: data doc = `+m),o.updater.update(r,i,function(t,n,r){if(b=x(),n)C.disabled=!1,s&&f.fieldFunction(e,p.subForm)(e,C.parentNode,{},s,p.subForm,m,g);else return C.parentNode.appendChild(c.errorMessageBlock(e,`Error updating data in select: `+r));h&&h(n,{widget:`select`,event:`change`})})},C=e.createElement(`select`);C.setAttribute(`style`,s.style.formSelectStyle),p.multiple&&C.setAttribute(`multiple`,`true`),C.currentURI=null,C.refresh=function(){b=x();for(let e=0;e<C.children.length;e++){let t=C.children[e];t.AJAR_uri&&(t.selected=t.AJAR_uri in b)}C.disabled=!1};for(let t in v){let n=o.sym(t),a=e.createElement(`option`);p.disambiguate?a.appendChild(e.createTextNode(i.labelWithOntology(n,!0))):a.appendChild(e.createTextNode(r.label(n,!0)));let s=o.any(n,o.sym(`http://www.w3.org/ns/ui#backgroundColor`));s&&a.setAttribute(`style`,`background-color: `+s.value+`; `),a.AJAR_uri=t,t in b&&(a.setAttribute(`selected`,`true`),C.currentURI=t),C.appendChild(a)}if(y&&p.mint){let t=e.createElement(`option`);t.appendChild(e.createTextNode(p.mint)),t.AJAR_mint=!0,C.insertBefore(t,C.firstChild)}if(C.currentURI==null&&!p.multiple){let t=e.createElement(`option`);t.appendChild(e.createTextNode(p.nullLabel)),C.insertBefore(t,C.firstChild),t.selected=!0}return y&&C.addEventListener(`change`,S,!1),C}function L(e,o,l,u,d,f,p,m){n.debug(`Select list length now `+d.length);let h=0,g={},v=o.updater.editable(p.uri);for(let e=0;e<d.length;e++){let t=d[e];t.uri||a.warn(`makeSelectForOptions: option does not have an uri: ${t}, with predicate: ${u}`),!(!t.uri||t.uri in g)&&(g[t.uri]=!0,h++)}if(h===0)return c.errorMessageBlock(e,`Can't do selector with no options, subject= `+l+` property = `+u+`.`);n.debug(`makeSelectForOptions: dataDoc=`+p);let y,b=function(){return y={},u.sameTerm(t.default.rdf(`type`))?y=o.findTypeURIs(l):o.each(l,u,null,p).forEach(function(e){e.uri&&(y[e.uri]=!0)}),y};y=b();let x=function(t){S.disabled=!0;let r=[],i=[],a=function(e){o.holds(l,u,e,p)&&r.push(_.st(l,u,e,p))};for(let e=0;e<S.options.length;e++){let t=S.options[e];t.AJAR_uri&&(t.selected&&!(t.AJAR_uri in y)&&i.push(_.st(l,u,o.sym(t.AJAR_uri),p)),!t.selected&&t.AJAR_uri in y&&a(o.sym(t.AJAR_uri)),t.selected&&(S.currentURI=t.AJAR_uri))}let s=S.subSelect;for(;s&&s.currentURI;)a(o.sym(s.currentURI)),s=s.subSelect;for(s=S.superSelect;s&&s.currentURI;)a(o.sym(s.currentURI)),s=s.superSelect;n.info(`selectForOptions: data doc = `+p),o.updater.update(r,i,function(t,n,r){if(y=b(),n)S.disabled=!1;else return S.parentNode.appendChild(c.errorMessageBlock(e,`Error updating data in select: `+r));m&&m(n,{widget:`select`,event:`change`})})},S=e.createElement(`select`);S.setAttribute(`style`,s.style.formSelectStyle),S.currentURI=null,S.refresh=function(){y=b();for(let e=0;e<S.children.length;e++){let t=S.children[e];t.AJAR_uri&&(t.selected=t.AJAR_uri in y)}S.disabled=!1};for(let t in g){let n=o.sym(t),a=e.createElement(`option`);f.disambiguate?a.appendChild(e.createTextNode(i.labelWithOntology(n,!0))):a.appendChild(e.createTextNode(r.label(n,!0)));let s=o.any(n,o.sym(`http://www.w3.org/ns/ui#backgroundColor`));s&&a.setAttribute(`style`,`background-color: `+s.value+`; `),a.AJAR_uri=t,t in y&&(a.setAttribute(`selected`,`true`),S.currentURI=t),S.appendChild(a)}if(!S.currentURI){let t=e.createElement(`option`);t.appendChild(e.createTextNode(f.nullLabel)),S.insertBefore(t,S.firstChild),t.selected=!0}return v&&S.addEventListener(`change`,x,!1),S}function R(e,r,i,a,o,s){let l=r.any(a,t.default.owl(`disjointUnionOf`)),u,d=!1;return l?u=l.elements:(u=r.each(void 0,t.default.rdfs(`subClassOf`),a),d=!0),n.debug(`Select list length `+u.length),u.length===0?c.errorMessageBlock(e,`Can't do `+(d?`multiple `:``)+`selector with no subclasses of category: `+a):u.length===1?c.errorMessageBlock(e,`Can't do `+(d?`multiple `:``)+`selector with only 1 subclass of category: `+a+`:`+u[1]):I(e,r,i,t.default.rdf(`type`),u,{multiple:d,nullLabel:`* Select type *`},o,s)}function z(e,n,r,i,a,o){function s(){l&&=(c.removeChild(l),null),d.currentURI&&n.any(n.sym(d.currentURI),t.default.owl(`disjointUnionOf`))&&(l=z(e,n,r,n.sym(d.currentURI),a,o),d.subSelect=l.firstChild,d.subSelect.superSelect=d,c.appendChild(l))}let c=e.createElement(`span`),l=null;function u(e,t){e&&s(),o(e,t)}let d=R(e,n,r,i,a,u);return c.appendChild(d),s(),c}function B(e,n,r,i,o,l,u,d){let f=e.createElement(`div`),p=m.renderNameValuePair(e,n,f,l,r),h=n.updater.editable(u.uri),g=e.createElement(`button`),_=g;g.style=s.style.checkboxInputStyle,p.appendChild(g);function v(e){if(!e)return[];if(e.object)return e.why||=u,[e];if(e instanceof Array)return e;throw Error(`buildCheckboxForm: bad param `+e)}o=v(o),i=v(i);function S(e){return e.filter(e=>!n.holds(e.subject,e.predicate,e.object,e.why)).length===0}function C(){let r=S(o),a=r;if(i.length){let s=S(i);if(r&&s)return f.appendChild(c.errorMessageBlock(e,`Inconsistent data in dataDoc!
|
|
3
3
|
`+o+` and
|
|
4
|
-
`+i)),f;if(!r&&!s){r=null;let e=n.any(l,t.default.ui(`default`));a=e?e.value===`1`:d?null:!1}}g.state=r,g.textContent={true:y,false:d?b:` `,null:x}[a]}if(C(),!h)return f;let w=!1;return g.addEventListener(`click`,function(t){if(w)return;w=!0,g.disabled=!0;let r=!1,s=function(){return
|
|
4
|
+
`+i)),f;if(!r&&!s){r=null;let e=n.any(l,t.default.ui(`default`));a=e?e.value===`1`:d?null:!1}}g.state=r,g.textContent={true:y,false:d?b:` `,null:x}[a]}if(C(),!h)return f;let w=!1;return g.addEventListener(`click`,function(t){if(w)return;w=!0,g.disabled=!0;let r=!1,s=function(){return!r&&(r=!0,w=!1,g.disabled=!1,!0)},l=function(t){_.style.color=`#000`,_.style.backgroundColor=`#fee`,f.appendChild(c.errorMessageBlock(e,`Checkbox: Error updating dataDoc from ${g.state} to ${g.newState}:\n\n${t}`))};_.style.color=`#bbb`;let u=g.state===!0?o:g.state===!1?i:[];g.newState=g.state===null?!0:g.state===!0?!1:!d||null;let p=g.newState===!0?o:g.newState===!1?i:[];a.log(` Deleting ${u}`),a.log(` Inserting ${p}`);try{let e=n.updater.update(u,p,function(e,t,r){s()&&(t?(_.style.color=`#000`,g.state=g.newState,g.textContent={true:y,false:b,null:x}[g.state]):(u.why&&n.holds(u.subject,u.predicate,u.object,u.why)&&a.log(` @@@@@ weird if 409 - does hold statement`),l(r)))});e&&typeof e.then==`function`&&e.catch(function(e){s()&&l(e instanceof Error?e.message:e)}).finally(function(){s()})}catch(e){throw s(),e}},!1),f}function V(e){let t=new Date;return _.sym(e.uri+`#id`+(``+t.getTime()))}function H(e,a,o,l,u,d,f,p,m,h,g){let v={},y=o.updater.editable(h.uri);for(let e=0;e<d.length;e++){let t=d[e];!t.uri||t.uri in v||(v[t.uri]=!0)}if(Object.keys(v).length===0&&!m.mint)return c.errorMessageBlock(e,`Can't do selector with no options, subject= `+l+` property = `+u+`.`);n.debug(`makeSelectForChoice: dataDoc=`+h);function b(){let e=`--- choice ---`;return u&&u.termType!==`BlankNode`&&(e=`* Select for property: `+r.label(u)+` *`),l&&l.termType!==`BlankNode`&&(e=`* Select for `+r.label(l,!0)+` *`),e}function x(){let t=e.createElement(`option`);return t.appendChild(e.createTextNode(b())),t.disabled=!0,t.value=!0,t.hidden=!0,t.selected=!0,t}let S=function(e){a.removeChild(a.lastChild),C.refresh()},C=e.createElement(`select`);C.setAttribute(`style`,s.style.formSelectStyle),C.setAttribute(`id`,`formSelect`),C.currentURI=null;for(let e in v)C.appendChild(w(e));if(y&&m.mint){let t=e.createElement(`option`);t.appendChild(e.createTextNode(m.mint)),t.AJAR_mint=!0,C.insertBefore(t,C.firstChild)}C.children.length===0&&C.insertBefore(x(),C.firstChild),C.update=function(n){f=n;let r=[],i=[],a=function(e){o.holds(l,u,e,h)&&r.push(_.st(l,u,e,h))},s=function(e){o.holds(l,u,e,h)||i.push(_.st(l,u,e,h)),p&&!o.holds(e,t.default.rdf(`type`),o.sym(p),h)&&i.push(_.st(e,t.default.rdf(`type`),o.sym(p),h))},d=o.each(l,u,null,h).map(e=>e.value);for(let e of d)U(e,f)||a(_.sym(e));for(let e of f)e in d||s(_.sym(e));o.updater.update(r,i,function(t,n,r){if(!n)return C.parentNode.appendChild(c.errorMessageBlock(e,`Error updating data in select: `+r));C.refresh(),g&&g(n,{widget:`select`,event:`change`})})},C.refresh=function(){C.disabled=!0;let r=[],i;for(let n=0;n<C.options.length;n++){let a=C.options[n];if(a.selected&&a.AJAR_mint){if(m.mintClass){let t=P(e,o,l,u,p,m.subForm,h,function(e,t){e||g(e,t,{change:`new`})});C.parentNode.appendChild(t),i=t.AJAR_subject}else i=V(h);r.push(_.st(l,u,o.sym(i),h)),p&&r.push(_.st(i,t.default.rdf(`type`),o.sym(p),h)),m.mintStatementsFun&&(r=r.concat(m.mintStatementsFun(i))),C.currentURI=i}a.AJAR_uri&&(a.selected&&U(a.AJAR_uri,f)&&(C.currentURI=a.AJAR_uri),U(a.AJAR_uri,f)||a.removeAttribute(`selected`),U(a.AJAR_uri,f)&&a.setAttribute(`selected`,`true`))}n.info(`selectForOptions: data doc = `+h),C.currentURI&&m.subForm&&!m.multiSelect&&T(e,a,{},_.sym(C.currentURI),m.subForm,h,function(t,n){t?(o.updater.update([],r,function(t,n,r){n||a.appendChild(c.errorMessageBlock(e,`Error updating select: `+r))}),g&&g(t,{widget:`select`,event:`new`})):a.appendChild(c.errorMessageBlock(e,`Error updating data in field of select: `+n))}),C.disabled=!1};function w(t){let n=e.createElement(`option`),a=o.sym(t),s;s=m.disambiguate?i.labelWithOntology(a,!0):r.label(a,!0),n.appendChild(e.createTextNode(s)),n.setAttribute(`value`,t);let c=o.any(a,o.sym(`http://www.w3.org/ns/ui#backgroundColor`));return c&&n.setAttribute(`style`,`background-color: `+c.value+`; `),n.AJAR_uri=t,U(a.value,f)&&n.setAttribute(`selected`,`true`),n}return y&&C.addEventListener(`change`,S,!1),C}function U(e,t){let n;for(n=0;n<t.length;n++)if(t[n]===e)return!0;return!1}function W(e,t,n){let r,i,a,o,s,c,l,u,d,f,p,m={};m[t.toNT()]=!0;let h={},g=e.transitiveClosure(m,e.rdfFactory.namedNode(`http://www.w3.org/2000/01/rdf-schema#subClassOf`),!0);for(let t in g){s=e.statementsMatching(null,e.rdfFactory.namedNode(`http://www.w3.org/1999/02/22-rdf-syntax-ns#type`),e.fromNT(t),n);for(let e=0,t=s.length;e<t;e++)f=s[e],h[f.subject.toNT()]=f;c=e.each(null,e.rdfFactory.namedNode(`http://www.w3.org/2000/01/rdf-schema#domain`),e.fromNT(t),n);for(let t=0,i=c.length;t<i;t++)for(o=c[t],l=e.statementsMatching(null,o,null,n),a=0,r=l.length;a<r;a++)f=l[a],h[f.subject.toNT()]=f;u=e.each(null,e.rdfFactory.namedNode(`http://www.w3.org/2000/01/rdf-schema#range`),e.fromNT(t),n);for(let t=0,r=u.length;t<r;t++)for(o=u[t],d=e.statementsMatching(null,o,null,n),p=0,i=d.length;p<i;p++)f=d[p],h[f.object.toNT()]=f}return h}exports.appendForm=D,exports.basicField=m.basicField,exports.buildCheckboxForm=B,exports.editFormButton=E,exports.field=f.field,exports.fieldFunction=f.fieldFunction,exports.fieldLabel=m.fieldLabel,exports.fieldParams=d.fieldParams,exports.fieldStore=m.fieldStore,exports.findClosest=k,exports.formsFor=A,exports.makeDescription=F,exports.makeSelectForCategory=R,exports.makeSelectForChoice=H,exports.makeSelectForClassifierOptions=I,exports.makeSelectForNestedCategory=z,exports.makeSelectForOptions=L,exports.mostSpecificClassURI=f.mostSpecificClassURI,exports.newButton=N,exports.newThing=V,exports.promptForNew=P,exports.propertiesForClass=O,exports.renderNameValuePair=m.renderNameValuePair,exports.sortByLabel=M,exports.sortBySequence=j;
|
|
5
5
|
//# sourceMappingURL=forms.cjs.js.map
|