solid-ui 2.6.1-e5ad2945 → 2.6.1-e78cbe5
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/LICENSE.md +3 -1
- package/README.md +85 -26
- package/dist/acl/access-controller.js +238 -0
- package/dist/acl/access-controller.js.map +1 -0
- package/{lib → dist}/acl/access-groups.d.ts +2 -2
- package/{lib → dist}/acl/access-groups.d.ts.map +1 -1
- package/dist/acl/access-groups.js +323 -0
- package/dist/acl/access-groups.js.map +1 -0
- package/dist/acl/acl-control.js +173 -0
- package/dist/acl/acl-control.js.map +1 -0
- package/dist/acl/acl.js +495 -0
- package/dist/acl/acl.js.map +1 -0
- package/dist/acl/add-agent-buttons.js +217 -0
- package/dist/acl/add-agent-buttons.js.map +1 -0
- package/dist/acl/index.js +32 -0
- package/dist/acl/index.js.map +1 -0
- package/dist/acl/types.js +6 -0
- package/dist/acl/types.js.map +1 -0
- package/dist/chat/keys.js +106 -0
- package/dist/chat/keys.js.map +1 -0
- package/dist/chat/signature.js +63 -0
- package/dist/chat/signature.js.map +1 -0
- package/dist/create/create.js +249 -0
- package/dist/create/create.js.map +1 -0
- package/dist/create/index.js +5 -0
- package/dist/create/index.js.map +1 -0
- package/dist/create/types.js +2 -0
- package/dist/create/types.js.map +1 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/debug.js +13 -0
- package/dist/debug.js.map +1 -0
- package/dist/footer/index.js +67 -0
- package/dist/footer/index.js.map +1 -0
- package/dist/header/empty-profile.js +11 -0
- package/dist/header/empty-profile.js.map +1 -0
- package/dist/header/index.js +260 -0
- package/dist/header/index.js.map +1 -0
- package/dist/iconBase.js +37 -0
- package/dist/iconBase.js.map +1 -0
- package/dist/icons/solid_logo.js.map +1 -0
- package/{lib → dist}/index.d.ts +7 -9
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +102 -0
- package/dist/index.js.map +1 -0
- package/{lib → dist}/log.d.ts.map +1 -1
- package/dist/log.js +182 -0
- package/dist/log.js.map +1 -0
- package/dist/login/login.js +858 -0
- package/dist/login/login.js.map +1 -0
- package/dist/matrix/index.js +5 -0
- package/dist/matrix/index.js.map +1 -0
- package/dist/matrix/matrix.js +217 -0
- package/dist/matrix/matrix.js.map +1 -0
- package/dist/matrix/types.js +2 -0
- package/dist/matrix/types.js.map +1 -0
- package/dist/media/index.js +6 -0
- package/dist/media/index.js.map +1 -0
- package/dist/media/media-capture.js +161 -0
- package/dist/media/media-capture.js.map +1 -0
- package/dist/pad.js +775 -0
- package/dist/pad.js.map +1 -0
- package/{lib → dist}/participation.d.ts.map +1 -1
- package/dist/participation.js +184 -0
- package/dist/participation.js.map +1 -0
- package/dist/solid-ui.esm.js +25531 -0
- package/dist/solid-ui.esm.js.map +1 -0
- package/dist/solid-ui.esm.min.js +43 -0
- package/dist/solid-ui.esm.min.js.map +1 -0
- package/dist/solid-ui.js +23479 -68931
- package/dist/solid-ui.js.map +1 -1
- package/dist/solid-ui.min.js +40 -2
- package/dist/solid-ui.min.js.map +1 -1
- package/dist/tabs.js +388 -0
- package/dist/tabs.js.map +1 -0
- package/{lib → dist}/utils/headerFooterHelpers.d.ts.map +1 -1
- package/dist/utils/headerFooterHelpers.js +114 -0
- package/dist/utils/headerFooterHelpers.js.map +1 -0
- package/dist/utils/keyHelpers/accessData.js +64 -0
- package/dist/utils/keyHelpers/accessData.js.map +1 -0
- package/dist/utils/keyHelpers/acl.js +74 -0
- package/dist/utils/keyHelpers/acl.js.map +1 -0
- package/dist/utils/keyHelpers/otherHelpers.js +13 -0
- package/dist/utils/keyHelpers/otherHelpers.js.map +1 -0
- package/dist/utils/label.js +111 -0
- package/dist/utils/label.js.map +1 -0
- package/dist/versionInfo.js +31 -0
- package/dist/versionInfo.js.map +1 -0
- package/dist/widgets/buttons/iconLinks.js +44 -0
- package/dist/widgets/buttons/iconLinks.js.map +1 -0
- package/dist/widgets/buttons.js +1280 -0
- package/dist/widgets/buttons.js.map +1 -0
- package/dist/widgets/error.d.ts +14 -0
- package/dist/widgets/error.d.ts.map +1 -0
- package/dist/widgets/error.js +35 -0
- package/dist/widgets/error.js.map +1 -0
- package/dist/widgets/forms/autocomplete/autocompleteBar.js +123 -0
- package/dist/widgets/forms/autocomplete/autocompleteBar.js.map +1 -0
- package/dist/widgets/forms/autocomplete/autocompleteField.js +199 -0
- package/dist/widgets/forms/autocomplete/autocompleteField.js.map +1 -0
- package/dist/widgets/forms/autocomplete/autocompletePicker.js +256 -0
- package/dist/widgets/forms/autocomplete/autocompletePicker.js.map +1 -0
- package/dist/widgets/forms/autocomplete/language.js +104 -0
- package/dist/widgets/forms/autocomplete/language.js.map +1 -0
- package/dist/widgets/forms/autocomplete/publicData.js +460 -0
- package/dist/widgets/forms/autocomplete/publicData.js.map +1 -0
- package/dist/widgets/forms/basic.js +241 -0
- package/dist/widgets/forms/basic.js.map +1 -0
- package/dist/widgets/forms/comment.js +46 -0
- package/dist/widgets/forms/comment.js.map +1 -0
- package/dist/widgets/forms/fieldFunction.js +44 -0
- package/dist/widgets/forms/fieldFunction.js.map +1 -0
- package/dist/widgets/forms/fieldParams.js +89 -0
- package/dist/widgets/forms/fieldParams.js.map +1 -0
- package/{lib → dist}/widgets/forms/formStyle.d.ts.map +1 -1
- package/dist/widgets/forms/formStyle.js +36 -0
- package/dist/widgets/forms/formStyle.js.map +1 -0
- package/{lib → dist}/widgets/widgetHelpers.d.ts.map +1 -1
- package/{lib → dist}/widgets/widgetHelpers.js +14 -25
- package/dist/widgets/widgetHelpers.js.map +1 -0
- package/package.json +48 -52
- package/dist/789.solid-ui.min.js +0 -1
- package/dist/841.solid-ui.min.js +0 -3
- package/dist/841.solid-ui.min.js.LICENSE.txt +0 -58
- package/dist/841.solid-ui.min.js.map +0 -1
- package/dist/_2b19.solid-ui.js +0 -14
- package/dist/_2b19.solid-ui.js.map +0 -1
- package/dist/index.html +0 -1
- package/dist/solid-ui.min.js.LICENSE.txt +0 -57
- package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js +0 -12247
- package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js.map +0 -1
- package/lib/acl/access-controller.js +0 -391
- package/lib/acl/access-controller.js.map +0 -1
- package/lib/acl/access-groups.js +0 -507
- package/lib/acl/access-groups.js.map +0 -1
- package/lib/acl/acl-control.js +0 -237
- package/lib/acl/acl-control.js.map +0 -1
- package/lib/acl/acl.js +0 -517
- package/lib/acl/acl.js.map +0 -1
- package/lib/acl/add-agent-buttons.js +0 -434
- package/lib/acl/add-agent-buttons.js.map +0 -1
- package/lib/acl/index.js +0 -39
- package/lib/acl/index.js.map +0 -1
- package/lib/acl/types.js +0 -6
- package/lib/acl/types.js.map +0 -1
- package/lib/chat/bookmarks.js +0 -303
- package/lib/chat/bookmarks.js.map +0 -1
- package/lib/chat/chatLogic.js +0 -420
- package/lib/chat/chatLogic.js.map +0 -1
- package/lib/chat/dateFolder.js +0 -328
- package/lib/chat/dateFolder.js.map +0 -1
- package/lib/chat/infinite.js +0 -994
- package/lib/chat/infinite.js.map +0 -1
- package/lib/chat/keys.js +0 -232
- package/lib/chat/keys.js.map +0 -1
- package/lib/chat/message.js +0 -715
- package/lib/chat/message.js.map +0 -1
- package/lib/chat/messageTools.js +0 -538
- package/lib/chat/messageTools.js.map +0 -1
- package/lib/chat/signature.js +0 -109
- package/lib/chat/signature.js.map +0 -1
- package/lib/chat/thread.js +0 -535
- package/lib/chat/thread.js.map +0 -1
- package/lib/create/create.js +0 -242
- package/lib/create/create.js.map +0 -1
- package/lib/create/index.js +0 -11
- package/lib/create/index.js.map +0 -1
- package/lib/create/types.js +0 -6
- package/lib/create/types.js.map +0 -1
- package/lib/debug.d.ts.map +0 -1
- package/lib/debug.js +0 -30
- package/lib/debug.js.map +0 -1
- package/lib/folders.js +0 -132
- package/lib/folders.js.map +0 -1
- package/lib/footer/index.js +0 -123
- package/lib/footer/index.js.map +0 -1
- package/lib/header/empty-profile.js +0 -8
- package/lib/header/empty-profile.js.map +0 -1
- package/lib/header/index.js +0 -375
- package/lib/header/index.js.map +0 -1
- package/lib/iconBase.js +0 -44
- package/lib/iconBase.js.map +0 -1
- package/lib/icons/solid_logo.js.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -223
- package/lib/index.js.map +0 -1
- package/lib/log.js +0 -213
- package/lib/log.js.map +0 -1
- package/lib/login/login.js +0 -1241
- package/lib/login/login.js.map +0 -1
- package/lib/matrix/index.js +0 -11
- package/lib/matrix/index.js.map +0 -1
- package/lib/matrix/matrix.js +0 -216
- package/lib/matrix/matrix.js.map +0 -1
- package/lib/matrix/types.js +0 -6
- package/lib/matrix/types.js.map +0 -1
- package/lib/media/index.js +0 -12
- package/lib/media/index.js.map +0 -1
- package/lib/media/media-capture.js +0 -194
- package/lib/media/media-capture.js.map +0 -1
- package/lib/messageArea.js +0 -319
- package/lib/messageArea.js.map +0 -1
- package/lib/noun_Camera_1618446_000000.js +0 -8
- package/lib/noun_Camera_1618446_000000.js.map +0 -1
- package/lib/ns.js +0 -17
- package/lib/ns.js.map +0 -1
- package/lib/pad.js +0 -805
- package/lib/pad.js.map +0 -1
- package/lib/participation.js +0 -219
- package/lib/participation.js.map +0 -1
- package/lib/preferences.js +0 -215
- package/lib/preferences.js.map +0 -1
- package/lib/signup/config-default.js +0 -43
- package/lib/signup/config-default.js.map +0 -1
- package/lib/signup/signup.js +0 -74
- package/lib/signup/signup.js.map +0 -1
- package/lib/stories/decorators.js +0 -10
- package/lib/stories/decorators.js.map +0 -1
- package/lib/style.js +0 -158
- package/lib/style.js.map +0 -1
- package/lib/styleConstants.js +0 -35
- package/lib/styleConstants.js.map +0 -1
- package/lib/style_multiSelect.js +0 -62
- package/lib/style_multiSelect.js.map +0 -1
- package/lib/table.js +0 -1573
- package/lib/table.js.map +0 -1
- package/lib/tabs.js +0 -448
- package/lib/tabs.js.map +0 -1
- package/lib/typings.d.js +0 -2
- package/lib/typings.d.js.map +0 -1
- package/lib/utils/headerFooterHelpers.js +0 -165
- package/lib/utils/headerFooterHelpers.js.map +0 -1
- package/lib/utils/index.js +0 -527
- package/lib/utils/index.js.map +0 -1
- package/lib/utils/keyHelpers/accessData.js +0 -131
- package/lib/utils/keyHelpers/accessData.js.map +0 -1
- package/lib/utils/keyHelpers/acl.js +0 -90
- package/lib/utils/keyHelpers/acl.js.map +0 -1
- package/lib/utils/keyHelpers/otherHelpers.js +0 -21
- package/lib/utils/keyHelpers/otherHelpers.js.map +0 -1
- package/lib/utils/label.js +0 -103
- package/lib/utils/label.js.map +0 -1
- package/lib/versionInfo.d.ts +0 -32
- package/lib/versionInfo.d.ts.map +0 -1
- package/lib/versionInfo.js +0 -37
- package/lib/versionInfo.js.map +0 -1
- package/lib/widgets/buttons/iconLinks.js +0 -53
- package/lib/widgets/buttons/iconLinks.js.map +0 -1
- package/lib/widgets/buttons.js +0 -1306
- package/lib/widgets/buttons.js.map +0 -1
- package/lib/widgets/dragAndDrop.js +0 -194
- package/lib/widgets/dragAndDrop.js.map +0 -1
- package/lib/widgets/error.d.ts +0 -2
- package/lib/widgets/error.d.ts.map +0 -1
- package/lib/widgets/error.js +0 -46
- package/lib/widgets/error.js.map +0 -1
- package/lib/widgets/forms/autocomplete/autocompleteBar.js +0 -271
- package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +0 -1
- package/lib/widgets/forms/autocomplete/autocompleteField.js +0 -258
- package/lib/widgets/forms/autocomplete/autocompleteField.js.map +0 -1
- package/lib/widgets/forms/autocomplete/autocompletePicker.js +0 -436
- package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +0 -1
- package/lib/widgets/forms/autocomplete/language.js +0 -189
- package/lib/widgets/forms/autocomplete/language.js.map +0 -1
- package/lib/widgets/forms/autocomplete/publicData.js +0 -636
- package/lib/widgets/forms/autocomplete/publicData.js.map +0 -1
- package/lib/widgets/forms/basic.js +0 -254
- package/lib/widgets/forms/basic.js.map +0 -1
- package/lib/widgets/forms/comment.js +0 -54
- package/lib/widgets/forms/comment.js.map +0 -1
- package/lib/widgets/forms/fieldFunction.js +0 -52
- package/lib/widgets/forms/fieldFunction.js.map +0 -1
- package/lib/widgets/forms/fieldParams.js +0 -77
- package/lib/widgets/forms/fieldParams.js.map +0 -1
- package/lib/widgets/forms/formStyle.js +0 -44
- package/lib/widgets/forms/formStyle.js.map +0 -1
- package/lib/widgets/forms.js +0 -2045
- package/lib/widgets/forms.js.map +0 -1
- package/lib/widgets/index.js +0 -110
- package/lib/widgets/index.js.map +0 -1
- package/lib/widgets/multiSelect.js +0 -658
- package/lib/widgets/multiSelect.js.map +0 -1
- package/lib/widgets/peoplePicker.js +0 -467
- package/lib/widgets/peoplePicker.js.map +0 -1
- package/lib/widgets/widgetHelpers.js.map +0 -1
- /package/{lib → dist}/acl/access-controller.d.ts +0 -0
- /package/{lib → dist}/acl/access-controller.d.ts.map +0 -0
- /package/{lib → dist}/acl/acl-control.d.ts +0 -0
- /package/{lib → dist}/acl/acl-control.d.ts.map +0 -0
- /package/{lib → dist}/acl/acl.d.ts +0 -0
- /package/{lib → dist}/acl/acl.d.ts.map +0 -0
- /package/{lib → dist}/acl/add-agent-buttons.d.ts +0 -0
- /package/{lib → dist}/acl/add-agent-buttons.d.ts.map +0 -0
- /package/{lib → dist}/acl/index.d.ts +0 -0
- /package/{lib → dist}/acl/index.d.ts.map +0 -0
- /package/{lib → dist}/acl/types.d.ts +0 -0
- /package/{lib → dist}/acl/types.d.ts.map +0 -0
- /package/{lib → dist}/chat/keys.d.ts +0 -0
- /package/{lib → dist}/chat/keys.d.ts.map +0 -0
- /package/{lib → dist}/chat/signature.d.ts +0 -0
- /package/{lib → dist}/chat/signature.d.ts.map +0 -0
- /package/{lib → dist}/create/create.d.ts +0 -0
- /package/{lib → dist}/create/create.d.ts.map +0 -0
- /package/{lib → dist}/create/index.d.ts +0 -0
- /package/{lib → dist}/create/index.d.ts.map +0 -0
- /package/{lib → dist}/create/types.d.ts +0 -0
- /package/{lib → dist}/create/types.d.ts.map +0 -0
- /package/{lib → dist}/debug.d.ts +0 -0
- /package/{lib → dist}/footer/index.d.ts +0 -0
- /package/{lib → dist}/footer/index.d.ts.map +0 -0
- /package/{lib → dist}/header/empty-profile.d.ts +0 -0
- /package/{lib → dist}/header/empty-profile.d.ts.map +0 -0
- /package/{lib → dist}/header/index.d.ts +0 -0
- /package/{lib → dist}/header/index.d.ts.map +0 -0
- /package/{lib → dist}/iconBase.d.ts +0 -0
- /package/{lib → dist}/iconBase.d.ts.map +0 -0
- /package/{lib → dist}/icons/solid_logo.d.ts +0 -0
- /package/{lib → dist}/icons/solid_logo.d.ts.map +0 -0
- /package/{lib → dist}/icons/solid_logo.js +0 -0
- /package/{lib → dist}/log.d.ts +0 -0
- /package/{lib → dist}/login/login.d.ts +0 -0
- /package/{lib → dist}/login/login.d.ts.map +0 -0
- /package/{lib → dist}/matrix/index.d.ts +0 -0
- /package/{lib → dist}/matrix/index.d.ts.map +0 -0
- /package/{lib → dist}/matrix/matrix.d.ts +0 -0
- /package/{lib → dist}/matrix/matrix.d.ts.map +0 -0
- /package/{lib → dist}/matrix/types.d.ts +0 -0
- /package/{lib → dist}/matrix/types.d.ts.map +0 -0
- /package/{lib → dist}/media/index.d.ts +0 -0
- /package/{lib → dist}/media/index.d.ts.map +0 -0
- /package/{lib → dist}/media/media-capture.d.ts +0 -0
- /package/{lib → dist}/media/media-capture.d.ts.map +0 -0
- /package/{lib → dist}/pad.d.ts +0 -0
- /package/{lib → dist}/pad.d.ts.map +0 -0
- /package/{lib → dist}/participation.d.ts +0 -0
- /package/{lib → dist}/tabs.d.ts +0 -0
- /package/{lib → dist}/tabs.d.ts.map +0 -0
- /package/{lib → dist}/utils/headerFooterHelpers.d.ts +0 -0
- /package/{lib → dist}/utils/keyHelpers/accessData.d.ts +0 -0
- /package/{lib → dist}/utils/keyHelpers/accessData.d.ts.map +0 -0
- /package/{lib → dist}/utils/keyHelpers/acl.d.ts +0 -0
- /package/{lib → dist}/utils/keyHelpers/acl.d.ts.map +0 -0
- /package/{lib → dist}/utils/keyHelpers/otherHelpers.d.ts +0 -0
- /package/{lib → dist}/utils/keyHelpers/otherHelpers.d.ts.map +0 -0
- /package/{lib → dist}/utils/label.d.ts +0 -0
- /package/{lib → dist}/utils/label.d.ts.map +0 -0
- /package/{lib → dist}/widgets/buttons/iconLinks.d.ts +0 -0
- /package/{lib → dist}/widgets/buttons/iconLinks.d.ts.map +0 -0
- /package/{lib → dist}/widgets/buttons.d.ts +0 -0
- /package/{lib → dist}/widgets/buttons.d.ts.map +0 -0
- /package/{lib → dist}/widgets/forms/autocomplete/autocompleteBar.d.ts +0 -0
- /package/{lib → dist}/widgets/forms/autocomplete/autocompleteBar.d.ts.map +0 -0
- /package/{lib → dist}/widgets/forms/autocomplete/autocompleteField.d.ts +0 -0
- /package/{lib → dist}/widgets/forms/autocomplete/autocompleteField.d.ts.map +0 -0
- /package/{lib → dist}/widgets/forms/autocomplete/autocompletePicker.d.ts +0 -0
- /package/{lib → dist}/widgets/forms/autocomplete/autocompletePicker.d.ts.map +0 -0
- /package/{lib → dist}/widgets/forms/autocomplete/language.d.ts +0 -0
- /package/{lib → dist}/widgets/forms/autocomplete/language.d.ts.map +0 -0
- /package/{lib → dist}/widgets/forms/autocomplete/publicData.d.ts +0 -0
- /package/{lib → dist}/widgets/forms/autocomplete/publicData.d.ts.map +0 -0
- /package/{lib → dist}/widgets/forms/basic.d.ts +0 -0
- /package/{lib → dist}/widgets/forms/basic.d.ts.map +0 -0
- /package/{lib → dist}/widgets/forms/comment.d.ts +0 -0
- /package/{lib → dist}/widgets/forms/comment.d.ts.map +0 -0
- /package/{lib → dist}/widgets/forms/fieldFunction.d.ts +0 -0
- /package/{lib → dist}/widgets/forms/fieldFunction.d.ts.map +0 -0
- /package/{lib → dist}/widgets/forms/fieldParams.d.ts +0 -0
- /package/{lib → dist}/widgets/forms/fieldParams.d.ts.map +0 -0
- /package/{lib → dist}/widgets/forms/formStyle.d.ts +0 -0
- /package/{lib → dist}/widgets/widgetHelpers.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solid-ui.esm.js","mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEY;;AAEZ;AACA;AACA;AACA;;AAEA,SAAS,mBAAO,CAAC,GAAS;AAC1B,cAAc,kCAAuB;AACrC,gBAAgB,mBAAO,CAAC,GAAa;;AAErC;AACA;AACA;AACA;;AAEA,mCAAmC,SAAS;AAC5C;;AAEA;AACA;AACA;AACA;;AAEA,eAAe;AACf,gBAAgB,KAAK;AACrB,mBAAmB;AACnB,iBAAiB;AACjB,kBAAkB;AAClB,cAAc;AACd,aAAa;AACb,2BAA2B;;AAE3B;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,4BAA4B;AAC5B;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB,iBAAiB;AACrC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;AClNA;AACA;AACA;AACA,iCAAiC,yBAAyB,SAAS,yBAAyB,kB;;;;;;;ACH5F;AACA;AACA;AACA;AA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EA,4BAA4B,oBAAoB;AAChD;AACA;AACA,wBAAwB;AACxB;AACA;AACA,uBAAuB;AACvB;AACA;AACA,uBAAuB;AACvB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yCAAqC;;;;;;;;ACXrC,oBAAoB,mBAAO,CAAC,GAAoB;AAChD,kBAAkB,mBAAO,CAAC,GAAkB;AAC5C,uBAAuB,mBAAO,CAAC,GAAuB;AACtD,0BAA0B,mBAAO,CAAC,GAA0B;AAC5D,+BAA+B,mBAAO,CAAC,GAA+B;AACtE,sBAAsB,mBAAO,CAAC,GAAsB;AACpD,wBAAwB,mBAAO,CAAC,GAAwB;AACxD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG,EAAE,yBAAyB,SAAS,yBAAyB;AAChE;AACA,sCAAsC,yBAAyB,SAAS,yBAAyB,kB;;;;;;;AC5EjG;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,GAAG,EAAE,yBAAyB,SAAS,yBAAyB;AAChE;AACA,0BAA0B,yBAAyB,SAAS,yBAAyB,kB;;;;;;;ACTrF;;AAEA,cAAc,mBAAO,CAAC,GAA+B;AACrD;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,IAAI;AACJ;AACA;AACA;;;;;;;;ACdA,oBAAoB,mBAAO,CAAC,GAAoB;AAChD,wBAAwB,mBAAO,CAAC,GAAwB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;AACH;AACA,gCAAgC,yBAAyB,SAAS,yBAAyB,kB;;;;;;;;;;;;;;AChC3F,0BAA0B,mBAAO,CAAC,GAA0B;AAC5D;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,oCAAoC,yBAAyB,SAAS,yBAAyB,kB;;;;;;;ACP/F,kBAAkB,mBAAO,CAAC,GAAkB;AAC5C,+BAA+B,mBAAO,CAAC,GAA+B;AACtE;AACA;AACA;AACA,uCAAuC,yBAAyB,SAAS,yBAAyB,kB;;;;;;;ACLlG;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;ACnDA,wBAAwB,mBAAO,CAAC,GAAwB;AACxD;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,+BAA+B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,0BAA0B;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA,cAAc;AACd,YAAY;AACZ;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA,KAAK;AAC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B,IAAI,CAAC,CAAC;cACb,IAAI44D,SAAS,EAAE7qC,MAAM,CAACF,OAAO,CAAC,CAAC;cAC/B;AACJ;AACA;cAFI,OAAAmH,SAAA,CAAAlxB,MAAA,WAGOiqB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAA;YAAA;cAAA,OAAAiH,SAAA,CAAA7wB,IAAA;UAAA;QAAA,GAAAywB,QAAA;MAAA,CACpB;MAAA,SAzDK+lC,SAASA,CAAA3nC,GAAA;QAAA,OAAA8mC,UAAA,CAAAllE,KAAA,OAAAC,SAAA;MAAA;MAAA,OAAT8lE,SAAS;IAAA,IAyDb;EAAA;AAAA,IACH,CAAC,Q;;AC7LK,MAAM,aAAM;AACnB,kC;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC8C;AAC9C;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACO,6BAA6B,0HAA0E;AAC9G;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO,kBAAkB;AACzB;AACA,wBAAwB;AACxB;AACO,qBAAqB,yDAAS;AACrC;AACO;AACP,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACO,mBAAmB;AAC1B;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,2CAA2C,aAAa;AACxD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,+BAA+B;AAC/B;AACA,qCAAqC;AACrC;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,SAAS;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACO;AACP;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;AACA;AACA,6BAA6B,mBAAmB;AAChD;AACA;AACA;AACA;AACA;AACA;AACO;AACP,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO,SAAS,kBAAY;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACO;AACP;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACO,wBAAwB,kEAAY;AACpC,gCAAgC,+DAAe;AAC/C,mCAAmC,2DAAW;AACrD;AACO,SAAS,iBAAW;AAC3B,QAAQ,aAAM,WAAW,aAAM;AAC/B,eAAe,aAAM;AACrB;AACA;AACA,QAAQ,aAAM,WAAW,aAAM;AAC/B,+BAA+B,aAAM;AACrC;AACA;AACA;AACA,iC;;ACxRA;AACA;AACA;AACA;AACwF;AACxF;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO,qBAAqB,IAAI;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,UAAU;AAC9B;AACA;AACA,QAAQ,OAAO;AACf,eAAe,OAAO;AACtB,QAAQ,MAAM;AACd,gBAAgB,yBAAyB;AACzC;AACA,0BAA0B,UAAU;AACpC;AACA;AACA;AACA,iCAAiC,UAAU;AAC3C,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO;AACf,QAAQ,OAAO;AACf;AACA;AACA;AACA;AACA,gBAAgB,+BAA+B;AAC/C,cAAc,MAAM;AACpB;AACA;AACA,QAAQ,KAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,cAAc;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,UAAU;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,YAAY;AACpC;AACA;AACA;AACA,gBAAgB,oBAAoB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qDAAqD;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,+B;;AC1JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACgL;AAChL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAAe,mDAAG,IAAC;AACnB,gC;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACwF;AACvD;AACsB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,qBAAqB,MAAM;AAClC;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B,iBAAiB,SAAS;AAC1B,iBAAiB,SAAS;AAC1B,iBAAiB,SAAS;AAC1B,iBAAiB,SAAS;AAC1B,iBAAiB,SAAS;AAC1B,iBAAiB,SAAS;AAC1B,iBAAiB,SAAS;AAC1B;AACA;AACA,gBAAgB,yBAAyB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA,uBAAuB,IAAI,WAAW,IAAI;AAC1C,uBAAuB,IAAI,WAAW,IAAI;AAC1C;AACA;AACA;AACA,cAAc,yBAAyB;AACvC,wBAAwB,QAAQ;AAChC,2BAA2B,IAAI,SAAS,IAAI,UAAU,IAAI;AAC1D,qCAAqC,GAAG;AACxC,2BAA2B,IAAI,SAAS,IAAI,UAAU,IAAI;AAC1D,iCAAiC,GAAG;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,KAAK;AACb;AACA;AACA;AACA,QAAQ,KAAK;AACb;AACA;AACO;AACP;AACA;AACA,iBAAiB,SAAS;AAC1B,iBAAiB,SAAS;AAC1B,iBAAiB,SAAS;AAC1B,iBAAiB,SAAS;AAC1B,iBAAiB,SAAS;AAC1B,iBAAiB,SAAS;AAC1B,iBAAiB,SAAS;AAC1B,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,KAAS;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,qBAAqB,MAAM;AAClC;AACA;AACA;AACA;AACA;AACA,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA,gBAAgB,iEAAiE;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA,wBAAwB,MAAU,kBAAkB,MAAU,kBAAkB,KAAS;AACzF,wBAAwB,MAAU,kBAAkB,MAAU,kBAAkB,KAAS;AACzF;AACA;AACA;AACA,wBAAwB,MAAU,iBAAiB,MAAU,iBAAiB,KAAS;AACvF,wBAAwB,MAAU,iBAAiB,MAAU,iBAAiB,KAAS;AACvF;AACA,yBAAyB,KAAS;AAClC,yBAAyB,KAAS;AAClC;AACA;AACA;AACA,cAAc,iEAAiE;AAC/E;AACA,wBAAwB,QAAQ;AAChC;AACA,4BAA4B,MAAU,eAAe,MAAU,eAAe,MAAU;AACxF,4BAA4B,MAAU,eAAe,MAAU,eAAe,MAAU;AACxF;AACA;AACA;AACA;AACA;AACA,yBAAyB,KAAS;AAClC,wBAAwB,KAAS;AACjC;AACA;AACA,4BAA4B,MAAU,eAAe,MAAU,eAAe,MAAU;AACxF,4BAA4B,MAAU,eAAe,MAAU,eAAe,MAAU;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe,EAAE,GAAO;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,KAAS;AACjC,iBAAiB,KAAS;AAC1B;AACA;AACA;AACA,WAAW,eAAe,EAAE,GAAO;AACnC,WAAW,eAAe,EAAE,GAAO;AACnC,WAAW,eAAe,EAAE,GAAO;AACnC,WAAW,eAAe,EAAE,GAAO;AACnC,WAAW,eAAe,EAAE,GAAO;AACnC,WAAW,eAAe,EAAE,GAAO;AACnC,WAAW,eAAe,EAAE,GAAO;AACnC,WAAW,eAAe,EAAE,GAAO;AACnC;AACA;AACA;AACA,QAAQ,KAAK;AACb;AACA;AACA,QAAQ,KAAK;AACb;AACA;AACA;AACO;AACP;AACA;AACA,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,WAAM,mBAAmB,kBAAY;AAClD;AACO,+BAA+B,gFAAgC;AACtE;AACO,+BAA+B,gFAAgC;AACtE;AACO,+BAA+B,gFAAgC;AACtE;AACA;AACA;AACA;AACO,mCAAmC,oFAAoC;AAC9E;AACA;AACA;AACA;AACO,mCAAmC,oFAAoC;AAC9E,gC;;ACtXA;AACA;AACA;AACA;AAC0E;AACnE,mBAAmB,IAAI;AAC9B;AACA;AACA;AACA;AACA,QAAQ,KAAK;AACb,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA,QAAQ,KAAK;AACb;AACA;AACA,QAAQ,OAAO;AACf;AACA;AACA;AACA;AACA,QAAQ,OAAO;AACf,QAAQ,MAAM;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE,gBAAgB,yDAAyD;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,SAAS;AACrB;AACA;AACO,MAAM,SAAI;AACjB,SAAI;AACJ,gC;;ACrFA;AACA;AACA;AACA;AACA;AACoK;AACrB;AAC/I;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA,oCAAoC,MAAM;AAC1C;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,OAAQ;AAC1B;AACA;AACA;AACA,oCAAoC,MAAM;AAC1C,+CAA+C,OAAO;AACtD,sCAAsC,IAAI,YAAY,aAAa;AACnE;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA,kDAAkD;AAClD;AACA;AACO,SAAS,qBAAe;AAC/B,uBAAuB,UAAW;AAClC;AACO,SAAS,qBAAe;AAC/B,IAAI,MAAO;AACX,uBAAuB,UAAW;AAClC;AACO;AACP,WAAW,UAAW;AACtB;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAW;AAC3B;AACA;AACA;AACA,kBAAkB,UAAW;AAC7B;AACA;AACA;AACA;AACA;AACA,aAAa,OAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,oBAAoB,cAAc;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,oEAAoE,SAAS,cAAc,UAAU,cAAc,EAAE;AACrH;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,aAAO;AACvB;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS,aAAO;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,uBAAuB,4BAA4B;AACnD;AACO,MAAM,aAAO;AACpB;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,gDAAgD;AAChD,0BAA0B;AAC1B,0BAA0B;AAC1B,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,iCAAiC;AACjC,iBAAiB;AACjB;AACA;AACA,iCAAiC;AACjC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,WAAY;AAC3B;AACA;AACA;AACA,sBAAsB;AACtB,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,OAAQ;AACpE;AACA;AACA;AACA;AACA;AACA,0DAA0D;AACnD,SAAS,oBAAc,uCAAuC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,WAAW,WAAW,YAAY,IAAI;AACpD,kCAAkC,oBAAoB,IAAI,aAAa,GAAG;AAC1E;AACA,kCAAkC,UAAU,IAAI,SAAS;AACzD,kCAAkC,oBAAoB,IAAI,SAAS;AACnE,kCAAkC,2BAA2B;AAC7D,kCAAkC,wBAAwB;AACnD;AACP;AACA;AACO,uDAAuD;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,UAAU,yBAAyB,aAAa,QAAQ,QAAQ;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iC;;ACjUA;AACA;AACA;AACA;AACA;AACA;AACA;AACkJ;AAClJ;AACA,MAAM,UAAG,cAAc,UAAG;AAC1B;AACA;AACA;AACA;AACA;AACO;AACP;AACA,qBAAqB,UAAG;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA,qBAAqB,UAAG;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,mBAAmB,UAAG;AACtB;AACA,kBAAkB,UAAG;AACrB;AACA;AACA;AACA;AACA;AACA,YAAY,UAAG,MAAM,UAAG,MAAM,UAAG,MAAM,UAAG;AAC1C,iBAAiB,UAAG;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,UAAG;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,UAAG;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C,4BAA4B;AAC5B,qCAAqC;AACrC,iCAAiC;AACjC;AACA,iCAAiC;AACjC,mCAAmC;AACnC,qCAAqC;AACrC,qCAAqC;AACrC,2CAA2C;AAC3C,2CAA2C;AAC3C,qCAAqC;AACrC,qCAAqC;AACrC,2CAA2C;AAC3C,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,gBAAgB,UAAG;AACnB;AACA,uBAAuB,UAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,wBAAwB,UAAG;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC,8BAA8B;AAC9B,mCAAmC;AACnC;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA,mCAAmC;AACnC;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA,6BAA6B,UAAG,uBAAuB;AACvD,2CAA2C;AAC3C;AACA;AACA,2BAA2B;AAC3B,8BAA8B;AAC9B,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,0DAA0D,UAAG,MAAM,UAAG;AAC7E;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,qBAAa;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI,eAAe;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,gBAAgB,UAAG;AACnB;AACA,kBAAkB,UAAG;AACrB;AACA,kBAAkB,UAAG;AACrB;AACA;AACA;AACA,mBAAmB,UAAG;AACtB,oBAAoB,UAAG;AACvB;AACA;AACA,kBAAkB,UAAG;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,qBAAa;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,+BAA+B,UAAG;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO,SAAS,eAAO;AACvB;AACA;AACA,QAAQ,OAAO;AACf;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,uBAAuB;AACvB,iBAAiB,UAAG;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uCAAuC,EAAE,eAAO;AAC5D;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,cAAc,aAAO;AACrB,cAAc,UAAG;AACjB,aAAa,UAAG;AAChB;AACA;AACA;AACA;AACA;AACA,mBAAmB,UAAG,wBAAwB;AAC9C,SAAS;AACT,8BAA8B,UAAG;AACjC;AACA;AACA,+BAA+B,UAAG,MAAM,UAAG;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,kCAAkC,eAAe,eAAe,eAAe;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,qBAAe,UAAU,qBAAe;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,8BAA8B,qBAAa;AAC3C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,IAAI;AACG;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,mBAAmB,eAAO;AAC1B;AACA;AACA;AACA,iCAAiC,UAAG,IAAI,UAAG;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qBAAe,QAAQ,qBAAe;AAC7D;AACA,0CAA0C,UAAG,IAAI,UAAG;AACpD,kBAAkB,eAAe,sBAAsB,eAAe;AACtE;AACA,mC;;ACjhBA;AACA;AACA;AACA;AACA;AACA;AAC8D;AACc;AAC5E,MAAM,QAAG;AACT,MAAM,QAAG;AACF;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,uBAAuB,qBAAa;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD,qCAAqC;AACrC,8BAA8B;AAC9B,iBAAiB,aAAO,KAAK;AAC7B,+BAA+B;AAC/B,aAAa;AACb;AACA;AACA,YAAY,uCAAuC;AACnD,kCAAkC;AAClC,8BAA8B;AAC9B;AACA;AACA,+BAA+B;AAC/B,kCAAkC,wBAAwB;AAC1D;AACA;AACA;AACA,4BAA4B;AAC5B,iBAAiB,QAAG,EAAE;AACtB;AACA;AACA,sDAAsD;AACtD,gCAAgC;AAChC,6BAA6B;AAC7B,qCAAqC;AACrC,iCAAiC;AACjC,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAG;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAG;AACtB,oBAAoB,QAAG;AACvB;AACA;AACA,kBAAkB,QAAG;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC;AACA;AACA;AACA,6BAA6B,kBAAkB;AAC/C;AACA;AACA;AACA,4BAA4B,gBAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,qBAAqB;AAClD;AACA,oBAAoB,gDAAgD;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,qBAAqB;AAClD,sBAAsB,QAAG;AACzB,uBAAuB;AACvB,oBAAoB,+BAA+B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,gBAAgB,QAAG,SAAS,QAAG;AAC/B,iBAAiB,QAAG;AACpB;AACA,iBAAiB,QAAG;AACpB;AACA;AACA,eAAe,QAAG;AAClB,eAAe,QAAG;AAClB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,MAAM;AACxB,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,aAAO;AACxB,4DAA4D;AAC5D;AACA;AACA,2BAA2B,QAAQ;AACnC;AACA,wBAAwB,aAAa;AACrC;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,sDAAsD,OAAO;AAC7D;AACA;AACA;AACA;AACA;AACA,4BAA4B,gBAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C,wDAAwD;AACxD;AACA;AACA;AACA,iCAAiC,eAAe;AAChD;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,wBAAwB,YAAY;AACpC;AACA;AACA,gCAAgC,gBAAgB;AAChD;AACA;AACA,4BAA4B,oBAAoB;AAChD;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,aAAa,mBAAmB;AAChC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,QAAQ,qBAAa;AACrB;AACA;AACA;AACA,eAAe,KAAK,UAAU,MAAM;AACpC;AACA;AACA;AACO,uDAAuD;AAC9D;AACA;AACA;AACA,0CAA0C,MAAM;AAChD;AACA;AACA,+CAA+C,QAAG;AAClD,qCAAqC,GAAG;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,GAAG;AACxC;AACA,0CAA0C;AAC1C,aAAa;AACb;AACA,iC;;AChdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC0D;AACd;AACuO;AAC5K;AACQ;AAC/G;AACA,kEAAkE,cAAG;AACrE;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,cAAG;AAC1B,uBAAuB,cAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,aAAO,WAAW,MAAM,YAAY,cAAG,EAAE;AAC7D,aAAa,cAAG,0BAA0B,cAAG;AAC7C;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAK;AACT,IAAI,OAAK;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA,2CAA2C,mBAAmB;AAC9D,sBAAsB,mBAAmB;AACzC;AACA,SAAS;AACT;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B,sBAAsB,cAAG;AACzB;AACA,sBAAsB,mBAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA,mBAAmB,qBAAe;AAClC,SAAS;AACT,KAAK;AACL;AACA;AACA,gBAAgB,+BAA+B;AAC/C,qBAAqB,iBAAW;AAChC,gBAAgB,+BAA+B;AAC/C;AACA;AACA,gBAAgB,2BAA2B;AAC3C,gBAAgB,2BAA2B;AAC3C;AACA;AACA,iBAAiB;AACjB,KAAK;AACL;AACA,gBAAgB,uBAAuB;AACvC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,MAAM,cAAG,cAAc,cAAG,cAAc,cAAG,cAAc,cAAG,cAAc,cAAG;AACtE;AACP,YAAY,kBAAkB;AAC9B;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAW;AAC/B;AACA;AACA;AACA;AACA,0EAA0E,SAAS,QAAQ,WAAW;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,4CAA4C;AACnD,sBAAsB,kBAAkB;AACxC,YAAY,SAAS;AACrB;AACA,YAAY,8BAA8B;AAC1C,IAAI,eAAe,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,YAAY,OAAO;AACnB;AACA,kCAAkC,yCAAyC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA,QAAQ,OAAK;AACb;AACA;AACA;AACA,mBAAmB,WAAW;AAC9B;AACA;AACA,mBAAmB,WAAW;AAC9B;AACA;AACA;AACA,QAAQ,QAAM;AACd,gBAAgB,iDAAiD,WAAW;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,gDAAgD;AAChD;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qDAAqD,OAAO,wBAAwB,MAAM,kBAAkB,OAAO;AACnH;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,kCAAkC;AAClC,gEAAgE;AAChE;AACA;AACA;AACA;AACA,gCAAgC;AAChC,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,cAAG,GAAG,cAAG;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,MAAM;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,QAAQ;AACjC,gBAAgB,UAAU;AAC1B;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB,KAAK;AACL;AACA;AACA,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,QAAM;AACzD;AACA;AACA;AACA;AACA,mCAAmC,iBAAW;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,cAAG,GAAG;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,IAAI;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B,iCAAiC,cAAG;AACpC,oBAAoB,sBAAsB;AAC1C,0DAA0D;AAC1D,qCAAqC;AACrC;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C,oBAAoB,sBAAsB;AAC1C,0DAA0D;AAC1D;AACA,uCAAuC,cAAG;AAC1C,qCAAqC;AACrC;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA,iEAAiE;AACjE,6BAA6B;AAC7B,2DAA2D,UAAU;AACrE,8BAA8B,wBAAwB;AACtD;AACA,wBAAwB,uBAAuB;AAC/C,wBAAwB,iBAAiB;AACzC,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA,iEAAiE;AACjE,uBAAuB,cAAG;AAC1B;AACA,uBAAuB,cAAG;AAC1B,0BAA0B;AAC1B;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C,wBAAwB,SAAS,EAAE,aAAa,oBAAoB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC,6BAA6B,cAAG;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC,6BAA6B,cAAG;AAChC,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAK;AACjB;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA,6BAA6B,mCAAmC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA,qBAAqB,IAAI;AACzB,8BAA8B;AAC9B;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,YAAY,cAAG;AACf,qBAAqB,cAAG,EAAE,IAAI,cAAG,KAAK,cAAG,EAAE,KAAK,cAAG;AACnD,aAAa,cAAG;AAChB,kBAAkB;AAClB,2DAA2D;AAC3D;AACA,yBAAyB,cAAG,UAAU,cAAG,GAAG,cAAG;AAC/C,sCAAsC,cAAG;AACzC,oBAAoB,cAAG,gBAAgB;AACvC,qBAAqB,cAAG,IAAI,cAAG,EAAE;AACjC,4BAA4B,cAAG,EAAE;AACjC,6BAA6B;AAC7B,8BAA8B;AAC9B,+BAA+B,cAAG,IAAI,cAAG,GAAG;AAC5C;AACA,sBAAsB;AACtB,iCAAiC;AACjC,+BAA+B;AAC/B,8BAA8B;AAC9B,kCAAkC;AAClC,+BAA+B;AAC/B,gCAAgC;AAChC,8BAA8B;AAC9B,8BAA8B;AAC9B,oCAAoC;AACpC,+BAA+B;AAC/B,wCAAwC;AACxC,+BAA+B;AAC/B,gCAAgC;AAChC,uCAAuC;AACvC,uCAAuC;AACvC;AACA,yBAAyB,IAAI,cAAG,EAAE;AAClC,0BAA0B,cAAG,EAAE;AAC/B,kBAAkB,cAAG,WAAW,cAAG,GAAG;AACtC,yCAAyC;AACzC,6CAA6C;AAC7C,oCAAoC;AACpC,oCAAoC;AACpC,qCAAqC;AACrC,yCAAyC;AACzC,0CAA0C;AAC1C;AACA,iBAAiB;AACjB;AACA,mBAAmB,cAAG,KAAK,cAAG;AAC9B;AACA,+BAA+B,cAAG,IAAI,cAAG,EAAE;AAC3C,uCAAuC;AACvC;AACA,iCAAiC;AACjC,sCAAsC;AACtC,oCAAoC;AACpC,sCAAsC;AACtC,kCAAkC;AAClC,uCAAuC;AACvC,+CAA+C,kBAAkB;AACjE,yCAAyC;AACzC,2CAA2C;AAC3C,qBAAqB,2BAA2B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,+BAAmB;AACnC;AACA,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,8BAA8B;AAC9B,2BAA2B;AAC3B,gCAAgC;AAChC,mCAAmC;AACnC,8BAA8B;AAC9B,8DAA8D;AAC9D,8BAA8B;AAC9B,2BAA2B;AAC3B,2BAA2B;AAC3B,8BAA8B;AAC9B,gCAAgC;AAChC,gCAAgC;AAChC,gCAAgC;AAChC,8BAA8B;AAC9B,gCAAgC;AAChC,8BAA8B;AAC9B,gBAAgB,iBAAiB,uBAAuB;AACxD,4BAA4B;AAC5B,8BAA8B;AAC9B,sCAAsC;AACtC,wCAAwC;AACxC,gDAAgD;AAChD,uCAAuC;AACvC;AACA,gCAAgC;AAChC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,kCAAkC;AACzC,YAAY,KAAK;AACjB,iDAAiD,iBAAc;AAC/D,+DAA+D,MAAM,gBAAgB,YAAY;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yCAAyC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,cAAc,CAAC,QAAM;AACpC;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8CAA8C;AAC9D;AACA;AACA,kBAAkB,iBAAW;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,2BAA2B,8DAA8D;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,2BAA2B,OAAO;AACvF;AACA;AACO,0CAA0C;AACjD,IAAI,KAAK;AACT,IAAI,eAAe,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,iDAAiD,iBAAc;AAC/D;AACA,2BAA2B,SAAS,YAAY,WAAW;AAC3D,YAAY,SAAS;AACrB,YAAY,mCAAmC;AAC/C,YAAY,wDAAwD;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,cAAG;AACvC;AACA;AACA;AACA;AACA,iDAAiD,MAAM;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAM,kBAAkB,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,OAAO,YAAY,QAAM;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,UAAU;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE;AACnE;AACA,8CAA8C,cAAG;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,WAAW;AACjD,qCAAqC;AACrC,oCAAoC,iBAAW,2BAA2B;AAC1E,2CAA2C;AAC3C,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;AACA;AACA;AACA,uBAAuB,WAAW;AAClC;AACA,mBAAmB,WAAW;AAC9B;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA,uCAAuC,iBAAW;AAClD;AACA;AACA,uCAAuC,iBAAW;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAe,SAAS;AAChD,qDAAqD;AACrD;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA,uBAAuB,aAAO;AAC9B;AACA;AACA;AACA,QAAQ,QAAQ,2BAA2B,cAAG;AAC9C;AACA;AACA;AACA,QAAQ,QAAM;AACd,yBAAyB,QAAM;AAC/B;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8BAA8B;AAC9C,wDAAwD;AACxD;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iBAAW,sBAAsB;AAC3D;AACA,qBAAqB,WAAW,eAAe;AAC/C,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA,wBAAwB;AACxB,kCAAkC;AAClC,yDAAyD;AACzD,sCAAsC;AACtC,sBAAsB,cAAG;AACzB;AACA,4DAA4D;AAC5D,sBAAsB,cAAG;AACzB;AACA,8DAA8D,cAAG,GAAG;AACpE;AACA;AACA,mCAAmC;AACnC,+BAA+B;AAC/B;AACA,sDAAsD;AACtD;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,kBAAkB,iBAAW;AAC7B,gBAAgB,cAAc,qCAAqC;AACnE,qBAAqB,cAAc;AACnC,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,iBAAW;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,iBAAW;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,sBAAsB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D,gBAAgB,wBAAwB;AACxC,oBAAoB,iBAAW;AAC/B,qCAAqC,iBAAW;AAChD;AACA;AACA;AACA;AACA,kCAAkC,iBAAW;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B,8CAA8C;AAC9C,kCAAkC;AAClC,0CAA0C;AAC1C,0CAA0C;AAC1C,+EAA+E;AAC/E;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D,gBAAgB,UAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACO;AACP,YAAY,mBAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,KAAK;AACpB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,YAAY,mBAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACO;AACP;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,kCAAkC;AAClC,oDAAoD;AACpD;AACA;AACA;AACA;AACA,YAAY,SAAS;AACrB;AACA,4BAA4B,cAAG;AAC/B;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,+BAA+B,KAAK,eAAO;AAC3C,KAAK;AACL;AACA;AACO;AACP,YAAY,oCAAoC;AAChD;AACA;AACA;AACA;AACA,uC;;ACp4CA;AACA;AACA;AACA;AACA;AACwD;AACxD;AACO;AACP,aAAa;AACb;AACA;AACO;AACP,6BAA6B,WAAW,GAAG,yBAAyB;AACpE,aAAa;AACb;AACA,yC;;ACfA;AACA;AACA;AACA;AACA,cAAc,uBAAuB;AACrC;AACA;AACA;AAC+C;AACM;AACJ;AACuB;AACC;AACQ;AAC8B;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAG;AACT,MAAM,YAAG;AACT,MAAM,YAAG;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,kCAAkC;AAClC,gBAAgB,IAAI;AACpB,gBAAgB,IAAI;AACpB,iBAAiB,IAAI,KAAK,YAAG;AAC7B,iBAAiB,IAAI;AACrB,iBAAiB,IAAI;AACrB,iBAAiB,IAAI;AACrB,kBAAkB,IAAI;AACtB,kBAAkB,IAAI;AACtB,kBAAkB,IAAI;AACtB,gBAAgB,IAAI;AACpB,gBAAgB,IAAI;AACpB,iBAAiB,IAAI,KAAK,YAAG;AAC7B;AACA;AACA;AACA;AACA,aAAa,KAAK,sBAAsB,eAAe;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,YAAY;AACxB,WAAW,uBAAuB;AAClC;AACA;AACA;AACA;AACA;AACO,kBAAkB,WAAW,GAAG,gEAAgE,EAAE,WAAM;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,WAAM,CAAC,WAAW;AACvC,eAAe,WAAW;AAC1B;AACA;AACA,WAAW,WAAM,CAAC,WAAW;AAC7B;AACA;AACA;AACA;AACA,2BAA2B,YAAG,KAAK,YAAG;AACtC;AACA;AACA,YAAY,WAAW;AACvB,eAAe,cAAc;AAC7B,iCAAiC,aAAa;AAC9C;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C,wBAAwB;AACxB;AACA;AACA;AACA;AACA,mCAAmC,MAAM;AACzC;AACA;AACA;AACA,YAAY,qBAAe;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA,mDAAmD,iBAAW;AAC9D,YAAY,KAAK;AACjB,cAAc,iBAAW;AACzB,YAAY,uBAAuB,kCAAkC;AACrE,cAAc,iBAAW,0BAA0B;AACnD,iEAAiE;AACjE,wDAAwD;AACxD;AACA,YAAY,uBAAuB;AACnC,oCAAoC;AACpC,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,WAAW;AACvB,gBAAgB,iBAAW;AAC3B,cAAc,iBAAW;AACzB,gBAAgB,iBAAW;AAC3B;AACA,oCAAoC,wBAAwB;AAC5D,4CAA4C,2BAA2B;AACvE,aAAa,aAAO,IAAI,YAAG;AAC3B;AACA,6CAA6C,4BAA4B;AACzE,aAAa,aAAO,IAAI,YAAG;AAC3B;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,UAAU;AACtB,WAAW,uBAAuB;AAClC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,oCAAoC,iBAAW;AAC/C,eAAe,cAAc;AAC7B;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,2BAA2B;AAC3B,eAAe;AACf,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;AACD,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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EAAArf,YAAA;EAAA,SAAAqf,iBAAA;IAAAlgD,eAAA,OAAAkgD,gBAAA;IAAA,OAAA7gB,cAAA,OAAA6gB,gBAAA,EAAAjtF,SAAA;EAAA;EAAAqsE,SAAA,CAAA4gB,gBAAA,EAAArf,YAAA;EAAA,OAAAlgC,YAAA,CAAAu/C,gBAAA;AAAA,eAAA3gB,gBAAA,CAASuB,WAAW;AAoBnC,IAAMqf,gBAAgB,0BAAAnf,aAAA;EAAA,SAAAmf,iBAAA;IAAAngD,6BAAA,OAAAmgD,gBAAA;IAAA,OAAA9gB,cAAA,OAAA8gB,gBAAA,EAAAltF,SAAA;EAAA;EAAAqsE,iBAAA,CAAA6gB,gBAAA,EAAAnf,aAAA;EAAA,OAAArgC,uBAAA,CAAAw/C,gBAAA;AAAA,eAAA5gB,+BAAA,CAASuB,WAAW;;AAMjD;AACA;AACA;AAFA,IAGMsf,UAAU,0EAAAC,aAAA;EAAA,SAAAD,WAAA;IAAApgD,eAAA,OAAAogD,UAAA;IAAA,OAAA/gB,cAAA,OAAA+gB,UAAA,EAAAntF,SAAA;EAAA;EAAAqsE,SAAA,CAAA8gB,UAAA,EAAAC,aAAA;EAAA,OAAA1/C,YAAA,CAAAy/C,UAAA;AAAA,eAAA7gB,gBAAA,CAASuB,WAAW;AAKpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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","sources":["webpack://solid-ui/./node_modules/mime-types/index.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/OverloadYield.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/regeneratorKeys.js","webpack://solid-ui/./src/iconBase.ts","webpack://solid-ui/./node_modules/solid-namespace/index.js","webpack://solid-ui/./src/debug.ts","webpack://solid-ui/ignored|/home/runner/work/solid-ui/solid-ui/node_modules/mime-types|path","webpack://solid-ui/./node_modules/@babel/runtime/helpers/regeneratorDefine.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/regeneratorValues.js","webpack://solid-ui/./node_modules/escape-html/index.js","webpack://solid-ui/./node_modules/mime-db/index.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/typeof.js","webpack://solid-ui/./node_modules/@babel/runtime/regenerator/index.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/regeneratorAsyncIterator.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/regeneratorAsync.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/regeneratorAsyncGen.js","webpack://solid-ui/./node_modules/mime-types/mimeScore.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/regenerator.js","webpack://solid-ui/webpack/bootstrap","webpack://solid-ui/webpack/runtime/compat get default export","webpack://solid-ui/webpack/runtime/define property getters","webpack://solid-ui/webpack/runtime/harmony module decorator","webpack://solid-ui/webpack/runtime/hasOwnProperty shorthand","webpack://solid-ui/webpack/runtime/make namespace object","webpack://solid-ui/external module \"$rdf\"","webpack://solid-ui/./src/ns.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://solid-ui/external module \"SolidLogic\"","webpack://solid-ui/./src/log.ts","webpack://solid-ui/./src/utils/label.ts","webpack://solid-ui/./src/acl/acl.ts","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://solid-ui/./src/styleConstants.js","webpack://solid-ui/./src/style.js","webpack://solid-ui/./src/widgets/dragAndDrop.js","webpack://solid-ui/./src/utils/index.js","webpack://solid-ui/./src/widgets/error.ts","webpack://solid-ui/./src/widgets/widgetHelpers.ts","webpack://solid-ui/./src/widgets/buttons/iconLinks.ts","webpack://solid-ui/./src/widgets/buttons.ts","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://solid-ui/./src/signup/config-default.js","webpack://solid-ui/./src/signup/signup.js","webpack://solid-ui/./src/widgets/forms/fieldParams.ts","webpack://solid-ui/./src/widgets/forms/fieldFunction.ts","webpack://solid-ui/./src/widgets/forms/formStyle.ts","webpack://solid-ui/./src/widgets/forms/basic.ts","webpack://solid-ui/./src/widgets/forms/autocomplete/language.ts","webpack://solid-ui/./src/widgets/forms/autocomplete/publicData.ts","webpack://solid-ui/./src/widgets/forms/autocomplete/autocompletePicker.ts","webpack://solid-ui/./src/widgets/forms/autocomplete/autocompleteBar.ts","webpack://solid-ui/./src/widgets/forms/autocomplete/autocompleteField.ts","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://solid-ui/./src/style_multiSelect.js","webpack://solid-ui/./src/widgets/multiSelect.js","webpack://solid-ui/./src/widgets/forms.js","webpack://solid-ui/./src/login/login.ts","webpack://solid-ui/./src/acl/add-agent-buttons.ts","webpack://solid-ui/./src/acl/access-groups.ts","webpack://solid-ui/./src/acl/access-controller.ts","webpack://solid-ui/./src/acl/acl-control.ts","webpack://solid-ui/./src/acl/index.ts","webpack://solid-ui/./src/create/create.ts","webpack://solid-ui/./src/create/index.ts","webpack://solid-ui/./src/matrix/matrix.ts","webpack://solid-ui/./src/matrix/index.ts","webpack://solid-ui/./src/media/media-capture.ts","webpack://solid-ui/./src/media/index.ts","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","webpack://solid-ui/./node_modules/uuid/dist/esm-browser/native.js","webpack://solid-ui/./node_modules/uuid/dist/esm-browser/rng.js","webpack://solid-ui/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://solid-ui/./node_modules/uuid/dist/esm-browser/v4.js","webpack://solid-ui/./src/widgets/peoplePicker.js","webpack://solid-ui/./src/widgets/index.js","webpack://solid-ui/./src/messageArea.js","webpack://solid-ui/./src/chat/dateFolder.js","webpack://solid-ui/./node_modules/@noble/hashes/esm/crypto.js","webpack://solid-ui/./node_modules/@noble/hashes/esm/utils.js","webpack://solid-ui/./node_modules/@noble/hashes/esm/_md.js","webpack://solid-ui/./node_modules/@noble/hashes/esm/_u64.js","webpack://solid-ui/./node_modules/@noble/hashes/esm/sha2.js","webpack://solid-ui/./node_modules/@noble/hashes/esm/hmac.js","webpack://solid-ui/./node_modules/@noble/curves/esm/utils.js","webpack://solid-ui/./node_modules/@noble/curves/esm/abstract/modular.js","webpack://solid-ui/./node_modules/@noble/curves/esm/abstract/curve.js","webpack://solid-ui/./node_modules/@noble/curves/esm/abstract/weierstrass.js","webpack://solid-ui/./node_modules/@noble/curves/esm/_shortw_utils.js","webpack://solid-ui/./node_modules/@noble/curves/esm/secp256k1.js","webpack://solid-ui/./node_modules/@noble/hashes/esm/sha256.js","webpack://solid-ui/./src/chat/signature.ts","webpack://solid-ui/./src/utils/keyHelpers/otherHelpers.ts","webpack://solid-ui/./src/utils/keyHelpers/accessData.ts","webpack://solid-ui/./src/utils/keyHelpers/acl.ts","webpack://solid-ui/./src/chat/keys.ts","webpack://solid-ui/./src/chat/chatLogic.js","webpack://solid-ui/./src/participation.ts","webpack://solid-ui/./src/pad.ts","webpack://solid-ui/./src/chat/bookmarks.js","webpack://solid-ui/./src/chat/messageTools.js","webpack://solid-ui/./src/chat/message.js","webpack://solid-ui/./src/chat/infinite.js","webpack://solid-ui/./src/preferences.js","webpack://solid-ui/./src/table.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/construct.js","webpack://solid-ui/./node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","webpack://solid-ui/./src/tabs.ts","webpack://solid-ui/./src/header/empty-profile.ts","webpack://solid-ui/./src/utils/headerFooterHelpers.ts","webpack://solid-ui/./src/header/index.ts","webpack://solid-ui/./src/footer/index.ts","webpack://solid-ui/./src/create/types.ts","webpack://solid-ui/./src/index.ts"],"sourcesContent":["/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\nvar extname = require('path').extname\nvar mimeScore = require('./mimeScore')\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\nexports._extensionConflicts = []\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction charset (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n var mime = match && db[match[1].toLowerCase()]\n\n if (mime && mime.charset) {\n return mime.charset\n }\n\n // default text/* to utf-8\n if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n return 'UTF-8'\n }\n\n return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {boolean|string}\n */\n\nfunction contentType (str) {\n // TODO: should this even be in this module?\n if (!str || typeof str !== 'string') {\n return false\n }\n\n var mime = str.indexOf('/') === -1 ? exports.lookup(str) : str\n\n if (!mime) {\n return false\n }\n\n // TODO: use content-type or other module\n if (mime.indexOf('charset') === -1) {\n var charset = exports.charset(mime)\n if (charset) mime += '; charset=' + charset.toLowerCase()\n }\n\n return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction extension (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n // get extensions\n var exts = match && exports.extensions[match[1].toLowerCase()]\n\n if (!exts || !exts.length) {\n return false\n }\n\n return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {boolean|string}\n */\n\nfunction lookup (path) {\n if (!path || typeof path !== 'string') {\n return false\n }\n\n // get the extension (\"ext\" or \".ext\" or full path)\n var extension = extname('x.' + path)\n .toLowerCase()\n .slice(1)\n\n if (!extension) {\n return false\n }\n\n return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n Object.keys(db).forEach(function forEachMimeType (type) {\n var mime = db[type]\n var exts = mime.extensions\n\n if (!exts || !exts.length) {\n return\n }\n\n // mime -> extensions\n extensions[type] = exts\n\n // extension -> mime\n for (var i = 0; i < exts.length; i++) {\n var extension = exts[i]\n types[extension] = _preferredType(extension, types[extension], type)\n\n // DELETE (eventually): Capture extension->type maps that change as a\n // result of switching to mime-score. This is just to help make reviewing\n // PR #119 easier, and can be removed once that PR is approved.\n const legacyType = _preferredTypeLegacy(\n extension,\n types[extension],\n type\n )\n if (legacyType !== types[extension]) {\n exports._extensionConflicts.push([extension, legacyType, types[extension]])\n }\n }\n })\n}\n\n// Resolve type conflict using mime-score\nfunction _preferredType (ext, type0, type1) {\n var score0 = type0 ? mimeScore(type0, db[type0].source) : 0\n var score1 = type1 ? mimeScore(type1, db[type1].source) : 0\n\n return score0 > score1 ? type0 : type1\n}\n\n// Resolve type conflict using pre-mime-score logic\nfunction _preferredTypeLegacy (ext, type0, type1) {\n var SOURCE_RANK = ['nginx', 'apache', undefined, 'iana']\n\n var score0 = type0 ? SOURCE_RANK.indexOf(db[type0].source) : 0\n var score1 = type1 ? SOURCE_RANK.indexOf(db[type1].source) : 0\n\n if (\n exports.types[extension] !== 'application/octet-stream' &&\n (score0 > score1 ||\n (score0 === score1 &&\n exports.types[extension]?.slice(0, 12) === 'application/'))\n ) {\n return type0\n }\n\n return score0 > score1 ? type0 : type1\n}\n","function _OverloadYield(e, d) {\n this.v = e, this.k = d;\n}\nmodule.exports = _OverloadYield, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _regeneratorKeys(e) {\n var n = Object(e),\n r = [];\n for (var t in n) r.unshift(t);\n return function e() {\n for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e;\n return e.done = !0, e;\n };\n}\nmodule.exports = _regeneratorKeys, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// Works in FF extension - what about browserify??\n// 2021-04-08 Convert to TS\n\n/* The Firefox case is left for historical record, as we don't currenly\n * have a FF extension for mashlib, but we could. This is sthepoint to\n * hack the place it can find its icons internally\n *\n * The $SolidTestEnvironment is important and is used for\n * example when testing on localhost to specify a place the icons be found\n * in your test set up.\n *\n * You can also use it if you want to just run a mashlib whhich takes its\n * icons seved by other than github.\n */\n\nimport { log } from './debug'\n\ndeclare let $SolidTestEnvironment\n\n// Do not export. Always us this module to find the icons, as they vary\nconst iconsOnGithub = 'https://solidos.github.io/solid-ui/src' // changed org 2022-05\n\nexport const icons = (module as any).scriptURI // Firefox extension\n ? {\n iconBase:\n (module as any).scriptURI.slice(0, (module as any).scriptURI.lastIndexOf('/')) + '/icons/',\n originalIconBase:\n (module as any).scriptURI.slice(0, (module as any).scriptURI.lastIndexOf('/')) +\n '/originalIcons/'\n }\n : typeof $SolidTestEnvironment !== 'undefined' && $SolidTestEnvironment.iconBase // Test environemnt\n ? {\n iconBase: $SolidTestEnvironment.iconBase,\n originalIconBase: $SolidTestEnvironment.originalIconBase\n }\n : {\n // Normal case:\n iconBase: iconsOnGithub + '/icons/',\n originalIconBase: iconsOnGithub + '/originalIcons/'\n }\n\nlog(' icons.iconBase is set to : ' + icons.iconBase)\n\n// allow tests etc named-import this directly from this module\nexport const iconBase = icons.iconBase\nexport const originalIconBase = icons.originalIconBase\n","/**\n * Provides a way to access commonly used namespaces\n *\n * Usage:\n *\n * ```\n * const $rdf = require('rdflib'); //or any other RDF/JS-compatible library\n * const ns = require('solid-namespace')($rdf);\n * const store = $rdf.graph();\n *\n * let me = ...;\n * let name = store.any(me, ns.vcard(‘fn’)) || store.any(me, ns.foaf(‘name’));\n * ```\n * @module vocab\n */\nconst aliases = {\n acl: 'http://www.w3.org/ns/auth/acl#',\n arg: 'http://www.w3.org/ns/pim/arg#',\n as: 'https://www.w3.org/ns/activitystreams#',\n bookmark: 'http://www.w3.org/2002/01/bookmark#',\n cal: 'http://www.w3.org/2002/12/cal/ical#',\n cco: 'http://www.ontologyrepository.com/CommonCoreOntologies/',\n cert: 'http://www.w3.org/ns/auth/cert#',\n contact: 'http://www.w3.org/2000/10/swap/pim/contact#',\n dc: 'http://purl.org/dc/elements/1.1/',\n dct: 'http://purl.org/dc/terms/',\n doap: 'http://usefulinc.com/ns/doap#',\n foaf: 'http://xmlns.com/foaf/0.1/',\n geo: 'http://www.w3.org/2003/01/geo/wgs84_pos#',\n gpx: 'http://www.w3.org/ns/pim/gpx#',\n gr: 'http://purl.org/goodrelations/v1#',\n http: 'http://www.w3.org/2007/ont/http#',\n httph: 'http://www.w3.org/2007/ont/httph#',\n icalTZ: 'http://www.w3.org/2002/12/cal/icaltzd#', // Beware: not cal:\n ldp: 'http://www.w3.org/ns/ldp#',\n link: 'http://www.w3.org/2007/ont/link#',\n log: 'http://www.w3.org/2000/10/swap/log#',\n meeting: 'http://www.w3.org/ns/pim/meeting#',\n mo: 'http://purl.org/ontology/mo/',\n org: 'http://www.w3.org/ns/org#',\n owl: 'http://www.w3.org/2002/07/owl#',\n pad: 'http://www.w3.org/ns/pim/pad#',\n patch: 'http://www.w3.org/ns/pim/patch#',\n prov: 'http://www.w3.org/ns/prov#',\n pto: 'http://www.productontology.org/id/',\n qu: 'http://www.w3.org/2000/10/swap/pim/qif#',\n trip: 'http://www.w3.org/ns/pim/trip#',\n rdf: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n rdfs: 'http://www.w3.org/2000/01/rdf-schema#',\n rss: 'http://purl.org/rss/1.0/',\n sched: 'http://www.w3.org/ns/pim/schedule#',\n schema: 'http://schema.org/', // @@ beware confusion with documents no 303\n sioc: 'http://rdfs.org/sioc/ns#',\n skos: 'http://www.w3.org/2004/02/skos/core#',\n solid: 'http://www.w3.org/ns/solid/terms#',\n space: 'http://www.w3.org/ns/pim/space#',\n stat: 'http://www.w3.org/ns/posix/stat#',\n tab: 'http://www.w3.org/2007/ont/link#',\n tabont: 'http://www.w3.org/2007/ont/link#',\n ui: 'http://www.w3.org/ns/ui#',\n vann: 'http://purl.org/vocab/vann/',\n vcard: 'http://www.w3.org/2006/vcard/ns#',\n wf: 'http://www.w3.org/2005/01/wf/flow#',\n xsd: 'http://www.w3.org/2001/XMLSchema#',\n}\n\n/**\n * @param [rdflib] {RDF} Optional RDF Library (such as rdflib.js or rdf-ext) to inject\n */\nfunction vocab (rdf = { namedNode: u => u }) {\n const namespaces = {}\n for (const alias in aliases) {\n const expansion = aliases[alias]\n namespaces[alias] = function (localName = '') {\n return rdf.namedNode(expansion + localName)\n }\n };\n\n return namespaces\n};\n\nmodule.exports = vocab\n","export function log (...args: any[]) {\n console.log(...args)\n}\n\nexport function warn (...args: any[]) {\n console.warn(...args)\n}\n\nexport function error (...args: any[]) {\n console.error(...args)\n}\n\nexport function trace (...args: any[]) {\n console.trace(...args)\n}\n","/* (ignored) */","function _regeneratorDefine(e, r, n, t) {\n var i = Object.defineProperty;\n try {\n i({}, \"\", {});\n } catch (e) {\n i = 0;\n }\n module.exports = _regeneratorDefine = function regeneratorDefine(e, r, n, t) {\n function o(r, n) {\n _regeneratorDefine(e, r, function (e) {\n return this._invoke(r, n, e);\n });\n }\n r ? i ? i(e, r, {\n value: n,\n enumerable: !t,\n configurable: !t,\n writable: !t\n }) : e[r] = n : (o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2));\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _regeneratorDefine(e, r, n, t);\n}\nmodule.exports = _regeneratorDefine, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorValues(e) {\n if (null != e) {\n var t = e[\"function\" == typeof Symbol && Symbol.iterator || \"@@iterator\"],\n r = 0;\n if (t) return t.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) return {\n next: function next() {\n return e && r >= e.length && (e = void 0), {\n value: e && e[r++],\n done: !e\n };\n }\n };\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n}\nmodule.exports = _regeneratorValues, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = require('./db.json')\n","var OverloadYield = require(\"./OverloadYield.js\");\nvar regenerator = require(\"./regenerator.js\");\nvar regeneratorAsync = require(\"./regeneratorAsync.js\");\nvar regeneratorAsyncGen = require(\"./regeneratorAsyncGen.js\");\nvar regeneratorAsyncIterator = require(\"./regeneratorAsyncIterator.js\");\nvar regeneratorKeys = require(\"./regeneratorKeys.js\");\nvar regeneratorValues = require(\"./regeneratorValues.js\");\nfunction _regeneratorRuntime() {\n \"use strict\";\n\n var r = regenerator(),\n e = r.m(_regeneratorRuntime),\n t = (Object.getPrototypeOf ? Object.getPrototypeOf(e) : e.__proto__).constructor;\n function n(r) {\n var e = \"function\" == typeof r && r.constructor;\n return !!e && (e === t || \"GeneratorFunction\" === (e.displayName || e.name));\n }\n var o = {\n \"throw\": 1,\n \"return\": 2,\n \"break\": 3,\n \"continue\": 3\n };\n function a(r) {\n var e, t;\n return function (n) {\n e || (e = {\n stop: function stop() {\n return t(n.a, 2);\n },\n \"catch\": function _catch() {\n return n.v;\n },\n abrupt: function abrupt(r, e) {\n return t(n.a, o[r], e);\n },\n delegateYield: function delegateYield(r, o, a) {\n return e.resultName = o, t(n.d, regeneratorValues(r), a);\n },\n finish: function finish(r) {\n return t(n.f, r);\n }\n }, t = function t(r, _t, o) {\n n.p = e.prev, n.n = e.next;\n try {\n return r(_t, o);\n } finally {\n e.next = n.n;\n }\n }), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n;\n try {\n return r.call(this, e);\n } finally {\n n.p = e.prev, n.n = e.next;\n }\n };\n }\n return (module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return {\n wrap: function wrap(e, t, n, o) {\n return r.w(a(e), t, n, o && o.reverse());\n },\n isGeneratorFunction: n,\n mark: r.m,\n awrap: function awrap(r, e) {\n return new OverloadYield(r, e);\n },\n AsyncIterator: regeneratorAsyncIterator,\n async: function async(r, e, t, o, u) {\n return (n(e) ? regeneratorAsyncGen : regeneratorAsync)(a(r), e, t, o, u);\n },\n keys: regeneratorKeys,\n values: regeneratorValues\n };\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports)();\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","var OverloadYield = require(\"./OverloadYield.js\");\nvar regeneratorDefine = require(\"./regeneratorDefine.js\");\nfunction AsyncIterator(t, e) {\n function n(r, o, i, f) {\n try {\n var c = t[r](o),\n u = c.value;\n return u instanceof OverloadYield ? e.resolve(u.v).then(function (t) {\n n(\"next\", t, i, f);\n }, function (t) {\n n(\"throw\", t, i, f);\n }) : e.resolve(u).then(function (t) {\n c.value = t, i(c);\n }, function (t) {\n return n(\"throw\", t, i, f);\n });\n } catch (t) {\n f(t);\n }\n }\n var r;\n this.next || (regeneratorDefine(AsyncIterator.prototype), regeneratorDefine(AsyncIterator.prototype, \"function\" == typeof Symbol && Symbol.asyncIterator || \"@asyncIterator\", function () {\n return this;\n })), regeneratorDefine(this, \"_invoke\", function (t, o, i) {\n function f() {\n return new e(function (e, r) {\n n(t, i, e, r);\n });\n }\n return r = r ? r.then(f, f) : f();\n }, !0);\n}\nmodule.exports = AsyncIterator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var regeneratorAsyncGen = require(\"./regeneratorAsyncGen.js\");\nfunction _regeneratorAsync(n, e, r, t, o) {\n var a = regeneratorAsyncGen(n, e, r, t, o);\n return a.next().then(function (n) {\n return n.done ? n.value : a.next();\n });\n}\nmodule.exports = _regeneratorAsync, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var regenerator = require(\"./regenerator.js\");\nvar regeneratorAsyncIterator = require(\"./regeneratorAsyncIterator.js\");\nfunction _regeneratorAsyncGen(r, e, t, o, n) {\n return new regeneratorAsyncIterator(regenerator().w(r, e, t, o), n || Promise);\n}\nmodule.exports = _regeneratorAsyncGen, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// 'mime-score' back-ported to CommonJS\n\n// Score RFC facets (see https://tools.ietf.org/html/rfc6838#section-3)\nvar FACET_SCORES = {\n 'prs.': 100,\n 'x-': 200,\n 'x.': 300,\n 'vnd.': 400,\n default: 900\n}\n\n// Score mime source (Logic originally from `jshttp/mime-types` module)\nvar SOURCE_SCORES = {\n nginx: 10,\n apache: 20,\n iana: 40,\n default: 30 // definitions added by `jshttp/mime-db` project?\n}\n\nvar TYPE_SCORES = {\n // prefer application/xml over text/xml\n // prefer application/rtf over text/rtf\n application: 1,\n\n // prefer font/woff over application/font-woff\n font: 2,\n\n default: 0\n}\n\n/**\n * Get each component of the score for a mime type. The sum of these is the\n * total score. The higher the score, the more \"official\" the type.\n */\nmodule.exports = function mimeScore (mimeType, source = 'default') {\n if (mimeType === 'application/octet-stream') {\n return 0\n }\n\n const [type, subtype] = mimeType.split('/')\n\n const facet = subtype.replace(/(\\.|x-).*/, '$1')\n\n const facetScore = FACET_SCORES[facet] || FACET_SCORES.default\n const sourceScore = SOURCE_SCORES[source] || SOURCE_SCORES.default\n const typeScore = TYPE_SCORES[type] || TYPE_SCORES.default\n\n // All else being equal prefer shorter types\n const lengthScore = 1 - mimeType.length / 100\n\n return facetScore + sourceScore + typeScore + lengthScore\n}\n","var regeneratorDefine = require(\"./regeneratorDefine.js\");\nfunction _regenerator() {\n /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */\n var e,\n t,\n r = \"function\" == typeof Symbol ? Symbol : {},\n n = r.iterator || \"@@iterator\",\n o = r.toStringTag || \"@@toStringTag\";\n function i(r, n, o, i) {\n var c = n && n.prototype instanceof Generator ? n : Generator,\n u = Object.create(c.prototype);\n return regeneratorDefine(u, \"_invoke\", function (r, n, o) {\n var i,\n c,\n u,\n f = 0,\n p = o || [],\n y = !1,\n G = {\n p: 0,\n n: 0,\n v: e,\n a: d,\n f: d.bind(e, 4),\n d: function d(t, r) {\n return i = t, c = 0, u = e, G.n = r, a;\n }\n };\n function d(r, n) {\n for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) {\n var o,\n i = p[t],\n d = G.p,\n l = i[2];\n r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0));\n }\n if (o || r > 1) return a;\n throw y = !0, n;\n }\n return function (o, p, l) {\n if (f > 1) throw TypeError(\"Generator is already running\");\n for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) {\n i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u);\n try {\n if (f = 2, i) {\n if (c || (o = \"next\"), t = i[o]) {\n if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\");\n if (!t.done) return t;\n u = t.value, c < 2 && (c = 0);\n } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1);\n i = e;\n } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break;\n } catch (t) {\n i = e, c = 1, u = t;\n } finally {\n f = 1;\n }\n }\n return {\n value: t,\n done: y\n };\n };\n }(r, o, i), !0), u;\n }\n var a = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n t = Object.getPrototypeOf;\n var c = [][n] ? t(t([][n]())) : (regeneratorDefine(t = {}, n, function () {\n return this;\n }), t),\n u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c);\n function f(e) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, regeneratorDefine(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e;\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, regeneratorDefine(u, \"constructor\", GeneratorFunctionPrototype), regeneratorDefine(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", regeneratorDefine(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), regeneratorDefine(u), regeneratorDefine(u, o, \"Generator\"), regeneratorDefine(u, n, function () {\n return this;\n }), regeneratorDefine(u, \"toString\", function () {\n return \"[object Generator]\";\n }), (module.exports = _regenerator = function _regenerator() {\n return {\n w: i,\n m: f\n };\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports)();\n}\nmodule.exports = _regenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = __WEBPACK_EXTERNAL_MODULE_$rdf__;","// Namespaces we commonly use and have common prefixes for around Solid\n\nimport solidNamespace from 'solid-namespace' // Delegate to this which takes RDFlib as param.\nimport * as $rdf from 'rdflib'\n\nexport default solidNamespace($rdf)\n","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nexport { _asyncToGenerator as default };","","// /////////////////////// Logging\n//\n// bitmask levels\n// const TNONE = 0\n/** @internal */\nconst TERROR = 1\n/** @internal */\nconst TWARN = 2\n/** @internal */\nconst TMESG = 4\n/** @internal */\nconst TSUCCESS = 8\n/** @internal */\nconst TINFO = 16\n/** @internal */\nconst TDEBUG = 32\n/** @internal */\nconst TALL = 63\n\n/** @internal */\nexport enum LogLevel {\n Error = TERROR,\n Warning = TWARN,\n Message = TMESG,\n Success = TSUCCESS,\n Info = TINFO,\n Debug = TDEBUG,\n All = TALL\n}\n\n/** @internal */\nlet _level: number = TERROR + TWARN + TMESG\n/** @internal */\nlet _ascending: boolean = false\n/** @internal */\nlet _dom: HTMLDocument = document // must be able to override for tests\n/** @internal */\nlet _window: Window = window // must be able to override for tests\n\n/** @internal */\nfunction log (str: string, type: number = TMESG, typestr: string = 'mesg') {\n if (!(_level & type)) return // bitmask\n\n if (typeof _dom !== 'undefined') {\n const logArea = _dom.getElementById('status')\n if (!logArea) return\n\n const addendum = _dom.createElement('span')\n addendum.setAttribute('class', typestr)\n const now = new Date()\n addendum.innerHTML = `${now.getHours()}:${now.getMinutes()}:${now.getSeconds()} [${typestr}] ${escapeForXML(str)}<br/>`\n if (_ascending) {\n logArea.insertBefore(addendum, logArea.firstChild)\n } else {\n logArea.appendChild(addendum)\n }\n } else if (typeof console !== 'undefined') {\n console.log(str)\n }\n}\n\n/**\n * Adds a message to the element with id \"status\". The messages are prepended with\n * time and type of message, in this case [mesg].\n */\nexport function msg (message: string) {\n log(message)\n}\n\n/**\n * Adds a warning message to the element with id \"status\". The messages are\n * prepended with time and type of message, in this case [warn].\n */\nexport function warn (message: string): void {\n log(message, TWARN, 'warn')\n}\n\n/**\n * Adds a debugging message to the element with id \"status\". The messages are\n * prepended with time and type of message, in this case [dbug].\n */\nexport function debug (message: string): void {\n log(message, TDEBUG, 'dbug')\n}\n\n/**\n * Adds a info message to the element with id \"status\". The messages are\n * prepended with time and type of message, in this case [info].\n */\nexport function info (message: string): void {\n log(message, TINFO, 'info')\n}\n\n/**\n * Adds a error to the element with id \"status\". The messages are\n * prepended with time and type of message, in this case [eror].\n */\nexport function error (message: string): void {\n log(message, TERROR, 'eror')\n}\n\n/**\n * Adds a success message to the element with id \"status\". The messages are\n * prepended with time and type of message, in this case [good].\n */\nexport function success (message: string): void {\n log(message, TSUCCESS, 'good')\n}\n\n/**\n * Uses the global alert to send an alert. If global alert is not available, it\n * will output the message using the method [[warning]]s.\n */\nexport function alert (message: string): void {\n if (_window && typeof _window.alert !== 'undefined') {\n _window.alert(message)\n } else {\n warn(message)\n }\n}\n\n/**\n * Will clear the content of the element with id \"status\".\n */\nexport function clear (): void {\n const logArea = _dom?.getElementById('status')\n if (!logArea) return\n logArea.innerHTML = ''\n}\n\n/**\n * Lets you configure which types of messages will be shown. The module uses\n * [bitmask](https://en.wikipedia.org/wiki/Mask_(computing)) to filter which\n * types of messages should be shown. E.g. if you only want warning messages\n * to be shown, pass 2 to the function, if you want warning and success to be\n * shown, pass 10 (2+8). By passing the sum of all, 63, you'll show all\n * types of messages.\n *\n * - Error: 1\n * - Warning: 2\n * - Message: 4\n * - Success: 8\n * - Info: 16\n * - Debug: 32\n */\nexport function setLevel (level: number): void {\n _level = TALL\n debug('Log level is now ' + level)\n _level = level\n}\n\n/**\n * Will dump the current HTML using the [[debug]] method.\n */\nexport function dumpHTML (): void {\n if (!_dom) return\n const level = _level\n _level = TALL\n debug(_dom?.body?.innerHTML || '')\n _level = level\n}\n\n/**\n * Will start prepending messages the list of log messages.\n */\nexport function logAscending () {\n _ascending = true\n}\n\n/**\n * Will start appending messages the list of log messages. (This is default\n * behavior.)\n */\nexport function logDescending () {\n _ascending = false\n}\n\n/** @internal */\nexport function escapeForXML (str: string): string {\n // can be replaced with function utils module when migrating\n return str\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n}\n\n/** @internal */\nexport function setInternals (window, document) {\n _window = window\n _dom = document\n}\n","import * as log from '../log'\nimport { store } from 'solid-logic'\nimport ns from '../ns'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\n\nconst UI = { log, ns, rdf }\n\n// This ubiquitous function returns the best label for a thing\n//\n// The hacks in this code make a major difference to the usability\nexport function label (thing, initialCap = false): string {\n function doCap (label: string) {\n if (initialCap) {\n return label.slice(0, 1).toUpperCase() + label.slice(1)\n }\n return label\n }\n function cleanUp (label: string) {\n let result = ''\n if (label.slice(-1) === '/') label = label.slice(0, -1) // chop trailing slash\n for (let i = 0; i < label.length; i++) {\n if (label[i] === '_' || label[i] === '-') {\n result += ' '\n continue\n }\n result += label[i]\n if (\n i + 1 < label.length &&\n label[i].toUpperCase() !== label[i] &&\n label[i + 1].toLowerCase() !== label[i + 1]\n ) {\n result += ' '\n }\n }\n if (result.slice(0, 4) === 'has ') result = result.slice(4)\n return doCap(result)\n }\n\n const label = getWellKnownLabel(thing)\n\n if (label) {\n return doCap(label.value)\n }\n\n // Default to label just generated from the URI\n\n if (thing.termType === 'BlankNode') {\n return '...'\n }\n if (thing.termType === 'Collection') {\n return '(' + thing.elements.length + ')'\n }\n let s = thing.uri\n if (typeof s === 'undefined') return thing.toString() // can't be a symbol\n // s = decodeURI(s) // This can crash is random valid @ signs are presentation\n // The idea was to clean up eg URIs encoded in query strings\n // Also encoded character in what was filenames like @ [] {}\n try {\n s = s\n .split('/')\n .map(decodeURIComponent)\n .join('/') // If it is properly encoded\n } catch (_e) {\n // try individual decoding of ASCII code points\n for (let i = s.length - 3; i > 0; i--) {\n const hex = '0123456789abcefABCDEF' // The while upacks multiple layers of encoding\n while (\n s[i] === '%' &&\n hex.indexOf(s[i + 1]) >= 0 &&\n hex.indexOf(s[i + 2]) >= 0\n ) {\n s =\n s.slice(0, i) +\n String.fromCharCode(parseInt(s.slice(i + 1, i + 3), 16)) +\n s.slice(i + 3)\n }\n }\n }\n\n s = slice(s, '/profile/card#me')\n s = slice(s, '#this')\n s = slice(s, '#me')\n\n const hash = s.indexOf('#')\n if (hash >= 0) return cleanUp(s.slice(hash + 1))\n\n // Eh? Why not do this? e.g. dc:title needs it only trim URIs, not rdfs:labels\n const slash = s.lastIndexOf('/', s.length - 2) // (len-2) excludes trailing slash\n if (slash >= 0 && slash < thing.uri.length) return cleanUp(s.slice(slash + 1))\n\n return doCap(decodeURIComponent(thing.uri))\n}\n\nfunction slice (s: string, suffix: string) {\n const length = suffix.length * -1\n if (s.slice(length) === suffix) {\n return s.slice(0, length)\n }\n return s\n}\n\n// Hard coded known label predicates\n// @@ TBD: Add subproperties of rdfs:label\nfunction getWellKnownLabel (thing) {\n return store.any(thing, UI.ns.ui('label')) || // Prioritize ui:label\n store.any(thing, UI.ns.link('message')) ||\n store.any(thing, UI.ns.vcard('fn')) ||\n store.any(thing, UI.ns.foaf('name')) ||\n store.any(thing, UI.ns.dct('title')) ||\n store.any(thing, UI.ns.dc('title')) ||\n store.any(thing, UI.ns.rss('title')) ||\n store.any(thing, UI.ns.contact('fullName')) ||\n store.any(thing, store.sym('http://www.w3.org/2001/04/roadmap/org#name')) ||\n store.any(thing, UI.ns.cal('summary')) ||\n store.any(thing, UI.ns.foaf('nick')) ||\n store.any(thing, UI.ns.as('name')) ||\n store.any(thing, UI.ns.schema('name')) ||\n store.any(thing, UI.ns.rdfs('label')) ||\n store.any(thing, store.sym('http://www.w3.org/2004/02/skos/core#prefLabel'))\n}\n","/**\n * Non-UI functions for access control.\n * See https://github.com/solidos/web-access-control-spec\n * for the spec that defines how ACL documents work.\n * @packageDocumentation\n */\n\nimport ns from '../ns'\nimport { solidLogicSingleton, ACL_LINK } from 'solid-logic'\nimport * as utils from '../utils'\nimport { AgentMapMap, AgentMapUnion, ComboList } from './types'\nimport * as debug from '../debug'\nimport { graph, Store, NamedNode, serialize, st, Statement, sym, LiveStore } from 'rdflib'\n\nconst kb = solidLogicSingleton.store\n\n/**\n * Take the \"default\" ACL and convert it into the equivalent ACL\n * which the resource would have had. Return it as a new separate store.\n * The \"defaultForNew\" predicate is also accepted, as a deprecated\n * synonym for \"default\".\n */\nexport function adoptACLDefault (\n doc: NamedNode,\n aclDoc: NamedNode,\n defaultResource: NamedNode,\n defaultACLDoc: NamedNode\n): Store {\n const ACL = ns.acl\n const isContainer = doc.uri.slice(-1) === '/' // Give default for all directories\n\n const defaults = kb\n .each(undefined, ACL('default'), defaultResource, defaultACLDoc)\n .concat(kb.each(undefined, ACL('defaultForNew'), defaultResource, defaultACLDoc))\n\n const proposed = defaults.reduce((accumulatedStatements, da) => accumulatedStatements\n .concat(kb.statementsMatching(da as NamedNode, ns.rdf('type'), ACL('Authorization'), defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('agent'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('agentClass'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('agentGroup'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('origin'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('originClass'), undefined, defaultACLDoc))\n .concat(kb.statementsMatching(da as NamedNode, ACL('mode'), undefined, defaultACLDoc))\n .concat(st(da as NamedNode, ACL('accessTo'), doc, defaultACLDoc))\n .concat(isContainer ? st(da as NamedNode, ACL('default'), doc, defaultACLDoc) : []), [] as Statement[])\n\n const kb2 = graph() // Potential - derived is kept apart\n proposed.forEach(st => kb2.add(move(st.subject), move(st.predicate), move(st.object), sym(aclDoc.uri)))\n return kb2 as LiveStore\n\n function move (symbol) {\n const y = defaultACLDoc.uri.length // The default ACL file\n return sym(\n symbol.uri.slice(0, y) === defaultACLDoc.uri\n ? aclDoc.uri + symbol.uri.slice(y)\n : symbol.uri\n )\n }\n}\n\n/**\n * Read and canonicalize the ACL for x in aclDoc\n *\n * Accumulate the access rights which each agent or class has\n */\nexport function readACL (\n doc: NamedNode,\n aclDoc: NamedNode,\n kb2: Store = kb,\n getDefaults: boolean = false\n): AgentMapMap {\n const auths: Array<NamedNode> = getDefaults\n ? getDefaultsFallback(kb2, ns)\n : kb2.each(undefined, ns.acl('accessTo'), doc)\n\n const ACL = ns.acl\n const ac = {\n agent: {},\n agentClass: {},\n agentGroup: {},\n origin: {},\n originClass: {}\n }\n Object.keys(ac).forEach(pred => {\n auths.forEach(function (a) {\n (kb2.each(a, ACL('mode')) as Array<NamedNode>).forEach(function (mode) {\n (kb2.each(a, ACL(pred)) as Array<NamedNode>).forEach(function (agent) {\n ac[pred][agent.uri] = ac[pred][agent.uri] || {}\n ac[pred][agent.uri][mode.uri] = a // could be \"true\" but leave pointer just in case\n })\n })\n })\n })\n return ac\n\n function getDefaultsFallback (kb, ns) {\n return kb\n .each(undefined, ns.acl('default'), doc)\n .concat(kb.each(undefined, ns.acl('defaultForNew'), doc))\n }\n}\n\n/**\n * Compare two ACLs\n */\nexport function sameACL (a: AgentMapMap | AgentMapUnion, b: AgentMapMap | AgentMapUnion): boolean {\n const contains = function (a, b) {\n for (const pred in {\n agent: true,\n agentClass: true,\n agentGroup: true,\n origin: true,\n originClass: true\n }) {\n if (a[pred]) {\n for (const agent in a[pred]) {\n for (const mode in a[pred][agent]) {\n if (!b[pred][agent] || !b[pred][agent][mode]) {\n return false\n }\n }\n }\n }\n }\n return true\n }\n return contains(a, b) && contains(b, a)\n}\n\n/**\n * Union N ACLs\n */\nexport function ACLunion (list: Array<AgentMapMap | AgentMapUnion>): AgentMapUnion {\n const b = list[0]\n let a, ag\n for (let k = 1; k < list.length; k++) {\n ;['agent', 'agentClass', 'agentGroup', 'origin', 'originClass'].forEach(\n function (pred) {\n a = list[k]\n if (a[pred]) {\n for (ag in a[pred]) {\n for (const mode in a[pred][ag]) {\n if (!b[pred][ag]) b[pred][ag] = []\n b[pred][ag][mode] = true\n }\n }\n }\n }\n )\n }\n return b as AgentMapUnion\n}\n\ntype loadUnionACLCallback = (ok: boolean, message?: string | NamedNode | AgentMapUnion | AgentMapMap) => void\n\n/**\n * Merge ACLs lists from things to form union\n */\nexport function loadUnionACL (subjectList: Array<NamedNode>, callbackFunction: loadUnionACLCallback): void {\n const aclList: Array<AgentMapMap> = []\n const doList = function (list) {\n if (list.length) {\n const doc = list.shift().doc()\n getACLorDefault(doc, function (\n ok,\n p2,\n targetDoc,\n targetACLDoc,\n defaultHolder,\n defaultACLDoc\n ) {\n const defa = !p2\n if (!ok || !defaultHolder || !defaultACLDoc) return callbackFunction(ok, targetACLDoc)\n const acl = defa\n ? readACL(defaultHolder, defaultACLDoc)\n : readACL(targetDoc as NamedNode, targetACLDoc as NamedNode)\n aclList.push(acl)\n doList(list.slice(1))\n })\n } else {\n // all gone\n callbackFunction(true, ACLunion(aclList))\n }\n }\n doList(subjectList)\n}\n\n/**\n * Represents these as an RDF graph by combination of modes\n *\n * Each agent can only be in one place in this model, one combination of modes.\n * Combos are like full control, read append, read only etc.\n */\nexport function ACLbyCombination (ac: AgentMapMap | AgentMapUnion): ComboList {\n const byCombo = {}\n ;['agent', 'agentClass', 'agentGroup', 'origin', 'originClass'].forEach(function (pred) {\n for (const agent in ac[pred]) {\n const combo: string[] = []\n for (const mode in ac[pred][agent]) {\n combo.push(mode)\n }\n combo.sort()\n const combo2 = combo.join('\\n')\n if (!byCombo[combo2]) byCombo[combo2] = []\n byCombo[combo2].push([pred, agent])\n }\n })\n return byCombo\n}\n\n/**\n * Write ACL graph to store from AC\n */\nexport function makeACLGraph (kb: Store, x: NamedNode, ac: AgentMapMap, aclDoc: NamedNode): void {\n const byCombo = ACLbyCombination(ac)\n return makeACLGraphbyCombo(kb, x, byCombo, aclDoc)\n}\n\n/**\n * Write ACL graph to store from combo\n */\nexport function makeACLGraphbyCombo (\n kb: Store,\n x: NamedNode,\n byCombo: ComboList,\n aclDoc: NamedNode,\n main?: boolean,\n defa?: boolean\n): void {\n const ACL = ns.acl\n for (const combo in byCombo) {\n const pairs = byCombo[combo]\n if (!pairs.length) continue // do not add to store when no agent\n const modeURIs = combo.split('\\n')\n let short = modeURIs\n .map(function (u) {\n return u.split('#')[1]\n })\n .join('')\n if (defa && !main) short += 'Default' // don't muddle authorizations\n const a = kb.sym(aclDoc.uri + '#' + short)\n kb.add(a, ns.rdf('type'), ACL('Authorization'), aclDoc)\n if (main) {\n kb.add(a, ACL('accessTo'), x, aclDoc)\n }\n if (defa) {\n kb.add(a, ACL('default'), x, aclDoc)\n }\n for (let i = 0; i < modeURIs.length; i++) {\n kb.add(a, ACL('mode'), kb.sym(modeURIs[i]), aclDoc)\n }\n for (let i = 0; i < pairs.length; i++) {\n const pred = pairs[i][0]\n const ag = pairs[i][1]\n kb.add(a, ACL(pred), kb.sym(ag), aclDoc)\n }\n }\n}\n\n/**\n * Debugging short strings for dumping ACL\n * and possibly in the UI\n */\nexport function ACLToString (ac: AgentMapMap): string {\n return comboToString(ACLbyCombination(ac))\n}\n\n/**\n * Convert a [[ComboList]] to a string\n */\nexport function comboToString (byCombo: ComboList): string {\n let str = ''\n for (const combo in byCombo) {\n const modeURIs = combo.split('\\n')\n const initials = modeURIs\n .map(function (u) {\n return u.split('#')[1][0]\n })\n .join('')\n str += initials + ':'\n const pairs = byCombo[combo]\n for (let i = 0; i < pairs.length; i++) {\n const pred = pairs[i][0]\n const ag = sym(pairs[i][1])\n str += pred === 'agent' ? '@' : ''\n str += ag.sameTerm(ns.foaf('Agent')) ? '*' : utils.label(ag)\n if (i < pairs.length - 1) str += ','\n }\n str += ';'\n }\n return '{' + str.slice(0, -1) + '}' // drop extra semicolon\n}\n\n/**\n * Write ACL graph as Turtle\n */\nexport function makeACLString (x: NamedNode, ac: AgentMapMap, aclDoc: NamedNode): string {\n const kb2 = graph()\n makeACLGraph(kb2, x, ac, aclDoc)\n return serialize(aclDoc, kb2, aclDoc.uri, 'text/turtle') || ''\n}\n\n/**\n * Write ACL graph to web\n */\nexport function putACLObject (\n kb: LiveStore,\n x: NamedNode,\n ac: AgentMapMap | AgentMapUnion,\n aclDoc: NamedNode,\n callbackFunction: (ok: boolean, message?: string) => void\n): void {\n const byCombo = ACLbyCombination(ac)\n return putACLbyCombo(kb, x, byCombo, aclDoc, callbackFunction)\n}\n\n/**\n * Write ACL graph to web from a [[ComboList]]\n */\nexport function putACLbyCombo (\n kb: LiveStore,\n x: NamedNode,\n byCombo: ComboList,\n aclDoc: NamedNode,\n callbackFunction: (ok: boolean, message?: string) => void\n): void {\n const kb2 = graph()\n makeACLGraphbyCombo(kb2, x, byCombo, aclDoc, true)\n\n // const str = makeACLString = function(x, ac, aclDoc)\n kb.updater?.put(\n aclDoc,\n kb2.statementsMatching(undefined, undefined, undefined, aclDoc),\n 'text/turtle',\n function (uri, ok, message) {\n if (!ok) {\n callbackFunction(ok, message)\n } else {\n kb.fetcher?.unload(aclDoc)\n makeACLGraphbyCombo(kb, x, byCombo, aclDoc, true)\n kb.fetcher!.requested[aclDoc.uri] = 'done' // missing: save headers\n callbackFunction(ok)\n }\n }\n )\n}\n\ntype fixIndividualCardACLCallback = (ok: boolean, message?: string | NamedNode | AgentMapUnion | AgentMapMap) => void\ntype fixIndividualACLCallback = (ok: boolean, message?: string | NamedNode | AgentMapUnion | AgentMapMap) => void\n\n/**\n * Fix the ACl for an individual card as a function of the groups it is in\n *\n * All group files must be loaded first\n */\nexport function fixIndividualCardACL (person: NamedNode, log: Function, callbackFunction: fixIndividualCardACLCallback): void {\n const groups = kb.each(undefined, ns.vcard('hasMember'), person) as NamedNode[]\n // const doc = person.doc()\n if (groups) {\n fixIndividualACL(person, groups, log, callbackFunction)\n } else {\n log('This card is in no groups')\n callbackFunction(true) // fine, no requirements to access. default should be ok\n }\n // @@ if no groups, then use default for People container or the book top container.?\n}\n\n/**\n * This function is used by [[fixIndividualCardACL]]\n */\nexport function fixIndividualACL (item: NamedNode, subjects: Array<NamedNode>, log: Function, callbackFunction: fixIndividualACLCallback): void {\n log = log || debug.log\n const doc = item.doc()\n getACLorDefault(doc, function (\n ok,\n exists,\n targetDoc,\n targetACLDoc,\n defaultHolder,\n defaultACLDoc\n ) {\n if (!ok || !defaultHolder || !defaultACLDoc) return callbackFunction(false, targetACLDoc) // ie message\n const ac = exists\n ? readACL(targetDoc as NamedNode, targetACLDoc as NamedNode)\n : readACL(defaultHolder, defaultACLDoc)\n loadUnionACL(subjects, function (ok, union) {\n if (!ok) return callbackFunction(false, union)\n if (sameACL(union as AgentMapMap | AgentMapUnion, ac)) {\n log('Nice - same ACL. no change ' + utils.label(item) + ' ' + doc)\n } else {\n log('Group ACLs differ for ' + utils.label(item) + ' ' + doc)\n\n // log(\"Group ACLs: \" + makeACLString(targetDoc, union, targetACLDoc))\n // log((exists ? \"Previous set\" : \"Default\") + \" ACLs: \" +\n // makeACLString(targetDoc, ac, targetACLDoc))\n\n putACLObject(\n kb as unknown as LiveStore,\n targetDoc as NamedNode,\n union as AgentMapMap | AgentMapUnion,\n targetACLDoc as NamedNode,\n callbackFunction\n )\n }\n })\n })\n}\n\n/**\n * Set an ACL\n */\nexport function setACL (\n docURI: NamedNode,\n aclText: string,\n callbackFunction: (ok: boolean, message: string) => void\n): void {\n const aclDoc = kb.any(\n docURI,\n ACL_LINK\n ) // @@ check that this get set by web.js\n if (!kb.fetcher) {\n throw new Error('Store has no fetcher')\n }\n if (aclDoc) {\n // Great we already know where it is\n kb.fetcher\n .webOperation('PUT', aclDoc.value, {\n data: aclText,\n contentType: 'text/turtle'\n })\n .then((res) => {\n callbackFunction(res.ok, res.error || '')\n }) // @@@ check params\n } else {\n kb.fetcher.nowOrWhenFetched(docURI, undefined, function (ok, body) {\n if (!ok) return callbackFunction(ok, 'Gettting headers for ACL: ' + body)\n const aclDoc = kb.any(\n docURI,\n ACL_LINK\n ) // @@ check that this get set by web.js\n if (!aclDoc) {\n // complainIfBad(false, \"No Link rel=ACL header for \" + docURI)\n callbackFunction(false, 'No Link rel=ACL header for ' + docURI)\n } else {\n if (!kb.fetcher) {\n throw new Error('Store has no fetcher')\n }\n kb.fetcher\n .webOperation('PUT', aclDoc.value, {\n data: aclText,\n contentType: 'text/turtle'\n })\n .then((res) => {\n callbackFunction(res.ok, res.error || '')\n })\n }\n })\n }\n}\n\n/**\n * Get ACL file or default if necessary\n *\n * @param callbackFunction Will be called in the following ways, in the following cases:\n * * `callbackFunction(true, true, doc, aclDoc)` if the ACL did exist\n * * `callbackFunction(true, false, doc, aclDoc, defaultHolder, defaultACLDoc)` if the ACL file did not exist but a default did\n * * `callbackFunction(false, false, status, message)` when there was an error getting the original\n * * `callbackFunction(false, true, status, message)` when there was an error getting the default\n */\nexport function getACLorDefault (\n doc: NamedNode,\n callbackFunction: (\n a: boolean,\n b: boolean,\n statusOrMessage: number | NamedNode,\n message: string | NamedNode,\n c?: NamedNode,\n d?: NamedNode\n ) => void\n): void {\n getACL(doc, function (ok, status, aclDoc, message): string | void {\n const ACL = ns.acl\n if (!ok) return callbackFunction(false, false, status as number, message as string)\n\n // Recursively search for the ACL file which gives default access\n const tryParent = function (uri) {\n if (uri.slice(-1) === '/') {\n uri = uri.slice(0, -1)\n }\n const right = uri.lastIndexOf('/')\n const left = uri.indexOf('/', uri.indexOf('//') + 2)\n if (left > right) {\n return callbackFunction(false, true, 404, 'Found no ACL resource')\n }\n uri = uri.slice(0, right + 1)\n const doc2 = sym(uri)\n getACL(doc2, function (ok, status, defaultACLDoc: any): NamedNode | void {\n if (!ok) {\n return callbackFunction(\n false,\n true,\n status as number,\n `( No ACL pointer ${uri} ${status})${defaultACLDoc}`\n ) as void\n } else if (status === 403) {\n return callbackFunction(\n false,\n true,\n status,\n `( default ACL file FORBIDDEN. Stop.${uri})`\n )\n } else if (status === 404) {\n return tryParent(uri)\n } else if (status !== 200) {\n return callbackFunction(\n false,\n true,\n status as number,\n `Error status '${status}' searching for default for ${doc2}`\n )\n }\n // 200\n // statusBlock.textContent += (\" ACCESS set at \" + uri + \". End search.\")\n const defaults = kb\n .each(undefined, ACL('default'), kb.sym(uri), defaultACLDoc)\n .concat(\n kb.each(undefined, ACL('defaultForNew'), kb.sym(uri), defaultACLDoc)\n )\n if (!defaults.length) {\n return tryParent(uri) // Keep searching\n }\n const defaultHolder = kb.sym(uri)\n return callbackFunction(\n true,\n false,\n doc,\n aclDoc as NamedNode,\n defaultHolder,\n defaultACLDoc as NamedNode\n )\n })\n } // tryParent\n\n if (!ok) {\n return callbackFunction(\n false,\n false,\n status as number,\n `Error accessing Access Control information for ${doc}) ${message}`\n )\n } else if (status === 404) {\n tryParent(doc.uri) // @@ construct default one - the server should do that\n } else if (status === 403) {\n return callbackFunction(\n false,\n false,\n status,\n `(Sharing not available to you)${message}`\n )\n } else if (status !== 200) {\n return callbackFunction(\n false,\n false,\n status as number,\n `Error ${status} accessing Access Control information for ${doc}: ${message}`\n )\n } else {\n // 200\n return callbackFunction(true, true, doc, aclDoc as NamedNode)\n }\n }) // Call to getACL\n}\n\n/**\n * Calls back `(ok, status, acldoc, message)` as follows\n *\n * * `(false, 900, errormessage)` if no link header\n * * `(true, 403, documentSymbol, fileaccesserror)` if not authorized\n * * `(true, 404, documentSymbol, fileaccesserror)` if does not exist\n * * `(true, 200, documentSymbol)` if file exists and read OK\n */\nexport function getACL (\n doc: NamedNode,\n callbackFunction: (\n ok: boolean,\n messageOrStatus: number | string,\n messageOrDoc?: NamedNode | string,\n message?: string\n ) => void\n): void {\n if (!kb.fetcher) {\n throw new Error('kb has no fetcher')\n }\n kb.fetcher.nowOrWhenFetched(doc, undefined, function (ok, body) {\n if (!ok) {\n return callbackFunction(ok, `Can't get headers to find ACL for ${doc}: ${body}`)\n }\n const aclDoc = kb.any(\n doc,\n ACL_LINK\n ) // @@ check that this get set by web.js\n if (!aclDoc) {\n callbackFunction(false, 900, `No Link rel=ACL header for ${doc}`)\n } else {\n if (!kb.fetcher) {\n throw new Error('kb has no fetcher')\n }\n if (kb.fetcher.nonexistent[aclDoc.value]) {\n return callbackFunction(\n true,\n 404,\n aclDoc as NamedNode,\n `ACL file ${aclDoc} does not exist.`\n )\n }\n kb.fetcher.nowOrWhenFetched(aclDoc as NamedNode, undefined, function (\n ok,\n message,\n response\n ) {\n if (!ok) {\n callbackFunction(\n true,\n response.status,\n aclDoc as NamedNode,\n `Can't read Access Control File ${aclDoc}: ${message}`\n )\n } else {\n callbackFunction(true, 200, aclDoc as NamedNode)\n }\n })\n }\n })\n}\n\n/**\n * Calls [[getACLorDefault]] and then (?)\n */\nexport async function getProspectiveHolder (targetDirectory: string): Promise<NamedNode | undefined> {\n return new Promise((resolve, reject) => getACLorDefault(sym(targetDirectory), (\n ok,\n isDirectACL,\n targetDoc,\n targetACLDoc,\n defaultHolder\n ) => {\n if (ok) {\n return resolve((isDirectACL ? targetDoc : defaultHolder) as NamedNode)\n }\n return reject(new Error(`Error loading ${targetDirectory}`))\n }))\n}\n","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nexport { _iterableToArrayLimit as default };","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","export default {\n highlightColor: '#7C4DFF', // Solid lavender https://design.inrupt.com/atomic-core/?cat=Core\n\n formBorderColor: '#888888', // Mid-grey\n formHeadingColor: '#888888', // originally was brown; now grey\n lowProfileLinkColor: '#3B5998', // Grey-blue, e.g., for field labels linking to ontology\n formFieldNameBoxWidth: '8em', // The fixed amount to get form fields to line up\n // We put in the latter when switching away from using tables. However, getting\n // alignment between fields in different groups is a hard problem.\n\n mediaModuleCanvasWidth: '640',\n mediaModuleCanvasHeight: '480',\n\n textInputSize: 20, // Rough default text input size, in characters\n tabBorderRadius: '0.2em',\n\n textInputBackgroundColor: '#eef',\n textInputBackgroundColorUneditable: '#fff',\n textInputColor: '#000',\n textInputColorPending: '#888',\n\n defaultErrorBackgroundColor: '#fee',\n\n participationDefaultBackground: 'white',\n\n basicMaxLength: '4096'\n}\n","// Common readable consistent stylesheet\n// to avoid using style sheets which are document-global\n// and make programmable style toggling with selection, drag over, etc easier\n// These must all end with semicolon so they can be appended to.\n\nimport styleConstants from './styleConstants'\n\nexport const style = { // styleModule\n\n checkboxStyle: 'color: black; font-size: 100%; padding-left: 0.5 em; padding-right: 0.5 em;',\n checkboxInputStyle: 'font-size: 150%; height: 1.2em; width: 1.2em; background-color: #eef; border-radius:0.2em; margin: 0.1em;',\n\n fieldLabelStyle: 'color: #3B5998; text-decoration: none;',\n formSelectStyle:\n 'background-color: #eef; padding: 0.5em; border: .05em solid #88c; border-radius:0.2em; font-size: 100%; margin:0.4em;',\n textInputStyle:\n 'background-color: #eef; padding: 0.5em; border: .05em solid #88c; border-radius:0.2em; font-size: 100%; margin:0.4em;',\n textInputStyleUneditable: // Color difference only\n 'background-color: white; padding: 0.5em; border: .05em solid white; border-radius:0.2em; font-size: 100%; margin:0.4em;',\n buttonStyle:\n 'background-color: #fff; padding: 0.7em; border: .01em solid white; border-radius:0.2em; font-size: 100%; margin: 0.3em;', // 'background-color: #eef;\n commentStyle: 'padding: 0.7em; border: none; font-size: 100%; white-space: pre-wrap;',\n iconStyle: 'width: 3em; height: 3em; margin: 0.1em; border-radius: 1em;',\n smallButtonStyle: 'margin: 0.2em; width: 1em; height:1em;',\n classIconStyle: 'width: 3em; height: 3em; margin: 0.1em; border-radius: 0.2em; border: 0.1em solid green; padding: 0.2em; background-color: #efe;', // combine with buttonStyle\n confirmPopupStyle: 'padding: 0.7em; border-radius: 0.2em; border: 0.1em solid orange; background-color: white; box-shadow: 0.5em 0.9em #888;',\n messageBodyStyle:\n 'white-space: pre-wrap; width: 99%; font-size:100%; border: 0.07em solid #eee; border-radius:0.2em; padding: .3em 0.5em; margin: 0.1em;',\n pendingeditModifier: 'color: #bbb;',\n\n // Contacts\n personaBarStyle: 'width: 100%; height: 4em; background-color: #eee; vertical-align: middle;',\n searchInputStyle: 'border: 0.1em solid #444; border-radius: 0.2em; width: 100%; font-size: 100%; padding: 0.1em 0.6em; margin 0.2em;',\n autocompleteRowStyle: 'border: 0.2em solid straw;',\n\n // Login buttons\n signInAndUpButtonStyle: 'padding: 1em; border-radius:0.2em; font-size: 100%;', // was 0.5em radius\n headerBannerLoginInput: 'margin: 0.75em 0 0.75em 0.5em !important; padding: 0.5em !important;',\n signUpBackground: 'background-color: #eef;',\n signInBackground: 'background-color: #efe;',\n\n // Forms\n heading1Style: 'font-size: 180%; font-weight: bold; color: #888888; padding: 0.5em; margin: 0.7em 0.0m;', // originally was brown; now grey\n heading2Style: 'font-size: 130%; font-weight: bold; color: #888888; padding: 0.4em; margin: 0.7em 0.0em;', // originally was brown; now grey\n heading3Style: 'font-size: 120%; font-weight: bold; color: #888888; padding: 0.3em; margin: 0.7em 0.0em;', // For example, in large forms or before a small form\n heading4Style: 'font-size: 110%; font-weight: bold; color: #888888; padding: 0.2em; margin: 0.7em 0.0em;', // Lowest level used by default in small things\n\n formHeadingStyle: 'font-size: 110%; font-weight: bold; color: #888888; padding: 0.2em; margin: 0.7em 0.0em;', // originally was brown; now grey\n formTextInput: 'font-size: 100%; margin: 0.1em; padding: 0.1em;', // originally used this\n formGroupStyle: [`padding-left: 0em; border: 0.0em solid ${styleConstants.formBorderColor}; border-radius: 0.2em;`, // weight 0\n `padding-left: 2em; border: 0.05em solid ${styleConstants.formBorderColor}; border-radius: 0.2em;`,\n `padding-left: 2em; border: 0.1em solid ${styleConstants.formBorderColor}; border-radius: 0.2em;`,\n `padding-left: 2em; border: 0.2em solid ${styleConstants.formBorderColor}; border-radius: 0.2em;` // @@ pink\n ],\n\n formFieldLabelStyle: `color: ${styleConstants.lowProfileLinkColor}; text-decoration: none;`,\n formFieldNameBoxStyle: `padding: 0.3em; vertical-align: middle; width:${styleConstants.formFieldNameBoxWidth};`,\n multilineTextInputStyle: 'font-size:100%; white-space: pre-wrap; background-color: #eef;' +\n ' border: 0.07em solid gray; padding: 1em 0.5em; margin: 1em 1em;',\n\n // Buttons\n renderAsDivStyle: 'display: flex; align-items: center; justify-content: space-between; height: 2.5em; padding: 1em;',\n imageDivStyle: 'width:2.5em; padding:0.5em; height: 2.5em;',\n linkDivStyle: 'width:2em; padding:0.5em; height: 4em;',\n\n // ACL\n aclControlBoxContainer: 'margin: 1em;',\n aclControlBoxHeader: 'font-size: 120%; margin: 0 0 1rem;',\n aclControlBoxStatus: 'display: none; margin: 1rem 0;',\n aclControlBoxStatusRevealed: 'display: block;',\n aclGroupContent: 'maxWidth: 650;',\n accessGroupList: 'display: grid; grid-template-columns: 1fr; margin: 1em; width: 100%;',\n accessGroupListItem: 'display: grid; grid-template-columns: 100px auto 30%;',\n defaultsController: 'display: flex;',\n defaultsControllerNotice: 'color: #888; flexGrow: 1; fontSize: 80%;',\n bigButton: 'background-color: white; border: 0.1em solid #888; border-radius: 0.3em; max-width: 50%; padding-bottom: 1em; padding-top: 1em;',\n group: 'color: #888;',\n group1: 'color: green;',\n group2: 'color: #cc0;',\n group3: 'color: orange;',\n group5: 'color: red;',\n group9: 'color: blue;',\n group13: 'color: purple;',\n\n trustedAppAddApplicationsTable: 'background-color: #eee;',\n trustedAppCancelButton: 'float: right;',\n trustedAppControllerI: 'border-color: orange; border-radius: 1em; border-width: 0.1em;',\n temporaryStatusInit: 'background: green;',\n temporaryStatusEnd: 'background: transparent; transition: background 5s linear;',\n\n // header\n headerUserMenuLink: 'background: none; border: 0; color: black; cursor: pointer; display: block; font-family: Arial; font-size: 1em; text-align: left; padding: 1em; width: 100%; text-decoration: none;',\n headerUserMenuLinkHover: 'background: none; border: 0; color: black; cursor: pointer; display: block; font-family: Arial; font-size: 1em; text-align: left; padding: 1em; width: 100%; text-decoration: none; background-image: linear-gradient(to right, #7C4DFF 0%, #18A9E6 50%, #01C9EA 100%);',\n headerUserMenuTrigger: 'background: none; border: 0; cursor: pointer; width: 60px; height: 60px;',\n headerUserMenuTriggerImg: 'border-radius: 50%; height: 56px; width: 28px !important;',\n headerUserMenuButton: 'background: none; border: 0; color: black; cursor: pointer; display: block; font-family: Arial; font-size: 1em; text-align: left; padding: 1em; width: 100%;',\n headerUserMenuButtonHover: 'background: none; border: 0; color: black; cursor: pointer; display: block; font-family: Arial; font-size: 1em; text-align: left; padding: 1em; width: 100%; background-image: linear-gradient(to right, #7C4DFF 0%, #18A9E6 50%, #01C9EA 100%);',\n headerUserMenuList: 'list-style: none; margin: 0; padding: 0;',\n headerUserMenuListDisplay: 'list-style: none; margin: 0; padding: 0; display:true;',\n headerUserMenuNavigationMenu: 'background: white; border: solid 1px #000000; border-right: 0; position: absolute; right: 0; top: 60px; width: 200px; z-index: 1; display: true;',\n headerUserMenuNavigationMenuNotDisplayed: 'background: white; border: solid 1px #000000; border-right: 0; position: absolute; right: 0; top: 60px; width: 200px; z-index: 1; display: none;',\n headerUserMenuListItem: 'border-bottom: solid 1px #000000;',\n headerUserMenuPhoto: 'border-radius: 50%; background-position: center; background-repeat: no-repeat; background-size: cover; height: 50px; width: 50px;',\n headerBanner: 'box-shadow: 0px 1px 4px #000000; display: flex; justify-content: space-between; padding: 0 1.5em; margin-bottom: 4px;',\n headerBannerLink: 'display: block;',\n headerBannerRightMenu: 'display: flex;',\n headerBannerLogin: 'margin-left: auto;',\n allChildrenVisible: 'display:true;',\n headerBannerUserMenu: 'border-left: solid 1px #000000; margin-left: auto;',\n headerBannerHelpMenu: 'border-left: solid 1px #000000; margin-left: auto;',\n headerBannerIcon: 'background-size: 65px 60px !important; height: 60px !important; width: 65px !important;', // may just be 65px round($icon-size * 352 / 322);\n\n // footer\n footer: 'border-top: solid 1px $divider-color; font-size: 0.9em; padding: 0.5em 1.5em;',\n\n // buttons\n primaryButton: 'background-color: #7c4dff; color: #ffffff; font-family: Raleway, Roboto, sans-serif; border-radius: 0.25em; border-color: #7c4dff; border: 1px solid; cursor: pointer; font-size: .8em; text-decoration: none; padding: 0.5em 4em; transition: 0.25s all ease-in-out; outline: none;',\n primaryButtonHover: 'background-color: #9f7dff; color: #ffffff; font-family: Raleway, Roboto, sans-serif;border-radius: 0.25em; border-color: #7c4dff; border: 1px solid; cursor: pointer; font-size: .8em; text-decoration: none; padding: 0.5em 4em; transition: 0.25s all ease-in-out; outline: none; transition: 0.25s all ease-in-out;',\n primaryButtonNoBorder: 'background-color: #ffffff; color: #7c4dff; font-family: Raleway, Roboto, sans-serif;border-radius: 0.25em; border-color: #7c4dff; border: 1px solid; cursor: pointer; font-size: .8em; text-decoration: none; padding: 0.5em 4em; transition: 0.25s all ease-in-out; outline: none;',\n primaryButtonNoBorderHover: 'background-color: #7c4dff; color: #ffffff; font-family: Raleway, Roboto, sans-serif; border-radius: 0.25em; border-color: #7c4dff; border: 1px solid; cursor: pointer; font-size: .8em; text-decoration: none; padding: 0.5em 4em; transition: 0.25s all ease-in-out; outline: none; transition: 0.25s all ease-in-out;',\n secondaryButton: 'background-color: #01c9ea; color: #ffffff; font-family: Raleway, Roboto, sans-serif;border-radius: 0.25em; border-color: #01c9ea; border: 1px solid; cursor: pointer; font-size: .8em; text-decoration: none; padding: 0.5em 4em; transition: 0.25s all ease-in-out; outline: none;',\n secondaryButtonHover: 'background-color: #37cde6; color: #ffffff; font-family: Raleway, Roboto, sans-serif;border-radius: 0.25em; border-color: #7c4dff; border: 1px solid; cursor: pointer; font-size: .8em; text-decoration: none; padding: 0.5em 4em; transition: 0.25s all ease-in-out; outline: none; transition: 0.25s all ease-in-out;',\n secondaryButtonNoBorder: 'background-color: #ffffff; color: #01c9ea; font-family: Raleway, Roboto, sans-serif; border-radius: 0.25em; border-color: #01c9ea; border: 1px solid; cursor: pointer; font-size: .8em; text-decoration: none; padding: 0.5em 4em; transition: 0.25s all ease-in-out; outline: none;',\n secondaryButtonNoBorderHover: 'background-color: #01c9ea; color: #ffffff; font-family: Raleway, Roboto, sans-serif; border-radius: 0.25em; border-color: #01c9ea; border: 1px solid; cursor: pointer; font-size: .8em; text-decoration: none; padding: 0.5em 4em; transition: 0.25s all ease-in-out; outline: none; transition: 0.25s all ease-in-out;',\n\n // media\n controlStyle: `border-radius: 0.5em; margin: 0.8em; width:${styleConstants.mediaModuleCanvasWidth}; height:${styleConstants.mediaModuleCanvasHeight};`,\n\n // dragAndDrop\n dragEvent: 'background-color: #ccc; border: 0.25em dashed black; border-radius: 0.3em;',\n dropEvent: 'background-color: white; border: 0em solid black;',\n restoreStyle: 'background-color: white;',\n\n // errors\n errorCancelButton: 'width: 2em; height: 2em; align: right;',\n errorMessageBlockStyle: 'margin: 0.1em; padding: 0.5em; border: 0.05em solid gray; color:black;',\n\n // pad\n notepadStyle: 'padding: 1em; overflow: auto; resize: horizontal; min-width: 40em;',\n upstreamStatus: 'width: 50%;',\n downstreamStatus: 'width: 50%;',\n baseStyle: 'font-size: 100%; font-family: monospace; width: 100%; border: none; white-space: pre-wrap;',\n headingCore: 'font-family: sans-serif; font-weight: bold; border: none;',\n headingStyle: [\n 'font-size: 110%; padding-top: 0.5em; padding-bottom: 0.5em; width: 100%;',\n 'font-size: 120%; padding-top: 1em; padding-bottom: 1em; width: 100%;',\n 'font-size: 150%; padding-top: 1em; padding-bottom: 1em; width: 100%;'\n ],\n\n // participation\n participantsStyle: 'margin: 0.8em;',\n participantsBlock: 'height: 1.5em; width: 1.5em; margin: 0.3em; border 0.01em solid #888;',\n personTableTD: 'vertical-align: middle;',\n\n // tabs\n tabsNavElement: 'margin: 0;',\n tabsRootElement: 'display: flex; height: 100%; width: 100%;',\n tabsMainElement: 'margin: 0; width:100%; height: 100%;',\n tabContainer: 'list-style-type: none; display: flex; height: 100%; width: 100%; margin: 0; padding: 0;',\n makeNewSlot: 'background: none; border: none; font: inherit; cursor: pointer;',\n ellipsis: 'position: absolute; right: 0; bottom: 0; width: 20%; background: none; color: inherit; border: none; padding: 0; font: inherit; cursor: pointer; outline: inherit;'\n\n}\n\nstyle.setStyle = function setStyle (ele, styleName) {\n ele.style = style[styleName]\n}\n","/* Drag and drop common functionality\n *\n * It is easy to make something draggable, or to make it a drag target!\n * Just call the functions below. In a Solid world, any part of the UI which\n * represents one thing which has a URI, should be made draggable using makeDraggable.\n * Any list of things should typically allow you to drag new members of the list\n * onto it.\n * The file upload function, uploadFiles, is provided as often as someone drags a file from the computer\n * desktop. You may want to upload it into the pod.\n */\nimport * as debug from '../debug'\nimport * as mime from 'mime-types'\nimport { style } from '../style'\n\n/* global FileReader alert */\n\nexport function makeDropTarget (ele, droppedURIHandler, droppedFileHandler) {\n const dragoverListener = function (e) {\n e.preventDefault() // Need this; otherwise, drop does not work.\n e.dataTransfer.dropEffect = 'copy'\n }\n\n const dragenterListener = function (e) {\n debug.log('dragenter event dropEffect: ' + e.dataTransfer.dropEffect)\n if (this.localStyle) {\n // necessary not sure when\n if (!this.savedStyle) {\n this.savedStyle = style.dragEvent\n }\n }\n\n e.dataTransfer.dropEffect = 'link'\n debug.log('dragenter event dropEffect 2: ' + e.dataTransfer.dropEffect)\n }\n const dragleaveListener = function (e) {\n debug.log('dragleave event dropEffect: ' + e.dataTransfer.dropEffect)\n if (this.savedStyle) {\n this.localStyle = this.savedStyle\n } else {\n this.localStyle = style.dropEvent\n }\n }\n\n const dropListener = function (e) {\n if (e.preventDefault) e.preventDefault() // stops the browser from redirecting off to the text.\n debug.log('Drop event. dropEffect: ' + e.dataTransfer.dropEffect)\n debug.log(\n 'Drop event. types: ' +\n (e.dataTransfer.types ? e.dataTransfer.types.join(', ') : 'NOPE')\n )\n\n let uris = null\n let text\n if (e.dataTransfer.types) {\n for (let t = 0; t < e.dataTransfer.types.length; t++) {\n const type = e.dataTransfer.types[t]\n if (type === 'text/uri-list') {\n uris = e.dataTransfer.getData(type).split('\\n') // @ ignore those starting with #\n debug.log('Dropped text/uri-list: ' + uris)\n } else if (type === 'text/plain') {\n text = e.dataTransfer.getData(type)\n } else if (type === 'Files' && droppedFileHandler) {\n const files = e.dataTransfer.files // FileList object.\n for (let i = 0; files[i]; i++) {\n const f = files[i]\n debug.log(\n 'Filename: ' +\n f.name +\n ', type: ' +\n (f.type || 'n/a') +\n ' size: ' +\n f.size +\n ' bytes, last modified: ' +\n (f.lastModifiedDate\n ? f.lastModifiedDate.toLocaleDateString()\n : 'n/a')\n )\n }\n droppedFileHandler(files)\n }\n }\n if (uris === null && text && text.slice(0, 4) === 'http') {\n uris = text\n debug.log('Waring: Poor man\\'s drop: using text for URI') // chrome disables text/uri-list??\n }\n } else {\n // ... however, if we're IE, we don't have the .types property, so we'll just get the Text value\n uris = [e.dataTransfer.getData('Text')]\n debug.log('WARNING non-standard drop event: ' + uris[0])\n }\n debug.log('Dropped URI list (2): ' + uris)\n if (uris) {\n droppedURIHandler(uris)\n }\n this.localStyle = style.restoreStyle // restore style\n return false\n } // dropListener\n\n const addTargetListeners = function (ele) {\n if (!ele) {\n debug.log('@@@ addTargetListeners: ele ' + ele)\n }\n ele.addEventListener('dragover', dragoverListener)\n ele.addEventListener('dragenter', dragenterListener)\n ele.addEventListener('dragleave', dragleaveListener)\n ele.addEventListener('drop', dropListener)\n }\n addTargetListeners(ele, droppedURIHandler)\n} // listen for dropped URIs\n\n// Make an HTML element draggable as a URI-identified thing\n//\n// Possibly later set the drag image too?\n//\nexport function makeDraggable (tr, obj) {\n tr.setAttribute('draggable', 'true') // Stop the image being dragged instead - just the TR\n\n tr.addEventListener(\n 'dragstart',\n function (e) {\n tr.style.fontWeight = 'bold'\n e.dataTransfer.setData('text/uri-list', obj.uri)\n e.dataTransfer.setData('text/plain', obj.uri)\n e.dataTransfer.setData('text/html', tr.outerHTML)\n debug.log(\n 'Dragstart: ' + tr + ' -> ' + obj + 'de: ' + e.dataTransfer.dropEffect\n )\n },\n false\n )\n\n tr.addEventListener(\n 'drag',\n function (e) {\n e.preventDefault()\n e.stopPropagation()\n // debug.log('Drag: dropEffect: ' + e.dataTransfer.dropEffect)\n },\n false\n )\n\n tr.addEventListener(\n 'dragend',\n function (e) {\n tr.style.fontWeight = 'normal'\n debug.log('Dragend dropeffect: ' + e.dataTransfer.dropEffect)\n debug.log('Dragend: ' + tr + ' -> ' + obj)\n },\n false\n )\n}\n\n/** uploadFiles\n**\n** Generic uploader of local files to the web\n** typically called from dropped file handler\n**\n** @param {Fetcher} fetcher instance of class Fetcher as in kb.fetcher\n** @param {Array<File>} files Array of file objects\n** @param {String} fileBase URI of folder in which to put files (except images) (no trailing slash)\n** @param {String } imageBase URI of folder in which to put images\n** @param successHandler function(file, uploadedURI) Called after EACH success upload\n** With file object an final URI as params\n*/\n\nexport function uploadFiles (fetcher, files, fileBase, imageBase, successHandler) {\n for (let i = 0; files[i]; i++) {\n const f = files[i]\n debug.log(\n ' dropped: Filename: ' +\n f.name +\n ', type: ' +\n (f.type || 'n/a') +\n ' size: ' +\n f.size +\n ' bytes, last modified: ' +\n (f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a')\n ) // See e.g. https://www.html5rocks.com/en/tutorials/file/dndfiles/\n\n // @@ Add: progress bar(s)\n const reader = new FileReader()\n reader.onload = (function (theFile) {\n return function (e) {\n const data = e.target.result\n let suffix = ''\n debug.log(' File read byteLength : ' + data.byteLength)\n let contentType = theFile.type\n if (!theFile.type || theFile.type === '') {\n // Not known by browser\n contentType = mime.lookup(theFile.name)\n if (!contentType) {\n const msg =\n 'Filename needs to have an extension which gives a type we know: ' +\n theFile.name\n debug.log(msg)\n alert(msg)\n throw new Error(msg)\n }\n } else {\n const extension = mime.extension(theFile.type)\n // Note not simple: eg .mp3 => audio/mpeg; .mpga => audio/mpeg; audio/mp3 => .mp3\n if (extension && extension !== 'false' && !theFile.name.endsWith('.' + extension) && // Not already has preferred extension? and ...\n theFile.type !== mime.lookup(theFile.name)) { // the mime type of this ext is not the right one?\n suffix = '_.' + extension\n // console.log('MIME TYPE MISMATCH: ' + mime.lookup(theFile.name) + ': adding extension: ' + suffix)\n }\n }\n const folderName = theFile.type.startsWith('image/')\n ? imageBase || fileBase\n : fileBase\n const destURI =\n folderName +\n (folderName.endsWith('/') ? '' : '/') +\n encodeURIComponent(theFile.name) +\n suffix\n\n fetcher\n .webOperation('PUT', destURI, {\n data,\n contentType\n })\n .then(\n _response => {\n debug.log(' Upload: put OK: ' + destURI)\n successHandler(theFile, destURI)\n },\n error => {\n const msg = ' Upload: FAIL ' + destURI + ', Error: ' + error\n debug.log(msg)\n alert(msg)\n throw new Error(msg)\n }\n )\n }\n })(f)\n reader.readAsArrayBuffer(f)\n }\n}\n","// Solid-UI general Utilities\n// ==========================\n//\n// This must load AFTER the rdflib.js and log-ext.js (or log.js).\n//\nimport * as log from '../log'\nimport { store } from 'solid-logic'\nimport ns from '../ns'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\nimport { label } from './label'\n\nconst UI = { log, ns, rdf }\n\nexport {\n addLoadEvent, // not used anywhere\n AJARImage,\n ancestor,\n beep,\n clearVariableNames,\n emptyNode,\n escapeForXML,\n findPos,\n genUuid,\n getAbout,\n getEyeFocus,\n getTarget,\n getTerm,\n hashColor,\n include,\n label,\n labelForXML,\n labelWithOntology,\n newVariableName,\n ontologyLabel,\n predicateLabel,\n predicateLabelForXML,\n predParentOf,\n RDFComparePredicateObject,\n RDFComparePredicateSubject,\n shortName,\n stackString,\n syncTableToArray,\n syncTableToArrayReOrdered\n}\n\nlet nextVariable = 0\n\nfunction newVariableName () {\n return 'v' + nextVariable++\n}\n\nfunction clearVariableNames () {\n nextVariable = 0\n}\n\n// http://stackoverflow.com/questions/879152/how-do-i-make-javascript-beep\n// http://www.tsheffler.com/blog/2013/05/14/audiocontext-noteonnoteoff-and-time-units/\n\nlet audioContext\n\nif (typeof AudioContext !== 'undefined') {\n audioContext = AudioContext\n} else if (typeof window !== 'undefined') {\n audioContext = window.AudioContext || window.webkitAudioContext\n}\n\nfunction beep () {\n if (!audioContext) {\n return\n } // Safari 2015\n\n const ContextClass = audioContext\n const ctx = new ContextClass()\n\n return function (duration, frequency, type, finishedCallback) {\n duration = +(duration || 0.3)\n\n // Only 0-4 are valid types.\n type = type || 'sine' // sine, square, sawtooth, triangle\n\n if (typeof finishedCallback !== 'function') {\n finishedCallback = function () {}\n }\n\n const osc = ctx.createOscillator()\n\n osc.type = type\n osc.frequency.value = frequency || 256\n\n osc.connect(ctx.destination)\n osc.start(0)\n osc.stop(duration)\n }\n}\n\n// Make pseudorandom color from a uri\n// NOT USED ANYWHERE\nfunction hashColor (who) {\n who = who.uri || who\n const hash = function (x) {\n return x.split('').reduce(function (a, b) {\n a = (a << 5) - a + b.charCodeAt(0)\n return a & a\n }, 0)\n }\n return '#' + ((hash(who) & 0xffffff) | 0xc0c0c0).toString(16) // c0c0c0 or 808080 forces pale\n}\n\nfunction genUuid () {\n // http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0\n const v = c === 'x' ? r : (r & 0x3) | 0x8\n return v.toString(16)\n })\n}\n\n/** Sync a DOM table with an array of things\n *\n * @param {DomElement} table - will have a tr for each thing\n * @param {Array<NamedNode>} things - ORDERED array of NamedNode objects\n * @param {function({NamedNode})} createNewRow(thing) returns a TR table row for a new thing\n *\n * Tolerates out of order elements but puts new ones in order.\n * Can be used for any element type; does not have to be a table and tr.\n */\nfunction syncTableToArray (table, things, createNewRow) {\n let foundOne\n let row\n let i\n\n for (i = 0; i < table.children.length; i++) {\n row = table.children[i]\n row.trashMe = true\n }\n\n for (let g = 0; g < things.length; g++) {\n const thing = things[g]\n foundOne = false\n\n for (i = 0; i < table.children.length; i++) {\n row = table.children[i]\n if (row.subject && row.subject.sameTerm(thing)) {\n row.trashMe = false\n foundOne = true\n break\n }\n }\n if (!foundOne) {\n const newRow = createNewRow(thing)\n // Insert new row in position g in the table to match array\n if (g >= table.children.length) {\n table.appendChild(newRow)\n } else {\n const ele = table.children[g]\n table.insertBefore(newRow, ele)\n }\n newRow.subject = thing\n } // if not foundOne\n } // loop g\n\n for (i = 0; i < table.children.length; i++) {\n row = table.children[i]\n if (row.trashMe) {\n table.removeChild(row)\n }\n }\n} // syncTableToArray\n\n/** Sync a DOM table with an array of things\n *\n * @param {DomElement} table - will have a tr for each thing\n * @param {Array<NamedNode>} things - ORDERED array of UNIQUE NamedNode objects. No duplicates\n * @param {function({NamedNode})} createNewRow(thing) returns a rendering of a new thing\n *\n * Ensures order matches exacly. We will re-rder existing elements if necessary\n * Can be used for any element type; does not have to be a table and tr.\n * Any RDF node value can only appear ONCE in the array\n */\nfunction syncTableToArrayReOrdered (table, things, createNewRow) {\n const elementMap = {}\n\n for (let i = 0; i < table.children.length; i++) {\n const row = table.children[i]\n elementMap[row.subject.toNT()] = row // More sophisticaed would be to have a bag of duplicates\n }\n\n for (let g = 0; g < things.length; g++) {\n const thing = things[g]\n if (g >= table.children.length) { // table needs extending\n const newRow = createNewRow(thing)\n newRow.subject = thing\n table.appendChild(newRow)\n } else {\n const row = table.children[g]\n if (row.subject.sameTerm(thing)) {\n // ...\n } else {\n const existingRow = elementMap[thing.toNT()]\n if (existingRow) {\n table.removeChild(existingRow)\n table.insertBefore(existingRow, row) // Insert existing row in place of this one\n } else {\n const newRow = createNewRow(thing)\n row.before(newRow) // Insert existing row in place of this one\n newRow.subject = thing\n }\n }\n }\n } // loop g\n // Lop off any we don't need any more:\n while (table.children.length > things.length) {\n table.removeChild(table.children[table.children.length - 1])\n }\n} // syncTableToArrayReOrdered\n\n/* Error stack to string for better diagnotsics\n **\n ** See http://snippets.dzone.com/posts/show/6632\n */\nfunction stackString (e) {\n let str = '' + e + '\\n'\n let i\n if (!e.stack) {\n return str + 'No stack available.\\n'\n }\n const lines = e.stack.toString().split('\\n')\n const toPrint = []\n for (i = 0; i < lines.length; i++) {\n let line = lines[i]\n if (line.indexOf('ecmaunit.js') > -1) {\n // remove useless bit of traceback\n break\n }\n if (line.charAt(0) === '(') {\n line = 'function' + line\n }\n const chunks = line.split('@')\n toPrint.push(chunks)\n }\n // toPrint.reverse(); No - I prefer the latest at the top by the error message -tbl\n\n for (i = 0; i < toPrint.length; i++) {\n str += ' ' + toPrint[i][1] + '\\n ' + toPrint[i][0]\n }\n return str\n}\n\nfunction emptyNode (node) {\n const nodes = node.childNodes\n const len = nodes.length\n for (let i = len - 1; i >= 0; i--) node.removeChild(nodes[i])\n return node\n}\n\nfunction getTarget (e) {\n let target\n e = e || window.event\n if (e.target) target = e.target\n else if (e.srcElement) target = e.srcElement\n if (target.nodeType === 3) {\n // defeat Safari bug [sic]\n target = target.parentNode\n }\n // UI.log.debug(\"Click on: \" + target.tagName)\n return target\n}\n\nfunction ancestor (target, tagName) {\n let level\n for (level = target; level; level = level.parentNode) {\n // UI.log.debug(\"looking for \"+tagName+\" Level: \"+level+\" \"+level.tagName)\n try {\n if (level.tagName === tagName) return level\n } catch (e) {\n // can hit \"TypeError: can't access dead object\" in ffox\n return undefined\n }\n }\n return undefined\n}\n\nfunction getAbout (kb, target) {\n let level, aa\n for (\n level = target;\n level && level.nodeType === 1;\n level = level.parentNode\n ) {\n // UI.log.debug(\"Level \"+level + ' '+level.nodeType + ': '+level.tagName)\n aa = level.getAttribute('about')\n if (aa) {\n // UI.log.debug(\"kb.fromNT(aa) = \" + kb.fromNT(aa))\n return kb.fromNT(aa)\n // } else {\n // if (level.tagName=='TR') return undefined//this is to prevent literals passing through\n }\n }\n UI.log.debug('getAbout: No about found')\n return undefined\n}\n\nfunction getTerm (target) {\n const statementTr = target.parentNode\n const st = statementTr ? statementTr.AJAR_statement : undefined\n\n const className = st ? target.className : '' // if no st then it's necessary to use getAbout\n switch (className) {\n case 'pred':\n case 'pred selected':\n return st.predicate\n case 'obj':\n case 'obj selected':\n if (!statementTr.AJAR_inverse) {\n return st.object\n } else {\n return st.subject\n }\n case '':\n case 'selected': // header TD\n return getAbout(store, target) // kb to be changed\n case 'undetermined selected':\n return target.nextSibling\n ? st.predicate\n : !statementTr.AJAR_inverse\n ? st.object\n : st.subject\n }\n}\n\nfunction include (document, linkstr) {\n const lnk = document.createElement('script')\n lnk.setAttribute('type', 'text/javascript')\n lnk.setAttribute('src', linkstr)\n // TODO:This needs to be fixed or no longer used.\n // document.getElementsByTagName('head')[0].appendChild(lnk)\n return lnk\n}\n\nfunction addLoadEvent (func) {\n const oldonload = window.onload\n if (typeof window.onload !== 'function') {\n window.onload = func\n } else {\n window.onload = function () {\n oldonload()\n func()\n }\n }\n} // addLoadEvent\n\n// Find the position of an object relative to the window\nfunction findPos (obj) {\n // C&P from http://www.quirksmode.org/js/findpos.html\n const myDocument = obj.ownerDocument\n const DocBox = myDocument.documentElement.getBoundingClientRect()\n const box = obj.getBoundingClientRect()\n return [box.left - DocBox.left, box.top - DocBox.top]\n}\n\nfunction getEyeFocus (element, instantly, isBottom, myWindow) {\n if (!myWindow) myWindow = window\n const elementPosY = findPos(element)[1]\n const appContext = window.SolidAppContext || {}\n const scrollDiff = (appContext && appContext.scroll) || 52 // 52 = magic number for web-based version\n const totalScroll = elementPosY - scrollDiff - myWindow.scrollY\n\n if (instantly) {\n if (isBottom) {\n myWindow.scrollBy(\n 0,\n elementPosY +\n element.clientHeight -\n (myWindow.scrollY + myWindow.innerHeight)\n )\n return\n }\n myWindow.scrollBy(0, totalScroll)\n return\n }\n const id = myWindow.setInterval(scrollAmount, 50)\n let times = 0\n function scrollAmount () {\n myWindow.scrollBy(0, totalScroll / 10)\n times++\n if (times === 10) {\n myWindow.clearInterval(id)\n }\n }\n}\n\nfunction AJARImage (src, alt, tt, doc) {\n if (!doc) {\n doc = document\n }\n const image = doc.createElement('img')\n image.setAttribute('src', src)\n image.addEventListener('copy', function (e) {\n e.clipboardData.setData('text/plain', '')\n e.clipboardData.setData('text/html', '')\n e.preventDefault() // We want no title data to be written to the clipboard\n })\n // if (typeof alt != 'undefined') // Messes up cut-and-paste of text\n // image.setAttribute('alt', alt)\n if (typeof tt !== 'undefined') {\n image.setAttribute('title', tt)\n }\n return image\n}\n\n// Make short name for ontology\n\nfunction shortName (uri) {\n let p = uri\n if ('#/'.indexOf(p[p.length - 1]) >= 0) p = p.slice(0, -1)\n const namespaces = []\n for (const ns in this.prefixes) {\n namespaces[this.prefixes[ns]] = ns // reverse index\n }\n let pok\n const canUse = function canUse (pp) {\n // if (!__Serializer.prototype.validPrefix.test(pp)) return false; // bad format\n if (pp === 'ns') return false // boring\n // if (pp in this.namespaces) return false; // already used\n // this.prefixes[uri] = pp;\n // this.namespaces[pp] = uri;\n pok = pp\n return true\n }\n\n let i\n const hash = p.lastIndexOf('#')\n if (hash >= 0) p = p.slice(hash - 1) // lop off localid\n // eslint-disable-next-line no-unreachable-loop\n for (;;) {\n const slash = p.lastIndexOf('/')\n if (slash >= 0) p = p.slice(slash + 1)\n i = 0\n while (i < p.length) {\n if (this.prefixchars.indexOf(p[i])) i++\n else break\n }\n p = p.slice(0, i)\n if (p.length < 6 && canUse(p)) return pok // exact i sbest\n if (canUse(p.slice(0, 3))) return pok\n if (canUse(p.slice(0, 2))) return pok\n if (canUse(p.slice(0, 4))) return pok\n if (canUse(p.slice(0, 1))) return pok\n if (canUse(p.slice(0, 5))) return pok\n for (i = 0; ; i++) if (canUse(p.slice(0, 3) + i)) return pok\n }\n}\n\n// Short name for an ontology\nfunction ontologyLabel (term) {\n if (term.uri === undefined) return '??'\n let s = term.uri\n const namespaces = []\n let i = s.lastIndexOf('#')\n let part\n if (i >= 0) {\n s = s.slice(0, i + 1)\n } else {\n i = s.lastIndexOf('/')\n if (i >= 0) {\n s = s.slice(0, i + 1)\n } else {\n return term.uri + '?!' // strange should have # or /\n }\n }\n for (const ns in UI.ns) {\n namespaces[UI.ns[ns]] = ns // reverse index\n }\n try {\n return namespaces[s]\n } catch (e) {}\n\n s = s.slice(0, -1) // Chop off delimiter ... now have just\n\n while (s) {\n i = s.lastIndexOf('/')\n if (i >= 0) {\n part = s.slice(i + 1)\n s = s.slice(0, i)\n if (part !== 'ns' && '0123456789'.indexOf(part[0]) < 0) {\n return part\n }\n } else {\n return term.uri + '!?' // strange should have a nice part\n }\n }\n}\n\nfunction labelWithOntology (x, initialCap) {\n const t = store.findTypeURIs(x)\n if (t[UI.ns.rdf('Predicate').uri] || t[UI.ns.rdfs('Class').uri]) {\n return label(x, initialCap) + ' (' + ontologyLabel(x) + ')'\n }\n return label(x, initialCap)\n}\n\nfunction escapeForXML (str) {\n return str.replace(/&/g, '&').replace(/</g, '<')\n}\n\n// As above but escaped for XML and chopped of contains a slash\nfunction labelForXML (x) {\n return escapeForXML(label(x))\n}\n\nfunction predicateLabelForXML (p, inverse) {\n return escapeForXML(predicateLabel(p, inverse))\n}\n// As above but for predicate, possibly inverse\nfunction predicateLabel (p, inverse) {\n const lab = label(p)\n if (inverse) {\n // If we know an inverse predicate, use its label\n const ip = store.any(p, UI.ns.owl('inverseOf')) || store.any(undefined, UI.ns.owl('inverseOf'), p)\n if (ip) return label(ip)\n if (lab === 'type') return '...' // Not \"is type of\"\n return 'is ' + lab + ' of'\n }\n return lab\n}\n\n// Not a method. For use in sorts\nfunction RDFComparePredicateObject (self, other) {\n const x = self.predicate.compareTerm(other.predicate)\n if (x !== 0) return x\n return self.object.compareTerm(other.object)\n}\n\nfunction RDFComparePredicateSubject (self, other) {\n const x = self.predicate.compareTerm(other.predicate)\n if (x !== 0) return x\n return self.subject.compareTerm(other.subject)\n}\n// ends\n\nfunction predParentOf (node) {\n let n = node\n while (true) {\n if (n.getAttribute('predTR')) {\n return n\n } else if (n.previousSibling && n.previousSibling.nodeName === 'TR') {\n n = n.previousSibling\n } else {\n UI.log.error('Could not find predParent')\n return node\n }\n }\n}\n\n// makeQueryRow moved to outline mode\n","/**\n * Create an error message block\n * @param dom The DOM on which dom.createElement will be called\n * @param err The error message string to display (or an error object)\n * @param backgroundColor Background color. Default: '#fee'\n * @param err2 Is the second param is a string, you can put the original Error in here\n * @returns A div element with the err string\n *\n * This will return a DOM element you can put in the UI as a notice for the user\n * Meanwhile the stack is dumped to the console for the developer, so you actually know\n * where it happened!\n */\n\nimport { cancelButton } from '../widgets'\nimport { style } from '../style'\nimport styleConstants from '../styleConstants'\n\nexport function errorMessageBlock (dom: HTMLDocument, err: string | Error, backgroundColor?: string, err2?: Error): HTMLDivElement {\n const div = dom.createElement('div')\n\n /* tslint:disable-next-line */ // Too complex for TS?\n // @ts-ignore\n const errorObject:Error = err2 || err instanceof Error ? err : null\n\n if (errorObject) {\n console.error(`errorMessageBlock: ${errorObject} at: ${errorObject.stack || '??'}`, errorObject) // @@ pick one\n div.textContent = errorObject.message\n } else {\n div.textContent = err as string\n }\n\n div.appendChild(cancelButton(dom, () => { if (div.parentNode) div.parentNode.removeChild(div) }))\n .style = style.errorCancelButton\n\n div.setAttribute('style', style.errorMessageBlockStyle)\n div.style.backgroundColor = (backgroundColor || styleConstants.defaultErrorBackgroundColor)\n return div\n}\n","import { style } from '../style'\n\n/**\n * Wraps a Div in a TR/RD\n *\n * Takes a div and wraps it in a TR/TD to be backwards compatible to the\n * table structure of mashlib\n *\n * @param dom The HTML Document object aka Document Object Model\n * @param div the created widget will be appended to this\n * @param obj not sure what this is used for exactly\n *\n * @returns The HTML widget created\n *\n * @internal exporting this only for unit tests\n */\n\nexport const wrapDivInATR = (dom: HTMLDocument, div: HTMLDivElement, obj: any) => {\n const tr = dom.createElement('tr')\n const td = tr.appendChild(dom.createElement('td'))\n td.appendChild(div)\n ;(tr as any).subject = obj\n return tr\n}\n\n/**\n * Adds a click listener to a div\n *\n * Adds a given function as a click listener on the given div\n *\n * @param dom The HTML Document object aka Document Object Model\n * @param onClickFunction the click function to add to the click listener\n *\n * @returns The HTML widget created\n *\n * @internal exporting this only for unit tests\n */\n\nexport const addClickListenerToElement = (div: HTMLDivElement, onClickFunction: () => void) => {\n div.addEventListener('click', onClickFunction)\n}\n\n/**\n * Wraps a Div in a TR/RD\n *\n * Takes a div and wraps it in a TR/TD to be backwards compatible to the\n * table structure of mashlib\n *\n * @param dom The HTML Document object aka Document Object Model\n * @param div the created widget will be appended to this\n * @param obj not sure what this is used for exactly\n *\n * @returns The HTML widget created\n *\n * @internal exporting this only for unit tests\n */\n\nexport const createImageDiv = (dom: HTMLDocument, div: HTMLDivElement, image: HTMLImageElement | HTMLObjectElement) => {\n const imageDiv = div.appendChild(dom.createElement('div'))\n\n imageDiv.setAttribute('style', style.imageDivStyle)\n imageDiv.appendChild(image)\n image.setAttribute('draggable', 'false') // Stop the image being dragged instead - just the TR\n}\n","import { NamedNode } from 'rdflib'\nimport { originalIconBase } from '../../iconBase'\n\n/**\n * Creates an anchor tag for a NamedNode\n *\n * Takes a NamedNode and creates an anchor tag for it\n *\n * @param dom The HTML Document object aka Document Object Model\n * @param subject NamedNode the anchor tag is created for\n * @param iconURI? Optional if you have your own icon link\n *\n * @returns The anchor tag for the subject\n *\n */\n\nexport function linkIcon (dom: HTMLDocument, subject: NamedNode, iconURI?: string): HTMLElement {\n const anchor = dom.createElement('a')\n anchor.setAttribute('href', subject.uri)\n if (subject.uri.startsWith('http')) {\n // If diff web page\n anchor.setAttribute('target', '_blank') // open in a new tab or window\n } // as mailboxes and mail messages do not need new browser window\n const img = anchor.appendChild(dom.createElement('img'))\n img.setAttribute(\n 'src',\n iconURI || originalIconBase + 'go-to-this.png'\n )\n img.setAttribute('style', 'margin: 0.3em;')\n return anchor\n}\n/**\n * Creates a Link for a URI\n *\n * Takes a div element for a link and attaches the provided linkIcon\n *\n * @param dom The HTML Document object aka Document Object Model\n * @param linkDiv the created link will be appended to this\n * @param obj NamedNode the link needs to be created for\n *\n * @returns The HTML widget created\n *\n */\n\nexport const createLinkForURI = (dom: HTMLDocument, linkDiv: HTMLDivElement, obj: NamedNode) => {\n const iconLink = linkIcon(dom, obj)\n const anchor = linkDiv.appendChild(iconLink)\n anchor.classList.add('HoverControlHide')\n linkDiv.appendChild(dom.createElement('br'))\n}\n","/* Buttons\n*/\nimport { IndexedFormula, NamedNode, st, sym, uri, Util } from 'rdflib'\nimport { icons } from '../iconBase'\nimport ns from '../ns'\nimport { style } from '../style'\nimport * as debug from '../debug'\nimport { info } from '../log'\nimport { uploadFiles, makeDraggable, makeDropTarget } from './dragAndDrop'\nimport { store } from 'solid-logic'\nimport * as utils from '../utils'\nimport { errorMessageBlock } from './error'\nimport { addClickListenerToElement, createImageDiv, wrapDivInATR } from './widgetHelpers'\nimport { linkIcon, createLinkForURI } from './buttons/iconLinks'\n\n/**\n * UI Widgets such as buttons\n * @packageDocumentation\n */\n\n/* global alert */\n\nconst { iconBase } = icons\n\nconst cancelIconURI = iconBase + 'noun_1180156.svg' // black X\nconst checkIconURI = iconBase + 'noun_1180158.svg' // green checkmark; Continue\n\nexport type StatusAreaContext = {\n statusArea?: HTMLElement\n div?: HTMLElement\n dom?: HTMLDocument\n}\nexport type ButtonType = 'Primary' | 'Secondary'\n\nexport type ButtonWidgetOptions = {\n buttonColor?: ButtonType,\n needsBorder?: boolean\n}\n\nexport type RenderAsDivOptions = {\n image?: HTMLImageElement,\n title?: string,\n deleteFunction?: () => void,\n link?: boolean,\n noun?: string,\n draggable?: boolean,\n clickable?: boolean,\n onClickFunction?: () => void,\n wrapInATR?: boolean\n}\n\nfunction getStatusArea (context?: StatusAreaContext) {\n let box = (context && context.statusArea) || (context && context.div) || null\n if (box) return box\n let dom = context && context.dom\n if (!dom && typeof document !== 'undefined') {\n dom = document\n }\n if (dom) {\n const body = dom.getElementsByTagName('body')[0]\n box = dom.createElement('div')\n body.insertBefore((box as unknown as HTMLElement), body.firstElementChild)\n if (context) {\n context.statusArea = (box as unknown as HTMLElement)\n }\n return box\n }\n return null\n}\n\n/**\n * Display an error message block\n */\nexport function complain (context?: StatusAreaContext, err?: string) {\n if (!err) return // only if error\n const ele = getStatusArea(context)\n debug.log('Complaint: ' + err)\n if (ele) ele.appendChild(errorMessageBlock((context && context.dom) || document, err))\n else alert(err)\n}\n\n/**\n * Remove all the children of an HTML element\n */\nexport function clearElement (ele: HTMLElement) {\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild)\n }\n return ele\n}\n\n/**\n * To figure out the log URI from the full URI used to invoke the reasoner\n */\nexport function extractLogURI (fullURI) {\n const logPos = fullURI.search(/logFile=/)\n const rulPos = fullURI.search(/&rulesFile=/)\n return fullURI.substring(logPos + 8, rulPos)\n}\n\n/**\n * By default, converts e.g. '2020-02-19T19:35:28.557Z' to '19:35'\n * if today is 19 Feb 2020, and to 'Feb 19' if not.\n * @@@ TODO This needs to be changed to local time\n * @param noTime Return a string like 'Feb 19' even if it's today.\n */\nexport function shortDate (str?: string, noTime?: boolean): string {\n if (!str) return '???'\n const month = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n ]\n try {\n const nowZ = new Date().toISOString()\n // var nowZ = $rdf.term(now).value\n // var n = now.getTimezoneOffset() // Minutes\n if (str.slice(0, 10) === nowZ.slice(0, 10) && !noTime) {\n return str.slice(11, 16)\n }\n if (str.slice(0, 4) === nowZ.slice(0, 4)) {\n return (\n month[parseInt(str.slice(5, 7), 10) - 1] +\n ' ' +\n parseInt(str.slice(8, 10), 10)\n )\n }\n return str.slice(0, 10)\n } catch (e) {\n return 'shortdate:' + e\n }\n}\n\n/**\n * Format a date and time\n * @param date for instance `new Date()`\n * @param format for instance '{FullYear}-{Month}-{Date}T{Hours}:{Minutes}:{Seconds}.{Milliseconds}'\n * @returns for instance '2000-01-15T23:14:23.002'\n */\nexport function formatDateTime (date: Date, format: string): string {\n return format\n .split('{')\n .map(function (s) {\n const k = s.split('}')[0]\n const width = { Milliseconds: 3, FullYear: 4 }\n const d = { Month: 1 }\n return s\n ? ('000' + (date['get' + k]() + (d[k] || 0))).slice(-(width[k] || 2)) + s.split('}')[1]\n : ''\n })\n .join('')\n}\n\n/**\n * Get a string representation of the current time\n * @returns for instance '2000-01-15T23:14:23.002'\n */\nexport function timestamp (): string {\n return formatDateTime(\n new Date(),\n '{FullYear}-{Month}-{Date}T{Hours}:{Minutes}:{Seconds}.{Milliseconds}'\n )\n}\n\n/**\n * Get a short string representation of the current time\n * @returns for instance '23:14:23.002'\n */\nexport function shortTime (): string {\n return formatDateTime(\n new Date(),\n '{Hours}:{Minutes}:{Seconds}.{Milliseconds}'\n )\n}\n\n// ///////////////////// Handy UX widgets\n\n/**\n * Sets the best name we have and looks up a better one\n */\nexport function setName (element: HTMLElement, x: NamedNode) {\n const kb = store\n const findName = function (x) {\n const name =\n kb.any(x, ns.vcard('fn')) ||\n kb.any(x, ns.foaf('name')) ||\n kb.any(x, ns.vcard('organization-name'))\n return name ? name.value : null\n }\n const name = x.sameTerm(ns.foaf('Agent')) ? 'Everyone' : findName(x)\n element.textContent = name || utils.label(x)\n if (!name && x.uri) {\n if (!kb.fetcher) {\n throw new Error('kb has no fetcher')\n }\n // Note this is only a fetch, not a lookUP of all sameAs etc\n kb.fetcher.nowOrWhenFetched(x.doc(), undefined, function (_ok) {\n element.textContent = findName(x) || utils.label(x) // had: (ok ? '' : '? ') +\n })\n }\n}\n\n/**\n * Set of suitable images\n * See also [[findImage]]\n * @param x The thing for which we want to find an image\n * @param kb The RDF store to look in\n * @returns It goes looking for triples in `kb`,\n * `(subject: x), (predicate: see list below) (object: image-url)`\n * to find any image linked from the thing with one of the following\n * predicates (in order):\n * * ns.sioc('avatar')\n * * ns.foaf('img')\n * * ns.vcard('logo')\n * * ns.vcard('hasPhoto')\n * * ns.vcard('photo')\n * * ns.foaf('depiction')\n\n */\nexport function imagesOf (x: NamedNode | null, kb: IndexedFormula): any[] {\n return kb\n .each(x, ns.sioc('avatar'))\n .concat(kb.each(x, ns.foaf('img')))\n .concat(kb.each(x, ns.vcard('logo')))\n .concat(kb.each(x, ns.vcard('hasPhoto')))\n .concat(kb.each(x, ns.vcard('photo')))\n .concat(kb.each(x, ns.foaf('depiction')))\n}\n\n/**\n * Best logo or avatar or photo etc to represent someone or some group etc\n */\nexport const iconForClass = {\n // Potentially extendable by other apps, panes, etc\n // Relative URIs to the iconBase\n 'solid:AppProviderClass': 'noun_144.svg', // @@ classs name should not contain 'Class'\n 'solid:AppProvider': 'noun_15177.svg', // @@\n 'solid:Pod': 'noun_Cabinet_1434380.svg',\n 'vcard:Group': 'noun_339237.svg',\n 'vcard:Organization': 'noun_143899.svg',\n 'vcard:Individual': 'noun_15059.svg',\n 'schema:Person': 'noun_15059.svg',\n 'foaf:Person': 'noun_15059.svg',\n 'foaf:Agent': 'noun_98053.svg',\n 'acl:AuthenticatedAgent': 'noun_99101.svg',\n 'prov:SoftwareAgent': 'noun_Robot_849764.svg', // Bot\n 'vcard:AddressBook': 'noun_15695.svg',\n 'trip:Trip': 'noun_581629.svg',\n 'meeting:LongChat': 'noun_1689339.svg',\n 'meeting:Meeting': 'noun_66617.svg',\n 'meeting:Project': 'noun_1036577.svg',\n 'ui:Form': 'noun_122196.svg',\n 'rdfs:Class': 'class-rectangle.svg', // For RDF developers\n 'rdf:Property': 'property-diamond.svg',\n 'owl:Ontology': 'noun_classification_1479198.svg',\n 'wf:Tracker': 'noun_122196.svg',\n 'wf:Task': 'noun_17020_gray-tick.svg',\n 'wf:Open': 'noun_17020_sans-tick.svg',\n 'wf:Closed': 'noun_17020.svg'\n}\n\n/**\n * Returns the origin of the URI of a NamedNode\n */\nfunction tempSite (x: NamedNode) {\n // use only while one in rdflib fails with origins 2019\n const str = x.uri.split('#')[0]\n const p = str.indexOf('//')\n if (p < 0) throw new Error('This URI does not have a web site part (origin)')\n const q = str.indexOf('/', p + 2)\n if (q < 0) {\n // no third slash?\n return str.slice(0) + '/' // Add slash to a bare origin\n } else {\n return str.slice(0, q + 1)\n }\n}\n\n/**\n * Find an image for this thing as a class\n */\nexport function findImageFromURI (x: NamedNode | string): string | null {\n const iconDir = iconBase\n\n // Special cases from URI scheme:\n if (typeof x !== 'string' && x.uri) {\n if (\n x.uri.split('/').length === 4 &&\n !x.uri.split('/')[1] &&\n !x.uri.split('/')[3]\n ) {\n return iconDir + 'noun_15177.svg' // App -- this is an origin\n }\n // Non-HTTP URI types imply types\n if (x.uri.startsWith('message:') || x.uri.startsWith('mid:')) {\n // message: is apple bug-- should be mid:\n return iconDir + 'noun_480183.svg' // envelope noun_567486\n }\n if (x.uri.startsWith('mailto:')) {\n return iconDir + 'noun_567486.svg' // mailbox - an email desitination\n }\n // For HTTP(s) documents, we could look at the MIME type if we know it.\n if (x.uri.startsWith('https:') && x.uri.indexOf('#') < 0) {\n return tempSite(x) + 'favicon.ico' // was x.site().uri + ...\n // Todo: make the document icon a fallback for if the favicon does not exist\n // todo: pick up a possible favicon for the web page itself from a link\n // was: return iconDir + 'noun_681601.svg' // document - under solid assumptions\n }\n return null\n }\n\n return iconDir + 'noun_10636_grey.svg' // Grey Circle - some thing\n}\n\n/**\n * Find something we have as explicit image data for the thing\n * See also [[imagesOf]]\n * @param thing The thing for which we want to find an image\n * @returns The URL of a globe icon if thing equals `ns.foaf('Agent')`\n * or `ns.rdf('Resource')`. Otherwise, it goes looking for\n * triples in `store`,\n * `(subject: thing), (predicate: see list below) (object: image-url)`\n * to find any image linked from the thing with one of the following\n * predicates (in order):\n * * ns.sioc('avatar')\n * * ns.foaf('img')\n * * ns.vcard('logo')\n * * ns.vcard('hasPhoto')\n * * ns.vcard('photo')\n * * ns.foaf('depiction')\n */\nexport function findImage (thing: NamedNode): string {\n const kb = store\n const iconDir = iconBase\n if (thing.sameTerm(ns.foaf('Agent')) || thing.sameTerm(ns.rdf('Resource'))) {\n return iconDir + 'noun_98053.svg' // Globe\n }\n const image =\n kb.any(thing, ns.sioc('avatar')) ||\n kb.any(thing, ns.foaf('img')) ||\n kb.any(thing, ns.vcard('logo')) ||\n kb.any(thing, ns.vcard('hasPhoto')) ||\n kb.any(thing, ns.vcard('photo')) ||\n kb.any(thing, ns.foaf('depiction'))\n return image ? (image as any).uri : null as any\n}\n\n/**\n * Do the best you can with the data available\n *\n * @return {Boolean} Are we happy with this icon?\n * Sets src AND STYLE of the image.\n */\nfunction trySetImage (element, thing, iconForClassMap) {\n const kb = store\n\n const explitImage = findImage(thing)\n if (explitImage) {\n element.setAttribute('src', explitImage)\n return true\n }\n // This is one of the classes we know about - the class itself?\n const typeIcon = iconForClassMap[thing.uri]\n if (typeIcon) {\n element.setAttribute('src', typeIcon)\n element.style = style.classIconStyle\n // element.style.border = '0.1em solid green;'\n // element.style.backgroundColor = '#eeffee' // pale green\n return true\n }\n const schemeIcon = findImageFromURI(thing)\n if (schemeIcon) {\n element.setAttribute('src', schemeIcon)\n return true // happy with this -- don't look it up\n }\n\n // Do we have a generic icon for something in any class its in?\n const types = kb.findTypeURIs(thing)\n for (const typeURI in types) {\n if (iconForClassMap[typeURI]) {\n element.setAttribute('src', iconForClassMap[typeURI])\n return false // maybe we can do better\n }\n }\n element.setAttribute('src', iconBase + 'noun_10636_grey.svg') // Grey Circle - some thing\n return false // we can do better\n}\n\n/**\n * ToDo: Also add icons for *properties* like home, work, email, range, domain, comment,\n */\nexport function setImage (element: HTMLElement, thing: NamedNode) { // 20191230a\n const kb = store\n\n const iconForClassMap = {}\n for (const k in iconForClass) {\n const pref = k.split(':')[0]\n const id = k.split(':')[1]\n const theClass = ns[pref](id)\n iconForClassMap[theClass.uri] = uri.join(iconForClass[k], iconBase)\n }\n\n const happy = trySetImage(element, thing, iconForClassMap)\n if (!happy && thing.uri) {\n if (!kb.fetcher) {\n throw new Error('kb has no fetcher')\n }\n kb.fetcher.nowOrWhenFetched(thing.doc(), undefined, (ok) => {\n if (ok) {\n trySetImage(element, thing, iconForClassMap)\n }\n })\n }\n}\n\n// If a web page, then a favicon, with a fallback to ???\n// See, e.g., http://stackoverflow.com/questions/980855/inputting-a-default-image\nexport function faviconOrDefault (dom: HTMLDocument, x: NamedNode) {\n const image = dom.createElement('img')\n ;(image as any).style = style.iconStyle\n const isOrigin = function (x) {\n if (!x.uri) return false\n const parts = x.uri.split('/')\n return parts.length === 3 || (parts.length === 4 && parts[3] === '')\n }\n image.setAttribute(\n 'src',\n iconBase + (isOrigin(x) ? 'noun_15177.svg' : 'noun_681601.svg') // App symbol vs document\n )\n if (x.uri && x.uri.startsWith('https:') && x.uri.indexOf('#') < 0) {\n const res = dom.createElement('object') // favico with a fallback of a default image if no favicon\n res.setAttribute('data', tempSite(x) + 'favicon.ico')\n res.setAttribute('type', 'image/x-icon')\n res.appendChild(image) // fallback\n return res\n } else {\n setImage(image, x)\n return image\n }\n}\n\n/* Two-option dialog pop-up\n*/\n\nfunction renderDeleteConfirmPopup (dom, refererenceElement, prompt, deleteFunction) {\n function removePopup () {\n refererenceElement.parentElement.removeChild(refererenceElement)\n }\n function removePopupAndDoDeletion () {\n removePopup()\n deleteFunction()\n }\n const popup = dom.createElement('div')\n popup.style = style.confirmPopupStyle\n popup.style.position = 'absolute'\n popup.style.top = '-1em' // try leaving original button clear\n\n popup.style.display = 'grid'\n popup.style.gridTemplateColumns = 'auto auto'\n const affirm = dom.createElement('div')\n affirm.style.gridColumn = '1/2'\n affirm.style.gridRow = '1' // @@ sigh; TS. could pass number in fact\n const cancel = dom.createElement('div')\n cancel.style.gridColumn = '1/2'\n cancel.style.gridRow = '2'\n\n const xButton = cancelButton(dom, removePopup)\n popup.appendChild(xButton)\n xButton.style.gridColumn = '1'\n xButton.style.gridRow = '2'\n\n const cancelPrompt = popup.appendChild(dom.createElement('button'))\n cancelPrompt.style = style.buttonStyle\n cancelPrompt.style.gridRow = '2'\n cancelPrompt.style.gridColumn = '2'\n cancelPrompt.textContent = 'Cancel' // @@ I18n\n\n const affirmIcon = button(dom, icons.iconBase + 'noun_925021.svg', 'Delete it') // trashcan\n popup.appendChild(affirmIcon)\n affirmIcon.style.gridRow = '1'\n affirmIcon.style.gridColumn = '1'\n\n const sureButtonElt = popup.appendChild(dom.createElement('button'))\n sureButtonElt.style = style.buttonStyle\n sureButtonElt.style.gridRow = '1'\n sureButtonElt.style.gridColumn = '2'\n sureButtonElt.textContent = prompt\n popup.appendChild(sureButtonElt)\n\n affirmIcon.addEventListener('click', removePopupAndDoDeletion)\n sureButtonElt.addEventListener('click', removePopupAndDoDeletion)\n\n // xButton.addEventListener('click', removePopup)\n cancelPrompt.addEventListener('click', removePopup)\n\n return popup\n}\n/**\n * Delete button with a check you really mean it\n * @@ Supress check if command key held down?\n */\nexport function deleteButtonWithCheck (\n dom: HTMLDocument,\n container: HTMLElement,\n noun: string,\n deleteFunction: () => any\n) {\n function createPopup () {\n const refererenceElement = dom.createElement('div')\n container.insertBefore(refererenceElement, deleteButton)\n refererenceElement.style.position = 'relative' // Needed as reference for popup\n refererenceElement.appendChild(renderDeleteConfirmPopup(dom, refererenceElement, prompt, deleteFunction))\n }\n const minusIconURI = iconBase + 'noun_2188_red.svg' // white minus in red #cc0000 circle\n const deleteButton = dom.createElement('img')\n deleteButton.setAttribute('src', minusIconURI)\n\n deleteButton.setAttribute('style', style.smallButtonStyle) // @@tsc - would set deleteButton.style\n deleteButton.style.float = 'right' // Historically this has alwaus floated right\n\n const prompt = 'Remove this ' + noun\n deleteButton.title = prompt\n // @@ In an ideal world, make use of hover an accessibility option\n deleteButton.classList.add('hoverControlHide')\n\n deleteButton.addEventListener('click', createPopup)\n\n container.classList.add('hoverControl')\n container.appendChild(deleteButton)\n deleteButton.setAttribute('data-testid', 'deleteButtonWithCheck')\n return deleteButton // or button div? caller may change size of image\n}\n\n/* Make a button\n *\n * @param dom - the DOM document object\n * @Param iconURI - the URI of the icon to use (if any)\n * @param text - the tooltip text or possibly button contents text\n * @param handler <function> - A handler to called when button is clicked\n *\n * @returns <dDomElement> - the button\n */\nexport function button (dom: HTMLDocument, iconURI: string | undefined, text: string,\n handler?: (_event: any) => void,\n options: ButtonWidgetOptions = { buttonColor: 'Primary', needsBorder: false }) {\n const button = dom.createElement('button')\n button.setAttribute('type', 'button')\n // button.innerHTML = text // later, user preferences may make text preferred for some\n if (iconURI) {\n const img = button.appendChild(dom.createElement('img'))\n img.setAttribute('src', iconURI)\n img.setAttribute('style', 'width: 2em; height: 2em;') // trial and error. 2em disappears\n img.title = text\n button.setAttribute('style', style.buttonStyle)\n } else {\n button.textContent = text.toLocaleUpperCase()\n\n button.onmouseover = function () {\n if (options.buttonColor === 'Secondary') {\n if (options.needsBorder) {\n button.setAttribute('style', style.secondaryButtonNoBorderHover)\n } else {\n button.setAttribute('style', style.secondaryButtonHover)\n }\n } else {\n if (options.needsBorder) {\n button.setAttribute('style', style.primaryButtonNoBorderHover)\n } else {\n button.setAttribute('style', style.primaryButtonHover)\n }\n }\n }\n button.onmouseout = function () {\n if (options.buttonColor === 'Secondary') {\n if (options.needsBorder) {\n button.setAttribute('style', style.secondaryButtonNoBorder)\n } else {\n button.setAttribute('style', style.secondaryButton)\n }\n } else {\n if (options.needsBorder) {\n button.setAttribute('style', style.primaryButtonNoBorder)\n } else {\n button.setAttribute('style', style.primaryButton)\n }\n }\n }\n\n if (options.buttonColor === 'Secondary') {\n if (options.needsBorder) {\n button.setAttribute('style', style.secondaryButtonNoBorder)\n } else {\n button.setAttribute('style', style.secondaryButton)\n }\n } else {\n if (options.needsBorder) {\n button.setAttribute('style', style.primaryButtonNoBorder)\n } else {\n button.setAttribute('style', style.primaryButton)\n }\n }\n }\n\n if (handler) {\n button.addEventListener('click', handler, false)\n }\n return button\n}\n\n/* Make a cancel button\n *\n * @param dom - the DOM document object\n * @param handler <function> - A handler to called when button is clicked\n *\n * @returns <dDomElement> - the button\n */\nexport function cancelButton (dom: HTMLDocument, handler: (_event?: any) => void) {\n const b = button(dom, cancelIconURI, 'Cancel', handler)\n if (b.firstChild) { // sigh for tsc\n (b.firstChild as HTMLElement).style.opacity = '0.3' // Black X is too harsh: current language is grey X\n }\n return b\n}\n\n/* Make a continue button\n *\n * @param dom - the DOM document object\n * @param handler <function> - A handler to called when button is clicked\n *\n * @returns <dDomElement> - the button\n */\nexport function continueButton (dom: HTMLDocument, handler: (_event: any) => void) {\n return button(dom, checkIconURI, 'Continue', handler)\n}\n\n/* Grab a name for a new thing\n *\n * Form to get the name of a new thing before we create it\n * @params theClass Misspelt to avoid clashing with the JavaScript keyword\n * @returns: a promise of (a name or null if cancelled)\n */\nexport function askName (\n dom: HTMLDocument,\n kb: IndexedFormula,\n container: HTMLDivElement,\n predicate?: NamedNode,\n theClass?: NamedNode,\n noun?: string) {\n return new Promise(function (resolve, _reject) {\n const form = dom.createElement('div') // form is broken as HTML behaviour can resurface on js error\n // classLabel = utils.label(ns.vcard('Individual'))\n predicate = predicate || ns.foaf('name') // eg 'name' in user's language\n noun = noun || (theClass ? utils.label(theClass) : ' ') // eg 'folder' in users's language\n const prompt = noun + ' ' + utils.label(predicate) + ': '\n form.appendChild(dom.createElement('p')).textContent = prompt\n const namefield = dom.createElement('input')\n namefield.setAttribute('type', 'text')\n namefield.setAttribute('size', '100')\n namefield.setAttribute('maxLength', '2048') // No arbitrary limits\n namefield.setAttribute('style', style.textInputStyle)\n namefield.select() // focus next user input\n form.appendChild(namefield)\n container.appendChild(form)\n\n // namefield.focus()\n\n function gotName () {\n ((form as HTMLElement).parentNode as HTMLElement).removeChild(form)\n resolve(namefield.value.trim())\n }\n\n namefield.addEventListener('keyup', function (e) {\n if (e.keyCode === 13) {\n gotName()\n }\n }, false)\n\n form.appendChild(dom.createElement('br'))\n\n form.appendChild(cancelButton(dom, function (_event) {\n ((form as HTMLElement).parentNode as HTMLElement).removeChild(form)\n resolve(null)\n }))\n\n form.appendChild(continueButton(dom, function (_event) {\n gotName()\n }))\n namefield.focus()\n }) // Promise\n}\n\n/**\n * A TR to represent a draggable person, etc in a list\n *\n * pred is unused param at the moment\n */\nexport const personTR = renderAsRow // The legacy name is used in a lot of places\n\nexport function renderAsRow (dom: HTMLDocument, pred: NamedNode, obj: NamedNode, options: any): HTMLTableRowElement {\n const tr = dom.createElement('tr')\n options = options || {}\n // tr.predObj = [pred.uri, obj.uri] moved to acl-control\n const td1 = tr.appendChild(dom.createElement('td'))\n const td2 = tr.appendChild(dom.createElement('td'))\n const td3 = tr.appendChild(dom.createElement('td'))\n\n // const image = td1.appendChild(dom.createElement('img'))\n const image = options.image || faviconOrDefault(dom, obj)\n\n td1.setAttribute('style', 'vertical-align: middle; width:2.5em; padding:0.5em; height: 2.5em;')\n td2.setAttribute('style', 'vertical-align: middle; text-align:left;')\n td3.setAttribute('style', 'vertical-align: middle; width:2em; padding:0.5em; height: 4em;')\n td1.appendChild(image)\n\n if (options.title) {\n td2.textContent = options.title\n } else {\n setName(td2, obj) // This is async\n }\n\n if (options.deleteFunction) {\n deleteButtonWithCheck(dom, td3, options.noun || 'one', options.deleteFunction)\n }\n if (obj.uri) {\n // blank nodes need not apply\n if (options.link !== false) {\n const anchor = td3.appendChild(linkIcon(dom, obj))\n anchor.classList.add('HoverControlHide')\n td3.appendChild(dom.createElement('br'))\n }\n if (options.draggable !== false) {\n // default is on\n image.setAttribute('draggable', 'false') // Stop the image being dragged instead - just the TR\n makeDraggable(tr, obj)\n }\n }\n ;(tr as any).subject = obj\n return tr\n}\n\n/* A helper function for renderAsDiv\n* creates the NameDiv for the person\n* Note: could not move it to the helper file because they call exported functions\n* from buttons\n* @internal exporting this only for unit tests\n*/\nexport function createNameDiv (dom: HTMLDocument, div: HTMLDivElement, title: string | undefined, obj: NamedNode) {\n const nameDiv = div.appendChild(dom.createElement('div'))\n if (title) {\n nameDiv.textContent = title\n } else {\n setName(nameDiv, obj) // This is async\n }\n}\n/* A helper function for renderAsDiv\n* creates the linkDiv for the person\n* Note: could not move it to the helper file because they call exported functions\n* from buttons\n* @internal exporting this only for unit tests\n*/\nexport function createLinkDiv (dom: HTMLDocument, div: HTMLDivElement, obj: NamedNode, options: RenderAsDivOptions) {\n const linkDiv = div.appendChild(dom.createElement('div'))\n linkDiv.setAttribute('style', style.linkDivStyle)\n\n if (options.deleteFunction) {\n deleteButtonWithCheck(dom, linkDiv, options.noun || 'one', options.deleteFunction)\n }\n\n if (obj.uri) {\n // blank nodes need not apply\n if (options.link !== false) {\n createLinkForURI(dom, linkDiv, obj)\n }\n\n makeDraggable(div, obj)\n }\n}\n/**\n * A Div to represent a draggable person, etc in a list\n * configurable to add an onClick listener\n */\nexport function renderAsDiv (dom: HTMLDocument, obj: NamedNode, options: RenderAsDivOptions): HTMLElement {\n const div = dom.createElement('div')\n div.setAttribute('style', style.renderAsDivStyle)\n\n options = options || {}\n const image = options.image || faviconOrDefault(dom, obj)\n createImageDiv(dom, div, image)\n createNameDiv(dom, div, options.title, obj)\n createLinkDiv(dom, div, obj, options)\n\n if (options.clickable && options.onClickFunction) {\n addClickListenerToElement(div, options.onClickFunction)\n }\n\n // to be compatible with the SolidOS table layout\n if (options.wrapInATR) {\n const tr = wrapDivInATR(dom, div, obj)\n return tr\n }\n return div\n}\n\n/**\n * Refresh a DOM tree recursively\n */\nexport function refreshTree (root: any): void {\n if (root.refresh) {\n root.refresh()\n return\n }\n for (let i = 0; i < root.children.length; i++) {\n refreshTree(root.children[i])\n }\n}\n\n/**\n * Options argument for [[attachmentList]] function\n */\nexport type attachmentListOptions = {\n doc?: NamedNode\n modify?: boolean\n promptIcon?: string\n predicate?: NamedNode\n uploadFolder?: NamedNode\n noun?: string\n}\n\n/**\n * Component that displays a list of resources, for instance\n * the attachments of a message, or the various documents related\n * to a meeting.\n * Accepts dropping URLs onto it to add attachments to it.\n */\nexport function attachmentList (dom: HTMLDocument, subject: NamedNode, div: HTMLElement, options: attachmentListOptions = {}) {\n // options = options || {}\n\n const deleteAttachment = function (target) {\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n\n kb.updater.update(st(subject, predicate, target, doc) as any, [], function (\n uri,\n ok,\n errorBody,\n _xhr\n ) {\n if (ok) {\n refresh()\n } else {\n complain(undefined, 'Error deleting one: ' + errorBody)\n }\n })\n }\n\n function createNewRow (target) {\n const theTarget = target\n const opt: any = { noun }\n if (modify) {\n opt.deleteFunction = function () {\n deleteAttachment(theTarget)\n }\n }\n return personTR(dom, predicate, target, opt)\n }\n\n const refresh = function () {\n const things = kb.each(subject, predicate)\n things.sort()\n utils.syncTableToArray(attachmentTable, things, createNewRow)\n }\n\n function droppedURIHandler (uris) {\n const ins: any = []\n uris.forEach(function (u) {\n const target = sym(u) // Attachment needs text label to disinguish I think not icon.\n debug.log('Dropped on attachemnt ' + u) // icon was: iconBase + 'noun_25830.svg'\n ins.push(st(subject, predicate, target, doc))\n })\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n\n kb.updater.update([], ins, function (uri, ok, errorBody, _xhr) {\n if (ok) {\n refresh()\n } else {\n complain(undefined, 'Error adding one: ' + errorBody)\n }\n })\n }\n\n function droppedFileHandler (files) {\n uploadFiles(\n kb.fetcher,\n files,\n options.uploadFolder?.uri, // Files\n options.uploadFolder?.uri, // Pictures\n function (theFile, destURI) {\n const ins = [st(subject, predicate, kb.sym(destURI), doc)]\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n kb.updater.update([], ins, function (uri, ok, errorBody, _xhr) {\n if (ok) {\n refresh()\n } else {\n complain(undefined, 'Error adding link to uploaded file: ' + errorBody)\n }\n })\n }\n )\n }\n\n const doc = options.doc || subject.doc()\n if (options.modify === undefined) options.modify = true\n const modify = options.modify\n const promptIcon: string = options.promptIcon || (iconBase + 'noun_748003.svg' as string) // target\n // const promptIcon = options.promptIcon || (iconBase + 'noun_25830.svg') // paperclip\n const predicate = options.predicate || ns.wf('attachment')\n const noun = options.noun || 'attachment'\n\n const kb = store\n const attachmentOuter = div.appendChild(dom.createElement('table'))\n attachmentOuter.setAttribute('style', 'margin-top: 1em; margin-bottom: 1em;')\n const attachmentOne = attachmentOuter.appendChild(dom.createElement('tr'))\n const attachmentLeft = attachmentOne.appendChild(dom.createElement('td'))\n const attachmentRight = attachmentOne.appendChild(dom.createElement('td'))\n const attachmentTable = attachmentRight.appendChild(dom.createElement('table'))\n attachmentTable.appendChild(dom.createElement('tr')) // attachmentTableTop\n\n ;(attachmentOuter as any).refresh = refresh // Participate in downstream changes\n // ;(attachmentTable as any).refresh = refresh <- outer should be best?\n\n refresh()\n\n if (modify) {\n // const buttonStyle = 'width; 2em; height: 2em; margin: 0.5em; padding: 0.1em;'\n const paperclip = button(dom, promptIcon, 'Drop attachments here')\n // paperclip.style = buttonStyle // @@ needed? default has white background\n attachmentLeft.appendChild(paperclip)\n const fhandler = options.uploadFolder ? droppedFileHandler : null\n makeDropTarget(paperclip, droppedURIHandler, fhandler) // beware missing the wire of the paparclip!\n makeDropTarget(attachmentLeft, droppedURIHandler, fhandler) // just the outer won't do it\n\n if (options.uploadFolder) { // Addd an explicit file upload button as well\n const buttonDiv = fileUploadButtonDiv(dom, droppedFileHandler)\n attachmentLeft.appendChild(buttonDiv)\n // buttonDiv.children[1].style = buttonStyle\n }\n }\n return attachmentOuter\n}\n\n// /////////////////////////////////////////////////////////////////////////////\n\n/**\n * Event Handler for links within solid apps.\n *\n * Note that native links have constraints in Firefox, they\n * don't work with local files for instance (2011)\n */\nexport function openHrefInOutlineMode (e: Event) {\n e.preventDefault()\n e.stopPropagation()\n const target = utils.getTarget(e)\n const uri = target.getAttribute('href')\n if (!uri) return debug.log('openHrefInOutlineMode: No href found!\\n')\n const dom = window.document\n if ((dom as any).outlineManager) {\n // @@ TODO Remove the use of document as a global object\n // TODO fix dependency cycle to solid-panes by calling outlineManager\n ;(dom as any).outlineManager.GotoSubject(store.sym(uri), true, undefined, true, undefined)\n } else if (window && (window as any).panes && (window as any).panes.getOutliner) {\n // @@ TODO Remove the use of window as a global object\n ;(window as any).panes\n .getOutliner()\n .GotoSubject(store.sym(uri), true, undefined, true, undefined)\n } else {\n debug.log('ERROR: Can\\'t access outline manager in this config')\n }\n // dom.outlineManager.GotoSubject(store.sym(uri), true, undefined, true, undefined)\n}\n\n/**\n * Make a URI in the Tabulator.org annotation store out of the URI of the thing to be annotated.\n *\n * @@ Todo: make it a personal preference.\n */\nexport function defaultAnnotationStore (subject:NamedNode):NamedNode | undefined {\n if (subject.uri === undefined) return undefined\n let s = subject.uri\n if (s.slice(0, 7) !== 'http://') return undefined\n s = s.slice(7) // Remove\n const hash = s.indexOf('#')\n if (hash >= 0) s = s.slice(0, hash)\n // Strip trailing\n else {\n const slash = s.lastIndexOf('/')\n if (slash < 0) return undefined\n s = s.slice(0, slash)\n }\n return store.sym('http://tabulator.org/wiki/annnotation/' + s)\n}\n\n/**\n * Retrieve all RDF class URIs from solid-ui's RDF store\n * @returns an object `ret` such that `Object.keys(ret)` is\n * the list of all class URIs.\n */\nexport function allClassURIs (): { [uri: string]: boolean } {\n const set = {}\n store\n .statementsMatching(undefined, ns.rdf('type'), undefined)\n .forEach(function (st) {\n if (st.object.value) set[st.object.value] = true\n })\n store\n .statementsMatching(undefined, ns.rdfs('subClassOf'), undefined)\n .forEach(function (st) {\n if (st.object.value) set[st.object.value] = true\n if (st.subject.value) set[st.subject.value] = true\n })\n store\n .each(undefined, ns.rdf('type'), ns.rdfs('Class'))\n .forEach(function (c) {\n if (c.value) set[c.value] = true\n })\n return set\n}\n\n/**\n * Figuring which properties we know about\n *\n * When the user inputs an RDF property, like for a form field\n * or when specifying the relationship between two arbitrary things,\n * then er can prompt them with properties the session knows about\n *\n * TODO: Look again by catching this somewhere. (On the kb?)\n * TODO: move to diff module? Not really a button.\n * @param {Store} kb The quadstore to be searched.\n */\n\nexport function propertyTriage (kb: IndexedFormula): any {\n const possibleProperties: any = {}\n // if (possibleProperties === undefined) possibleProperties = {}\n // const kb = store\n const dp = {}\n const op = {}\n let no = 0\n let nd = 0\n let nu = 0\n const pi = (kb as any).predicateIndex // One entry for each pred\n for (const p in pi) {\n const object = pi[p][0].object\n if (object.termType === 'Literal') {\n dp[p] = true\n nd++\n } else {\n op[p] = true\n no++\n }\n } // If nothing discovered, then could be either:\n const ps = kb.each(undefined, ns.rdf('type'), ns.rdf('Property'))\n for (let i = 0; i < ps.length; i++) {\n const p = ps[i].toNT()\n if (!op[p] && !dp[p]) {\n dp[p] = true\n op[p] = true\n nu++\n }\n }\n possibleProperties.op = op\n possibleProperties.dp = dp\n info(`propertyTriage: ${no} non-lit, ${nd} literal. ${nu} unknown.`)\n return possibleProperties\n}\n\n/**\n * General purpose widgets\n */\n\n/**\n * A button for jumping\n */\nexport function linkButton (dom: HTMLDocument, object: NamedNode): HTMLElement {\n const b = dom.createElement('button')\n b.setAttribute('type', 'button')\n b.textContent = 'Goto ' + utils.label(object)\n b.addEventListener('click', function (_event) {\n // b.parentNode.removeChild(b)\n // TODO fix dependency cycle to solid-panes by calling outlineManager\n ;(dom as any).outlineManager.GotoSubject(object, true, undefined, true, undefined)\n }, true)\n return b\n}\n\n/**\n * A button to remove some other element from the page\n */\nexport function removeButton (dom: HTMLDocument, element: HTMLElement) {\n const b = dom.createElement('button')\n b.setAttribute('type', 'button')\n b.textContent = '✕' // MULTIPLICATION X\n b.addEventListener('click', function (_event) {\n ;(element as any).parentNode.removeChild(element)\n }, true)\n return b\n}\n\n// Description text area\n//\n// Make a box to demand a description or display existing one\n//\n// @param dom - the document DOM for the user interface\n// @param kb - the graph which is the knowledge base we are working with\n// @param subject - a term, the subject of the statement(s) being edited.\n// @param predicate - a term, the predicate of the statement(s) being edited\n// @param store - The web document being edited\n// @param callbackFunction - takes (boolean ok, string errorBody)\n\n// /////////////////////////////////////// Random I/O widgets /////////////\n\n// //// Column Header Buttons\n//\n// These are for selecting different modes, sources,styles, etc.\n//\n/*\nbuttons.headerButtons = function (dom, kb, name, words) {\n const box = dom.createElement('table')\n var i, word, s = '<tr>'\n box.setAttribute('style', 'width: 90%; height: 1.5em')\n for (i=0; i<words.length; i++) {\n s += '<td><input type=\"radio\" name=\"' + name + '\" id=\"' + words[i] + '\" value='\n }\n box.innerHTML = s + '</tr>'\n\n}\n*/\n// ////////////////////////////////////////////////////////////\n//\n// selectorPanel\n//\n// A vertical panel for selecting connections to left or right.\n//\n// @param inverse means this is the object rather than the subject\n//\nexport function selectorPanel (\n dom: HTMLDocument,\n kb: IndexedFormula,\n type: NamedNode,\n predicate: NamedNode,\n inverse: boolean,\n possible: NamedNode[],\n options: { connectIcon?: string },\n callbackFunction: (_x: NamedNode, _e: Event, _selected: boolean) => void,\n linkCallback: (_x: NamedNode, _e: Event, _inverse: boolean, _setStyleFunction: () => void) => void\n) {\n return selectorPanelRefresh(\n dom.createElement('div'),\n dom,\n kb,\n type,\n predicate,\n inverse,\n possible,\n options,\n callbackFunction,\n linkCallback\n )\n}\n\nexport function selectorPanelRefresh (\n list: HTMLElement,\n dom: HTMLDocument,\n kb: IndexedFormula,\n type: NamedNode,\n predicate: NamedNode,\n inverse: boolean,\n possible: NamedNode[],\n options: { connectIcon?: string },\n callbackFunction: (_x: NamedNode, _e: Event, _selected: boolean) => void,\n linkCallback: (_x: NamedNode, _e: Event, _inverse: boolean, _setStyleFunction: () => void) => void\n) {\n const style0 =\n 'border: 0.1em solid #ddd; border-bottom: none; width: 95%; height: 2em; padding: 0.5em;'\n let selected: any = null\n list.innerHTML = ''\n\n const refreshItem = function (box: HTMLElement, x: NamedNode) {\n // Scope to hold item and x\n let item: any\n // eslint-disable-next-line prefer-const\n let image: HTMLImageElement\n\n const setStyle = function () {\n const already = inverse\n ? kb.each(undefined, predicate, x)\n : kb.each(x, predicate)\n iconDiv.setAttribute('class', already.length === 0 ? 'hideTillHover' : '') // See tabbedtab.css\n image.setAttribute(\n 'src',\n options.connectIcon || iconBase + 'noun_25830.svg'\n )\n image.setAttribute('title', already.length ? already.length : 'attach' as any)\n }\n const f = index.twoLine.widgetForClass(type)\n // eslint-disable-next-line prefer-const\n item = f(dom, x)\n item.setAttribute('style', style0)\n\n const nav = dom.createElement('div')\n nav.setAttribute('class', 'hideTillHover') // See tabbedtab.css\n nav.setAttribute('style', 'float:right; width:10%')\n\n const a = dom.createElement('a')\n a.setAttribute('href', x.uri)\n a.setAttribute('style', 'float:right')\n nav.appendChild(a).textContent = '>'\n box.appendChild(nav)\n\n const iconDiv = dom.createElement('div')\n iconDiv.setAttribute(\n 'style',\n (inverse ? 'float:left;' : 'float:right;') + ' width:30px;'\n )\n image = dom.createElement('img')\n setStyle()\n iconDiv.appendChild(image)\n box.appendChild(iconDiv)\n\n item.addEventListener('click', function (event) {\n if (selected === item) {\n // deselect\n item.setAttribute('style', style0)\n selected = null\n } else {\n if (selected) selected.setAttribute('style', style0)\n item.setAttribute(\n 'style',\n style0 + 'background-color: #ccc; color:black;'\n )\n selected = item\n }\n callbackFunction(x, event, selected === item)\n setStyle()\n }, false)\n\n image.addEventListener('click', function (event) {\n linkCallback(x, event, inverse, setStyle)\n }, false)\n\n box.appendChild(item)\n return box\n }\n\n for (let i = 0; i < possible.length; i++) {\n const box = dom.createElement('div')\n list.appendChild(box)\n refreshItem(box, possible[i])\n }\n return list\n}\n\n// ###########################################################################\n//\n// Small compact views of things\n//\nexport let index: any = {}\n// ///////////////////////////////////////////////////////////////////////////\n// We need these for anything which is a subject of an attachment.\n//\n// These should be moved to type-dependeent UI code. Related panes maybe\n\nfunction twoLineDefault (dom: HTMLDocument, x: NamedNode): HTMLElement {\n // Default\n const box = dom.createElement('div')\n box.textContent = utils.label(x)\n return box\n}\n\n/**\n * Find a function that can create a widget for a given class\n * @param c The RDF class for which we want a widget generator function\n */\nfunction twoLineWidgetForClass (c: NamedNode): (_dom: HTMLDocument, _x: NamedNode) => HTMLElement {\n let widget = index.twoLine[c.uri]\n const kb = store\n if (widget) return widget\n const sup = kb.findSuperClassesNT(c)\n for (const cl in sup) {\n widget = index.twoLine[kb.fromNT(cl).uri]\n if (widget) return widget\n }\n return index.twoLine['']\n}\n\n/**\n * Display a transaction\n * @param x Should have attributes through triples in store:\n * * ns.qu('payee') -> a named node\n * * ns.qu('date) -> a literal\n * * ns.qu('amount') -> a literal\n */\nfunction twoLineTransaction (dom: HTMLDocument, x: NamedNode): HTMLElement {\n let failed = ''\n const enc = function (p) {\n const y = store.any(x, ns.qu(p))\n if (!y) failed += '@@ No value for ' + p + '! '\n return y ? utils.escapeForXML(y.value) : '?' // @@@@\n }\n const box = dom.createElement('table')\n box.innerHTML = `\n <tr>\n <td colspan=\"2\"> ${enc('payee')}</td>\n < /tr>\n < tr >\n <td>${enc('date').slice(0, 10)}</td>\n <td style = \"text-align: right;\">${enc('amount')}</td>\n </tr>`\n if (failed) {\n box.innerHTML = `\n <tr>\n <td><a href=\"${utils.escapeForXML(x.uri)}\">${utils.escapeForXML(failed)}</a></td>\n </tr>`\n }\n return box\n}\n\n/**\n * Display a trip\n * @param x Should have attributes through triples in store:\n * * ns.dc('title') -> a literal\n * * ns.cal('dtstart') -> a literal\n * * ns.cal('dtend') -> a literal\n */\nfunction twoLineTrip (\n dom: HTMLDocument,\n x: NamedNode\n): HTMLElement {\n const enc = function (p) {\n const y = store.any(x, p)\n return y ? utils.escapeForXML(y.value) : '?'\n }\n const box = dom.createElement('table')\n box.innerHTML = `\n <tr>\n <td colspan=\"2\">${enc(ns.dc('title'))}</td>\n </tr>\n <tr style=\"color: #777\">\n <td>${enc(ns.cal('dtstart'))}</td>\n <td>${enc(ns.cal('dtend'))}</td>\n </tr>`\n return box\n}\n\n/**\n * Stick a stylesheet link the document if not already there\n */\nexport function addStyleSheet (dom: HTMLDocument, href: string): void {\n const links = dom.querySelectorAll('link')\n for (let i = 0; i < links.length; i++) {\n if (\n (links[i].getAttribute('rel') || '') === 'stylesheet' &&\n (links[i].getAttribute('href') || '') === href\n ) {\n return\n }\n }\n const link = dom.createElement('link')\n link.setAttribute('rel', 'stylesheet')\n link.setAttribute('type', 'text/css')\n link.setAttribute('href', href)\n dom.getElementsByTagName('head')[0].appendChild(link)\n}\n\n// Figure (or guess) whether this is an image, etc\n//\nexport function isAudio (file?: NamedNode) {\n return isImage(file, 'audio')\n}\nexport function isVideo (file?: NamedNode) {\n return isImage(file, 'video')\n}\n/**\n *\n */\nexport function isImage (file?: NamedNode, kind?: string): boolean {\n const dcCLasses = {\n audio: 'http://purl.org/dc/dcmitype/Sound',\n image: 'http://purl.org/dc/dcmitype/Image',\n video: 'http://purl.org/dc/dcmitype/MovingImage'\n }\n const what = kind || 'image'\n // See https://github.com/linkeddata/rdflib.js/blob/e367d5088c/src/formula.ts#L554\n //\n const typeURIs = store.findTypeURIs(file as any)\n // See https://github.com/linkeddata/rdflib.js/blob/d5000f/src/utils-js.js#L14\n // e.g.'http://www.w3.org/ns/iana/media-types/audio'\n const prefix: string = Util.mediaTypeClass(what + '/*').uri.split('*')[0]\n for (const t in typeURIs) {\n if (t.startsWith(prefix)) return true\n }\n if (dcCLasses[what] in typeURIs) return true\n return false\n}\n\n/**\n * File upload button\n * @param dom The DOM aka document\n * @param droppedFileHandler Same handler function as drop, takes array of file objects\n * @returns {Element} - a div with a button and a inout in it\n * The input is hidden, as it is uglky - the user clicks on the nice icons and fires the input.\n */\n// See https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications\nexport function fileUploadButtonDiv (\n dom: HTMLDocument,\n droppedFileHandler: (_files: FileList) => void\n) {\n const div = dom.createElement('div')\n const input = div.appendChild(dom.createElement('input'))\n input.setAttribute('type', 'file')\n input.setAttribute('multiple', 'true')\n input.addEventListener(\n 'change',\n (event: any) => {\n debug.log('File drop event: ', event)\n if (event.files) {\n droppedFileHandler(event.files)\n } else if (event.target && event.target.files) {\n droppedFileHandler(event.target.files)\n } else {\n alert('Sorry no files .. internal error?')\n }\n },\n false\n )\n\n ;(input as any).style = 'display:none'\n const buttonElt = div.appendChild(\n button(\n dom,\n iconBase + 'noun_Upload_76574_000000.svg',\n 'Upload files',\n _event => {\n input.click()\n }\n )\n )\n makeDropTarget(buttonElt, null, droppedFileHandler) // Can also just drop on button\n return div\n}\n\nindex = {\n line: { // Approx 80em\n },\n twoLine: { // Approx 40em * 2.4em\n '': twoLineDefault,\n 'http://www.w3.org/2000/10/swap/pim/qif#Transaction': twoLineTransaction,\n 'http://www.w3.org/ns/pim/trip#Trip': twoLineTrip,\n widgetForClass: twoLineWidgetForClass\n }\n}\n","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","/**\n * Provides a simple configuration object for Solid web client and other\n * modules.\n * @module config-default\n */\nexport default { // @@ should not use export default\n /**\n * Primary authentication endpoint\n */\n authEndpoint: '',\n\n /**\n * Fallback authentication endpoint\n */\n fallbackAuthEndpoint: 'https://databox.me/',\n\n /**\n * Default signup endpoints (list of identity providers)\n */\n signupEndpoint: 'https://solidproject.org/use-solid/',\n\n /**\n * Default height of the Signup popup window, in pixels\n */\n signupWindowHeight: 600,\n\n /**\n * Default width of the Signup popup window, in pixels\n */\n signupWindowWidth: 1024,\n\n /**\n * Path to the client private key (only needed when running within node)\n */\n key: '',\n\n /**\n * Path to the client certificate (only needed when running within node)\n */\n cert: ''\n}\n","import defaultConfig from './config-default'\n\n/**\n * Provides functionality for signing up with a Solid provider\n * @module signup\n */\n\n/**\n * Creates a Signup UI manager\n * @class\n */\nexport function Signup (config) {\n this.config = config || defaultConfig\n}\n\n/**\n * Sets up an event listener to monitor login messages from child window/iframe\n * @method listen\n * @return {Promise<String>} Event listener promise, resolves to user's WebID\n */\nSignup.prototype.listen = function listen () {\n const promise = new Promise(function (resolve, reject) {\n const eventMethod = window.addEventListener\n ? 'addEventListener'\n : 'attachEvent'\n const eventListener = window[eventMethod]\n const messageEvent = eventMethod === 'attachEvent'\n ? 'onmessage'\n : 'message'\n eventListener(messageEvent, function (e) {\n const u = e.data\n if (u.slice(0, 5) === 'User:') {\n const user = u.slice(5, u.length)\n if (user && user.length > 0 && user.slice(0, 4) === 'http') {\n return resolve(user)\n } else {\n return reject(user)\n }\n }\n }, true)\n })\n return promise\n}\n\n/**\n * Opens a signup popup window, sets up `listen()`.\n * @method signup\n * @static\n * @param signupUrl {String} Location of a Solid server for user signup.\n * @return {Promise<String>} Returns a listener promise, resolves with signed\n * up user's WebID.\n */\nSignup.prototype.signup = function signup (signupUrl) {\n signupUrl = signupUrl || this.config.signupEndpoint\n const width = this.config.signupWindowWidth\n const height = this.config.signupWindowHeight\n // set borders\n const leftPosition = (window.screen.width / 2) - ((width / 2) + 10)\n // set title and status bars\n const topPosition = (window.screen.height / 2) - ((height / 2) + 50)\n const windowTitle = 'Solid signup'\n const windowUrl = signupUrl + '?origin=' +\n encodeURIComponent(window.location.origin)\n const windowSpecs = 'resizable,scrollbars,status,width=' + width + ',height=' +\n height + ',left=' + leftPosition + ',top=' + topPosition\n window.open(windowUrl, windowTitle, windowSpecs)\n const self = this\n return new Promise(function (resolve) {\n self.listen()\n .then(function (webid) {\n return resolve(webid)\n })\n })\n}\n","import ns from '../../ns'\nimport { style } from '../../style'\n\nexport type FieldParamsObject = {\n size?: number, // input element size attribute\n type?: string, // input element type attribute. Default: 'text' (not for Comment and Heading)\n element?: string, // element type to use (Comment and Heading only)\n style?: string, // style to use\n dt?: string, // xsd data type for the RDF Literal corresponding to the field value. Default: xsd:string\n uriPrefix?: string, // e.g. 'mailto:', will be removed when displaying value to user. Overrides dt.\n namedNode?: boolean, // if true, field value corresponds to the URI of an RDF NamedNode. Overrides dt and uriPrefix.\n pattern?: RegExp // for client-side input validation; field will go red if violated, green if ok\n}\n\n/**\n * The fieldParams object defines various constants\n * for use in various form fields. Depending on the\n * field in questions, different values may be read\n * from here.\n */\nexport const fieldParams: { [ fieldUri: string ]: FieldParamsObject } = {\n /**\n * Text field\n *\n * For possible date popups see e.g. http://www.dynamicdrive.com/dynamicindex7/jasoncalendar.htm\n * or use HTML5: http://www.w3.org/TR/2011/WD-html-markup-20110113/input.date.html\n */\n [ns.ui('ColorField').uri]: {\n size: 9,\n type: 'color',\n style: 'height: 3em;', // around 1.5em is padding\n dt: 'color',\n pattern: /^\\s*#[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]([0-9a-f][0-9a-f])?\\s*$/\n }, // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/color\n\n [ns.ui('DateField').uri]: {\n size: 20,\n type: 'date',\n dt: 'date',\n pattern: /^\\s*[0-9][0-9][0-9][0-9](-[0-1]?[0-9]-[0-3]?[0-9])?Z?\\s*$/\n },\n\n [ns.ui('DateTimeField').uri]: {\n size: 20,\n type: 'datetime-local', // See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/datetime\n dt: 'dateTime',\n pattern: /^\\s*[0-9][0-9][0-9][0-9](-[0-1]?[0-9]-[0-3]?[0-9])?(T[0-2][0-9]:[0-5][0-9](:[0-5][0-9])?)?Z?\\s*$/\n },\n\n [ns.ui('TimeField').uri]: {\n size: 10,\n type: 'time',\n dt: 'time',\n pattern: /^\\s*([0-2]?[0-9]:[0-5][0-9](:[0-5][0-9])?)\\s*$/\n },\n\n [ns.ui('IntegerField').uri]: {\n size: 12,\n style: 'text-align: right;',\n dt: 'integer',\n pattern: /^\\s*-?[0-9]+\\s*$/\n },\n\n [ns.ui('DecimalField').uri]: {\n size: 12,\n style: 'text-align: right;',\n dt: 'decimal',\n pattern: /^\\s*-?[0-9]*(\\.[0-9]*)?\\s*$/\n },\n\n [ns.ui('FloatField').uri]: {\n size: 12,\n style: 'text-align: right;',\n dt: 'float',\n pattern: /^\\s*-?[0-9]*(\\.[0-9]*)?((e|E)-?[0-9]*)?\\s*$/\n },\n\n [ns.ui('SingleLineTextField').uri]: {\n\n },\n [ns.ui('NamedNodeURIField').uri]: {\n namedNode: true\n },\n [ns.ui('TextField').uri]: {\n\n },\n\n [ns.ui('PhoneField').uri]: {\n size: 20,\n uriPrefix: 'tel:',\n pattern: /^\\+?[\\d-]+[\\d]*$/\n },\n\n [ns.ui('EmailField').uri]: {\n size: 30,\n uriPrefix: 'mailto:',\n pattern: /^\\s*.*@.*\\..*\\s*$/ // @@ Get the right regexp here\n },\n\n [ns.ui('Group').uri]: {\n style: style.formGroupStyle\n },\n\n /**\n * Non-interactive fields\n */\n [ns.ui('Comment').uri]: {\n element: 'p',\n style: style.commentStyle\n },\n [ns.ui('Heading').uri]: {\n element: 'h3',\n style: style.formHeadingStyle\n }\n}\n","import { Node } from 'rdflib'\nimport { solidLogicSingleton } from 'solid-logic'\nimport { debug } from '../../log'\nimport { errorMessageBlock } from '../error'\n\nconst store = solidLogicSingleton.store\n\nexport type FieldFunction = (\n dom: HTMLDocument, // the DOM\n container: HTMLElement | undefined, // if defined, the box will be appended to it\n already: { }, // used to avoid looping in nested forms\n subject: Node, // the thing for which data will be loaded into the form element\n form: Node, // the RDF declaration for what the form should have\n doc: Node, // the online RDF document for data binding (form input values will be read/saved automatically)\n callbackFunction: (ok: boolean, errorMessage: string) => void // this will be called when data changes (TODO: check this with unit tests)\n) => HTMLElement\n\nexport const field: { [classUri: string]: FieldFunction } = {} // Form field functions by URI of field type.\n\n/**\n * Which class of field is this? Relies on http://www.w3.org/2000/01/rdf-schema#subClassOf and\n * https://linkeddata.github.io/rdflib.js/doc/classes/formula.html#bottomtypeuris\n * to find the most specific RDF type if there are multiple.\n *\n * @param x a form field, e.g. `namedNode('https://timbl.com/timbl/Public/Test/Forms/individualForm.ttl#fullNameField')`\n * @returns the URI of the most specific known class, e.g. `http://www.w3.org/ns/ui#SingleLineTextField`\n */\nexport function mostSpecificClassURI (x: Node): string {\n const kb = store\n const ft = kb.findTypeURIs(x as any)\n const bot = kb.bottomTypeURIs(ft) // most specific\n const bots: any[] = []\n for (const b in bot) bots.push(b)\n // if (bots.length > 1) throw \"Didn't expect \"+x+\" to have multiple bottom types: \"+bots\n return bots[0]\n}\n\n/**\n * Returns a function that creates a form widget\n * @param dom unused\n * @param fieldInQuestion the field for which to create a form, e.g. namedNode('https://timbl.com/timbl/Public/Test/Forms/individualForm.ttl#fullNameField')\n */\nexport function fieldFunction (dom: any /* unused */, fieldInQuestion: Node): FieldFunction {\n const uri = mostSpecificClassURI(fieldInQuestion) // What type\n // const uri = field.uri\n const fun = field[uri]\n debug(\n 'paneUtils: Going to implement field ' + fieldInQuestion + ' of type ' + uri\n )\n if (!fun) {\n return function (dom2: HTMLDocument, container?: HTMLElement): HTMLElement {\n const box = errorMessageBlock(\n dom2,\n 'No handler for field ' + fieldInQuestion + ' of type ' + uri\n )\n if (container) container.appendChild(box)\n\n return box\n }\n }\n return fun\n}\n","import ns from '../../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","import { BlankNode, Literal, NamedNode, Node, st, Store, Variable } from 'rdflib'\nimport { solidLogicSingleton } from 'solid-logic'\nimport ns from '../../ns'\nimport { style } from '../../style'\nimport styleConstants from '../../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\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 // i.e. lose focus with changed data\n if (params.pattern && !field.value.match(params.pattern)) return\n field.disabled = true // See if this stops getting two dates from fumbling e.g the chrome datepicker.\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 field.disabled = false\n field.setAttribute('style', inputStyle)\n } else {\n box.appendChild(errorMessageBlock(dom, body))\n }\n callbackFunction(ok, body)\n })\n },\n true\n )\n return box\n}\n","/* Logic to access public data stores\n*\n* including filtering resut by natural language etc\n* See https://solidos.solidcommunity.net/public/2021/01%20Building%20Solid%20Apps%20which%20use%20Public%20Data.html\n*/\n\nimport * as debug from '../../../debug'\n// import * as logic from '../index'\n// import { authn } from '../../../authn/index'\nimport { authn, store } from 'solid-logic'\nimport ns from '../../../ns'\nimport { Collection, NamedNode, Node } from 'rdflib'\n// import { Binding } from '../widgets/forms/autocomplete/publicData'\n// import { nativeNameForLanguageCode, englishNameForLanguageCode } from './nativeNameForLanguageCode'\n\n// const { currentUser } = logic.authn\n\nexport interface Binding {\n subject: Node;\n name?: Node\n location?: Node\n coordinates?: Node\n}\n\nexport const languageCodeURIBase = 'https://www.w3.org/ns/iana/language-code/' /// @@ unsupported on the web (2021)\n\nexport const defaultPreferredLanguages = ['en', 'fr', 'de', 'it', 'ar']\n\nexport function addDefaults (array) {\n if (!array) array = []\n return array.concat(defaultPreferredLanguages.filter(code => !array.includes(code)))\n}\n\nexport async function getPreferredLanguagesFor (person: NamedNode) {\n const doc = person.doc()\n await store.fetcher?.load(doc)\n const list = store.any(person, ns.schema('knowsLanguage'), null, doc) as Collection | undefined\n if (!list) {\n // console.log(`User ${person} has not set their languages in their profile.`)\n return defaultPreferredLanguages\n }\n const languageCodeArray: string[] = []\n list.elements.forEach(item => {\n // console.log('@@ item ' + item)\n const lang = store.any(item as any, ns.solid('publicId'), null, doc)\n if (!lang) {\n console.warn('getPreferredLanguages: No publiID of language.')\n return\n }\n if (!lang.value.startsWith(languageCodeURIBase)) {\n console.error(`What should be a language code ${lang.value} does not start with ${languageCodeURIBase}`)\n return\n }\n const code = lang.value.slice(languageCodeURIBase.length)\n languageCodeArray.push(code)\n })\n\n if (languageCodeArray.length > 0) {\n console.log(` User knows languages with codes: \"${languageCodeArray.join(',')}\"`)\n return addDefaults(languageCodeArray)\n }\n return null\n}\n/* Get the preferred langauges for the user\n *\n * Either from solid preferences or browser preferences or default\n */\nexport async function getPreferredLanguages () {\n // In future: cache in the login session for speed, but get from profile and private prefs\n // We append the defaults so if someone's first choice is not available they don't get something very obscure\n // See https://github.com/solidos/solidos/issues/42\n const me = await authn.currentUser() as NamedNode\n if (me) { // If logged in\n const solidLanguagePrefs = await getPreferredLanguagesFor(me)\n if (solidLanguagePrefs) return solidLanguagePrefs\n }\n if (typeof navigator !== 'undefined') { // use browser settings\n if (navigator.languages) {\n return addDefaults(navigator.languages.map(longForm => longForm.split('-')[0]))\n }\n if (navigator.language) {\n return addDefaults([navigator.language.split('-')[0]])\n }\n }\n return defaultPreferredLanguages\n}\n\n/* From an array of bindings with a names for each row,\n * remove dupliacte names for the same thing, leaving the user's\n * preferred language version\n*/\n\nexport function filterByLanguage (bindings, languagePrefs) {\n const uris = {}\n bindings.forEach(binding => { // Organize names by their subject\n const uri = binding.subject.value\n uris[uri] = uris[uri] || []\n uris[uri].push(binding)\n })\n\n const languagePrefs2 = languagePrefs || defaultPreferredLanguages\n languagePrefs2.reverse() // Preferred last\n\n const slimmed = [] as Array<Binding>\n // console.log(` @@ {languagePrefs2 ${languagePrefs2}`)\n for (const u in uris) { // needs hasOwnProperty ?\n const bindings = uris[u]\n const sortMe = bindings.map(binding => {\n const lang = binding.name['xml:lang']\n const index = languagePrefs2.indexOf(lang)\n const pair = [index, binding]\n // console.log(` @@ lang: ${lang}, index: ${index}`)\n return pair\n })\n sortMe.sort() // best at th ebottom\n sortMe.reverse() // best at the top\n // console.debug('@@ sortMe:', sortMe)\n slimmed.push((sortMe[0][1] as any))\n } // map u\n debug.log(` Filter by language: ${bindings.length} -> ${slimmed.length}`)\n return slimmed\n}\n","/* Logic to access public data stores\n*\n* including filtering resut by natural language etc\n* See https://solidos.solidcommunity.net/public/2021/01%20Building%20Solid%20Apps%20which%20use%20Public%20Data.html\n*/\n\nimport { Literal, NamedNode, parse } from 'rdflib'\nimport { store } from 'solid-logic'\nimport * as debug from '../../../debug'\nimport ns from '../../../ns'\nimport { defaultPreferredLanguages, getPreferredLanguages } from './language'\n\nexport const AUTOCOMPLETE_LIMIT = 200 // How many to get from server\n// With 3000 we could exceed the wikidata timeout\n\nconst subjectRegexp = /\\$\\(subject\\)/g\n\ninterface Term {\n type: string;\n value: string\n}\n\nexport interface Binding {\n subject: Term;\n name?: Term\n location?: Term\n coordinates?: Term\n}\n\ntype Bindings = Binding[]\n\nexport type QueryParameters =\n{\n label: string;\n limit?: number;\n logo?: NamedNode;\n searchByNameQuery?: string;\n searchByNameURI?: string;\n insitituteDetailsQuery?: string;\n endpoint?: string;\n objectURIBase?: NamedNode;\n targetClass?: NamedNode,\n}\n\n// Schema.org seems to suggest NGOs are non-profit and Corporaions are for-profit\n// but doesn't have explicit classes\nexport const wikidataClasses = {\n Corporation: 'http://www.wikidata.org/entity/Q6881511', // Enterprise is for-profit\n EducationalOrganization: 'http://www.wikidata.org/entity/Q178706', // insitution\n GovernmentOrganization: 'http://www.wikidata.org/entity/Q327333', // government agency\n MedicalOrganization: 'http://www.wikidata.org/entity/Q4287745',\n MusicGroup: 'http://www.wikidata.org/entity/Q32178211', // music organization\n NGO: 'http://www.wikidata.org/entity/Q163740', // nonprofit organization @@\n Occupation: 'http://www.wikidata.org/entity/Q28640', // Profession\n // Organization: 'http://www.wikidata.org/entity/Q43229',\n Project: 'http://www.wikidata.org/entity/Q170584',\n ResearchOrganization: 'http://www.wikidata.org/entity/Q31855',\n SportsOrganization: 'http://www.wikidata.org/entity/Q4438121'\n}\n\nexport const instituteDetailsWikidataQuery = `prefix vcard: <http://www.w3.org/2006/vcard/ns#>\nCONSTRUCT\n{ wd:Q49108 vcard:fn ?itemLabel.\nwd:Q49108 rdf:type ?klass. ?klass rdfs:label ?klassLabel; rdfs:comment ?klassDescription .\nwd:Q49108 schema:logo ?logo;\n schema:image ?image;\n schema:logo ?sealImage;\n schema:subOrganization ?subsidiary .\n ?subsidiary rdfs:label ?subsidiaryLabel .\n ?supersidiary schema:subOrganization wd:Q49108 .\n ?supersidiary rdfs:label ?supersidiaryLabel .\n wd:Q49108 schema:location ?location .\n ?location schema:elevation ?elevation .\n ?location wdt:P131 ?region . ?region rdfs:label ?regionLabel .\n ?location wdt:P625 ?coordinates .\n ?location schema:country ?country . ?country rdfs:label ?countryLabel .\n}\nWHERE\n{ optional {wd:Q49108 rdfs:label ?itemLabel} .\n optional {wd:Q49108 wdt:P154 ?logo .}\n optional {wd:Q49108 wdt:P31 ?klass .}\n optional {wd:Q49108 wdt:P158 ?sealImage .}\n optional {wd:Q49108 wdt:P18 ?image .}\n\n optional { wd:Q49108 wdt:P355 ?subsidiary . }\n optional { ?supersidiary wdt:P355 wd:Q49108. }\n\n optional { wd:Q49108 wdt:P276 ?location .\n\n optional { ?location schema:eleveation ?elevation }\n optional { ?location wdt:P131 ?region }\n optional { ?location wdt:P625 ?coordinates }\n optional { ?location wdt:P17 ?country }\n }\n SERVICE wikibase:label { bd:serviceParam wikibase:language \"fr,en,de,it\". }\n}`\n\nexport const fetcherOptionsJsonPublicData = {\n credentials: 'omit' as 'include' | 'omit' | undefined, // try to avoid CORS problems. Data is public so no auth\n headers: new Headers({ Accept: 'application/json' })\n}\n\nexport const escoParameters:QueryParameters = {\n label: 'ESCO',\n logo: store.sym('https://ec.europa.eu/esco/portal/static_resource2/images/logo/logo_en.gif'),\n searchByNameURI: 'https://ec.europa.eu/esco/api/search?language=$(language)&type=occupation&text=$(name)'\n // endpoint: undefined\n // returnFormat: 'ESCO',\n // targetClass: {}\n}\n\nexport const dbpediaParameters:QueryParameters = {\n label: 'DBPedia',\n logo: store.sym('https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/DBpediaLogo.svg/263px-DBpediaLogo.svg.png'),\n searchByNameQuery: `select distinct ?subject, ?name where {\n ?subject a $(targetClass); rdfs:label ?name\n FILTER regex(?name, \"$(name)\", \"i\")\n } LIMIT $(limit)`,\n endpoint: 'https://dbpedia.org/sparql/'\n}\n\nexport const dbPediaTypeMap = { AcademicInsitution: 'http://umbel.org/umbel/rc/EducationalOrganization' }\n\nexport const wikidataOutgoingClassMap = {\n AcademicInsitution: 'http://www.wikidata.org/entity/Q4671277',\n Enterprise: 'http://www.wikidata.org/entity/Q6881511',\n Business: 'http://www.wikidata.org/entity/Q4830453',\n NGO: 'http://www.wikidata.org/entity/Q79913',\n CharitableOrganization: 'http://www.wikidata.org/entity/Q708676',\n Insitute: 'http://www.wikidata.org/entity/Q1664720'\n}\n\nexport const wikidataParameters = {\n label: 'WikiData',\n limit: 3000, // Need a high one as very many items, and many languages\n logo: store.sym('https://www.wikimedia.org/static/images/project-logos/wikidatawiki.png'),\n endpoint: 'https://query.wikidata.org/sparql',\n searchByNameQuery: `SELECT ?subject ?name\n WHERE {\n ?klass wdt:P279* $(targetClass) .\n ?subject wdt:P31 ?klass .\n ?subject rdfs:label ?name.\n FILTER regex(?name, \"$(name)\", \"i\")\n } LIMIT $(limit) `, // was SERVICE wikibase:label { bd:serviceParam wikibase:language \"[AUTO_LANGUAGE],en\" }\n\n insitituteDetailsQuery: `CONSTRUCT\n{ wd:Q49108 schema:name ?itemLabel;\n schema:logo ?logo;\n schema:logo ?sealImage;\n schema:subOrganization ?subsidiary .\n ?subsidiary schema:name ?subsidiaryLabel .\n}\nWHERE\n{\n wd:Q49108 # rdfs:label ?itemLabel ;\n wdt:P154 ?logo;\n wdt:P158 ?sealImage ;\n wdt:P355 ?subsidiary .\n # ?subsidiary rdfs:label ?subsidiaryLabel .\n\n SERVICE wikibase:label { bd:serviceParam wikibase:language \"[AUTO_LANGUAGE], fr\". }\n}`\n}\n\nexport const wikidataIncomingClassMap = {\n 'http://www.wikidata.org/entity/Q15936437': ns.schema('CollegeOrUniversity'), // research university\n 'http://www.wikidata.org/entity/Q1664720': ns.schema('EducationalOrganization'), // insitute @@\n 'http://www.wikidata.org/entity/Q43229': ns.schema('Organization'), // research university\n 'http://www.wikidata.org/entity/Q3918': ns.schema('CollegeOrUniversity'), // university\n 'http://www.wikidata.org/entity/Q170584': ns.schema('Project'), // university\n 'http://www.wikidata.org/entity/Q327333': ns.schema('GovernmentOrganization'), // govt agency\n 'http://www.wikidata.org/entity/Q2221906': ns.schema('Place'), // geographic location\n 'http://www.wikidata.org/entity/Q167037': ns.schema('Corporation') // Corporation\n\n}\nexport const variableNameToPredicateMap = { // allow other mappings to be added in theory hence var\n // wikidata:\n targetClass: ns.rdf('type'),\n // logo: ns.schema('logo'),\n sealImage: ns.schema('logo'),\n // image: ns.schema('image'), defaults to shema\n shortName: ns.foaf('nick'),\n subsidiary: ns.schema('subOrganization'),\n // dbpedia - :\n city: ns.vcard('locality'),\n state: ns.vcard('region'),\n country: ns.vcard('country-name'),\n homepage: ns.foaf('homepage'),\n lat: ns.schema('latitude'),\n long: ns.schema('longitude')\n}\n\nexport function bindingToTerm (item) {\n const typ = item.type.toLowerCase()\n if (typ === 'uri' || typ === 'iri') {\n return store.sym(item.value)\n } else if (typ === 'literal') {\n if (item['xml:lang']) {\n return new Literal(item.value, item['xml:lang'])\n } else {\n return new Literal(item.value)\n }\n } else {\n throw new Error(`bindingToTerm: Unexpected type \"${item.type}\" in sparql binding}`)\n }\n}\n\nexport function loadFromBindings (kb, solidSubject:NamedNode, bindings, doc, predMap = variableNameToPredicateMap) {\n const results = {}\n debug.log(`loadFromBindings: subject: ${solidSubject}`)\n debug.log(` doc: ${doc}`)\n bindings.forEach(binding => {\n for (const key in binding) {\n const result = binding[key]\n const combined = JSON.stringify(result) // ( result.type, result.value )\n results[key] = results[key] || new Set()\n results[key].add(combined) // remove duplicates\n }\n })\n for (const key in results) {\n const values = results[key]\n debug.log(` results ${key} -> ${values}`)\n values.forEach(combined => {\n const result = JSON.parse(combined)\n const { type, value } = result\n let obj\n if (type === 'uri') {\n obj = kb.sym(value)\n } else if (type === 'literal') {\n obj = new Literal(value, result.language, result.datatype)\n } else {\n throw new Error(`loadFromBindings: unexpected type: ${type}`)\n }\n if (key === 'type') {\n if (wikidataIncomingClassMap[value]) {\n obj = wikidataIncomingClassMap[value]\n } else {\n debug.warn('Unmapped Wikidata Class: ' + value)\n }\n } else if (key === 'coordinates') {\n // const latlong = value // Like 'Point(-71.106111111 42.375)'\n debug.log(' @@@ hey a point: ' + value)\n // const regexp = /.*\\(([-0-9\\.-]*) ([-0-9\\.-]*)\\)/\n const regexp = /.*\\(([-0-9.-]*) ([-0-9.-]*)\\)/\n const match = regexp.exec(value)\n if (match) {\n const float = ns.xsd('float')\n const latitude = new Literal(match[1], null, float)\n const longitude = new Literal(match[2], null, float)\n kb.add(solidSubject, ns.schema('longitude'), longitude, doc)\n kb.add(solidSubject, ns.schema('latitude'), latitude, doc)\n } else {\n debug.log('Bad coordinates syntax: ' + value)\n }\n } else {\n const pred = predMap[key] || ns.schema(key) // fallback to just using schema.org\n kb.add(solidSubject, pred, obj, doc) // @@ deal with non-string and objects\n debug.log(` public data ${pred} ${obj}.`)\n }\n })\n }\n}\n\n/* ESCO sopecific\n*/\nexport function ESCOResultToBindings (json: Object): Bindings {\n const results = (json as any)._embedded.results // Array\n const bindings = results.map(result => {\n const name = result.title\n const uri = result.uri // like http://data.europa.eu/esco/occupation/57af9090-55b4-4911-b2d0-86db01c00b02\n return { name: { value: name, type: 'literal' }, subject: { type: 'IRI', value: uri } } // simulate SPARQL bindings\n })\n return bindings\n}\n\n/* Query all entities of given class and partially matching name\n*/\nexport async function queryESCODataByName (filter: string, theClass:NamedNode, queryTarget: QueryParameters): Promise<Bindings> {\n if (!queryTarget.searchByNameURI) throw new Error('Missing queryTarget.searchByNameURI on queryESCODataByName')\n const limit = queryTarget.limit || AUTOCOMPLETE_LIMIT\n const queryURI = queryTarget.searchByNameURI\n .replace('$(name)', filter)\n .replace('$(limit)', '' + limit)\n .replace('$(targetClass)', theClass.toNT())\n debug.log('Querying ESCO data - uri: ' + queryURI)\n\n const response = await store.fetcher?.webOperation('GET', queryURI, fetcherOptionsJsonPublicData)\n const text = response?.responseText || ''\n debug.log(' Query result text' + text.slice(0, 500) + '...')\n if (text.length === 0) throw new Error('Wot no text back from ESCO query ' + queryURI)\n const json = JSON.parse(text)\n // console.log('Whole JSON return object', json)\n debug.log(' ESCO Query result JSON' + JSON.stringify(json, null, 4).slice(0, 500) + '...')\n return ESCOResultToBindings(json)\n}\n\n/* Cope ithe syntax probelm in wikidata timeout responses\n*\n* Wikidata bug: https://phabricator.wikimedia.org/T283962\n* This will not be needed whn that WDQS bug fixed.\n* This is aptured in https://github.com/solidos/solid-ui/issues/403\n*/\nfunction fixWikidataJSON (str) {\n const syntaxProblem = str.indexOf('SPARQL-QUERY')\n if (syntaxProblem < 0) return str\n // console.log('@@ fixWikidataJSON FIXING')\n debug.warn(' ### Fixing JSON with wikidata error code injection ' + str.slice(syntaxProblem, syntaxProblem + 200))\n const goodness = str.lastIndexOf('}, {')\n return str.slice(0, goodness) + ' } ] } } ' // Close binding, array, bindings, results, root object\n}\n/* Query all entities of given class and partially matching name\n*/\nexport async function queryPublicDataByName (\n filter: string,\n theClass:NamedNode,\n languages: Array<string>,\n queryTarget: QueryParameters): Promise<Bindings> {\n function substituteStrings (template: string):string {\n const limit = queryTarget.limit || AUTOCOMPLETE_LIMIT\n const u1 = template.replace('$(name)', filter)\n .replace('$(limit)', '' + limit)\n .replace('$(language)', language)\n return u1.replace('$(targetClass)', theClass.toNT())\n }\n\n if (!theClass) {\n throw new Error('queryPublicDataByName: No class provided')\n }\n\n const languagePrefs = await getPreferredLanguages() || defaultPreferredLanguages\n const language = languagePrefs[0] || 'en'\n if (queryTarget.searchByNameQuery) {\n const sparql = substituteStrings(queryTarget.searchByNameQuery)\n debug.log('Querying public data - sparql: ' + sparql)\n return queryPublicDataSelect(sparql, queryTarget)\n } else if (queryTarget.searchByNameURI) { // not sparql - random API\n const queryURI = substituteStrings(queryTarget.searchByNameURI)\n let response\n try {\n response = await store.fetcher?.webOperation('GET', queryURI, fetcherOptionsJsonPublicData)\n } catch (err) {\n throw new Error(`Exception when trying to fetch ${queryURI} \\n ${err}`)\n }\n const text = response.responseText || '' // ts\n if (response.status !== 200) {\n throw new Error(`HTTP error status ${response.status} trying to fetch ${queryURI} `)\n }\n debug.log(' Query result text' + text.slice(0, 500) + '...')\n if (text.length === 0) throw new Error('queryPublicDataByName: No text back from public data query ' + queryURI)\n const text2 = fixWikidataJSON(text) // Kludge: strip of interrupting error message\n const json = JSON.parse(text2)\n debug.log(' API Query result JSON' + JSON.stringify(json, null, 4).slice(0, 500) + '...')\n if ((json as any)._embedded) {\n debug.log(' Looks like ESCO')\n const bindings = ESCOResultToBindings(json)\n return bindings\n } else {\n alert('Code me: unrecognized API return format')\n throw new Error(`*** Need to add code to parse unrecognized API JSON return\\n${JSON.stringify(json, null, 4)}`)\n }\n } else {\n throw new Error('Query source must have either rest API or SPARQL endpoint.')\n }\n}\n\n/* Query a database using SPARQL SELECT\n*/\nexport async function queryPublicDataSelect (sparql: string, queryTarget: QueryParameters): Promise<Bindings> {\n if (!queryTarget.endpoint) throw new Error('Missing queryTarget.endpoint required for queryPublicDataSelect')\n const myUrlWithParams = new URL(queryTarget.endpoint)\n myUrlWithParams.searchParams.append('query', sparql)\n const queryURI = myUrlWithParams.href\n debug.log(' queryPublicDataSelect uri: ' + queryURI)\n const headers = new Headers()\n headers.append('Accept', 'application/json')\n const options = {\n credentials: 'omit' as 'include' | 'omit' | undefined, // CORS - as we know it is public\n headers\n }\n\n const response = await store.fetcher?.webOperation('GET', queryURI, options)\n\n const text = response?.responseText || ''\n if (text.length === 0) throw new Error('No text back from query ' + queryURI)\n const text2 = fixWikidataJSON(text)\n const json = JSON.parse(text2)\n debug.log(' Query result JSON' + JSON.stringify(json, null, 4).slice(0, 100) + '...')\n const bindings = json.results.bindings\n return bindings\n}\n\n/* Load from a database using SPARQL CONSTRUCT\n*/\nexport async function queryPublicDataConstruct (sparql: string, pubicId: NamedNode, queryTarget: QueryParameters): Promise<void> {\n debug.log('queryPublicDataConstruct: sparql:', sparql)\n if (!queryTarget.endpoint) throw new Error('Missing queryTarget.endpoint required for queryPublicDataConstruct')\n const myUrlWithParams = new URL(queryTarget.endpoint)\n myUrlWithParams.searchParams.append('query', sparql)\n const queryURI = myUrlWithParams.href\n debug.log(' queryPublicDataConstruct uri: ' + queryURI)\n const headers = new Headers()\n headers.append('Accept', 'text/turtle')\n const options = {\n credentials: 'omit' as 'include' | 'omit' | undefined, // CORS // @tsc pain\n headers // ({ Accept: 'text/turtle' } as Headers)\n }\n const response = await store.fetcher?.webOperation('GET', queryURI, options)\n const text = response?.responseText || 'No response text?'\n const report = text.length > 500 ? text.slice(0, 200) + ' ... ' + text.slice(-200) : text\n debug.log(' queryPublicDataConstruct result text:' + report)\n if (text.length === 0) throw new Error('queryPublicDataConstruct: No text back from construct query:' + queryURI)\n parse(text, store, pubicId.uri, 'text/turtle')\n}\n\nexport async function loadPublicDataThing (kb, subject: NamedNode, publicDataID: NamedNode) {\n if (publicDataID.uri.startsWith('https://dbpedia.org/resource/')) {\n return getDbpediaDetails(kb, subject, publicDataID)\n } else if (publicDataID.uri.match(/^https?:\\/\\/www\\.wikidata\\.org\\/entity\\/.*/)) {\n // const QId = publicDataID.uri.split('/')[4]\n // const dataURI = `http://www.wikidata.org/wiki/Special:EntityData/${QId}.ttl`\n // In fact loading the data URI gives much too much irrelevant data, from wikidata, so we do a query.\n await getWikidataDetails(kb, subject, publicDataID)\n // await getWikidataLocation(kb, subject, publicDataID) -- should get that in the details query now\n } else {\n const iDToFetch = publicDataID.uri.startsWith('http:')\n ? kb.sym('https:' + publicDataID.uri.slice(5))\n : publicDataID\n const headers = new Headers()\n headers.append('Accept', 'text/turtle')\n return kb.fetcher.load(iDToFetch, {\n credentials: 'omit' as 'include' | 'omit' | undefined,\n headers\n })\n }\n}\n\nexport async function getWikidataDetails (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n const subjRegexp = /wd:Q49108/g\n const sparql = instituteDetailsWikidataQuery.replace(subjRegexp, publicDataID.toNT())\n await queryPublicDataConstruct(sparql, publicDataID, wikidataParameters)\n debug.log('getWikidataDetails: loaded.', publicDataID)\n}\n\nexport async function getWikidataDetailsOld (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n const sparql = `select distinct * where {\n optional { $(subject) wdt:P31 ?targetClass } # instance of\n optional { $(subject) wdt:P154 ?logo }\n optional { $(subject) wdt:P158 ?sealImage }\n# optional { $(subject) wdt:P159 ?headquartersLocation }\n\noptional { $(subject) wdt:P17 ?country }\noptional { $(subject) wdt:P18 ?image }\noptional { $(subject) wdt:P1813 ?shortName }\n\noptional { $(subject) wdt:P355 ?subsidiary }\n# SERVICE wikibase:label { bd:serviceParam wikibase:language \"fr,en,de,it\" }\n}`\n .replace(subjectRegexp, publicDataID.toNT())\n const bindings = await queryPublicDataSelect(sparql, wikidataParameters)\n loadFromBindings(kb, publicDataID, bindings, publicDataID.doc()) // arg2 was solidSubject\n}\n\nexport async function getWikidataLocation (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n const sparql = `select distinct * where {\n\n $(subject) wdt:P276 ?location .\n\n optional { ?location wdt:P2044 ?elevation }\n optional { ?location wdt:P131 ?region }\n optional { ?location wdt:P625 ?coordinates }\noptional { ?location wdt:P17 ?country }\n\n# SERVICE wikibase:label { bd:serviceParam wikibase:language \"fr,en,de,it\" }\n}`.replace(subjectRegexp, publicDataID.toNT())\n debug.log(' location query sparql:' + sparql)\n const bindings = await queryPublicDataSelect(sparql, wikidataParameters)\n debug.log(' location query bindings:', bindings)\n loadFromBindings(kb, publicDataID, bindings, publicDataID.doc()) // was solidSubject\n}\n\nexport async function getDbpediaDetails (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n// Note below the string form of the named node with <> works in SPARQL\n const sparql = `select distinct ?city, ?state, ?country, ?homepage, ?logo, ?lat, ?long, WHERE {\n OPTIONAL { <${publicDataID}> <http://dbpedia.org/ontology/city> ?city }\n OPTIONAL { ${publicDataID} <http://dbpedia.org/ontology/state> ?state }\n OPTIONAL { ${publicDataID} <http://dbpedia.org/ontology/country> ?country }\n OPTIONAL { ${publicDataID} foaf:homepage ?homepage }\n OPTIONAL { ${publicDataID} foaf:lat ?lat; foaf:long ?long }\n OPTIONAL { ${publicDataID} <http://dbpedia.org/ontology/country> ?country }\n }`\n const bindings = await queryPublicDataSelect(sparql, dbpediaParameters)\n loadFromBindings(kb, publicDataID, bindings, publicDataID.doc())\n debug.log('Finished getDbpediaDetails.')\n}\n","/* Autocomplete Picker: Create and edit data using public data\n**\n** As the data source is passed as a parameter, all kinds of APIa and query services can be used\n**\n*/\nimport * as debug from '../../../debug'\nimport { style } from '../../../style'\nimport styleConstants from '../../../styleConstants'\nimport * as widgets from '../../../widgets'\nimport { store } from 'solid-logic'\nimport { NamedNode, Literal } from 'rdflib'\nimport { queryPublicDataByName, bindingToTerm, AUTOCOMPLETE_LIMIT, QueryParameters } from './publicData'\nimport { filterByLanguage, getPreferredLanguages, defaultPreferredLanguages } from './language'\n\nconst AUTOCOMPLETE_THRESHOLD = 4 // don't check until this many characters typed\nconst AUTOCOMPLETE_ROWS = 20 // 20?\nconst AUTOCOMPLETE_ROWS_STRETCH = 40\n\n/*\nAutocomplete happens in 6 phases:\n 1. The search string is too small to bother\n 2. The search string is big enough, and we have not loaded the array\n 3. The search string is big enough, and we have loaded array up to the limit\n Display them and wait for more user input\n 4. The search string is big enough, and we have loaded array NOT to the limit\n but including all matches. No more fetches.\n If user gets more precise, wait for them to select one - or reduce to a single\n 5. Single one selected. Optionally waiting for accept button to be pressed, OR can change string and go to 5 or 2\n 6. Locked with a value. Press 'edit' button to return to 5\n*/\n\nexport type AutocompleteDecoration = {\n acceptButton?: HTMLElement,\n cancelButton: HTMLElement, // Must have cancel button\n editButton?: HTMLElement,\n deleteButton?: HTMLElement\n}\nexport type AutocompleteOptions = {\n targetClass?: NamedNode,\n currentObject?: NamedNode,\n currentName?: Literal,\n queryParams: QueryParameters,\n size?: number,\n permanent?: boolean\n}\n\ninterface Callback1 {\n (_subject: NamedNode, _name: Literal): any;\n}\n\nexport function setVisible (element:HTMLElement, visible:boolean) {\n element.style.display = visible ? '' : 'none' // Do not use visibility, it holds the real estate\n}\n\n// The core of the autocomplete UI\nexport async function renderAutoComplete (dom: HTMLDocument,\n acOptions:AutocompleteOptions,\n decoration: AutocompleteDecoration,\n callback: Callback1) {\n function complain (message) {\n const errorRow = table.appendChild(dom.createElement('tr'))\n debug.log(message)\n const err = new Error(message)\n errorRow.appendChild(widgets.errorMessageBlock(dom, err, 'pink'))\n // errorMessageBlock will log the stack to the console\n style.setStyle(errorRow, 'autocompleteRowStyle')\n errorRow.style.padding = '1em'\n }\n\n function finish (object, name) {\n debug.log('Auto complete: finish! ' + object)\n if (object.termType === 'Literal' && acOptions.queryParams.objectURIBase) {\n object = store.sym(acOptions.queryParams.objectURIBase.value + object.value)\n }\n // remove(decoration.cancelButton)\n // remove(decoration.acceptButton)\n // remove(div)\n clearList()\n callback(object, name)\n }\n async function gotIt (object:NamedNode | Literal, name: Literal) {\n if (decoration.acceptButton) {\n (decoration.acceptButton as any).disbaled = false\n setVisible(decoration.acceptButton, true) // now wait for confirmation\n searchInput.value = name.value // complete it\n foundName = name\n foundObject = object\n debug.log('Auto complete: name: ' + name)\n debug.log('Auto complete: waiting for accept ' + object)\n clearList() // This may be an option - nice and clean but does not allow change of mind\n return\n }\n setVisible(decoration.cancelButton, true)\n finish(object, name)\n }\n\n async function acceptButtonHandler (_event) {\n if (foundName && searchInput.value === foundName.value) { // still\n finish(foundObject, foundName)\n }\n }\n\n async function cancelButtonHandler (_event) {\n debug.log('Auto complete: Canceled by user! ')\n if (acOptions.permanent) {\n initialize()\n } else {\n if (div.parentNode) {\n div.parentNode.removeChild(div)\n }\n }\n }\n\n function nameMatch (filter:string, candidate: string):boolean {\n const parts = filter.split(' ') // Each name part must be somewhere\n for (let j = 0; j < parts.length; j++) {\n const word = parts[j]\n if (candidate.toLowerCase().indexOf(word) < 0) return false\n }\n return true\n }\n\n function clearList () {\n while (table.children.length > 1) {\n table.removeChild(table.lastChild as Node)\n }\n }\n\n async function inputEventHHandler (_event) {\n // console.log('@@ AC inputEventHHandler called')\n setVisible(decoration.cancelButton, true) // only allow cancel when there is something to cancel\n refreshList() /// @@ debounqce does not work with jest\n /*\n if (runningTimeout) {\n clearTimeout(runningTimeout)\n }\n runningTimeout = setTimeout(refreshList, AUTOCOMPLETE_DEBOUNCE_MS)\n */\n }\n\n async function loadBindingsAndFilterByLanguage (filter, languagePrefs) {\n // console.log('@@ loadBindingsAndFilterByLanguage ' + filter)\n let bindings\n try {\n bindings = await queryPublicDataByName(filter, targetClass as any,\n languagePrefs || defaultPreferredLanguages, acOptions.queryParams)\n } catch (err) {\n complain('Error querying db of organizations: ' + err)\n inputEventHandlerLock = false\n return\n }\n loadedEnough = bindings.length < AUTOCOMPLETE_LIMIT\n if (loadedEnough) {\n lastFilter = filter\n } else {\n lastFilter = undefined\n }\n clearList()\n const slimmed = filterByLanguage(bindings, languagePrefs)\n return slimmed\n }\n\n function filterByName (filter, bindings) {\n return bindings.filter(binding => nameMatch(filter, binding.name.value))\n }\n\n async function refreshList () {\n // console.log('@@ refreshList called')\n function rowForBinding (binding) {\n const row = dom.createElement('tr')\n style.setStyle(row, 'autocompleteRowStyle')\n row.setAttribute('style', 'padding: 0.3em;')\n row.style.color = allDisplayed ? '#080' : '#088' // green means 'you should find it here'\n row.textContent = binding.name.value\n const object = bindingToTerm(binding.subject)\n const nameTerm = bindingToTerm(binding.name)\n row.addEventListener('click', async _event => {\n debug.log(' click row textContent: ' + row.textContent)\n debug.log(' click name: ' + nameTerm.value)\n if (object && nameTerm) {\n gotIt(object, nameTerm as Literal)\n }\n })\n return row\n } // rowForBinding\n function compareBindingsByName (self, other) {\n return other.name.value > self.name.value\n ? 1\n : other.name.name < self.name.value ? -1 : 0\n }\n\n if (inputEventHandlerLock) {\n debug.log(`Ignoring \"${searchInput.value}\" because of lock `)\n return\n }\n debug.log(`Setting lock at \"${searchInput.value}\"`)\n\n inputEventHandlerLock = true\n const languagePrefs = await getPreferredLanguages()\n const filter = searchInput.value.trim().toLowerCase()\n if (filter.length < AUTOCOMPLETE_THRESHOLD) { // too small\n clearList()\n // candidatesLoaded = false\n numberOfRows = AUTOCOMPLETE_ROWS\n } else {\n if (!allDisplayed || !lastFilter || !filter.startsWith(lastFilter)) {\n debug.log(` Querying database at \"${filter}\" cf last \"${lastFilter}\".`)\n lastBindings = await loadBindingsAndFilterByLanguage(filter, languagePrefs) // freesh query\n }\n // Trim table as search gets tighter:\n const slimmed = filterByName(filter, lastBindings)\n if (loadedEnough && slimmed.length <= AUTOCOMPLETE_ROWS_STRETCH) {\n numberOfRows = slimmed.length // stretch if it means we get all items\n }\n allDisplayed = loadedEnough && slimmed.length <= numberOfRows\n debug.log(` Filter:\"${filter}\" lastBindings: ${lastBindings.length}, slimmed to ${slimmed.length}; rows: ${numberOfRows}, Enough? ${loadedEnough}, All displayed? ${allDisplayed}`)\n\n const displayable = slimmed.slice(0, numberOfRows)\n\n displayable.sort(compareBindingsByName)\n clearList()\n for (const binding of displayable) {\n table.appendChild(rowForBinding(binding))\n }\n if (slimmed.length === 1) {\n gotIt(bindingToTerm(slimmed[0].subject), bindingToTerm(slimmed[0].name) as Literal)\n }\n } // else\n inputEventHandlerLock = false\n } // refreshList\n\n function initialize () {\n if (acOptions.currentObject) { // If have existing value then jump into the endgame of the autocomplete\n searchInput.value = acOptions.currentName ? acOptions.currentName.value : '??? wot no name for ' + acOptions.currentObject\n foundName = acOptions.currentName\n lastFilter = acOptions.currentName ? acOptions.currentName.value : undefined\n foundObject = acOptions.currentObject\n } else {\n searchInput.value = ''\n lastFilter = undefined\n foundObject = undefined\n }\n if (decoration.deleteButton) {\n setVisible(decoration.deleteButton, !!acOptions.currentObject)\n }\n\n if (decoration.acceptButton) {\n setVisible(decoration.acceptButton, false) // hide until input complete\n }\n if (decoration.editButton) {\n setVisible(decoration.editButton, true)\n }\n if (decoration.cancelButton) {\n setVisible(decoration.cancelButton, false) // only allow cancel when there is something to cancel\n }\n inputEventHandlerLock = false\n clearList()\n } // initialiize\n\n // const queryParams: QueryParameters = acOptions.queryParams\n const targetClass = acOptions.targetClass\n if (!targetClass) throw new Error('renderAutoComplete: missing targetClass')\n // console.log(`renderAutoComplete: targetClass=${targetClass}` )\n if (decoration.acceptButton) {\n decoration.acceptButton.addEventListener('click', acceptButtonHandler, false)\n }\n if (decoration.cancelButton) {\n decoration.cancelButton.addEventListener('click', cancelButtonHandler, false)\n }\n\n // var candidatesLoaded = false\n let lastBindings\n let loadedEnough = false\n let inputEventHandlerLock = false\n let allDisplayed = false\n let lastFilter = undefined as (string | undefined)\n let numberOfRows = AUTOCOMPLETE_ROWS // this gets slimmed down\n const div = dom.createElement('div')\n let foundName = undefined as (Literal | undefined)// once found accepted string must match this\n let foundObject = undefined as (NamedNode | Literal | undefined)\n const table = div.appendChild(dom.createElement('table'))\n table.setAttribute('data-testid', 'autocomplete-table')\n table.setAttribute('style', 'max-width: 30em; margin: 0.5em;')\n const head = table.appendChild(dom.createElement('tr'))\n style.setStyle(head, 'autocompleteRowStyle') // textInputStyle or\n const cell = head.appendChild(dom.createElement('td'))\n const searchInput = cell.appendChild(dom.createElement('input'))\n searchInput.setAttribute('type', 'text')\n\n initialize()\n\n const size = acOptions.size || styleConstants.textInputSize || 20\n searchInput.setAttribute('size', size)\n searchInput.setAttribute('data-testid', 'autocomplete-input')\n\n const searchInputStyle = style.textInputStyle || // searchInputStyle ?\n 'border: 0.1em solid #444; border-radius: 0.5em; width: 100%; font-size: 100%; padding: 0.1em 0.6em' // @\n searchInput.setAttribute('style', searchInputStyle)\n searchInput.addEventListener('keyup', function (event) {\n if (event.keyCode === 13) {\n acceptButtonHandler(event)\n }\n }, false)\n\n searchInput.addEventListener('input', inputEventHHandler)\n // console.log('@@ renderAutoComplete returns ' + div.innerHTML)\n return div\n} // renderAutoComplete\n\n// ENDS\n","/* The Autocomplete Control with decorations\n\nThis control has the buttons which control the state between editing, viewing, searching, accepting\nand so on. See the state diagram in the documentation. The AUtocomplete Picker does the main work.\n\n*/\nimport ns from '../../../ns'\nimport { icons } from '../../../iconBase'\nimport { store } from 'solid-logic'\nimport * as widgets from '../../../widgets'\nimport * as utils from '../../../utils'\n\nimport { renderAutoComplete, AutocompleteDecoration, setVisible } from './autocompletePicker' // dbpediaParameters\n\nimport { NamedNode } from 'rdflib'\n\nconst WEBID_NOUN = 'Solid ID'\n\nconst GREEN_PLUS = icons.iconBase + 'noun_34653_green.svg'\nconst SEARCH_ICON = icons.iconBase + 'noun_Search_875351.svg'\nconst EDIT_ICON = icons.iconBase + 'noun_253504.svg'\n// const DELETE_ICON = icons.iconBase + 'noun_2188_red.svg'\n\nexport async function renderAutocompleteControl (dom:HTMLDocument,\n person:NamedNode,\n barOptions,\n acOptions,\n addOneIdAndRefresh,\n deleteOne): Promise<HTMLElement> {\n async function autoCompleteDone (object, name) {\n if (acOptions.permanent) { // remember to set this in publicid panel\n setVisible(editButton, true)\n setVisible(acceptButton, false)\n setVisible(cancelButton, false)\n } else {\n // console.log('temporary - removed decoratiion')\n removeDecorated()\n }\n return addOneIdAndRefresh(object, name)\n }\n\n async function greenButtonHandler (_event) {\n const webid = await widgets.askName(dom, store, creationArea, ns.vcard('url'), undefined, WEBID_NOUN)\n if (!webid) {\n return // cancelled by user\n }\n return addOneIdAndRefresh(person, webid)\n }\n\n function removeDecorated () {\n if (decoratedAutocomplete) {\n creationArea.removeChild(decoratedAutocomplete)\n decoratedAutocomplete = undefined\n }\n }\n\n async function displayAutocomplete () {\n decoratedAutocomplete = dom.createElement('div') as HTMLElement\n decoratedAutocomplete.setAttribute('style', 'display: flex; flex-flow: wrap;')\n decoratedAutocomplete.appendChild(await renderAutoComplete(dom, acOptions, decoration, autoCompleteDone))\n // console.log('@@ acceptButton', acceptButton)\n decoratedAutocomplete.appendChild(acceptButton)\n // console.log('@@ cancelButton', cancelButton)\n\n decoratedAutocomplete.appendChild(cancelButton)\n // console.log('@@ editButton', editButton)\n\n decoratedAutocomplete.appendChild(editButton)\n // console.log('@@ deleteButtonContainer', deleteButtonContainer)\n\n decoratedAutocomplete.appendChild(deleteButtonContainer)\n creationArea.appendChild(decoratedAutocomplete)\n }\n\n async function searchButtonHandler (_event) {\n if (decoratedAutocomplete) {\n creationArea.removeChild(decoratedAutocomplete)\n decoratedAutocomplete = undefined\n } else {\n await displayAutocomplete()\n }\n }\n\n async function droppedURIHandler (uris) {\n for (const webid of uris) { // normally one but can be more than one\n await addOneIdAndRefresh(person, webid)\n }\n }\n\n const acceptButton = widgets.continueButton(dom)\n acceptButton.setAttribute('data-testid', 'accept-button')\n\n const cancelButton = widgets.cancelButton(dom)\n cancelButton.setAttribute('data-testid', 'cancel-button')\n const deleteButtonContainer = dom.createElement('div')\n const noun = acOptions.targetClass ? utils.label(acOptions.targetClass) : 'item'\n const deleteButton = widgets.deleteButtonWithCheck(dom, deleteButtonContainer, noun, deleteOne) // need to knock out this UI or caller does that\n deleteButton.setAttribute('data-testid', 'delete-button')\n const editButton = widgets.button(dom, EDIT_ICON, 'Edit', _event => {\n editing = !editing\n syncEditingStatus()\n })\n editButton.setAttribute('data-testid', 'edit-button')\n let editing = true\n\n function syncEditingStatus () {\n if (editing) {\n setVisible(editButton, false)\n setVisible(acceptButton, false) // not till got it\n setVisible(cancelButton, false)\n } else {\n setVisible(editButton, true)\n setVisible(acceptButton, false)\n setVisible(cancelButton, false)\n }\n }\n\n const decoration:AutocompleteDecoration = {\n acceptButton, cancelButton, editButton, deleteButton\n }\n\n let decoratedAutocomplete = undefined as HTMLElement | undefined\n\n const creationArea = dom.createElement('div')\n creationArea.style.display = 'flex'\n creationArea.style.flexDirection = 'row'\n\n if (acOptions.permanent || acOptions.currentObject) {\n await displayAutocomplete()\n }\n if (barOptions.editable) {\n // creationArea.appendChild(await renderAutoComplete(dom, barOptions, autoCompleteDone)) wait for searchButton\n creationArea.style.width = '100%'\n if (barOptions.manualURIEntry) {\n const plus = creationArea.appendChild(widgets.button(dom, GREEN_PLUS, barOptions.idNoun, greenButtonHandler))\n widgets.makeDropTarget(plus, droppedURIHandler, undefined)\n }\n if (barOptions.dbLookup && !acOptions.currentObject && !acOptions.permanent) {\n creationArea.appendChild(widgets.button(dom, SEARCH_ICON, barOptions.idNoun, searchButtonHandler))\n }\n }\n syncEditingStatus()\n return creationArea\n} // renderAutocompleteControl\n\n// ends\n","/* Form field for doing autocompleete\n */\nimport ns from '../../../ns'\nimport { store } from 'solid-logic'\nimport * as widgets from '../../../widgets'\nimport { style } from '../../../style'\nimport { renderAutocompleteControl } from './autocompleteBar'\nimport { QueryParameters } from './publicData'\nimport { NamedNode, BlankNode, Literal, Variable, st } from 'rdflib'\nimport { AutocompleteOptions } from './autocompletePicker'\n/**\n * Render a autocomplete form field\n *\n * The autocomplete form searches for an object in a definitive public database,\n * and allows the user to search for it by name, displaying a list of objects whose names match\n * the input to date, and letting the user either click on one of the list,\n * or just go on untill there is only one. The process then returns two values,\n * the URiI of the object and its name.\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 so other parts can be refreshed.\n *\n * Form properties:\n * @param ui:property The property to store the object itself\n * @param ui:labelProperty The property used to store the name of the object\n * @param ui:category The class of objects to be searched, if fixed (else dep on class of subject)\n *\n * @returns The HTML widget created\n */\n\nexport function autocompleteField (\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 async function addOneIdAndRefresh (result:NamedNode | Literal, name: Literal) {\n if (!name) {\n throw new Error('autocompleteField: No name set.')\n }\n const oldValue = kb.the(subject, property as any, null, doc)\n if (oldValue) {\n const oldName = kb.any(oldValue as any, labelProperty as any, null, doc)\n if (oldValue.equals(result) && oldName && oldName.sameTerm(name)) {\n // console.log('No change: same values.')\n return\n }\n }\n const deletables = oldValue\n ? kb.statementsMatching(subject, property as any, oldValue, doc)\n .concat(kb.statementsMatching(oldValue as any, labelProperty as any, null, doc))\n : []\n // console.log('autocompleteField Deletables ' + deletables.map(st => st.toNT()))\n const insertables = [st(subject, property as any, result, doc),\n st(result as any, labelProperty as any, name, doc)] // @@ track the language of the name too!\n // console.log(`AC form: ${deletables.length} to delete and ${insertables.length} to insert`)\n try {\n // console.log('@@@ AC updating ', deletables, insertables)\n await kb.updater?.updateMany(deletables, insertables)\n } catch (err) {\n callbackFunction(false, err)\n box.appendChild(widgets.errorMessageBlock(dom, 'Autocomplete form data update error:' + err, null, err))\n return\n }\n callbackFunction(true, '')\n }\n\n async function deleteOne (_result:NamedNode | Literal, _name: Literal) {\n const oldValue = kb.the(subject, property as any, null, doc)\n if (!oldValue) {\n callbackFunction(false, 'NO data to elete')\n box.appendChild(widgets.errorMessageBlock(dom, 'Autocomplete delete: no old data!'))\n return\n }\n // const oldName = kb.any(oldValue as any, labelProperty as any, null, doc)\n const deletables = kb.statementsMatching(subject, property as any, oldValue, doc)\n .concat(kb.statementsMatching(oldValue as any, labelProperty as any, null, doc))\n // console.log('autocompleteField Deletables ' + deletables.map(st => st.toNT()))\n const insertables = []\n // console.log(`AC form delete: ${deletables.length} to delete and ${insertables.length} to insert`)\n try {\n // console.log('@@@ AC updating ', deletables, insertables)\n await kb.updater?.updateMany(deletables, insertables)\n } catch (err) {\n const e2 = new Error('Autocomplete form data delete error:' + err)\n callbackFunction(false, err)\n box.appendChild(widgets.errorMessageBlock(dom, e2, null, err))\n return\n }\n callbackFunction(true, '') // changed\n }\n\n if (subject.termType !== 'NamedNode') {\n throw new Error('Sorry this field only works on NamedNode subjects (for editable)')\n }\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 if (container) container.appendChild(box)\n const lhs = dom.createElement('div')\n lhs.setAttribute('class', 'formFieldName')\n lhs.setAttribute('style', style.formFieldNameBoxStyle)\n box.appendChild(lhs)\n const rhs = dom.createElement('div')\n rhs.setAttribute('class', 'formFieldValue')\n box.appendChild(rhs)\n\n const property = kb.any(form, ns.ui('property'))\n if (!property) {\n return box.appendChild(\n widgets.errorMessageBlock(dom, 'Error: No property given for autocomplete field: ' + form)\n )\n }\n const labelProperty = kb.any(form, ns.ui('labelProperty')) || ns.schema('name')\n\n // Parse the data source into query options\n\n const dataSource = kb.any(form, ns.ui('dataSource')) as NamedNode | undefined\n if (!dataSource) {\n // console.log('@@ connectedStatements ACF ', kb.connectedStatements(form).map(x => x.toNT()).join('\\n'))\n return box.appendChild(\n widgets.errorMessageBlock(dom, 'Error: No data source given for autocomplete field: ' + form)\n )\n }\n const queryParams:QueryParameters = {\n // targetClass: kb.any(dataSource, ns.ui('targetClass'), null, dataSource.doc()) as NamedNode | undefined,\n label: kb.anyJS(dataSource, ns.schema('name'), null, dataSource.doc()),\n logo: (kb.any(dataSource, ns.schema('logo'), null, dataSource.doc())) as NamedNode | undefined\n }\n\n // @@ Should we pass the target class in from the data source definition or use a current type of the subject\n const targetClass = (kb.any(form, ns.ui('targetClass'), null, form.doc()) || // class in form takes pecedence\n kb.any(dataSource, ns.ui('targetClass'), null, dataSource.doc())) as NamedNode | undefined\n if (targetClass) {\n queryParams.targetClass = targetClass\n }\n\n queryParams.objectURIBase = (kb.any(dataSource, ns.ui('objectURIBase'), null, dataSource.doc()) || undefined) as NamedNode | undefined\n\n /*\n if (!queryParams.targetClass) {\n const klass = kb.any(subject, ns.rdf('type')) as NamedNode | undefined\n // @@ be more selective of which class if many\n // @@ todo: Take ALL classes, and compare them with those the data source knows about\n // with translation where necessary. Find most specific of the classes for the search.\n if (!klass) throw new Error('Autocomplete: No class specified or is current type of' + subject)\n queryParams.targetClass = klass\n }\n */\n const endpoint = kb.anyJS(dataSource, ns.ui('endpoint'), null, dataSource.doc()) as string | undefined\n if (endpoint) { // SPARQL\n queryParams.endpoint = endpoint\n\n queryParams.searchByNameQuery = kb.anyJS(dataSource, ns.ui('searchByNameQuery'), null, dataSource.doc())\n if (!queryParams.searchByNameQuery) {\n return box.appendChild(\n widgets.errorMessageBlock(dom, 'Error: No searchByNameQuery given for endpoint data Source: ' + form))\n }\n queryParams.insitituteDetailsQuery = kb.anyJS(dataSource, ns.ui('insitituteDetailsQuery'), null, dataSource.doc())\n } else {\n // return box.appendChild(\n // widgets.errorMessageBlock(dom, 'Error: No SPARQL endpoint given for autocomplete field: ' + form))\n const searchByNameURI = kb.anyJS(dataSource, ns.ui('searchByNameURI'))\n if (!searchByNameURI) {\n return box.appendChild(\n widgets.errorMessageBlock(dom, 'Error: No searchByNameURI OR sparql endpoint given for dataSource: ' + dataSource)\n )\n }\n queryParams.searchByNameURI = searchByNameURI\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 const editable = kb.updater?.editable((doc as NamedNode).uri)\n\n const autocompleteOptions:AutocompleteOptions = { // cancelButton?: HTMLElement,\n permanent: true,\n targetClass: queryParams.targetClass, // @@ simplify?\n queryParams\n }\n\n autocompleteOptions.size = kb.anyJS(form, ns.ui('size'), null, formDoc) || undefined\n\n let obj = kb.any(subject, property as any, undefined, doc)\n if (!obj) {\n obj = kb.any(form, ns.ui('default'))\n if (obj) {\n autocompleteOptions.currentObject = obj as NamedNode\n autocompleteOptions.currentName = kb.any(autocompleteOptions.currentObject, labelProperty, null, doc) as Literal\n } else { // No data or default. Should we suprress the whole field?\n if (suppressEmptyUneditable && !editable) {\n box.style.display = 'none' // clutter removal\n return box\n }\n }\n } else { // get object and name from target data:\n autocompleteOptions.currentObject = obj as NamedNode\n autocompleteOptions.currentName = kb.any(autocompleteOptions.currentObject, labelProperty, null, doc) as Literal\n }\n\n lhs.appendChild(widgets.fieldLabel(dom, property as any, form))\n\n const barOptions = {\n editable,\n dbLookup: true\n }\n\n renderAutocompleteControl(dom, subject as NamedNode, barOptions, autocompleteOptions, addOneIdAndRefresh, deleteOne).then((control) => {\n rhs.appendChild(control)\n }, (err) => {\n rhs.appendChild(widgets.errorMessageBlock(dom, `Error rendering autocomplete ${form}: ${err}`, '#fee', err)) //\n })\n return box\n}\n\n// ends\n","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","/*\n * BASED ON:\n * IconicMultiSelect v0.7.0\n * Licence: MIT\n * (c) 2021 Sidney Wimart.\n * repo & configuration: https://github.com/sidneywm/iconic-multiselect\n */\n\n/**\n * @version IconicMultiSelect v0.7.0\n * @licence MIT\n */\nexport const style = {\n\n multiselect__container: `\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n background-color: #fff;\n border-radius: 2px;\n -webkit-box-shadow: 0 1px 3px 0 #d1d1d2, 0 0 0 1px #d1d1d2;\n box-shadow: 0 1px 3px 0 #d1d1d2, 0 0 0 1px #d1d1d2;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n min-height: 36px;\n padding: 4px 8px 0 8px;\n position: relative;\n width: 354px;\n margin-bottom: 5px;\n font-size: 100%\n `,\n\n /*\n multiselect__container:after: `\n content: '';\n min-height:inherit;\n font-size:0;\n `,\n\n multiselect__container > *: `\n color: #656565;\n font-size: 14px;\n `,\n*/\n multiselect__wrapper: `\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n height: 100%;\n width: 100%;\n `,\n\n multiselect__clear_btn: `\n cursor: pointer;\n align-items: center;\n margin-bottom: 4px;\n margin-left: 4px;\n `,\n\n multiselect__options: `\n background-color: #f6f6f6;\n border-radius: 2px;\n left: 0;\n max-height: 0;\n overflow: hidden;\n position: absolute;\n top: calc(100% + 3px);\n z-index: 9999;\n width: 100%;\n opacity: 0;\n transition: max-height 0.1s ease;\n `,\n\n multiselect__options_visible: `\n background-color: #f6f6f6;\n border-radius: 2px;\n left: 0;\n max-height: 0;\n overflow: hidden;\n position: absolute;\n top: calc(100% + 3px);\n z-index: 9999;\n width: 100%;\n opacity: 0;\n transition: max-height 0.1s ease;\n max-height: 200px;\n -webkit-box-shadow: 0 1px 3px 0 #d1d1d2, 0 0 0 1px #d1d1d2;\n box-shadow: 0 1px 3px 0 #d1d1d2, 0 0 0 1px #d1d1d2;\n opacity: 1;\n transition: max-height 0.2s ease;\n `,\n\n multiselect__options_ul: `\n list-style: none;\n margin: 0;\n padding: 2px 0;\n max-height: 200px;\n overflow: auto;\n `,\n\n multiselect__options_ul_li: `\n cursor: pointer;\n padding: 4px 8px;\n `,\n\n // multiselect__options ul li:hover: `\n multiselect__options_ul_li_hover: `\n background-color: #dedede;\n `,\n\n /*\n multiselect__options ul li *: `\n pointer-events: none;\n `,\n*/\n\n multiselect__options_ul_p_multiselect__options_no_results: `\n margin: 0;\n padding: 8px;\n text-align: center;\n `,\n\n multiselect__options_ul_p_multiselect__options_no_data: `\n margin: 0;\n padding: 8px;\n text-align: center;\n `,\n\n // multiselect__options ul li.multiselect__options--selected: `\n multiselect__options_ul_li_multiselect__options_selected: `\n background-color: #656565;\n color: #fff;\n `,\n\n // multiselect__options ul li.multiselect__options--selected:hover: `\n multiselect__options_ul_li_multiselect__options_selected_hover: `\n background-color: #656565;\n `,\n\n // multiselect__options ul li.arrow-selected: `\n multiselect__options_ul_li_arrow_selected: `\n border: 2px solid rgba(101, 101, 101, 0.5);\n `,\n\n multiselect__selected: `\n background-color: #656565;\n border-radius: 2px;\n color: #fff;\n margin-bottom: 4px;\n margin-right: 4px;\n padding: 4px 8px;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n `,\n\n multiselect__selected_multiselect__remove_btn: `\n cursor: pointer;\n display: flex;\n margin-left: 6px;\n `,\n\n multiselect__input: `\n border: none;\n -ms-flex-preferred-size: 40%;\n flex-basis: 40%;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n height: 5px; \n margin-bottom: 4px;\n min-width: 40%;\n outline: none; \n `\n}\n\nstyle.setStyle = function setStyle (ele, styleName) {\n ele.style = style[styleName]\n}\n","/*\n * IconicMultiSelect v0.7.0\n * Licence: MIT\n * (c) 2021 Sidney Wimart.\n * repo & configuration: https://github.com/sidneywm/iconic-multiselect\n */\n\n/**\n * @version IconicMultiSelect v0.7.0\n * @licence MIT\n */\nimport { style } from '../style_multiSelect'\n\nexport class IconicMultiSelect {\n _data\n _domElements\n _event = () => {}\n _itemTemplate\n _multiselect\n _noData\n _noResults\n _options = []\n _placeholder\n _select\n _selectContainer\n _selectedOptions = []\n _tagTemplate\n _textField\n _valueField\n _cross = `\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6.2253 4.81108C5.83477 4.42056 5.20161 4.42056 4.81108 4.81108C4.42056 5.20161 4.42056 5.83477 4.81108 6.2253L10.5858 12L4.81114 17.7747C4.42062 18.1652 4.42062 18.7984 4.81114 19.1889C5.20167 19.5794 5.83483 19.5794 6.22535 19.1889L12 13.4142L17.7747 19.1889C18.1652 19.5794 18.7984 19.5794 19.1889 19.1889C19.5794 18.7984 19.5794 18.1652 19.1889 17.7747L13.4142 12L19.189 6.2253C19.5795 5.83477 19.5795 5.20161 19.189 4.81108C18.7985 4.42056 18.1653 4.42056 17.7748 4.81108L12 10.5858L6.2253 4.81108Z\"\n fill=\"currentColor\"\n />\n </svg>\n `\n\n /**\n * Iconic Multiselect constructor.\n * @param { Object[] } data - Array of objects.\n * @param { string } noData - Defines the message when there is no data input.\n * @param { string } noResults - Defines the message when there is no result if options are filtered.\n * @param { string } placeholder - Defines the placeholder's text.\n * @param { string } select - DOM element to be selected. It must be a HTML Select tag - https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select\n * @param { string } textField - Field to select in the object for the text.\n * @param { string } valueField - Field to select in the object for the value.\n */\n constructor ({ data, itemTemplate, noData, noResults, placeholder, select, container, tagTemplate, textField, valueField }) {\n this._data = data ?? []\n this._itemTemplate = itemTemplate ?? null\n this._noData = noData ?? 'No data found.'\n this._noResults = noResults ?? 'No results found.'\n this._placeholder = placeholder ?? 'Select...'\n this._select = select\n // Timea added a container here\n this._selectContainer = container\n this._tagTemplate = tagTemplate ?? null\n this._textField = textField ?? null\n this._valueField = valueField ?? null\n }\n\n /**\n * Initialize the Iconic Multiselect component.\n * @public\n */\n init () {\n // Timea change to use this._select instead of this._selectContainer\n if (this._select && this._select.nodeName === 'SELECT') {\n if (this._itemTemplate && this._data.length === 0) { throw new Error('itemTemplate must be initialized with data from the component settings') }\n if (this._tagTemplate && this._data.length === 0) { throw new Error('tagTemplate must be initialized with data from the component settings') }\n\n this._options = this._data.length > 0 ? this._getDataFromSettings() : this._getDataFromSelectTag()\n\n this._renderMultiselect()\n this._renderOptionsList()\n\n this._domElements = {\n clear: this._multiselect.querySelector('.multiselect__clear-btn'),\n input: this._multiselect.querySelector('.multiselect__input'),\n optionsContainer: this._multiselect.querySelector('.multiselect__options'),\n optionsContainerList: this._multiselect.querySelector('.multiselect__options > ul'),\n options: {\n list: this._multiselect.querySelectorAll('.multiselect__options > ul > li'),\n find: function (callbackFn) {\n for (let i = 0; i < this.list.length; i++) {\n const node = this.list[i]\n if (callbackFn(node)) return node\n }\n return undefined\n },\n some: function (callbackFn) {\n for (let i = 0; i < this.list.length; i++) {\n const node = this.list[i]\n if (callbackFn(node, i)) return true\n }\n return false\n }\n }\n }\n\n this._enableEventListenners()\n this._initSelectedList()\n } else {\n throw new Error(`The selector '${this._select}' did not select any valid select tag.`)\n }\n }\n\n /**\n * Subscribes to the emitted events.\n * @param { Function } callback - Callback function which emits a custom event object.\n * @public\n */\n subscribe (callback) {\n if (typeof callback === 'function') {\n this._event = callback\n } else {\n throw new Error('parameter in the subscribe method is not a function')\n }\n }\n\n /**\n * Add an option to the selection list.\n * @param { Object: { text: string; value: string; }} option\n * @private\n */\n _addOptionToList (option, index) {\n const html = `<span class=\"multiselect__selected\" style=\"${style.multiselect__selected}\" data-value=\"${option.value}\">${\n this._tagTemplate ? this._processTemplate(this._tagTemplate, index) : option.text\n }<span class=\"multiselect__remove-btn\" style=\"${style.multiselect__remove_btn}\">${this._cross}</span></span>`\n\n this._domElements.input.insertAdjacentHTML('beforebegin', html)\n\n const { lastElementChild: removeBtn } = this._multiselect.querySelector(`span[data-value=\"${option.value}\"]`)\n removeBtn.addEventListener('click', () => {\n const target = this._domElements.options.find((el) => el.dataset.value === option.value)\n this._handleOption(target)\n })\n }\n\n /**\n * Clears all selected options.\n * @private\n */\n _clearSelection () {\n for (let i = 0; i < this._selectedOptions.length; i++) {\n const option = this._selectedOptions[i]\n const target = this._domElements.options.find((el) => el.dataset.value === option.value)\n target.classList.remove('multiselect__options--selected')\n target.setAttribute('style', style.multiselect__options)\n this._removeOptionFromList(target.dataset.value)\n }\n this._selectedOptions = []\n this._handleClearSelectionBtn()\n this._handlePlaceholder()\n this._dispatchEvent({\n action: 'CLEAR_ALL_OPTIONS',\n selection: this._selectedOptions\n })\n }\n\n /**\n * Close the options container.\n * @private\n */\n _closeList () {\n this._domElements.input.value = ''\n this._domElements.optionsContainer.classList.remove('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options)\n this._filterOptions('')\n this._removeAllArrowSelected()\n }\n\n /**\n * Dispatches new events.\n * @param { object : { action: string; selection: { option: string; text: string; }[]; value?: string; } } event\n * @private\n */\n _dispatchEvent (event) {\n this._event(event)\n }\n\n /**\n * Enables all main event listenners.\n * @private\n */\n _enableEventListenners () {\n document.addEventListener('mouseup', ({ target }) => {\n if (!this._multiselect.contains(target)) {\n this._filterOptions('')\n this._closeList()\n this._handlePlaceholder()\n }\n })\n\n this._domElements.clear.addEventListener('click', () => {\n this._clearSelection()\n })\n\n for (let i = 0; i < this._domElements.options.list.length; i++) {\n const option = this._domElements.options.list[i]\n option.addEventListener('click', ({ target }) => {\n this._handleOption(target)\n this._closeList()\n })\n }\n\n this._domElements.input.addEventListener('focus', () => {\n this._domElements.optionsContainer.classList.add('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options_visible)\n })\n\n this._domElements.input.addEventListener('input', ({ target: { value } }) => {\n if (this._domElements.options.list.length > 0) {\n this._filterOptions(value)\n }\n })\n\n this._domElements.input.addEventListener('keydown', (e) => {\n this._handleArrows(e)\n this._handleBackspace(e)\n this._handleEnter(e)\n })\n }\n\n /**\n * Filters user input.\n * @param { string } value\n * @private\n */\n _filterOptions (value) {\n const isOpen = this._domElements.optionsContainer.classList.contains('visible')\n const valueLowerCase = value.toLowerCase()\n\n if (!isOpen && value.length > 0) {\n this._domElements.optionsContainer.classList.add('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options_visible)\n }\n\n if (this._domElements.options.list.length > 0) {\n for (let i = 0; i < this._domElements.options.list.length; i++) {\n const el = this._domElements.options.list[i]\n const text = this._itemTemplate ? this._data[i][this._textField] : el.textContent\n\n if (text.toLowerCase().substring(0, valueLowerCase.length) === valueLowerCase) {\n this._domElements.optionsContainerList.appendChild(el)\n } else {\n el.parentNode && el.parentNode.removeChild(el)\n }\n }\n\n const hasResults = this._domElements.options.some(\n (el, index) =>\n (this._itemTemplate ? this._data[index][this._textField] : el.textContent)\n .toLowerCase()\n .substring(0, valueLowerCase.length) === valueLowerCase\n )\n this._showNoResults(!hasResults)\n }\n }\n\n _generateId (length) {\n let result = ''\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n const charactersLength = characters.length\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength))\n }\n return result\n }\n\n /**\n * Gets data from select tag.\n * @private\n */\n _getDataFromSelectTag () {\n const arr = []\n const { options } = this._select\n for (let i = 0; i < options.length; i++) {\n const item = options[i]\n arr.push({\n text: item.text,\n value: item.value,\n selected: item.hasAttribute('selected')\n })\n }\n return arr\n }\n\n /**\n * Gets data from settings.\n * @private\n */\n _getDataFromSettings () {\n if (this._data.length > 0 && this._valueField && this._textField) {\n const isValueFieldValid = typeof this._valueField === 'string'\n const isTextFieldValid = typeof this._textField === 'string'\n const arr = []\n\n if (!isValueFieldValid || !isTextFieldValid) {\n throw new Error('textField and valueField must be of type string')\n }\n\n for (let i = 0; i < this._data.length; i++) {\n const item = this._data[i]\n arr.push({\n value: item[this._valueField],\n text: item[this._textField],\n selected: typeof item.selected === 'boolean' ? item.selected : false\n })\n }\n return arr\n } else {\n return null\n }\n }\n\n /**\n * Handles Arrow up & Down. Selection of an option is also possible with these keys.\n * @param { Event } event\n * @private\n */\n _handleArrows (event) {\n if (event.keyCode === 40 || event.keyCode === 38) {\n event.preventDefault()\n const isOpen = this._domElements.optionsContainer.classList.contains('visible')\n // An updated view of the container is needed because of the filtering option\n const optionsContainerList = this._multiselect.querySelector('.multiselect__options > ul')\n\n if (!isOpen) {\n this._domElements.optionsContainer.classList.add('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options_visible)\n optionsContainerList.firstElementChild.classList.add('arrow-selected')\n optionsContainerList.firstElementChild.setAttribute('style', style.multiselect__options_ul_li_arrow_selected)\n optionsContainerList.firstElementChild.scrollIntoView(false)\n } else {\n let selected = this._multiselect.querySelector('.multiselect__options ul li.arrow-selected')\n const action = {\n ArrowUp: 'previous',\n Up: 'previous',\n ArrowDown: 'next',\n Down: 'next'\n }\n\n if (!selected) {\n optionsContainerList.firstElementChild.classList.add('arrow-selected')\n optionsContainerList.firstElementChild.setAttribute('style', style.multiselect__options_ul_li_arrow_selected)\n optionsContainerList.firstElementChild.scrollIntoView(false)\n return\n }\n\n selected.classList.remove('arrow-selected')\n selected.setAttribute('style', style.multiselect__options_ul_li)\n\n selected = selected[action[event.key] + 'ElementSibling']\n\n // Go to start or end of the popup list\n if (!selected) {\n selected =\n optionsContainerList.children[action[event.key] === 'next' ? 0 : optionsContainerList.children.length - 1]\n selected.classList.add('arrow-selected')\n selected.setAttribute('style', style.multiselect__options_ul_li_arrow_selected)\n this._scrollIntoView(optionsContainerList, selected)\n return\n }\n\n selected.classList.add('arrow-selected')\n selected.setAttribute('style', style.multiselect__options_ul_li_arrow_selected)\n this._scrollIntoView(optionsContainerList, selected)\n }\n }\n }\n\n /**\n * Handles the backspace key event - Deletes the preceding option in the selection list.\n * @param { Event } e\n * @private\n */\n _handleBackspace (e) {\n if (e.keyCode === 8 && e.target.value === '') {\n const lastSelectedOption =\n this._selectedOptions.length > 0 ? this._selectedOptions[this._selectedOptions.length - 1] : null\n\n if (lastSelectedOption) {\n const targetLastSelectedOption = this._multiselect.querySelector(\n `li[data-value=\"${lastSelectedOption.value}\"]`\n )\n this._handleOption(targetLastSelectedOption)\n\n if (this._selectedOptions.length === 0) {\n this._domElements.optionsContainer.classList.remove('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options)\n }\n }\n }\n }\n\n /**\n * Shows clear selection button if some options are selected.\n * @private\n */\n _handleClearSelectionBtn () {\n if (this._selectedOptions.length > 0) {\n this._domElements.clear.style.display = 'flex'\n } else {\n this._domElements.clear.style.display = 'none'\n }\n }\n\n /**\n * Handles the enter key event.\n * @param { Event } event\n * @private\n */\n _handleEnter (event) {\n if (event.keyCode === 13) {\n const selected = this._multiselect.querySelector('.multiselect__options ul li.arrow-selected')\n if (selected) {\n this._handleOption(selected)\n this._closeList()\n }\n }\n }\n\n _handleOption (target, dispatchEvent = true) {\n // Remove\n for (let i = 0; i < this._selectedOptions.length; i++) {\n const el = this._selectedOptions[i]\n if (el.value === target.dataset.value) {\n target.classList.remove('multiselect__options--selected')\n target.setAttribute('style', style.multiselect__options)\n this._selectedOptions.splice(i, 1)\n this._removeOptionFromList(target.dataset.value)\n this._handleClearSelectionBtn()\n this._handlePlaceholder()\n\n return (\n dispatchEvent &&\n this._dispatchEvent({\n action: 'REMOVE_OPTION',\n value: target.dataset.value,\n selection: this._selectedOptions\n })\n )\n }\n }\n\n // Add\n for (let i = 0; i < this._options.length; i++) {\n const option = this._options[i]\n if (option.value === target.dataset.value) {\n target.classList.add('multiselect__options--selected')\n target.setAttribute('style', style.multiselect__options_selected)\n this._selectedOptions = [...this._selectedOptions, option]\n this._addOptionToList(option, i)\n this._handleClearSelectionBtn()\n this._handlePlaceholder()\n\n return (\n dispatchEvent &&\n this._dispatchEvent({\n action: 'ADD_OPTION',\n value: target.dataset.value,\n selection: this._selectedOptions\n })\n )\n }\n }\n }\n\n /**\n * Shows the placeholder if no options are selected.\n * @private\n */\n _handlePlaceholder () {\n this._domElements.input.placeholder = this._placeholder\n }\n\n _initSelectedList () {\n let hasItemsSelected = false\n\n for (let i = 0; i < this._options.length; i++) {\n const option = this._options[i]\n if (option.selected) {\n hasItemsSelected = true\n const target = this._domElements.options.find((el) => el.dataset.value === option.value)\n target.classList.add('multiselect__options--selected')\n target.setAttribute('style', style.multiselect__options_selected)\n this._selectedOptions = [...this._selectedOptions, option]\n this._addOptionToList(option, i)\n }\n }\n\n if (hasItemsSelected) { this._handleClearSelectionBtn() }\n this._handlePlaceholder()\n }\n\n /**\n * Process the custom template.\n * @param { string } template\n * @private\n */\n _processTemplate (template, index) {\n let processedTemplate = template\n const objAttr = template.match(/\\$\\{(\\w+)\\}/g).map((e) => e.replace(/\\$\\{|\\}/g, ''))\n\n for (let i = 0; i < objAttr.length; i++) {\n const attr = objAttr[i]\n // eslint-disable-next-line no-useless-escape\n processedTemplate = processedTemplate.replace(`\\$\\{${attr}\\}`, this._data[index][attr] ?? '')\n }\n\n return processedTemplate\n }\n\n _removeAllArrowSelected () {\n const className = 'arrow-selected'\n const target = this._domElements.options.find((el) => el.classList.contains(className))\n target && target.classList.remove(className) && target.setAttribute('style', style.multiselect__options_ul_li)\n }\n\n /**\n * Removes an option from the list.\n * @param { string } value\n * @private\n */\n _removeOptionFromList (value) {\n const optionDom = this._multiselect.querySelector(`span[data-value=\"${value}\"]`)\n optionDom && optionDom.parentNode && optionDom.parentNode.removeChild(optionDom)\n }\n\n /**\n * Renders the multiselect options list view.\n * @private\n */\n _renderOptionsList () {\n const html = `\n <div class=\"multiselect__options\" style=\"${style.multiselect__options}\">\n <ul style=\"${style.multiselect__options_ul}\">\n ${\n this._options.length > 0 && !this._itemTemplate\n ? this._options\n .map((option) => {\n return `\n <li data-value=\"${option.value}\" style=\"${style.multiselect__options_ul_li}\">${option.text}</li>\n `\n })\n .join('')\n : ''\n }\n\n ${\n this._options.length > 0 && this._itemTemplate\n ? this._options\n .map((option, index) => {\n return `\n <li data-value=\"${option.value}\" style=\"${style.multiselect__options_ul_li}\">${this._processTemplate(this._itemTemplate, index)}</li>\n `\n })\n .join('')\n : ''\n }\n ${this._showNoData(this._options.length === 0)}\n </ul>\n </div>\n `\n\n this._multiselect.insertAdjacentHTML('beforeend', html)\n }\n\n /**\n * Renders the multiselect view.\n * @private\n */\n _renderMultiselect () {\n this._select.style.display = 'none'\n const id = 'iconic-' + this._generateId(20)\n // Timea created dedicated div element because previous code was not rendering\n this._multiselect = document.createElement('div')\n this._multiselect.setAttribute('id', id)\n this._multiselect.setAttribute('class', 'multiselect__container')\n this._multiselect.setAttribute('style', style.multiselect__container)\n const html = `\n <div class=\"multiselect__wrapper\" style=\"${style.multiselect__wrapper}\">\n <input class=\"multiselect__input\" style=\"${style.multiselect__input}\" placeholder=\"${this._placeholder}\" />\n </div>\n <span style=\"display: none;\" class=\"multiselect__clear-btn\" style=\"${style.multiselect__clear_btn}\">${this._cross}</span>\n `\n this._multiselect.innerHTML = html\n this._selectContainer.appendChild(this._multiselect)\n }\n\n /**\n * ScrollIntoView - This small utility reproduces the behavior of .scrollIntoView({ block: \"nearest\", inline: \"nearest\" })\n * This is for IE compatibility without a need of a polyfill\n * @private\n */\n _scrollIntoView (parent, child) {\n const rectParent = parent.getBoundingClientRect()\n const rectChild = child.getBoundingClientRect()\n\n // Detect if not visible at top and then scroll to the top\n if (!(rectParent.top < rectChild.bottom - child.offsetHeight)) {\n parent.scrollTop = child.clientHeight + (child.offsetTop - child.offsetHeight)\n }\n\n // Detect if not visible at bottom and then scroll to the bottom\n if (!(rectParent.bottom > rectChild.top + child.offsetHeight)) {\n parent.scrollTop =\n child.clientHeight +\n (child.offsetTop - child.offsetHeight) -\n (parent.offsetHeight - (child.offsetHeight + (child.offsetHeight - child.clientHeight)))\n }\n }\n\n /**\n * Shows a no data message.\n * @param { boolean } condition\n * @private\n */\n _showNoData (condition) {\n return condition ? `<p class=\"multiselect__options--no-data\" style=\"${style.multiselect__options_ul_p_multiselect__options_no_data}\">${this._noData}</p>` : ''\n }\n\n /**\n * Shows a no results message.\n * @param { boolean } condition\n * @private\n */\n _showNoResults (condition) {\n const dom = this._multiselect.querySelector('.multiselect__options--no-results')\n if (condition) {\n const html = `<p class=\"multiselect__options--no-results\" style=\"${style.multiselect__options_ul_p_multiselect__options_no_results}\">${this._noResults}</p>`\n !dom && this._domElements.optionsContainerList.insertAdjacentHTML('beforeend', html)\n } else {\n dom && dom.parentNode && dom.parentNode.removeChild(dom)\n }\n }\n}\n","/* F O R M S\n *\n * A Vanilla Dom implementation of the form language\n */\n\n/* global alert */\n\nimport * as buttons from './buttons'\nimport { fieldParams } from './forms/fieldParams'\nimport { field, mostSpecificClassURI, fieldFunction } from './forms/fieldFunction'\nimport { setFieldStyle } from './forms/formStyle'\nimport * as debug from '../debug'\nimport { errorMessageBlock } from './error'\nimport { basicField, fieldLabel, fieldStore, renderNameValuePair } from './forms/basic'\nimport { autocompleteField } from './forms/autocomplete/autocompleteField'\nimport { style } from '../style'\nimport styleConstants from '../styleConstants'\n\nimport { icons } from '../iconBase'\nimport * as log from '../log'\nimport ns from '../ns'\nimport * as $rdf from 'rdflib'\nimport { store } from 'solid-logic'\nimport * as utils from '../utils'\nimport { IconicMultiSelect } from './multiSelect'\nimport * as widgets from '../widgets'\nexport { basicField, fieldLabel, fieldStore, renderNameValuePair } from './forms/basic' // Note default export\n\nexport { field, mostSpecificClassURI, fieldFunction } from './forms/fieldFunction'\nexport { fieldParams } from './forms/fieldParams'\n\nconst checkMarkCharacter = '\\u2713'\nconst cancelCharacter = '\\u2715'\nconst dashCharacter = '-'\nconst kb = store\n\nfield[ns.ui('AutocompleteField').uri] = autocompleteField\n\n// ///////////////////////////////////////////////////////////////////////\n\n/* Form Field implementations\n **\n */\n/** Group of different fields\n **\n ** One type of form field is an ordered Group of other fields.\n ** A Form is actually just the same as a group.\n **\n ** @param {Document} dom The HTML Document object aka Document Object Model\n ** @param {Element?} container If present, the created widget will be appended to this\n ** @param {Map} already A hash table of (form, subject) kept to prevent recursive forms looping\n ** @param {Node} subject The thing about which the form displays/edits data\n ** @param {Node} form The form or field to be rendered\n ** @param {Node} dataDoc The web document in which the data is\n ** @param {function(ok, errorMessage)} callbackFunction Called when data is changed?\n **\n ** @returns {Element} The HTML widget created\n */\nfunction refreshOpionsSubfieldinGroup (dom, already, subject, dataDoc, callbackFunction, groupDiv, subfields) {\n const eles = groupDiv.children\n for (let j = 0; j < subfields.length; j++) {\n // This is really messy.\n const field = subfields[j]\n const t = mostSpecificClassURI(field) // Field type\n if (t === ns.ui('Options').uri) {\n const optionsRender = fieldFunction(dom, field)\n const newOne = optionsRender(\n dom,\n null,\n already,\n subject,\n field,\n dataDoc,\n callbackFunction\n )\n debug.log('Refreshing Options field by replacing it.') // better to support actual refresh\n groupDiv.insertBefore(newOne, eles[j])\n groupDiv.removeChild(eles[j + 1]) // Remove the old one\n }\n }\n}\n\nfield[ns.ui('Form').uri] = field[ns.ui('Group').uri] =\n function (dom, container, already, subject, form, dataDoc, callbackFunction) {\n const box = dom.createElement('div')\n const ui = ns.ui\n if (container) container.appendChild(box)\n\n // Prevent loops\n if (!form) return\n const key = subject.toNT() + '|' + form.toNT()\n if (already[key]) {\n // been there done that\n box.appendChild(dom.createTextNode('Group: see above ' + key))\n // TODO fix dependency cycle to solid-panes by calling outlineManager\n // const plist = [$rdf.st(subject, ns.owl('sameAs'), subject)] // @@ need prev subject\n // dom.outlineManager.appendPropertyTRs(box, plist)\n // dom.appendChild(plist)\n return box\n }\n const already2 = {}\n for (const x in already) already2[x] = 1\n already2[key] = 1\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n const weight0 = kb.any(form, ui('weight'), null, formDoc) // Say 0-3\n const weight = weight0 ? Number(weight0.value) : 1\n if (weight > 3 || weight < 0) return box.appendChild(errorMessageBlock(dom, `Form Group weight ${weight} should be 0-3`))\n\n box.setAttribute('style', style.formGroupStyle[weight]) // Indent a group\n box.style.display = 'flex'\n box.style.flexDirection = 'column'\n box.class = 'form-weight-' + weight\n\n let parts = kb.any(form, ui('parts'), null, formDoc)\n let subfields\n if (parts) {\n subfields = parts.elements\n } else {\n parts = kb.each(form, ui('part'), null, formDoc) // Warning: unordered\n subfields = sortBySequence(parts)\n }\n if (!parts) {\n return box.appendChild(errorMessageBlock(dom, 'No parts to form! '))\n }\n\n for (let i = 0; i < subfields.length; i++) {\n const field = subfields[i]\n const subFieldFunction = fieldFunction(dom, field) //\n\n const itemChanged = function (ok, body) {\n if (ok && body && body.widget && body.widget === 'select') {\n refreshOpionsSubfieldinGroup(dom, already, subject, dataDoc, callbackFunction, box, subfields)\n }\n callbackFunction(ok, { widget: 'group', change: body })\n }\n box.appendChild(subFieldFunction(dom, null, already2, subject, field, dataDoc, itemChanged))\n }\n return box\n }\n\n/** Options field: Select one or more cases\n **\n ** @param {Document} dom The HTML Document object aka Document Object Model\n ** @param {Element?} container If present, the created widget will be appended to this\n ** @param {Map} already A hash table of (form, subject) kept to prevent recursive forms looping\n ** @param {Node} subject The thing about which the form displays/edits data\n ** @param {Node} form The form or field to be rendered\n ** @param {Node} dataDoc The web document in which the data is\n ** @param {function(ok, errorMessage)} callbackFunction Called when data is changed?\n **\n ** @returns {Element} The HTML widget created\n */\n\nfield[ns.ui('Options').uri] = function (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction\n) {\n const kb = store\n const box = dom.createElement('div')\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n const ui = ns.ui\n if (container) container.appendChild(box)\n\n let dependingOn = kb.any(form, ui('dependingOn'))\n if (!dependingOn) {\n dependingOn = ns.rdf('type')\n } // @@ default to type (do we want defaults?)\n const cases = kb.each(form, ui('case'), null, formDoc)\n if (!cases) {\n box.appendChild(errorMessageBlock(dom, 'No cases to Options form. '))\n }\n let values\n if (dependingOn.sameTerm(ns.rdf('type'))) {\n values = Object.keys(kb.findTypeURIs(subject)).map(uri => $rdf.sym(uri)) // Use RDF-S inference\n } else {\n values = kb.each(subject, dependingOn)\n }\n\n for (let i = 0; i < cases.length; i++) {\n const c = cases[i]\n const tests = kb.each(c, ui('for'), null, formDoc) // There can be multiple 'for'\n let match = false\n for (let j = 0; j < tests.length; j++) {\n for (const value of values) {\n const test = tests[j]\n if (value.sameTerm(tests) ||\n (value.termType === test.termType && value.value === test.value)) {\n match = true\n }\n }\n }\n if (match) {\n const field = kb.the(c, ui('use'))\n if (!field) {\n box.appendChild(\n errorMessageBlock(\n dom,\n 'No \"use\" part for case in form ' + form\n )\n )\n return box\n } else {\n appendForm(\n dom,\n box,\n already,\n subject,\n field,\n dataDoc,\n callbackFunction\n )\n }\n break\n }\n }\n // @@ Add box.refresh() to sync fields with values\n return box\n}\n\n/** Multiple field: zero or more similar subFields\n **\n ** @param {Document} dom The HTML Document object aka Document Object Model\n ** @param {Element?} container If present, the created widget will be appended to this\n ** @param {Map} already A hash table of (form, subject) kept to prevent recursive forms looping\n ** @param {Node} subject The thing about which the form displays/edits data\n ** @param {Node} form The form or field to be rendered\n ** @param {Node} dataDoc The web document in which the data is\n ** @param {function(ok, errorMessage)} callbackFunction Called when data is changed?\n **\n ** @returns {Element} The HTML widget created\n **\n ** Form properties:\n ** @param {Boolean} reverse Make e reverse arc in the data OPS not SPO\n ** @param {NamedNode} property The property to be written in the data\n ** @param {Boolean} ordered Is the list an ordered one where the user defined the order\n */\nfield[ns.ui('Multiple').uri] = function (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction\n) {\n /** Diagnostic function\n */\n function debugString (values) {\n return values.map(x => x.toString().slice(-7)).join(', ')\n }\n\n /** Add an item to the local quadstore not the UI or the web\n *\n * @param {Node} object The RDF object to be represented by this item.\n */\n async function addItem () {\n const object = newThing(dataDoc) // by default just add new nodes\n if (ordered) {\n createListIfNecessary() // Sets list and unsavedList\n list.elements.push(object)\n await saveListThenRefresh()\n } else {\n const toBeInserted = reverse ? [$rdf.st(object, property, subject, dataDoc)] : [$rdf.st(subject, property, object, dataDoc)]\n try {\n await kb.updater.update([], toBeInserted)\n } catch (err) {\n const msg = 'Error adding to unordered multiple: ' + err\n box.appendChild(errorMessageBlock(dom, msg))\n debug.error(msg)\n }\n refresh()\n }\n }\n\n /** Make a dom representation for an item\n * @param {Event} anyEvent if used as an event handler\n * @param {Node} object The RDF object to be represented by this item.\n */\n function renderItem (object) {\n async function deleteThisItem () {\n if (ordered) {\n debug.log('pre delete: ' + debugString(list.elements))\n for (let i = 0; i < list.elements.length; i++) {\n if (list.elements[i].sameTerm(object)) {\n list.elements.splice(i, 1)\n await saveListThenRefresh()\n return\n }\n }\n } else {\n // unordered\n if (kb.holds(subject, property, object, dataDoc)) {\n const del = [$rdf.st(subject, property, object, dataDoc)]\n kb.updater.update(del, [], function (uri, ok, message) {\n if (ok) {\n body.removeChild(subField)\n } else {\n body.appendChild(\n errorMessageBlock(\n dom,\n 'Multiple: delete failed: ' + message\n )\n )\n }\n })\n }\n }\n }\n\n /** Move the object up or down in the ordered list\n * @param {Event} anyEvent if used as an event handler\n * @param {Boolean} upwards Move this up (true) or down (false).\n */\n async function moveThisItem (event, upwards) {\n // @@ possibly, allow shift+click to do move to top or bottom?\n debug.log('pre move: ' + debugString(list.elements))\n let i\n for (i = 0; i < list.elements.length; i++) {\n // Find object in array\n if (list.elements[i].sameTerm(object)) {\n break\n }\n }\n if (i === list.elements.length) {\n alert('list move: not found element for ' + object)\n }\n if (upwards) {\n if (i === 0) {\n alert('@@ boop - already at top -temp message') // @@ make boop sound\n return\n }\n list.elements.splice(i - 1, 2, list.elements[i], list.elements[i - 1])\n } else {\n // downwards\n if (i === list.elements.length - 1) {\n alert('@@ boop - already at bottom -temp message') // @@ make boop sound\n return\n }\n list.elements.splice(i, 2, list.elements[i + 1], list.elements[i])\n }\n await saveListThenRefresh()\n }\n /* A subField has been filled in\n *\n * One possibility is to not actually make the link to the thing until\n * this callback happens to avoid widow links\n */\n function itemDone (ok, message) {\n debug.log(`Item done callback for item ${object.toString()}`)\n if (!ok) { // when does this happen? errors typically deal with upstream\n debug.error(' Item done callback: Error: ' + message)\n }\n callbackFunction(ok, message)\n }\n\n log.debug('Multiple: render object: ' + object)\n\n const fn = fieldFunction(dom, element)\n const subField = fn(dom, null, already, object, element, dataDoc, itemDone) // subfields was: body. moving to not passing that\n subField.subject = object // Keep a back pointer between the DOM array and the RDF objects\n\n // delete button and move buttons\n if (kb.updater.editable(dataDoc.uri)) {\n buttons.deleteButtonWithCheck(dom, subField, multipleUIlabel, deleteThisItem)\n if (ordered) { // Add controsl in a frame\n const frame = dom.createElement('div')\n frame.style.display = 'grid'\n frame.style.gridTemplateColumns = 'auto 3em'\n frame.style.gridTemplateRows = '50% 50%'\n const moveUpButton = buttons.button(\n dom, icons.iconBase + 'noun_1369237.svg', 'Move Up',\n async event => moveThisItem(event, true))\n const moveDownButton = buttons.button(\n dom, icons.iconBase + 'noun_1369241.svg', 'Move Down',\n async event => moveThisItem(event, false))\n const shim = dom.createElement('div')\n shim.appendChild(subField) // Subfield has its own layout\n frame.appendChild(shim)\n\n frame.appendChild(moveUpButton)\n frame.appendChild(moveDownButton)\n moveUpButton.style.gridColumn = 2\n moveDownButton.style.gridColumn = 2\n moveUpButton.style.gridRow = 1\n moveDownButton.style.padding = '0em' // don't take too much space\n moveUpButton.style.padding = '0em'\n\n moveDownButton.style.gridRow = 2\n shim.style.gridColumn = 1\n shim.style.gridRowStart = 'span 2' // Cover both rows\n // shim.style.gridRowEnd = 2 // Cover both rows\n return frame\n }\n }\n return subField // unused\n } // renderItem\n\n /// ///////// Body of Multiple form field implementation\n\n const plusIconURI = icons.iconBase + 'noun_19460_green.svg' // white plus in green circle\n\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 const shim = box // no shim\n // We don't indent multiple as it is a sort of a prefix of the next field and has contents of one.\n // box.setAttribute('style', 'padding-left: 2em; border: 0.05em solid green;') // Indent a multiple\n const ui = ns.ui\n if (container) container.appendChild(box)\n\n const orderedNode = kb.any(form, ui('ordered'))\n const ordered = orderedNode ? $rdf.Node.toJS(orderedNode) : false\n\n const property = kb.any(form, ui('property'))\n const reverse = kb.anyJS(form, ui('reverse'), null, formDoc)\n if (!property) {\n box.appendChild(\n errorMessageBlock(dom, 'No property to multiple: ' + form)\n ) // used for arcs in the data\n return shim\n }\n let multipleUIlabel = kb.any(form, ui('label'))\n if (!multipleUIlabel) multipleUIlabel = utils.label(property)\n let min = kb.any(form, ui('min')) // This is the minimum number -- default 0\n min = min ? 0 + min.value : 0\n\n const element = kb.any(form, ui('part')) // This is the form to use for each one\n if (!element) {\n box.appendChild(\n errorMessageBlock(dom, 'No part to multiple: ' + form)\n )\n return shim\n }\n\n const body = box.appendChild(dom.createElement('div'))\n body.style.display = 'flex'\n\n body.style.flexDirection = 'column'\n let list // The RDF collection which keeps the ordered version or null\n let values // Initial values - always an array. Even when no list yet.\n values = reverse ? kb.any(null, property, subject, dataDoc) : kb.any(subject, property, null, dataDoc)\n if (ordered) {\n list = reverse ? kb.any(null, property, subject, dataDoc) : kb.any(subject, property, null, dataDoc)\n if (list) {\n values = list.elements\n } else {\n values = []\n }\n } else {\n values = reverse ? kb.each(null, property, subject, dataDoc) : kb.each(subject, property, null, dataDoc)\n list = null\n }\n // Add control on the bottom for adding more items\n if (kb.updater.editable(dataDoc.uri)) {\n const tail = box.appendChild(dom.createElement('div'))\n tail.style.padding = '0.5em'\n const img = tail.appendChild(dom.createElement('img'))\n img.setAttribute('src', plusIconURI) // plus sign\n img.setAttribute('style', 'margin: 0.2em; width: 1.5em; height:1.5em')\n img.title = 'Click to add another ' + multipleUIlabel\n const prompt = dom.createElement('span')\n prompt.textContent =\n (values.length === 0 ? 'Add another ' : 'Add ') +\n multipleUIlabel\n tail.addEventListener('click', async _eventNotUsed => {\n await addItem()\n }, true)\n tail.appendChild(prompt)\n }\n\n function createListIfNecessary () {\n if (!list) {\n list = new $rdf.Collection()\n if (reverse) {\n kb.add(list, property, subject, dataDoc)\n } else {\n kb.add(subject, property, list, dataDoc)\n }\n }\n }\n\n async function saveListThenRefresh () {\n debug.log('save list: ' + debugString(list.elements)) // 20191214\n\n createListIfNecessary()\n try {\n await kb.fetcher.putBack(dataDoc)\n } catch (err) {\n box.appendChild(\n errorMessageBlock(dom, 'Error trying to put back a list: ' + err)\n )\n return\n }\n refresh()\n }\n\n function refresh () {\n let vals\n if (ordered) {\n const li = reverse ? kb.the(null, property, subject, dataDoc) : kb.the(subject, property, null, dataDoc)\n vals = li ? li.elements : []\n } else {\n vals = reverse ? kb.each(null, property, subject, dataDoc) : kb.each(subject, property, null, dataDoc)\n vals.sort() // achieve consistency on each refresh\n }\n utils.syncTableToArrayReOrdered(body, vals, renderItem)\n }\n body.refresh = refresh // Allow live update\n refresh()\n\n async function asyncStuff () {\n const extra = min - values.length\n if (extra > 0) {\n for (let j = 0; j < extra; j++) {\n debug.log('Adding extra: min ' + min)\n await addItem() // Add blanks if less than minimum\n }\n await saveListThenRefresh()\n }\n }\n asyncStuff().then(\n () => { debug.log(' Multiple render: async stuff ok') },\n (err) => { debug.error(' Multiple render: async stuff fails. #### ', err) }\n ) // async\n\n return shim\n} // Multiple\n\n/* Text field\n **\n */\n// For possible date popups see e.g. http://www.dynamicdrive.com/dynamicindex7/jasoncalendar.htm\n// or use HTML5: http://www.w3.org/TR/2011/WD-html-markup-20110113/input.date.html\n//\n\nfield[ns.ui('PhoneField').uri] = basicField\nfield[ns.ui('EmailField').uri] = basicField\nfield[ns.ui('ColorField').uri] = basicField\nfield[ns.ui('DateField').uri] = basicField\nfield[ns.ui('DateTimeField').uri] = basicField\nfield[ns.ui('TimeField').uri] = basicField\nfield[ns.ui('NumericField').uri] = basicField\nfield[ns.ui('IntegerField').uri] = basicField\nfield[ns.ui('DecimalField').uri] = basicField\nfield[ns.ui('FloatField').uri] = basicField\nfield[ns.ui('TextField').uri] = basicField\nfield[ns.ui('SingleLineTextField').uri] = basicField\nfield[ns.ui('NamedNodeURIField').uri] = basicField\n\n/* Multiline Text field\n **\n */\n\nfield[ns.ui('MultiLineTextField').uri] = function (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction\n) {\n const ui = ns.ui\n const kb = store\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n const property = kb.any(form, ui('property'))\n if (!property) {\n return errorMessageBlock(dom, 'No property to text field: ' + form)\n }\n const box = dom.createElement('div')\n box.style.display = 'flex'\n box.style.flexDirection = 'row'\n const left = box.appendChild(dom.createElement('div'))\n left.style.width = styleConstants.formFieldNameBoxWidth\n const right = box.appendChild(dom.createElement('div'))\n\n left.appendChild(fieldLabel(dom, property, form))\n dataDoc = fieldStore(subject, property, dataDoc)\n\n const text = kb.anyJS(subject, property, null, dataDoc) || ''\n const editable = kb.updater.editable(dataDoc.uri)\n const suppressEmptyUneditable = form && kb.anyJS(form, ns.ui('suppressEmptyUneditable'), null, formDoc)\n\n if (!editable && suppressEmptyUneditable && text === '') {\n box.style.display = 'none'\n }\n const field = makeDescription(\n dom,\n kb,\n subject,\n property,\n dataDoc,\n callbackFunction\n )\n right.appendChild(field)\n if (container) container.appendChild(box)\n return box\n}\n\n/* Boolean field and Tri-state version (true/false/null)\n **\n ** @@ todo: remove tristate param\n */\nfunction booleanField (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction,\n tristate\n) {\n const ui = ns.ui\n const kb = store\n const property = kb.any(form, ui('property'))\n if (!property) {\n const errorBlock = errorMessageBlock(\n dom,\n 'No property to boolean field: ' + form\n )\n if (container) container.appendChild(errorBlock)\n return errorBlock\n }\n let lab = kb.any(form, ui('label'))\n if (!lab) lab = utils.label(property, true) // Init capital\n dataDoc = fieldStore(subject, property, dataDoc)\n let state = kb.any(subject, property)\n if (state === undefined) {\n state = false\n } // @@ sure we want that -- or three-state?\n const ins = $rdf.st(subject, property, true, dataDoc)\n const del = $rdf.st(subject, property, false, dataDoc)\n const box = buildCheckboxForm(dom, kb, lab, del, ins, form, dataDoc, tristate)\n if (container) container.appendChild(box)\n return box\n}\nfield[ns.ui('BooleanField').uri] = function (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction\n) {\n return booleanField(\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction,\n false\n )\n}\n\nfield[ns.ui('TristateField').uri] = function (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction\n) {\n return booleanField(\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction,\n true\n )\n}\n\n/* Classifier field\n **\n ** Nested categories\n **\n ** @@ To do: If a classification changes, then change any dependent Options fields.\n */\n\nfield[ns.ui('Classifier').uri] = function (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction\n) {\n const kb = store\n const ui = ns.ui\n const category = kb.any(form, ui('category'))\n if (!category) {\n return errorMessageBlock(dom, 'No category for classifier: ' + form)\n }\n log.debug('Classifier: dataDoc=' + dataDoc)\n const checkOptions = function (ok, body) {\n if (!ok) return callbackFunction(ok, body)\n return callbackFunction(ok, body)\n }\n const box = makeSelectForNestedCategory(\n dom,\n kb,\n subject,\n category,\n dataDoc,\n checkOptions\n )\n if (container) container.appendChild(box)\n return box\n}\n\n/** Choice field\n **\n ** Not nested. Generates a link to something from a given class.\n ** Optional subform for the thing selected.\n ** Generates a subForm based on a ui:use form\n ** Will look like:\n ** <div id=dropDownDiv>\n ** <div id=labelOfDropDown>\n ** <div id=selectDiv>\n ** <select id=dropDownSelect>\n ** <option> ....\n ** <subForm>\n ** Alternative implementatons could be:\n ** -- pop-up menu (as here)\n ** -- radio buttons\n ** -- auto-complete typing\n **\n ** TODO: according to ontology ui:choice can also have ns.ui('default') - this is not implemented yet\n */\n\nfield[ns.ui('Choice').uri] = function (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n callbackFunction\n) {\n const ui = ns.ui\n const kb = store\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n let p\n const box = dom.createElement('div')\n box.setAttribute('class', 'choiceBox')\n // Set flexDirection column?\n if (container) container.appendChild(box)\n const lhs = dom.createElement('div')\n lhs.setAttribute('class', 'formFieldName choiceBox-label')\n box.appendChild(lhs)\n const rhs = dom.createElement('div')\n rhs.setAttribute('class', 'formFieldValue choiceBox-selectBox')\n box.appendChild(rhs)\n const property = kb.any(form, ui('property'))\n if (!property) {\n return box.appendChild(errorMessageBlock(dom, 'No property for Choice: ' + form))\n }\n lhs.appendChild(fieldLabel(dom, property, form))\n const uiFrom = kb.any(form, ui('from'))\n if (!uiFrom) {\n return errorMessageBlock(dom, 'No \\'from\\' for Choice: ' + form)\n }\n const subForm = kb.any(form, ui('use')) // Optional\n // const follow = kb.anyJS(form, ui('follow'), null, formDoc) // data doc moves to new subject?\n\n const opts = { form, subForm, disambiguate: false }\n\n function getSelectorOptions (dataSource) {\n let possible = []\n let possibleProperties\n possible = kb.each(undefined, ns.rdf('type'), uiFrom, formDoc)\n for (const x in findMembersNT(kb, uiFrom, dataSource)) {\n possible.push(kb.fromNT(x))\n } // Use rdfs\n\n if (uiFrom.sameTerm(ns.rdfs('Class'))) {\n for (p in buttons.allClassURIs()) possible.push(kb.sym(p))\n // log.debug(\"%%% Choice field: possible.length 2 = \"+possible.length)\n } else if (uiFrom.sameTerm(ns.rdf('Property'))) {\n possibleProperties = buttons.propertyTriage(kb)\n for (p in possibleProperties.op) possible.push(kb.fromNT(p))\n for (p in possibleProperties.dp) possible.push(kb.fromNT(p))\n opts.disambiguate = true // This is a big class, and the labels won't be enough.\n } else if (uiFrom.sameTerm(ns.owl('ObjectProperty'))) {\n possibleProperties = buttons.propertyTriage(kb)\n for (p in possibleProperties.op) possible.push(kb.fromNT(p))\n opts.disambiguate = true\n } else if (uiFrom.sameTerm(ns.owl('DatatypeProperty'))) {\n possibleProperties = buttons.propertyTriage(kb)\n for (p in possibleProperties.dp) possible.push(kb.fromNT(p))\n opts.disambiguate = true\n }\n\n return possible\n // return sortByLabel(possible)\n }\n\n // TODO: this checks for any occurrence, regardless of true or false setting\n if (kb.any(form, ui('canMintNew'))) {\n opts.mint = '* Create new *' // @@ could be better\n }\n\n const multiSelect = kb.any(form, ui('multiselect')) // Optional\n if (multiSelect) opts.multiSelect = true\n\n // by default searches the dataDoc graph or optionally the full store\n const dataSource = kb.each(form, ui('search-full-store')).length ? null : dataDoc // optional\n\n let selector\n rhs.refresh = function () {\n // from ui:property\n let selectedOptions = kb.each(subject, property, null, dataDoc).map(object => object.value)\n // from ui:from + ui:property\n let possibleOptions = getSelectorOptions(dataSource)\n possibleOptions.push(selectedOptions)\n possibleOptions = sortByLabel(possibleOptions)\n\n selector = makeSelectForChoice(\n dom,\n rhs,\n kb,\n subject,\n property,\n possibleOptions,\n selectedOptions,\n uiFrom,\n opts,\n dataDoc,\n callbackFunction\n )\n rhs.innerHTML = ''\n rhs.appendChild(selector)\n if (multiSelect) {\n const multiSelectDiv = new IconicMultiSelect({\n placeholder: selector.selected,\n select: selector,\n container: rhs,\n textField: 'textField',\n valueField: 'valueField'\n })\n multiSelectDiv.init()\n multiSelectDiv.subscribe(function (event) {\n if (event.action === 'REMOVE_OPTION') {\n selectedOptions = selectedOptions.filter(function (value) {\n return value !== event.value\n })\n }\n if (event.action === 'CLEAR_ALL_OPTIONS') {\n selectedOptions = []\n }\n if (event.action === 'ADD_OPTION') {\n const stringValue = event.value + ''\n if (stringValue.includes('Create new')) {\n const newObject = newThing(dataDoc)\n const is = []\n is.push($rdf.st(subject, property, kb.sym(newObject), dataDoc))\n if (uiFrom) is.push($rdf.st(newObject, ns.rdf('type'), kb.sym(uiFrom), dataDoc))\n if (subForm) {\n addSubFormChoice(dom, rhs, {}, $rdf.sym(newObject), subForm, dataDoc, function (ok, body) {\n if (ok) {\n kb.updater.update([], is, function (uri, success, errorBody) {\n if (!success) rhs.appendChild(errorMessageBlock(dom, 'Error updating select: ' + errorBody))\n })\n selectedOptions.push(newObject)\n if (callbackFunction) callbackFunction(ok, { widget: 'select', event: 'new' })\n } else {\n rhs.appendChild(errorMessageBlock(dom, 'Error updating data in field of select: ' + body))\n }\n })\n }\n } else selectedOptions.push(event.value)\n }\n selector.update(selectedOptions)\n })\n }\n }\n\n rhs.refresh()\n if (selector && selector.refresh) selector.refresh()\n\n return box\n}\n\nfunction addSubFormChoice (dom, selectDiv, already, subject, subForm, dataDoc, callbackFunction) {\n fieldFunction(dom, subForm)(\n dom,\n selectDiv,\n already,\n subject,\n subForm,\n dataDoc,\n callbackFunction\n )\n}\n\n// Documentation - non-interactive fields\n//\n\nfield[ns.ui('Comment').uri] = field[\n ns.ui('Heading').uri\n] = function (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n _callbackFunction\n) {\n const ui = ns.ui\n const kb = store\n let contents = kb.any(form, ui('contents'))\n if (!contents) contents = 'Error: No contents in comment field.'\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n const uri = mostSpecificClassURI(form)\n const params = fieldParams[uri] || {}\n\n const box = dom.createElement('div')\n if (container) container.appendChild(box)\n const p = box.appendChild(dom.createElement(params.element))\n p.textContent = contents\n\n setFieldStyle(p, form)\n\n // Some headings and prompts are only useful to guide user input\n const suppressIfUneditable = kb.anyJS(form, ns.ui('suppressIfUneditable'), null, formDoc)\n const editable = kb.updater.editable(dataDoc.uri)\n if (suppressIfUneditable && !editable) {\n box.style.display = 'none'\n }\n return box\n}\n\n// A button for editing a form (in place, at the moment)\n//\n// When editing forms, make it yellow, when editing thr form form, pink\n// Help people understand how many levels down they are.\n//\nexport function editFormButton (\n dom,\n container,\n form,\n dataDoc,\n callbackFunction\n) {\n const b = dom.createElement('button')\n b.setAttribute('type', 'button')\n b.innerHTML = 'Edit ' + utils.label(ns.ui('Form'))\n b.addEventListener(\n 'click',\n function (_e) {\n const ff = appendForm(\n dom,\n container,\n {},\n form,\n ns.ui('FormForm'),\n dataDoc,\n callbackFunction\n )\n ff.setAttribute(\n 'style',\n ns.ui('FormForm').sameTerm(form)\n ? 'background-color: #fee;'\n : 'background-color: #ffffe7;'\n )\n b.parentNode.removeChild(b)\n },\n true\n )\n return b\n}\n\nexport function appendForm (\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n itemDone\n) {\n return fieldFunction(dom, form)(\n dom,\n container,\n already,\n subject,\n form,\n dataDoc,\n itemDone\n )\n}\n\n/** Find list of properties for class\n//\n// Three possible sources: Those mentioned in schemas, which exludes many\n// those which occur in the data we already have, and those predicates we\n// have come across anywhere and which are not explicitly excluded from\n// being used with this class.\n*/\n\nexport function propertiesForClass (kb, c) {\n const explicit = kb.each(undefined, ns.rdf('range'), c)\n ;[\n ns.rdfs('comment'),\n ns.dc('title'), // Generic things\n ns.foaf('name'),\n ns.foaf('homepage')\n ].forEach(function (x) {\n explicit.push(x)\n })\n let members = kb.each(undefined, ns.rdf('type'), c)\n if (members.length > 60) members = members.slice(0, 60) // Array supports slice?\n const used = {}\n for (let i = 0; i < (members.length > 60 ? 60 : members.length); i++) {\n kb.statementsMatching(members[i], undefined, undefined).forEach(function (st) {\n used[st.predicate.uri] = true\n })\n }\n explicit.forEach(function (p) {\n used[p.uri] = true\n })\n const result = []\n for (const uri in used) {\n result.push(kb.sym(uri))\n }\n return result\n}\n\n/** Find the closest class\n* @param kb The quad store\n* @param cla - the URI of the class\n* @param prop\n*/\nexport function findClosest (kb, cla, prop) {\n const agenda = [kb.sym(cla)] // ordered - this is breadth first search\n while (agenda.length > 0) {\n const c = agenda.shift() // first\n const lists = kb.each(c, prop)\n log.debug('Lists for ' + c + ', ' + prop + ': ' + lists.length)\n if (lists.length !== 0) return lists\n const supers = kb.each(c, ns.rdfs('subClassOf'))\n for (let i = 0; i < supers.length; i++) {\n agenda.push(supers[i])\n log.debug('findClosest: add super: ' + supers[i])\n }\n }\n return []\n}\n\n// Which forms apply to a given existing subject?\n\nexport function formsFor (subject) {\n const kb = store\n\n log.debug('formsFor: subject=' + subject)\n const t = kb.findTypeURIs(subject)\n let t1\n for (t1 in t) {\n log.debug(' type: ' + t1)\n }\n const bottom = kb.bottomTypeURIs(t) // most specific\n let candidates = []\n for (const b in bottom) {\n // Find the most specific\n log.debug('candidatesFor: trying bottom type =' + b)\n candidates = candidates.concat(\n findClosest(kb, b, ns.ui('creationForm'))\n )\n candidates = candidates.concat(\n findClosest(kb, b, ns.ui('annotationForm'))\n )\n }\n return candidates\n}\n\nexport function sortBySequence (list) {\n const subfields = list.map(function (p) {\n const k = kb.any(p, ns.ui('sequence'))\n return [k || 9999, p]\n })\n subfields.sort(function (a, b) {\n return a[0] - b[0]\n })\n return subfields.map(function (pair) {\n return pair[1]\n })\n}\n\nexport function sortByLabel (list) {\n const subfields = list.map(function (p) {\n return [utils.label(p).toLowerCase(), p]\n })\n subfields.sort()\n return subfields.map(function (pair) {\n return pair[1]\n })\n}\n\n/** Button to add a new whatever using a form\n//\n// @param form - optional form , else will look for one\n// @param dataDoc - optional dataDoc else will prompt for one (unimplemented)\n*/\nexport function newButton (\n dom,\n kb,\n subject,\n predicate,\n theClass,\n form,\n dataDoc,\n callbackFunction\n) {\n const b = dom.createElement('button')\n b.setAttribute('type', 'button')\n b.innerHTML = 'New ' + utils.label(theClass)\n b.addEventListener(\n 'click',\n function (_e) {\n b.parentNode.appendChild(\n promptForNew(\n dom,\n kb,\n subject,\n predicate,\n theClass,\n form,\n dataDoc,\n callbackFunction\n )\n )\n },\n false\n )\n return b\n}\n\n/** Prompt for new object of a given class\n//\n// @param dom - the document DOM for the user interface\n// @param kb - the graph which is the knowledge base we are working with\n// @param subject - a term, Thing this should be linked to when made. Optional.\n// @param predicate - a term, the relationship for the subject link. Optional.\n// @param theClass - an RDFS class containng the object about which the new information is.\n// @param form - the form to be used when a new one. null means please find one.\n// @param dataDoc - The web document being edited\n// @param callbackFunction - takes (boolean ok, string errorBody)\n// @returns a dom object with the form DOM\n*/\nexport function promptForNew (\n dom,\n kb,\n subject,\n predicate,\n theClass,\n form,\n dataDoc,\n callbackFunction\n) {\n const box = dom.createElement('form')\n\n if (!form) {\n const lists = findClosest(kb, theClass.uri, ns.ui('creationForm'))\n if (lists.length === 0) {\n const p = box.appendChild(dom.createElement('p'))\n p.textContent =\n 'I am sorry, you need to provide information about a ' +\n utils.label(theClass) +\n ' but I don\\'t know enough information about those to ask you.'\n const b = box.appendChild(dom.createElement('button'))\n b.setAttribute('type', 'button')\n b.setAttribute('style', 'float: right;')\n b.innerHTML = 'Goto ' + utils.label(theClass)\n b.addEventListener(\n 'click',\n // TODO fix dependency cycle to solid-panes by calling outlineManager\n function (_e) {\n dom.outlineManager.GotoSubject(\n theClass,\n true,\n undefined,\n true,\n undefined\n )\n },\n false\n )\n return box\n }\n log.debug('lists[0] is ' + lists[0])\n form = lists[0] // Pick any one\n }\n log.debug('form is ' + form)\n box.setAttribute('style', `border: 0.05em solid ${styleConstants.formBorderColor}; color: ${styleConstants.formBorderColor}`) // @@color?\n box.innerHTML = '<h3>New ' + utils.label(theClass) + '</h3>'\n\n const formFunction = fieldFunction(dom, form)\n const object = newThing(dataDoc)\n let gotButton = false\n const itemDone = function (ok, body) {\n if (!ok) return callbackFunction(ok, body)\n const insertMe = []\n if (subject && !kb.holds(subject, predicate, object, dataDoc)) {\n insertMe.push($rdf.st(subject, predicate, object, dataDoc))\n }\n if (subject && !kb.holds(object, ns.rdf('type'), theClass, dataDoc)) {\n insertMe.push($rdf.st(object, ns.rdf('type'), theClass, dataDoc))\n }\n if (insertMe.length) {\n kb.updater.update([], insertMe, linkDone)\n } else {\n callbackFunction(true, body)\n }\n if (!gotButton) {\n gotButton = box.appendChild(buttons.linkButton(dom, object))\n }\n }\n function linkDone (uri, ok, body) {\n return callbackFunction(ok, body)\n }\n log.info('paneUtils Object is ' + object)\n const f = formFunction(dom, box, {}, object, form, dataDoc, itemDone)\n const rb = buttons.removeButton(dom, f)\n rb.setAttribute('style', 'float: right;')\n box.AJAR_subject = object\n return box\n}\n\nexport function makeDescription (\n dom,\n kb,\n subject,\n predicate,\n dataDoc,\n callbackFunction\n) {\n const group = dom.createElement('div')\n const desc = kb.anyJS(subject, predicate, null, dataDoc) || ''\n\n const field = dom.createElement('textarea')\n group.appendChild(field)\n field.rows = desc ? desc.split('\\n').length + 2 : 2\n field.cols = 80\n\n field.setAttribute('style', style.multilineTextInputStyle)\n if (desc !== null) {\n field.value = desc\n } else {\n // Unless you can make the predicate label disappear with the first click then this is over-cute\n // field.value = utils.label(predicate); // Was\"enter a description here\" @@ possibly: add prompt which disappears\n field.select() // Select it ready for user input -- doesn't work\n }\n\n group.refresh = function () {\n const v = kb.any(subject, predicate, null, dataDoc)\n if (v && v.value !== field.value) {\n field.value = v.value // don't touch widget if no change\n // @@ this is the place to color the field from the user who chanaged it\n }\n }\n function saveChange (_e) {\n submit.disabled = true\n submit.setAttribute('style', 'visibility: hidden; float: right;') // Keep UI clean\n field.disabled = true\n field.style.color = styleConstants.textInputColorPending\n const ds = kb.statementsMatching(subject, predicate, null, dataDoc)\n const is = $rdf.st(subject, predicate, field.value, dataDoc)\n kb.updater.update(ds, is, function (uri, ok, body) {\n if (ok) {\n field.style.color = styleConstants.textInputColor\n field.disabled = false\n } else {\n group.appendChild(\n errorMessageBlock(\n dom,\n 'Error (while saving change to ' + dataDoc.uri + '): ' + body\n )\n )\n }\n if (callbackFunction) {\n callbackFunction(ok, body)\n }\n })\n }\n\n const editable = kb.updater.editable(dataDoc.uri)\n let submit\n if (editable) {\n submit = widgets.continueButton(dom, saveChange)\n submit.disabled = true // until the filled has been modified\n submit.style.visibility = 'hidden'\n submit.style.float = 'right'\n group.appendChild(submit)\n\n field.addEventListener(\n 'keyup',\n function (_e) {\n // Green means has been changed, not saved yet\n field.style.color = 'green' // setAttribute('style', style + 'color: green;')\n if (submit) {\n submit.disabled = false\n submit.style.visibility = '' // Remove visibility: hidden\n }\n },\n true\n )\n field.addEventListener('change', saveChange, true)\n } else {\n field.disabled = true // @@ change color too\n field.style.backgroundColor = styleConstants.textInputBackgroundColorUneditable\n }\n return group\n}\n\n/** Make SELECT element to select options\n//\n// @param subject - a term, the subject of the statement(s) being edited.\n// @param predicate - a term, the predicate of the statement(s) being edited\n// @param possible - a list of terms, the possible value the object can take\n// @param options.multiple - Boolean - Whether more than one at a time is allowed\n// @param options.nullLabel - a string to be displayed as the\n// option for none selected (for non multiple)\n// @param options.mint - User may create thing if this sent to the prompt string eg \"New foo\"\n// @param options.subForm - If mint, then the form to be used for minting the new thing\n// @param dataDoc - The web document being edited\n// @param callbackFunction - takes (boolean ok, string errorBody)\n*/\nexport function makeSelectForClassifierOptions (\n dom,\n kb,\n subject,\n predicate,\n possible,\n options,\n dataDoc,\n callbackFunction\n) {\n log.debug('Select list length now ' + possible.length)\n let n = 0\n const uris = {} // Count them\n const editable = kb.updater.editable(dataDoc.uri)\n\n for (let i = 0; i < possible.length; i++) {\n const sub = possible[i] // @@ Maybe; make this so it works with blank nodes too\n if (!sub.uri) debug.warn(`makeSelectForClassifierOptions: option does not have an uri: ${sub}, with predicate: ${predicate}`)\n if (!sub.uri || sub.uri in uris) continue\n uris[sub.uri] = true\n n++\n } // uris is now the set of possible options\n if (n === 0 && !options.mint) {\n return errorMessageBlock(\n dom,\n 'Can\\'t do selector with no options, subject= ' +\n subject +\n ' property = ' +\n predicate +\n '.'\n )\n }\n\n log.debug('makeSelectForClassifierOptions: dataDoc=' + dataDoc)\n let actual\n const getActual = function () {\n actual = {}\n if (predicate.sameTerm(ns.rdf('type'))) {\n actual = kb.findTypeURIs(subject)\n } else {\n kb.each(subject, predicate, null, dataDoc).forEach(function (x) {\n actual[x.uri] = true\n })\n }\n return actual\n }\n actual = getActual()\n\n const onChange = function (_e) {\n select.disabled = true // until data written back - gives user feedback too\n const ds = []\n let is = []\n const removeValue = function (t) {\n if (kb.holds(subject, predicate, t, dataDoc)) {\n ds.push($rdf.st(subject, predicate, t, dataDoc))\n }\n }\n let newObject\n for (let i = 0; i < select.options.length; i++) {\n const opt = select.options[i]\n if (opt.selected && opt.AJAR_mint) {\n if (options.mintClass) {\n const thisForm = promptForNew(\n dom,\n kb,\n subject,\n predicate,\n options.mintClass,\n null,\n dataDoc,\n function (ok, body) {\n if (!ok) {\n callbackFunction(ok, body, { change: 'new' }) // @@ if ok, need some form of refresh of the select for the new thing\n }\n }\n )\n select.parentNode.appendChild(thisForm)\n newObject = thisForm.AJAR_subject\n } else {\n newObject = newThing(dataDoc)\n }\n is.push($rdf.st(subject, predicate, newObject, dataDoc))\n if (options.mintStatementsFun) {\n is = is.concat(options.mintStatementsFun(newObject))\n }\n }\n if (!opt.AJAR_uri) continue // a prompt or mint\n if (opt.selected && !(opt.AJAR_uri in actual)) {\n // new class\n is.push($rdf.st(subject, predicate, kb.sym(opt.AJAR_uri), dataDoc))\n }\n if (!opt.selected && opt.AJAR_uri in actual) {\n // old class\n removeValue(kb.sym(opt.AJAR_uri))\n }\n if (opt.selected) select.currentURI = opt.AJAR_uri\n }\n let sel = select.subSelect // All subclasses must also go\n while (sel && sel.currentURI) {\n removeValue(kb.sym(sel.currentURI))\n sel = sel.subSelect\n }\n sel = select.superSelect // All superclasses are redundant\n while (sel && sel.currentURI) {\n removeValue(kb.sym(sel.currentURI))\n sel = sel.superSelect\n }\n function doneNew (ok, _body) {\n callbackFunction(ok, { widget: 'select', event: 'new' })\n }\n log.info('makeSelectForClassifierOptions: data doc = ' + dataDoc)\n kb.updater.update(ds, is, function (uri, ok, body) {\n actual = getActual() // refresh\n if (ok) {\n select.disabled = false // data written back\n if (newObject) {\n const fn = fieldFunction(dom, options.subForm)\n fn(\n dom,\n select.parentNode,\n {},\n newObject,\n options.subForm,\n dataDoc,\n doneNew\n )\n }\n } else {\n return select.parentNode.appendChild(errorMessageBlock(dom, 'Error updating data in select: ' + body))\n }\n if (callbackFunction) callbackFunction(ok, { widget: 'select', event: 'change' })\n })\n }\n\n const select = dom.createElement('select')\n select.setAttribute('style', style.formSelectStyle)\n if (options.multiple) select.setAttribute('multiple', 'true')\n select.currentURI = null\n\n select.refresh = function () {\n actual = getActual() // refresh\n for (let i = 0; i < select.children.length; i++) {\n const option = select.children[i]\n if (option.AJAR_uri) {\n option.selected = option.AJAR_uri in actual\n }\n }\n select.disabled = false // unlocked any conflict we had got into\n }\n\n for (const uri in uris) {\n const c = kb.sym(uri)\n const option = dom.createElement('option')\n if (options.disambiguate) {\n option.appendChild(dom.createTextNode(utils.labelWithOntology(c, true))) // Init. cap\n } else {\n option.appendChild(dom.createTextNode(utils.label(c, true))) // Init.\n }\n const backgroundColor = kb.any(\n c,\n kb.sym('http://www.w3.org/ns/ui#backgroundColor')\n )\n if (backgroundColor) {\n option.setAttribute(\n 'style',\n 'background-color: ' + backgroundColor.value + '; '\n )\n }\n option.AJAR_uri = uri\n if (uri in actual) {\n option.setAttribute('selected', 'true')\n select.currentURI = uri\n // dump(\"Already in class: \"+ uri+\"\\n\")\n }\n select.appendChild(option)\n }\n if (editable && options.mint) {\n const mint = dom.createElement('option')\n mint.appendChild(dom.createTextNode(options.mint))\n mint.AJAR_mint = true // Flag it\n select.insertBefore(mint, select.firstChild)\n }\n if (select.currentURI == null && !options.multiple) {\n const prompt = dom.createElement('option')\n prompt.appendChild(dom.createTextNode(options.nullLabel))\n select.insertBefore(prompt, select.firstChild)\n prompt.selected = true\n }\n if (editable) {\n select.addEventListener('change', onChange, false)\n }\n return select\n} // makeSelectForClassifierOptions\n\n/** Make SELECT element to select options\n//\n// @param subject - a term, the subject of the statement(s) being edited.\n// @param predicate - a term, the predicate of the statement(s) being edited\n// @param possible - a list of terms, the possible value the object can take\n// @param options.nullLabel - a string to be displayed as the\n// option for none selected (for non multiple)\n// @param options.subForm - If mint, then the form to be used for minting the new thing\n// @param dataDoc - The web document being edited\n// @param callbackFunction - takes (boolean ok, string errorBody)\n*/\nexport function makeSelectForOptions (\n dom,\n kb,\n subject,\n predicate,\n possible,\n options,\n dataDoc,\n callbackFunction\n) {\n log.debug('Select list length now ' + possible.length)\n let n = 0\n const uris = {} // Count them\n const editable = kb.updater.editable(dataDoc.uri)\n\n for (let i = 0; i < possible.length; i++) {\n const sub = possible[i] // @@ Maybe; make this so it works with blank nodes too\n if (!sub.uri) debug.warn(`makeSelectForOptions: option does not have an uri: ${sub}, with predicate: ${predicate}`)\n if (!sub.uri || sub.uri in uris) continue\n uris[sub.uri] = true\n n++\n } // uris is now the set of possible options\n if (n === 0) {\n return errorMessageBlock(\n dom,\n 'Can\\'t do selector with no options, subject= ' +\n subject +\n ' property = ' +\n predicate +\n '.'\n )\n }\n\n log.debug('makeSelectForOptions: dataDoc=' + dataDoc)\n let actual\n const getActual = function () {\n actual = {}\n if (predicate.sameTerm(ns.rdf('type'))) {\n actual = kb.findTypeURIs(subject)\n } else {\n kb.each(subject, predicate, null, dataDoc).forEach(function (x) {\n if (x.uri) {\n actual[x.uri] = true\n }\n })\n }\n return actual\n }\n actual = getActual()\n\n const onChange = function (_e) {\n select.disabled = true // until data written back - gives user feedback too\n const ds = []\n const is = []\n const removeValue = function (t) {\n if (kb.holds(subject, predicate, t, dataDoc)) {\n ds.push($rdf.st(subject, predicate, t, dataDoc))\n }\n }\n for (let i = 0; i < select.options.length; i++) {\n const opt = select.options[i]\n if (!opt.AJAR_uri) continue // a prompt or mint\n if (opt.selected && !(opt.AJAR_uri in actual)) {\n // new class\n is.push($rdf.st(subject, predicate, kb.sym(opt.AJAR_uri), dataDoc))\n }\n if (!opt.selected && opt.AJAR_uri in actual) {\n // old class\n removeValue(kb.sym(opt.AJAR_uri))\n }\n if (opt.selected) select.currentURI = opt.AJAR_uri\n }\n let sel = select.subSelect // All subclasses must also go\n while (sel && sel.currentURI) {\n removeValue(kb.sym(sel.currentURI))\n sel = sel.subSelect\n }\n sel = select.superSelect // All superclasses are redundant\n while (sel && sel.currentURI) {\n removeValue(kb.sym(sel.currentURI))\n sel = sel.superSelect\n }\n log.info('selectForOptions: data doc = ' + dataDoc)\n kb.updater.update(ds, is, function (uri, ok, body) {\n actual = getActual() // refresh\n if (ok) {\n select.disabled = false // data written back\n } else {\n return select.parentNode.appendChild(errorMessageBlock(dom, 'Error updating data in select: ' + body))\n }\n if (callbackFunction) callbackFunction(ok, { widget: 'select', event: 'change' })\n })\n }\n\n const select = dom.createElement('select')\n select.setAttribute('style', style.formSelectStyle)\n select.currentURI = null\n\n select.refresh = function () {\n actual = getActual() // refresh\n for (let i = 0; i < select.children.length; i++) {\n const option = select.children[i]\n if (option.AJAR_uri) {\n option.selected = option.AJAR_uri in actual\n }\n }\n select.disabled = false // unlocked any conflict we had got into\n }\n\n for (const uri in uris) {\n const c = kb.sym(uri)\n const option = dom.createElement('option')\n if (options.disambiguate) {\n option.appendChild(dom.createTextNode(utils.labelWithOntology(c, true))) // Init. cap\n } else {\n option.appendChild(dom.createTextNode(utils.label(c, true))) // Init.\n }\n const backgroundColor = kb.any(\n c,\n kb.sym('http://www.w3.org/ns/ui#backgroundColor')\n )\n if (backgroundColor) {\n option.setAttribute(\n 'style',\n 'background-color: ' + backgroundColor.value + '; '\n )\n }\n option.AJAR_uri = uri\n if (uri in actual) {\n option.setAttribute('selected', 'true')\n select.currentURI = uri\n // dump(\"Already in class: \"+ uri+\"\\n\")\n }\n select.appendChild(option)\n }\n if (!select.currentURI) {\n const prompt = dom.createElement('option')\n prompt.appendChild(dom.createTextNode(options.nullLabel))\n select.insertBefore(prompt, select.firstChild)\n prompt.selected = true\n }\n if (editable) {\n select.addEventListener('change', onChange, false)\n }\n return select\n} // makeSelectForOptions\n\n// Make SELECT element to select subclasses\n//\n// If there is any disjoint union it will so a mutually exclusive dropdown\n// Failing that it will do a multiple selection of subclasses.\n// Callback takes (boolean ok, string errorBody)\n\nexport function makeSelectForCategory (\n dom,\n kb,\n subject,\n category,\n dataDoc,\n callbackFunction\n) {\n const du = kb.any(category, ns.owl('disjointUnionOf'))\n let subs\n let multiple = false\n if (!du) {\n subs = kb.each(undefined, ns.rdfs('subClassOf'), category)\n multiple = true\n } else {\n subs = du.elements\n }\n log.debug('Select list length ' + subs.length)\n if (subs.length === 0) {\n return errorMessageBlock(\n dom,\n 'Can\\'t do ' +\n (multiple ? 'multiple ' : '') +\n 'selector with no subclasses of category: ' +\n category\n )\n }\n if (subs.length === 1) {\n return errorMessageBlock(\n dom,\n 'Can\\'t do ' +\n (multiple ? 'multiple ' : '') +\n 'selector with only 1 subclass of category: ' +\n category +\n ':' +\n subs[1]\n )\n }\n return makeSelectForClassifierOptions(\n dom,\n kb,\n subject,\n ns.rdf('type'),\n subs,\n { multiple, nullLabel: '* Select type *' },\n dataDoc,\n callbackFunction\n )\n}\n\n/** Make SELECT element to select subclasses recurively\n//\n// It will so a mutually exclusive dropdown, with another if there are nested\n// disjoint unions.\n//\n// @param callbackFunction takes (boolean ok, string errorBody)\n*/\nexport function makeSelectForNestedCategory (\n dom,\n kb,\n subject,\n category,\n dataDoc,\n callbackFunction\n) {\n function update () {\n if (child) {\n container.removeChild(child)\n child = null\n }\n if (\n select.currentURI &&\n kb.any(kb.sym(select.currentURI), ns.owl('disjointUnionOf'))\n ) {\n child = makeSelectForNestedCategory(\n dom,\n kb,\n subject,\n kb.sym(select.currentURI),\n dataDoc,\n callbackFunction\n )\n select.subSelect = child.firstChild\n select.subSelect.superSelect = select\n container.appendChild(child)\n }\n }\n\n const container = dom.createElement('span') // Container\n let child = null\n\n function onChange (ok, body) {\n if (ok) update()\n callbackFunction(ok, body)\n }\n const select = makeSelectForCategory(\n dom,\n kb,\n subject,\n category,\n dataDoc,\n onChange\n )\n container.appendChild(select)\n update()\n return container\n}\n\n/* Build a checkbox from a given statement(s)\n **\n ** If the source document is editable, make the checkbox editable\n **\n ** ins and sel are either statements *or arrays of statements* which should be\n ** made if the checkbox is checed and unchecked respectively.\n ** tristate: Allow ins, or del, or neither\n */\nexport function buildCheckboxForm (dom, kb, lab, del, ins, form, dataDoc, tristate) {\n const box = dom.createElement('div')\n const rhs = renderNameValuePair(dom, kb, box, form, lab)\n const editable = kb.updater.editable(dataDoc.uri)\n\n const input = dom.createElement('button')\n const colorCarrier = input\n input.style = style.checkboxInputStyle\n rhs.appendChild(input)\n\n function fix (x) {\n if (!x) return [] // no statements\n if (x.object) {\n if (!x.why) {\n x.why = dataDoc // be back-compaitible with old code\n }\n return [x] // one statements\n }\n if (x instanceof Array) return x\n throw new Error('buildCheckboxForm: bad param ' + x)\n }\n ins = fix(ins)\n del = fix(del)\n\n function holdsAll (a) {\n const missing = a.filter(\n st => !kb.holds(st.subject, st.predicate, st.object, st.why)\n )\n return missing.length === 0\n }\n function refresh () {\n let state = holdsAll(ins)\n let displayState = state\n if (del.length) {\n const negation = holdsAll(del)\n if (state && negation) {\n box.appendChild(\n widgets.errorMessageBlock(\n dom,\n 'Inconsistent data in dataDoc!\\n' + ins + ' and\\n' + del\n )\n )\n return box\n }\n if (!state && !negation) {\n state = null\n const defa = kb.any(form, ns.ui('default'))\n displayState = defa ? defa.value === '1' : tristate ? null : false\n }\n }\n input.state = state\n input.textContent = {\n true: checkMarkCharacter,\n false: tristate ? cancelCharacter : ' ', // Just use blank when not tristate\n null: dashCharacter\n }[displayState]\n }\n\n refresh()\n if (!editable) return box\n\n const boxHandler = function (_e) {\n colorCarrier.style.color = '#bbb' // grey -- not saved yet\n const toDelete = input.state === true ? ins : input.state === false ? del : []\n input.newState =\n input.state === null\n ? true\n : input.state === true\n ? false\n : tristate\n ? null\n : true\n\n const toInsert =\n input.newState === true ? ins : input.newState === false ? del : []\n debug.log(` Deleting ${toDelete}`)\n debug.log(` Inserting ${toInsert}`)\n kb.updater.update(toDelete, toInsert, function (\n uri,\n success,\n errorBody\n ) {\n if (!success) {\n if (toDelete.why) {\n const hmmm = kb.holds(\n toDelete.subject,\n toDelete.predicate,\n toDelete.object,\n toDelete.why\n )\n if (hmmm) {\n debug.log(' @@@@@ weird if 409 - does hold statement')\n }\n }\n colorCarrier.style.color = '#000'\n colorCarrier.style.backgroundColor = '#fee'\n box.appendChild(\n errorMessageBlock(\n dom,\n `Checkbox: Error updating dataDoc from ${input.state} to ${\n input.newState\n }:\\n\\n${errorBody}`\n )\n )\n } else {\n colorCarrier.style.color = '#000'\n input.state = input.newState\n input.textContent = {\n true: checkMarkCharacter,\n false: cancelCharacter,\n null: dashCharacter\n }[input.state] // @@\n }\n })\n }\n input.addEventListener('click', boxHandler, false)\n return box\n}\n/*\nexport function fieldLabel (dom, property, form) {\n let lab = kb.any(form, ns.ui('label'))\n if (!lab) lab = utils.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 if (property.uri) anchor.setAttribute('href', property.uri)\n anchor.setAttribute('style', style.fieldLabelStyle) // Not too blue and no underline\n anchor.textContent = lab\n return anchor\n}\n\nexport function fieldStore (subject, predicate, def) {\n const sts = kb.statementsMatching(subject, predicate)\n if (sts.length === 0) return def // can used default as no data yet\n if (\n sts.length > 0 &&\n sts[0].why.uri &&\n kb.updater.editable(sts[0].why.uri)\n ) {\n return kb.sym(sts[0].why.uri)\n }\n return def\n}\n*/\n/** Mint local ID using timestamp\n * @param {NamedNode} doc - the document in which the ID is to be generated\n */\nexport function newThing (doc) {\n const now = new Date()\n return $rdf.sym(doc.uri + '#' + 'id' + ('' + now.getTime()))\n}\n\n/** Make SELECT element to select options\n//\n// @param subject - a term, the subject of the statement(s) being edited.\n// @param predicate - a term, the predicate of the statement(s) being edited\n// @param possible - a list of terms, the possible value the object can take\n// @param options.mint - User may create thing if this sent to the prompt string eg \"New foo\"\n// @param options.subForm - If mint, then the form to be used for minting the new thing\n// @param dataDoc - The web document being edited\n// @param callbackFunction - takes (boolean ok, string errorBody)\n*/\nexport function makeSelectForChoice (\n dom,\n container,\n kb,\n subject,\n predicate,\n inputPossibleOptions,\n selectedOptions,\n uiFrom,\n options,\n dataDoc,\n callbackFunction\n) {\n const optionsFromClassUIfrom = {} // Count them\n const editable = kb.updater.editable(dataDoc.uri)\n\n for (let i = 0; i < inputPossibleOptions.length; i++) {\n const sub = inputPossibleOptions[i] // @@ Maybe; make this so it works with blank nodes too\n // if (!sub.uri) debug.warn(`makeSelectForChoice: option does not have an uri: ${sub}, with predicate: ${predicate}`)\n if (!sub.uri || sub.uri in optionsFromClassUIfrom) continue\n optionsFromClassUIfrom[sub.uri] = true\n }\n const isEmpty = Object.keys(optionsFromClassUIfrom).length === 0\n if (isEmpty && !options.mint) {\n return errorMessageBlock(\n dom,\n 'Can\\'t do selector with no options, subject= ' +\n subject +\n ' property = ' +\n predicate +\n '.'\n )\n }\n\n log.debug('makeSelectForChoice: dataDoc=' + dataDoc)\n\n function createDefaultSelectOptionText () {\n let firstSelectOptionText = '--- choice ---'\n\n if (predicate && !(predicate.termType === 'BlankNode')) {\n firstSelectOptionText = '* Select for property: ' + utils.label(predicate) + ' *'\n }\n\n if (subject && !(subject.termType === 'BlankNode')) {\n firstSelectOptionText = '* Select for ' + utils.label(subject, true) + ' *'\n }\n return firstSelectOptionText\n }\n\n function createDefaultSelectOption () {\n const option = dom.createElement('option')\n option.appendChild(dom.createTextNode(createDefaultSelectOptionText()))\n option.disabled = true\n option.value = true\n option.hidden = true\n option.selected = true\n\n return option\n }\n\n const onChange = function (_e) {\n container.removeChild(container.lastChild)\n select.refresh()\n }\n\n const select = dom.createElement('select')\n select.setAttribute('style', style.formSelectStyle)\n select.setAttribute('id', 'formSelect')\n select.currentURI = null\n\n for (const uri in optionsFromClassUIfrom) {\n select.appendChild(createOption(uri))\n }\n\n if (editable && options.mint) {\n const mint = dom.createElement('option')\n mint.appendChild(dom.createTextNode(options.mint))\n mint.AJAR_mint = true // Flag it\n select.insertBefore(mint, select.firstChild)\n }\n\n if (select.children.length === 0) select.insertBefore(createDefaultSelectOption(), select.firstChild)\n\n select.update = function (newSelectedOptions) {\n selectedOptions = newSelectedOptions\n const ds = []\n const is = []\n const removeValue = function (t) {\n if (kb.holds(subject, predicate, t, dataDoc)) {\n ds.push($rdf.st(subject, predicate, t, dataDoc))\n }\n }\n\n const addValue = function (t) {\n if (!kb.holds(subject, predicate, t, dataDoc)) {\n is.push($rdf.st(subject, predicate, t, dataDoc))\n // console.log(\"----value added \" + t)\n }\n if (uiFrom && (!kb.holds(t, ns.rdf('type'), kb.sym(uiFrom), dataDoc))) {\n is.push($rdf.st(t, ns.rdf('type'), kb.sym(uiFrom), dataDoc))\n // console.log(\"----added type to value \" + uiFrom)\n }\n }\n\n const existingValues = kb.each(subject, predicate, null, dataDoc).map(object => object.value)\n for (const value of existingValues) {\n if (!containsObject(value, selectedOptions)) removeValue($rdf.sym(value))\n }\n for (const value of selectedOptions) {\n if (!(value in existingValues)) addValue($rdf.sym(value))\n }\n\n kb.updater.update(ds, is, function (uri, ok, body) {\n if (!ok) return select.parentNode.appendChild(errorMessageBlock(dom, 'Error updating data in select: ' + body))\n select.refresh()\n if (callbackFunction) callbackFunction(ok, { widget: 'select', event: 'change' })\n })\n }\n\n select.refresh = function () {\n select.disabled = true // unlocked any conflict we had got into\n let is = []\n\n let newObject\n for (let i = 0; i < select.options.length; i++) {\n const opt = select.options[i]\n if (opt.selected && opt.AJAR_mint) {\n // not sure if this 'if' is used because I cannot find mintClass\n if (options.mintClass) {\n const thisForm = promptForNew(\n dom,\n kb,\n subject,\n predicate,\n uiFrom,\n options.subForm,\n dataDoc,\n function (ok, body) {\n if (!ok) {\n callbackFunction(ok, body, { change: 'new' }) // @@ if ok, need some form of refresh of the select for the new thing\n }\n }\n )\n select.parentNode.appendChild(thisForm)\n newObject = thisForm.AJAR_subject\n } else {\n newObject = newThing(dataDoc)\n }\n is.push($rdf.st(subject, predicate, kb.sym(newObject), dataDoc))\n if (uiFrom) is.push($rdf.st(newObject, ns.rdf('type'), kb.sym(uiFrom), dataDoc))\n\n // not sure if this 'if' is used because I cannot find mintStatementsFun\n if (options.mintStatementsFun) {\n is = is.concat(options.mintStatementsFun(newObject))\n }\n select.currentURI = newObject\n }\n if (!opt.AJAR_uri) continue // a prompt or mint\n if (opt.selected && containsObject(opt.AJAR_uri, selectedOptions)) {\n select.currentURI = opt.AJAR_uri\n }\n if (!containsObject(opt.AJAR_uri, selectedOptions)) opt.removeAttribute('selected')\n if (containsObject(opt.AJAR_uri, selectedOptions)) opt.setAttribute('selected', 'true')\n }\n\n log.info('selectForOptions: data doc = ' + dataDoc)\n\n if (select.currentURI && options.subForm && !options.multiSelect) {\n addSubFormChoice(dom, container, {}, $rdf.sym(select.currentURI), options.subForm, dataDoc, function (ok, body) {\n if (ok) {\n kb.updater.update([], is, function (uri, success, errorBody) {\n if (!success) container.appendChild(errorMessageBlock(dom, 'Error updating select: ' + errorBody))\n })\n if (callbackFunction) callbackFunction(ok, { widget: 'select', event: 'new' })\n } else {\n container.appendChild(errorMessageBlock(dom, 'Error updating data in field of select: ' + body))\n }\n })\n }\n select.disabled = false\n }\n\n function createOption (uri) {\n const option = dom.createElement('option')\n const c = kb.sym(uri)\n let label\n if (options.disambiguate) {\n label = utils.labelWithOntology(c, true) // Init. cap\n } else {\n label = utils.label(c, true)\n }\n option.appendChild(dom.createTextNode(label)) // Init.\n option.setAttribute('value', uri)\n const backgroundColor = kb.any(\n c,\n kb.sym('http://www.w3.org/ns/ui#backgroundColor')\n )\n if (backgroundColor) {\n option.setAttribute(\n 'style',\n 'background-color: ' + backgroundColor.value + '; '\n )\n }\n option.AJAR_uri = uri\n if (containsObject(c.value, selectedOptions)) {\n option.setAttribute('selected', 'true')\n }\n return option\n }\n\n if (editable) {\n select.addEventListener('change', onChange, false)\n }\n\n return select\n} // makeSelectForChoice\n\nfunction containsObject (obj, list) {\n let i\n for (i = 0; i < list.length; i++) {\n if (list[i] === obj) {\n return true\n }\n }\n\n return false\n}\n\n// This functions replaces the findMembersNT (thisClass) from rdflib until we fix: https://github.com/linkeddata/rdflib.js/issues/565\n/**\n * For anything which has thisClass (or any subclass) as its type,\n * or is the object of something which has thisClass (or any subclass) as its range,\n * or subject of something which has thisClass (or any subclass) as its domain\n * We don't bother doing subproperty (yet?) as it doesn't seem to be used\n * much.\n * Get all the Classes of which we can RDFS-infer the subject is a member\n * @return a hash of URIs\n */\nfunction findMembersNT (store, thisClass, quad) {\n let len2\n let len4\n let m\n let pred\n let ref1\n let ref2\n let ref3\n let ref4\n let ref5\n let st\n let u\n const seeds = {}\n seeds[thisClass.toNT()] = true\n const members = {}\n const ref = store.transitiveClosure(seeds, store.rdfFactory.namedNode('http://www.w3.org/2000/01/rdf-schema#subClassOf'), true)\n for (const t in ref) {\n ref1 = store.statementsMatching(null,\n store.rdfFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'),\n store.fromNT(t),\n quad)\n for (let i = 0, len = ref1.length; i < len; i++) {\n st = ref1[i]\n members[st.subject.toNT()] = st\n }\n ref2 = store.each(null,\n store.rdfFactory.namedNode('http://www.w3.org/2000/01/rdf-schema#domain'),\n store.fromNT(t),\n quad)\n for (let l = 0, len1 = ref2.length; l < len1; l++) {\n pred = ref2[l]\n ref3 = store.statementsMatching(null, pred, null, quad)\n for (m = 0, len2 = ref3.length; m < len2; m++) {\n st = ref3[m]\n members[st.subject.toNT()] = st\n }\n }\n ref4 = store.each(null,\n store.rdfFactory.namedNode('http://www.w3.org/2000/01/rdf-schema#range'),\n store.fromNT(t),\n quad)\n for (let q = 0, len3 = ref4.length; q < len3; q++) {\n pred = ref4[q]\n ref5 = store.statementsMatching(null, pred, null, quad)\n for (u = 0, len4 = ref5.length; u < len4; u++) {\n st = ref5[u]\n members[st.object.toNT()] = st\n }\n }\n }\n\n return members\n}\n","/* eslint-disable camelcase */\n/**\n * Signing in, signing up, profile and preferences reloading\n * Type index management\n *\n * Many functions in this module take a context object which\n * holds various RDF symbols, add to it, and return a promise of it.\n *\n * * `me` RDF symbol for the user's WebID\n * * `publicProfile` The user's public profile, iff loaded\n * * `preferencesFile` The user's personal preference file, iff loaded\n * * `index.public` The user's public type index file\n * * `index.private` The user's private type index file\n *\n * Not RDF symbols:\n * * `noun` A string in english for the type of thing -- like \"address book\"\n * * `instance` An array of nodes which are existing instances\n * * `containers` An array of nodes of containers of instances\n * * `div` A DOM element where UI can be displayed\n * * `statusArea` A DOM element (opt) progress stuff can be displayed, or error messages\n * *\n * * Vocabulary: \"load\" loads a file if it exists;\n * * 'Ensure\" CREATES the file if it does not exist (if it can) and then loads it.\n * @packageDocumentation\n */\nimport { PaneDefinition } from 'pane-registry'\nimport { BlankNode, NamedNode, st } from 'rdflib'\n\nimport { Quad_Object } from 'rdflib/lib/tf-types'\nimport {\n AppDetails,\n AuthenticationContext,\n authn,\n authSession,\n CrossOriginForbiddenError,\n FetchError,\n getSuggestedIssuers,\n NotEditableError,\n offlineTestID,\n SameOriginForbiddenError,\n solidLogicSingleton,\n UnauthorizedError,\n WebOperationError\n} from 'solid-logic'\nimport * as debug from '../debug'\nimport { style } from '../style'\nimport { alert } from '../log'\nimport ns from '../ns'\nimport { Signup } from '../signup/signup.js'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\n\nconst store = solidLogicSingleton.store\n\nconst {\n loadPreferences,\n loadProfile\n} = solidLogicSingleton.profile\n\nconst {\n getScopedAppInstances,\n getRegistrations,\n loadAllTypeIndexes,\n getScopedAppsFromIndex,\n deleteTypeIndexRegistration\n} = solidLogicSingleton.typeIndex\n\n/**\n * Resolves with the logged in user's WebID\n *\n * @param context\n */\n// used to be logIn\nexport function ensureLoggedIn (context: AuthenticationContext): Promise<AuthenticationContext> {\n const me = authn.currentUser()\n if (me) {\n authn.saveUser(me, context)\n return Promise.resolve(context)\n }\n\n return new Promise((resolve) => {\n authn.checkUser().then((webId) => {\n // Already logged in?\n if (webId) {\n debug.log(`logIn: Already logged in as ${webId}`)\n return resolve(context)\n }\n if (!context.div || !context.dom) {\n return resolve(context)\n }\n const box = loginStatusBox(context.dom, (webIdUri) => {\n authn.saveUser(webIdUri, context)\n resolve(context) // always pass growing context\n })\n context.div.appendChild(box)\n })\n })\n}\n\n/**\n * Loads preference file\n * Do this after having done log in and load profile\n *\n * @private\n *\n * @param context\n */\n// used to be logInLoadPreferences\nexport async function ensureLoadedPreferences (\n context: AuthenticationContext\n): Promise<AuthenticationContext> {\n if (context.preferencesFile) return Promise.resolve(context) // already done\n\n // const statusArea = context.statusArea || context.div || null\n let progressDisplay\n /* COMPLAIN FUNCTION NOT USED/TAKING IT OUT FOR NOW\n function complain (message) {\n message = `ensureLoadedPreferences: ${message}`\n if (statusArea) {\n // statusArea.innerHTML = ''\n statusArea.appendChild(widgets.errorMessageBlock(context.dom, message))\n }\n debug.log(message)\n // reject(new Error(message))\n } */\n try {\n context = await ensureLoadedProfile(context)\n\n // console.log('back in Solid UI after logInLoadProfile', context)\n const preferencesFile = await loadPreferences(context.me as NamedNode)\n if (progressDisplay) {\n progressDisplay.parentNode.removeChild(progressDisplay)\n }\n context.preferencesFile = preferencesFile\n } catch (err) {\n let m2: string\n if (err instanceof UnauthorizedError) {\n m2 =\n 'Oops — you are not authenticated (properly logged in), so SolidOS cannot read your preferences file. Try logging out and then logging back in.'\n alert(m2)\n } else if (err instanceof CrossOriginForbiddenError) {\n m2 = `Unauthorized: Assuming preference file blocked for origin ${window.location.origin}`\n context.preferencesFileError = m2\n return context\n } else if (err instanceof SameOriginForbiddenError) {\n m2 =\n 'You are not authorized to read your preference file. This may be because you are using an untrusted web app.'\n debug.warn(m2)\n return context\n } else if (err instanceof NotEditableError) {\n m2 =\n 'You are not authorized to edit your preference file. This may be because you are using an untrusted web app.'\n debug.warn(m2)\n return context\n } else if (err instanceof WebOperationError) {\n m2 =\n 'You are not authorized to edit your preference file. This may be because you are using an untrusted web app.'\n debug.warn(m2)\n } else if (err instanceof FetchError) {\n m2 = `Strange: Error ${err.status} trying to read your preference file.${err.message}`\n alert(m2)\n } else {\n throw new Error(`(via loadPrefs) ${err}`)\n }\n }\n return context\n}\n\n/**\n * Logs the user in and loads their WebID profile document into the store\n *\n * @param context\n *\n * @returns Resolves with the context after login / fetch\n */\n// used to be logInLoadProfile\nexport async function ensureLoadedProfile (\n context: AuthenticationContext\n): Promise<AuthenticationContext> {\n if (context.publicProfile) {\n return context\n } // already done\n try {\n const logInContext = await ensureLoggedIn(context)\n if (!logInContext.me) {\n throw new Error('Could not log in')\n }\n context.publicProfile = await loadProfile(logInContext.me)\n } catch (err) {\n if (context.div && context.dom) {\n context.div.appendChild(widgets.errorMessageBlock(context.dom, err.message))\n }\n throw new Error(`Can't log in: ${err}`)\n }\n return context\n}\n\n/**\n * Returns promise of context with arrays of symbols\n *\n * leaving the `isPublic` param undefined will bring in community index things, too\n */\nexport async function findAppInstances (\n context: AuthenticationContext,\n theClass: NamedNode,\n isPublic?: boolean\n): Promise<AuthenticationContext> {\n let items = context.me ? await getScopedAppInstances(theClass, context.me) : []\n if (isPublic === true) { // old API - not recommended!\n items = items.filter(item => item.scope.label === 'public')\n } else if (isPublic === false) {\n items = items.filter(item => item.scope.label === 'private')\n }\n context.instances = items.map(item => item.instance)\n return context\n}\n\nexport function scopeLabel (context, scope) {\n const mine = context.me && context.me.sameTerm(scope.agent)\n const name = mine ? '' : utils.label(scope.agent) + ' '\n return `${name}${scope.label}`\n}\n/**\n * UI to control registration of instance\n */\nexport async function registrationControl (\n context: AuthenticationContext,\n instance,\n theClass\n): Promise<AuthenticationContext | void> {\n function registrationStatements (index) {\n const registrations = getRegistrations(instance, theClass)\n const reg = registrations.length ? registrations[0] : widgets.newThing(index)\n return [\n st(reg, ns.solid('instance'), instance, index),\n st(reg, ns.solid('forClass'), theClass, index)\n ]\n }\n\n function renderScopeCheckbox (scope) {\n const statements = registrationStatements(scope.index)\n const name = scopeLabel(context, scope)\n const label = `${name} link to this ${context.noun}`\n return widgets.buildCheckboxForm(\n context.dom,\n solidLogicSingleton.store,\n label,\n null,\n statements,\n form,\n scope.index\n )\n }\n /// / body of registrationControl\n const dom = context.dom\n if (!dom || !context.div) {\n throw new Error('registrationControl: need dom and div')\n }\n const box = dom.createElement('div')\n context.div.appendChild(box)\n context.me = authn.currentUser() // @@\n const me = context.me\n if (!me) {\n box.innerHTML = '<p style=\"margin:2em;\">(Log in to save a link to this)</p>'\n return context\n }\n\n let scopes // @@ const\n try {\n scopes = await loadAllTypeIndexes(me)\n } catch (e) {\n let msg\n if (context.div && context.preferencesFileError) {\n msg = '(Lists of stuff not available)'\n context.div.appendChild(dom.createElement('p')).textContent = msg\n } else if (context.div) {\n msg = `registrationControl: Type indexes not available: ${e}`\n context.div.appendChild(widgets.errorMessageBlock(context.dom, e))\n }\n debug.log(msg)\n return context\n }\n\n box.innerHTML = '<table><tbody></tbody></table>' // tbody will be inserted anyway\n box.setAttribute('style', 'font-size: 120%; text-align: right; padding: 1em; border: solid gray 0.05em;')\n const tbody = box.children[0].children[0]\n const form = new BlankNode() // @@ say for now\n\n for (const scope of scopes) {\n const row = tbody.appendChild(dom.createElement('tr'))\n row.appendChild(renderScopeCheckbox(scope)) // @@ index\n }\n return context\n}\n\nexport function renderScopeHeadingRow (context, store, scope) {\n const backgroundColor = { private: '#fee', public: '#efe' }\n const { dom } = context\n const name = scopeLabel(context, scope)\n const row = dom.createElement('tr')\n const cell = row.appendChild(dom.createElement('td'))\n cell.setAttribute('colspan', '3')\n cell.style.backgoundColor = backgroundColor[scope.label] || 'white'\n const header = cell.appendChild(dom.createElement('h3'))\n header.textContent = name + ' links'\n header.style.textAlign = 'left'\n return row\n}\n/**\n * UI to List at all registered things\n */\nexport async function registrationList (context: AuthenticationContext, options: {\n private?: boolean\n public?: boolean\n type?: NamedNode\n}): Promise<AuthenticationContext> {\n const dom = context.dom as HTMLDocument\n const div = context.div as HTMLElement\n\n const box = dom.createElement('div')\n div.appendChild(box)\n context.me = authn.currentUser() // @@\n if (!context.me) {\n box.innerHTML = '<p style=\"margin:2em;\">(Log in list your stuff)</p>'\n return context\n }\n\n const scopes = await loadAllTypeIndexes(context.me) // includes community indexes\n\n // console.log('@@ registrationList ', scopes)\n box.innerHTML = '<table><tbody></tbody></table>' // tbody will be inserted anyway\n box.setAttribute('style', 'font-size: 120%; text-align: right; padding: 1em; border: solid #eee 0.5em;')\n const table = box.firstChild as HTMLElement\n const tbody = table.firstChild as HTMLElement\n\n for (const scope of scopes) { // need some predicate for listing/adding agents\n const headingRow = renderScopeHeadingRow(context, store, scope)\n tbody.appendChild(headingRow)\n const items = await getScopedAppsFromIndex(scope, options.type || null) // any class\n if (items.length === 0) headingRow.style.display = 'none'\n // console.log(`registrationList: @@ instance items for class ${options.type || 'undefined' }:`, items)\n for (const item of items) {\n const row = widgets.personTR(dom, ns.solid('instance'), item.instance, {\n deleteFunction: async () => {\n await deleteTypeIndexRegistration(item)\n tbody.removeChild(row)\n }\n })\n row.children[0].style.paddingLeft = '3em'\n\n tbody.appendChild(row)\n }\n }\n return context\n} // registrationList\n\n/**\n * Bootstrapping identity\n * (Called by `loginStatusBox()`)\n *\n * @param dom\n * @param setUserCallback\n *\n * @returns\n */\nfunction signInOrSignUpBox (\n dom: HTMLDocument,\n setUserCallback: (user: string) => void,\n options: {\n buttonStyle?: string;\n } = {}\n): HTMLElement {\n options = options || {}\n const signInButtonStyle = options.buttonStyle || style.signInAndUpButtonStyle\n\n const box: any = dom.createElement('div')\n const magicClassName = 'SolidSignInOrSignUpBox'\n debug.log('widgets.signInOrSignUpBox')\n box.setUserCallback = setUserCallback\n box.setAttribute('class', magicClassName)\n box.setAttribute('style', 'display:flex;')\n\n // Sign in button with PopUP\n const signInPopUpButton = dom.createElement('input') // multi\n box.appendChild(signInPopUpButton)\n signInPopUpButton.setAttribute('type', 'button')\n signInPopUpButton.setAttribute('value', 'Log in')\n signInPopUpButton.setAttribute('style', `${signInButtonStyle}${style.headerBannerLoginInput}` + style.signUpBackground)\n\n authSession.events.on('login', () => {\n const me = authn.currentUser()\n // const sessionInfo = authSession.info\n // if (sessionInfo && sessionInfo.isLoggedIn) {\n if (me) {\n // const webIdURI = sessionInfo.webId\n const webIdURI = me.uri\n // setUserCallback(webIdURI)\n const divs = dom.getElementsByClassName(magicClassName)\n debug.log(`Logged in, ${divs.length} panels to be serviced`)\n // At the same time, satisfy all the other login boxes\n for (let i = 0; i < divs.length; i++) {\n const div: any = divs[i]\n // @@ TODO Remove the need to manipulate HTML elements\n if (div.setUserCallback) {\n try {\n div.setUserCallback(webIdURI)\n const parent = div.parentNode\n if (parent) {\n parent.removeChild(div)\n }\n } catch (e) {\n debug.log(`## Error satisfying login box: ${e}`)\n div.appendChild(widgets.errorMessageBlock(dom, e))\n }\n }\n }\n }\n })\n\n signInPopUpButton.addEventListener(\n 'click',\n () => {\n const offline = offlineTestID()\n if (offline) return setUserCallback(offline.uri)\n\n renderSignInPopup(dom)\n },\n false\n )\n\n // Sign up button\n const signupButton = dom.createElement('input')\n box.appendChild(signupButton)\n signupButton.setAttribute('type', 'button')\n signupButton.setAttribute('value', 'Sign Up for Solid')\n signupButton.setAttribute('style', `${signInButtonStyle}${style.headerBannerLoginInput}` + style.signInBackground)\n\n signupButton.addEventListener(\n 'click',\n function (_event) {\n const signupMgr = new Signup()\n signupMgr.signup().then(function (uri) {\n debug.log('signInOrSignUpBox signed up ' + uri)\n setUserCallback(uri)\n })\n },\n false\n )\n return box\n}\n\nexport function renderSignInPopup (dom: HTMLDocument) {\n /**\n * Issuer Menu\n */\n const issuerPopup = dom.createElement('div')\n issuerPopup.setAttribute(\n 'style',\n 'position: fixed; top: 0; left: 0; right: 0; bottom: 0; display: flex; justify-content: center; align-items: center;'\n )\n dom.body.appendChild(issuerPopup)\n const issuerPopupBox = dom.createElement('div')\n issuerPopupBox.setAttribute(\n 'style',\n `\n background-color: white;\n box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.2);\n -moz-box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.2);\n -o-box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.2);\n border-radius: 4px;\n min-width: 400px;\n padding: 10px;\n z-index : 10;\n `\n )\n issuerPopup.appendChild(issuerPopupBox)\n const issuerPopupBoxTopMenu = dom.createElement('div')\n issuerPopupBoxTopMenu.setAttribute(\n 'style',\n `\n border-bottom: 1px solid #DDD;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n `\n )\n issuerPopupBox.appendChild(issuerPopupBoxTopMenu)\n const issuerPopupBoxLabel = dom.createElement('label')\n issuerPopupBoxLabel.setAttribute('style', 'margin-right: 5px; font-weight: 800')\n issuerPopupBoxLabel.innerText = 'Select an identity provider'\n const issuerPopupBoxCloseButton = dom.createElement('button')\n issuerPopupBoxCloseButton.innerHTML =\n '<img src=\"https://solidos.github.io/solid-ui/src/icons/noun_1180156.svg\" style=\"width: 2em; height: 2em;\" title=\"Cancel\">'\n issuerPopupBoxCloseButton.setAttribute('style', 'background-color: transparent; border: none;')\n issuerPopupBoxCloseButton.addEventListener('click', () => {\n issuerPopup.remove()\n })\n issuerPopupBoxTopMenu.appendChild(issuerPopupBoxLabel)\n issuerPopupBoxTopMenu.appendChild(issuerPopupBoxCloseButton)\n\n const loginToIssuer = async (issuerUri: string) => {\n try {\n // clear authorization metadata from store\n solidLogicSingleton.store.updater.flagAuthorizationMetadata() as any\n // Save hash\n const preLoginRedirectHash = new URL(window.location.href).hash\n if (preLoginRedirectHash) {\n window.localStorage.setItem('preLoginRedirectHash', preLoginRedirectHash)\n }\n window.localStorage.setItem('loginIssuer', issuerUri)\n // Login\n const locationUrl = new URL(window.location.href)\n locationUrl.hash = '' // remove hash part\n await authSession.login({\n redirectUrl: locationUrl.href,\n oidcIssuer: issuerUri\n })\n } catch (err) {\n alert(err.message)\n }\n }\n\n /**\n * Text-based idp selection\n */\n const issuerTextContainer = dom.createElement('div')\n issuerTextContainer.setAttribute(\n 'style',\n `\n border-bottom: 1px solid #DDD;\n display: flex;\n flex-direction: column;\n padding-top: 10px;\n `\n )\n const issuerTextInputContainer = dom.createElement('div')\n issuerTextInputContainer.setAttribute(\n 'style',\n `\n display: flex;\n flex-direction: row;\n `\n )\n const issuerTextLabel = dom.createElement('label')\n issuerTextLabel.innerText = 'Enter the URL of your identity provider:'\n issuerTextLabel.setAttribute('style', 'color: #888')\n const issuerTextInput = dom.createElement('input')\n issuerTextInput.setAttribute('type', 'text')\n issuerTextInput.setAttribute(\n 'style',\n 'margin-left: 0 !important; flex: 1; margin-right: 5px !important'\n )\n issuerTextInput.setAttribute('placeholder', 'https://example.com')\n issuerTextInput.value = localStorage.getItem('loginIssuer') || ''\n const issuerTextGoButton = dom.createElement('button')\n issuerTextGoButton.innerText = 'Go'\n issuerTextGoButton.setAttribute('style', 'margin-top: 12px; margin-bottom: 12px;')\n issuerTextGoButton.addEventListener('click', () => {\n loginToIssuer(issuerTextInput.value)\n })\n issuerTextContainer.appendChild(issuerTextLabel)\n issuerTextInputContainer.appendChild(issuerTextInput)\n issuerTextInputContainer.appendChild(issuerTextGoButton)\n issuerTextContainer.appendChild(issuerTextInputContainer)\n issuerPopupBox.appendChild(issuerTextContainer)\n\n /**\n * Button-based idp selection\n */\n const issuerButtonContainer = dom.createElement('div')\n issuerButtonContainer.setAttribute(\n 'style',\n `\n display: flex;\n flex-direction: column;\n padding-top: 10px;\n `\n )\n const issuerBottonLabel = dom.createElement('label')\n issuerBottonLabel.innerText = 'Or pick an identity provider from the list below:'\n issuerBottonLabel.setAttribute('style', 'color: #888')\n issuerButtonContainer.appendChild(issuerBottonLabel)\n getSuggestedIssuers().forEach((issuerInfo) => {\n const issuerButton = dom.createElement('button')\n issuerButton.innerText = issuerInfo.name\n issuerButton.setAttribute('style', 'height: 38px; margin-top: 10px')\n issuerButton.addEventListener('click', () => {\n loginToIssuer(issuerInfo.uri)\n })\n issuerButtonContainer.appendChild(issuerButton)\n })\n issuerPopupBox.appendChild(issuerButtonContainer)\n}\n\n/**\n * Login status box\n *\n * A big sign-up/sign in box or a logout box depending on the state\n *\n * @param dom\n * @param listener\n *\n * @returns\n */\nexport function loginStatusBox (\n dom: HTMLDocument,\n listener: ((uri: string | null) => void) | null = null,\n options: {\n buttonStyle?: string;\n } = {}\n): HTMLElement {\n // 20190630\n let me = offlineTestID()\n // @@ TODO Remove the need to cast HTML element to any\n const box: any = dom.createElement('div')\n\n function setIt (newidURI) {\n if (!newidURI) {\n return\n }\n\n // const uri = newidURI.uri || newidURI\n // me = sym(uri)\n me = authn.saveUser(newidURI)\n box.refresh()\n if (listener) listener(me!.uri)\n }\n\n function logoutButtonHandler (_event) {\n const oldMe = me\n authSession.logout().then(\n function () {\n const message = `Your WebID was ${oldMe}. It has been forgotten.`\n me = null\n try {\n alert(message)\n } catch (_e) {\n window.alert(message)\n }\n box.refresh()\n if (listener) listener(null)\n },\n (err) => {\n alert('Fail to log out:' + err)\n }\n )\n }\n\n function logoutButton (me, options) {\n const signInButtonStyle = options.buttonStyle || style.signInAndUpButtonStyle\n let logoutLabel = 'WebID logout'\n if (me) {\n const nick =\n solidLogicSingleton.store.any(me, ns.foaf('nick')) ||\n solidLogicSingleton.store.any(me, ns.foaf('name'))\n if (nick) {\n logoutLabel = 'Logout ' + nick.value\n }\n }\n const signOutButton = dom.createElement('input')\n // signOutButton.className = 'WebIDCancelButton'\n signOutButton.setAttribute('type', 'button')\n signOutButton.setAttribute('value', logoutLabel)\n signOutButton.setAttribute('style', `${signInButtonStyle}`)\n signOutButton.addEventListener('click', logoutButtonHandler, false)\n return signOutButton\n }\n\n box.refresh = function () {\n const sessionInfo = authSession.info\n if (sessionInfo && sessionInfo.webId && sessionInfo.isLoggedIn) {\n me = solidLogicSingleton.store.sym(sessionInfo.webId)\n } else {\n me = null\n }\n if ((me && box.me !== me.uri) || (!me && box.me)) {\n widgets.clearElement(box)\n if (me) {\n box.appendChild(logoutButton(me, options))\n } else {\n box.appendChild(signInOrSignUpBox(dom, setIt, options))\n }\n }\n box.me = me ? me.uri : null\n }\n box.refresh()\n\n function trackSession () {\n me = authn.currentUser()\n box.refresh()\n }\n trackSession()\n\n authSession.events.on('login', trackSession)\n authSession.events.on('logout', trackSession)\n box.me = '99999' // Force refresh\n box.refresh()\n return box\n}\n\nauthSession.events.on('logout', async () => {\n const issuer = window.localStorage.getItem('loginIssuer')\n if (issuer) {\n try {\n // clear authorization metadata from store\n solidLogicSingleton.store.updater.flagAuthorizationMetadata() as any\n\n const wellKnownUri = new URL(issuer)\n wellKnownUri.pathname = '/.well-known/openid-configuration'\n const wellKnownResult = await fetch(wellKnownUri.toString())\n if (wellKnownResult.status === 200) {\n const openidConfiguration = await wellKnownResult.json()\n if (openidConfiguration && openidConfiguration.end_session_endpoint) {\n await fetch(openidConfiguration.end_session_endpoint, { credentials: 'include' })\n }\n }\n } catch (_err) {\n // Do nothing\n }\n }\n window.location.reload()\n})\n\n/**\n * Workspace selection etc\n * See https://github.com/solidos/userguide/issues/16\n */\n\n/**\n * Returns a UI object which, if it selects a workspace,\n * will callback(workspace, newBase).\n * See https://github.com/solidos/userguide/issues/16 for more info on workspaces.\n *\n * If necessary, will get an account, preference file, etc. In sequence:\n *\n * - If not logged in, log in.\n * - Load preference file\n * - Prompt user for workspaces\n * - Allows the user to just type in a URI by hand\n *\n * Calls back with the workspace and the base URI\n *\n * @param dom\n * @param appDetails\n * @param callbackWS\n */\nexport function selectWorkspace (\n dom: HTMLDocument,\n appDetails: AppDetails,\n callbackWS: (workspace: string | null, newBase: string) => void\n): HTMLElement {\n const noun = appDetails.noun\n const appPathSegment = appDetails.appPathSegment\n\n const me = offlineTestID()\n const box = dom.createElement('div')\n const context: AuthenticationContext = { me, dom, div: box }\n\n function say (s, background) {\n box.appendChild(widgets.errorMessageBlock(dom, s, background))\n }\n\n function figureOutBase (ws) {\n const newBaseNode: NamedNode = solidLogicSingleton.store.any(\n ws,\n ns.space('uriPrefix')\n ) as NamedNode\n let newBaseString: string\n if (!newBaseNode) {\n newBaseString = ws.uri.split('#')[0]\n } else {\n newBaseString = newBaseNode.value\n }\n if (newBaseString.slice(-1) !== '/') {\n debug.log(`${appPathSegment}: No / at end of uriPrefix ${newBaseString}`) // @@ paramater?\n newBaseString = `${newBaseString}/`\n }\n const now = new Date()\n newBaseString += `${appPathSegment}/id${now.getTime()}/` // unique id\n return newBaseString\n }\n\n function displayOptions (context) {\n // console.log('displayOptions!', context)\n async function makeNewWorkspace (_event) {\n const row = table.appendChild(dom.createElement('tr'))\n const cell = row.appendChild(dom.createElement('td'))\n cell.setAttribute('colspan', '3')\n cell.style.padding = '0.5em'\n const newBase = encodeURI(\n await widgets.askName(\n dom,\n solidLogicSingleton.store,\n cell,\n ns.solid('URL'),\n ns.space('Workspace'),\n 'Workspace'\n )\n )\n const newWs = widgets.newThing(context.preferencesFile)\n const newData = [\n st(context.me, ns.space('workspace'), newWs, context.preferencesFile),\n\n st(\n newWs,\n ns.space('uriPrefix'),\n newBase as unknown as Quad_Object,\n context.preferencesFile\n )\n ]\n if (!solidLogicSingleton.store.updater) {\n throw new Error('store has no updater')\n }\n await solidLogicSingleton.store.updater.update([], newData)\n // @@ now refresh list of workspaces\n }\n\n // const status = ''\n const id = context.me\n const preferencesFile = context.preferencesFile\n let newBase: any = null\n\n // A workspace specifically defined in the private preference file:\n let w: any = solidLogicSingleton.store.each(\n id,\n ns.space('workspace'),\n undefined,\n preferencesFile\n ) // Only trust preference file here\n\n // A workspace in a storage in the public profile:\n const storages = solidLogicSingleton.store.each(id, ns.space('storage')) // @@ No provenance requirement at the moment\n if (w.length === 0 && storages) {\n say(\n `You don't seem to have any workspaces. You have ${storages.length} storage spaces.`,\n 'white'\n )\n storages\n .map(function (s: any) {\n w = w.concat(solidLogicSingleton.store.each(s, ns.ldp('contains')))\n return w\n })\n .filter((file) => {\n return file.id ? ['public', 'private'].includes(file.id().toLowerCase()) : ''\n })\n }\n\n if (w.length === 1) {\n say(`Workspace used: ${w[0].uri}`, 'white') // @@ allow user to see URI\n newBase = figureOutBase(w[0])\n // callbackWS(w[0], newBase)\n // } else if (w.length === 0) {\n }\n\n // Prompt for ws selection or creation\n // say( w.length + \" workspaces for \" + id + \"Choose one.\");\n const table = dom.createElement('table')\n table.setAttribute('style', 'border-collapse:separate; border-spacing: 0.5em;')\n\n // const popup = window.open(undefined, '_blank', { height: 300, width:400 }, false)\n box.appendChild(table)\n\n // Add a field for directly adding the URI yourself\n\n // const hr = box.appendChild(dom.createElement('hr')) // @@\n box.appendChild(dom.createElement('hr')) // @@\n\n const p = box.appendChild(dom.createElement('p'))\n p.setAttribute('style', style.commentStyle)\n p.textContent = `Where would you like to store the data for the ${noun}?\n Give the URL of the folder where you would like the data stored.\n It can be anywhere in solid world - this URI is just an idea.`\n // @@ TODO Remove the need to cast baseField to any\n const baseField: any = box.appendChild(dom.createElement('input'))\n baseField.setAttribute('type', 'text')\n baseField.setAttribute('style', style.textInputStyle)\n baseField.size = 80 // really a string\n baseField.label = 'base URL'\n baseField.autocomplete = 'on'\n if (newBase) {\n // set to default\n baseField.value = newBase\n }\n\n context.baseField = baseField\n\n box.appendChild(dom.createElement('br')) // @@\n\n const button = box.appendChild(dom.createElement('button'))\n button.setAttribute('style', style.buttonStyle)\n button.textContent = `Start new ${noun} at this URI`\n button.addEventListener('click', function (_event) {\n let newBase = baseField.value.replace(' ', '%20') // do not re-encode in general, as % encodings may exist\n if (newBase.slice(-1) !== '/') {\n newBase += '/'\n }\n callbackWS(null, newBase)\n })\n\n // Now go set up the table of spaces\n\n // const row = 0\n w = w.filter(function (x) {\n return !solidLogicSingleton.store.holds(\n x,\n ns.rdf('type'), // Ignore master workspaces\n ns.space('MasterWorkspace')\n )\n })\n let col1, col2, col3, tr, ws, localStyle, comment\n const cellStyle = 'height: 3em; margin: 1em; padding: 1em white; border-radius: 0.3em;'\n const deselectedStyle = `${cellStyle}border: 0px;`\n // const selectedStyle = cellStyle + 'border: 1px solid black;'\n for (let i = 0; i < w.length; i++) {\n ws = w[i]\n tr = dom.createElement('tr')\n if (i === 0) {\n col1 = dom.createElement('td')\n col1.setAttribute('rowspan', `${w.length}`)\n col1.textContent = 'Choose a workspace for this:'\n col1.setAttribute('style', 'vertical-align:middle;')\n tr.appendChild(col1)\n }\n col2 = dom.createElement('td')\n localStyle = solidLogicSingleton.store.anyValue(ws, ns.ui('style'))\n if (!localStyle) {\n // Otherwise make up arbitrary colour\n const hash = function (x) {\n return x.split('').reduce(function (a, b) {\n a = (a << 5) - a + b.charCodeAt(0)\n return a & a\n }, 0)\n }\n const bgcolor = `#${((hash(ws.uri) & 0xffffff) | 0xc0c0c0).toString(16)}` // c0c0c0 forces pale\n localStyle = `color: black ; background-color: ${bgcolor};`\n }\n col2.setAttribute('style', deselectedStyle + localStyle)\n tr.target = ws.uri\n let label = solidLogicSingleton.store.any(ws, ns.rdfs('label'))\n if (!label) {\n label = ws.uri.split('/').slice(-1)[0] || ws.uri.split('/').slice(-2)[0]\n }\n col2.textContent = label || '???'\n tr.appendChild(col2)\n if (i === 0) {\n col3 = dom.createElement('td')\n col3.setAttribute('rowspan', `${w.length}1`)\n // col3.textContent = '@@@@@ remove';\n col3.setAttribute('style', 'width:50%;')\n tr.appendChild(col3)\n }\n table.appendChild(tr)\n\n comment = solidLogicSingleton.store.any(ws, ns.rdfs('comment'))\n comment = comment ? comment.value : 'Use this workspace'\n col2.addEventListener(\n 'click',\n function (_event) {\n col3.textContent = comment ? comment.value : ''\n col3.setAttribute('style', deselectedStyle + localStyle)\n const button = dom.createElement('button')\n button.textContent = 'Continue'\n // button.setAttribute('style', style);\n const newBase = figureOutBase(ws)\n baseField.value = newBase // show user proposed URI\n\n button.addEventListener(\n 'click',\n function (_event) {\n button.disabled = true\n callbackWS(ws, newBase)\n button.textContent = '---->'\n },\n true\n ) // capture vs bubble\n col3.appendChild(button)\n },\n true\n ) // capture vs bubble\n }\n\n // last line with \"Make new workspace\"\n const trLast = dom.createElement('tr')\n col2 = dom.createElement('td')\n col2.setAttribute('style', cellStyle)\n col2.textContent = '+ Make a new workspace'\n col2.addEventListener('click', makeNewWorkspace)\n trLast.appendChild(col2)\n table.appendChild(trLast)\n } // displayOptions\n\n // console.log('kicking off async operation')\n ensureLoadedPreferences(context) // kick off async operation\n .then(displayOptions)\n .catch((err) => {\n // console.log(\"err from async op\")\n box.appendChild(widgets.errorMessageBlock(context.dom, err))\n })\n\n return box // return the box element, while login proceeds\n} // selectWorkspace\n\n/**\n * Creates a new instance of an app.\n *\n * An instance of an app could be e.g. an issue tracker for a given project,\n * or a chess game, or calendar, or a health/fitness record for a person.\n *\n * Note that this use of the term 'app' refers more to entries in the user's\n * type index than to actual software applications that use the personal data\n * to which these entries point.\n *\n * @param dom\n * @param appDetails\n * @param callback\n *\n * @returns A div with a button in it for making a new app instance\n */\nexport function newAppInstance (\n dom: HTMLDocument,\n appDetails: AppDetails,\n callback: (workspace: string | null, newBase: string) => void\n): HTMLElement {\n const gotWS = function (ws, base) {\n // log.debug(\"newAppInstance: Selected workspace = \" + (ws? ws.uri : 'none'))\n callback(ws, base)\n }\n const div = dom.createElement('div')\n const b = dom.createElement('button')\n b.setAttribute('type', 'button')\n div.appendChild(b)\n b.innerHTML = `Make new ${appDetails.noun}`\n b.addEventListener(\n 'click',\n (_event) => {\n div.appendChild(selectWorkspace(dom, appDetails, gotWS))\n },\n false\n )\n div.appendChild(b)\n return div\n}\n/**\n * Retrieves whether the currently logged in user is a power user\n * and/or a developer\n */\nexport async function getUserRoles (): Promise<Array<NamedNode>> {\n try {\n const { me, preferencesFile, preferencesFileError } = await ensureLoadedPreferences({})\n if (!preferencesFile || preferencesFileError) {\n throw new Error(preferencesFileError)\n }\n return solidLogicSingleton.store.each(\n me,\n ns.rdf('type'),\n null,\n preferencesFile.doc()\n ) as NamedNode[]\n } catch (error) {\n debug.warn('Unable to fetch your preferences - this was the error: ', error)\n }\n return []\n}\n\n/**\n * Filters which panes should be available, based on the result of [[getUserRoles]]\n */\nexport async function filterAvailablePanes (\n panes: Array<PaneDefinition>\n): Promise<Array<PaneDefinition>> {\n const userRoles = await getUserRoles()\n return panes.filter((pane) => isMatchingAudience(pane, userRoles))\n}\n\nfunction isMatchingAudience (pane: PaneDefinition, userRoles: Array<NamedNode>): boolean {\n const audience = pane.audience || []\n return audience.reduce(\n (isMatch, audienceRole) => isMatch && !!userRoles.find((role) => role.equals(audienceRole)),\n true as boolean\n )\n}\n","/**\n * Contains the [[AddAgentButtons]] class\n * @packageDocumentation\n */\n\nimport { NamedNode, Store } from 'rdflib'\nimport { AuthenticationContext } from 'solid-logic'\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\nimport { ensureLoadedProfile } from '../login/login'\nimport ns from '../ns'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { style } from '../style'\nimport { AccessGroups } from './access-groups'\n\n/**\n * Renders the Sharing pane's \"+\" button and the menus behind it,\n * see https://github.com/solidos/userguide/blob/main/views/sharing/userguide.md#add\n */\nexport class AddAgentButtons {\n private readonly rootElement: HTMLElement\n private readonly barElement: HTMLElement\n private isExpanded: boolean = false\n\n constructor (private groupList: AccessGroups) {\n this.rootElement = groupList.controller.dom.createElement('div')\n this.barElement = groupList.controller.dom.createElement('div')\n }\n\n public render (): HTMLElement {\n this.rootElement.innerHTML = ''\n this.rootElement.appendChild(this.renderAddButton())\n this.rootElement.appendChild(this.barElement)\n return this.rootElement\n }\n\n private renderAddButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n `${icons.iconBase}noun_34653_green.svg`,\n 'Add ...',\n () => {\n this.toggleBar()\n this.renderBar()\n }\n )\n }\n\n private renderBar (): void {\n this.barElement.innerHTML = ''\n if (!this.isExpanded) {\n return\n }\n this.barElement.appendChild(this.renderPersonButton())\n this.barElement.appendChild(this.renderGroupButton())\n this.barElement.appendChild(this.renderPublicButton())\n this.barElement.appendChild(this.renderAuthenticatedAgentButton())\n this.barElement.appendChild(this.renderBotButton())\n this.barElement.appendChild(this.renderAppsButton())\n }\n\n private renderSimplifiedBar (button: EventTarget | null) {\n Array.from(this.barElement.children)\n .filter(element => element !== button)\n .forEach(element => this.barElement.removeChild(element))\n }\n\n private renderPersonButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + widgets.iconForClass['vcard:Individual'],\n 'Add Person',\n event => {\n this.renderSimplifiedBar(event.target)\n this.renderNameForm(ns.vcard('Individual'), 'person')\n .then(name => this.addPerson(name))\n .then(() => this.renderCleanup())\n .catch(error => this.groupList.controller.renderStatus(error))\n }\n )\n }\n\n private renderGroupButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + widgets.iconForClass['vcard:Group'],\n 'Add Group',\n event => {\n this.renderSimplifiedBar(event.target)\n this.renderNameForm(ns.vcard('Group'), 'group')\n .then(name => this.addGroup(name))\n .then(() => this.renderCleanup())\n .catch(error => this.groupList.controller.renderStatus(error))\n }\n )\n }\n\n private renderNameForm (type: NamedNode, noun: string): Promise<string | undefined> {\n return widgets.askName(\n this.groupList.controller.dom,\n this.groupList.store,\n this.barElement,\n ns.vcard('URI'),\n type,\n noun\n )\n }\n\n private renderPublicButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + widgets.iconForClass['foaf:Agent'],\n 'Add Everyone',\n () => this.addAgent(ns.foaf('Agent').uri)\n .then(() => this.groupList.controller.renderTemporaryStatus('Adding the general public to those who can read. Drag the globe to a different level to give them more access.'))\n .then(() => this.renderCleanup()))\n }\n\n private renderAuthenticatedAgentButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n `${icons.iconBase}noun_99101.svg`,\n 'Anyone logged In',\n () => this.addAgent(ns.acl('AuthenticatedAgent').uri)\n .then(() => this.groupList.controller.renderTemporaryStatus('Adding anyone logged in to those who can read. Drag the ID icon to a different level to give them more access.'))\n .then(() => this.renderCleanup()))\n }\n\n private renderBotButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + 'noun_Robot_849764.svg',\n 'A Software Agent (bot)',\n event => {\n this.renderSimplifiedBar(event.target)\n this.renderNameForm(ns.schema('Application'), 'bot')\n .then(name => this.addBot(name))\n .then(() => this.renderCleanup())\n })\n }\n\n private renderAppsButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n `${icons.iconBase}noun_15177.svg`,\n 'A Web App (origin)',\n event => {\n this.renderSimplifiedBar(event.target)\n const eventContext = {\n div: this.barElement,\n dom: this.groupList.controller.dom\n }\n const existingApps = this.renderAppsTable(eventContext)\n .catch(error => this.groupList.controller.renderStatus(error))\n this.renderAppsView()\n const newApp = this.renderNameForm(ns.schema('WebApplication'), 'webapp domain')\n .then(name => this.getOriginFromName(name))\n Promise.race([\n existingApps,\n newApp\n ])\n .then(origin => {\n if (origin) {\n this.groupList.addNewURI(origin)\n }\n })\n .then(() => this.renderCleanup())\n }\n )\n }\n\n private renderAppsView (): void {\n const trustedApplications = this.groupList.controller.context.session.paneRegistry.byName('trustedApplications')\n if (trustedApplications) {\n const trustedApplicationsElement = trustedApplications.render(null, this.groupList.controller.context)\n trustedApplicationsElement.setAttribute('style', style.trustedAppController)\n\n const cancelButton = widgets.cancelButton(this.groupList.controller.dom, () => this.renderCleanup())\n cancelButton.setAttribute('style', style.trustedAppCancelButton)\n trustedApplicationsElement.insertBefore(cancelButton, trustedApplicationsElement.firstChild)\n\n this.barElement.appendChild(trustedApplicationsElement)\n }\n }\n\n private async renderAppsTable (eventContext: AuthenticationContext): Promise<string> {\n await ensureLoadedProfile(eventContext)\n const trustedApps = (this.groupList.store as Store).each(eventContext.me, ns.acl('trustedApp')) as Array<NamedNode> // @@ TODO fix as\n const trustedOrigins = trustedApps.flatMap(app => (this.groupList.store as Store).each(app, ns.acl('origin'))) // @@ TODO fix as\n\n this.barElement.appendChild(this.groupList.controller.dom.createElement('p')).textContent = `You have ${trustedOrigins.length} selected web apps.`\n return new Promise((resolve, reject) => {\n const appsTable = this.barElement.appendChild(this.groupList.controller.dom.createElement('table'))\n appsTable.setAttribute('style', style.trustedAppAddApplicationsTable)\n trustedApps.forEach(app => {\n const origin = (this.groupList.store as Store).any(app, ns.acl('origin')) // @@ TODO fix as\n if (!origin) {\n reject(new Error(`Unable to pick app: ${app.value}`))\n }\n const thingTR = widgets.personTR(this.groupList.controller.dom, ns.acl('origin'), origin, {})\n const innerTable = this.groupList.controller.dom.createElement('table')\n const innerRow = innerTable.appendChild(this.groupList.controller.dom.createElement('tr'))\n\n const innerLeftColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'))\n innerLeftColumn.appendChild(thingTR)\n\n const innerMiddleColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'))\n innerMiddleColumn.textContent = `Give access to ${this.groupList.controller.noun} ${utils.label(this.groupList.controller.subject)}?`\n\n const innerRightColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'))\n innerRightColumn.appendChild(widgets.continueButton(this.groupList.controller.dom, () => resolve(origin!.value)))\n\n appsTable.appendChild(innerTable)\n })\n })\n }\n\n private renderCleanup (): void {\n this.renderBar()\n this.groupList.render()\n }\n\n private async addPerson (name?: string): Promise<void> {\n if (!name) return this.toggleBar() // user cancelled\n const domainNameRegexp = /^https?:/i\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a http URI'))\n }\n // @@ check it actually is a person and has an owner who agrees they own it\n debug.log(`Adding to ACL person: ${name}`)\n await this.groupList.addNewURI(name)\n this.toggleBar()\n }\n\n private async addGroup (name?: string): Promise<void> {\n if (!name) return this.toggleBar() // user cancelled\n\n const domainNameRegexp = /^https?:/i\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a http URI'))\n }\n // @@ check it actually is a group and has an owner who agrees they own it\n debug.log('Adding to ACL group: ' + name)\n await this.groupList.addNewURI(name)\n this.toggleBar()\n }\n\n private async addAgent (agentUri: string): Promise<void> {\n await this.groupList.addNewURI(agentUri)\n this.toggleBar()\n }\n\n private async addBot (name?: string): Promise<void> {\n if (!name) return this.toggleBar() // user cancelled\n const domainNameRegexp = /^https?:/i\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a http URI'))\n }\n // @@ check it actually is a bot and has an owner who agrees they own it\n debug.log('Adding to ACL bot: ' + name)\n await this.groupList.addNewURI(name)\n this.toggleBar()\n }\n\n private async getOriginFromName (name?: string): Promise<string | void> {\n if (!name) return Promise.resolve() // user cancelled\n const domainNameRegexp = /^([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}$/i\n // https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch08s15.html\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a domain name'))\n }\n const origin = 'https://' + name\n debug.log('Adding to ACL origin: ' + origin)\n this.toggleBar()\n return origin\n }\n\n private toggleBar (): void {\n this.isExpanded = !this.isExpanded\n }\n}\n","/**\n * Contains the [[AccessGroups]]\n * and [[AccessGroupsOptions]] classes\n * @packageDocumentation\n */\n\nimport { NamedNode, sym, Store } from 'rdflib'\nimport { ACLbyCombination, readACL } from './acl'\nimport * as widgets from '../widgets'\nimport ns from '../ns'\nimport { AccessController } from './access-controller'\nimport { AgentMapMap, ComboList, PartialAgentTriple } from './types'\nimport { AddAgentButtons } from './add-agent-buttons'\nimport * as debug from '../debug'\nimport { style } from '../style'\n\nconst ACL = ns.acl\n\nconst COLLOQUIAL = {\n 13: 'Owners',\n 9: 'Owners (write locked)',\n 5: 'Editors',\n 3: 'Posters',\n 2: 'Submitters',\n 1: 'Viewers'\n}\n\nconst RECOMMENDED = {\n 13: true,\n 5: true,\n 3: true,\n 2: true,\n 1: true\n}\n\nconst EXPLANATION = {\n 13: 'can read, write, and control sharing.',\n 9: 'can read and control sharing, currently write-locked.',\n 5: 'can read and change information',\n 3: 'can add new information, and read but not change existing information',\n 2: 'can add new information but not read any',\n 1: 'can read but not change information'\n}\n\n/**\n * Type for the options parameter of [[AccessGroups]]\n */\nexport interface AccessGroupsOptions {\n defaults?: boolean\n}\n\n/**\n * Renders the table of Owners, Editors, Posters, Submitters, Viewers\n * for https://github.com/solidos/userguide/blob/main/views/sharing/userguide.md\n */\nexport class AccessGroups {\n private readonly defaults: boolean\n public byCombo: ComboList\n public aclMap: AgentMapMap\n private readonly addAgentButton: AddAgentButtons\n private readonly rootElement: HTMLElement\n private _store: Store // @@ was LiveStore but does not need to be connected to web\n\n constructor (\n private doc: NamedNode,\n private aclDoc: NamedNode,\n public controller: AccessController,\n store: Store, // @@ was LiveStore\n private _options: AccessGroupsOptions = {}\n ) {\n this.defaults = this._options.defaults || false\n this._store = store\n this.aclMap = readACL(doc, aclDoc, store, this.defaults)\n this.byCombo = ACLbyCombination(this.aclMap)\n this.addAgentButton = new AddAgentButtons(this)\n this.rootElement = this.controller.dom.createElement('div')\n this.rootElement.setAttribute('style', style.accessGroupList)\n }\n\n public get store () {\n return this._store\n }\n\n public set store (store) {\n this._store = store\n this.aclMap = readACL(this.doc, this.aclDoc, store, this.defaults)\n this.byCombo = ACLbyCombination(this.aclMap)\n }\n\n public render (): HTMLElement {\n this.rootElement.innerHTML = ''\n this.renderGroups().forEach(group => this.rootElement.appendChild(group))\n if (this.controller.isEditable) {\n this.rootElement.appendChild(this.addAgentButton.render())\n }\n return this.rootElement\n }\n\n private renderGroups (): HTMLElement[] {\n const groupElements: HTMLElement[] = []\n for (let comboIndex = 15; comboIndex > 0; comboIndex--) {\n const combo = kToCombo(comboIndex)\n if ((this.controller.isEditable && RECOMMENDED[comboIndex]) || this.byCombo[combo]) {\n groupElements.push(this.renderGroup(comboIndex, combo))\n }\n }\n return groupElements\n }\n\n private renderGroup (comboIndex: number, combo: string): HTMLElement {\n const groupRow = this.controller.dom.createElement('div')\n groupRow.setAttribute('style', style.accessGroupListItem)\n widgets.makeDropTarget(groupRow, (uris) => this.handleDroppedUris(uris, combo)\n .then(() => this.controller.render())\n .catch(error => this.controller.renderStatus(error)))\n const groupColumns = this.renderGroupElements(comboIndex, combo)\n groupColumns.forEach(column => groupRow.appendChild(column))\n return groupRow\n }\n\n private renderGroupElements (comboIndex, combo): HTMLElement[] {\n const groupNameColumn = this.controller.dom.createElement('div')\n groupNameColumn.setAttribute('style', style.group)\n if (this.controller.isEditable) {\n switch (comboIndex) {\n case 1:\n groupNameColumn.setAttribute('style', style.group1)\n break\n case 2:\n groupNameColumn.setAttribute('style', style.group2)\n break\n case 3:\n groupNameColumn.setAttribute('style', style.group3)\n break\n case 5:\n groupNameColumn.setAttribute('style', style.group5)\n break\n case 9:\n groupNameColumn.setAttribute('style', style.group9)\n break\n case 13:\n groupNameColumn.setAttribute('style', style.group13)\n break\n default:\n groupNameColumn.setAttribute('style', style.group)\n }\n }\n groupNameColumn.innerText = COLLOQUIAL[comboIndex] || ktToList(comboIndex)\n\n const groupAgentsColumn = this.controller.dom.createElement('div')\n groupAgentsColumn.setAttribute('style', style.group)\n if (this.controller.isEditable) {\n switch (comboIndex) {\n case 1:\n groupAgentsColumn.setAttribute('style', style.group1)\n break\n case 2:\n groupAgentsColumn.setAttribute('style', style.group2)\n break\n case 3:\n groupAgentsColumn.setAttribute('style', style.group3)\n break\n case 5:\n groupAgentsColumn.setAttribute('style', style.group5)\n break\n case 9:\n groupAgentsColumn.setAttribute('style', style.group9)\n break\n case 13:\n groupAgentsColumn.setAttribute('style', style.group13)\n break\n default:\n groupAgentsColumn.setAttribute('style', style.group)\n }\n }\n const groupAgentsTable = groupAgentsColumn.appendChild(this.controller.dom.createElement('table'))\n const combos = this.byCombo[combo] || []\n combos\n .map(([pred, obj]) => this.renderAgent(groupAgentsTable, combo, pred, obj))\n .forEach(agentElement => groupAgentsTable.appendChild(agentElement))\n\n const groupDescriptionElement = this.controller.dom.createElement('div')\n groupDescriptionElement.setAttribute('style', style.group)\n if (this.controller.isEditable) {\n switch (comboIndex) {\n case 1:\n groupDescriptionElement.setAttribute('style', style.group1)\n break\n case 2:\n groupDescriptionElement.setAttribute('style', style.group2)\n break\n case 3:\n groupDescriptionElement.setAttribute('style', style.group3)\n break\n case 5:\n groupDescriptionElement.setAttribute('style', style.group5)\n break\n case 9:\n groupDescriptionElement.setAttribute('style', style.group9)\n break\n case 13:\n groupDescriptionElement.setAttribute('style', style.group13)\n break\n default:\n groupDescriptionElement.setAttribute('style', style.group)\n }\n }\n groupDescriptionElement.innerText = EXPLANATION[comboIndex] || 'Unusual combination'\n\n return [groupNameColumn, groupAgentsColumn, groupDescriptionElement]\n }\n\n private renderAgent (groupAgentsTable, combo, pred, obj): HTMLElement {\n const personRow = widgets.personTR(this.controller.dom, ACL(pred), sym(obj), this.controller.isEditable\n ? {\n deleteFunction: () => this.deleteAgent(combo, pred, obj)\n .then(() => groupAgentsTable.removeChild(personRow))\n .catch(error => this.controller.renderStatus(error))\n }\n : {})\n return personRow\n }\n\n private async deleteAgent (combo, pred, obj): Promise<void> {\n const combos = this.byCombo[combo] || []\n const comboToRemove = combos.find(([comboPred, comboObj]) => comboPred === pred && comboObj === obj)\n if (comboToRemove) {\n combos.splice(combos.indexOf(comboToRemove), 1)\n }\n await this.controller.save()\n }\n\n public async addNewURI (uri: string): Promise<void> {\n await this.handleDroppedUri(uri, kToCombo(1))\n await this.controller.save()\n }\n\n private async handleDroppedUris (uris: string[], combo: string): Promise<void> {\n try {\n await Promise.all(uris.map(uri => this.handleDroppedUri(uri, combo)))\n await this.controller.save()\n } catch (error) {\n return Promise.reject(error)\n }\n }\n\n private async handleDroppedUri (uri: string, combo: string, secondAttempt: boolean = false): Promise<void> {\n const agent = findAgent(uri, this.store) // eg 'agent', 'origin', agentClass'\n const thing = sym(uri)\n if (!agent && !secondAttempt) {\n debug.log(` Not obvious: looking up dropped thing ${thing}`)\n try {\n await this._store?.fetcher?.load(thing.doc())\n } catch (error) {\n const message = `Ignore error looking up dropped thing: ${error}`\n debug.error(message)\n return Promise.reject(new Error(message))\n }\n return this.handleDroppedUri(uri, combo, true)\n } else if (!agent) {\n const error = ` Error: Drop fails to drop appropriate thing! ${uri}`\n debug.error(error)\n return Promise.reject(new Error(error))\n }\n this.setACLCombo(combo, uri, agent, this.controller.subject)\n }\n\n private setACLCombo (combo: string, uri: string, res: PartialAgentTriple, subject: NamedNode): void {\n if (!(combo in this.byCombo)) {\n this.byCombo[combo] = []\n }\n this.removeAgentFromCombos(uri) // Combos are mutually distinct\n this.byCombo[combo].push([res.pred, res.obj.uri])\n debug.log(`ACL: setting access to ${subject} by ${res.pred}: ${res.obj}`)\n }\n\n private removeAgentFromCombos (uri: string): void {\n for (let k = 0; k < 16; k++) {\n const combos = this.byCombo[kToCombo(k)]\n if (combos) {\n for (let i = 0; i < combos.length; i++) {\n while (i < combos.length && combos[i][1] === uri) {\n combos.splice(i, 1)\n }\n }\n }\n }\n }\n}\n\nfunction kToCombo (k: number): string {\n const y = ['Read', 'Append', 'Write', 'Control']\n const combo: string[] = []\n for (let i = 0; i < 4; i++) {\n if (k & (1 << i)) {\n combo.push('http://www.w3.org/ns/auth/acl#' + y[i])\n }\n }\n combo.sort()\n return combo.join('\\n')\n}\n\nfunction ktToList (k: number): string {\n let list = ''\n const y = ['Read', 'Append', 'Write', 'Control']\n for (let i = 0; i < 4; i++) {\n if (k & (1 << i)) {\n list += y[i]\n }\n }\n return list\n}\n\nfunction findAgent (uri, kb): PartialAgentTriple | null {\n const obj = sym(uri)\n const types = kb.findTypeURIs(obj)\n for (const ty in types) {\n debug.log(' drop object type includes: ' + ty)\n }\n // An Origin URI is one like https://fred.github.io eith no trailing slash\n if (uri.startsWith('http') && uri.split('/').length === 3) {\n // there is no third slash\n return { pred: 'origin', obj } // The only way to know an origin alas\n }\n // @@ This is an almighty kludge needed because drag and drop adds extra slashes to origins\n if (\n uri.startsWith('http') &&\n uri.split('/').length === 4 &&\n uri.endsWith('/')\n ) {\n // there IS third slash\n debug.log('Assuming final slash on dragged origin URI was unintended!')\n return { pred: 'origin', obj: sym(uri.slice(0, -1)) } // Fix a URI where the drag and drop system has added a spurious slash\n }\n\n if (ns.vcard('WebID').uri in types) return { pred: 'agent', obj }\n\n if (ns.vcard('Group').uri in types) {\n return { pred: 'agentGroup', obj } // @@ note vcard membership not RDFs\n }\n if (\n obj.sameTerm(ns.foaf('Agent')) ||\n obj.sameTerm(ns.acl('AuthenticatedAgent')) || // AuthenticatedAgent\n obj.sameTerm(ns.rdf('Resource')) ||\n obj.sameTerm(ns.owl('Thing'))\n ) {\n return { pred: 'agentClass', obj }\n }\n if (\n ns.vcard('Individual').uri in types ||\n ns.foaf('Person').uri in types ||\n ns.foaf('Agent').uri in types\n ) {\n const pref = kb.any(obj, ns.foaf('preferredURI'))\n if (pref) return { pred: 'agent', obj: sym(pref) }\n return { pred: 'agent', obj }\n }\n if (ns.solid('AppProvider').uri in types) {\n return { pred: 'origin', obj }\n }\n if (ns.solid('AppProviderClass').uri in types) {\n return { pred: 'originClass', obj }\n }\n debug.log(' Triage fails for ' + uri)\n return null\n}\n","/**\n * Contains the [[AccessController]] class\n * @packageDocumentation\n */\n\nimport { adoptACLDefault, getProspectiveHolder, makeACLGraphbyCombo, sameACL } from './acl'\nimport { fetcher, graph, NamedNode, UpdateManager } from 'rdflib'\nimport { AccessGroups } from './access-groups'\nimport { DataBrowserContext } from 'pane-registry'\nimport { shortNameForFolder } from './acl-control'\nimport * as utils from '../utils'\nimport * as debug from '../debug'\nimport { style } from '../style'\n\n/**\n * Rendered HTML component used in the databrowser's Sharing pane.\n */\nexport class AccessController {\n public mainCombo: AccessGroups\n public defaultsCombo: AccessGroups | null\n private readonly isContainer: boolean\n private defaultsDiffer: boolean\n private readonly rootElement: HTMLDivElement\n private isUsingDefaults: boolean\n\n constructor (\n public subject: NamedNode,\n public noun: string,\n public context: DataBrowserContext,\n private statusElement: HTMLElement,\n public targetIsProtected: boolean,\n private targetDoc: NamedNode,\n private targetACLDoc: NamedNode,\n private defaultHolder: NamedNode | null,\n private defaultACLDoc: NamedNode | null,\n private prospectiveDefaultHolder: NamedNode | undefined,\n public store,\n public dom: HTMLDocument\n ) {\n this.rootElement = dom.createElement('div')\n this.rootElement.setAttribute('style', style.aclGroupContent)\n this.isContainer = targetDoc.uri.slice(-1) === '/' // Give default for all directories\n if (defaultHolder && defaultACLDoc) {\n this.isUsingDefaults = true\n const aclDefaultStore = adoptACLDefault(this.targetDoc, targetACLDoc, defaultHolder, defaultACLDoc)\n this.mainCombo = new AccessGroups(targetDoc, targetACLDoc, this, aclDefaultStore, { defaults: this.isContainer })\n this.defaultsCombo = null\n this.defaultsDiffer = false\n } else {\n this.isUsingDefaults = false\n this.mainCombo = new AccessGroups(targetDoc, targetACLDoc, this, store)\n this.defaultsCombo = new AccessGroups(targetDoc, targetACLDoc, this, store, { defaults: this.isContainer })\n this.defaultsDiffer = !sameACL(this.mainCombo.aclMap, this.defaultsCombo.aclMap)\n }\n }\n\n public get isEditable (): boolean {\n return !this.isUsingDefaults\n }\n\n public render (): HTMLElement {\n this.rootElement.innerHTML = ''\n if (this.isUsingDefaults) {\n this.renderStatus(`The sharing for this ${this.noun} is the default for folder `)\n if (this.defaultHolder) {\n const defaultHolderLink = this.statusElement.appendChild(this.dom.createElement('a'))\n defaultHolderLink.href = this.defaultHolder.uri\n defaultHolderLink.innerText = shortNameForFolder(this.defaultHolder)\n }\n } else if (!this.defaultsDiffer && this.isContainer) {\n this.renderStatus('This is also the default for things in this folder.')\n } else {\n this.renderStatus('')\n }\n this.rootElement.appendChild(this.mainCombo.render())\n if (this.defaultsCombo && this.defaultsDiffer) {\n this.rootElement.appendChild(this.renderRemoveDefaultsController())\n this.rootElement.appendChild(this.defaultsCombo.render())\n } else if (this.isEditable && this.isContainer) {\n this.rootElement.appendChild(this.renderAddDefaultsController())\n }\n if (!this.targetIsProtected && this.isUsingDefaults) {\n this.rootElement.appendChild(this.renderAddAclsController())\n } else if (!this.targetIsProtected) {\n this.rootElement.appendChild(this.renderRemoveAclsController())\n }\n return this.rootElement\n }\n\n private renderRemoveAclsController (): HTMLElement {\n const useDefaultButton = this.dom.createElement('button')\n useDefaultButton.innerText = `Remove custom sharing settings for this ${this.noun} -- just use default${this.prospectiveDefaultHolder ? ` for ${utils.label(this.prospectiveDefaultHolder)}` : ''}`\n useDefaultButton.setAttribute('style', style.bigButton)\n useDefaultButton.addEventListener('click', () => this.removeAcls()\n .then(() => this.render())\n .catch(error => this.renderStatus(error)))\n return useDefaultButton\n }\n\n private renderAddAclsController (): HTMLElement {\n const addAclButton = this.dom.createElement('button')\n addAclButton.innerText = `Set specific sharing for this ${this.noun}`\n addAclButton.setAttribute('style', style.bigButton)\n addAclButton.addEventListener('click', () => this.addAcls()\n .then(() => this.render())\n .catch(error => this.renderStatus(error)))\n return addAclButton\n }\n\n private renderAddDefaultsController (): HTMLElement {\n const containerElement = this.dom.createElement('div')\n containerElement.setAttribute('style', style.defaultsController)\n\n const noticeElement = containerElement.appendChild(this.dom.createElement('div'))\n noticeElement.innerText = 'Sharing for things within the folder currently tracks sharing for the folder.'\n noticeElement.setAttribute('style', style.defaultsControllerNotice)\n\n const button = containerElement.appendChild(this.dom.createElement('button'))\n button.innerText = 'Set the sharing of folder contents separately from the sharing for the folder'\n button.setAttribute('style', style.bigButton)\n button.addEventListener('click', () => this.addDefaults()\n .then(() => this.render()))\n return containerElement\n }\n\n private renderRemoveDefaultsController (): HTMLElement {\n const containerElement = this.dom.createElement('div')\n containerElement.setAttribute('style', style.defaultsController)\n\n const noticeElement = containerElement.appendChild(this.dom.createElement('div'))\n noticeElement.innerText = 'Access to things within this folder:'\n noticeElement.setAttribute('style', style.defaultsControllerNotice)\n\n const button = containerElement.appendChild(this.dom.createElement('button'))\n button.innerText = 'Set default for folder contents to just track the sharing for the folder'\n button.setAttribute('style', style.bigButton)\n button.addEventListener('click', () => this.removeDefaults()\n .then(() => this.render())\n .catch(error => this.renderStatus(error)))\n return containerElement\n }\n\n public renderTemporaryStatus (message: string): void {\n // @@ TODO Introduce better system for error notification to user https://github.com/solidos/mashlib/issues/87\n this.statusElement.setAttribute('style', style.aclControlBoxStatusRevealed)\n this.statusElement.innerText = message\n this.statusElement.setAttribute('style', style.temporaryStatusInit)\n setTimeout(() => {\n this.statusElement.setAttribute('style', style.temporaryStatusEnd)\n })\n setTimeout(() => {\n this.statusElement.innerText = ''\n }, 5000)\n }\n\n public renderStatus (message: string): void {\n // @@ TODO Introduce better system for error notification to user https://github.com/solidos/mashlib/issues/87\n if (!message) {\n this.statusElement.setAttribute('style', style.aclControlBoxStatusRevealed)\n }\n this.statusElement.innerText = message\n }\n\n private async addAcls (): Promise<void> {\n if (!this.defaultHolder || !this.defaultACLDoc) {\n const message = 'Unable to find defaults to copy'\n debug.error(message)\n return Promise.reject(message)\n }\n const aclGraph = adoptACLDefault(this.targetDoc, this.targetACLDoc, this.defaultHolder, this.defaultACLDoc)\n aclGraph.statements.forEach(st => this.store.add(st.subject, st.predicate, st.object, this.targetACLDoc))\n try {\n await this.store.fetcher.putBack(this.targetACLDoc)\n this.isUsingDefaults = false\n return Promise.resolve()\n } catch (error) {\n const message = ` Error writing back access control file! ${error}`\n debug.error(message)\n return Promise.reject(message)\n }\n }\n\n private async addDefaults (): Promise<void> {\n this.defaultsCombo = new AccessGroups(this.targetDoc, this.targetACLDoc, this, this.store, { defaults: true })\n this.defaultsDiffer = true\n }\n\n private async removeAcls (): Promise<void> {\n try {\n await this.store.fetcher.delete(this.targetACLDoc.uri, {})\n this.isUsingDefaults = true\n try {\n this.prospectiveDefaultHolder = await getProspectiveHolder(this.targetDoc.uri)\n } catch (error) {\n // No need to show this error in status, but good to warn about it in console\n debug.warn(error)\n }\n } catch (error) {\n const message = `Error deleting access control file: ${this.targetACLDoc}: ${error}`\n debug.error(message)\n return Promise.reject(message)\n }\n }\n\n private async removeDefaults (): Promise<void> {\n const fallbackCombo = this.defaultsCombo\n try {\n this.defaultsCombo = null\n this.defaultsDiffer = false\n await this.save()\n } catch (error) {\n this.defaultsCombo = fallbackCombo\n this.defaultsDiffer = true\n debug.error(error)\n return Promise.reject(error)\n }\n }\n\n public save (): Promise<void> {\n // build graph\n const newAClGraph = graph()\n if (!this.isContainer) {\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.mainCombo.byCombo, this.targetACLDoc, true)\n } else if (this.defaultsCombo && this.defaultsDiffer) {\n // Pair of controls\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.mainCombo.byCombo, this.targetACLDoc, true)\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.defaultsCombo.byCombo, this.targetACLDoc, false, true)\n } else {\n // Linked controls\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.mainCombo.byCombo, this.targetACLDoc, true, true)\n }\n\n // add authenticated fetcher\n newAClGraph.fetcher = fetcher(newAClGraph, { fetch: this.store.fetcher._fetch })\n const updater = newAClGraph.updater || new UpdateManager(newAClGraph)\n\n // save ACL resource\n return new Promise((resolve, reject) => {\n updater.put(\n this.targetACLDoc,\n newAClGraph.statementsMatching(undefined, undefined, undefined, this.targetACLDoc),\n 'text/turtle',\n (uri, ok, message) => {\n if (!ok) {\n return reject(new Error(`ACL file save failed: ${message}`))\n }\n this.store.fetcher.unload(this.targetACLDoc)\n this.store.add(newAClGraph.statements)\n this.store.fetcher.requested[this.targetACLDoc.uri] = 'done' // missing: save headers\n this.mainCombo.store = this.store\n if (this.defaultsCombo) {\n this.defaultsCombo.store = this.store\n }\n this.defaultsDiffer = !!this.defaultsCombo && !sameACL(this.mainCombo.aclMap, this.defaultsCombo.aclMap)\n debug.log('ACL modification: success!')\n resolve()\n }\n )\n })\n }\n}\n","/**\n * Functions for rendering the ACL User Interface.\n * See https://github.com/solidos/userguide/blob/main/views/sharing/userguide.md#view\n * for a screenshot.\n * @packageDocumentation\n */\n\nimport ns from '../ns'\nimport * as utils from '../utils'\nimport { getACLorDefault, getProspectiveHolder } from './acl'\nimport { Store, NamedNode } from 'rdflib'\nimport { DataBrowserContext } from 'pane-registry'\nimport { AccessController } from './access-controller'\nimport { style } from '../style'\nimport { log, warn } from '../debug'\n\nlet global: Window = window\nconst preventBrowserDropEventsDone = Symbol('prevent double triggering of drop event')\n\n/**\n * See https://coshx.com/preventing-drag-and-drop-disasters-with-a-chrome-userscript\n * Without this dropping anything onto a browser page will cause chrome etc to jump to diff page\n * throwing away all the user's work.\n *\n * In apps which may use drag and drop, this utility takes care of the fact\n * by default in a browser, an uncaught user drop into a browser window\n * causes the browser to lose all its work in that window and navigate to another page\n *\n * @param document The DOM\n * @returns void\n */\nexport function preventBrowserDropEvents (document: HTMLDocument): void {\n log('preventBrowserDropEvents called.')\n if (typeof global !== 'undefined') {\n if (global[preventBrowserDropEventsDone]) return\n global[preventBrowserDropEventsDone] = true\n }\n\n document.addEventListener('drop', handleDrop, false)\n document.addEventListener('dragenter', preventDrag, false)\n document.addEventListener('dragover', preventDrag, false)\n}\n\n/** @internal */\nexport function preventDrag (e) {\n e.stopPropagation()\n e.preventDefault()\n}\n\n/** @internal */\nexport function handleDrop (e) {\n if (e.dataTransfer.files.length > 0) {\n if (\n !global.confirm('Are you sure you want to drop this file here? (Cancel opens it in a new tab)')\n ) {\n e.stopPropagation()\n e.preventDefault()\n log('@@@@ document-level DROP suppressed: ' + e.dataTransfer.dropEffect\n )\n }\n }\n}\n\n/**\n * Get a folder's own filename in the directory tree. Also works for\n * domain names; the URL protocol ('https://') acts as the tree root\n * with short name '/' (see also test/unit/acl/acl-control.test.ts).\n *\n * ```typescript\n * shortNameForFolder($rdf.namedNode('http://example.com/some/folder/'))\n * // 'folder'\n *\n * shortNameForFolder($rdf.namedNode('http://example.com/some/folder'))\n * // 'folder'\n *\n * shortNameForFolder($rdf.namedNode('http://example.com/'))\n * // 'example.com'\n *\n * shortNameForFolder($rdf.namedNode('http://example.com'))\n * // 'example.com'\n *\n * shortNameForFolder($rdf.namedNode('http://'))\n * // '/'\n * ```\n *\n * It also works with relative URLs:\n * ```typescript\n * shortNameForFolder($rdf.namedNode('../folder/'))\n * // 'folder'\n * ```\n *\n * @param x RDF Node for the folder URL\n * @returns Short name for the folder\n */\nexport function shortNameForFolder (x: NamedNode): string {\n let str = x.uri\n\n // Strip the trailing slash\n if (str.slice(-1) === '/') {\n str = str.slice(0, -1)\n }\n\n // Remove the path if present, keeping only the part\n // after the last slash.\n const slash = str.lastIndexOf('/')\n if (slash >= 0) {\n str = str.slice(slash + 1)\n }\n // Return the folder's filename, or '/' if nothing found\n // (but see https://github.com/solidos/solid-ui/issues/196\n // regarding whether this happens at the domain root or\n // not)\n return str || '/'\n}\n\n/**\n * A wrapper that retrieves ACL data and uses it\n * to render an [[AccessController]] component.\n * Presumably the '5' is a version number of some sort,\n * but all we know is it was already called ACLControlBox5\n * when it was introduced into solid-ui in\n * https://github.com/solidos/solid-ui/commit/948b874bd93e7bf5160e6e224821b888f07d15f3#diff-4192a29f38a0ababd563b36b47eba5bbR54\n */\nexport function ACLControlBox5 (\n subject: NamedNode,\n context: DataBrowserContext,\n noun: string,\n kb: Store\n): HTMLElement {\n const dom = context.dom\n const doc = subject.doc() // The ACL is actually to the doc describing the thing\n\n const container = dom.createElement('div')\n container.setAttribute('style', style.aclControlBoxContainer)\n\n const header = container.appendChild(dom.createElement('h1'))\n header.textContent = `Sharing for ${noun} ${utils.label(subject)}`\n header.setAttribute('style', style.aclControlBoxHeader)\n\n const status = container.appendChild(dom.createElement('div'))\n status.setAttribute('style', style.aclControlBoxStatus)\n\n try {\n loadController(doc, kb, subject, noun, context, dom, status)\n .then(controller => container.appendChild(controller.render()))\n } catch (error) {\n status.innerText = error\n }\n\n return container\n}\n\nasync function loadController (\n doc: NamedNode,\n kb: Store,\n subject: NamedNode,\n noun: string,\n context: DataBrowserContext,\n dom: HTMLDocument,\n status: HTMLElement\n): Promise<AccessController> {\n return new Promise((resolve, reject) => getACLorDefault(doc, async (\n ok,\n isDirectACL,\n targetDoc,\n targetACLDoc,\n defaultHolder,\n defaultACLDoc\n ) => {\n if (!ok) {\n return reject(new Error(`Error reading ${isDirectACL ? '' : ' default '}ACL. status ${targetDoc}: ${targetACLDoc}`))\n }\n const targetDirectory = getDirectory(targetDoc as NamedNode)\n const targetIsProtected = isStorage(targetDoc as NamedNode, targetACLDoc as NamedNode, kb) || hasProtectedAcl(targetDoc as NamedNode)\n if (!targetIsProtected && targetDirectory) {\n try {\n const prospectiveDefaultHolder = await getProspectiveHolder(targetDirectory)\n return resolve(getController(prospectiveDefaultHolder))\n } catch (error) {\n // No need to show this error in status, but good to warn about it in console\n warn(error)\n }\n }\n return resolve(getController())\n\n function getController (prospectiveDefaultHolder?: NamedNode) {\n return new AccessController(subject, noun, context, status, targetIsProtected, targetDoc as NamedNode, targetACLDoc as NamedNode, defaultHolder as NamedNode,\n defaultACLDoc as NamedNode, prospectiveDefaultHolder, kb, dom as HTMLDocument)\n }\n }))\n}\n\nfunction getDirectory (doc: NamedNode): string | null {\n const str = doc.uri.split('#')[0]\n const p = str.slice(0, -1).lastIndexOf('/')\n const q = str.indexOf('//')\n return (q >= 0 && p < q + 2) || p < 0 ? null : str.slice(0, p + 1)\n}\n\nfunction isStorage (doc: NamedNode, aclDoc: NamedNode, store: Store): boolean {\n // @@ TODO: The methods used for targetIsStorage are HACKs - it should not be relied upon, and work is\n // @@ underway to standardize a behavior that does not rely upon this hack\n // @@ hopefully fixed as part of https://github.com/solidos/data-interoperability-panel/issues/10\n return store.holds(doc, ns.rdf('type'), ns.space('Storage'), aclDoc)\n}\n\nfunction hasProtectedAcl (targetDoc: NamedNode): boolean {\n // @@ TODO: This is hacky way of knowing whether or not a certain ACL file can be removed\n // Hopefully we'll find a better, standardized solution to this - https://github.com/solidos/specification/issues/37\n return targetDoc.uri === targetDoc.site().uri\n}\n\n/** @internal */\nexport function setGlobalWindow (window: Window) {\n global = window\n}\n","/**\n * Re-exports all the exports from the various files in the src/acl/ folder\n * @packageDocumentation\n */\n\nimport {\n ACLbyCombination,\n ACLToString,\n ACLunion,\n adoptACLDefault,\n comboToString,\n fixIndividualACL,\n fixIndividualCardACL,\n getACL,\n getACLorDefault,\n loadUnionACL,\n makeACLGraph,\n makeACLGraphbyCombo,\n makeACLString,\n putACLbyCombo,\n putACLObject,\n readACL,\n sameACL,\n setACL\n} from './acl'\nimport {\n ACLControlBox5,\n preventBrowserDropEvents,\n shortNameForFolder\n} from './acl-control'\n\nexport const acl = {\n adoptACLDefault,\n readACL,\n sameACL,\n ACLunion,\n loadUnionACL,\n ACLbyCombination,\n makeACLGraph,\n makeACLGraphbyCombo,\n ACLToString,\n comboToString,\n makeACLString,\n putACLObject,\n putACLbyCombo,\n fixIndividualCardACL,\n fixIndividualACL,\n setACL,\n getACLorDefault,\n getACL\n}\n\nexport const aclControl = {\n preventBrowserDropEvents,\n shortNameForFolder,\n ACLControlBox5\n}\n","/* create.js UI to craete new objects in the solid-app-set world\n **\n */\n\nimport { DataBrowserContext, NewPaneOptions, PaneDefinition } from 'pane-registry'\nimport { solidLogicSingleton } from 'solid-logic'\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\nimport { ensureLoadedProfile, selectWorkspace } from '../login/login'\nimport ns from '../ns'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { CreateContext, NewAppInstanceOptions } from './types'\n\nconst kb = solidLogicSingleton.store\n\n/* newThingUI -- return UI for user to select a new object, folder, etc\n **\n ** context must include: dom, div,\n ** optional: folder: NamedNode -- the folder where the thing is bring put\n ** (suppresses asking for a full URI or workspace)\n **\n */\nexport function newThingUI (\n createContext: CreateContext,\n dataBrowserContext: DataBrowserContext,\n thePanes: Array<PaneDefinition>\n): void {\n const dom = createContext.dom\n const div = createContext.div\n if (createContext.me && !createContext.me.uri) {\n throw new Error('newThingUI: Invalid userid: ' + createContext.me)\n }\n\n const iconStyle = 'padding: 0.7em; width: 2em; height: 2em;' // was: 'padding: 1em; width: 3em; height: 3em;'\n const star = div.appendChild(dom.createElement('img'))\n let visible = false // the inividual tools tools\n // noun_272948.svg = black star\n // noun_34653_green.svg = green plus\n star.setAttribute('src', icons.iconBase + 'noun_34653_green.svg')\n star.setAttribute('style', iconStyle)\n star.setAttribute('title', 'Add another tool')\n\n const complain = function complain (message) {\n const pre = div.appendChild(dom.createElement('pre'))\n pre.setAttribute('style', 'background-color: pink')\n pre.appendChild(dom.createTextNode(message))\n }\n\n function styleTheIcons (style) {\n for (let i = 0; i < iconArray.length; i++) {\n let st = iconStyle + style\n if (iconArray[i].disabled) {\n // @@ unused\n st += 'opacity: 0.3;'\n }\n iconArray[i].setAttribute('style', st) // eg 'background-color: #ccc;'\n }\n }\n\n function selectTool (icon) {\n styleTheIcons('display: none;') // 'background-color: #ccc;'\n icon.setAttribute('style', iconStyle + 'background-color: yellow;')\n }\n\n function selectNewTool (_event?) {\n visible = !visible\n star.setAttribute(\n 'style',\n iconStyle + (visible ? 'background-color: yellow;' : '')\n )\n styleTheIcons(visible ? '' : 'display: none;')\n }\n\n star.addEventListener('click', selectNewTool)\n\n function makeNewAppInstance (options: NewAppInstanceOptions) {\n return new Promise(function (resolve, reject) {\n let selectUI // , selectUIParent\n function callbackWS (ws, newBase) {\n ensureLoadedProfile(createContext).then(\n _context => {\n const newPaneOptions: NewPaneOptions = Object.assign({\n newBase,\n folder: options.folder || undefined,\n workspace: ws\n }, options)\n for (const opt in options) {\n // get div, dom, me, folder, pane, refreshTable\n newPaneOptions[opt] = options[opt]\n }\n debug.log(`newThingUI: Minting new ${newPaneOptions.pane.name} at ${newPaneOptions.newBase}`)\n options.pane\n .mintNew!(dataBrowserContext, newPaneOptions)\n .then(function (newPaneOptions) {\n if (!newPaneOptions || !newPaneOptions.newInstance) {\n throw new Error('Cannot mint new - missing newInstance')\n }\n if (newPaneOptions.folder) {\n const tail = newPaneOptions.newInstance.uri.slice(\n newPaneOptions.folder.uri.length\n )\n const isPackage = tail.includes('/')\n debug.log(' new thing is packge? ' + isPackage)\n if (isPackage) {\n kb.add(\n newPaneOptions.folder,\n ns.ldp('contains'),\n kb.sym(newPaneOptions.newBase),\n newPaneOptions.folder.doc()\n )\n } else {\n // single file\n kb.add(\n newPaneOptions.folder,\n ns.ldp('contains'),\n newPaneOptions.newInstance,\n newPaneOptions.folder.doc()\n ) // Ping the patch system?\n }\n // @ts-ignore @@ TODO check whether refresh can exist here. Either fix type or remove unreachable code\n if (newPaneOptions.refreshTarget && newPaneOptions.refreshTarget.refresh) {\n // @@ TODO Remove the need to cast as any\n ;(newPaneOptions.refreshTarget as any).refresh() // Refresh the containing display\n }\n // selectUI.parentNode.removeChild(selectUI) It removes itself\n } else {\n const p = options.div.appendChild(dom.createElement('p'))\n p.setAttribute('style', 'font-size: 120%;')\n // Make link to new thing\n p.innerHTML =\n 'Your <a target=\\'_blank\\' href=\\'' +\n newPaneOptions.newInstance.uri +\n '\\'><b>new ' +\n options.noun +\n '</b></a> is ready to be set up. ' +\n '<br/><br/><a target=\\'_blank\\' href=\\'' +\n newPaneOptions.newInstance.uri +\n '\\'>Go to your new ' +\n options.noun +\n '.</a>'\n // selectUI.parentNode.removeChild(selectUI) // Clean up\n // selectUIParent.removeChild(selectUI) // Clean up\n }\n selectNewTool() // toggle star to plain and menu vanish again\n })\n .catch(function (err) {\n complain(err)\n reject(err)\n })\n },\n err => {\n // login fails\n complain('Error logging on: ' + err)\n }\n )\n } // callbackWS\n\n const pa = options.pane\n // options.appPathSegment = pa.name // was 'edu.mit.solid.pane.'\n options.noun = pa.mintClass ? utils.label(pa.mintClass) : pa.name\n options.appPathSegment = options.noun.slice(0, 1).toUpperCase() + options.noun.slice(1)\n\n if (!options.folder) {\n // No folder given? Ask user for full URI\n selectUI = selectWorkspace(dom, {\n noun: options.noun,\n appPathSegment: options.appPathSegment\n }, callbackWS)\n options.div.appendChild(selectUI)\n // selectUIParent = options.div\n } else {\n const gotName = function (name) {\n if (!name) {\n // selectUIParent.removeChild(selectUI) itremves itself if cancelled\n selectNewTool() // toggle star to plain and menu vanish again\n } else {\n let uri = options.folder!.uri\n if (!uri.endsWith('/')) {\n uri = uri + '/'\n }\n uri = uri + encodeURIComponent(name) + '/'\n callbackWS(null, uri)\n }\n }\n widgets\n .askName(\n dom,\n kb,\n options.div,\n ns.foaf('name'),\n null,\n options.noun\n )\n .then(gotName)\n // selectUI = getNameForm(dom, kb, options.noun, gotName)\n // options.div.appendChild(selectUI)\n // selectUIParent = options.div\n }\n })\n } // makeNewAppInstance\n\n const iconArray: Array<any> = []\n const mintingPanes = Object.values(thePanes).filter(pane => pane.mintNew)\n const mintingClassMap = mintingPanes.reduce((classMap, pane) => {\n if (pane.mintClass) {\n classMap[pane.mintClass.uri] = (classMap[pane.mintClass.uri] || 0) + 1\n }\n return classMap\n }, {})\n mintingPanes.forEach(pane => {\n // @@ TODO Remove the need to cast to any\n const icon: any = createContext.div.appendChild(dom.createElement('img'))\n icon.setAttribute('src', pane.icon)\n const noun = pane.mintClass\n ? mintingClassMap[pane.mintClass.uri] > 1\n ? `${utils.label(pane.mintClass)} (using ${pane.name} pane)`\n : utils.label(pane.mintClass)\n : pane.name + ' @@'\n icon.setAttribute('title', 'Make new ' + noun)\n icon.setAttribute('style', iconStyle + 'display: none;')\n iconArray.push(icon)\n if (!icon.disabled) {\n icon.addEventListener('click', function (e) {\n selectTool(icon)\n makeNewAppInstance({\n event: e,\n folder: createContext.folder || null,\n iconEle: icon,\n pane,\n noun,\n noIndexHTML: true, // do NOT @@ for now write a HTML file\n div: createContext.div,\n me: createContext.me,\n dom: createContext.dom,\n refreshTarget: createContext.refreshTarget\n })\n })\n }\n })\n}\n\n// Form to get the name of a new thing before we create it\n//\n// Used in contacts for new groups, individuals.\n//\n/*\nfunction getNameForm (dom, kb, classLabel, gotNameCallback) {\n const form = dom.createElement('div') // form is broken as HTML behaviour can resurface on js error\n form.innerHTML = '<p>Name of new ' + classLabel + ':</p>'\n const namefield = dom.createElement('input')\n namefield.setAttribute('type', 'text')\n namefield.setAttribute('size', '30')\n namefield.setAttribute('style', style.textInputStyle)\n namefield.setAttribute('maxLength', '2048') // No arbitrary limits\n namefield.select() // focus next user input\n\n const gotName = function () {\n namefield.setAttribute('class', 'pendingedit')\n namefield.disabled = true\n continueButton.disabled = true\n cancel.disabled = true\n gotNameCallback(true, namefield.value)\n }\n\n namefield.addEventListener('keyup', function (e) {\n if (e.keyCode === 13) {\n gotName()\n }\n }, false)\n form.appendChild(namefield)\n\n form.appendChild(dom.createElement('br'))\n\n const cancel = form.appendChild(widgets.cancelButton(dom))\n cancel.addEventListener('click', function (e) {\n form.parentNode.removeChild(form)\n gotNameCallback(false)\n }, false)\n\n const continueButton = form.appendChild(widgets.continueButton(dom))\n continueButton.addEventListener('click', function (e) {\n gotName()\n }, false)\n\n return form\n}\n*/\n","import {\n newThingUI\n} from './create'\n\nexport const create = {\n newThingUI\n}\n","// Build a 2D matrix of values\n//\n// dom AKA document\n// query a Query object of rdflib.js with a valid pattern\n// vx A variable object, the one to be used for the X variable (horiz)\n// vy A variable object, the one to be used for the Y variable (vertical)\n// vvalue A variable object, the one to be used for the cell value\n// returns A DOM element with the matrix in it, which has a .refresh() function.\n//\n// Options:\n// cellFunction(td, x, y, value) fill the TD element of a single cell\n// xDecreasing set true for x axis to be in decreasing order.\n// yDecreasing set true for y axis to be in decreasing order.\n// set_x array of X values to be define initial rows (order irrelevant)\n// set_y array of Y values to be define initial columns\n//\n// Features:\n// Header row at top (x axis) and left (y-axis) generated automatically.\n// Extra rows and columns are inserted as needed to hold new data points\n// matrix.refresh() will re-run the query and adjust the display\n\nimport * as utils from '../utils'\nimport * as $rdf from 'rdflib'\nimport { MatrixOptions } from './types'\nimport { solidLogicSingleton } from 'solid-logic'\n\nconst kb = solidLogicSingleton.store\n\nexport function matrixForQuery (\n dom: HTMLDocument,\n query: $rdf.Query,\n vx: $rdf.Variable,\n vy: $rdf.Variable,\n vvalue: $rdf.Variable,\n options: MatrixOptions,\n whenDone: () => void\n) {\n // @@ TODO Remove need to cast to any\n const matrix: any = dom.createElement('table')\n const header = dom.createElement('tr')\n const corner = header.appendChild(dom.createElement('td'))\n corner.setAttribute('class', 'MatrixCorner')\n matrix.appendChild(header) // just one for now\n matrix.lastHeader = header // Element before data\n let columns: any[] = [] // Vector\n const rows: any[] = [] // Associative array\n\n const setCell = function (cell, x, y, value) {\n while (cell.firstChild) {\n // Empty any previous\n cell.removeChild(cell.firstChild)\n }\n cell.setAttribute('style', '')\n cell.style.textAlign = 'center'\n\n if (options.cellFunction) {\n options.cellFunction(cell, x, y, value)\n } else {\n cell.textContent = utils.label(value)\n cell.setAttribute('style', 'padding: 0.3em')\n }\n delete cell.old\n }\n\n const rowFor = function (y1) {\n const y = y1.toNT()\n if (rows[y]) return rows[y]\n // @@ TODO Remove need for casting to any\n const tr: any = dom.createElement('tr')\n const header = tr.appendChild(dom.createElement('td'))\n header.setAttribute('style', 'padding: 0.3em;')\n header.textContent = utils.label(y1) // first approximation\n if (y1.termType === 'NamedNode') {\n kb.fetcher!.nowOrWhenFetched(y1.uri.split('#')[0], undefined, function (\n ok,\n _body,\n _response\n ) {\n if (ok) header.textContent = utils.label(y1)\n })\n }\n for (let i = 0; i < columns.length; i++) {\n setCell(\n tr.appendChild(dom.createElement('td')),\n $rdf.fromNT(columns[i]),\n y1,\n null\n )\n }\n tr.dataValueNT = y\n rows[y] = tr\n for (let ele = matrix.lastHeader.nextSibling; ele; ele = ele.nextSibling) {\n // skip header\n if (\n (y > ele.dataValueNT && options && options.yDecreasing) ||\n (y < ele.dataValueNT && !(options && options.yDecreasing))\n ) {\n return matrix.insertBefore(tr, ele) // return the tr\n }\n }\n return matrix.appendChild(tr) // return the tr\n }\n\n const columnNumberFor = function (x1): number {\n const xNT: any = x1.toNT() // xNT is a NT string\n let col: any = null\n // These are data columns (not headings)\n for (let i = 0; i < columns.length; i++) {\n if (columns[i] === xNT) {\n return i\n }\n\n if (\n (xNT > columns[i] && options.xDecreasing) ||\n (xNT < columns[i] && !options.xDecreasing)\n ) {\n columns = columns\n .slice(0, i)\n .concat([xNT])\n .concat(columns.slice(i))\n col = i\n break\n }\n }\n\n if (col === null) {\n col = columns.length\n columns.push(xNT)\n }\n\n // col is the number of the new column, starting from 0\n for (let row = matrix.firstChild; row; row = row.nextSibling) {\n // For every row header or not\n const y = row.dataValueNT\n const td = dom.createElement('td') // Add a new cell\n td.style.textAlign = 'center'\n if (row === matrix.firstChild) {\n td.textContent = utils.label(x1)\n } else {\n setCell(td, x1, $rdf.fromNT(y), null)\n }\n if (col === columns.length - 1) {\n row.appendChild(td)\n } else {\n let t = row.firstChild\n for (let j = 0; j < col + 1; j++) {\n // Skip header col too\n t = t.nextSibling\n }\n row.insertBefore(td, t)\n }\n }\n return col\n }\n\n const markOldCells = function () {\n for (let i = 1; i < matrix.children.length; i++) {\n const row = matrix.children[i]\n for (let j = 1; j < row.children.length; j++) {\n row.children[j].old = true\n }\n }\n }\n\n const clearOldCells = function () {\n let row, cell\n const colsUsed: any[] = []\n const rowsUsed: any[] = []\n\n if (options.set_y) {\n // Knows y values create rows\n for (let k = 0; k < options.set_y.length; k++) {\n rowsUsed[options.set_y[k]] = true\n }\n }\n if (options.set_x) {\n for (let k = 0; k < options.set_x.length; k++) {\n colsUsed[columnNumberFor(options.set_x[k]) + 1] = true\n }\n }\n\n for (let i = 1; i < matrix.children.length; i++) {\n row = matrix.children[i]\n for (let j = 1; j < row.children.length; j++) {\n cell = row.children[j]\n if (cell.old) {\n const y = $rdf.fromNT(row.dataValueNT)\n const x = $rdf.fromNT(columns[j - 1])\n setCell(cell, x, y, null)\n } else {\n rowsUsed[row.dataValueNT] = true\n colsUsed[j] = true\n }\n }\n }\n\n for (let i = 0; i < matrix.children.length; i++) {\n row = matrix.children[i]\n if (i > 0 && !rowsUsed[row.dataValueNT]) {\n delete rows[row.dataValueNT]\n matrix.removeChild(row)\n } else {\n for (let j = row.children.length - 1; j > 0; j--) {\n // backwards\n const cell = row.children[j]\n if (!colsUsed[j]) {\n row.removeChild(cell)\n }\n }\n }\n }\n const newcolumns: any[] = []\n for (let j = 0; j < columns.length; j++) {\n if (colsUsed[j + 1]) {\n newcolumns.push(columns[j])\n }\n }\n columns = newcolumns\n }\n\n matrix.refresh = function () {\n markOldCells()\n kb.query(query, addCellFromBindings, undefined, clearOldCells)\n }\n\n const addCellFromBindings = function (bindings) {\n const x = bindings[vx.toString()]\n const y = bindings[vy.toString()]\n const value = bindings[(vvalue.toString())]\n const row = rowFor(y)\n const colNo = columnNumberFor(x)\n const cell = row.children[colNo + 1] // number of Y axis headings\n setCell(cell, x, y, value)\n }\n\n if (options.set_y) {\n // Knows y values create rows\n for (let k = 0; k < options.set_y.length; k++) {\n rowFor(options.set_y[k])\n }\n }\n if (options.set_x) {\n for (let k = 0; k < options.set_x.length; k++) {\n columnNumberFor(options.set_x[k])\n }\n }\n\n kb.query(query, addCellFromBindings, undefined, whenDone) // Populate the matrix\n return matrix\n}\n","import {\n matrixForQuery\n} from './matrix'\n\nexport const matrix = {\n matrixForQuery\n}\n","//\n// Media input widget\n//\n//\n// Workflow:\n// The HTML5 functionality (on mobile) is to prompt for either\n// a realtime camera capture, OR a selection from images already on the device\n// (eg camera roll).\n//\n// The solid alternative is to either take a photo\n// or access camera roll (etc) OR to access solid cloud storage of favorite photo albums.\n// (Especially latest taken ones)\n//\nimport * as debug from '../debug'\n\n/** @module mediaCapture */\n\nimport { icons } from '../iconBase'\nimport { style } from '../style'\nimport * as widgets from '../widgets'\nimport { IndexedFormula, NamedNode } from 'rdflib'\n\nconst cameraIcon = icons.iconBase + 'noun_Camera_1618446_000000.svg' // Get it from github\nconst retakeIcon = icons.iconBase + 'noun_479395.svg' // Get it from github\n\nconst contentType = 'image/png'\n\n/** A control to capture a picture using camera\n * @param {Docuemnt} dom - The Document object\n * @param {IndexedForumla} store - The quadstore to store data in\n * @param {NamedNode} getImageDoc() - NN of the image file to be created\n * @param {function} doneCallback - Called when a picture has been taken\n */\nexport function cameraCaptureControl (\n dom: HTMLDocument,\n store: IndexedFormula,\n getImageDoc: () => NamedNode,\n doneCallback: (imageDoc) => Promise<void>\n) {\n const div = dom.createElement('div')\n let destination, imageBlob, player, canvas\n\n const table = div.appendChild(dom.createElement('table'))\n const mainTR = table.appendChild(dom.createElement('tr'))\n const main = mainTR.appendChild(dom.createElement('td'))\n main.setAttribute('colspan', '4')\n\n const buttons = table.appendChild(dom.createElement('tr'))\n\n buttons\n .appendChild(dom.createElement('td')) // Cancel button\n .appendChild(widgets.cancelButton(dom))\n .addEventListener('click', _event => {\n stopVideo()\n doneCallback(null)\n })\n\n const retakeButton = buttons\n .appendChild(dom.createElement('td')) // Retake button\n .appendChild(widgets.button(dom, retakeIcon, 'Retake'))\n retakeButton.addEventListener('click', _event => {\n retake()\n })\n retakeButton.style.visibility = 'collapse' // Hide for now\n\n const shutterButton = buttons\n .appendChild(dom.createElement('td')) // Trigger capture button\n .appendChild(\n widgets.button(dom, icons.iconBase + 'noun_10636.svg', 'Snap')\n )\n shutterButton.addEventListener('click', grabCanvas)\n shutterButton.style.visibility = 'collapse' // Hide for now\n\n const sendButton = buttons\n .appendChild(dom.createElement('td')) // Confirm and save button\n .appendChild(widgets.continueButton(dom)) // @@ or send icon??\n sendButton.addEventListener('click', _event => {\n saveBlob(imageBlob, destination)\n })\n sendButton.style.visibility = 'collapse' // Hide for now\n\n function displayPlayer () {\n player = main.appendChild(dom.createElement('video'))\n player.setAttribute('controls', '1')\n player.setAttribute('autoplay', '1')\n player.setAttribute('style', style.controlStyle)\n if (!navigator.mediaDevices) {\n throw new Error('navigator.mediaDevices not available')\n }\n navigator.mediaDevices.getUserMedia(constraints).then(stream => {\n player.srcObject = stream\n shutterButton.style.visibility = 'visible' // Enable\n sendButton.style.visibility = 'collapse'\n retakeButton.style.visibility = 'collapse'\n })\n }\n\n const constraints = {\n video: true\n }\n\n function retake () {\n main.removeChild(canvas)\n displayPlayer() // Make new one as old one is stuck black\n }\n\n function grabCanvas () {\n // Draw the video frame to the canvas.\n canvas = dom.createElement('canvas')\n canvas.setAttribute('width', style.canvasWidth)\n canvas.setAttribute('height', style.canvasHeight)\n canvas.setAttribute('style', style.controlStyle)\n main.appendChild(canvas)\n\n const context = canvas.getContext('2d')\n context.drawImage(player, 0, 0, canvas.width, canvas.height)\n\n player.parentNode.removeChild(player)\n\n canvas.toBlob(blob => {\n const msg = `got blob type ${blob.type} size ${blob.size}`\n debug.log(msg)\n destination = getImageDoc()\n imageBlob = blob // save for review\n reviewImage()\n // alert(msg)\n }, contentType) // toBlob\n }\n\n function reviewImage () {\n sendButton.style.visibility = 'visible'\n retakeButton.style.visibility = 'visible'\n shutterButton.style.visibility = 'collapse' // Hide for now\n }\n\n function stopVideo () {\n if (player && player.srcObject) {\n player.srcObject.getVideoTracks().forEach(track => track.stop())\n }\n }\n function saveBlob (blob, destination) {\n const contentType = blob.type\n // if (!confirm('Save picture to ' + destination + ' ?')) return\n debug.log(\n 'Putting ' + blob.size + ' bytes of ' + contentType + ' to ' + destination\n )\n // @@ TODO Remove casting\n ;(store as any).fetcher\n .webOperation('PUT', destination.uri, {\n data: blob,\n contentType\n })\n .then(\n _resp => {\n debug.log('ok saved ' + destination)\n stopVideo()\n doneCallback(destination)\n },\n err => {\n stopVideo()\n alert(err)\n }\n )\n }\n\n // Attach the video stream to the video element and autoplay.\n displayPlayer()\n return div\n}\n\n/** A button to capture a picture using camera\n * @param {Docuemnt} dom - The Document object\n * @param {IndexedForumla} store - The quadstore to store data in\n * @param {fuunction} getImageDoc - returns NN of the image file to be created\n * @param {function<Node>} doneCallback - called with the image taken\n * @returns {DomElement} - A div element with the button in it\n *\n * This expands the button to a large control when it is pressed\n */\n\nexport function cameraButton (\n dom: HTMLDocument,\n store: IndexedFormula,\n getImageDoc: () => NamedNode,\n doneCallback: (imageDoc) => Promise<void>\n): HTMLElement {\n const div = dom.createElement('div')\n const but = widgets.button(dom, cameraIcon, 'Take picture')\n let control\n async function restoreButton (imageDoc) {\n div.removeChild(control)\n div.appendChild(but)\n doneCallback(imageDoc)\n }\n div.appendChild(but)\n but.addEventListener('click', _event => {\n div.removeChild(but)\n control = cameraCaptureControl(\n dom,\n store,\n getImageDoc,\n restoreButton\n )\n div.appendChild(control)\n })\n return div\n}\n","import {\n cameraCaptureControl,\n cameraButton\n} from './media-capture'\n\nexport const media = {\n cameraCaptureControl,\n cameraButton\n}\n","function _taggedTemplateLiteral(e, t) {\n return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, {\n raw: {\n value: Object.freeze(t)\n }\n }));\n}\nexport { _taggedTemplateLiteral as default };","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n","/**\n *\n * People Picker Pane\n *\n * This pane offers a mechanism for selecting a set of individuals, groups, or\n * organizations to take some action on.\n *\n * Assumptions\n * - Assumes that the user has a type index entry for vcard:AddressBook. @@ bad assuption\n *\n */\nimport escape from 'escape-html'\nimport { v4 as uuidv4 } from 'uuid'\nimport * as rdf from 'rdflib'\nimport * as debug from '../debug'\n\nimport { makeDropTarget } from './dragAndDrop'\nimport { errorMessageBlock } from './error'\nimport { iconBase } from '../iconBase'\nimport ns from '../ns'\nimport { solidLogicSingleton } from 'solid-logic'\n\nconst kb = solidLogicSingleton.store\n\nexport class PeoplePicker {\n constructor (element, typeIndex, groupPickedCb, options) { // @@ can't expect typeindex to be passed\n this.options = options || {}\n this.element = element\n this.typeIndex = typeIndex\n this.groupPickedCb = groupPickedCb\n this.selectedgroup = this.options.selectedgroup // current selected group if any\n this.onSelectGroup = this.onSelectGroup.bind(this)\n }\n\n render () {\n const container = document.createElement('div')\n container.style.maxWidth = '350px'\n container.style.minHeight = '200px'\n container.style.outline = '1px solid black'\n container.style.display = 'flex'\n\n if (this.selectedgroup) {\n container.style.flexDirection = 'column'\n const selectedGroup = document.createElement('div')\n new Group(selectedGroup, this.selectedgroup).render()\n const changeGroupButton = document.createElement('button')\n changeGroupButton.textContent = escape('Change group')\n changeGroupButton.addEventListener('click', _event => {\n this.selectedgroup = null\n this.render()\n })\n container.appendChild(selectedGroup)\n container.appendChild(changeGroupButton)\n } else {\n this.findAddressBook(this.typeIndex)\n .then(({ book }) => {\n const chooseExistingGroupButton = document.createElement('button')\n chooseExistingGroupButton.textContent = escape(\n 'Pick an existing group'\n )\n chooseExistingGroupButton.style.margin = 'auto'\n chooseExistingGroupButton.addEventListener('click', _event => {\n new GroupPicker(container, book, this.onSelectGroup).render()\n })\n\n const createNewGroupButton = document.createElement('button')\n createNewGroupButton.textContent = escape('Create a new group')\n createNewGroupButton.style.margin = 'auto'\n createNewGroupButton.addEventListener('click', _event => {\n this.createNewGroup(book, this.options.defaultNewGroupName)\n .then(({ group }) => {\n new GroupBuilder(\n this.element,\n book,\n group,\n this.onSelectGroup\n ).render()\n })\n .catch(errorBody => {\n this.element.appendChild(\n errorMessageBlock(\n document,\n escape(`Error creating a new group. (${errorBody})`)\n )\n )\n })\n })\n\n container.appendChild(chooseExistingGroupButton)\n container.appendChild(createNewGroupButton)\n\n this.element.innerHTML = ''\n this.element.appendChild(container)\n })\n .catch(err => {\n this.element.appendChild(\n errorMessageBlock(\n document,\n escape(`Could find your groups. (${err})`)\n )\n )\n })\n }\n\n this.element.innerHTML = ''\n this.element.appendChild(container)\n return this\n }\n\n findAddressBook (typeIndex) {\n return new Promise((resolve, reject) => {\n kb.fetcher.nowOrWhenFetched(typeIndex, (ok, err) => {\n if (!ok) {\n return reject(err)\n }\n const bookRegistration = kb.any(\n null,\n ns.solid('forClass'),\n ns.vcard('AddressBook')\n )\n if (!bookRegistration) {\n return reject(\n new Error(\n 'no address book registered in the solid type index ' + typeIndex\n )\n )\n }\n const book = kb.any(bookRegistration, ns.solid('instance'))\n if (!book) {\n return reject(new Error('incomplete address book registration'))\n }\n kb.fetcher\n .load(book)\n .then(function (_xhr) {\n return resolve({ book })\n })\n .catch(function (errr) {\n return reject(new Error('Could not load address book ' + errr))\n })\n })\n })\n }\n\n createNewGroup (book, defaultNewGroupName) {\n const { groupIndex, groupContainer } = indexes(book)\n const group = rdf.sym(\n `${groupContainer.uri}${uuidv4().slice(0, 8)}.ttl#this`\n )\n const name = defaultNewGroupName || 'Untitled Group'\n\n // NOTE that order matters here. Unfortunately this type of update is\n // non-atomic in that solid requires us to send two PATCHes, either of which\n // might fail.\n const patchPromises = [group.doc(), groupIndex].map(doc => {\n const typeStatement = rdf.st(group, ns.rdf('type'), ns.vcard('Group'), doc)\n const nameStatement = rdf.st(group, ns.vcard('fn'), name, group.doc(), doc)\n const includesGroupStatement = rdf.st(\n book,\n ns.vcard('includesGroup'),\n group,\n doc\n )\n const toIns = doc.equals(groupIndex)\n ? [typeStatement, nameStatement, includesGroupStatement]\n : [typeStatement, nameStatement]\n return patch(doc.uri, { toIns }).then(() => {\n toIns.forEach(st => {\n kb.add(st)\n })\n })\n })\n return Promise.all(patchPromises)\n .then(() => ({ group }))\n .catch(err => {\n debug.log('Could not create new group. PATCH failed ' + err)\n throw new Error(\n `Couldn't create new group. PATCH failed for (${\n err.xhr ? err.xhr.responseURL : ''\n } )`\n )\n })\n }\n\n onSelectGroup (group) {\n this.selectedgroup = group\n this.groupPickedCb(group)\n this.render()\n }\n}\n\nexport class GroupPicker {\n constructor (element, book, onSelectGroup) {\n this.element = element\n this.book = book\n this.onSelectGroup = onSelectGroup\n }\n\n render () {\n this.loadGroups()\n .then(groups => {\n // render the groups\n const container = document.createElement('div')\n container.style.display = 'flex'\n container.style.flexDirection = 'column'\n groups.forEach(group => {\n const groupButton = document.createElement('button')\n groupButton.addEventListener('click', this.handleClickGroup(group))\n new Group(groupButton, group).render()\n container.appendChild(groupButton)\n })\n this.element.innerHTML = ''\n this.element.appendChild(container)\n })\n .catch(err => {\n this.element.appendChild(\n errorMessageBlock(\n document,\n escape(`There was an error loading your groups. (${err})`)\n )\n )\n })\n return this\n }\n\n loadGroups () {\n return new Promise((resolve, reject) => {\n const { groupIndex } = indexes(this.book)\n kb.fetcher.nowOrWhenFetched(groupIndex, (ok, err) => {\n if (!ok) {\n return reject(err)\n }\n const groups = kb.each(this.book, ns.vcard('includesGroup'))\n return resolve(groups)\n })\n })\n }\n\n handleClickGroup (group) {\n return _event => {\n this.onSelectGroup(group)\n }\n }\n}\n\nexport class Group {\n constructor (element, group) {\n this.element = element\n this.group = group\n }\n\n render () {\n const container = document.createElement('div')\n container.textContent = escape(\n // @@@@@ need to escape??\n getWithDefault(this.group, ns.vcard('fn'), `[${this.group.value}]`)\n )\n this.element.innerHTML = ''\n this.element.appendChild(container)\n return this\n }\n}\n\nexport class GroupBuilder {\n constructor (element, book, group, doneBuildingCb, groupChangedCb) {\n this.element = element\n this.book = book\n this.group = group\n this.onGroupChanged = (err, changeType, agent) => {\n if (groupChangedCb) {\n groupChangedCb(err, changeType, agent)\n }\n }\n this.groupChangedCb = groupChangedCb\n this.doneBuildingCb = doneBuildingCb\n }\n\n refresh () {\n // TODO: implement\n }\n\n render () {\n const dropContainer = document.createElement('div')\n dropContainer.style.maxWidth = '350px'\n dropContainer.style.minHeight = '200px'\n dropContainer.style.outline = '1px solid black'\n dropContainer.style.display = 'flex'\n dropContainer.style.flexDirection = 'column'\n\n makeDropTarget(dropContainer, uris => {\n uris.forEach(uri => {\n this.add(uri).catch(err => {\n this.element.appendChild(\n errorMessageBlock(\n document,\n escape(`Could not add the given WebId. (${err})`)\n )\n )\n })\n })\n })\n\n const groupNameInput = document.createElement('input')\n groupNameInput.type = 'text'\n groupNameInput.value = getWithDefault(\n this.group,\n ns.vcard('fn'),\n 'Untitled Group'\n )\n groupNameInput.addEventListener('change', event => {\n this.setGroupName(event.target.value).catch(err => {\n this.element.appendChild(\n errorMessageBlock(document, `Error changing group name. (${err})`)\n )\n })\n })\n const groupNameLabel = document.createElement('label')\n groupNameLabel.textContent = escape('Group Name:')\n groupNameLabel.appendChild(groupNameInput)\n dropContainer.appendChild(groupNameLabel)\n\n if (kb.any(this.group, ns.vcard('hasMember'))) {\n kb.match(this.group, ns.vcard('hasMember')).forEach(statement => {\n const webIdNode = statement.object\n const personDiv = document.createElement('div')\n new Person(personDiv, webIdNode, this.handleRemove(webIdNode)).render()\n dropContainer.appendChild(personDiv)\n })\n } else {\n const copy = document.createElement('p')\n copy.textContent = escape`\n To add someone to this group, drag and drop their WebID URL onto the box.\n `\n dropContainer.appendChild(copy)\n }\n\n const doneBuildingButton = document.createElement('button')\n doneBuildingButton.textContent = escape('Done')\n doneBuildingButton.addEventListener('click', _event => {\n this.doneBuildingCb(this.group)\n })\n dropContainer.appendChild(doneBuildingButton)\n\n this.element.innerHTML = ''\n this.element.appendChild(dropContainer)\n return this\n }\n\n add (webId) {\n return new Promise((resolve, reject) => {\n kb.fetcher.nowOrWhenFetched(webId, (ok, err) => {\n if (!ok) {\n this.onGroupChanged(err)\n return reject(err)\n }\n // make sure it's a valid person, group, or entity (for now just handle\n // webId)\n const webIdNode = rdf.namedNode(webId)\n const rdfClass = kb.any(webIdNode, ns.rdf('type'))\n if (!rdfClass || !rdfClass.equals(ns.foaf('Person'))) {\n return reject(\n new Error(\n `Only people supported right now. (tried to add something of type ${rdfClass.value})`\n )\n )\n }\n return resolve(webIdNode)\n })\n }).then(webIdNode => {\n const statement = rdf.st(this.group, ns.vcard('hasMember'), webIdNode)\n if (kb.holdsStatement(statement)) {\n return webIdNode\n }\n return patch(this.group.doc().uri, { toIns: [statement] }).then(() => {\n statement.why = this.group.doc()\n kb.add(statement)\n this.onGroupChanged(null, 'added', webIdNode)\n this.render()\n })\n })\n }\n\n handleRemove (webIdNode) {\n return _event => {\n const statement = rdf.st(this.group, ns.vcard('hasMember'), webIdNode)\n return patch(this.group.doc().uri, { toDel: [statement] })\n .then(() => {\n kb.remove(statement)\n this.onGroupChanged(null, 'removed', webIdNode)\n this.render()\n return true\n })\n .catch(err => {\n const name = kb.any(webIdNode, ns.foaf('name'))\n const errorMessage =\n name && name.value\n ? `Could not remove ${name.value}. (${err})`\n : `Could not remove ${webIdNode.value}. (${err})`\n throw new Error(errorMessage)\n })\n }\n }\n\n setGroupName (name) {\n const { groupIndex } = indexes(this.book)\n const updatePromises = [this.group.doc(), groupIndex].map(namedGraph => {\n const oldNameStatements = kb.match(\n this.group,\n ns.vcard('fn'),\n null,\n namedGraph\n )\n const newNameStatement = rdf.st(\n this.group,\n ns.vcard('fn'),\n rdf.literal(name)\n )\n return patch(namedGraph.value, {\n toDel: oldNameStatements,\n toIns: [newNameStatement]\n }).then(_solidResponse => {\n kb.removeStatements(oldNameStatements)\n newNameStatement.why = namedGraph\n kb.add(newNameStatement)\n })\n })\n return Promise.all(updatePromises)\n }\n}\n// @ignore exporting this only for the unit test\n// @@ TODO maybe I should move this down at end, but for\n// now I will leave it where it was\nexport class Person {\n constructor (element, webIdNode, handleRemove) {\n this.webIdNode = webIdNode\n this.element = element\n this.handleRemove = handleRemove\n }\n\n render () {\n const container = document.createElement('div')\n container.style.display = 'flex'\n\n // TODO: take a look at UI.widgets.setName\n const imgSrc = getWithDefault(\n this.webIdNode,\n ns.foaf('img'),\n iconBase + 'noun_15059.svg'\n )\n const profileImg = document.createElement('img')\n profileImg.src = escape(imgSrc)\n profileImg.width = '50'\n profileImg.height = '50'\n profileImg.style.margin = '5px'\n\n // TODO: take a look at UI.widgets.setImage\n const name = getWithDefault(\n this.webIdNode,\n ns.foaf('name'),\n `[${this.webIdNode}]`\n )\n const nameSpan = document.createElement('span')\n nameSpan.innerHTML = escape(name)\n nameSpan.style.flexGrow = '1'\n nameSpan.style.margin = 'auto 0'\n\n const removeButton = document.createElement('button')\n removeButton.textContent = 'Remove'\n removeButton.addEventListener('click', _event =>\n this.handleRemove().catch(err => {\n this.element.appendChild(errorMessageBlock(document, escape(`${err}`)))\n })\n )\n removeButton.style.margin = '5px'\n\n container.appendChild(profileImg)\n container.appendChild(nameSpan)\n container.appendChild(removeButton)\n\n this.element.innerHTML = ''\n this.element.appendChild(container)\n return this\n }\n}\n\nfunction getWithDefault (subject, predicate, defaultValue) {\n const object = kb.any(subject, predicate)\n return object ? object.value : defaultValue\n}\n\nfunction patch (url, { toDel, toIns }) {\n return new Promise((resolve, reject) => {\n kb.updater.update(toDel, toIns, (uri, success, errorMessage) => {\n if (!success) {\n return reject(\n new Error(`PATCH failed for resource <${uri}>: ${errorMessage}`)\n )\n }\n resolve()\n })\n })\n // return webClient.patch(url, toDel, toIns)\n // .then(solidResponse => {\n // const status = solidResponse.xhr.status\n // if (status < 200 || status >= 400) {\n // const err = new Error(`PATCH failed for resource <${solidResponse.url}>`)\n // err.solidResponse = solidResponse\n // throw err\n // }\n // })\n}\n\nfunction indexes (book) {\n return {\n // bookIndex: book,\n groupIndex: kb.any(book, ns.vcard('groupIndex')),\n groupContainer: kb.sym(book.dir().uri + 'Group/')\n }\n}\n","/**\n * General purpose utility functions used in the panes\n * oshani@csail.mit.edu\n *\n * Includes form-oriented widgets timbl@w3.org\n *\n * sign-in sign-up widgets are in signin.js\n *\n * Note... For pointers to posssible text-editing code, see\n * http://stackoverflow.com/questions/6756407/what-contenteditable-editors\n */\n\n// Each widget should ideally live in its own file. In order to break up this\n// monolithic widget index over time, we should add new widgets to the\n// 'lib/widgets/' directory, and re-export them by merging the module namespaces:\n//\n// (In order to avoid name collisions, it is safely assumed that modules don't\n// export widgets with the same name)\n\nexport * from './peoplePicker'\nexport * from './dragAndDrop'\nexport * from './buttons'\nexport * from './buttons/iconLinks'\nexport * from './error'\nexport * from './forms'\n\nexport * from './forms/autocomplete/autocompleteBar'\nexport * from './forms/autocomplete/autocompletePicker'\n\nexport * as publicData from './forms/autocomplete/publicData'\n\n/*\nimport * as peoplePicker from './peoplePicker'\nimport * as dragAndDrop from './dragAndDrop'\nimport * as buttons from './buttons'\nimport * as error from './error'\nimport { forms } from './forms'\n\nconst widgets = Object.assign(\n {},\n buttons,\n peoplePicker,\n dragAndDrop,\n error,\n forms\n)\n\n// export default widgets .. Policy is not to use exports default\nmodule.export = widgets // @@ Apparently no way to do this (yet?) in esm\nconsole.log('widgets exported:', widgets)\n*/\n// ends\n","// Common code for a discussion are a of messages about something\n//\n\nimport { icons } from './iconBase'\nimport * as login from './login/login'\nimport { solidLogicSingleton } from 'solid-logic'\nimport ns from './ns'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\nimport { style } from './style'\nimport * as utils from './utils'\nimport * as widgets from './widgets'\n\nconst UI = { icons, ns, rdf, style, widgets }\n\nexport function messageArea (dom, kb, subject, messageStore, options) {\n kb = kb || solidLogicSingleton.store\n messageStore = messageStore.doc() // No hash\n const ns = UI.ns\n const WF = rdf.Namespace('http://www.w3.org/2005/01/wf/flow#')\n const DCT = rdf.Namespace('http://purl.org/dc/terms/')\n\n options = options || {}\n\n const newestFirst = !!options.newestFirst\n\n const messageBodyStyle =\n 'white-space: pre-wrap; width: 90%; font-size:100%; border: 0.07em solid #eee; padding: .2em 0.5em; margin: 0.1em 1em 0.1em 1em;'\n // 'font-size: 100%; margin: 0.1em 1em 0.1em 1em; background-color: white; white-space: pre-wrap; padding: 0.1em;'\n\n const div = dom.createElement('div')\n // eslint-disable-next-line prefer-const\n let messageTable // Shared by initial build and addMessageFromBindings\n\n let me\n\n const updater = solidLogicSingleton.store.updater\n\n const anchor = function (text, term) {\n // If there is no link return an element anyway\n const a = dom.createElement('a')\n if (term && term.uri) {\n a.setAttribute('href', term.uri)\n a.addEventListener('click', UI.widgets.openHrefInOutlineMode, true)\n a.setAttribute('style', 'color: #3B5998; text-decoration: none; ') // font-weight: bold\n }\n a.textContent = text\n return a\n }\n\n const mention = function mention (message, style) {\n const pre = dom.createElement('pre')\n pre.setAttribute('style', style || 'color: grey')\n div.appendChild(pre)\n pre.appendChild(dom.createTextNode(message))\n return pre\n }\n\n const announce = {\n log: function (message) {\n mention(message, 'color: #111;')\n },\n warn: function (message) {\n mention(message, 'color: #880;')\n },\n error: function (message) {\n mention(message, 'color: #800;')\n }\n }\n\n // Form for a new message\n //\n const newMessageForm = function () {\n const form = dom.createElement('tr')\n const lhs = dom.createElement('td')\n const middle = dom.createElement('td')\n const rhs = dom.createElement('td')\n form.appendChild(lhs)\n form.appendChild(middle)\n form.appendChild(rhs)\n form.AJAR_date = '9999-01-01T00:00:00Z' // ISO format for field sort\n\n const sendMessage = function () {\n // titlefield.setAttribute('class','pendingedit')\n // titlefield.disabled = true\n field.setAttribute('class', 'pendingedit')\n field.disabled = true\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = rdf.term(now)\n // http://www.w3schools.com/jsref/jsref_obj_date.asp\n const message = kb.sym(messageStore.uri + '#' + 'Msg' + timestamp)\n\n sts.push(\n new rdf.Statement(subject, ns.wf('message'), message, messageStore)\n )\n sts.push(\n new rdf.Statement(\n message,\n ns.sioc('content'),\n kb.literal(field.value),\n messageStore\n )\n )\n sts.push(\n new rdf.Statement(message, DCT('created'), dateStamp, messageStore)\n )\n if (me) {\n sts.push(\n new rdf.Statement(message, ns.foaf('maker'), me, messageStore)\n )\n }\n\n const sendComplete = function (uri, success, body) {\n if (!success) {\n form.appendChild(\n UI.widgets.errorMessageBlock(dom, 'Error writing message: ' + body)\n )\n } else {\n const bindings = {\n '?msg': message,\n '?content': kb.literal(field.value),\n '?date': dateStamp,\n '?creator': me\n }\n renderMessage(bindings, false) // not green\n\n field.value = '' // clear from out for reuse\n field.setAttribute('class', '')\n field.disabled = false\n }\n }\n updater.update([], sts, sendComplete)\n }\n form.appendChild(dom.createElement('br'))\n\n let field, sendButton\n const turnOnInput = function () {\n creatorAndDate(lhs, me, '', null)\n\n field = dom.createElement('textarea')\n middle.innerHTML = ''\n middle.appendChild(field)\n field.rows = 3\n // field.cols = 40\n field.setAttribute('style', messageBodyStyle + 'background-color: #eef;')\n\n field.addEventListener(\n 'keyup',\n function (e) {\n // User preference?\n if (e.keyCode === 13) {\n if (!e.altKey) {\n // Alt-Enter just adds a new line\n sendMessage()\n }\n }\n },\n false\n )\n\n rhs.innerHTML = ''\n sendButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + 'noun_383448.svg',\n 'Send'\n )\n sendButton.setAttribute('style', UI.style.buttonStyle + 'float: right;')\n sendButton.addEventListener('click', sendMessage, false)\n rhs.appendChild(sendButton)\n }\n\n const context = { div: middle, dom }\n login.ensureLoggedIn(context).then(context => {\n me = context.me\n turnOnInput()\n })\n\n return form\n }\n\n function nick (person) {\n const s = solidLogicSingleton.store.any(person, UI.ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + utils.label(person)\n }\n\n function creatorAndDate (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(nick(creator), creator))\n if (creator.uri) {\n solidLogicSingleton.store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nick(creator)\n })\n }\n td1.appendChild(dom.createElement('br'))\n td1.appendChild(anchor(date, message))\n }\n\n // ///////////////////////////////////////////////////////////////////////\n\n function syncMessages (about, messageTable) {\n const displayed = {}\n let ele, ele2\n for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {\n if (ele.AJAR_subject) {\n displayed[ele.AJAR_subject.uri] = true\n }\n }\n const messages = kb.each(about, ns.wf('message'))\n const stored = {}\n messages.forEach(function (m) {\n stored[m.uri] = true\n if (!displayed[m.uri]) {\n addMessage(m)\n }\n })\n\n for (ele = messageTable.firstChild; ele;) {\n ele2 = ele.nextSibling\n if (ele.AJAR_subject && !stored[ele.AJAR_subject.uri]) {\n messageTable.removeChild(ele)\n }\n ele = ele2\n }\n }\n\n const deleteMessage = function (message) {\n const deletions = kb\n .statementsMatching(message)\n .concat(kb.statementsMatching(undefined, undefined, message))\n updater.update(deletions, [], function (uri, ok, body) {\n if (!ok) {\n announce.error('Cant delete messages:' + body)\n } else {\n syncMessages(subject, messageTable)\n }\n })\n }\n\n const addMessage = function (message) {\n const bindings = {\n '?msg': message,\n '?creator': kb.any(message, ns.foaf('maker')),\n '?date': kb.any(message, DCT('created')),\n '?content': kb.any(message, ns.sioc('content'))\n }\n renderMessage(bindings, true) // fresh from elsewhere\n }\n\n const renderMessage = function (bindings, fresh) {\n const creator = bindings['?creator']\n const message = bindings['?msg']\n const date = bindings['?date']\n const content = bindings['?content']\n\n const dateString = date.value\n const tr = dom.createElement('tr')\n tr.AJAR_date = dateString\n tr.AJAR_subject = message\n\n let done = false\n for (let ele = messageTable.firstChild; ; ele = ele.nextSibling) {\n if (!ele) {\n // empty\n break\n }\n if (\n (dateString > ele.AJAR_date && newestFirst) ||\n (dateString < ele.AJAR_date && !newestFirst)\n ) {\n messageTable.insertBefore(tr, ele)\n done = true\n break\n }\n }\n if (!done) {\n messageTable.appendChild(tr)\n }\n\n const td1 = dom.createElement('td')\n tr.appendChild(td1)\n creatorAndDate(td1, creator, UI.widgets.shortDate(dateString), message)\n\n const td2 = dom.createElement('td')\n tr.appendChild(td2)\n const pre = dom.createElement('p')\n pre.setAttribute(\n 'style',\n messageBodyStyle +\n (fresh ? 'background-color: #e8ffe8;' : 'background-color: #white;')\n )\n td2.appendChild(pre)\n pre.textContent = content.value\n\n const td3 = dom.createElement('td')\n tr.appendChild(td3)\n\n const delButton = dom.createElement('button')\n td3.appendChild(delButton)\n delButton.textContent = '-'\n\n tr.setAttribute('class', 'hoverControl') // See tabbedtab.css (sigh global CSS)\n delButton.setAttribute('class', 'hoverControlHide')\n delButton.setAttribute('style', 'color: red;')\n delButton.addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(delButton) // Ask -- are you sure?\n const cancelButton = dom.createElement('button')\n cancelButton.textContent = 'cancel'\n td3.appendChild(cancelButton).addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(sureButton)\n td3.removeChild(cancelButton)\n td3.appendChild(delButton)\n },\n false\n )\n const sureButton = dom.createElement('button')\n sureButton.textContent = 'Delete message'\n td3.appendChild(sureButton).addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(sureButton)\n td3.removeChild(cancelButton)\n deleteMessage(message)\n },\n false\n )\n },\n false\n )\n }\n\n // Messages with date, author etc\n\n messageTable = dom.createElement('table')\n messageTable.fresh = false\n div.appendChild(messageTable)\n messageTable.setAttribute('style', 'width: 100%;') // fill that div!\n\n const tr = newMessageForm()\n if (newestFirst) {\n messageTable.insertBefore(tr, messageTable.firstChild) // If newestFirst\n } else {\n messageTable.appendChild(tr) // not newestFirst\n }\n\n let query\n // Do this with a live query to pull in messages from web\n if (options.query) {\n query = options.query\n } else {\n query = new rdf.Query('Messages')\n const v = {} // semicolon needed\n const vs = ['msg', 'date', 'creator', 'content']\n vs.forEach(function (x) {\n query.vars.push((v[x] = rdf.variable(x)))\n })\n query.pat.add(subject, WF('message'), v.msg)\n query.pat.add(v.msg, ns.dct('created'), v.date)\n query.pat.add(v.msg, ns.foaf('maker'), v.creator)\n query.pat.add(v.msg, ns.sioc('content'), v.content)\n }\n function doneQuery () {\n messageTable.fresh = true // any new are fresh and so will be greenish\n }\n kb.query(query, renderMessage, undefined, doneQuery)\n div.refresh = function () {\n syncMessages(subject, messageTable)\n }\n // syncMessages(subject, messageTable) // no the query will do this async\n return div\n}\n","/**\n * Contains the [[DateFolder]] class\n * This tracks data stored in dated folders and sub-folders\n *\n */\nimport * as debug from '../debug'\nimport { store } from 'solid-logic'\nimport ns from '../ns'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\n\nexport async function emptyLeaf (leafDocument) {\n await store.fetcher.load(leafDocument)\n // files can have seealso links. skip ones with no leafObjects with a date\n return !(\n store.statementsMatching(null, ns.dct('created'), null, leafDocument)\n .length > 0\n )\n}\n\n/**\n * Track back through the YYYY/MM/DD tree to find the previous/next day\n */\nexport class DateFolder {\n constructor (rootThing, leafFileName, membershipProperty) {\n this.root = rootThing\n this.rootFolder = rootThing.dir()\n this.leafFileName = leafFileName || 'index.ttl' // typically chat.ttl\n this.membershipProperty = membershipProperty || ns.wf('leafObject')\n }\n\n /* Generate the leaf document (rdf object) from date\n * @returns: <NamedNode> - document\n */\n leafDocumentFromDate (date) {\n // debug.log('incoming date: ' + date)\n const isoDate = date.toISOString() // Like \"2018-05-07T17:42:46.576Z\"\n let path = isoDate.split('T')[0].replace(/-/g, '/') // Like \"2018/05/07\"\n path = this.root.dir().uri + path + '/' + this.leafFileName\n return store.sym(path)\n }\n\n /* Generate a date object from the leaf file name\n */\n dateFromLeafDocument (doc) {\n const head = this.rootFolder.uri.length\n const str = doc.uri.slice(head, head + 10).replace(/\\//g, '-')\n // let date = new Date(str + 'Z') // GMT - but fails in FF - invalid format :-(\n const date = new Date(str) // not explicitly UTC but is assumed so in spec\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse\n // debug.log('Date for ' + doc + ':' + date.toISOString())\n return date\n }\n\n async loadPrevious (date, backwards) {\n async function previousPeriod (file, level) {\n function younger (x) {\n if (backwards ? x.uri >= file.uri : x.uri <= file.uri) return false // later than we want or same -- looking for different\n return true\n }\n function suitable (x) {\n const tail = x.uri\n .slice(0, -1)\n .split('/')\n .slice(-1)[0]\n if (!'0123456789'.includes(tail[0])) return false // not numeric\n return true\n }\n\n function lastOrFirst (siblings) {\n siblings = siblings.filter(suitable)\n siblings.sort() // chronological order\n if (!backwards) siblings.reverse()\n return siblings.pop() // date folder\n }\n // debug.log(' previousPeriod level' + level + ' file ' + file)\n const parent = file.dir()\n try {\n await store.fetcher.load(parent)\n let siblings = store.each(parent, ns.ldp('contains'))\n siblings = siblings.filter(younger)\n const folder = lastOrFirst(siblings)\n if (folder) return folder\n // debug.log(' parent no suitable offspring ' + parent)\n } catch (err) {\n if (err.response && err.response.status && err.response.status === 404) {\n debug.log('Error 404 for chat parent file ' + parent)\n } else {\n debug.log('*** Error NON 404 for chat parent file ' + parent)\n // statusTR.appendChild(widgets.errorMessageBlock(dom, err, 'pink'))\n throw (new Error(`*** ${err.message} for chat folder ${parent}`))\n }\n }\n if (level === 0) {\n // debug.log('loadPrevious: returning as level is zero')\n return null // 3:day, 2:month, 1: year 0: no\n }\n\n const uncle = await previousPeriod(parent, level - 1)\n if (!uncle) {\n // debug.log(' previousPeriod: nothing left before. ', parent)\n return null // reached first ever\n }\n await store.fetcher.load(uncle)\n const cousins = store.each(uncle, ns.ldp('contains'))\n const result = lastOrFirst(cousins)\n // debug.log(' previousPeriod: returning cousins at level ' + level, cousins)\n // debug.log(' previousPeriod: returning result at level ' + level, result)\n\n return result\n } // previousPeriod\n\n let folder = this.leafDocumentFromDate(date).dir()\n while (true) {\n const found = await previousPeriod(folder, 3)\n if (found) {\n const leafDocument = store.sym(found.uri + this.leafFileName)\n const nextDate = this.dateFromLeafDocument(leafDocument)\n if (!await emptyLeaf(leafDocument)) {\n return nextDate\n } else {\n // debug.log(' loadPrevious: skipping empty ' + leafDocument)\n date = nextDate\n folder = this.leafDocumentFromDate(date).dir()\n // debug.log(' loadPrevious: moved back to ' + folder)\n }\n } else {\n return null // no more left\n }\n }\n } // loadPrevious\n\n async firstLeaf (backwards) {\n // backwards -> last leafObject\n const folderStore = $rdf.graph()\n const folderFetcher = new $rdf.Fetcher(folderStore)\n async function earliestSubfolder (parent) {\n function suitable (x) {\n const tail = x.uri\n .slice(0, -1)\n .split('/')\n .slice(-1)[0]\n if (!'0123456789'.includes(tail[0])) return false // not numeric\n return true\n }\n // debug.log(' parent ' + parent)\n delete folderFetcher.requested[parent.uri]\n // try {\n await folderFetcher.load(parent, { force: true }) // Force fetch as will have changed\n // }catch (err) {\n // }\n\n let kids = folderStore.each(parent, ns.ldp('contains'))\n kids = kids.filter(suitable)\n if (kids.length === 0) {\n throw new Error(' @@@ No children to parent2 ' + parent)\n }\n\n kids.sort()\n if (backwards) kids.reverse()\n return kids[0]\n }\n const y = await earliestSubfolder(this.root.dir())\n const month = await earliestSubfolder(y)\n const d = await earliestSubfolder(month)\n const leafDocument = $rdf.sym(d.uri + 'chat.ttl')\n await folderFetcher.load(leafDocument)\n const leafObjects = folderStore.each(\n this.root,\n this.membershipProperty,\n null,\n leafDocument\n )\n if (leafObjects.length === 0) {\n const msg =\n ' INCONSISTENCY -- no chat leafObject in file ' + leafDocument\n debug.trace(msg)\n throw new Error(msg)\n }\n const sortMe = leafObjects.map(leafObject => [\n folderStore.any(leafObject, ns.dct('created')),\n leafObject\n ])\n sortMe.sort()\n if (backwards) sortMe.reverse()\n /* debug.log(\n (backwards ? 'Latest' : 'Earliest') + ' leafObject is ' + sortMe[0][1]\n ) */\n return sortMe[0][1]\n } // firstleafObject\n} // class\n","export const crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is positive integer. */\nexport function anumber(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error('positive integer expected, got ' + n);\n}\n/** Asserts something is Uint8Array. */\nexport function abytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\n/** Asserts something is hash */\nexport function ahash(h) {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.createHasher');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out, instance) {\n abytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('digestInto() expects output buffer of length at least ' + min);\n }\n}\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr) {\n return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr) {\n return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays) {\n for (let i = 0; i < arrays.length; i++) {\n arrays[i].fill(0);\n }\n}\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr) {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word, shift) {\n return (word << (32 - shift)) | (word >>> shift);\n}\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word, shift) {\n return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE = /* @__PURE__ */ (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n/** The byte swap operation for uint32 */\nexport function byteSwap(word) {\n return (((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff));\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE = isLE\n ? (n) => n\n : (n) => byteSwap(n);\n/** @deprecated */\nexport const byteSwapIfBE = swap8IfBE;\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr) {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n return arr;\n}\nexport const swap32IfBE = isLE\n ? (u) => u\n : byteSwap32;\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin = /* @__PURE__ */ (() => \n// @ts-ignore\ntypeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n abytes(bytes);\n // @ts-ignore\n if (hasHexBuiltin)\n return bytes.toHex();\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };\nfunction asciiToBase16(ch) {\n if (ch >= asciis._0 && ch <= asciis._9)\n return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F)\n return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f)\n return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n // @ts-ignore\n if (hasHexBuiltin)\n return Uint8Array.fromHex(hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async () => { };\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * Converts string to bytes using UTF8 encoding.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error('string expected');\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\nexport function bytesToUtf8(bytes) {\n return new TextDecoder().decode(bytes);\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n throw new Error('options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\n/** For runtime check if class implements interface */\nexport class Hash {\n}\n/** Wraps hash function, creating an interface on top of it */\nexport function createHasher(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexport function createOptHasher(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport function createXOFer(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport const wrapConstructor = createHasher;\nexport const wrapConstructorWithOpts = createOptHasher;\nexport const wrapXOFConstructorWithOpts = createXOFer;\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n // Legacy Node.js compatibility\n if (crypto && typeof crypto.randomBytes === 'function') {\n return Uint8Array.from(crypto.randomBytes(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","/**\n * Internal Merkle-Damgard hash utils.\n * @module\n */\nimport { Hash, abytes, aexists, aoutput, clean, createView, toBytes } from \"./utils.js\";\n/** Polyfill for Safari 14. https://caniuse.com/mdn-javascript_builtins_dataview_setbiguint64 */\nexport function setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n/** Choice: a ? b : c */\nexport function Chi(a, b, c) {\n return (a & b) ^ (~a & c);\n}\n/** Majority function, true if any two inputs is true. */\nexport function Maj(a, b, c) {\n return (a & b) ^ (a & c) ^ (b & c);\n}\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport class HashMD extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n aexists(this);\n data = toBytes(data);\n abytes(data);\n const { view, buffer, blockLen } = this;\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n clean(this.buffer.subarray(pos));\n // we have less than padOffset left in buffer, so we cannot put length in\n // current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.destroyed = destroyed;\n to.finished = finished;\n to.length = length;\n to.pos = pos;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n clone() {\n return this._cloneInto();\n }\n}\n/**\n * Initial SHA-2 state: fractional parts of square roots of first 16 primes 2..53.\n * Check out `test/misc/sha2-gen-iv.js` for recomputation guide.\n */\n/** Initial SHA256 state. Bits 0..32 of frac part of sqrt of primes 2..19 */\nexport const SHA256_IV = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n]);\n/** Initial SHA224 state. Bits 32..64 of frac part of sqrt of primes 23..53 */\nexport const SHA224_IV = /* @__PURE__ */ Uint32Array.from([\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4,\n]);\n/** Initial SHA384 state. Bits 0..64 of frac part of sqrt of primes 23..53 */\nexport const SHA384_IV = /* @__PURE__ */ Uint32Array.from([\n 0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4,\n]);\n/** Initial SHA512 state. Bits 0..64 of frac part of sqrt of primes 2..19 */\nexport const SHA512_IV = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179,\n]);\n//# sourceMappingURL=_md.js.map","/**\n * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n const len = lst.length;\n let Ah = new Uint32Array(len);\n let Al = new Uint32Array(len);\n for (let i = 0; i < len; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig };\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","/**\n * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.\n * SHA256 is the fastest hash implementable in JS, even faster than Blake3.\n * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and\n * [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\nimport { Chi, HashMD, Maj, SHA224_IV, SHA256_IV, SHA384_IV, SHA512_IV } from \"./_md.js\";\nimport * as u64 from \"./_u64.js\";\nimport { clean, createHasher, rotr } from \"./utils.js\";\n/**\n * Round constants:\n * First 32 bits of fractional parts of the cube roots of the first 64 primes 2..311)\n */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ Uint32Array.from([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n/** Reusable temporary buffer. \"W\" comes straight from spec. */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nexport class SHA256 extends HashMD {\n constructor(outputLen = 32) {\n super(64, outputLen, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = SHA256_IV[0] | 0;\n this.B = SHA256_IV[1] | 0;\n this.C = SHA256_IV[2] | 0;\n this.D = SHA256_IV[3] | 0;\n this.E = SHA256_IV[4] | 0;\n this.F = SHA256_IV[5] | 0;\n this.G = SHA256_IV[6] | 0;\n this.H = SHA256_IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n clean(SHA256_W);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n clean(this.buffer);\n }\n}\nexport class SHA224 extends SHA256 {\n constructor() {\n super(28);\n this.A = SHA224_IV[0] | 0;\n this.B = SHA224_IV[1] | 0;\n this.C = SHA224_IV[2] | 0;\n this.D = SHA224_IV[3] | 0;\n this.E = SHA224_IV[4] | 0;\n this.F = SHA224_IV[5] | 0;\n this.G = SHA224_IV[6] | 0;\n this.H = SHA224_IV[7] | 0;\n }\n}\n// SHA2-512 is slower than sha256 in js because u64 operations are slow.\n// Round contants\n// First 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409\n// prettier-ignore\nconst K512 = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\nconst SHA512_Kh = /* @__PURE__ */ (() => K512[0])();\nconst SHA512_Kl = /* @__PURE__ */ (() => K512[1])();\n// Reusable temporary buffers\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA512 extends HashMD {\n constructor(outputLen = 64) {\n super(128, outputLen, 16, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = SHA512_IV[0] | 0;\n this.Al = SHA512_IV[1] | 0;\n this.Bh = SHA512_IV[2] | 0;\n this.Bl = SHA512_IV[3] | 0;\n this.Ch = SHA512_IV[4] | 0;\n this.Cl = SHA512_IV[5] | 0;\n this.Dh = SHA512_IV[6] | 0;\n this.Dl = SHA512_IV[7] | 0;\n this.Eh = SHA512_IV[8] | 0;\n this.El = SHA512_IV[9] | 0;\n this.Fh = SHA512_IV[10] | 0;\n this.Fl = SHA512_IV[11] | 0;\n this.Gh = SHA512_IV[12] | 0;\n this.Gl = SHA512_IV[13] | 0;\n this.Hh = SHA512_IV[14] | 0;\n this.Hl = SHA512_IV[15] | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n clean(SHA512_W_H, SHA512_W_L);\n }\n destroy() {\n clean(this.buffer);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nexport class SHA384 extends SHA512 {\n constructor() {\n super(48);\n this.Ah = SHA384_IV[0] | 0;\n this.Al = SHA384_IV[1] | 0;\n this.Bh = SHA384_IV[2] | 0;\n this.Bl = SHA384_IV[3] | 0;\n this.Ch = SHA384_IV[4] | 0;\n this.Cl = SHA384_IV[5] | 0;\n this.Dh = SHA384_IV[6] | 0;\n this.Dl = SHA384_IV[7] | 0;\n this.Eh = SHA384_IV[8] | 0;\n this.El = SHA384_IV[9] | 0;\n this.Fh = SHA384_IV[10] | 0;\n this.Fl = SHA384_IV[11] | 0;\n this.Gh = SHA384_IV[12] | 0;\n this.Gl = SHA384_IV[13] | 0;\n this.Hh = SHA384_IV[14] | 0;\n this.Hl = SHA384_IV[15] | 0;\n }\n}\n/**\n * Truncated SHA512/256 and SHA512/224.\n * SHA512_IV is XORed with 0xa5a5a5a5a5a5a5a5, then used as \"intermediary\" IV of SHA512/t.\n * Then t hashes string to produce result IV.\n * See `test/misc/sha2-gen-iv.js`.\n */\n/** SHA512/224 IV */\nconst T224_IV = /* @__PURE__ */ Uint32Array.from([\n 0x8c3d37c8, 0x19544da2, 0x73e19966, 0x89dcd4d6, 0x1dfab7ae, 0x32ff9c82, 0x679dd514, 0x582f9fcf,\n 0x0f6d2b69, 0x7bd44da8, 0x77e36f73, 0x04c48942, 0x3f9d85a8, 0x6a1d36c8, 0x1112e6ad, 0x91d692a1,\n]);\n/** SHA512/256 IV */\nconst T256_IV = /* @__PURE__ */ Uint32Array.from([\n 0x22312194, 0xfc2bf72c, 0x9f555fa3, 0xc84c64c2, 0x2393b86b, 0x6f53b151, 0x96387719, 0x5940eabd,\n 0x96283ee2, 0xa88effe3, 0xbe5e1e25, 0x53863992, 0x2b0199fc, 0x2c85b8aa, 0x0eb72ddc, 0x81c52ca2,\n]);\nexport class SHA512_224 extends SHA512 {\n constructor() {\n super(28);\n this.Ah = T224_IV[0] | 0;\n this.Al = T224_IV[1] | 0;\n this.Bh = T224_IV[2] | 0;\n this.Bl = T224_IV[3] | 0;\n this.Ch = T224_IV[4] | 0;\n this.Cl = T224_IV[5] | 0;\n this.Dh = T224_IV[6] | 0;\n this.Dl = T224_IV[7] | 0;\n this.Eh = T224_IV[8] | 0;\n this.El = T224_IV[9] | 0;\n this.Fh = T224_IV[10] | 0;\n this.Fl = T224_IV[11] | 0;\n this.Gh = T224_IV[12] | 0;\n this.Gl = T224_IV[13] | 0;\n this.Hh = T224_IV[14] | 0;\n this.Hl = T224_IV[15] | 0;\n }\n}\nexport class SHA512_256 extends SHA512 {\n constructor() {\n super(32);\n this.Ah = T256_IV[0] | 0;\n this.Al = T256_IV[1] | 0;\n this.Bh = T256_IV[2] | 0;\n this.Bl = T256_IV[3] | 0;\n this.Ch = T256_IV[4] | 0;\n this.Cl = T256_IV[5] | 0;\n this.Dh = T256_IV[6] | 0;\n this.Dl = T256_IV[7] | 0;\n this.Eh = T256_IV[8] | 0;\n this.El = T256_IV[9] | 0;\n this.Fh = T256_IV[10] | 0;\n this.Fl = T256_IV[11] | 0;\n this.Gh = T256_IV[12] | 0;\n this.Gl = T256_IV[13] | 0;\n this.Hh = T256_IV[14] | 0;\n this.Hl = T256_IV[15] | 0;\n }\n}\n/**\n * SHA2-256 hash function from RFC 4634.\n *\n * It is the fastest JS hash, even faster than Blake3.\n * To break sha256 using birthday attack, attackers need to try 2^128 hashes.\n * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n */\nexport const sha256 = /* @__PURE__ */ createHasher(() => new SHA256());\n/** SHA2-224 hash function from RFC 4634 */\nexport const sha224 = /* @__PURE__ */ createHasher(() => new SHA224());\n/** SHA2-512 hash function from RFC 4634. */\nexport const sha512 = /* @__PURE__ */ createHasher(() => new SHA512());\n/** SHA2-384 hash function from RFC 4634. */\nexport const sha384 = /* @__PURE__ */ createHasher(() => new SHA384());\n/**\n * SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_256 = /* @__PURE__ */ createHasher(() => new SHA512_256());\n/**\n * SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_224 = /* @__PURE__ */ createHasher(() => new SHA512_224());\n//# sourceMappingURL=sha2.js.map","/**\n * HMAC: RFC2104 message authentication code.\n * @module\n */\nimport { abytes, aexists, ahash, clean, Hash, toBytes } from \"./utils.js\";\nexport class HMAC extends Hash {\n constructor(hash, _key) {\n super();\n this.finished = false;\n this.destroyed = false;\n ahash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create();\n if (typeof this.iHash.update !== 'function')\n throw new Error('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n clean(pad);\n }\n update(buf) {\n aexists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n aexists(this);\n abytes(out, this.outputLen);\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to || (to = Object.create(Object.getPrototypeOf(this), {}));\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n clone() {\n return this._cloneInto();\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n * @example\n * import { hmac } from '@noble/hashes/hmac';\n * import { sha256 } from '@noble/hashes/sha2';\n * const mac1 = hmac(sha256, 'key', 'message');\n */\nexport const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new HMAC(hash, key);\n//# sourceMappingURL=hmac.js.map","/**\n * Hex, bytes and number utilities.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { abytes as abytes_, bytesToHex as bytesToHex_, concatBytes as concatBytes_, hexToBytes as hexToBytes_, isBytes as isBytes_, } from '@noble/hashes/utils.js';\nexport { abytes, anumber, bytesToHex, bytesToUtf8, concatBytes, hexToBytes, isBytes, randomBytes, utf8ToBytes, } from '@noble/hashes/utils.js';\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nexport function abool(title, value) {\n if (typeof value !== 'boolean')\n throw new Error(title + ' boolean expected, got ' + value);\n}\n// tmp name until v2\nexport function _abool2(value, title = '') {\n if (typeof value !== 'boolean') {\n const prefix = title && `\"${title}\"`;\n throw new Error(prefix + 'expected boolean, got type=' + typeof value);\n }\n return value;\n}\n// tmp name until v2\n/** Asserts something is Uint8Array. */\nexport function _abytes2(value, length, title = '') {\n const bytes = isBytes_(value);\n const len = value?.length;\n const needsLen = length !== undefined;\n if (!bytes || (needsLen && len !== length)) {\n const prefix = title && `\"${title}\" `;\n const ofLen = needsLen ? ` of length ${length}` : '';\n const got = bytes ? `length=${len}` : `type=${typeof value}`;\n throw new Error(prefix + 'expected Uint8Array' + ofLen + ', got ' + got);\n }\n return value;\n}\n// Used in weierstrass, der\nexport function numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? '0' + hex : hex;\n}\nexport function hexToNumber(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n return hex === '' ? _0n : BigInt('0x' + hex); // Big Endian\n}\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes) {\n return hexToNumber(bytesToHex_(bytes));\n}\nexport function bytesToNumberLE(bytes) {\n abytes_(bytes);\n return hexToNumber(bytesToHex_(Uint8Array.from(bytes).reverse()));\n}\nexport function numberToBytesBE(n, len) {\n return hexToBytes_(n.toString(16).padStart(len * 2, '0'));\n}\nexport function numberToBytesLE(n, len) {\n return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n) {\n return hexToBytes_(numberToHexUnpadded(n));\n}\n/**\n * Takes hex string or Uint8Array, converts to Uint8Array.\n * Validates output length.\n * Will throw error for other types.\n * @param title descriptive title for an error e.g. 'secret key'\n * @param hex hex string or Uint8Array\n * @param expectedLength optional, will compare to result array's length\n * @returns\n */\nexport function ensureBytes(title, hex, expectedLength) {\n let res;\n if (typeof hex === 'string') {\n try {\n res = hexToBytes_(hex);\n }\n catch (e) {\n throw new Error(title + ' must be hex string or Uint8Array, cause: ' + e);\n }\n }\n else if (isBytes_(hex)) {\n // Uint8Array.from() instead of hash.slice() because node.js Buffer\n // is instance of Uint8Array, and its slice() creates **mutable** copy\n res = Uint8Array.from(hex);\n }\n else {\n throw new Error(title + ' must be hex string or Uint8Array');\n }\n const len = res.length;\n if (typeof expectedLength === 'number' && len !== expectedLength)\n throw new Error(title + ' of length ' + expectedLength + ' expected, got ' + len);\n return res;\n}\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a, b) {\n if (a.length !== b.length)\n return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++)\n diff |= a[i] ^ b[i];\n return diff === 0;\n}\n/**\n * Copies Uint8Array. We can't use u8a.slice(), because u8a can be Buffer,\n * and Buffer#slice creates mutable copy. Never use Buffers!\n */\nexport function copyBytes(bytes) {\n return Uint8Array.from(bytes);\n}\n/**\n * Decodes 7-bit ASCII string to Uint8Array, throws on non-ascii symbols\n * Should be safe to use for things expected to be ASCII.\n * Returns exact same result as utf8ToBytes for ASCII or throws.\n */\nexport function asciiToBytes(ascii) {\n return Uint8Array.from(ascii, (c, i) => {\n const charCode = c.charCodeAt(0);\n if (c.length !== 1 || charCode > 127) {\n throw new Error(`string contains non-ASCII character \"${ascii[i]}\" with code ${charCode} at position ${i}`);\n }\n return charCode;\n });\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\n// export const utf8ToBytes: typeof utf8ToBytes_ = utf8ToBytes_;\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\n// export const bytesToUtf8: typeof bytesToUtf8_ = bytesToUtf8_;\n// Is positive bigint\nconst isPosBig = (n) => typeof n === 'bigint' && _0n <= n;\nexport function inRange(n, min, max) {\n return isPosBig(n) && isPosBig(min) && isPosBig(max) && min <= n && n < max;\n}\n/**\n * Asserts min <= n < max. NOTE: It's < max and not <= max.\n * @example\n * aInRange('x', x, 1n, 256n); // would assume x is in (1n..255n)\n */\nexport function aInRange(title, n, min, max) {\n // Why min <= n < max and not a (min < n < max) OR b (min <= n <= max)?\n // consider P=256n, min=0n, max=P\n // - a for min=0 would require -1: `inRange('x', x, -1n, P)`\n // - b would commonly require subtraction: `inRange('x', x, 0n, P - 1n)`\n // - our way is the cleanest: `inRange('x', x, 0n, P)\n if (!inRange(n, min, max))\n throw new Error('expected valid ' + title + ': ' + min + ' <= n < ' + max + ', got ' + n);\n}\n// Bit operations\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n * TODO: merge with nLength in modular\n */\nexport function bitLen(n) {\n let len;\n for (len = 0; n > _0n; n >>= _1n, len += 1)\n ;\n return len;\n}\n/**\n * Gets single bit at position.\n * NOTE: first bit position is 0 (same as arrays)\n * Same as `!!+Array.from(n.toString(2)).reverse()[pos]`\n */\nexport function bitGet(n, pos) {\n return (n >> BigInt(pos)) & _1n;\n}\n/**\n * Sets single bit at position.\n */\nexport function bitSet(n, pos, value) {\n return n | ((value ? _1n : _0n) << BigInt(pos));\n}\n/**\n * Calculate mask for N bits. Not using ** operator with bigints because of old engines.\n * Same as BigInt(`0b${Array(i).fill('1').join('')}`)\n */\nexport const bitMask = (n) => (_1n << BigInt(n)) - _1n;\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n * const drbg = createHmacDRBG<Key>(32, 32, hmac);\n * drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(hashLen, qByteLen, hmacFn) {\n if (typeof hashLen !== 'number' || hashLen < 2)\n throw new Error('hashLen must be a number');\n if (typeof qByteLen !== 'number' || qByteLen < 2)\n throw new Error('qByteLen must be a number');\n if (typeof hmacFn !== 'function')\n throw new Error('hmacFn must be a function');\n // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n const u8n = (len) => new Uint8Array(len); // creates Uint8Array\n const u8of = (byte) => Uint8Array.of(byte); // another shortcut\n let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n let i = 0; // Iterations counter, will throw when over 1000\n const reset = () => {\n v.fill(1);\n k.fill(0);\n i = 0;\n };\n const h = (...b) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n const reseed = (seed = u8n(0)) => {\n // HMAC-DRBG reseed() function. Steps D-G\n k = h(u8of(0x00), seed); // k = hmac(k || v || 0x00 || seed)\n v = h(); // v = hmac(k || v)\n if (seed.length === 0)\n return;\n k = h(u8of(0x01), seed); // k = hmac(k || v || 0x01 || seed)\n v = h(); // v = hmac(k || v)\n };\n const gen = () => {\n // HMAC-DRBG generate() function\n if (i++ >= 1000)\n throw new Error('drbg: tried 1000 values');\n let len = 0;\n const out = [];\n while (len < qByteLen) {\n v = h();\n const sl = v.slice();\n out.push(sl);\n len += v.length;\n }\n return concatBytes_(...out);\n };\n const genUntil = (seed, pred) => {\n reset();\n reseed(seed); // Steps D-G\n let res = undefined; // Step H: grind until k is in [1..n-1]\n while (!(res = pred(gen())))\n reseed();\n reset();\n return res;\n };\n return genUntil;\n}\n// Validating curves and fields\nconst validatorFns = {\n bigint: (val) => typeof val === 'bigint',\n function: (val) => typeof val === 'function',\n boolean: (val) => typeof val === 'boolean',\n string: (val) => typeof val === 'string',\n stringOrUint8Array: (val) => typeof val === 'string' || isBytes_(val),\n isSafeInteger: (val) => Number.isSafeInteger(val),\n array: (val) => Array.isArray(val),\n field: (val, object) => object.Fp.isValid(val),\n hash: (val) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n};\n// type Record<K extends string | number | symbol, T> = { [P in K]: T; }\nexport function validateObject(object, validators, optValidators = {}) {\n const checkField = (fieldName, type, isOptional) => {\n const checkVal = validatorFns[type];\n if (typeof checkVal !== 'function')\n throw new Error('invalid validator function');\n const val = object[fieldName];\n if (isOptional && val === undefined)\n return;\n if (!checkVal(val, object)) {\n throw new Error('param ' + String(fieldName) + ' is invalid. Expected ' + type + ', got ' + val);\n }\n };\n for (const [fieldName, type] of Object.entries(validators))\n checkField(fieldName, type, false);\n for (const [fieldName, type] of Object.entries(optValidators))\n checkField(fieldName, type, true);\n return object;\n}\n// validate type tests\n// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };\n// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!\n// // Should fail type-check\n// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });\n// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });\n// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });\n// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });\nexport function isHash(val) {\n return typeof val === 'function' && Number.isSafeInteger(val.outputLen);\n}\nexport function _validateObject(object, fields, optFields = {}) {\n if (!object || typeof object !== 'object')\n throw new Error('expected valid options object');\n function checkField(fieldName, expectedType, isOpt) {\n const val = object[fieldName];\n if (isOpt && val === undefined)\n return;\n const current = typeof val;\n if (current !== expectedType || val === null)\n throw new Error(`param \"${fieldName}\" is invalid: expected ${expectedType}, got ${current}`);\n }\n Object.entries(fields).forEach(([k, v]) => checkField(k, v, false));\n Object.entries(optFields).forEach(([k, v]) => checkField(k, v, true));\n}\n/**\n * throws not implemented error\n */\nexport const notImplemented = () => {\n throw new Error('not implemented');\n};\n/**\n * Memoizes (caches) computation result.\n * Uses WeakMap: the value is going auto-cleaned by GC after last reference is removed.\n */\nexport function memoized(fn) {\n const map = new WeakMap();\n return (arg, ...args) => {\n const val = map.get(arg);\n if (val !== undefined)\n return val;\n const computed = fn(arg, ...args);\n map.set(arg, computed);\n return computed;\n };\n}\n//# sourceMappingURL=utils.js.map","/**\n * Utils for modular division and fields.\n * Field over 11 is a finite (Galois) field is integer number operations `mod 11`.\n * There is no division: it is replaced by modular multiplicative inverse.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { _validateObject, anumber, bitMask, bytesToNumberBE, bytesToNumberLE, ensureBytes, numberToBytesBE, numberToBytesLE, } from \"../utils.js\";\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = /* @__PURE__ */ BigInt(2), _3n = /* @__PURE__ */ BigInt(3);\n// prettier-ignore\nconst _4n = /* @__PURE__ */ BigInt(4), _5n = /* @__PURE__ */ BigInt(5), _7n = /* @__PURE__ */ BigInt(7);\n// prettier-ignore\nconst _8n = /* @__PURE__ */ BigInt(8), _9n = /* @__PURE__ */ BigInt(9), _16n = /* @__PURE__ */ BigInt(16);\n// Calculates a modulo b\nexport function mod(a, b) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\nexport function pow(num, power, modulo) {\n return FpPow(Field(modulo), num, power);\n}\n/** Does `x^(2^power)` mod p. `pow2(30, 4)` == `30^(2^4)` */\nexport function pow2(x, power, modulo) {\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= modulo;\n }\n return res;\n}\n/**\n * Inverses number over modulo.\n * Implemented using [Euclidean GCD](https://brilliant.org/wiki/extended-euclidean-algorithm/).\n */\nexport function invert(number, modulo) {\n if (number === _0n)\n throw new Error('invert: expected non-zero number');\n if (modulo <= _0n)\n throw new Error('invert: expected positive modulus, got ' + modulo);\n // Fermat's little theorem \"CT-like\" version inv(n) = n^(m-2) mod m is 30x slower.\n let a = mod(number, modulo);\n let b = modulo;\n // prettier-ignore\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n // JIT applies optimization if those two lines follow each other\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n // prettier-ignore\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\nfunction assertIsSquare(Fp, root, n) {\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n}\n// Not all roots are possible! Example which will throw:\n// const NUM =\n// n = 72057594037927816n;\n// Fp = Field(BigInt('0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab'));\nfunction sqrt3mod4(Fp, n) {\n const p1div4 = (Fp.ORDER + _1n) / _4n;\n const root = Fp.pow(n, p1div4);\n assertIsSquare(Fp, root, n);\n return root;\n}\nfunction sqrt5mod8(Fp, n) {\n const p5div8 = (Fp.ORDER - _5n) / _8n;\n const n2 = Fp.mul(n, _2n);\n const v = Fp.pow(n2, p5div8);\n const nv = Fp.mul(n, v);\n const i = Fp.mul(Fp.mul(nv, _2n), v);\n const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n assertIsSquare(Fp, root, n);\n return root;\n}\n// Based on RFC9380, Kong algorithm\n// prettier-ignore\nfunction sqrt9mod16(P) {\n const Fp_ = Field(P);\n const tn = tonelliShanks(P);\n const c1 = tn(Fp_, Fp_.neg(Fp_.ONE)); // 1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n const c2 = tn(Fp_, c1); // 2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n const c3 = tn(Fp_, Fp_.neg(c1)); // 3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n const c4 = (P + _7n) / _16n; // 4. c4 = (q + 7) / 16 # Integer arithmetic\n return (Fp, n) => {\n let tv1 = Fp.pow(n, c4); // 1. tv1 = x^c4\n let tv2 = Fp.mul(tv1, c1); // 2. tv2 = c1 * tv1\n const tv3 = Fp.mul(tv1, c2); // 3. tv3 = c2 * tv1\n const tv4 = Fp.mul(tv1, c3); // 4. tv4 = c3 * tv1\n const e1 = Fp.eql(Fp.sqr(tv2), n); // 5. e1 = (tv2^2) == x\n const e2 = Fp.eql(Fp.sqr(tv3), n); // 6. e2 = (tv3^2) == x\n tv1 = Fp.cmov(tv1, tv2, e1); // 7. tv1 = CMOV(tv1, tv2, e1) # Select tv2 if (tv2^2) == x\n tv2 = Fp.cmov(tv4, tv3, e2); // 8. tv2 = CMOV(tv4, tv3, e2) # Select tv3 if (tv3^2) == x\n const e3 = Fp.eql(Fp.sqr(tv2), n); // 9. e3 = (tv2^2) == x\n const root = Fp.cmov(tv1, tv2, e3); // 10. z = CMOV(tv1, tv2, e3) # Select sqrt from tv1 & tv2\n assertIsSquare(Fp, root, n);\n return root;\n };\n}\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P) {\n // Initialization (precomputation).\n // Caching initialization could boost perf by 7%.\n if (P < _3n)\n throw new Error('sqrt is not defined for small field');\n // Factor P - 1 = Q * 2^S, where Q is odd\n let Q = P - _1n;\n let S = 0;\n while (Q % _2n === _0n) {\n Q /= _2n;\n S++;\n }\n // Find the first quadratic non-residue Z >= 2\n let Z = _2n;\n const _Fp = Field(P);\n while (FpLegendre(_Fp, Z) === 1) {\n // Basic primality test for P. After x iterations, chance of\n // not finding quadratic non-residue is 2^x, so 2^1000.\n if (Z++ > 1000)\n throw new Error('Cannot find square root: probably non-prime P');\n }\n // Fast-path; usually done before Z, but we do \"primality test\".\n if (S === 1)\n return sqrt3mod4;\n // Slow-path\n // TODO: test on Fp2 and others\n let cc = _Fp.pow(Z, Q); // c = z^Q\n const Q1div2 = (Q + _1n) / _2n;\n return function tonelliSlow(Fp, n) {\n if (Fp.is0(n))\n return n;\n // Check if n is a quadratic residue using Legendre symbol\n if (FpLegendre(Fp, n) !== 1)\n throw new Error('Cannot find square root');\n // Initialize variables for the main loop\n let M = S;\n let c = Fp.mul(Fp.ONE, cc); // c = z^Q, move cc from field _Fp into field Fp\n let t = Fp.pow(n, Q); // t = n^Q, first guess at the fudge factor\n let R = Fp.pow(n, Q1div2); // R = n^((Q+1)/2), first guess at the square root\n // Main loop\n // while t != 1\n while (!Fp.eql(t, Fp.ONE)) {\n if (Fp.is0(t))\n return Fp.ZERO; // if t=0 return R=0\n let i = 1;\n // Find the smallest i >= 1 such that t^(2^i) ≡ 1 (mod P)\n let t_tmp = Fp.sqr(t); // t^(2^1)\n while (!Fp.eql(t_tmp, Fp.ONE)) {\n i++;\n t_tmp = Fp.sqr(t_tmp); // t^(2^2)...\n if (i === M)\n throw new Error('Cannot find square root');\n }\n // Calculate the exponent for b: 2^(M - i - 1)\n const exponent = _1n << BigInt(M - i - 1); // bigint is important\n const b = Fp.pow(c, exponent); // b = 2^(M - i - 1)\n // Update variables\n M = i;\n c = Fp.sqr(b); // c = b^2\n t = Fp.mul(t, c); // t = (t * b^2)\n R = Fp.mul(R, b); // R = R*b\n }\n return R;\n };\n}\n/**\n * Square root for a finite field. Will try optimized versions first:\n *\n * 1. P ≡ 3 (mod 4)\n * 2. P ≡ 5 (mod 8)\n * 3. P ≡ 9 (mod 16)\n * 4. Tonelli-Shanks algorithm\n *\n * Different algorithms can give different roots, it is up to user to decide which one they want.\n * For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).\n */\nexport function FpSqrt(P) {\n // P ≡ 3 (mod 4) => √n = n^((P+1)/4)\n if (P % _4n === _3n)\n return sqrt3mod4;\n // P ≡ 5 (mod 8) => Atkin algorithm, page 10 of https://eprint.iacr.org/2012/685.pdf\n if (P % _8n === _5n)\n return sqrt5mod8;\n // P ≡ 9 (mod 16) => Kong algorithm, page 11 of https://eprint.iacr.org/2012/685.pdf (algorithm 4)\n if (P % _16n === _9n)\n return sqrt9mod16(P);\n // Tonelli-Shanks algorithm\n return tonelliShanks(P);\n}\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num, modulo) => (mod(num, modulo) & _1n) === _1n;\n// prettier-ignore\nconst FIELD_FIELDS = [\n 'create', 'isValid', 'is0', 'neg', 'inv', 'sqrt', 'sqr',\n 'eql', 'add', 'sub', 'mul', 'pow', 'div',\n 'addN', 'subN', 'mulN', 'sqrN'\n];\nexport function validateField(field) {\n const initial = {\n ORDER: 'bigint',\n MASK: 'bigint',\n BYTES: 'number',\n BITS: 'number',\n };\n const opts = FIELD_FIELDS.reduce((map, val) => {\n map[val] = 'function';\n return map;\n }, initial);\n _validateObject(field, opts);\n // const max = 16384;\n // if (field.BYTES < 1 || field.BYTES > max) throw new Error('invalid field');\n // if (field.BITS < 1 || field.BITS > 8 * max) throw new Error('invalid field');\n return field;\n}\n// Generic field functions\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow(Fp, num, power) {\n if (power < _0n)\n throw new Error('invalid exponent, negatives unsupported');\n if (power === _0n)\n return Fp.ONE;\n if (power === _1n)\n return num;\n let p = Fp.ONE;\n let d = num;\n while (power > _0n) {\n if (power & _1n)\n p = Fp.mul(p, d);\n d = Fp.sqr(d);\n power >>= _1n;\n }\n return p;\n}\n/**\n * Efficiently invert an array of Field elements.\n * Exception-free. Will return `undefined` for 0 elements.\n * @param passZero map 0 to 0 (instead of undefined)\n */\nexport function FpInvertBatch(Fp, nums, passZero = false) {\n const inverted = new Array(nums.length).fill(passZero ? Fp.ZERO : undefined);\n // Walk from first to last, multiply them by each other MOD p\n const multipliedAcc = nums.reduce((acc, num, i) => {\n if (Fp.is0(num))\n return acc;\n inverted[i] = acc;\n return Fp.mul(acc, num);\n }, Fp.ONE);\n // Invert last element\n const invertedAcc = Fp.inv(multipliedAcc);\n // Walk from last to first, multiply them by inverted each other MOD p\n nums.reduceRight((acc, num, i) => {\n if (Fp.is0(num))\n return acc;\n inverted[i] = Fp.mul(acc, inverted[i]);\n return Fp.mul(acc, num);\n }, invertedAcc);\n return inverted;\n}\n// TODO: remove\nexport function FpDiv(Fp, lhs, rhs) {\n return Fp.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, Fp.ORDER) : Fp.inv(rhs));\n}\n/**\n * Legendre symbol.\n * Legendre constant is used to calculate Legendre symbol (a | p)\n * which denotes the value of a^((p-1)/2) (mod p).\n *\n * * (a | p) ≡ 1 if a is a square (mod p), quadratic residue\n * * (a | p) ≡ -1 if a is not a square (mod p), quadratic non residue\n * * (a | p) ≡ 0 if a ≡ 0 (mod p)\n */\nexport function FpLegendre(Fp, n) {\n // We can use 3rd argument as optional cache of this value\n // but seems unneeded for now. The operation is very fast.\n const p1mod2 = (Fp.ORDER - _1n) / _2n;\n const powered = Fp.pow(n, p1mod2);\n const yes = Fp.eql(powered, Fp.ONE);\n const zero = Fp.eql(powered, Fp.ZERO);\n const no = Fp.eql(powered, Fp.neg(Fp.ONE));\n if (!yes && !zero && !no)\n throw new Error('invalid Legendre symbol result');\n return yes ? 1 : zero ? 0 : -1;\n}\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(Fp, n) {\n const l = FpLegendre(Fp, n);\n return l === 1;\n}\n// CURVE.n lengths\nexport function nLength(n, nBitLength) {\n // Bit size, byte size of CURVE.n\n if (nBitLength !== undefined)\n anumber(nBitLength);\n const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n const nByteLength = Math.ceil(_nBitLength / 8);\n return { nBitLength: _nBitLength, nByteLength };\n}\n/**\n * Creates a finite field. Major performance optimizations:\n * * 1. Denormalized operations like mulN instead of mul.\n * * 2. Identical object shape: never add or remove keys.\n * * 3. `Object.freeze`.\n * Fragile: always run a benchmark on a change.\n * Security note: operations don't check 'isValid' for all elements for performance reasons,\n * it is caller responsibility to check this.\n * This is low-level code, please make sure you know what you're doing.\n *\n * Note about field properties:\n * * CHARACTERISTIC p = prime number, number of elements in main subgroup.\n * * ORDER q = similar to cofactor in curves, may be composite `q = p^m`.\n *\n * @param ORDER field order, probably prime, or could be composite\n * @param bitLen how many bits the field consumes\n * @param isLE (default: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(ORDER, bitLenOrOpts, // TODO: use opts only in v2?\nisLE = false, opts = {}) {\n if (ORDER <= _0n)\n throw new Error('invalid field: expected ORDER > 0, got ' + ORDER);\n let _nbitLength = undefined;\n let _sqrt = undefined;\n let modFromBytes = false;\n let allowedLengths = undefined;\n if (typeof bitLenOrOpts === 'object' && bitLenOrOpts != null) {\n if (opts.sqrt || isLE)\n throw new Error('cannot specify opts in two arguments');\n const _opts = bitLenOrOpts;\n if (_opts.BITS)\n _nbitLength = _opts.BITS;\n if (_opts.sqrt)\n _sqrt = _opts.sqrt;\n if (typeof _opts.isLE === 'boolean')\n isLE = _opts.isLE;\n if (typeof _opts.modFromBytes === 'boolean')\n modFromBytes = _opts.modFromBytes;\n allowedLengths = _opts.allowedLengths;\n }\n else {\n if (typeof bitLenOrOpts === 'number')\n _nbitLength = bitLenOrOpts;\n if (opts.sqrt)\n _sqrt = opts.sqrt;\n }\n const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, _nbitLength);\n if (BYTES > 2048)\n throw new Error('invalid field: expected ORDER of <= 2048 bytes');\n let sqrtP; // cached sqrtP\n const f = Object.freeze({\n ORDER,\n isLE,\n BITS,\n BYTES,\n MASK: bitMask(BITS),\n ZERO: _0n,\n ONE: _1n,\n allowedLengths: allowedLengths,\n create: (num) => mod(num, ORDER),\n isValid: (num) => {\n if (typeof num !== 'bigint')\n throw new Error('invalid field element: expected bigint, got ' + typeof num);\n return _0n <= num && num < ORDER; // 0 is valid element, but it's not invertible\n },\n is0: (num) => num === _0n,\n // is valid and invertible\n isValidNot0: (num) => !f.is0(num) && f.isValid(num),\n isOdd: (num) => (num & _1n) === _1n,\n neg: (num) => mod(-num, ORDER),\n eql: (lhs, rhs) => lhs === rhs,\n sqr: (num) => mod(num * num, ORDER),\n add: (lhs, rhs) => mod(lhs + rhs, ORDER),\n sub: (lhs, rhs) => mod(lhs - rhs, ORDER),\n mul: (lhs, rhs) => mod(lhs * rhs, ORDER),\n pow: (num, power) => FpPow(f, num, power),\n div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),\n // Same as above, but doesn't normalize\n sqrN: (num) => num * num,\n addN: (lhs, rhs) => lhs + rhs,\n subN: (lhs, rhs) => lhs - rhs,\n mulN: (lhs, rhs) => lhs * rhs,\n inv: (num) => invert(num, ORDER),\n sqrt: _sqrt ||\n ((n) => {\n if (!sqrtP)\n sqrtP = FpSqrt(ORDER);\n return sqrtP(f, n);\n }),\n toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n fromBytes: (bytes, skipValidation = true) => {\n if (allowedLengths) {\n if (!allowedLengths.includes(bytes.length) || bytes.length > BYTES) {\n throw new Error('Field.fromBytes: expected ' + allowedLengths + ' bytes, got ' + bytes.length);\n }\n const padded = new Uint8Array(BYTES);\n // isLE add 0 to right, !isLE to the left.\n padded.set(bytes, isLE ? 0 : padded.length - bytes.length);\n bytes = padded;\n }\n if (bytes.length !== BYTES)\n throw new Error('Field.fromBytes: expected ' + BYTES + ' bytes, got ' + bytes.length);\n let scalar = isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n if (modFromBytes)\n scalar = mod(scalar, ORDER);\n if (!skipValidation)\n if (!f.isValid(scalar))\n throw new Error('invalid field element: outside of range 0..ORDER');\n // NOTE: we don't validate scalar here, please use isValid. This done such way because some\n // protocol may allow non-reduced scalar that reduced later or changed some other way.\n return scalar;\n },\n // TODO: we don't need it here, move out to separate fn\n invertBatch: (lst) => FpInvertBatch(f, lst),\n // We can't move this out because Fp6, Fp12 implement it\n // and it's unclear what to return in there.\n cmov: (a, b, c) => (c ? b : a),\n });\n return Object.freeze(f);\n}\n// Generic random scalar, we can do same for other fields if via Fp2.mul(Fp2.ONE, Fp2.random)?\n// This allows unsafe methods like ignore bias or zero. These unsafe, but often used in different protocols (if deterministic RNG).\n// which mean we cannot force this via opts.\n// Not sure what to do with randomBytes, we can accept it inside opts if wanted.\n// Probably need to export getMinHashLength somewhere?\n// random(bytes?: Uint8Array, unsafeAllowZero = false, unsafeAllowBias = false) {\n// const LEN = !unsafeAllowBias ? getMinHashLength(ORDER) : BYTES;\n// if (bytes === undefined) bytes = randomBytes(LEN); // _opts.randomBytes?\n// const num = isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n// // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n// const reduced = unsafeAllowZero ? mod(num, ORDER) : mod(num, ORDER - _1n) + _1n;\n// return reduced;\n// },\nexport function FpSqrtOdd(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(\"Field doesn't have isOdd\");\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? root : Fp.neg(root);\n}\nexport function FpSqrtEven(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(\"Field doesn't have isOdd\");\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? Fp.neg(root) : root;\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Same as mapKeyToField, but accepts less bytes (40 instead of 48 for 32-byte field).\n * Which makes it slightly more biased, less secure.\n * @deprecated use `mapKeyToField` instead\n */\nexport function hashToPrivateScalar(hash, groupOrder, isLE = false) {\n hash = ensureBytes('privateHash', hash);\n const hashLen = hash.length;\n const minLen = nLength(groupOrder).nByteLength + 8;\n if (minLen < 24 || hashLen < minLen || hashLen > 1024)\n throw new Error('hashToPrivateScalar: expected ' + minLen + '-1024 bytes of input, got ' + hashLen);\n const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);\n return mod(num, groupOrder - _1n) + _1n;\n}\n/**\n * Returns total number of bytes consumed by the field element.\n * For example, 32 bytes for usual 256-bit weierstrass curve.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of field\n */\nexport function getFieldBytesLength(fieldOrder) {\n if (typeof fieldOrder !== 'bigint')\n throw new Error('field order must be bigint');\n const bitLength = fieldOrder.toString(2).length;\n return Math.ceil(bitLength / 8);\n}\n/**\n * Returns minimal amount of bytes that can be safely reduced\n * by field order.\n * Should be 2^-128 for 128-bit curve such as P256.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of target hash\n */\nexport function getMinHashLength(fieldOrder) {\n const length = getFieldBytesLength(fieldOrder);\n return length + Math.ceil(length / 2);\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Can take (n + n/2) or more bytes of uniform input e.g. from CSPRNG or KDF\n * and convert them into private scalar, with the modulo bias being negligible.\n * Needs at least 48 bytes of input for 32-byte private key.\n * https://research.kudelskisecurity.com/2020/07/28/the-definitive-guide-to-modulo-bias-and-how-to-avoid-it/\n * FIPS 186-5, A.2 https://csrc.nist.gov/publications/detail/fips/186/5/final\n * RFC 9380, https://www.rfc-editor.org/rfc/rfc9380#section-5\n * @param hash hash output from SHA3 or a similar function\n * @param groupOrder size of subgroup - (e.g. secp256k1.CURVE.n)\n * @param isLE interpret hash bytes as LE num\n * @returns valid private scalar\n */\nexport function mapHashToField(key, fieldOrder, isLE = false) {\n const len = key.length;\n const fieldLen = getFieldBytesLength(fieldOrder);\n const minLen = getMinHashLength(fieldOrder);\n // No small numbers: need to understand bias story. No huge numbers: easier to detect JS timings.\n if (len < 16 || len < minLen || len > 1024)\n throw new Error('expected ' + minLen + '-1024 bytes of input, got ' + len);\n const num = isLE ? bytesToNumberLE(key) : bytesToNumberBE(key);\n // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n const reduced = mod(num, fieldOrder - _1n) + _1n;\n return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);\n}\n//# sourceMappingURL=modular.js.map","/**\n * Methods for elliptic curve multiplication by scalars.\n * Contains wNAF, pippenger.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { bitLen, bitMask, validateObject } from \"../utils.js\";\nimport { Field, FpInvertBatch, nLength, validateField } from \"./modular.js\";\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nexport function negateCt(condition, item) {\n const neg = item.negate();\n return condition ? neg : item;\n}\n/**\n * Takes a bunch of Projective Points but executes only one\n * inversion on all of them. Inversion is very slow operation,\n * so this improves performance massively.\n * Optimization: converts a list of projective points to a list of identical points with Z=1.\n */\nexport function normalizeZ(c, points) {\n const invertedZs = FpInvertBatch(c.Fp, points.map((p) => p.Z));\n return points.map((p, i) => c.fromAffine(p.toAffine(invertedZs[i])));\n}\nfunction validateW(W, bits) {\n if (!Number.isSafeInteger(W) || W <= 0 || W > bits)\n throw new Error('invalid window size, expected [1..' + bits + '], got W=' + W);\n}\nfunction calcWOpts(W, scalarBits) {\n validateW(W, scalarBits);\n const windows = Math.ceil(scalarBits / W) + 1; // W=8 33. Not 32, because we skip zero\n const windowSize = 2 ** (W - 1); // W=8 128. Not 256, because we skip zero\n const maxNumber = 2 ** W; // W=8 256\n const mask = bitMask(W); // W=8 255 == mask 0b11111111\n const shiftBy = BigInt(W); // W=8 8\n return { windows, windowSize, mask, maxNumber, shiftBy };\n}\nfunction calcOffsets(n, window, wOpts) {\n const { windowSize, mask, maxNumber, shiftBy } = wOpts;\n let wbits = Number(n & mask); // extract W bits.\n let nextN = n >> shiftBy; // shift number by W bits.\n // What actually happens here:\n // const highestBit = Number(mask ^ (mask >> 1n));\n // let wbits2 = wbits - 1; // skip zero\n // if (wbits2 & highestBit) { wbits2 ^= Number(mask); // (~);\n // split if bits > max: +224 => 256-32\n if (wbits > windowSize) {\n // we skip zero, which means instead of `>= size-1`, we do `> size`\n wbits -= maxNumber; // -32, can be maxNumber - wbits, but then we need to set isNeg here.\n nextN += _1n; // +256 (carry)\n }\n const offsetStart = window * windowSize;\n const offset = offsetStart + Math.abs(wbits) - 1; // -1 because we skip zero\n const isZero = wbits === 0; // is current window slice a 0?\n const isNeg = wbits < 0; // is current window slice negative?\n const isNegF = window % 2 !== 0; // fake random statement for noise\n const offsetF = offsetStart; // fake offset for noise\n return { nextN, offset, isZero, isNeg, isNegF, offsetF };\n}\nfunction validateMSMPoints(points, c) {\n if (!Array.isArray(points))\n throw new Error('array expected');\n points.forEach((p, i) => {\n if (!(p instanceof c))\n throw new Error('invalid point at index ' + i);\n });\n}\nfunction validateMSMScalars(scalars, field) {\n if (!Array.isArray(scalars))\n throw new Error('array of scalars expected');\n scalars.forEach((s, i) => {\n if (!field.isValid(s))\n throw new Error('invalid scalar at index ' + i);\n });\n}\n// Since points in different groups cannot be equal (different object constructor),\n// we can have single place to store precomputes.\n// Allows to make points frozen / immutable.\nconst pointPrecomputes = new WeakMap();\nconst pointWindowSizes = new WeakMap();\nfunction getW(P) {\n // To disable precomputes:\n // return 1;\n return pointWindowSizes.get(P) || 1;\n}\nfunction assert0(n) {\n if (n !== _0n)\n throw new Error('invalid wNAF');\n}\n/**\n * Elliptic curve multiplication of Point by scalar. Fragile.\n * Table generation takes **30MB of ram and 10ms on high-end CPU**,\n * but may take much longer on slow devices. Actual generation will happen on\n * first call of `multiply()`. By default, `BASE` point is precomputed.\n *\n * Scalars should always be less than curve order: this should be checked inside of a curve itself.\n * Creates precomputation tables for fast multiplication:\n * - private scalar is split by fixed size windows of W bits\n * - every window point is collected from window's table & added to accumulator\n * - since windows are different, same point inside tables won't be accessed more than once per calc\n * - each multiplication is 'Math.ceil(CURVE_ORDER / 𝑊) + 1' point additions (fixed for any scalar)\n * - +1 window is neccessary for wNAF\n * - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n *\n * @todo Research returning 2d JS array of windows, instead of a single window.\n * This would allow windows to be in different memory locations\n */\nexport class wNAF {\n // Parametrized with a given Point class (not individual point)\n constructor(Point, bits) {\n this.BASE = Point.BASE;\n this.ZERO = Point.ZERO;\n this.Fn = Point.Fn;\n this.bits = bits;\n }\n // non-const time multiplication ladder\n _unsafeLadder(elm, n, p = this.ZERO) {\n let d = elm;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n }\n /**\n * Creates a wNAF precomputation window. Used for caching.\n * Default window size is set by `utils.precompute()` and is equal to 8.\n * Number of precomputed points depends on the curve size:\n * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:\n * - 𝑊 is the window size\n * - 𝑛 is the bitlength of the curve order.\n * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n * @param point Point instance\n * @param W window size\n * @returns precomputed point tables flattened to a single array\n */\n precomputeWindow(point, W) {\n const { windows, windowSize } = calcWOpts(W, this.bits);\n const points = [];\n let p = point;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n // i=1, bc we skip 0\n for (let i = 1; i < windowSize; i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n }\n /**\n * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n * More compact implementation:\n * https://github.com/paulmillr/noble-secp256k1/blob/47cb1669b6e506ad66b35fe7d76132ae97465da2/index.ts#L502-L541\n * @returns real and fake (for const-time) points\n */\n wNAF(W, precomputes, n) {\n // Scalar should be smaller than field order\n if (!this.Fn.isValid(n))\n throw new Error('invalid scalar');\n // Accumulators\n let p = this.ZERO;\n let f = this.BASE;\n // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n // there is negate now: it is possible that negated element from low value\n // would be the same as high element, which will create carry into next window.\n // It's not obvious how this can fail, but still worth investigating later.\n const wo = calcWOpts(W, this.bits);\n for (let window = 0; window < wo.windows; window++) {\n // (n === _0n) is handled and not early-exited. isEven and offsetF are used for noise\n const { nextN, offset, isZero, isNeg, isNegF, offsetF } = calcOffsets(n, window, wo);\n n = nextN;\n if (isZero) {\n // bits are 0: add garbage to fake point\n // Important part for const-time getPublicKey: add random \"noise\" point to f.\n f = f.add(negateCt(isNegF, precomputes[offsetF]));\n }\n else {\n // bits are 1: add to result point\n p = p.add(negateCt(isNeg, precomputes[offset]));\n }\n }\n assert0(n);\n // Return both real and fake points: JIT won't eliminate f.\n // At this point there is a way to F be infinity-point even if p is not,\n // which makes it less const-time: around 1 bigint multiply.\n return { p, f };\n }\n /**\n * Implements ec unsafe (non const-time) multiplication using precomputed tables and w-ary non-adjacent form.\n * @param acc accumulator point to add result of multiplication\n * @returns point\n */\n wNAFUnsafe(W, precomputes, n, acc = this.ZERO) {\n const wo = calcWOpts(W, this.bits);\n for (let window = 0; window < wo.windows; window++) {\n if (n === _0n)\n break; // Early-exit, skip 0 value\n const { nextN, offset, isZero, isNeg } = calcOffsets(n, window, wo);\n n = nextN;\n if (isZero) {\n // Window bits are 0: skip processing.\n // Move to next window.\n continue;\n }\n else {\n const item = precomputes[offset];\n acc = acc.add(isNeg ? item.negate() : item); // Re-using acc allows to save adds in MSM\n }\n }\n assert0(n);\n return acc;\n }\n getPrecomputes(W, point, transform) {\n // Calculate precomputes on a first run, reuse them after\n let comp = pointPrecomputes.get(point);\n if (!comp) {\n comp = this.precomputeWindow(point, W);\n if (W !== 1) {\n // Doing transform outside of if brings 15% perf hit\n if (typeof transform === 'function')\n comp = transform(comp);\n pointPrecomputes.set(point, comp);\n }\n }\n return comp;\n }\n cached(point, scalar, transform) {\n const W = getW(point);\n return this.wNAF(W, this.getPrecomputes(W, point, transform), scalar);\n }\n unsafe(point, scalar, transform, prev) {\n const W = getW(point);\n if (W === 1)\n return this._unsafeLadder(point, scalar, prev); // For W=1 ladder is ~x2 faster\n return this.wNAFUnsafe(W, this.getPrecomputes(W, point, transform), scalar, prev);\n }\n // We calculate precomputes for elliptic curve point multiplication\n // using windowed method. This specifies window size and\n // stores precomputed values. Usually only base point would be precomputed.\n createCache(P, W) {\n validateW(W, this.bits);\n pointWindowSizes.set(P, W);\n pointPrecomputes.delete(P);\n }\n hasCache(elm) {\n return getW(elm) !== 1;\n }\n}\n/**\n * Endomorphism-specific multiplication for Koblitz curves.\n * Cost: 128 dbl, 0-256 adds.\n */\nexport function mulEndoUnsafe(Point, point, k1, k2) {\n let acc = point;\n let p1 = Point.ZERO;\n let p2 = Point.ZERO;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n p1 = p1.add(acc);\n if (k2 & _1n)\n p2 = p2.add(acc);\n acc = acc.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n return { p1, p2 };\n}\n/**\n * Pippenger algorithm for multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).\n * 30x faster vs naive addition on L=4096, 10x faster than precomputes.\n * For N=254bit, L=1, it does: 1024 ADD + 254 DBL. For L=5: 1536 ADD + 254 DBL.\n * Algorithmically constant-time (for same L), even when 1 point + scalar, or when scalar = 0.\n * @param c Curve Point constructor\n * @param fieldN field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @param scalars array of L scalars (aka secret keys / bigints)\n */\nexport function pippenger(c, fieldN, points, scalars) {\n // If we split scalars by some window (let's say 8 bits), every chunk will only\n // take 256 buckets even if there are 4096 scalars, also re-uses double.\n // TODO:\n // - https://eprint.iacr.org/2024/750.pdf\n // - https://tches.iacr.org/index.php/TCHES/article/view/10287\n // 0 is accepted in scalars\n validateMSMPoints(points, c);\n validateMSMScalars(scalars, fieldN);\n const plength = points.length;\n const slength = scalars.length;\n if (plength !== slength)\n throw new Error('arrays of points and scalars must have equal length');\n // if (plength === 0) throw new Error('array must be of length >= 2');\n const zero = c.ZERO;\n const wbits = bitLen(BigInt(plength));\n let windowSize = 1; // bits\n if (wbits > 12)\n windowSize = wbits - 3;\n else if (wbits > 4)\n windowSize = wbits - 2;\n else if (wbits > 0)\n windowSize = 2;\n const MASK = bitMask(windowSize);\n const buckets = new Array(Number(MASK) + 1).fill(zero); // +1 for zero array\n const lastBits = Math.floor((fieldN.BITS - 1) / windowSize) * windowSize;\n let sum = zero;\n for (let i = lastBits; i >= 0; i -= windowSize) {\n buckets.fill(zero);\n for (let j = 0; j < slength; j++) {\n const scalar = scalars[j];\n const wbits = Number((scalar >> BigInt(i)) & MASK);\n buckets[wbits] = buckets[wbits].add(points[j]);\n }\n let resI = zero; // not using this will do small speed-up, but will lose ct\n // Skip first bucket, because it is zero\n for (let j = buckets.length - 1, sumI = zero; j > 0; j--) {\n sumI = sumI.add(buckets[j]);\n resI = resI.add(sumI);\n }\n sum = sum.add(resI);\n if (i !== 0)\n for (let j = 0; j < windowSize; j++)\n sum = sum.double();\n }\n return sum;\n}\n/**\n * Precomputed multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).\n * @param c Curve Point constructor\n * @param fieldN field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @returns function which multiplies points with scaars\n */\nexport function precomputeMSMUnsafe(c, fieldN, points, windowSize) {\n /**\n * Performance Analysis of Window-based Precomputation\n *\n * Base Case (256-bit scalar, 8-bit window):\n * - Standard precomputation requires:\n * - 31 additions per scalar × 256 scalars = 7,936 ops\n * - Plus 255 summary additions = 8,191 total ops\n * Note: Summary additions can be optimized via accumulator\n *\n * Chunked Precomputation Analysis:\n * - Using 32 chunks requires:\n * - 255 additions per chunk\n * - 256 doublings\n * - Total: (255 × 32) + 256 = 8,416 ops\n *\n * Memory Usage Comparison:\n * Window Size | Standard Points | Chunked Points\n * ------------|-----------------|---------------\n * 4-bit | 520 | 15\n * 8-bit | 4,224 | 255\n * 10-bit | 13,824 | 1,023\n * 16-bit | 557,056 | 65,535\n *\n * Key Advantages:\n * 1. Enables larger window sizes due to reduced memory overhead\n * 2. More efficient for smaller scalar counts:\n * - 16 chunks: (16 × 255) + 256 = 4,336 ops\n * - ~2x faster than standard 8,191 ops\n *\n * Limitations:\n * - Not suitable for plain precomputes (requires 256 constant doublings)\n * - Performance degrades with larger scalar counts:\n * - Optimal for ~256 scalars\n * - Less efficient for 4096+ scalars (Pippenger preferred)\n */\n validateW(windowSize, fieldN.BITS);\n validateMSMPoints(points, c);\n const zero = c.ZERO;\n const tableSize = 2 ** windowSize - 1; // table size (without zero)\n const chunks = Math.ceil(fieldN.BITS / windowSize); // chunks of item\n const MASK = bitMask(windowSize);\n const tables = points.map((p) => {\n const res = [];\n for (let i = 0, acc = p; i < tableSize; i++) {\n res.push(acc);\n acc = acc.add(p);\n }\n return res;\n });\n return (scalars) => {\n validateMSMScalars(scalars, fieldN);\n if (scalars.length > points.length)\n throw new Error('array of scalars must be smaller than array of points');\n let res = zero;\n for (let i = 0; i < chunks; i++) {\n // No need to double if accumulator is still zero.\n if (res !== zero)\n for (let j = 0; j < windowSize; j++)\n res = res.double();\n const shiftBy = BigInt(chunks * windowSize - (i + 1) * windowSize);\n for (let j = 0; j < scalars.length; j++) {\n const n = scalars[j];\n const curr = Number((n >> shiftBy) & MASK);\n if (!curr)\n continue; // skip zero scalars chunks\n res = res.add(tables[j][curr - 1]);\n }\n }\n return res;\n };\n}\n// TODO: remove\n/** @deprecated */\nexport function validateBasic(curve) {\n validateField(curve.Fp);\n validateObject(curve, {\n n: 'bigint',\n h: 'bigint',\n Gx: 'field',\n Gy: 'field',\n }, {\n nBitLength: 'isSafeInteger',\n nByteLength: 'isSafeInteger',\n });\n // Set defaults\n return Object.freeze({\n ...nLength(curve.n, curve.nBitLength),\n ...curve,\n ...{ p: curve.Fp.ORDER },\n });\n}\nfunction createField(order, field, isLE) {\n if (field) {\n if (field.ORDER !== order)\n throw new Error('Field.ORDER must match order: Fp == p, Fn == n');\n validateField(field);\n return field;\n }\n else {\n return Field(order, { isLE });\n }\n}\n/** Validates CURVE opts and creates fields */\nexport function _createCurveFields(type, CURVE, curveOpts = {}, FpFnLE) {\n if (FpFnLE === undefined)\n FpFnLE = type === 'edwards';\n if (!CURVE || typeof CURVE !== 'object')\n throw new Error(`expected valid ${type} CURVE object`);\n for (const p of ['p', 'n', 'h']) {\n const val = CURVE[p];\n if (!(typeof val === 'bigint' && val > _0n))\n throw new Error(`CURVE.${p} must be positive bigint`);\n }\n const Fp = createField(CURVE.p, curveOpts.Fp, FpFnLE);\n const Fn = createField(CURVE.n, curveOpts.Fn, FpFnLE);\n const _b = type === 'weierstrass' ? 'b' : 'd';\n const params = ['Gx', 'Gy', 'a', _b];\n for (const p of params) {\n // @ts-ignore\n if (!Fp.isValid(CURVE[p]))\n throw new Error(`CURVE.${p} must be valid field element of CURVE.Fp`);\n }\n CURVE = Object.freeze(Object.assign({}, CURVE));\n return { CURVE, Fp, Fn };\n}\n//# sourceMappingURL=curve.js.map","/**\n * Short Weierstrass curve methods. The formula is: y² = x³ + ax + b.\n *\n * ### Design rationale for types\n *\n * * Interaction between classes from different curves should fail:\n * `k256.Point.BASE.add(p256.Point.BASE)`\n * * For this purpose we want to use `instanceof` operator, which is fast and works during runtime\n * * Different calls of `curve()` would return different classes -\n * `curve(params) !== curve(params)`: if somebody decided to monkey-patch their curve,\n * it won't affect others\n *\n * TypeScript can't infer types for classes created inside a function. Classes is one instance\n * of nominative types in TypeScript and interfaces only check for shape, so it's hard to create\n * unique type for every function call.\n *\n * We can use generic types via some param, like curve opts, but that would:\n * 1. Enable interaction between `curve(params)` and `curve(params)` (curves of same params)\n * which is hard to debug.\n * 2. Params can be generic and we can't enforce them to be constant value:\n * if somebody creates curve from non-constant params,\n * it would be allowed to interact with other curves with non-constant params\n *\n * @todo https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html#unique-symbol\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { hmac as nobleHmac } from '@noble/hashes/hmac.js';\nimport { ahash } from '@noble/hashes/utils';\nimport { _validateObject, _abool2 as abool, _abytes2 as abytes, aInRange, bitLen, bitMask, bytesToHex, bytesToNumberBE, concatBytes, createHmacDrbg, ensureBytes, hexToBytes, inRange, isBytes, memoized, numberToHexUnpadded, randomBytes as randomBytesWeb, } from \"../utils.js\";\nimport { _createCurveFields, mulEndoUnsafe, negateCt, normalizeZ, pippenger, wNAF, } from \"./curve.js\";\nimport { Field, FpInvertBatch, getMinHashLength, mapHashToField, nLength, validateField, } from \"./modular.js\";\n// We construct basis in such way that den is always positive and equals n, but num sign depends on basis (not on secret value)\nconst divNearest = (num, den) => (num + (num >= 0 ? den : -den) / _2n) / den;\n/**\n * Splits scalar for GLV endomorphism.\n */\nexport function _splitEndoScalar(k, basis, n) {\n // Split scalar into two such that part is ~half bits: `abs(part) < sqrt(N)`\n // Since part can be negative, we need to do this on point.\n // TODO: verifyScalar function which consumes lambda\n const [[a1, b1], [a2, b2]] = basis;\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n // |k1|/|k2| is < sqrt(N), but can be negative.\n // If we do `k1 mod N`, we'll get big scalar (`> sqrt(N)`): so, we do cheaper negation instead.\n let k1 = k - c1 * a1 - c2 * a2;\n let k2 = -c1 * b1 - c2 * b2;\n const k1neg = k1 < _0n;\n const k2neg = k2 < _0n;\n if (k1neg)\n k1 = -k1;\n if (k2neg)\n k2 = -k2;\n // Double check that resulting scalar less than half bits of N: otherwise wNAF will fail.\n // This should only happen on wrong basises. Also, math inside is too complex and I don't trust it.\n const MAX_NUM = bitMask(Math.ceil(bitLen(n) / 2)) + _1n; // Half bits of N\n if (k1 < _0n || k1 >= MAX_NUM || k2 < _0n || k2 >= MAX_NUM) {\n throw new Error('splitScalar (endomorphism): failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n}\nfunction validateSigFormat(format) {\n if (!['compact', 'recovered', 'der'].includes(format))\n throw new Error('Signature format must be \"compact\", \"recovered\", or \"der\"');\n return format;\n}\nfunction validateSigOpts(opts, def) {\n const optsn = {};\n for (let optName of Object.keys(def)) {\n // @ts-ignore\n optsn[optName] = opts[optName] === undefined ? def[optName] : opts[optName];\n }\n abool(optsn.lowS, 'lowS');\n abool(optsn.prehash, 'prehash');\n if (optsn.format !== undefined)\n validateSigFormat(optsn.format);\n return optsn;\n}\nexport class DERErr extends Error {\n constructor(m = '') {\n super(m);\n }\n}\n/**\n * ASN.1 DER encoding utilities. ASN is very complex & fragile. Format:\n *\n * [0x30 (SEQUENCE), bytelength, 0x02 (INTEGER), intLength, R, 0x02 (INTEGER), intLength, S]\n *\n * Docs: https://letsencrypt.org/docs/a-warm-welcome-to-asn1-and-der/, https://luca.ntop.org/Teaching/Appunti/asn1.html\n */\nexport const DER = {\n // asn.1 DER encoding utils\n Err: DERErr,\n // Basic building block is TLV (Tag-Length-Value)\n _tlv: {\n encode: (tag, data) => {\n const { Err: E } = DER;\n if (tag < 0 || tag > 256)\n throw new E('tlv.encode: wrong tag');\n if (data.length & 1)\n throw new E('tlv.encode: unpadded data');\n const dataLen = data.length / 2;\n const len = numberToHexUnpadded(dataLen);\n if ((len.length / 2) & 128)\n throw new E('tlv.encode: long form length too big');\n // length of length with long form flag\n const lenLen = dataLen > 127 ? numberToHexUnpadded((len.length / 2) | 128) : '';\n const t = numberToHexUnpadded(tag);\n return t + lenLen + len + data;\n },\n // v - value, l - left bytes (unparsed)\n decode(tag, data) {\n const { Err: E } = DER;\n let pos = 0;\n if (tag < 0 || tag > 256)\n throw new E('tlv.encode: wrong tag');\n if (data.length < 2 || data[pos++] !== tag)\n throw new E('tlv.decode: wrong tlv');\n const first = data[pos++];\n const isLong = !!(first & 128); // First bit of first length byte is flag for short/long form\n let length = 0;\n if (!isLong)\n length = first;\n else {\n // Long form: [longFlag(1bit), lengthLength(7bit), length (BE)]\n const lenLen = first & 127;\n if (!lenLen)\n throw new E('tlv.decode(long): indefinite length not supported');\n if (lenLen > 4)\n throw new E('tlv.decode(long): byte length is too big'); // this will overflow u32 in js\n const lengthBytes = data.subarray(pos, pos + lenLen);\n if (lengthBytes.length !== lenLen)\n throw new E('tlv.decode: length bytes not complete');\n if (lengthBytes[0] === 0)\n throw new E('tlv.decode(long): zero leftmost byte');\n for (const b of lengthBytes)\n length = (length << 8) | b;\n pos += lenLen;\n if (length < 128)\n throw new E('tlv.decode(long): not minimal encoding');\n }\n const v = data.subarray(pos, pos + length);\n if (v.length !== length)\n throw new E('tlv.decode: wrong value length');\n return { v, l: data.subarray(pos + length) };\n },\n },\n // https://crypto.stackexchange.com/a/57734 Leftmost bit of first byte is 'negative' flag,\n // since we always use positive integers here. It must always be empty:\n // - add zero byte if exists\n // - if next byte doesn't have a flag, leading zero is not allowed (minimal encoding)\n _int: {\n encode(num) {\n const { Err: E } = DER;\n if (num < _0n)\n throw new E('integer: negative integers are not allowed');\n let hex = numberToHexUnpadded(num);\n // Pad with zero byte if negative flag is present\n if (Number.parseInt(hex[0], 16) & 0b1000)\n hex = '00' + hex;\n if (hex.length & 1)\n throw new E('unexpected DER parsing assertion: unpadded hex');\n return hex;\n },\n decode(data) {\n const { Err: E } = DER;\n if (data[0] & 128)\n throw new E('invalid signature integer: negative');\n if (data[0] === 0x00 && !(data[1] & 128))\n throw new E('invalid signature integer: unnecessary leading zero');\n return bytesToNumberBE(data);\n },\n },\n toSig(hex) {\n // parse DER signature\n const { Err: E, _int: int, _tlv: tlv } = DER;\n const data = ensureBytes('signature', hex);\n const { v: seqBytes, l: seqLeftBytes } = tlv.decode(0x30, data);\n if (seqLeftBytes.length)\n throw new E('invalid signature: left bytes after parsing');\n const { v: rBytes, l: rLeftBytes } = tlv.decode(0x02, seqBytes);\n const { v: sBytes, l: sLeftBytes } = tlv.decode(0x02, rLeftBytes);\n if (sLeftBytes.length)\n throw new E('invalid signature: left bytes after parsing');\n return { r: int.decode(rBytes), s: int.decode(sBytes) };\n },\n hexFromSig(sig) {\n const { _tlv: tlv, _int: int } = DER;\n const rs = tlv.encode(0x02, int.encode(sig.r));\n const ss = tlv.encode(0x02, int.encode(sig.s));\n const seq = rs + ss;\n return tlv.encode(0x30, seq);\n },\n};\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3), _4n = BigInt(4);\nexport function _normFnElement(Fn, key) {\n const { BYTES: expected } = Fn;\n let num;\n if (typeof key === 'bigint') {\n num = key;\n }\n else {\n let bytes = ensureBytes('private key', key);\n try {\n num = Fn.fromBytes(bytes);\n }\n catch (error) {\n throw new Error(`invalid private key: expected ui8a of size ${expected}, got ${typeof key}`);\n }\n }\n if (!Fn.isValidNot0(num))\n throw new Error('invalid private key: out of range [1..N-1]');\n return num;\n}\n/**\n * Creates weierstrass Point constructor, based on specified curve options.\n *\n * @example\n```js\nconst opts = {\n p: BigInt('0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff'),\n n: BigInt('0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551'),\n h: BigInt(1),\n a: BigInt('0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc'),\n b: BigInt('0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b'),\n Gx: BigInt('0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296'),\n Gy: BigInt('0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5'),\n};\nconst p256_Point = weierstrass(opts);\n```\n */\nexport function weierstrassN(params, extraOpts = {}) {\n const validated = _createCurveFields('weierstrass', params, extraOpts);\n const { Fp, Fn } = validated;\n let CURVE = validated.CURVE;\n const { h: cofactor, n: CURVE_ORDER } = CURVE;\n _validateObject(extraOpts, {}, {\n allowInfinityPoint: 'boolean',\n clearCofactor: 'function',\n isTorsionFree: 'function',\n fromBytes: 'function',\n toBytes: 'function',\n endo: 'object',\n wrapPrivateKey: 'boolean',\n });\n const { endo } = extraOpts;\n if (endo) {\n // validateObject(endo, { beta: 'bigint', splitScalar: 'function' });\n if (!Fp.is0(CURVE.a) || typeof endo.beta !== 'bigint' || !Array.isArray(endo.basises)) {\n throw new Error('invalid endo: expected \"beta\": bigint and \"basises\": array');\n }\n }\n const lengths = getWLengths(Fp, Fn);\n function assertCompressionIsSupported() {\n if (!Fp.isOdd)\n throw new Error('compression is not supported: Field does not have .isOdd()');\n }\n // Implements IEEE P1363 point encoding\n function pointToBytes(_c, point, isCompressed) {\n const { x, y } = point.toAffine();\n const bx = Fp.toBytes(x);\n abool(isCompressed, 'isCompressed');\n if (isCompressed) {\n assertCompressionIsSupported();\n const hasEvenY = !Fp.isOdd(y);\n return concatBytes(pprefix(hasEvenY), bx);\n }\n else {\n return concatBytes(Uint8Array.of(0x04), bx, Fp.toBytes(y));\n }\n }\n function pointFromBytes(bytes) {\n abytes(bytes, undefined, 'Point');\n const { publicKey: comp, publicKeyUncompressed: uncomp } = lengths; // e.g. for 32-byte: 33, 65\n const length = bytes.length;\n const head = bytes[0];\n const tail = bytes.subarray(1);\n // No actual validation is done here: use .assertValidity()\n if (length === comp && (head === 0x02 || head === 0x03)) {\n const x = Fp.fromBytes(tail);\n if (!Fp.isValid(x))\n throw new Error('bad point: is not on curve, wrong x');\n const y2 = weierstrassEquation(x); // y² = x³ + ax + b\n let y;\n try {\n y = Fp.sqrt(y2); // y = y² ^ (p+1)/4\n }\n catch (sqrtError) {\n const err = sqrtError instanceof Error ? ': ' + sqrtError.message : '';\n throw new Error('bad point: is not on curve, sqrt error' + err);\n }\n assertCompressionIsSupported();\n const isYOdd = Fp.isOdd(y); // (y & _1n) === _1n;\n const isHeadOdd = (head & 1) === 1; // ECDSA-specific\n if (isHeadOdd !== isYOdd)\n y = Fp.neg(y);\n return { x, y };\n }\n else if (length === uncomp && head === 0x04) {\n // TODO: more checks\n const L = Fp.BYTES;\n const x = Fp.fromBytes(tail.subarray(0, L));\n const y = Fp.fromBytes(tail.subarray(L, L * 2));\n if (!isValidXY(x, y))\n throw new Error('bad point: is not on curve');\n return { x, y };\n }\n else {\n throw new Error(`bad point: got length ${length}, expected compressed=${comp} or uncompressed=${uncomp}`);\n }\n }\n const encodePoint = extraOpts.toBytes || pointToBytes;\n const decodePoint = extraOpts.fromBytes || pointFromBytes;\n function weierstrassEquation(x) {\n const x2 = Fp.sqr(x); // x * x\n const x3 = Fp.mul(x2, x); // x² * x\n return Fp.add(Fp.add(x3, Fp.mul(x, CURVE.a)), CURVE.b); // x³ + a * x + b\n }\n // TODO: move top-level\n /** Checks whether equation holds for given x, y: y² == x³ + ax + b */\n function isValidXY(x, y) {\n const left = Fp.sqr(y); // y²\n const right = weierstrassEquation(x); // x³ + ax + b\n return Fp.eql(left, right);\n }\n // Validate whether the passed curve params are valid.\n // Test 1: equation y² = x³ + ax + b should work for generator point.\n if (!isValidXY(CURVE.Gx, CURVE.Gy))\n throw new Error('bad curve params: generator point');\n // Test 2: discriminant Δ part should be non-zero: 4a³ + 27b² != 0.\n // Guarantees curve is genus-1, smooth (non-singular).\n const _4a3 = Fp.mul(Fp.pow(CURVE.a, _3n), _4n);\n const _27b2 = Fp.mul(Fp.sqr(CURVE.b), BigInt(27));\n if (Fp.is0(Fp.add(_4a3, _27b2)))\n throw new Error('bad curve params: a or b');\n /** Asserts coordinate is valid: 0 <= n < Fp.ORDER. */\n function acoord(title, n, banZero = false) {\n if (!Fp.isValid(n) || (banZero && Fp.is0(n)))\n throw new Error(`bad point coordinate ${title}`);\n return n;\n }\n function aprjpoint(other) {\n if (!(other instanceof Point))\n throw new Error('ProjectivePoint expected');\n }\n function splitEndoScalarN(k) {\n if (!endo || !endo.basises)\n throw new Error('no endo');\n return _splitEndoScalar(k, endo.basises, Fn.ORDER);\n }\n // Memoized toAffine / validity check. They are heavy. Points are immutable.\n // Converts Projective point to affine (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n // (X, Y, Z) ∋ (x=X/Z, y=Y/Z)\n const toAffineMemo = memoized((p, iz) => {\n const { X, Y, Z } = p;\n // Fast-path for normalized points\n if (Fp.eql(Z, Fp.ONE))\n return { x: X, y: Y };\n const is0 = p.is0();\n // If invZ was 0, we return zero point. However we still want to execute\n // all operations, so we replace invZ with a random number, 1.\n if (iz == null)\n iz = is0 ? Fp.ONE : Fp.inv(Z);\n const x = Fp.mul(X, iz);\n const y = Fp.mul(Y, iz);\n const zz = Fp.mul(Z, iz);\n if (is0)\n return { x: Fp.ZERO, y: Fp.ZERO };\n if (!Fp.eql(zz, Fp.ONE))\n throw new Error('invZ was invalid');\n return { x, y };\n });\n // NOTE: on exception this will crash 'cached' and no value will be set.\n // Otherwise true will be return\n const assertValidMemo = memoized((p) => {\n if (p.is0()) {\n // (0, 1, 0) aka ZERO is invalid in most contexts.\n // In BLS, ZERO can be serialized, so we allow it.\n // (0, 0, 0) is invalid representation of ZERO.\n if (extraOpts.allowInfinityPoint && !Fp.is0(p.Y))\n return;\n throw new Error('bad point: ZERO');\n }\n // Some 3rd-party test vectors require different wording between here & `fromCompressedHex`\n const { x, y } = p.toAffine();\n if (!Fp.isValid(x) || !Fp.isValid(y))\n throw new Error('bad point: x or y not field elements');\n if (!isValidXY(x, y))\n throw new Error('bad point: equation left != right');\n if (!p.isTorsionFree())\n throw new Error('bad point: not in prime-order subgroup');\n return true;\n });\n function finishEndo(endoBeta, k1p, k2p, k1neg, k2neg) {\n k2p = new Point(Fp.mul(k2p.X, endoBeta), k2p.Y, k2p.Z);\n k1p = negateCt(k1neg, k1p);\n k2p = negateCt(k2neg, k2p);\n return k1p.add(k2p);\n }\n /**\n * Projective Point works in 3d / projective (homogeneous) coordinates:(X, Y, Z) ∋ (x=X/Z, y=Y/Z).\n * Default Point works in 2d / affine coordinates: (x, y).\n * We're doing calculations in projective, because its operations don't require costly inversion.\n */\n class Point {\n /** Does NOT validate if the point is valid. Use `.assertValidity()`. */\n constructor(X, Y, Z) {\n this.X = acoord('x', X);\n this.Y = acoord('y', Y, true);\n this.Z = acoord('z', Z);\n Object.freeze(this);\n }\n static CURVE() {\n return CURVE;\n }\n /** Does NOT validate if the point is valid. Use `.assertValidity()`. */\n static fromAffine(p) {\n const { x, y } = p || {};\n if (!p || !Fp.isValid(x) || !Fp.isValid(y))\n throw new Error('invalid affine point');\n if (p instanceof Point)\n throw new Error('projective point not allowed');\n // (0, 0) would've produced (0, 0, 1) - instead, we need (0, 1, 0)\n if (Fp.is0(x) && Fp.is0(y))\n return Point.ZERO;\n return new Point(x, y, Fp.ONE);\n }\n static fromBytes(bytes) {\n const P = Point.fromAffine(decodePoint(abytes(bytes, undefined, 'point')));\n P.assertValidity();\n return P;\n }\n static fromHex(hex) {\n return Point.fromBytes(ensureBytes('pointHex', hex));\n }\n get x() {\n return this.toAffine().x;\n }\n get y() {\n return this.toAffine().y;\n }\n /**\n *\n * @param windowSize\n * @param isLazy true will defer table computation until the first multiplication\n * @returns\n */\n precompute(windowSize = 8, isLazy = true) {\n wnaf.createCache(this, windowSize);\n if (!isLazy)\n this.multiply(_3n); // random number\n return this;\n }\n // TODO: return `this`\n /** A point on curve is valid if it conforms to equation. */\n assertValidity() {\n assertValidMemo(this);\n }\n hasEvenY() {\n const { y } = this.toAffine();\n if (!Fp.isOdd)\n throw new Error(\"Field doesn't support isOdd\");\n return !Fp.isOdd(y);\n }\n /** Compare one point to another. */\n equals(other) {\n aprjpoint(other);\n const { X: X1, Y: Y1, Z: Z1 } = this;\n const { X: X2, Y: Y2, Z: Z2 } = other;\n const U1 = Fp.eql(Fp.mul(X1, Z2), Fp.mul(X2, Z1));\n const U2 = Fp.eql(Fp.mul(Y1, Z2), Fp.mul(Y2, Z1));\n return U1 && U2;\n }\n /** Flips point to one corresponding to (x, -y) in Affine coordinates. */\n negate() {\n return new Point(this.X, Fp.neg(this.Y), this.Z);\n }\n // Renes-Costello-Batina exception-free doubling formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 3\n // Cost: 8M + 3S + 3*a + 2*b3 + 15add.\n double() {\n const { a, b } = CURVE;\n const b3 = Fp.mul(b, _3n);\n const { X: X1, Y: Y1, Z: Z1 } = this;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n let t0 = Fp.mul(X1, X1); // step 1\n let t1 = Fp.mul(Y1, Y1);\n let t2 = Fp.mul(Z1, Z1);\n let t3 = Fp.mul(X1, Y1);\n t3 = Fp.add(t3, t3); // step 5\n Z3 = Fp.mul(X1, Z1);\n Z3 = Fp.add(Z3, Z3);\n X3 = Fp.mul(a, Z3);\n Y3 = Fp.mul(b3, t2);\n Y3 = Fp.add(X3, Y3); // step 10\n X3 = Fp.sub(t1, Y3);\n Y3 = Fp.add(t1, Y3);\n Y3 = Fp.mul(X3, Y3);\n X3 = Fp.mul(t3, X3);\n Z3 = Fp.mul(b3, Z3); // step 15\n t2 = Fp.mul(a, t2);\n t3 = Fp.sub(t0, t2);\n t3 = Fp.mul(a, t3);\n t3 = Fp.add(t3, Z3);\n Z3 = Fp.add(t0, t0); // step 20\n t0 = Fp.add(Z3, t0);\n t0 = Fp.add(t0, t2);\n t0 = Fp.mul(t0, t3);\n Y3 = Fp.add(Y3, t0);\n t2 = Fp.mul(Y1, Z1); // step 25\n t2 = Fp.add(t2, t2);\n t0 = Fp.mul(t2, t3);\n X3 = Fp.sub(X3, t0);\n Z3 = Fp.mul(t2, t1);\n Z3 = Fp.add(Z3, Z3); // step 30\n Z3 = Fp.add(Z3, Z3);\n return new Point(X3, Y3, Z3);\n }\n // Renes-Costello-Batina exception-free addition formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 1\n // Cost: 12M + 0S + 3*a + 3*b3 + 23add.\n add(other) {\n aprjpoint(other);\n const { X: X1, Y: Y1, Z: Z1 } = this;\n const { X: X2, Y: Y2, Z: Z2 } = other;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n const a = CURVE.a;\n const b3 = Fp.mul(CURVE.b, _3n);\n let t0 = Fp.mul(X1, X2); // step 1\n let t1 = Fp.mul(Y1, Y2);\n let t2 = Fp.mul(Z1, Z2);\n let t3 = Fp.add(X1, Y1);\n let t4 = Fp.add(X2, Y2); // step 5\n t3 = Fp.mul(t3, t4);\n t4 = Fp.add(t0, t1);\n t3 = Fp.sub(t3, t4);\n t4 = Fp.add(X1, Z1);\n let t5 = Fp.add(X2, Z2); // step 10\n t4 = Fp.mul(t4, t5);\n t5 = Fp.add(t0, t2);\n t4 = Fp.sub(t4, t5);\n t5 = Fp.add(Y1, Z1);\n X3 = Fp.add(Y2, Z2); // step 15\n t5 = Fp.mul(t5, X3);\n X3 = Fp.add(t1, t2);\n t5 = Fp.sub(t5, X3);\n Z3 = Fp.mul(a, t4);\n X3 = Fp.mul(b3, t2); // step 20\n Z3 = Fp.add(X3, Z3);\n X3 = Fp.sub(t1, Z3);\n Z3 = Fp.add(t1, Z3);\n Y3 = Fp.mul(X3, Z3);\n t1 = Fp.add(t0, t0); // step 25\n t1 = Fp.add(t1, t0);\n t2 = Fp.mul(a, t2);\n t4 = Fp.mul(b3, t4);\n t1 = Fp.add(t1, t2);\n t2 = Fp.sub(t0, t2); // step 30\n t2 = Fp.mul(a, t2);\n t4 = Fp.add(t4, t2);\n t0 = Fp.mul(t1, t4);\n Y3 = Fp.add(Y3, t0);\n t0 = Fp.mul(t5, t4); // step 35\n X3 = Fp.mul(t3, X3);\n X3 = Fp.sub(X3, t0);\n t0 = Fp.mul(t3, t1);\n Z3 = Fp.mul(t5, Z3);\n Z3 = Fp.add(Z3, t0); // step 40\n return new Point(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n is0() {\n return this.equals(Point.ZERO);\n }\n /**\n * Constant time multiplication.\n * Uses wNAF method. Windowed method may be 10% faster,\n * but takes 2x longer to generate and consumes 2x memory.\n * Uses precomputes when available.\n * Uses endomorphism for Koblitz curves.\n * @param scalar by which the point would be multiplied\n * @returns New point\n */\n multiply(scalar) {\n const { endo } = extraOpts;\n if (!Fn.isValidNot0(scalar))\n throw new Error('invalid scalar: out of range'); // 0 is invalid\n let point, fake; // Fake point is used to const-time mult\n const mul = (n) => wnaf.cached(this, n, (p) => normalizeZ(Point, p));\n /** See docs for {@link EndomorphismOpts} */\n if (endo) {\n const { k1neg, k1, k2neg, k2 } = splitEndoScalarN(scalar);\n const { p: k1p, f: k1f } = mul(k1);\n const { p: k2p, f: k2f } = mul(k2);\n fake = k1f.add(k2f);\n point = finishEndo(endo.beta, k1p, k2p, k1neg, k2neg);\n }\n else {\n const { p, f } = mul(scalar);\n point = p;\n fake = f;\n }\n // Normalize `z` for both points, but return only real one\n return normalizeZ(Point, [point, fake])[0];\n }\n /**\n * Non-constant-time multiplication. Uses double-and-add algorithm.\n * It's faster, but should only be used when you don't care about\n * an exposed secret key e.g. sig verification, which works over *public* keys.\n */\n multiplyUnsafe(sc) {\n const { endo } = extraOpts;\n const p = this;\n if (!Fn.isValid(sc))\n throw new Error('invalid scalar: out of range'); // 0 is valid\n if (sc === _0n || p.is0())\n return Point.ZERO;\n if (sc === _1n)\n return p; // fast-path\n if (wnaf.hasCache(this))\n return this.multiply(sc);\n if (endo) {\n const { k1neg, k1, k2neg, k2 } = splitEndoScalarN(sc);\n const { p1, p2 } = mulEndoUnsafe(Point, p, k1, k2); // 30% faster vs wnaf.unsafe\n return finishEndo(endo.beta, p1, p2, k1neg, k2neg);\n }\n else {\n return wnaf.unsafe(p, sc);\n }\n }\n multiplyAndAddUnsafe(Q, a, b) {\n const sum = this.multiplyUnsafe(a).add(Q.multiplyUnsafe(b));\n return sum.is0() ? undefined : sum;\n }\n /**\n * Converts Projective point to affine (x, y) coordinates.\n * @param invertedZ Z^-1 (inverted zero) - optional, precomputation is useful for invertBatch\n */\n toAffine(invertedZ) {\n return toAffineMemo(this, invertedZ);\n }\n /**\n * Checks whether Point is free of torsion elements (is in prime subgroup).\n * Always torsion-free for cofactor=1 curves.\n */\n isTorsionFree() {\n const { isTorsionFree } = extraOpts;\n if (cofactor === _1n)\n return true;\n if (isTorsionFree)\n return isTorsionFree(Point, this);\n return wnaf.unsafe(this, CURVE_ORDER).is0();\n }\n clearCofactor() {\n const { clearCofactor } = extraOpts;\n if (cofactor === _1n)\n return this; // Fast-path\n if (clearCofactor)\n return clearCofactor(Point, this);\n return this.multiplyUnsafe(cofactor);\n }\n isSmallOrder() {\n // can we use this.clearCofactor()?\n return this.multiplyUnsafe(cofactor).is0();\n }\n toBytes(isCompressed = true) {\n abool(isCompressed, 'isCompressed');\n this.assertValidity();\n return encodePoint(Point, this, isCompressed);\n }\n toHex(isCompressed = true) {\n return bytesToHex(this.toBytes(isCompressed));\n }\n toString() {\n return `<Point ${this.is0() ? 'ZERO' : this.toHex()}>`;\n }\n // TODO: remove\n get px() {\n return this.X;\n }\n get py() {\n return this.X;\n }\n get pz() {\n return this.Z;\n }\n toRawBytes(isCompressed = true) {\n return this.toBytes(isCompressed);\n }\n _setWindowSize(windowSize) {\n this.precompute(windowSize);\n }\n static normalizeZ(points) {\n return normalizeZ(Point, points);\n }\n static msm(points, scalars) {\n return pippenger(Point, Fn, points, scalars);\n }\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(_normFnElement(Fn, privateKey));\n }\n }\n // base / generator point\n Point.BASE = new Point(CURVE.Gx, CURVE.Gy, Fp.ONE);\n // zero / infinity / identity point\n Point.ZERO = new Point(Fp.ZERO, Fp.ONE, Fp.ZERO); // 0, 1, 0\n // math field\n Point.Fp = Fp;\n // scalar field\n Point.Fn = Fn;\n const bits = Fn.BITS;\n const wnaf = new wNAF(Point, extraOpts.endo ? Math.ceil(bits / 2) : bits);\n Point.BASE.precompute(8); // Enable precomputes. Slows down first publicKey computation by 20ms.\n return Point;\n}\n// Points start with byte 0x02 when y is even; otherwise 0x03\nfunction pprefix(hasEvenY) {\n return Uint8Array.of(hasEvenY ? 0x02 : 0x03);\n}\n/**\n * Implementation of the Shallue and van de Woestijne method for any weierstrass curve.\n * TODO: check if there is a way to merge this with uvRatio in Edwards; move to modular.\n * b = True and y = sqrt(u / v) if (u / v) is square in F, and\n * b = False and y = sqrt(Z * (u / v)) otherwise.\n * @param Fp\n * @param Z\n * @returns\n */\nexport function SWUFpSqrtRatio(Fp, Z) {\n // Generic implementation\n const q = Fp.ORDER;\n let l = _0n;\n for (let o = q - _1n; o % _2n === _0n; o /= _2n)\n l += _1n;\n const c1 = l; // 1. c1, the largest integer such that 2^c1 divides q - 1.\n // We need 2n ** c1 and 2n ** (c1-1). We can't use **; but we can use <<.\n // 2n ** c1 == 2n << (c1-1)\n const _2n_pow_c1_1 = _2n << (c1 - _1n - _1n);\n const _2n_pow_c1 = _2n_pow_c1_1 * _2n;\n const c2 = (q - _1n) / _2n_pow_c1; // 2. c2 = (q - 1) / (2^c1) # Integer arithmetic\n const c3 = (c2 - _1n) / _2n; // 3. c3 = (c2 - 1) / 2 # Integer arithmetic\n const c4 = _2n_pow_c1 - _1n; // 4. c4 = 2^c1 - 1 # Integer arithmetic\n const c5 = _2n_pow_c1_1; // 5. c5 = 2^(c1 - 1) # Integer arithmetic\n const c6 = Fp.pow(Z, c2); // 6. c6 = Z^c2\n const c7 = Fp.pow(Z, (c2 + _1n) / _2n); // 7. c7 = Z^((c2 + 1) / 2)\n let sqrtRatio = (u, v) => {\n let tv1 = c6; // 1. tv1 = c6\n let tv2 = Fp.pow(v, c4); // 2. tv2 = v^c4\n let tv3 = Fp.sqr(tv2); // 3. tv3 = tv2^2\n tv3 = Fp.mul(tv3, v); // 4. tv3 = tv3 * v\n let tv5 = Fp.mul(u, tv3); // 5. tv5 = u * tv3\n tv5 = Fp.pow(tv5, c3); // 6. tv5 = tv5^c3\n tv5 = Fp.mul(tv5, tv2); // 7. tv5 = tv5 * tv2\n tv2 = Fp.mul(tv5, v); // 8. tv2 = tv5 * v\n tv3 = Fp.mul(tv5, u); // 9. tv3 = tv5 * u\n let tv4 = Fp.mul(tv3, tv2); // 10. tv4 = tv3 * tv2\n tv5 = Fp.pow(tv4, c5); // 11. tv5 = tv4^c5\n let isQR = Fp.eql(tv5, Fp.ONE); // 12. isQR = tv5 == 1\n tv2 = Fp.mul(tv3, c7); // 13. tv2 = tv3 * c7\n tv5 = Fp.mul(tv4, tv1); // 14. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, isQR); // 15. tv3 = CMOV(tv2, tv3, isQR)\n tv4 = Fp.cmov(tv5, tv4, isQR); // 16. tv4 = CMOV(tv5, tv4, isQR)\n // 17. for i in (c1, c1 - 1, ..., 2):\n for (let i = c1; i > _1n; i--) {\n let tv5 = i - _2n; // 18. tv5 = i - 2\n tv5 = _2n << (tv5 - _1n); // 19. tv5 = 2^tv5\n let tvv5 = Fp.pow(tv4, tv5); // 20. tv5 = tv4^tv5\n const e1 = Fp.eql(tvv5, Fp.ONE); // 21. e1 = tv5 == 1\n tv2 = Fp.mul(tv3, tv1); // 22. tv2 = tv3 * tv1\n tv1 = Fp.mul(tv1, tv1); // 23. tv1 = tv1 * tv1\n tvv5 = Fp.mul(tv4, tv1); // 24. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, e1); // 25. tv3 = CMOV(tv2, tv3, e1)\n tv4 = Fp.cmov(tvv5, tv4, e1); // 26. tv4 = CMOV(tv5, tv4, e1)\n }\n return { isValid: isQR, value: tv3 };\n };\n if (Fp.ORDER % _4n === _3n) {\n // sqrt_ratio_3mod4(u, v)\n const c1 = (Fp.ORDER - _3n) / _4n; // 1. c1 = (q - 3) / 4 # Integer arithmetic\n const c2 = Fp.sqrt(Fp.neg(Z)); // 2. c2 = sqrt(-Z)\n sqrtRatio = (u, v) => {\n let tv1 = Fp.sqr(v); // 1. tv1 = v^2\n const tv2 = Fp.mul(u, v); // 2. tv2 = u * v\n tv1 = Fp.mul(tv1, tv2); // 3. tv1 = tv1 * tv2\n let y1 = Fp.pow(tv1, c1); // 4. y1 = tv1^c1\n y1 = Fp.mul(y1, tv2); // 5. y1 = y1 * tv2\n const y2 = Fp.mul(y1, c2); // 6. y2 = y1 * c2\n const tv3 = Fp.mul(Fp.sqr(y1), v); // 7. tv3 = y1^2; 8. tv3 = tv3 * v\n const isQR = Fp.eql(tv3, u); // 9. isQR = tv3 == u\n let y = Fp.cmov(y2, y1, isQR); // 10. y = CMOV(y2, y1, isQR)\n return { isValid: isQR, value: y }; // 11. return (isQR, y) isQR ? y : y*c2\n };\n }\n // No curves uses that\n // if (Fp.ORDER % _8n === _5n) // sqrt_ratio_5mod8\n return sqrtRatio;\n}\n/**\n * Simplified Shallue-van de Woestijne-Ulas Method\n * https://www.rfc-editor.org/rfc/rfc9380#section-6.6.2\n */\nexport function mapToCurveSimpleSWU(Fp, opts) {\n validateField(Fp);\n const { A, B, Z } = opts;\n if (!Fp.isValid(A) || !Fp.isValid(B) || !Fp.isValid(Z))\n throw new Error('mapToCurveSimpleSWU: invalid opts');\n const sqrtRatio = SWUFpSqrtRatio(Fp, Z);\n if (!Fp.isOdd)\n throw new Error('Field does not have .isOdd()');\n // Input: u, an element of F.\n // Output: (x, y), a point on E.\n return (u) => {\n // prettier-ignore\n let tv1, tv2, tv3, tv4, tv5, tv6, x, y;\n tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, Z); // 2. tv1 = Z * tv1\n tv2 = Fp.sqr(tv1); // 3. tv2 = tv1^2\n tv2 = Fp.add(tv2, tv1); // 4. tv2 = tv2 + tv1\n tv3 = Fp.add(tv2, Fp.ONE); // 5. tv3 = tv2 + 1\n tv3 = Fp.mul(tv3, B); // 6. tv3 = B * tv3\n tv4 = Fp.cmov(Z, Fp.neg(tv2), !Fp.eql(tv2, Fp.ZERO)); // 7. tv4 = CMOV(Z, -tv2, tv2 != 0)\n tv4 = Fp.mul(tv4, A); // 8. tv4 = A * tv4\n tv2 = Fp.sqr(tv3); // 9. tv2 = tv3^2\n tv6 = Fp.sqr(tv4); // 10. tv6 = tv4^2\n tv5 = Fp.mul(tv6, A); // 11. tv5 = A * tv6\n tv2 = Fp.add(tv2, tv5); // 12. tv2 = tv2 + tv5\n tv2 = Fp.mul(tv2, tv3); // 13. tv2 = tv2 * tv3\n tv6 = Fp.mul(tv6, tv4); // 14. tv6 = tv6 * tv4\n tv5 = Fp.mul(tv6, B); // 15. tv5 = B * tv6\n tv2 = Fp.add(tv2, tv5); // 16. tv2 = tv2 + tv5\n x = Fp.mul(tv1, tv3); // 17. x = tv1 * tv3\n const { isValid, value } = sqrtRatio(tv2, tv6); // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6)\n y = Fp.mul(tv1, u); // 19. y = tv1 * u -> Z * u^3 * y1\n y = Fp.mul(y, value); // 20. y = y * y1\n x = Fp.cmov(x, tv3, isValid); // 21. x = CMOV(x, tv3, is_gx1_square)\n y = Fp.cmov(y, value, isValid); // 22. y = CMOV(y, y1, is_gx1_square)\n const e1 = Fp.isOdd(u) === Fp.isOdd(y); // 23. e1 = sgn0(u) == sgn0(y)\n y = Fp.cmov(Fp.neg(y), y, e1); // 24. y = CMOV(-y, y, e1)\n const tv4_inv = FpInvertBatch(Fp, [tv4], true)[0];\n x = Fp.mul(x, tv4_inv); // 25. x = x / tv4\n return { x, y };\n };\n}\nfunction getWLengths(Fp, Fn) {\n return {\n secretKey: Fn.BYTES,\n publicKey: 1 + Fp.BYTES,\n publicKeyUncompressed: 1 + 2 * Fp.BYTES,\n publicKeyHasPrefix: true,\n signature: 2 * Fn.BYTES,\n };\n}\n/**\n * Sometimes users only need getPublicKey, getSharedSecret, and secret key handling.\n * This helper ensures no signature functionality is present. Less code, smaller bundle size.\n */\nexport function ecdh(Point, ecdhOpts = {}) {\n const { Fn } = Point;\n const randomBytes_ = ecdhOpts.randomBytes || randomBytesWeb;\n const lengths = Object.assign(getWLengths(Point.Fp, Fn), { seed: getMinHashLength(Fn.ORDER) });\n function isValidSecretKey(secretKey) {\n try {\n return !!_normFnElement(Fn, secretKey);\n }\n catch (error) {\n return false;\n }\n }\n function isValidPublicKey(publicKey, isCompressed) {\n const { publicKey: comp, publicKeyUncompressed } = lengths;\n try {\n const l = publicKey.length;\n if (isCompressed === true && l !== comp)\n return false;\n if (isCompressed === false && l !== publicKeyUncompressed)\n return false;\n return !!Point.fromBytes(publicKey);\n }\n catch (error) {\n return false;\n }\n }\n /**\n * Produces cryptographically secure secret key from random of size\n * (groupLen + ceil(groupLen / 2)) with modulo bias being negligible.\n */\n function randomSecretKey(seed = randomBytes_(lengths.seed)) {\n return mapHashToField(abytes(seed, lengths.seed, 'seed'), Fn.ORDER);\n }\n /**\n * Computes public key for a secret key. Checks for validity of the secret key.\n * @param isCompressed whether to return compact (default), or full key\n * @returns Public key, full when isCompressed=false; short when isCompressed=true\n */\n function getPublicKey(secretKey, isCompressed = true) {\n return Point.BASE.multiply(_normFnElement(Fn, secretKey)).toBytes(isCompressed);\n }\n function keygen(seed) {\n const secretKey = randomSecretKey(seed);\n return { secretKey, publicKey: getPublicKey(secretKey) };\n }\n /**\n * Quick and dirty check for item being public key. Does not validate hex, or being on-curve.\n */\n function isProbPub(item) {\n if (typeof item === 'bigint')\n return false;\n if (item instanceof Point)\n return true;\n const { secretKey, publicKey, publicKeyUncompressed } = lengths;\n if (Fn.allowedLengths || secretKey === publicKey)\n return undefined;\n const l = ensureBytes('key', item).length;\n return l === publicKey || l === publicKeyUncompressed;\n }\n /**\n * ECDH (Elliptic Curve Diffie Hellman).\n * Computes shared public key from secret key A and public key B.\n * Checks: 1) secret key validity 2) shared key is on-curve.\n * Does NOT hash the result.\n * @param isCompressed whether to return compact (default), or full key\n * @returns shared public key\n */\n function getSharedSecret(secretKeyA, publicKeyB, isCompressed = true) {\n if (isProbPub(secretKeyA) === true)\n throw new Error('first arg must be private key');\n if (isProbPub(publicKeyB) === false)\n throw new Error('second arg must be public key');\n const s = _normFnElement(Fn, secretKeyA);\n const b = Point.fromHex(publicKeyB); // checks for being on-curve\n return b.multiply(s).toBytes(isCompressed);\n }\n const utils = {\n isValidSecretKey,\n isValidPublicKey,\n randomSecretKey,\n // TODO: remove\n isValidPrivateKey: isValidSecretKey,\n randomPrivateKey: randomSecretKey,\n normPrivateKeyToScalar: (key) => _normFnElement(Fn, key),\n precompute(windowSize = 8, point = Point.BASE) {\n return point.precompute(windowSize, false);\n },\n };\n return Object.freeze({ getPublicKey, getSharedSecret, keygen, Point, utils, lengths });\n}\n/**\n * Creates ECDSA signing interface for given elliptic curve `Point` and `hash` function.\n * We need `hash` for 2 features:\n * 1. Message prehash-ing. NOT used if `sign` / `verify` are called with `prehash: false`\n * 2. k generation in `sign`, using HMAC-drbg(hash)\n *\n * ECDSAOpts are only rarely needed.\n *\n * @example\n * ```js\n * const p256_Point = weierstrass(...);\n * const p256_sha256 = ecdsa(p256_Point, sha256);\n * const p256_sha224 = ecdsa(p256_Point, sha224);\n * const p256_sha224_r = ecdsa(p256_Point, sha224, { randomBytes: (length) => { ... } });\n * ```\n */\nexport function ecdsa(Point, hash, ecdsaOpts = {}) {\n ahash(hash);\n _validateObject(ecdsaOpts, {}, {\n hmac: 'function',\n lowS: 'boolean',\n randomBytes: 'function',\n bits2int: 'function',\n bits2int_modN: 'function',\n });\n const randomBytes = ecdsaOpts.randomBytes || randomBytesWeb;\n const hmac = ecdsaOpts.hmac ||\n ((key, ...msgs) => nobleHmac(hash, key, concatBytes(...msgs)));\n const { Fp, Fn } = Point;\n const { ORDER: CURVE_ORDER, BITS: fnBits } = Fn;\n const { keygen, getPublicKey, getSharedSecret, utils, lengths } = ecdh(Point, ecdsaOpts);\n const defaultSigOpts = {\n prehash: false,\n lowS: typeof ecdsaOpts.lowS === 'boolean' ? ecdsaOpts.lowS : false,\n format: undefined, //'compact' as ECDSASigFormat,\n extraEntropy: false,\n };\n const defaultSigOpts_format = 'compact';\n function isBiggerThanHalfOrder(number) {\n const HALF = CURVE_ORDER >> _1n;\n return number > HALF;\n }\n function validateRS(title, num) {\n if (!Fn.isValidNot0(num))\n throw new Error(`invalid signature ${title}: out of range 1..Point.Fn.ORDER`);\n return num;\n }\n function validateSigLength(bytes, format) {\n validateSigFormat(format);\n const size = lengths.signature;\n const sizer = format === 'compact' ? size : format === 'recovered' ? size + 1 : undefined;\n return abytes(bytes, sizer, `${format} signature`);\n }\n /**\n * ECDSA signature with its (r, s) properties. Supports compact, recovered & DER representations.\n */\n class Signature {\n constructor(r, s, recovery) {\n this.r = validateRS('r', r); // r in [1..N-1];\n this.s = validateRS('s', s); // s in [1..N-1];\n if (recovery != null)\n this.recovery = recovery;\n Object.freeze(this);\n }\n static fromBytes(bytes, format = defaultSigOpts_format) {\n validateSigLength(bytes, format);\n let recid;\n if (format === 'der') {\n const { r, s } = DER.toSig(abytes(bytes));\n return new Signature(r, s);\n }\n if (format === 'recovered') {\n recid = bytes[0];\n format = 'compact';\n bytes = bytes.subarray(1);\n }\n const L = Fn.BYTES;\n const r = bytes.subarray(0, L);\n const s = bytes.subarray(L, L * 2);\n return new Signature(Fn.fromBytes(r), Fn.fromBytes(s), recid);\n }\n static fromHex(hex, format) {\n return this.fromBytes(hexToBytes(hex), format);\n }\n addRecoveryBit(recovery) {\n return new Signature(this.r, this.s, recovery);\n }\n recoverPublicKey(messageHash) {\n const FIELD_ORDER = Fp.ORDER;\n const { r, s, recovery: rec } = this;\n if (rec == null || ![0, 1, 2, 3].includes(rec))\n throw new Error('recovery id invalid');\n // ECDSA recovery is hard for cofactor > 1 curves.\n // In sign, `r = q.x mod n`, and here we recover q.x from r.\n // While recovering q.x >= n, we need to add r+n for cofactor=1 curves.\n // However, for cofactor>1, r+n may not get q.x:\n // r+n*i would need to be done instead where i is unknown.\n // To easily get i, we either need to:\n // a. increase amount of valid recid values (4, 5...); OR\n // b. prohibit non-prime-order signatures (recid > 1).\n const hasCofactor = CURVE_ORDER * _2n < FIELD_ORDER;\n if (hasCofactor && rec > 1)\n throw new Error('recovery id is ambiguous for h>1 curve');\n const radj = rec === 2 || rec === 3 ? r + CURVE_ORDER : r;\n if (!Fp.isValid(radj))\n throw new Error('recovery id 2 or 3 invalid');\n const x = Fp.toBytes(radj);\n const R = Point.fromBytes(concatBytes(pprefix((rec & 1) === 0), x));\n const ir = Fn.inv(radj); // r^-1\n const h = bits2int_modN(ensureBytes('msgHash', messageHash)); // Truncate hash\n const u1 = Fn.create(-h * ir); // -hr^-1\n const u2 = Fn.create(s * ir); // sr^-1\n // (sr^-1)R-(hr^-1)G = -(hr^-1)G + (sr^-1). unsafe is fine: there is no private data.\n const Q = Point.BASE.multiplyUnsafe(u1).add(R.multiplyUnsafe(u2));\n if (Q.is0())\n throw new Error('point at infinify');\n Q.assertValidity();\n return Q;\n }\n // Signatures should be low-s, to prevent malleability.\n hasHighS() {\n return isBiggerThanHalfOrder(this.s);\n }\n toBytes(format = defaultSigOpts_format) {\n validateSigFormat(format);\n if (format === 'der')\n return hexToBytes(DER.hexFromSig(this));\n const r = Fn.toBytes(this.r);\n const s = Fn.toBytes(this.s);\n if (format === 'recovered') {\n if (this.recovery == null)\n throw new Error('recovery bit must be present');\n return concatBytes(Uint8Array.of(this.recovery), r, s);\n }\n return concatBytes(r, s);\n }\n toHex(format) {\n return bytesToHex(this.toBytes(format));\n }\n // TODO: remove\n assertValidity() { }\n static fromCompact(hex) {\n return Signature.fromBytes(ensureBytes('sig', hex), 'compact');\n }\n static fromDER(hex) {\n return Signature.fromBytes(ensureBytes('sig', hex), 'der');\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, Fn.neg(this.s), this.recovery) : this;\n }\n toDERRawBytes() {\n return this.toBytes('der');\n }\n toDERHex() {\n return bytesToHex(this.toBytes('der'));\n }\n toCompactRawBytes() {\n return this.toBytes('compact');\n }\n toCompactHex() {\n return bytesToHex(this.toBytes('compact'));\n }\n }\n // RFC6979: ensure ECDSA msg is X bytes and < N. RFC suggests optional truncating via bits2octets.\n // FIPS 186-4 4.6 suggests the leftmost min(nBitLen, outLen) bits, which matches bits2int.\n // bits2int can produce res>N, we can do mod(res, N) since the bitLen is the same.\n // int2octets can't be used; pads small msgs with 0: unacceptatble for trunc as per RFC vectors\n const bits2int = ecdsaOpts.bits2int ||\n function bits2int_def(bytes) {\n // Our custom check \"just in case\", for protection against DoS\n if (bytes.length > 8192)\n throw new Error('input is too large');\n // For curves with nBitLength % 8 !== 0: bits2octets(bits2octets(m)) !== bits2octets(m)\n // for some cases, since bytes.length * 8 is not actual bitLength.\n const num = bytesToNumberBE(bytes); // check for == u8 done here\n const delta = bytes.length * 8 - fnBits; // truncate to nBitLength leftmost bits\n return delta > 0 ? num >> BigInt(delta) : num;\n };\n const bits2int_modN = ecdsaOpts.bits2int_modN ||\n function bits2int_modN_def(bytes) {\n return Fn.create(bits2int(bytes)); // can't use bytesToNumberBE here\n };\n // Pads output with zero as per spec\n const ORDER_MASK = bitMask(fnBits);\n /** Converts to bytes. Checks if num in `[0..ORDER_MASK-1]` e.g.: `[0..2^256-1]`. */\n function int2octets(num) {\n // IMPORTANT: the check ensures working for case `Fn.BYTES != Fn.BITS * 8`\n aInRange('num < 2^' + fnBits, num, _0n, ORDER_MASK);\n return Fn.toBytes(num);\n }\n function validateMsgAndHash(message, prehash) {\n abytes(message, undefined, 'message');\n return prehash ? abytes(hash(message), undefined, 'prehashed message') : message;\n }\n /**\n * Steps A, D of RFC6979 3.2.\n * Creates RFC6979 seed; converts msg/privKey to numbers.\n * Used only in sign, not in verify.\n *\n * Warning: we cannot assume here that message has same amount of bytes as curve order,\n * this will be invalid at least for P521. Also it can be bigger for P224 + SHA256.\n */\n function prepSig(message, privateKey, opts) {\n if (['recovered', 'canonical'].some((k) => k in opts))\n throw new Error('sign() legacy options not supported');\n const { lowS, prehash, extraEntropy } = validateSigOpts(opts, defaultSigOpts);\n message = validateMsgAndHash(message, prehash); // RFC6979 3.2 A: h1 = H(m)\n // We can't later call bits2octets, since nested bits2int is broken for curves\n // with fnBits % 8 !== 0. Because of that, we unwrap it here as int2octets call.\n // const bits2octets = (bits) => int2octets(bits2int_modN(bits))\n const h1int = bits2int_modN(message);\n const d = _normFnElement(Fn, privateKey); // validate secret key, convert to bigint\n const seedArgs = [int2octets(d), int2octets(h1int)];\n // extraEntropy. RFC6979 3.6: additional k' (optional).\n if (extraEntropy != null && extraEntropy !== false) {\n // K = HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1) || k')\n // gen random bytes OR pass as-is\n const e = extraEntropy === true ? randomBytes(lengths.secretKey) : extraEntropy;\n seedArgs.push(ensureBytes('extraEntropy', e)); // check for being bytes\n }\n const seed = concatBytes(...seedArgs); // Step D of RFC6979 3.2\n const m = h1int; // NOTE: no need to call bits2int second time here, it is inside truncateHash!\n // Converts signature params into point w r/s, checks result for validity.\n // To transform k => Signature:\n // q = k⋅G\n // r = q.x mod n\n // s = k^-1(m + rd) mod n\n // Can use scalar blinding b^-1(bm + bdr) where b ∈ [1,q−1] according to\n // https://tches.iacr.org/index.php/TCHES/article/view/7337/6509. We've decided against it:\n // a) dependency on CSPRNG b) 15% slowdown c) doesn't really help since bigints are not CT\n function k2sig(kBytes) {\n // RFC 6979 Section 3.2, step 3: k = bits2int(T)\n // Important: all mod() calls here must be done over N\n const k = bits2int(kBytes); // mod n, not mod p\n if (!Fn.isValidNot0(k))\n return; // Valid scalars (including k) must be in 1..N-1\n const ik = Fn.inv(k); // k^-1 mod n\n const q = Point.BASE.multiply(k).toAffine(); // q = k⋅G\n const r = Fn.create(q.x); // r = q.x mod n\n if (r === _0n)\n return;\n const s = Fn.create(ik * Fn.create(m + r * d)); // Not using blinding here, see comment above\n if (s === _0n)\n return;\n let recovery = (q.x === r ? 0 : 2) | Number(q.y & _1n); // recovery bit (2 or 3, when q.x > n)\n let normS = s;\n if (lowS && isBiggerThanHalfOrder(s)) {\n normS = Fn.neg(s); // if lowS was passed, ensure s is always\n recovery ^= 1; // // in the bottom half of N\n }\n return new Signature(r, normS, recovery); // use normS, not s\n }\n return { seed, k2sig };\n }\n /**\n * Signs message hash with a secret key.\n *\n * ```\n * sign(m, d) where\n * k = rfc6979_hmac_drbg(m, d)\n * (x, y) = G × k\n * r = x mod n\n * s = (m + dr) / k mod n\n * ```\n */\n function sign(message, secretKey, opts = {}) {\n message = ensureBytes('message', message);\n const { seed, k2sig } = prepSig(message, secretKey, opts); // Steps A, D of RFC6979 3.2.\n const drbg = createHmacDrbg(hash.outputLen, Fn.BYTES, hmac);\n const sig = drbg(seed, k2sig); // Steps B, C, D, E, F, G\n return sig;\n }\n function tryParsingSig(sg) {\n // Try to deduce format\n let sig = undefined;\n const isHex = typeof sg === 'string' || isBytes(sg);\n const isObj = !isHex &&\n sg !== null &&\n typeof sg === 'object' &&\n typeof sg.r === 'bigint' &&\n typeof sg.s === 'bigint';\n if (!isHex && !isObj)\n throw new Error('invalid signature, expected Uint8Array, hex string or Signature instance');\n if (isObj) {\n sig = new Signature(sg.r, sg.s);\n }\n else if (isHex) {\n try {\n sig = Signature.fromBytes(ensureBytes('sig', sg), 'der');\n }\n catch (derError) {\n if (!(derError instanceof DER.Err))\n throw derError;\n }\n if (!sig) {\n try {\n sig = Signature.fromBytes(ensureBytes('sig', sg), 'compact');\n }\n catch (error) {\n return false;\n }\n }\n }\n if (!sig)\n return false;\n return sig;\n }\n /**\n * Verifies a signature against message and public key.\n * Rejects lowS signatures by default: see {@link ECDSAVerifyOpts}.\n * Implements section 4.1.4 from https://www.secg.org/sec1-v2.pdf:\n *\n * ```\n * verify(r, s, h, P) where\n * u1 = hs^-1 mod n\n * u2 = rs^-1 mod n\n * R = u1⋅G + u2⋅P\n * mod(R.x, n) == r\n * ```\n */\n function verify(signature, message, publicKey, opts = {}) {\n const { lowS, prehash, format } = validateSigOpts(opts, defaultSigOpts);\n publicKey = ensureBytes('publicKey', publicKey);\n message = validateMsgAndHash(ensureBytes('message', message), prehash);\n if ('strict' in opts)\n throw new Error('options.strict was renamed to lowS');\n const sig = format === undefined\n ? tryParsingSig(signature)\n : Signature.fromBytes(ensureBytes('sig', signature), format);\n if (sig === false)\n return false;\n try {\n const P = Point.fromBytes(publicKey);\n if (lowS && sig.hasHighS())\n return false;\n const { r, s } = sig;\n const h = bits2int_modN(message); // mod n, not mod p\n const is = Fn.inv(s); // s^-1 mod n\n const u1 = Fn.create(h * is); // u1 = hs^-1 mod n\n const u2 = Fn.create(r * is); // u2 = rs^-1 mod n\n const R = Point.BASE.multiplyUnsafe(u1).add(P.multiplyUnsafe(u2)); // u1⋅G + u2⋅P\n if (R.is0())\n return false;\n const v = Fn.create(R.x); // v = r.x mod n\n return v === r;\n }\n catch (e) {\n return false;\n }\n }\n function recoverPublicKey(signature, message, opts = {}) {\n const { prehash } = validateSigOpts(opts, defaultSigOpts);\n message = validateMsgAndHash(message, prehash);\n return Signature.fromBytes(signature, 'recovered').recoverPublicKey(message).toBytes();\n }\n return Object.freeze({\n keygen,\n getPublicKey,\n getSharedSecret,\n utils,\n lengths,\n Point,\n sign,\n verify,\n recoverPublicKey,\n Signature,\n hash,\n });\n}\n/** @deprecated use `weierstrass` in newer releases */\nexport function weierstrassPoints(c) {\n const { CURVE, curveOpts } = _weierstrass_legacy_opts_to_new(c);\n const Point = weierstrassN(CURVE, curveOpts);\n return _weierstrass_new_output_to_legacy(c, Point);\n}\nfunction _weierstrass_legacy_opts_to_new(c) {\n const CURVE = {\n a: c.a,\n b: c.b,\n p: c.Fp.ORDER,\n n: c.n,\n h: c.h,\n Gx: c.Gx,\n Gy: c.Gy,\n };\n const Fp = c.Fp;\n let allowedLengths = c.allowedPrivateKeyLengths\n ? Array.from(new Set(c.allowedPrivateKeyLengths.map((l) => Math.ceil(l / 2))))\n : undefined;\n const Fn = Field(CURVE.n, {\n BITS: c.nBitLength,\n allowedLengths: allowedLengths,\n modFromBytes: c.wrapPrivateKey,\n });\n const curveOpts = {\n Fp,\n Fn,\n allowInfinityPoint: c.allowInfinityPoint,\n endo: c.endo,\n isTorsionFree: c.isTorsionFree,\n clearCofactor: c.clearCofactor,\n fromBytes: c.fromBytes,\n toBytes: c.toBytes,\n };\n return { CURVE, curveOpts };\n}\nfunction _ecdsa_legacy_opts_to_new(c) {\n const { CURVE, curveOpts } = _weierstrass_legacy_opts_to_new(c);\n const ecdsaOpts = {\n hmac: c.hmac,\n randomBytes: c.randomBytes,\n lowS: c.lowS,\n bits2int: c.bits2int,\n bits2int_modN: c.bits2int_modN,\n };\n return { CURVE, curveOpts, hash: c.hash, ecdsaOpts };\n}\nexport function _legacyHelperEquat(Fp, a, b) {\n /**\n * y² = x³ + ax + b: Short weierstrass curve formula. Takes x, returns y².\n * @returns y²\n */\n function weierstrassEquation(x) {\n const x2 = Fp.sqr(x); // x * x\n const x3 = Fp.mul(x2, x); // x² * x\n return Fp.add(Fp.add(x3, Fp.mul(x, a)), b); // x³ + a * x + b\n }\n return weierstrassEquation;\n}\nfunction _weierstrass_new_output_to_legacy(c, Point) {\n const { Fp, Fn } = Point;\n function isWithinCurveOrder(num) {\n return inRange(num, _1n, Fn.ORDER);\n }\n const weierstrassEquation = _legacyHelperEquat(Fp, c.a, c.b);\n return Object.assign({}, {\n CURVE: c,\n Point: Point,\n ProjectivePoint: Point,\n normPrivateKeyToScalar: (key) => _normFnElement(Fn, key),\n weierstrassEquation,\n isWithinCurveOrder,\n });\n}\nfunction _ecdsa_new_output_to_legacy(c, _ecdsa) {\n const Point = _ecdsa.Point;\n return Object.assign({}, _ecdsa, {\n ProjectivePoint: Point,\n CURVE: Object.assign({}, c, nLength(Point.Fn.ORDER, Point.Fn.BITS)),\n });\n}\n// _ecdsa_legacy\nexport function weierstrass(c) {\n const { CURVE, curveOpts, hash, ecdsaOpts } = _ecdsa_legacy_opts_to_new(c);\n const Point = weierstrassN(CURVE, curveOpts);\n const signs = ecdsa(Point, hash, ecdsaOpts);\n return _ecdsa_new_output_to_legacy(c, signs);\n}\n//# sourceMappingURL=weierstrass.js.map","/**\n * Utilities for short weierstrass curves, combined with noble-hashes.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { weierstrass } from \"./abstract/weierstrass.js\";\n/** connects noble-curves to noble-hashes */\nexport function getHash(hash) {\n return { hash };\n}\n/** @deprecated use new `weierstrass()` and `ecdsa()` methods */\nexport function createCurve(curveDef, defHash) {\n const create = (hash) => weierstrass({ ...curveDef, hash: hash });\n return { ...create(defHash), create };\n}\n//# sourceMappingURL=_shortw_utils.js.map","/**\n * SECG secp256k1. See [pdf](https://www.secg.org/sec2-v2.pdf).\n *\n * Belongs to Koblitz curves: it has efficiently-computable GLV endomorphism ψ,\n * check out {@link EndomorphismOpts}. Seems to be rigid (not backdoored).\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha256 } from '@noble/hashes/sha2.js';\nimport { randomBytes } from '@noble/hashes/utils.js';\nimport { createCurve } from \"./_shortw_utils.js\";\nimport { createHasher, isogenyMap, } from \"./abstract/hash-to-curve.js\";\nimport { Field, mapHashToField, mod, pow2 } from \"./abstract/modular.js\";\nimport { _normFnElement, mapToCurveSimpleSWU, } from \"./abstract/weierstrass.js\";\nimport { bytesToNumberBE, concatBytes, ensureBytes, inRange, numberToBytesBE, utf8ToBytes, } from \"./utils.js\";\n// Seems like generator was produced from some seed:\n// `Point.BASE.multiply(Point.Fn.inv(2n, N)).toAffine().x`\n// // gives short x 0x3b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63n\nconst secp256k1_CURVE = {\n p: BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f'),\n n: BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141'),\n h: BigInt(1),\n a: BigInt(0),\n b: BigInt(7),\n Gx: BigInt('0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798'),\n Gy: BigInt('0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8'),\n};\nconst secp256k1_ENDO = {\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n basises: [\n [BigInt('0x3086d221a7d46bcde86c90e49284eb15'), -BigInt('0xe4437ed6010e88286f547fa90abfe4c3')],\n [BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8'), BigInt('0x3086d221a7d46bcde86c90e49284eb15')],\n ],\n};\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\n/**\n * √n = n^((p+1)/4) for fields p = 3 mod 4. We unwrap the loop and multiply bit-by-bit.\n * (P+1n/4n).toString(2) would produce bits [223x 1, 0, 22x 1, 4x 0, 11, 00]\n */\nfunction sqrtMod(y) {\n const P = secp256k1_CURVE.p;\n // prettier-ignore\n const _3n = BigInt(3), _6n = BigInt(6), _11n = BigInt(11), _22n = BigInt(22);\n // prettier-ignore\n const _23n = BigInt(23), _44n = BigInt(44), _88n = BigInt(88);\n const b2 = (y * y * y) % P; // x^3, 11\n const b3 = (b2 * b2 * y) % P; // x^7\n const b6 = (pow2(b3, _3n, P) * b3) % P;\n const b9 = (pow2(b6, _3n, P) * b3) % P;\n const b11 = (pow2(b9, _2n, P) * b2) % P;\n const b22 = (pow2(b11, _11n, P) * b11) % P;\n const b44 = (pow2(b22, _22n, P) * b22) % P;\n const b88 = (pow2(b44, _44n, P) * b44) % P;\n const b176 = (pow2(b88, _88n, P) * b88) % P;\n const b220 = (pow2(b176, _44n, P) * b44) % P;\n const b223 = (pow2(b220, _3n, P) * b3) % P;\n const t1 = (pow2(b223, _23n, P) * b22) % P;\n const t2 = (pow2(t1, _6n, P) * b2) % P;\n const root = pow2(t2, _2n, P);\n if (!Fpk1.eql(Fpk1.sqr(root), y))\n throw new Error('Cannot find square root');\n return root;\n}\nconst Fpk1 = Field(secp256k1_CURVE.p, { sqrt: sqrtMod });\n/**\n * secp256k1 curve, ECDSA and ECDH methods.\n *\n * Field: `2n**256n - 2n**32n - 2n**9n - 2n**8n - 2n**7n - 2n**6n - 2n**4n - 1n`\n *\n * @example\n * ```js\n * import { secp256k1 } from '@noble/curves/secp256k1';\n * const { secretKey, publicKey } = secp256k1.keygen();\n * const msg = new TextEncoder().encode('hello');\n * const sig = secp256k1.sign(msg, secretKey);\n * const isValid = secp256k1.verify(sig, msg, publicKey) === true;\n * ```\n */\nexport const secp256k1 = createCurve({ ...secp256k1_CURVE, Fp: Fpk1, lowS: true, endo: secp256k1_ENDO }, sha256);\n// Schnorr signatures are superior to ECDSA from above. Below is Schnorr-specific BIP0340 code.\n// https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki\n/** An object mapping tags to their tagged hash prefix of [SHA256(tag) | SHA256(tag)] */\nconst TAGGED_HASH_PREFIXES = {};\nfunction taggedHash(tag, ...messages) {\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = sha256(utf8ToBytes(tag));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return sha256(concatBytes(tagP, ...messages));\n}\n// ECDSA compact points are 33-byte. Schnorr is 32: we strip first byte 0x02 or 0x03\nconst pointToBytes = (point) => point.toBytes(true).slice(1);\nconst Pointk1 = /* @__PURE__ */ (() => secp256k1.Point)();\nconst hasEven = (y) => y % _2n === _0n;\n// Calculate point, scalar and bytes\nfunction schnorrGetExtPubKey(priv) {\n const { Fn, BASE } = Pointk1;\n const d_ = _normFnElement(Fn, priv);\n const p = BASE.multiply(d_); // P = d'⋅G; 0 < d' < n check is done inside\n const scalar = hasEven(p.y) ? d_ : Fn.neg(d_);\n return { scalar, bytes: pointToBytes(p) };\n}\n/**\n * lift_x from BIP340. Convert 32-byte x coordinate to elliptic curve point.\n * @returns valid point checked for being on-curve\n */\nfunction lift_x(x) {\n const Fp = Fpk1;\n if (!Fp.isValidNot0(x))\n throw new Error('invalid x: Fail if x ≥ p');\n const xx = Fp.create(x * x);\n const c = Fp.create(xx * x + BigInt(7)); // Let c = x³ + 7 mod p.\n let y = Fp.sqrt(c); // Let y = c^(p+1)/4 mod p. Same as sqrt().\n // Return the unique point P such that x(P) = x and\n // y(P) = y if y mod 2 = 0 or y(P) = p-y otherwise.\n if (!hasEven(y))\n y = Fp.neg(y);\n const p = Pointk1.fromAffine({ x, y });\n p.assertValidity();\n return p;\n}\nconst num = bytesToNumberBE;\n/**\n * Create tagged hash, convert it to bigint, reduce modulo-n.\n */\nfunction challenge(...args) {\n return Pointk1.Fn.create(num(taggedHash('BIP0340/challenge', ...args)));\n}\n/**\n * Schnorr public key is just `x` coordinate of Point as per BIP340.\n */\nfunction schnorrGetPublicKey(secretKey) {\n return schnorrGetExtPubKey(secretKey).bytes; // d'=int(sk). Fail if d'=0 or d'≥n. Ret bytes(d'⋅G)\n}\n/**\n * Creates Schnorr signature as per BIP340. Verifies itself before returning anything.\n * auxRand is optional and is not the sole source of k generation: bad CSPRNG won't be dangerous.\n */\nfunction schnorrSign(message, secretKey, auxRand = randomBytes(32)) {\n const { Fn } = Pointk1;\n const m = ensureBytes('message', message);\n const { bytes: px, scalar: d } = schnorrGetExtPubKey(secretKey); // checks for isWithinCurveOrder\n const a = ensureBytes('auxRand', auxRand, 32); // Auxiliary random data a: a 32-byte array\n const t = Fn.toBytes(d ^ num(taggedHash('BIP0340/aux', a))); // Let t be the byte-wise xor of bytes(d) and hash/aux(a)\n const rand = taggedHash('BIP0340/nonce', t, px, m); // Let rand = hash/nonce(t || bytes(P) || m)\n // Let k' = int(rand) mod n. Fail if k' = 0. Let R = k'⋅G\n const { bytes: rx, scalar: k } = schnorrGetExtPubKey(rand);\n const e = challenge(rx, px, m); // Let e = int(hash/challenge(bytes(R) || bytes(P) || m)) mod n.\n const sig = new Uint8Array(64); // Let sig = bytes(R) || bytes((k + ed) mod n).\n sig.set(rx, 0);\n sig.set(Fn.toBytes(Fn.create(k + e * d)), 32);\n // If Verify(bytes(P), m, sig) (see below) returns failure, abort\n if (!schnorrVerify(sig, m, px))\n throw new Error('sign: Invalid signature produced');\n return sig;\n}\n/**\n * Verifies Schnorr signature.\n * Will swallow errors & return false except for initial type validation of arguments.\n */\nfunction schnorrVerify(signature, message, publicKey) {\n const { Fn, BASE } = Pointk1;\n const sig = ensureBytes('signature', signature, 64);\n const m = ensureBytes('message', message);\n const pub = ensureBytes('publicKey', publicKey, 32);\n try {\n const P = lift_x(num(pub)); // P = lift_x(int(pk)); fail if that fails\n const r = num(sig.subarray(0, 32)); // Let r = int(sig[0:32]); fail if r ≥ p.\n if (!inRange(r, _1n, secp256k1_CURVE.p))\n return false;\n const s = num(sig.subarray(32, 64)); // Let s = int(sig[32:64]); fail if s ≥ n.\n if (!inRange(s, _1n, secp256k1_CURVE.n))\n return false;\n // int(challenge(bytes(r)||bytes(P)||m))%n\n const e = challenge(Fn.toBytes(r), pointToBytes(P), m);\n // R = s⋅G - e⋅P, where -eP == (n-e)P\n const R = BASE.multiplyUnsafe(s).add(P.multiplyUnsafe(Fn.neg(e)));\n const { x, y } = R.toAffine();\n // Fail if is_infinite(R) / not has_even_y(R) / x(R) ≠ r.\n if (R.is0() || !hasEven(y) || x !== r)\n return false;\n return true;\n }\n catch (error) {\n return false;\n }\n}\n/**\n * Schnorr signatures over secp256k1.\n * https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki\n * @example\n * ```js\n * import { schnorr } from '@noble/curves/secp256k1';\n * const { secretKey, publicKey } = schnorr.keygen();\n * // const publicKey = schnorr.getPublicKey(secretKey);\n * const msg = new TextEncoder().encode('hello');\n * const sig = schnorr.sign(msg, secretKey);\n * const isValid = schnorr.verify(sig, msg, publicKey);\n * ```\n */\nexport const schnorr = /* @__PURE__ */ (() => {\n const size = 32;\n const seedLength = 48;\n const randomSecretKey = (seed = randomBytes(seedLength)) => {\n return mapHashToField(seed, secp256k1_CURVE.n);\n };\n // TODO: remove\n secp256k1.utils.randomSecretKey;\n function keygen(seed) {\n const secretKey = randomSecretKey(seed);\n return { secretKey, publicKey: schnorrGetPublicKey(secretKey) };\n }\n return {\n keygen,\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n Point: Pointk1,\n utils: {\n randomSecretKey: randomSecretKey,\n randomPrivateKey: randomSecretKey,\n taggedHash,\n // TODO: remove\n lift_x,\n pointToBytes,\n numberToBytesBE,\n bytesToNumberBE,\n mod,\n },\n lengths: {\n secretKey: size,\n publicKey: size,\n publicKeyHasPrefix: false,\n signature: size * 2,\n seed: seedLength,\n },\n };\n})();\nconst isoMap = /* @__PURE__ */ (() => isogenyMap(Fpk1, [\n // xNum\n [\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7',\n '0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581',\n '0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262',\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c',\n ],\n // xDen\n [\n '0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b',\n '0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n // yNum\n [\n '0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c',\n '0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3',\n '0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931',\n '0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84',\n ],\n // yDen\n [\n '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b',\n '0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573',\n '0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n].map((i) => i.map((j) => BigInt(j)))))();\nconst mapSWU = /* @__PURE__ */ (() => mapToCurveSimpleSWU(Fpk1, {\n A: BigInt('0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533'),\n B: BigInt('1771'),\n Z: Fpk1.create(BigInt('-11')),\n}))();\n/** Hashing / encoding to secp256k1 points / field. RFC 9380 methods. */\nexport const secp256k1_hasher = /* @__PURE__ */ (() => createHasher(secp256k1.Point, (scalars) => {\n const { x, y } = mapSWU(Fpk1.create(scalars[0]));\n return isoMap(x, y);\n}, {\n DST: 'secp256k1_XMD:SHA-256_SSWU_RO_',\n encodeDST: 'secp256k1_XMD:SHA-256_SSWU_NU_',\n p: Fpk1.ORDER,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha256,\n}))();\n/** @deprecated use `import { secp256k1_hasher } from '@noble/curves/secp256k1.js';` */\nexport const hashToCurve = /* @__PURE__ */ (() => secp256k1_hasher.hashToCurve)();\n/** @deprecated use `import { secp256k1_hasher } from '@noble/curves/secp256k1.js';` */\nexport const encodeToCurve = /* @__PURE__ */ (() => secp256k1_hasher.encodeToCurve)();\n//# sourceMappingURL=secp256k1.js.map","/**\n * SHA2-256 a.k.a. sha256. In JS, it is the fastest hash, even faster than Blake3.\n *\n * To break sha256 using birthday attack, attackers need to try 2^128 hashes.\n * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n *\n * Check out [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n * @deprecated\n */\nimport { SHA224 as SHA224n, sha224 as sha224n, SHA256 as SHA256n, sha256 as sha256n, } from \"./sha2.js\";\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA256 = SHA256n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha256 = sha256n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA224 = SHA224n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha224 = sha224n;\n//# sourceMappingURL=sha256.js.map","import { schnorr } from '@noble/curves/secp256k1'\r\nimport { bytesToHex } from '@noble/hashes/utils'\r\nimport { sha256 } from '@noble/hashes/sha256'\r\n\r\n// import {utf8Encoder} from './utils'\r\n// import { getPublicKey } from './keys'\r\n\r\nexport const utf8Decoder = new TextDecoder('utf-8')\r\nexport const utf8Encoder = new TextEncoder()\r\n\r\nexport const SEC = 'https://w3id.org/security#' // Proof, VerificationMethod\r\n// export const CERT = 'http://www.w3.org/ns/auth/cert#' // PrivateKey, PublicKey, key\r\n\r\n/* export enum Kind {\r\n Metadata = 0,\r\n Text = 1,\r\n RecommendRelay = 2,\r\n Contacts = 3,\r\n EncryptedDirectMessage = 4,\r\n EventDeletion = 5,\r\n Reaction = 7,\r\n BadgeAward = 8,\r\n ChannelCreation = 40,\r\n ChannelMetadata = 41,\r\n ChannelMessage = 42,\r\n ChannelHideMessage = 43,\r\n ChannelMuteUser = 44,\r\n Report = 1984,\r\n ZapRequest = 9734,\r\n Zap = 9735,\r\n RelayList = 10002,\r\n ClientAuth = 22242,\r\n BadgeDefinition = 30008,\r\n ProfileBadge = 30009,\r\n Article = 30023\r\n} */\r\n\r\nexport type MsgTemplate = {\r\n id: string\r\n created: string\r\n dateDeleted: string\r\n content: string\r\n maker: string\r\n sig: string\r\n}\r\n\r\nexport type UnsignedMsg = MsgTemplate & {\r\n pubkey: string\r\n}\r\n\r\nexport type Message = UnsignedMsg & {\r\n id: string\r\n sig: string\r\n}\r\n\r\nexport function getBlankMsg (): MsgTemplate {\r\n return {\r\n id: '',\r\n created: '',\r\n dateDeleted: '', // TODO to remove if not used\r\n content: '',\r\n maker: '',\r\n sig: '' // TODO to remove if not used\r\n }\r\n}\r\n\r\n/* export function finishMsg (t: MsgTemplate, privateKey: string): Message {\r\n // to update to chat message triples\r\n const message = t as Message\r\n // message.pubkey = getPublicKey(privateKey)\r\n message.id = getMsgHash(message)\r\n message.sig = signMsg(message, privateKey)\r\n return message\r\n} */\r\n\r\nexport function serializeMsg (msg: UnsignedMsg): string {\r\n // to update to chat messages triples\r\n /* if (!validateMsg(msg))\r\n throw new Error(\"can't serialize message with wrong or missing properties\") */\r\n\r\n return JSON.stringify(msg)\r\n}\r\n\r\nexport function getMsgHash (message: UnsignedMsg) {\r\n const msgHash = sha256(utf8Encoder.encode(serializeMsg(message)))\r\n return bytesToHex(msgHash)\r\n}\r\n\r\n// const isRecord = (obj: unknown): obj is Record<string, unknown> => obj instanceof Object\r\n\r\n/* export function validateMsg<T> (message: T): message is T & UnsignedMsg {\r\n if (!isRecord(message)) return false\r\n if (typeof message.kind !== 'number') return false\r\n if (typeof message.content !== 'string') return false\r\n if (typeof message.created_at !== 'number') return false\r\n if (typeof message.pubkey !== 'string') return false\r\n if (!message.pubkey.match(/^[a-f0-9]{64}$/)) return false\r\n\r\n if (!Array.isArray(message.tags)) return false\r\n for (let i = 0; i < message.tags.length; i++) {\r\n let tag = message.tags[i]\r\n if (!Array.isArray(tag)) return false\r\n for (let j = 0; j < tag.length; j++) {\r\n if (typeof tag[j] === 'object') return false\r\n }\r\n }\r\n\r\n return true\r\n} */\r\n\r\nexport function verifySignature (sig: string, message: Message, pubKey: string): boolean {\r\n return schnorr.verify(\r\n sig,\r\n getMsgHash(message),\r\n pubKey\r\n )\r\n}\r\n\r\nexport function signMsg (message: UnsignedMsg, key: string): string {\r\n return bytesToHex(\r\n schnorr.sign(getMsgHash(message), key)\r\n )\r\n}\r\n","import { store } from 'solid-logic'\nimport ns from '../../ns'\nimport { NamedNode } from 'rdflib'\n// Will rename this file later. We will probably be using solid-logic anyway\n// moved it out so I can mock\n\nexport const getRootIfPreferencesExist = (webId: NamedNode) => {\n let root = store.any(webId, ns.space('preferencesFile'), null, webId.doc())?.value\n root = root?.split('/').slice(0, -2).join('/')\n if (!root) throw new Error(`prefererencesFile is expected to exist in ${webId}`)\n return root\n}\n","import * as debug from '../../debug'\nimport { store } from 'solid-logic'\nimport ns from '../../ns'\nimport { NamedNode } from 'rdflib'\nimport { getRootIfPreferencesExist } from './otherHelpers'\n\nexport const pubKeyUrl = (webId: NamedNode) => {\n let url\n try {\n const root = getRootIfPreferencesExist(webId)\n url = `${root}/profile/keys/publicKey.ttl`\n } catch (err) {\n debug.error(err)\n }\n return url\n}\n\nexport const privKeyUrl = (webId: NamedNode) => {\n let url\n try {\n const root = getRootIfPreferencesExist(webId)\n url = `${root}/settings/keys/privateKey.ttl`\n } catch (err) {\n debug.error(err)\n }\n return url\n}\n\nexport async function getExistingPublicKey (webId: NamedNode, publicKeyUrl: string) {\n // find publickey\n return await getKeyIfExists(webId, publicKeyUrl, 'publicKey')\n}\n\nexport async function getExistingPrivateKey (webId: NamedNode, privateKeyUrl: string) {\n // find privateKey\n return await getKeyIfExists(webId, privateKeyUrl, 'privateKey')\n}\n\ntype KeyType = 'publicKey' | 'privateKey'\n\nexport async function getKeyIfExists (webId: NamedNode, keyUrl: string, keyType: KeyType) {\n try {\n await store.fetcher.load(keyUrl)\n const key = store.any(webId, ns.solid(keyType)) // store.sym(CERT + keyType))\n return key?.value // as NamedNode\n } catch (err) {\n if (err.response.status === 404) {\n debug.log(\n 'createIfNotExists: doc does NOT exist, will create... ' + keyUrl\n )\n try {\n await store.fetcher.webOperation('PUT', keyUrl, {\n data: '',\n contentType: 'text/turtle'\n })\n } catch (err) {\n debug.log('createIfNotExists doc FAILED: ' + keyUrl + ': ' + err)\n throw err\n }\n delete store.fetcher.requested[keyUrl] // delete cached 404 error\n // debug.log('createIfNotExists doc created ok ' + doc)\n return undefined // response\n } else {\n debug.log('createIfNotExists doc FAILED: ' + keyUrl + ': ' + err)\n throw err\n }\n }\n}\n","import * as debug from '../../debug'\nimport { store } from 'solid-logic'\n\n/**\n * set ACL\n * @param keyDoc\n * @param aclBody\n */\nexport async function setAcl (keyDoc: string, aclBody: string) {\n // Some servers don't present a Link http response header\n // if the container doesn't exist yet, refetch the resource\n\n await store.fetcher.load(keyDoc)\n\n // FIXME: check the Why value on this quad:\n // debug.log(store.statementsMatching(store.sym(keyDoc), store.sym('http://www.iana.org/assignments/link-relations/acl')))\n const keyAclDoc = store.any(store.sym(keyDoc), store.sym('http://www.iana.org/assignments/link-relations/acl'))\n if (!keyAclDoc) {\n throw new Error('Key ACL doc not found!')\n }\n\n try {\n await store.fetcher.webOperation('PUT', keyAclDoc.value, {\n data: aclBody,\n contentType: 'text/turtle'\n })\n } catch (err) {\n if (err?.response?.status !== 404) { throw new Error(err) }\n debug.log('delete ' + keyAclDoc.value + ' ' + err.response.status) // should test 404 and 2xx\n }\n}\n\n/**\n * key container ACL\n * @param me\n * @returns aclBody\n */\nexport const keyContainerAclBody = (me: string) => {\n const aclBody = `\n@prefix : <#>.\n@prefix acl: <http://www.w3.org/ns/auth/acl#>.\n@prefix foaf: <http://xmlns.com/foaf/0.1/>.\n@prefix key: <./>.\n\n:ReadWrite\n a acl:Authorization;\n acl:accessTo key:;\n acl:default key:;\n acl:agent <${me}>;\n acl:mode acl:Read, acl:Write.\n`\n return aclBody\n}\n\n/**\n * Read only ACL\n * @param keyDoc\n * @param me\n * @returns aclBody\n */\nexport const keyAclBody = (keyDoc, me) => {\n let keyAgent = 'acl:agentClass foaf:Agent' // publicKey\n if (me?.length) keyAgent = `acl:agent <${me}>` // privateKey\n const aclBody = `\n@prefix foaf: <http://xmlns.com/foaf/0.1/>.\n@prefix acl: <http://www.w3.org/ns/auth/acl#>.\n<#Read>\n a acl:Authorization;\n ${keyAgent};\n acl:accessTo <${keyDoc.split('/').pop()}>;\n acl:mode acl:Read.\n`\n return aclBody\n}\n","import * as debug from '../debug'\r\nimport { schnorr } from '@noble/curves/secp256k1'\r\nimport { bytesToHex } from '@noble/hashes/utils'\r\nimport ns from '../ns'\r\nimport { store } from 'solid-logic'\r\nimport { NamedNode } from 'rdflib'\r\nimport * as $rdf from 'rdflib'\r\nimport { getExistingPublicKey, pubKeyUrl, privKeyUrl, getExistingPrivateKey } from '../utils/keyHelpers/accessData'\r\nimport { setAcl, keyContainerAclBody, keyAclBody } from '../utils/keyHelpers/acl'\r\n\r\nexport function generatePrivateKey (): string {\r\n return bytesToHex(schnorr.utils.randomPrivateKey())\r\n}\r\n\r\nexport function generatePublicKey (privateKey: string): string {\r\n return bytesToHex(schnorr.getPublicKey(privateKey))\r\n}\r\n\r\n/**\r\n * getPublicKey\r\n * used for displaying messages in chat, therefore does not\r\n * create a new key if not found\r\n * @param webId\r\n * @returns string | undefined\r\n */\r\nexport async function getPublicKey (webId: NamedNode) {\r\n await store.fetcher.load(webId)\r\n const publicKeyDoc = await pubKeyUrl(webId)\r\n try {\r\n await store.fetcher.load(publicKeyDoc) // url.href)\r\n const key = store.any(webId, ns.solid('publicKey'))\r\n return key?.value // as NamedNode\r\n } catch (_err) {\r\n return undefined\r\n }\r\n}\r\n\r\nexport async function getPrivateKey (webId: NamedNode) {\r\n await store.fetcher.load(webId)\r\n // find keys url's\r\n const publicKeyDoc = await pubKeyUrl(webId)\r\n const privateKeyDoc = await privKeyUrl(webId)\r\n\r\n // find key pair\r\n const publicKey = await getExistingPublicKey(webId, publicKeyDoc)\r\n let privateKey = await getExistingPrivateKey(webId, privateKeyDoc)\r\n\r\n // is publicKey valid ?\r\n let validPublicKey = true\r\n if (privateKey && (publicKey !== generatePublicKey(privateKey as string))) {\r\n if (confirm('This is strange the publicKey is not valid for\\n' + webId?.uri +\r\n '\\'shall we repair keeping the private key ?')) validPublicKey = false\r\n }\r\n\r\n // create key pair or repair publicKey\r\n if (!privateKey || !publicKey || !validPublicKey) {\r\n let del: any[] = []\r\n let add: any[] = []\r\n\r\n if (!privateKey) {\r\n // add = []\r\n privateKey = generatePrivateKey()\r\n add = [$rdf.st(webId, ns.solid('privateKey'), $rdf.literal(privateKey), store.sym(privateKeyDoc))]\r\n await saveKey(privateKeyDoc, [], add, webId.uri)\r\n }\r\n if (!publicKey || !validPublicKey) {\r\n del = []\r\n // delete invalid public key\r\n if (publicKey) {\r\n del = [$rdf.st(webId, ns.solid('publicKey'), $rdf.lit(publicKey), store.sym(publicKeyDoc))]\r\n debug.log('delete invalid publicKey ' + del)\r\n }\r\n // update new valid key\r\n const newPublicKey = generatePublicKey(privateKey)\r\n add = [$rdf.st(webId, ns.solid('publicKey'), $rdf.literal(newPublicKey), store.sym(publicKeyDoc))]\r\n await saveKey(publicKeyDoc, del, add)\r\n }\r\n const keyContainer = privateKeyDoc.substring(0, privateKeyDoc.lastIndexOf('/') + 1)\r\n await setAcl(keyContainer, keyContainerAclBody(webId.uri)) // includes DELETE and PUT\r\n }\r\n return privateKey as string\r\n}\r\n\r\nconst deleteKeyAcl = async (keyDoc: string) => {\r\n await store.fetcher.load(keyDoc)\r\n\r\n const keyAclDoc = store.any(store.sym(keyDoc), store.sym('http://www.iana.org/assignments/link-relations/acl'))\r\n if (keyAclDoc) {\r\n // delete READ only keyAclDoc. This is possible if the webId is an owner\r\n try {\r\n const response = await store.fetcher.webOperation('DELETE', keyAclDoc.value) // this may fail if webId is not an owner\r\n debug.log('delete keyAcl' + keyAclDoc.value + ' ' + response.status) // should test 404 and 2xx\r\n } catch (err) {\r\n if (err.response.status !== 404) { throw new Error(err) }\r\n debug.log('delete keyAcl' + keyAclDoc.value + ' ' + err.response.status) // should test 404 and 2xx\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * delete acl if keydoc exists\r\n * create/edit keyDoc\r\n * set keyDoc acl\r\n */\r\nasync function saveKey (keyDoc: string, del, add, me: string = '') {\r\n await deleteKeyAcl(keyDoc)\r\n // save key\r\n await store.updater.updateMany(del, add) // or a promise store.updater.update ?\r\n\r\n // create READ only ACL\r\n const aclBody = keyAclBody(keyDoc, me)\r\n await setAcl(keyDoc, aclBody)\r\n}\r\n","/**\n * Contains the [[ChatChannel]] class and logic for Solid Chat\n * @packageDocumentation\n */\n\nimport * as debug from '../debug'\nimport { DateFolder } from './dateFolder'\nimport { store, authn } from 'solid-logic'\nimport ns from '../ns'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport * as utils from '../utils'\nimport { getBlankMsg, signMsg, SEC } from './signature'\nimport { getPrivateKey } from './keys'\n\n/* The Solid logic for a 'LongChat'\n*/\n/**\n * Common code for a chat (discussion area of messages about something)\n * This version runs over a series of files for different time periods\n *\n * Parameters for the whole chat like its title are stored on\n * index.ttl#this and the chats messages are stored in YYYY/MM/DD/chat.ttl\n *\n */\n\nexport class ChatChannel {\n constructor (channel, options) {\n this.channel = channel\n this.channelRoot = channel.doc()\n this.options = options\n this.dateFolder = new DateFolder(this.channelRoot, 'chat.ttl')\n this.div = null // : HTMLElement\n }\n\n /* Store a new message in the web,\n */\n async createMessage (text) {\n return this.updateMessage(text)\n }\n\n /* Store a new message in the web,\n as a replacement for an existing one.\n The old one iis left, and the two are linked\n */\n async updateMessage (text, oldMsg = null, deleteIt, thread = null) {\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = $rdf.term(now)\n const chatDocument = oldMsg ? oldMsg.doc() : this.dateFolder.leafDocumentFromDate(now)\n const message = store.sym(chatDocument.uri + '#' + 'Msg' + timestamp)\n // const content = store.literal(text)\n\n const me = authn.currentUser() // If already logged on\n\n const msg = getBlankMsg()\n msg.id = message.uri\n if (oldMsg) { // edit message replaces old one\n const oldMsgMaker = store.any(oldMsg, ns.foaf('maker')) // may not be needed here, but needed on READ\n if (oldMsgMaker.uri === me.uri) {\n const oldMsgMostRecentVersion = await mostRecentVersion(oldMsg)\n sts.push($rdf.st(oldMsgMostRecentVersion, ns.dct('isReplacedBy'), message, chatDocument))\n // if oldMsg has_reply => add has_reply to message\n const oldMsgThread = store.any(oldMsgMostRecentVersion, ns.sioc('has_reply'))\n if (oldMsgThread) {\n sts.push($rdf.st(message, ns.sioc('has_reply'), oldMsgThread, chatDocument))\n }\n if (deleteIt) { // we need to add a specific signature, else anyone can delete a msg ?\n sts.push($rdf.st(message, ns.schema('dateDeleted'), dateStamp, chatDocument))\n }\n } else {\n const errMsg = 'Error you cannot delete/edit a message from someone else : \\n' + oldMsgMaker.uri\n debug.warn(errMsg)\n alert(errMsg)\n throw new Error(errMsg)\n }\n } else { // link new message to channel\n sts.push($rdf.st(this.channel, ns.wf('message'), message, chatDocument))\n }\n sts.push(\n $rdf.st(message, ns.sioc('content'), store.literal(text), chatDocument)\n )\n msg.content = text\n\n sts.push(\n $rdf.st(message, ns.dct('created'), dateStamp, chatDocument)\n )\n msg.created = dateStamp.value\n if (me) {\n sts.push($rdf.st(message, ns.foaf('maker'), me, chatDocument))\n msg.maker = me.uri\n // privateKey the cached private key of me, cached in store\n const privateKey = await getPrivateKey(me) // me.uri)\n\n const sig = signMsg(msg, privateKey)\n sts.push($rdf.st(message, $rdf.sym(`${SEC}proofValue`), $rdf.lit(sig), chatDocument))\n }\n if (thread) {\n sts.push($rdf.st(thread, ns.sioc('has_member'), message, chatDocument))\n if (!thread.doc().sameTerm(message.doc())) {\n sts.push($rdf.st(thread, ns.sioc('has_member'), message, thread.doc()))\n }\n }\n\n try {\n await store.updater.updateMany([], sts)\n } catch (err) {\n const errMsg = 'Error saving chat message: ' + err\n debug.warn(errMsg)\n alert(errMsg)\n throw new Error(errMsg)\n }\n return message\n }\n\n /* Mark a message as deleted\n * Wee add a new version of the message,m witha deletion flag (deletion date)\n * so that the deletion can be revoked by adding another non-deleted update\n */\n async deleteMessage (message) {\n return this.updateMessage('(message deleted)', message, true)\n }\n\n // Create a new thread of replies to the thread root message\n // or return one which already exists\n\n async createThread (threadRoot) {\n const already = store.each(threadRoot, ns.sioc('has_reply'), null, threadRoot.doc())\n .filter(thread => store.holds(thread, ns.rdf('type'), ns.sioc('Thread'), thread.doc()))\n if (already.length > 0) return already[0]\n\n const thread = $rdf.sym(threadRoot.uri + '-thread')\n const insert = [\n $rdf.st(thread, ns.rdf('type'), ns.sioc('Thread'), thread.doc()),\n $rdf.st(threadRoot, ns.sioc('has_reply'), thread, thread.doc())\n ]\n await store.updater.update([], insert)\n return thread\n }\n} // class ChatChannel\n\n// ////////// Utility functions\n\n// Have to not loop forever if fed loops\nexport async function allVersions (message) {\n const versions = [message]\n const done = {}\n done[message.uri] = true\n let m = message\n while (true) { // earlier?\n const prev = store.any(null, ns.dct('isReplacedBy'), m, m.doc())\n if (!prev || done[prev.uri]) break\n await store.fetcher.load(prev)\n versions.unshift(prev)\n done[prev.uri] = true\n m = prev\n }\n m = message\n while (true) { // later?\n const next = store.any(m, ns.dct('isReplacedBy'), null, m.doc())\n if (!next || done[next.uri]) break\n versions.push(next)\n done[next.uri] = true\n m = next\n }\n return versions\n}\n\nexport async function originalVersion (message) {\n let msg = message\n const done = {}\n // done[message.uri] = true\n while (msg) {\n if (done[msg.uri]) {\n debug.error('originalVersion: verion loop' + message)\n return message\n }\n done[msg.uri] = true\n message = msg\n await store.fetcher.load(message)\n msg = store.any(null, ns.dct('isReplacedBy'), message, message.doc())\n }\n return message\n}\n\nexport async function mostRecentVersion (message) {\n let msg = message\n const done = {}\n while (msg) {\n if (done[msg.uri]) {\n debug.error('mostRecentVersion: verion loop' + message)\n return message\n }\n done[msg.uri] = true\n message = msg\n await store.fetcher.load(message)\n msg = store.any(message, ns.dct('isReplacedBy'), null, message.doc())\n }\n return message\n}\n\nexport function isDeleted (message) {\n return store.holds(message, ns.schema('dateDeleted'), null, message.doc())\n}\n\nexport function isReplaced (message) {\n return store.holds(message, ns.dct('isReplacedBy'), null, message.doc())\n}\n\nexport function isHidden (message) {\n return this.isDeleted(message) || this.isReplaced(message)\n}\n\n// A Nickname for a person\n\nexport function nick (person) {\n const s = store.any(person, ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + utils.label(person)\n}\n// ends\n","/* Manage a UI for the participation of a person in any thing\n*/\n\n// import { currentUser } from './authn/authn'\nimport * as debug from './debug'\nimport { LiveStore, NamedNode, st, UpdateManager } from 'rdflib'\nimport ns from './ns'\nimport { personTR, newThing, errorMessageBlock } from './widgets'\nimport { syncTableToArray } from './utils'\nimport { lightColorHash } from './pad'\nimport { log } from './debug'\nimport { style } from './style'\nimport styleConstants from './styleConstants'\nimport { solidLogicSingleton, authn } from 'solid-logic'\n\ntype ParticipationOptions = {\n deleteFunction?: () => {}\n link?: string\n draggable?: boolean\n}\n\nclass ParticipationTableElement extends HTMLTableElement {\n refresh?: () => void\n}\nconst store = solidLogicSingleton.store as LiveStore\n\n/** Manage participation in this session\n*\n* @param {Document} dom - the web page loaded into the browser\n* @param {HTMLTableElement} table - the table element\n* @param {NamedNode} unused1/document - the document to render (this argument is no longer used, but left in for backwards compatibility)\n* @param {NamedNode} subject - the thing in which the participation is happening\n* @param {NamedNode} unused2/me - user that is logged into the pod (this argument is no longer used, but left in for backwards compatibility)\n* @param {ParticipationOptions} options - the options that can be passed in are deleteFunction, link, and draggable; these are used by the personTR button\n*/\nexport function renderParticipants (dom: HTMLDocument, table: ParticipationTableElement, unused1: NamedNode, subject: NamedNode, unused2: NamedNode, options: ParticipationOptions) {\n table.setAttribute('style', style.participantsStyle)\n\n const newRowForParticipation = function (parp) {\n const person = store.any(parp, ns.wf('participant'))\n\n let tr\n if (!person) {\n tr = dom.createElement('tr')\n tr.textContent = '???' // Don't crash - invalid part'n entry\n return tr\n }\n const bg = store.anyValue(parp, ns.ui('backgroundColor')) || styleConstants.participationDefaultBackground\n\n const block = dom.createElement('div')\n block.setAttribute(\n 'style', style.participantsBlock)\n block.style.backgroundColor = bg\n\n tr = personTR(dom, null, person, options)\n table.appendChild(tr)\n const td = dom.createElement('td')\n td.setAttribute('style', style.personTableTD)\n td.appendChild(block)\n tr.insertBefore(td, tr.firstChild)\n return tr\n }\n\n const syncTable = function () {\n const parps = store.each(subject, ns.wf('participation')).map(function (parp) {\n log('in participants')\n return [store.anyValue(parp as any, ns.cal('dtstart')) || '9999-12-31', parp]\n })\n parps.sort() // List in order of joining\n const participations = parps.map(function (p) {\n return p[1]\n })\n syncTableToArray(table, participations, newRowForParticipation)\n }\n table.refresh = syncTable\n syncTable()\n return table\n}\n\n/** Record, or find old, Participation object\n *\n * A participation object is a place to record things specifically about\n * subject and the user, such as preferences, start of membership, etc\n * @param {NamedNode} subject - the thing in which the participation is happening\n * @param {NamedNode} document - where to record the data\n * @param {NamedNode} me - the logged in user\n *\n */\nexport function participationObject (subject: NamedNode, padDoc: NamedNode, me: NamedNode) {\n return new Promise(function (resolve, reject) {\n if (!me) {\n throw new Error('No user id')\n }\n\n const parps = store.each(subject, ns.wf('participation')).filter(function (pn) {\n return store.holds(pn, ns.wf('participant'), me)\n })\n if (parps.length > 1) { // This can happen. https://github.com/solidos/chat-pane/issues/71\n const candidates: (string | NamedNode) [][] = []\n for (const participation of parps) {\n const date = store.anyValue(participation as NamedNode, ns.cal('dtstart'))\n if (date) {\n candidates.push([date, participation as NamedNode])\n }\n }\n candidates.sort() // Pick the earliest\n // @@ Possibly, for extra credit, delete the others, if we have write access\n debug.warn('Multiple participation objects, picking earliest, in ' + padDoc)\n resolve(candidates[0][1])\n // throw new Error('Multiple records of your participation')\n }\n if (parps.length) {\n // If I am not already recorded\n resolve(parps[0]) // returns the participation object\n } else {\n const participation = newThing(padDoc)\n const ins = [\n st(subject, ns.wf('participation'), participation, padDoc),\n\n st(participation, ns.wf('participant'), me, padDoc),\n st(participation, ns.cal('dtstart'), new Date() as any, padDoc),\n st(\n participation,\n ns.ui('backgroundColor'),\n lightColorHash(me) as any,\n padDoc\n )\n ];\n (store.updater as UpdateManager).update([], ins, function (uri: string | null | undefined, ok: boolean, errorMessage?: string) {\n if (!ok) {\n reject(new Error('Error recording your participation: ' + errorMessage))\n } else {\n resolve(participation)\n }\n })\n resolve(participation)\n }\n })\n}\n\n/** Record my participation and display participants\n *\n * @param {NamedNode} subject - the thing in which participation is happening\n * @param {NamedNode} padDoc - the document into which the participation should be recorded\n * @param {DOMNode} refreshable - a DOM element whose refresh() is to be called if the change works\n *\n */\nexport function recordParticipation (subject: NamedNode, padDoc: NamedNode, refreshable: any) {\n const me = authn.currentUser()\n if (!me) return // Not logged in\n\n const parps = store.each(subject, ns.wf('participation')).filter(function (pn) {\n return store.holds(pn, ns.wf('participant'), me)\n })\n if (parps.length > 1) {\n throw new Error('Multiple records of your participation')\n }\n if (parps.length) {\n // If I am not already recorded\n return parps[0] // returns the participation object\n } else {\n if (!(store.updater as UpdateManager).editable(padDoc)) {\n debug.log('Not recording participation, as no write access as ' + me + ' to ' + padDoc)\n return null\n }\n const participation = newThing(padDoc)\n const ins = [\n st(subject, ns.wf('participation'), participation, padDoc),\n\n st(participation, ns.wf('participant'), me, padDoc),\n st(participation, ns.cal('dtstart'), new Date() as any, padDoc),\n st(\n participation,\n ns.ui('backgroundColor'),\n lightColorHash(me) as any,\n padDoc\n )\n ];\n (store.updater as UpdateManager).update([], ins, function (uri: string | null | undefined, ok: boolean, errorMessage?: string) {\n if (!ok) {\n throw new Error('Error recording your participation: ' + errorMessage)\n }\n if (refreshable && refreshable.refresh) {\n refreshable.refresh()\n }\n })\n return participation\n }\n}\n\n/** Record my participation and display participants\n*\n* @param {Document} dom - the web page loaded into the browser\n* @param {HTMLDivElement} container - the container element where the participants should be displayed\n* @param {NamedNode} document - the document into which the participation should be shown\n* @param {NamedNode} subject - the thing in which participation is happening\n* @param {NamedNode} me - the logged in user\n* @param {ParticipationOptions} options - the options that can be passed in are deleteFunction, link, and draggable; these are used by the personTR button\n*\n*/\nexport function manageParticipation (\n dom: Document,\n container: HTMLDivElement,\n padDoc: NamedNode,\n subject: NamedNode,\n me: NamedNode,\n options: ParticipationOptions\n) {\n const table = dom.createElement('table')\n container.appendChild(table)\n renderParticipants(dom, table, padDoc, subject, me, options)\n try {\n recordParticipation(subject, padDoc, table)\n } catch (e) {\n container.appendChild(\n errorMessageBlock(\n dom,\n 'Error recording your participation: ' + e\n )\n ) // Clean up?\n }\n return table\n}\n","/** **************\n * Notepad Widget\n */\n\n/** @module pad\n */\nimport ns from './ns'\nimport { Namespace, NamedNode, st, IndexedFormula } from 'rdflib'\nimport { newThing, errorMessageBlock } from './widgets'\nimport { beep } from './utils'\nimport { log } from './debug'\nimport { solidLogicSingleton } from 'solid-logic'\nimport { style } from './style'\nexport { renderParticipants, participationObject, manageParticipation, recordParticipation } from './participation'\n\nconst store = solidLogicSingleton.store\n\nconst PAD = Namespace('http://www.w3.org/ns/pim/pad#')\n\ntype notepadOptions = {\n statusArea?: HTMLDivElement\n exists?: boolean\n}\n/**\n * @ignore\n */\nclass NotepadElement extends HTMLElement {\n subject?: NamedNode\n}\n/**\n * @ignore\n */\nclass NotepadPart extends HTMLElement {\n subject?: NamedNode | string\n value?: string\n state?: Number\n lastSent?: String\n}\n/** Figure out a random color from my webid\n *\n * @param {NamedNode} author - The author of text being displayed\n * @returns {String} The CSS color generated, constrained to be light for a background color\n */\nexport function lightColorHash (author?: NamedNode): string {\n const hash = function (x) {\n return x.split('').reduce(function (a, b) {\n a = (a << 5) - a + b.charCodeAt(0)\n return a & a\n }, 0)\n }\n return author && author.uri\n ? '#' + ((hash(author.uri) & 0xffffff) | 0xc0c0c0).toString(16)\n : '#ffffff' // c0c0c0 forces pale\n} // no id -> white\n\n/** notepad\n *\n * @param {HTMLDocument} dom - the web page of the browser\n * @param {NamedNode} padDoc - the document in which the participation should be shown\n * @param {NamedNode} subject - the thing in which participation is happening\n * @param {NamedNode} me - person who is logged into the pod\n * @param {notepadOptions} options - the options that can be passed in consist of statusArea, exists\n */\nexport function notepad (dom: HTMLDocument, padDoc: NamedNode, subject: NamedNode, me: NamedNode, options?: notepadOptions) {\n options = options || {}\n const exists = options.exists\n const table: any = dom.createElement('table')\n const kb = store\n\n if (me && !me.uri) throw new Error('UI.pad.notepad: Invalid userid')\n\n const updater = store.updater\n\n const PAD = Namespace('http://www.w3.org/ns/pim/pad#')\n\n table.setAttribute('style', style.notepadStyle)\n\n let upstreamStatus: HTMLElement | null = null\n let downstreamStatus: HTMLElement | null = null\n\n if (options.statusArea) {\n const t = options.statusArea.appendChild(dom.createElement('table'))\n const tr = t.appendChild(dom.createElement('tr'))\n upstreamStatus = tr.appendChild(dom.createElement('td'))\n downstreamStatus = tr.appendChild(dom.createElement('td'))\n\n if (upstreamStatus) {\n upstreamStatus.setAttribute('style', style.upstreamStatus)\n }\n if (downstreamStatus) {\n downstreamStatus.setAttribute('style', style.downstreamStatus)\n }\n }\n /* @@ TODO want to look into this, it seems upstream should be a boolean and default to false ?\n *\n */\n const complain = function (message: string, upstream: boolean = false) {\n log(message)\n if ((options as notepadOptions).statusArea) {\n ; (upstream ? upstreamStatus as HTMLElement : downstreamStatus as HTMLElement).appendChild(errorMessageBlock(dom, message, 'pink'))\n }\n }\n // @@ TODO need to refactor so that we don't have to type cast\n const clearStatus = function (_upsteam?: any) {\n if ((options as notepadOptions).statusArea) {\n ((options as notepadOptions).statusArea as HTMLElement).innerHTML = ''\n }\n }\n\n const setPartStyle = function (part: NotepadPart, colors?: string, pending?: any) {\n const chunk = part.subject\n colors = colors || ''\n const baseStyle = style.baseStyle\n const headingCore = style.headingCore\n const headingStyle = style.headingStyle\n\n const author = kb.any(chunk as any, ns.dc('author'))\n if (!colors && author) {\n // Hash the user webid for now -- later allow user selection!\n const bgcolor = lightColorHash(author as any)\n colors =\n 'color: ' +\n (pending ? '#888' : 'black') +\n '; background-color: ' +\n bgcolor +\n ';'\n }\n\n // @@ TODO Need to research when this can be an object with the indent stored in value\n // and when the indent is stored as a Number itself, not in an object.\n let indent: any = kb.any(chunk as any, PAD('indent'))\n\n indent = indent ? indent.value : 0\n const localStyle =\n indent >= 0\n ? baseStyle + 'text-indent: ' + indent * 3 + 'em;'\n : headingCore + headingStyle[-1 - indent]\n // ? baseStyle + 'padding-left: ' + (indent * 3) + 'em;'\n part.setAttribute('style', localStyle + colors)\n }\n\n const removePart = function (part: NotepadPart) {\n const chunk = part.subject\n if (!chunk) throw new Error('No chunk for line to be deleted!') // just in case\n const prev: any = kb.any(undefined, PAD('next'), chunk as any)\n const next: any = kb.any(chunk as any, PAD('next'))\n if (prev.sameTerm(subject) && next.sameTerm(subject)) {\n // Last one\n log('You can\\'t delete the only line.')\n return\n }\n\n const del = kb\n .statementsMatching(chunk as any, undefined, undefined, padDoc)\n .concat(kb.statementsMatching(undefined, undefined, chunk as any, padDoc))\n const ins = [st(prev, PAD('next'), next, padDoc)]\n\n // @@ TODO what should we do if chunk is not a NamedNode should we\n // assume then it is a string?\n if (chunk instanceof NamedNode) {\n const label = chunk.uri.slice(-4)\n\n log('Deleting line ' + label)\n }\n if (!updater) {\n throw new Error('have no updater')\n }\n // @@ TODO below you can see that before is redefined and not a boolean\n updater.update(del, ins, function (uri, ok, errorMessage, response) {\n if (ok) {\n const row = part.parentNode\n if (row) {\n const before: any = row.previousSibling\n if (row.parentNode) {\n row.parentNode.removeChild(row)\n }\n // console.log(' deleted line ' + label + ' ok ' + part.value)\n if (before && before.firstChild) {\n // @@ TODO IMPORTANT FOCUS ISN'T A PROPERTY ON A CHILDNODE\n before.firstChild.focus()\n }\n }\n } else if (response && (response as any).status === 409) {\n // Conflict\n setPartStyle(part, 'color: black; background-color: #ffd;') // yellow\n part.state = 0 // Needs downstream refresh\n beep(0.5, 512) // Ooops clash with other person\n setTimeout(function () {\n // Ideally, beep! @@\n reloadAndSync() // Throw away our changes and\n // updater.requestDownstreamAction(padDoc, reloadAndSync)\n }, 1000)\n } else {\n log(' removePart FAILED ' + chunk + ': ' + errorMessage)\n log(' removePart was deleteing :\\'' + del)\n setPartStyle(part, 'color: black; background-color: #fdd;') // failed\n const res = response ? (response as any).status : ' [no response field] '\n complain('Error ' + res + ' saving changes: ' + (errorMessage as any).true) // upstream,\n // updater.requestDownstreamAction(padDoc, reloadAndSync);\n }\n })\n } // removePart\n\n const changeIndent = function (part: NotepadPart, chunk: string, delta) {\n const del = kb.statementsMatching(chunk as any, PAD('indent'))\n const current = del.length ? Number(del[0].object.value) : 0\n if (current + delta < -3) return // limit negative indent\n const newIndent = current + delta\n const ins = st(chunk as any, PAD('indent'), newIndent, padDoc)\n if (!updater) {\n throw new Error('no updater')\n }\n updater.update(del, ins as any, function (uri, ok, errorBody) {\n if (!ok) {\n log(\n 'Indent change FAILED \\'' +\n newIndent +\n '\\' for ' +\n padDoc +\n ': ' +\n errorBody\n )\n setPartStyle(part, 'color: black; background-color: #fdd;') // failed\n updater.requestDownstreamAction(padDoc, reloadAndSync)\n } else {\n setPartStyle(part) // Implement the indent\n }\n })\n }\n\n const addListeners = function (part: any, chunk: any) {\n part.addEventListener('keydown', function (event) {\n if (!updater) {\n throw new Error('no updater')\n }\n\n let queueProperty, queue\n // up 38; down 40; left 37; right 39 tab 9; shift 16; escape 27\n switch (event.keyCode) {\n case 13: // Return\n {\n const before: NotepadElement = event.shiftKey\n log('enter') // Shift-return inserts before -- only way to add to top of pad.\n if (before) {\n queue = kb.any(undefined, PAD('next'), chunk)\n queueProperty = 'newlinesAfter'\n } else {\n queue = kb.any(chunk, PAD('next'))\n queueProperty = 'newlinesBefore'\n }\n queue[queueProperty] = queue[queueProperty] || 0\n queue[queueProperty] += 1\n if (queue[queueProperty] > 1) {\n log(' queueing newline queue = ' + queue[queueProperty])\n return\n }\n log(' go ahead line before ' + queue[queueProperty])\n newChunk(part, before) // was document.activeElement\n break\n }\n case 8: // Delete\n if (part.value.length === 0) {\n log(\n 'Delete key line ' + chunk.uri.slice(-4) + ' state ' + part.state\n )\n\n switch (part.state) {\n case 1: // contents being sent\n case 2: // contents need to be sent again\n part.state = 4 // delete me\n return\n case 3: // already being deleted\n case 4: // already deleted state\n return\n case undefined:\n case 0:\n part.state = 3 // being deleted\n removePart(part)\n event.preventDefault()\n break // continue\n default:\n throw new Error('pad: Unexpected state ' + part)\n }\n }\n break\n case 9: // Tab\n {\n const delta = event.shiftKey ? -1 : 1\n changeIndent(part, chunk, delta)\n event.preventDefault() // default is to highlight next field\n break\n }\n case 27: // ESC\n log('escape')\n updater.requestDownstreamAction(padDoc, reloadAndSync)\n event.preventDefault()\n break\n\n case 38: // Up\n if (part.parentNode.previousSibling) {\n part.parentNode.previousSibling.firstChild.focus()\n event.preventDefault()\n }\n break\n\n case 40: // Down\n if (part.parentNode.nextSibling) {\n part.parentNode.nextSibling.firstChild.focus()\n event.preventDefault()\n }\n break\n\n default:\n }\n })\n\n const updateStore = function (part: NotepadPart) {\n const chunk: any = part.subject\n setPartStyle(part, undefined, true)\n const old = (kb.any(chunk, ns.sioc('content')) as any).value\n const del = [st(chunk, ns.sioc('content'), old, padDoc)]\n let ins\n if (part.value) {\n ins = [st(chunk, ns.sioc('content'), part.value as any, padDoc)]\n }\n const newOne = part.value\n\n // DEBUGGING ONLY\n if (part.lastSent) {\n if (old !== part.lastSent) {\n throw new Error(\n 'Out of order, last sent expected \\'' +\n old +\n '\\' but found \\'' +\n part.lastSent +\n '\\''\n )\n }\n }\n part.lastSent = newOne\n\n /* console.log(\n ' Patch proposed to ' +\n chunk.uri.slice(-4) +\n \" '\" +\n old +\n \"' -> '\" +\n newOne +\n \"' \"\n ) */\n if (!updater) {\n throw new Error('no updater')\n }\n\n updater.update(del, ins, function (uri, ok, errorBody, xhr) {\n if (!ok) {\n // alert(\"clash \" + errorBody);\n log(\n ' patch FAILED ' +\n (xhr as any).status +\n ' for \\'' +\n old +\n '\\' -> \\'' +\n newOne +\n '\\': ' +\n errorBody\n )\n if ((xhr as any).status === 409) {\n // Conflict - @@ we assume someone else\n setPartStyle(part, 'color: black; background-color: #fdd;')\n part.state = 0 // Needs downstream refresh\n beep(0.5, 512) // Ooops clash with other person\n setTimeout(function () {\n updater.requestDownstreamAction(padDoc, reloadAndSync)\n }, 1000)\n } else {\n setPartStyle(part, 'color: black; background-color: #fdd;') // failed pink\n part.state = 0\n complain(\n ' Error ' + (xhr as any).status + ' sending data: ' + errorBody,\n true\n )\n beep(1.0, 128) // Other\n // @@@ Do soemthing more serious with other errors eg auth, etc\n }\n } else {\n clearStatus(true) // upstream\n setPartStyle(part) // synced\n log(' Patch ok \\'' + old + '\\' -> \\'' + newOne + '\\' ')\n\n if (part.state === 4) {\n // delete me\n part.state = 3\n removePart(part)\n } else if (part.state === 3) {\n // being deleted\n // pass\n } else if (part.state === 2) {\n part.state = 1 // pending: lock\n updateStore(part)\n } else {\n part.state = 0 // clear lock\n }\n }\n })\n }\n\n part.addEventListener('input', function inputChangeListener (_event) {\n // debug.log(\"input changed \"+part.value);\n setPartStyle(part, undefined, true) // grey out - not synced\n log(\n 'Input event state ' + part.state + ' value \\'' + part.value + '\\''\n )\n switch (part.state) {\n case 3: // being deleted\n return\n case 4: // needs to be deleted\n return\n case 2: // needs content updating, we know\n return\n case 1:\n part.state = 2 // lag we need another patch\n return\n case 0:\n case undefined:\n part.state = 1 // being upadted\n updateStore(part)\n }\n }) // listener\n } // addlisteners\n\n // @@ TODO Need to research before as it appears to be used as an Element and a boolean\n const newPartAfter = function (tr1: HTMLTableElement, chunk: String, before?: NotepadElement | boolean) {\n // @@ take chunk and add listeners\n let text: any = kb.any(chunk as any, ns.sioc('content'))\n text = text ? text.value : ''\n const tr = dom.createElement('tr')\n if (before) {\n table.insertBefore(tr, tr1)\n } else {\n // after\n if (tr1 && tr1.nextSibling) {\n table.insertBefore(tr, tr1.nextSibling)\n } else {\n table.appendChild(tr)\n }\n }\n const part: any = tr.appendChild(dom.createElement('input'))\n part.subject = chunk\n part.setAttribute('type', 'text')\n part.value = text\n if (me) {\n setPartStyle(part, '')\n addListeners(part, chunk)\n } else {\n setPartStyle(part, 'color: #222; background-color: #fff')\n log('Note can\\'t add listeners - not logged in')\n }\n return part\n }\n\n /* @@ TODO we need to look at indent, it can be a Number or an Object this doesn't seem correct.\n */\n const newChunk = function (ele?: NotepadElement, before?: NotepadElement) {\n // element of chunk being split\n const kb = store\n let indent: any = 0\n let queueProperty: string | null = null\n let here, prev, next, queue, tr1: any\n\n if (ele) {\n if (ele.tagName.toLowerCase() !== 'input') {\n log('return pressed when current document is: ' + ele.tagName)\n }\n here = ele.subject\n indent = kb.any(here, PAD('indent'))\n indent = indent ? Number(indent.value) : 0\n if (before) {\n prev = kb.any(undefined, PAD('next'), here)\n next = here\n queue = prev\n queueProperty = 'newlinesAfter'\n } else {\n prev = here\n next = kb.any(here, PAD('next'))\n queue = next\n queueProperty = 'newlinesBefore'\n }\n tr1 = ele.parentNode\n } else {\n prev = subject\n next = subject\n tr1 = undefined\n }\n\n const chunk = newThing(padDoc)\n const label = chunk.uri.slice(-4)\n\n const del = [st(prev, PAD('next'), next, padDoc)]\n const ins = [\n st(prev, PAD('next'), chunk, padDoc),\n st(chunk, PAD('next'), next, padDoc),\n st(chunk, ns.dc('author'), me, padDoc),\n st(chunk, ns.sioc('content'), '' as any, padDoc)\n ]\n if (indent > 0) {\n // Do not inherit\n ins.push(st(chunk, PAD('indent'), indent, padDoc))\n }\n\n log(' Fresh chunk ' + label + ' proposed')\n if (!updater) {\n throw new Error('no updater')\n }\n updater.update(del, ins, function (uri, ok, errorBody, _xhr) {\n if (!ok) {\n // alert(\"Error writing new line \" + label + \": \" + errorBody);\n log(' ERROR writing new line ' + label + ': ' + errorBody)\n } else {\n const newPart = newPartAfter(tr1, chunk, before)\n setPartStyle(newPart)\n newPart.focus() // Note this is delayed\n if (queueProperty) {\n log(\n ' Fresh chunk ' +\n label +\n ' updated, queue = ' +\n queue[queueProperty]\n )\n queue[queueProperty] -= 1\n if (queue[queueProperty] > 0) {\n log(\n ' Implementing queued newlines = ' + next.newLinesBefore\n )\n newChunk(newPart, before)\n }\n }\n }\n })\n }\n\n const consistencyCheck = function () {\n const found: { [uri: string]: boolean } = {}\n let failed = 0\n function complain2 (msg) {\n complain(msg)\n failed++\n }\n\n if (!kb.the(subject, PAD('next'))) {\n complain2('No initial next pointer')\n return false // can't do linked list\n }\n // var chunk = kb.the(subject, PAD('next'))\n let prev = subject\n let chunk\n for (; ;) {\n chunk = kb.the(prev, PAD('next'))\n if (!chunk) {\n complain2('No next pointer from ' + prev)\n }\n if (chunk.sameTerm(subject)) {\n break\n }\n prev = chunk\n const label = chunk.uri.split('#')[1]\n if (found[chunk.uri]) {\n complain2('Loop!')\n return false\n }\n\n found[chunk.uri] = true\n let k = kb.each(chunk, PAD('next')).length\n if (k !== 1) {\n complain2('Should be 1 not ' + k + ' next pointer for ' + label)\n }\n\n k = kb.each(chunk, PAD('indent')).length\n if (k > 1) {\n complain2('Should be 0 or 1 not ' + k + ' indent for ' + label)\n }\n\n k = kb.each(chunk, ns.sioc('content')).length\n if (k !== 1) {\n complain2('Should be 1 not ' + k + ' contents for ' + label)\n }\n\n k = kb.each(chunk, ns.dc('author')).length\n if (k !== 1) {\n complain2('Should be 1 not ' + k + ' author for ' + label)\n }\n\n const sts = kb.statementsMatching(undefined, ns.sioc('contents'))\n sts.forEach(function (st) {\n if (!found[st.subject.value]) {\n complain2('Loose chunk! ' + st.subject.value)\n }\n })\n }\n return !failed\n }\n\n // Ensure that the display matches the current state of the\n // @@ TODO really need to refactor this so that we don't need to cast types\n const sync = function () {\n // var first = kb.the(subject, PAD('next'))\n if (kb.each(subject, PAD('next')).length !== 1) {\n const msg =\n 'Pad: Inconsistent data - NEXT pointers: ' +\n kb.each(subject, PAD('next')).length\n log(msg)\n if ((options as notepadOptions).statusArea) {\n ((options as notepadOptions).statusArea as HTMLElement).textContent += msg\n }\n return\n }\n let row\n\n // First see which of the logical chunks have existing physical manifestations\n const manif: any = []\n // Find which lines correspond to existing chunks\n\n for (\n let chunk = kb.the(subject, PAD('next')) as unknown as any;\n !chunk.sameTerm(subject);\n chunk = kb.the(chunk, PAD('next'))\n ) {\n for (let i = 0; i < table.children.length; i++) {\n const tr: any = table.children[i]\n if (tr.firstChild) {\n if (tr.firstChild.subject.sameTerm(chunk)) {\n manif[chunk.uri] = tr.firstChild\n }\n }\n }\n }\n\n // Remove any deleted lines\n for (let i = table.children.length - 1; i >= 0; i--) {\n row = table.children[i]\n if (!manif[row.firstChild.subject.uri]) {\n table.removeChild(row)\n }\n }\n // Insert any new lines and update old ones\n row = table.firstChild // might be null\n for (\n let chunk = kb.the(subject, PAD('next')) as unknown as any;\n !chunk.sameTerm(subject);\n chunk = kb.the(chunk, PAD('next'))\n ) {\n const text = (kb.any(chunk, ns.sioc('content')) as any).value\n // superstitious -- don't mess with unchanged input fields\n // which may be selected by the user\n if (row && manif[chunk.uri]) {\n const part = row.firstChild\n if (text !== part.value) {\n part.value = text\n }\n setPartStyle(part)\n part.state = 0 // Clear the state machine\n delete part.lastSent // DEBUG ONLY\n row = row.nextSibling\n } else {\n newPartAfter(row, chunk, true) // actually before\n }\n }\n }\n\n // Refresh the DOM tree\n\n const refreshTree = function (root) {\n if (root.refresh) {\n root.refresh()\n return\n }\n for (let i = 0; i < root.children.length; i++) {\n refreshTree(root.children[i])\n }\n }\n\n let reloading = false\n\n const checkAndSync = function () {\n log(' reloaded OK')\n clearStatus()\n if (!consistencyCheck()) {\n complain('CONSISTENCY CHECK FAILED')\n } else {\n refreshTree(table)\n }\n }\n\n const reloadAndSync = function () {\n if (reloading) {\n log(' Already reloading - stop')\n return // once only needed\n }\n reloading = true\n let retryTimeout = 1000 // ms\n const tryReload = function () {\n log('try reload - timeout = ' + retryTimeout)\n if (!updater) {\n throw new Error('no updater')\n }\n updater.reload(updater.store, padDoc, function (ok, message, xhr) {\n reloading = false\n if (ok) {\n checkAndSync()\n } else {\n if ((xhr as any).status === 0) {\n complain(\n 'Network error refreshing the pad. Retrying in ' +\n retryTimeout / 1000\n )\n reloading = true\n retryTimeout = retryTimeout * 2\n setTimeout(tryReload, retryTimeout)\n } else {\n complain(\n 'Error ' +\n (xhr as any).status +\n 'refreshing the pad:' +\n message +\n '. Stopped. ' +\n padDoc\n )\n }\n }\n })\n }\n tryReload()\n }\n\n table.refresh = sync // Catch downward propagating refresh events\n table.reloadAndSync = reloadAndSync\n\n if (!me) log('Warning: must be logged in for pad to be edited')\n\n if (exists) {\n log('Existing pad.')\n if (consistencyCheck()) {\n sync()\n if (kb.holds(subject, PAD('next'), subject)) {\n // Empty list untenable\n newChunk() // require at least one line\n }\n } else {\n log((table.textContent = 'Inconsistent data. Abort'))\n }\n } else {\n // Make new pad\n log('No pad exists - making new one.')\n const insertables = [\n st(subject, ns.rdf('type'), PAD('Notepad'), padDoc),\n st(subject, ns.dc('author'), me, padDoc),\n st(subject, ns.dc('created'), new Date() as any, padDoc),\n st(subject, PAD('next'), subject, padDoc)\n ]\n\n if (!updater) {\n throw new Error('no updater')\n }\n updater.update([], insertables, function (uri: string | null | undefined, ok: boolean, errorBody?: string) {\n if (!ok) {\n complain(errorBody || '')\n } else {\n log('Initial pad created')\n newChunk() // Add a first chunck\n // getResults();\n }\n })\n }\n return table\n}\n\n/**\n * Get the chunks of the notepad\n * They are stored in a RDF linked list\n */\n\n// @ignore exporting this only for the unit test\nexport function getChunks (subject: NamedNode, kb: IndexedFormula) {\n const chunks: any[] = []\n for (\n let chunk: any = kb.the(subject, PAD('next'));\n !chunk.sameTerm(subject);\n chunk = kb.the(chunk, PAD('next'))\n ) {\n chunks.push(chunk)\n }\n return chunks\n}\n\n/**\n * Encode content to be put in XML or HTML elements\n */\n// @ignore exporting this only for the unit test\nexport function xmlEncode (str) {\n return str.replace('&', '&').replace('<', '<').replace('>', '>')\n}\n\n/**\n * Convert a notepad to HTML\n * @param { } pad - the notepad\n * @param {store} pad - the data store\n */\nexport function notepadToHTML (pad: any, kb: IndexedFormula) {\n const chunks = getChunks(pad, kb)\n let html = '<html>\\n <head>\\n'\n const title = kb.anyValue(pad, ns.dct('title'))\n if (title) {\n html += ` <title>${xmlEncode(title)}</title>\\n`\n }\n html += ' </head>\\n <body>\\n'\n let level = 0\n\n function increaseLevel (indent) {\n for (; level < indent; level++) {\n html += '<ul>\\n'\n }\n }\n\n function decreaseLevel (indent) {\n for (; level > indent; level--) {\n html += '</ul>\\n'\n }\n }\n chunks.forEach(chunk => {\n const indent = kb.anyJS(chunk, PAD('indent'))\n const rawContent = kb.anyJS(chunk, ns.sioc('content'))\n if (!rawContent) return // seed chunk is dummy\n const content = xmlEncode(rawContent)\n if (indent < 0) { // negative indent levels represent heading levels\n decreaseLevel(0)\n const h = indent >= -3 ? 4 + indent : 1 // -1 -> h4, -2 -> h3\n html += `\\n<h${h}>${content}</h${h}>\\n`\n } else { // >= 0\n if (indent > 0) { // Lists\n decreaseLevel(indent)\n increaseLevel(indent)\n html += `<li>${content}</li>\\n`\n } else { // indent 0\n decreaseLevel(indent)\n html += `<p>${content}</p>\\n`\n }\n }\n }) // foreach chunk\n // At the end decreaseLevel any open ULs\n decreaseLevel(0)\n html += ' </body>\\n</html>\\n'\n return html\n}\n","/**\n * Functions related to chat and bookmarks\n * @packageDocumentation\n */\n\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\nimport { media } from '../media/index'\nimport ns from '../ns'\nimport * as pad from '../pad'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport { style } from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { store, createTypeIndexLogic, authn } from 'solid-logic'\nimport { findAppInstances } from '../login/login'\n\nconst UI = { icons, ns, media, pad, style, utils, widgets }\n\nconst BOOK = $rdf.Namespace('http://www.w3.org/2002/01/bookmark#')\nconst BOOKMARK_ICON = 'noun_45961.svg'\n\nconst label = utils.label\nconst dom = window.document || null\n\n// @@@@ use the one in rdflib.js when it is avaiable and delete this\nfunction updatePromise (del, ins) {\n return new Promise(function (resolve, reject) {\n store.updater.update(del, ins, function (uri, ok, errorBody) {\n if (!ok) {\n reject(new Error(errorBody))\n } else {\n resolve()\n }\n }) // callback\n }) // promise\n}\n\n/* Bookmarking\n */\n/** Find a user's bookmarks\n */\nexport async function findBookmarkDocument (userContext) {\n const theClass = BOOK('Bookmark')\n const fileTail = 'bookmarks.ttl'\n const isPublic = true\n\n await findAppInstances(userContext, theClass, isPublic) // public -- only look for public links\n\n if (userContext.instances && userContext.instances.length > 0) {\n userContext.bookmarkDocument = userContext.instances[0]\n if (userContext.instances.length > 1) {\n debug.warn('More than one bookmark file! ' + userContext.instances) // @@ todo - deal with > 1\n // Note: should pick up community bookmarks as well\n }\n } else {\n if (userContext.publicProfile) {\n // publicProfile or preferencesFile\n const newBookmarkFile = $rdf.sym(\n userContext.publicProfile.dir().uri + fileTail\n )\n try {\n debug.log('Creating new bookmark file ' + newBookmarkFile)\n await store.fetcher.createIfNotExists(newBookmarkFile)\n } catch (e) {\n debug.warn('Can\\'t make fresh bookmark file:' + e)\n return userContext\n }\n await createTypeIndexLogic.registerInTypeIndex(\n newBookmarkFile,\n userContext.index,\n theClass\n )\n userContext.bookmarkDocument = newBookmarkFile\n } else {\n debug.warn('You seem to have no bookmark file, nor even a profile file!')\n }\n }\n return userContext\n}\n\n/** Add a bookmark\n */\n\nasync function addBookmark (context, target) {\n /* like\n @prefix terms: <http://purl.org/dc/terms/>.\n @prefix bookm: <http://www.w3.org/2002/01/bookmark#>.\n @prefix n0: <http://xmlns.com/foaf/0.1/>.\n <> terms:references <#0.5534145389246576>.\n <#0.5534145389246576>\n a bookm:Bookmark;\n terms:created \"2019-01-26T20:26:44.374Z\"^^XML:dateTime;\n terms:title \"Herons\";\n bookm:recalls wiki:Heron;\n n0:maker c:me.\n */\n let title = ''\n const me = authn.currentUser() // If already logged on\n if (!me) throw new Error('Must be logged on to add Bookmark')\n\n const author = store.any(target, ns.foaf('maker'))\n title =\n label(author) + ': ' + store.anyValue(target, ns.sioc('content')).slice(0, 80) // @@ add chat title too?\n const bookmarkDoc = context.bookmarkDocument\n const bookmark = UI.widgets.newThing(bookmarkDoc, title)\n const ins = [\n $rdf.st(bookmarkDoc, UI.ns.dct('references'), bookmark, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.rdf('type'), BOOK('Bookmark'), bookmarkDoc),\n $rdf.st(bookmark, UI.ns.dct('created'), new Date(), bookmarkDoc),\n $rdf.st(bookmark, BOOK('recalls'), target, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.foaf('maker'), me, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.dct('title'), title, bookmarkDoc)\n ]\n try {\n await updatePromise([], ins) // 20190118A\n } catch (e) {\n const msg = 'Making bookmark: ' + e\n debug.warn(msg)\n return null\n }\n return bookmark\n}\n\nexport async function toggleBookmark (userContext, target, bookmarkButton) {\n await store.fetcher.load(userContext.bookmarkDocument)\n const bookmarks = store.each(\n null,\n BOOK('recalls'),\n target,\n userContext.bookmarkDocument\n )\n if (bookmarks.length) {\n // delete\n if (!confirm('Delete bookmark on this?' + bookmarks.length)) return\n for (let i = 0; i < bookmarks.length; i++) {\n try {\n await updatePromise(store.connectedStatements(bookmarks[i]), [])\n bookmarkButton.style.backgroundColor = 'white'\n debug.log('Bookmark deleted: ' + bookmarks[i])\n } catch (e) {\n debug.error('Cant delete bookmark:' + e)\n debug.warn('Cannot delete bookmark:' + e)\n }\n }\n } else {\n const bookmark = await addBookmark(userContext, target)\n bookmarkButton.style.backgroundColor = 'yellow'\n debug.log('Bookmark added: ' + bookmark)\n }\n}\n\nexport async function renderBookmarksButton (userContext, target) {\n async function setBookmarkButtonColor (bookmarkButton) {\n await store.fetcher.load(userContext.bookmarkDocument)\n const bookmarked = store.any(\n null,\n BOOK('recalls'),\n bookmarkButton.target,\n userContext.bookmarkDocument\n )\n bookmarkButton.style = UI.style.buttonStyle\n if (bookmarked) bookmarkButton.style.backgroundColor = 'yellow'\n }\n\n let bookmarkButton\n if (userContext.bookmarkDocument) {\n bookmarkButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + BOOKMARK_ICON,\n label(BOOK('Bookmark')),\n () => {\n toggleBookmark(userContext, target, bookmarkButton)\n }\n )\n bookmarkButton.target = target\n await setBookmarkButtonColor(bookmarkButton)\n return bookmarkButton\n }\n}\n","/**\n * Tools for doing things with a message\n * Let us be creative here. Allow all sorts of things to\n * be done to a message - linking to new or old objects in an open way\n *\n * Ideas: Bookmark, Like, star, pin at top of chat, reply as new thread,\n * If you made it originally: edit, delete, attach\n * @packageDocumentation\n */\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\n// import { media } from '../media/index'\nimport ns from '../ns'\n// import * as pad from '../pad'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\n// import { style } from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { renderBookmarksButton } from './bookmarks'\nimport { authn, store } from 'solid-logic'\n\nimport { allVersions, mostRecentVersion, isDeleted } from './chatLogic'\nimport { switchToEditor } from './message'\n\nconst dom = window.document\n\n// THE UNUSED ICONS are here as reminders for possible future functionality\n// const BOOKMARK_ICON = 'noun_45961.svg'\n// const HEART_ICON = 'noun_130259.svg' -> Add this to my (private) favorites\n// const MENU_ICON = 'noun_897914.svg'\n// const PAPERCLIP_ICON = 'noun_25830.svg' -> add attachments to this message\n// const PIN_ICON = 'noun_562340.svg' -> pin this message permanently in the chat UI\nconst PENCIL_ICON = 'noun_253504.svg' // edit a message\n// const SPANNER_ICON = 'noun_344563.svg' -> settings\nconst THUMBS_UP_ICON = 'noun_1384132.svg'\nconst THUMBS_DOWN_ICON = 'noun_1384135.svg'\nconst REPLY_ICON = 'noun-reply-5506924.svg'\n/**\n * Emoji in Unicode\n */\nconst emojiMap = {}\nemojiMap[ns.schema('AgreeAction')] = '👍'\nemojiMap[ns.schema('DisagreeAction')] = '👎'\nemojiMap[ns.schema('EndorseAction')] = '⭐️'\nemojiMap[ns.schema('LikeAction')] = '❤️'\n\nexport function emojiFromActionClass (action) {\n return emojiMap[action] || null\n}\n\nexport function ActionClassFromEmoji (emoji) {\n for (const a in emojiMap) {\n if (emojiMap[a] === emoji) {\n return rdf.sym(a.slice(1, -1)) // remove < >\n }\n }\n return null\n}\n\n// Allow the action to give its own emoji as content,\n// or get the emoji from the class of action.\nexport function emojiFromAction (action) {\n const content = store.any(action, ns.sioc('content'), null, action.doc())\n if (content) return content\n const klass = store.any(action, ns.rdf('type'), null, action.doc())\n if (klass) {\n const em = emojiFromActionClass(klass)\n if (em) return em\n }\n return '⬜️'\n}\n\n/**\n * Create strip of sentiments expressed\n */\nexport async function sentimentStrip (target, doc) { // alain: seems not used\n const versions = await allVersions(target)\n // debug.log('sentimentStrip Versions for ' + target, versions)\n const actions = versions.map(version => store.each(null, ns.schema('target'), version, doc)).flat()\n // debug.log('sentimentStrip: Actions for ' + target, actions)\n const strings = actions.map(action => emojiFromAction(action) || '')\n return dom.createTextNode(strings.join(' '))\n}\n/**\n * Create strip of sentiments expressed, with hyperlinks\n *\n * @param target {NamedNode} - The thing about which they are expressed\n * @param doc {NamedNode} - The document in which they are expressed\n */\nexport async function sentimentStripLinked (target, doc) {\n const strip = dom.createElement('span')\n async function refresh () {\n strip.innerHTML = ''\n if (isDeleted(target)) return strip\n const versions = await allVersions(target)\n // debug.log('sentimentStripLinked: Versions for ' + target, versions)\n const actions = versions.map(version => store.each(null, ns.schema('target'), version, doc)).flat()\n // debug.log('sentimentStripLinked: Actions for ' + target, actions)\n if (actions.length === 0) return strip\n const sentiments = actions.map(a => [\n store.any(a, ns.rdf('type'), null, doc),\n store.any(a, ns.sioc('content'), null, doc),\n store.any(a, ns.schema('agent'), null, doc)\n ])\n // debug.log(' Actions sentiments ', sentiments)\n sentiments.sort()\n sentiments.forEach(ss => {\n const [theClass, content, agent] = ss\n let res\n if (agent) {\n res = dom.createElement('a')\n res.setAttribute('href', agent.uri)\n } else {\n res = dom.createTextNode('')\n }\n res.textContent = content || emojiMap[theClass] || '⬜️'\n strip.appendChild(res)\n })\n // debug.log(' Actions strip ', strip)\n }\n refresh().then(debug.log('sentimentStripLinked: sentimentStripLinked async refreshed'))\n strip.refresh = refresh\n return strip\n}\n/**\n * Creates a message toolbar component\n */\nexport async function messageToolbar (message, messageRow, userContext, channelObject) {\n async function deleteMessage () {\n const author = store.any(message, ns.foaf('maker'))\n if (!me) {\n alert('You can\\'t delete the message, you are not logged in.')\n } else if (me.sameTerm(author)) {\n try {\n await channelObject.deleteMessage(message)\n } catch (err) {\n const msg = 'Error deleting messaage ' + err\n debug.warn(msg)\n alert(msg)\n const area = userContext.statusArea || messageRow.parentNode\n area.appendChild(widgets.errorMessageBlock(dom, msg))\n }\n messageRow.parentNode.removeChild(messageRow)\n } else {\n alert('You can\\'t delete the message, you are not logged in as the author, ' + author)\n }\n closeToolbar()\n }\n\n async function editMessage (messageRow) {\n if (me.value === store.any(message, ns.foaf('maker')).value) {\n closeToolbar() // edit is a one-off action\n await switchToEditor(messageRow, message, channelObject, userContext)\n }\n }\n\n async function replyInThread () {\n const thread = await channelObject.createThread(message)\n const options = userContext.chatOptions\n if (!options) throw new Error('replyInThread: missing options')\n options.showThread(thread, options)\n closeToolbar() // a one-off action\n }\n\n // alain: TODO allow chat owner to fully delete message + sentiments and replacing messages\n\n const div = dom.createElement('div')\n // is message deleted ?\n if (await mostRecentVersion(message).value === ns.schema('dateDeleted').value) return div\n function closeToolbar () {\n div.parentElement.parentElement.removeChild(div.parentElement) // remive the TR\n }\n\n async function deleteThingThen (x) {\n await store.updater.update(store.connectedStatements(x), [])\n }\n\n // Things only the original author can do\n let me = authn.currentUser() // If already logged on\n if (me && store.holds(message, ns.foaf('maker'), me)) {\n // button to delete the message\n div.appendChild(widgets.deleteButtonWithCheck(dom, div, 'message', deleteMessage))\n // button to edit the message\n div.appendChild(widgets.button(dom, icons.iconBase + PENCIL_ICON, 'edit', () => editMessage(messageRow)))\n } // if mine\n // Things anyone can do if they have a bookmark list async\n /*\n var bookmarkButton = await bookmarks.renderBookmarksButton(userContext)\n if (bookmarkButton) {\n div.appendChild(bookmarkButton)\n }\n */\n // Things anyone can do if they have a bookmark list\n\n renderBookmarksButton(userContext).then(bookmarkButton => {\n if (bookmarkButton) div.appendChild(bookmarkButton)\n })\n\n /** Button to allow user to express a sentiment (like, endorse, etc) about a target\n *\n * @param context {Object} - Provide dom and me\n * @param target {NamedNode} - The thing the user expresses an opnion about\n * @param icon {uristring} - The icon to be used for the button\n * @param actionClass {NamedNode} - The RDF class - typically a subclass of schema:Action\n * @param doc - {NamedNode} - the Solid document iunto which the data should be written\n * @param mutuallyExclusive {Array<NamedNode>} - Any RDF classes of sentimentswhich are mutiually exclusive\n */\n function sentimentButton (\n context,\n target,\n icon,\n actionClass,\n doc,\n mutuallyExclusive\n ) {\n function setColor () {\n button.style.backgroundColor = action ? 'yellow' : 'white'\n }\n const button = widgets.button(\n dom,\n icon,\n utils.label(actionClass),\n async function (_event) {\n if (action) {\n await deleteThingThen(action)\n action = null\n setColor()\n } else {\n // no action\n action = widgets.newThing(doc)\n const insertMe = [\n rdf.st(action, ns.schema('agent'), context.me, doc),\n rdf.st(action, ns.rdf('type'), actionClass, doc),\n rdf.st(action, ns.schema('target'), target, doc)\n ]\n await store.updater.update([], insertMe)\n setColor()\n\n if (mutuallyExclusive) {\n // Delete incompative sentiments\n let dirty = false\n for (let i = 0; i < mutuallyExclusive.length; i++) {\n const a = existingAction(mutuallyExclusive[i])\n if (a) {\n await deleteThingThen(a) // but how refresh? refreshTree the parent?\n dirty = true\n }\n }\n if (dirty) {\n // widgets.refreshTree(button.parentNode) // requires them all to be immediate siblings\n widgets.refreshTree(messageRow) // requires them all to be immediate siblings\n }\n }\n }\n }\n )\n function existingAction (actionClass) {\n const actions = store\n .each(null, ns.schema('agent'), context.me, doc)\n .filter(x => store.holds(x, ns.rdf('type'), actionClass, doc))\n .filter(x => store.holds(x, ns.schema('target'), target, doc))\n return actions.length ? actions[0] : null\n }\n function refresh () {\n action = existingAction(actionClass)\n setColor()\n }\n let action\n button.refresh = refresh // If the file changes, refresh live\n refresh()\n return button\n }\n\n // THUMBS_UP_ICON\n // https://schema.org/AgreeAction\n me = authn.currentUser() // If already logged on\n\n if (me && (await mostRecentVersion(message).value !== ns.schema('dateDeleted').value)) {\n const context1 = { me, dom, div }\n div.appendChild(\n sentimentButton(\n context1,\n message, // @@ TODO use widgets.sentimentButton\n icons.iconBase + THUMBS_UP_ICON,\n ns.schema('AgreeAction'),\n message.doc(),\n [ns.schema('DisagreeAction')]\n )\n )\n // Thumbs down\n div.appendChild(\n sentimentButton(\n context1,\n message,\n icons.iconBase + THUMBS_DOWN_ICON,\n ns.schema('DisagreeAction'),\n message.doc(),\n [ns.schema('AgreeAction')]\n )\n )\n }\n // Reply buttton\n\n if (store.any(message, ns.dct('created'))) { // Looks like a messsage? Bar can be used for other things\n div.appendChild(widgets.button(dom, icons.iconBase + REPLY_ICON, 'Reply in thread', async () => {\n await replyInThread()\n }))\n }\n // X button to remove the tool UI itself\n const cancelButton = div.appendChild(widgets.cancelButton(dom))\n cancelButton.style.float = 'right'\n cancelButton.firstChild.style.opacity = '0.3'\n cancelButton.addEventListener('click', closeToolbar)\n return div\n}\n","/** UI code for individual messages: display them, edit them\n *\n * @packageDocumentation\n */\n\n/* global $rdf */\nimport { insertMessageIntoTable } from './infinite'\nimport { messageToolbar, sentimentStripLinked } from './messageTools'\nimport { findBookmarkDocument } from './bookmarks'\nimport { mostRecentVersion, originalVersion, allVersions } from './chatLogic'\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\nimport { store, authn } from 'solid-logic'\nimport { ensureLoggedIn } from '../login/login'\nimport { media } from '../media/index'\nimport ns from '../ns'\nimport * as pad from '../pad'\nimport { style } from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { getBlankMsg, verifySignature, SEC } from './signature'\nimport { getPublicKey } from './keys'\n\nconst dom = window.document\nconst messageBodyStyle = style.messageBodyStyle\n\nconst label = utils.label\n\n/**\n * elementForImageURI\n * HTML component for an image\n * @param imageUri\n * @param options { inlineImageHeightEms }\n * @returns HTMLAnchorElement For Image\n */\nexport function elementForImageURI (imageUri, options) {\n const img = dom.createElement('img')\n let height = '10'\n if (options.inlineImageHeightEms) {\n height = ('' + options.inlineImageHeightEms).trim()\n }\n img.setAttribute(\n 'style',\n 'max-height: ' + height + 'em; border-radius: 1em; margin: 0.7em;'\n )\n // widgets.makeDropTarget(img, handleURIsDroppedOnMugshot, droppedFileHandler)\n if (imageUri) img.setAttribute('src', imageUri)\n const anchor = dom.createElement('a')\n anchor.setAttribute('href', imageUri)\n anchor.setAttribute('target', 'images')\n anchor.appendChild(img)\n widgets.makeDraggable(img, $rdf.sym(imageUri))\n return anchor\n}\n\nconst anchor = function (text, term) {\n // If there is no link return an element anyway\n const a = dom.createElement('a')\n if (term && term.uri) {\n a.setAttribute('href', term.uri)\n a.addEventListener('click', widgets.openHrefInOutlineMode, true)\n a.setAttribute('style', 'color: #3B5998; text-decoration: none; ') // font-weight: bold\n }\n a.textContent = text\n return a\n}\n\nfunction nickname (person) {\n const s = store.any(person, ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + label(person)\n}\n\n/**\n * creatorAndDate\n * Displays creator and date for a chat message\n * inside the `td1` element\n * @param td1\n * @param creator\n * @param date\n * @param message\n * @returns HTMLAnchorElement For Image\n */\nexport function creatorAndDate (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(nickname(creator), creator))\n if (creator.uri) {\n store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nickname(creator)\n })\n }\n td1.appendChild(dom.createElement('br'))\n td1.appendChild(anchor(date, message))\n}\n\n/**\n * creatorAndDateHorizontal\n * Horizontally displays creator and date for a chat message\n * inside the `td1` element\n * @param td1\n * @param creator\n * @param date\n * @param message\n * @returns HTMLAnchorElement For Image\n */\nexport function creatorAndDateHorizontal (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(label(creator), creator))\n if (creator.uri) {\n store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nickname(creator)\n })\n }\n const dateBit = td1.appendChild(anchor(date, message))\n dateBit.style.fontSize = '80%'\n dateBit.style.marginLeft = '1em'\n td1.appendChild(dom.createElement('br'))\n}\n\n/**\n * renderMessageRow\n * Renders a chat message, read-only mode\n * @param channelObject\n * @param message\n * @param fresh\n * @param options\n * @param userContext\n * @returns Message Row HTML Table Element\n */\nexport async function renderMessageRow (channelObject, message, fresh, options, userContext) {\n let unsignedMessage = false\n const colorizeByAuthor =\n options.colorizeByAuthor === '1' || options.colorizeByAuthor === true\n\n // const id = store.any(latestVersion, ns.sioc('id'))\n // const replies = store.each(latestVersion, ns.sioc('has_reply'))\n\n const creator = store.any(message, ns.foaf('maker'))\n const date = store.any(message, ns.dct('created'))\n const latestVersion = await mostRecentVersion(message)\n const latestVersionCreator = store.any(latestVersion, ns.foaf('maker'))\n\n // use latest content if same owner, else use original\n // this is may be too strict. Should we find latest valid version if any ?\n const msgId = creator.uri === latestVersionCreator?.uri ? latestVersion : message\n const content = store.any(msgId, ns.sioc('content'))\n\n const versions = await allVersions(msgId)\n if (versions.length > 1) {\n debug.log('renderMessageRow versions: ', versions.join(', '))\n }\n // be tolerant in accepting replies on any version of a message\n const replies = versions.map(version => store.each(version, ns.sioc('has_reply'))).flat()\n\n let thread = null\n const straightReplies = []\n for (const reply of replies) {\n if (store.holds(reply, ns.rdf('type'), ns.sioc('Thread'))) {\n thread = reply\n debug.log('renderMessageRow: found thread: ' + thread)\n } else {\n straightReplies.push(reply)\n }\n }\n if (straightReplies.length > 1) {\n debug.log('renderMessageRow: found normal replies: ', straightReplies)\n }\n if (!thread) {\n // thread = store.any(message, ns.sioc('has_reply'))\n thread = store.any(null, ns.sioc('has_member'), message)\n }\n // debug.log('@@@@ is thread' + thread)\n\n // get signature\n const signature = store.any(msgId, $rdf.sym(`${SEC}proofValue`))\n\n // set proof message object\n const msg = getBlankMsg()\n msg.id = msgId.uri\n msg.created = store.any(msgId, ns.dct('created')).value\n msg.content = content.value\n msg.maker = creator.uri\n\n // verify signature\n if (!signature?.value) { // unsigned message\n unsignedMessage = true\n debug.warn(msgId.uri + ' is unsigned') // TODO replace with UI (colored message ?)\n } else { // signed message, get public key and check signature\n getPublicKey(creator).then(publicKey => {\n // debug.log(creator.uri + '\\n' + msg.created + '\\n' + msg.id + '\\n' + publicKey)\n if (!publicKey) {\n debug.warn('message is signed but ' + creator.uri + ' is missing publicKey')\n }\n // check that publicKey is a valid hex string\n const regex = /[0-9A-Fa-f]{6}/g\n if (!publicKey?.match(regex)) debug.warn('invalid publicKey hex string\\n' + creator.uri + '\\n' + publicKey)\n // verify signature\n else if (signature?.value && !verifySignature(signature?.value, msg, publicKey)) debug.warn('invalid signature\\n' + msg.id)\n })\n }\n\n const originalMessage = await originalVersion(message)\n const edited = !message.sameTerm(originalMessage)\n // @@ load it first @@ Or display the new data at the old date.\n // @@@ kludge!\n const sortDate = store.the(originalMessage, ns.dct('created'), null, originalMessage.doc()) || store.the(message, ns.dct('created'), null, message.doc())\n // In message\n\n const messageRow = dom.createElement('tr')\n if (unsignedMessage) messageRow.setAttribute('style', 'background-color: red')\n messageRow.AJAR_date = sortDate.value\n messageRow.AJAR_subject = message\n\n const td1 = dom.createElement('td')\n messageRow.appendChild(td1)\n if (!options.authorDateOnLeft) {\n const img = dom.createElement('img')\n img.setAttribute(\n 'style',\n 'max-height: 2.5em; max-width: 2.5em; border-radius: 0.5em; margin: auto;'\n )\n widgets.setImage(img, creator)\n td1.appendChild(img)\n } else {\n creatorAndDate(td1, creator, widgets.shortDate(sortDate.value), message)\n }\n let bothDates = widgets.shortDate(sortDate.value)\n if (edited) {\n bothDates += ' ... ' + widgets.shortDate(date.value)\n }\n\n // Render the content ot the message itself\n const td2 = messageRow.appendChild(dom.createElement('td'))\n\n if (!options.authorDateOnLeft) {\n creatorAndDateHorizontal(\n td2,\n creator,\n bothDates, // widgets.shortDate(dateString)\n message\n )\n }\n const text = content ? content.value.trim() : '??? no content?'\n const isURI = /^https?:\\/[^ <>]*$/i.test(text)\n let para = null\n if (isURI) {\n const isImage = /\\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(text) // @@ Should use content-type not URI\n if (isImage && options.expandImagesInline) {\n const img = elementForImageURI(text, options)\n td2.appendChild(img)\n } else {\n // Link but not Image\n const anc = td2.appendChild(dom.createElement('a'))\n para = anc.appendChild(dom.createElement('p'))\n anc.href = text\n para.textContent = text\n td2.appendChild(anc)\n }\n } else {\n // text\n para = dom.createElement('p')\n td2.appendChild(para)\n para.textContent = text\n }\n if (para) {\n const bgcolor = colorizeByAuthor\n ? pad.lightColorHash(creator)\n : getBgColor(fresh)\n para.setAttribute(\n 'style',\n messageBodyStyle + 'background-color: ' + bgcolor + ';'\n )\n }\n\n function getBgColor (fresh) {\n return fresh ? '#e8ffe8' : 'white'\n }\n\n // Sentiment strip\n const strip = await sentimentStripLinked(message, message.doc())\n if (strip.children.length) {\n td2.appendChild(dom.createElement('br'))\n td2.appendChild(strip)\n }\n\n // Message tool bar button\n const td3 = dom.createElement('td')\n messageRow.appendChild(td3)\n const toolsButton = widgets.button(\n dom,\n icons.iconBase + 'noun_243787.svg',\n '...'\n )\n td3.appendChild(toolsButton)\n toolsButton.addEventListener('click', async function (_event) {\n if (messageRow.toolTR) {\n // already got a toolbar? Toogle\n messageRow.parentNode.removeChild(messageRow.toolTR)\n delete messageRow.toolTR\n return\n }\n const toolsTR = dom.createElement('tr')\n const tools = await messageToolbar(message, messageRow, { ...userContext, chatOptions: options }, channelObject)\n tools.style =\n 'border: 0.05em solid #888; border-radius: 0 0 0.7em 0.7em; border-top: 0; height:3.5em; background-color: #fff;' // @@ fix\n if (messageRow.nextSibling) {\n messageRow.parentElement.insertBefore(toolsTR, messageRow.nextSibling)\n } else {\n messageRow.parentElement.appendChild(toolsTR)\n }\n messageRow.toolTR = toolsTR\n toolsTR.appendChild(dom.createElement('td')) // left\n const toolsTD = toolsTR.appendChild(dom.createElement('td'))\n toolsTR.appendChild(dom.createElement('td')) // right\n toolsTD.appendChild(tools)\n })\n if (thread && options.showThread) {\n // debug.log(' message has thread ' + thread)\n td3.appendChild(widgets.button(\n dom,\n icons.iconBase + 'noun_1180164.svg', // right arrow .. @@ think of stg better\n 'see thread',\n _e => {\n // debug.log('@@@@ Calling showThread thread ' + thread)\n options.showThread(thread, options)\n }\n ))\n }\n return messageRow\n} // END OF RENDERMESSAGE\n\nexport async function switchToEditor (messageRow, message, channelObject, userContext) {\n const messageTable = messageRow.parentNode\n const editRow = renderMessageEditor(channelObject, messageTable, userContext,\n channelObject.options, await mostRecentVersion(message))\n messageTable.insertBefore(editRow, messageRow)\n editRow.originalRow = messageRow\n messageRow.style.visibility = 'hidden' // Hide the original message. unhide if user cancels edit\n}\n/* Control for a new message -- or editing an old message ***************\n *\n */\nexport function renderMessageEditor (channelObject, messageTable, userContext, options, originalMessage) {\n function revertEditing (messageEditor) {\n messageEditor.originalRow.style.visibility = 'visible' // restore read-only version\n messageEditor.parentNode.removeChild(messageEditor)\n }\n\n async function handleFieldInput (_event) {\n await sendMessage(field.value, true)\n }\n\n async function sendMessage (text, fromMainField) {\n async function sendComplete (message, _text2) {\n // const dateStamp = store.any(message, ns.dct('created'), null, message.doc())\n // const content = $rdf.literal(text2)\n await insertMessageIntoTable(channelObject, messageTable, message, false, options, userContext) // not green\n\n if (originalMessage) { // editing another message\n const oldRow = messageEditor.originalRow\n // oldRow.style.display = '' // restore read-only version, re-attack\n if (oldRow.parentNode) {\n oldRow.parentNode.removeChild(oldRow) // No longer needed old version\n } else {\n debug.warn('No parentNode on old message ' + oldRow.textContent)\n oldRow.style.backgroundColor = '#fee'\n oldRow.style.visibility = 'hidden' // @@ FIX THIS AND REMOVE FROM DOM INSTEAD\n }\n messageEditor.parentNode.removeChild(messageEditor) // no longer need editor\n } else {\n if (fromMainField) {\n field.value = '' // clear from out for reuse\n field.setAttribute('style', messageBodyStyle)\n field.disabled = false\n field.scrollIntoView(options.newestFirst) // allign bottom (top)\n field.focus() // Start typing next line immediately\n field.select()\n }\n }\n // await channelObject.div.refresh() // Add new day if nec @@ add back\n }\n\n // const me = authn.currentUser() // Must be logged on or wuld have got login button\n if (fromMainField) {\n field.setAttribute('style', messageBodyStyle + 'color: #bbb;') // pendingedit\n field.disabled = true\n }\n\n let message\n try {\n message = await channelObject.updateMessage(text, originalMessage, null, options.thread)\n } catch (err) {\n const statusArea = userContext.statusArea || messageEditor\n statusArea.appendChild(\n widgets.errorMessageBlock(dom, 'Error writing message: ' + err)\n )\n return\n }\n await sendComplete(message, text)\n } // sendMessage\n\n // DRAG AND DROP\n function droppedFileHandler (files) {\n const base = messageTable.chatDocument.dir().uri\n widgets.uploadFiles(\n store.fetcher,\n files,\n base + 'Files',\n base + 'Pictures',\n async function (theFile, destURI) {\n // @@@@@@ Wait for each if several\n await sendMessage(destURI)\n }\n )\n }\n\n // When a set of URIs are dropped on the field\n const droppedURIHandler = async function (uris) {\n for (const uri of uris) {\n await sendMessage(uri)\n }\n }\n\n // When we are actually logged on\n function turnOnInput () {\n function getImageDoc () {\n imageDoc = $rdf.sym(\n chatDocument.dir().uri + 'Image_' + Date.now() + '.png'\n )\n return imageDoc\n }\n\n async function tookPicture (imageDoc) {\n if (imageDoc) {\n await sendMessage(imageDoc.uri)\n }\n }\n\n // Body of turnOnInput\n\n let menuButton\n if (options.menuHandler) {\n const menuButton = widgets.button(\n dom, icons.iconBase + 'noun_243787.svg', 'More')\n menuButton.setAttribute('style', style.buttonStyle + 'float: right;')\n // menuButton.addEventListener('click', _event => sendMessage(), false) (done in turnoninput)\n rhs.appendChild(menuButton)\n }\n\n if (options.menuHandler && menuButton) {\n const me = authn.currentUser()\n const menuOptions = {\n me,\n dom,\n div: null, // @@ was: div\n newBase: messageTable.chatDocument.dir().uri\n }\n menuButton.addEventListener(\n 'click',\n event => {\n options.menuHandler(event, channelObject.chatChannel, menuOptions)\n },\n false\n )\n }\n\n const me = authn.currentUser() // If already logged on\n creatorAndDate(lhs, me, '', null)\n\n field = dom.createElement('textarea')\n middle.innerHTML = ''\n middle.appendChild(field)\n field.rows = 3\n if (originalMessage) {\n field.value = store.anyValue(originalMessage, ns.sioc('content'), null, originalMessage.doc())\n }\n // field.cols = 40\n field.setAttribute('style', messageBodyStyle + 'background-color: #eef;')\n\n // Trap the Enter BEFORE it is used ti make a newline\n\n field.addEventListener(\n 'keydown',\n async function (e) {\n // User preference?\n if (e.code === 'Enter') {\n // if (e.keyCode === 13) { // deprocated https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode\n if ((!e.shiftKey && !options.shiftEnterSendsMessage) || (e.shiftKey && options.shiftEnterSendsMessage)) {\n // Shift-Enter just adds a new line\n // (note alt-enter doesn't add newline anyway on my setup - so have to use shift.\n await handleFieldInput(e)\n }\n }\n },\n false\n )\n\n widgets.makeDropTarget(field, droppedURIHandler, droppedFileHandler)\n\n rhs.innerHTML = ''\n\n sendButton = widgets.button(dom, sendIcon, 'Send')\n sendButton.style.float = 'right'\n sendButton.addEventListener('click', _event => handleFieldInput(), false)\n rhs.appendChild(sendButton)\n\n if (originalMessage) { // Are we editing another message?\n const cancelButton = rhs.appendChild(widgets.cancelButton(dom))\n cancelButton.style.float = 'left'\n // cancelButton.firstChild.style.opacity = '0.3' // moved to buttons\n cancelButton.addEventListener('click', _event => revertEditing(messageEditor), false)\n rhs.appendChild(cancelButton)\n }\n\n const chatDocument = channelObject.dateFolder.leafDocumentFromDate(new Date())\n let imageDoc\n\n middle.appendChild(\n media.cameraButton(dom, store, getImageDoc, tookPicture)\n )\n\n pad.recordParticipation(channelObject.channel, channelObject.channel.doc()) // participation =\n } // turn on inpuut\n\n // Body of renderMessageEditor\n\n let sortDate, sendIcon\n if (originalMessage) {\n sortDate = store.anyValue(originalMessage, ns.dct('created'), null, originalMessage.doc())\n // text = store.anyValue(originalMessage, ns.sioc('content'), null, originalMessage.doc())\n sendIcon = icons.iconBase + 'noun_1180158.svg' // Green check\n // cancelIcon = icons.iconBase + 'noun_1180156.svg' // Black cross\n } else {\n sendIcon = icons.iconBase + 'noun_383448.svg'\n sortDate = '9999-01-01T00:00:00Z' // ISO format for field sort\n // text = ''\n }\n const messageEditor = dom.createElement('tr')\n const lhs = dom.createElement('td')\n const middle = dom.createElement('td')\n const rhs = dom.createElement('td')\n messageEditor.appendChild(lhs)\n messageEditor.appendChild(middle)\n messageEditor.appendChild(rhs)\n messageEditor.AJAR_date = sortDate\n // messageEditor.appendChild(dom.createElement('br'))\n\n let field, sendButton\n const context = { div: middle, dom }\n\n ensureLoggedIn(context).then(context => {\n // me = context.me\n turnOnInput()\n Object.assign(context, userContext)\n findBookmarkDocument(context).then(_context => {\n // debug.log('Bookmark file: ' + context.bookmarkDocument)\n })\n })\n\n return messageEditor\n} // renderMessageEditor\n","/**\n * Contains the [[infiniteMessageArea]] class\n * @packageDocumentation\n */\n// import { findBookmarkDocument } from './bookmarks'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport { store } from 'solid-logic'\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\nimport ns from '../ns'\n// import { style } from '../style'\n// import * as utils from '../utils'\nimport * as widgets from '../widgets'\n// import * as pad from '../pad'\n// import { DateFolder } from './dateFolder'\nimport { ChatChannel, isDeleted } from './chatLogic'\nimport { renderMessageEditor, renderMessageRow } from './message'\n\n// const UI = { authn, icons, ns, media, pad, $rdf, store, style, utils, widgets }\n\nexport function desktopNotification (str) {\n // Let's check if the browser supports notifications\n if (!('Notification' in window)) {\n debug.warn('This browser does no t support desktop notification')\n } else if (Notification.permission === 'granted') {\n // Let's check whether notificatio n permissions have already been granted\n // eslint-disable-next-line no-new\n new Notification(str)\n } else if (Notification.permission !== 'denied') {\n // Otherwise, we need to ask the user for permission\n Notification.requestPermission().then(function (permission) {\n // If the user accepts, let's create a notification\n if (permission === 'granted') {\n // eslint-disable-next-line no-new\n new Notification(str)\n }\n })\n }\n // At last, if the user has denied notifications, and you\n // want to be respectful there is no need to bother them any more.\n}\n\n/**\n * Renders a chat message inside a `messageTable`\n */\nexport async function insertMessageIntoTable (channelObject, messageTable, message, fresh, options, userContext) {\n const messageRow = await renderMessageRow(channelObject,\n message,\n fresh,\n options,\n userContext\n )\n\n // const message = messageRow.AJAR_subject\n if (options.selectedMessage && options.selectedMessage.sameTerm(message)) {\n messageRow.style.backgroundColor = 'yellow'\n options.selectedElement = messageRow\n messageTable.selectedElement = messageRow\n }\n\n let done = false\n for (let ele = messageTable.firstChild; ; ele = ele.nextSibling) {\n if (!ele) {\n // empty\n break\n }\n const newestFirst = options.newestfirst === true\n const dateString = messageRow.AJAR_date\n if (\n (dateString > ele.AJAR_date && newestFirst) ||\n (dateString < ele.AJAR_date && !newestFirst)\n ) {\n messageTable.insertBefore(messageRow, ele)\n done = true\n break\n }\n }\n if (!done) {\n messageTable.appendChild(messageRow)\n }\n}\n\n/**\n * Common code for a chat (discussion area of messages about something)\n * This version runs over a series of files for different time periods\n *\n * Parameters for the whole chat like its title are stored on\n * index.ttl#this and the chats messages are stored in YYYY/MM/DD/chat.ttl\n *\n * Use to import store as param 2, now ignores it and uses the UI main store\n *\n * Options include:\n\n - shiftEnterSendsMessage: Use shift/enter to send message, Enter to add newline, instead of the reverse.\n - authorDateOnLeft: Display the author's anme and date of the message in the left column instead of first above the content\n - selectedMessage: Display one message highlighted with the chat around it\n - solo: By itelf on a webpage, so user scroll anywhere in the web page scan scroll the chat.\n - newestFirst: Arrange the chat messages chronologically newest at the top insted of at the bottom\n - infinite: Use infinite scroll\n - showDeletedMessages: Show messages which have been delted as \"deleted message\". Otherwise hide them.\n - expandImagesInline: If a URI by itself in a message looks like an image URI, replace it with the image\n - inlineImageHeightEms: The height (in ems) of images expaned from their URIs in the chat.\n\n */\nexport async function infiniteMessageArea (dom, wasStore, chatChannel, options) {\n // ///////////////////////////////////////////////////////////////////////\n\n async function syncMessages (chatChannel, messageTable) {\n const displayed = {}\n let ele, ele2\n for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {\n if (ele.AJAR_subject) {\n displayed[ele.AJAR_subject.uri] = true\n }\n }\n const messages = store.each(chatChannel, ns.wf('message'), null, messageTable.chatDocument)\n\n const stored = {}\n for (const m of messages) {\n stored[m.uri] = true\n if (!displayed[m.uri]) {\n await addMessage(m, messageTable)\n }\n }\n\n for (ele = messageTable.firstChild; ele;) {\n ele2 = ele.nextSibling\n if (ele.AJAR_subject && !stored[ele.AJAR_subject.uri]) {\n messageTable.removeChild(ele)\n }\n ele = ele2\n }\n for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {\n if (ele.AJAR_subject) {\n // Refresh thumbs up etc\n widgets.refreshTree(ele) // Things inside may have changed too\n }\n }\n } // syncMessages\n\n // Called once per original message displayed\n async function addMessage (message, messageTable) {\n // const latest = await mostRecentVersion(message)\n // const content = store.any(latest, ns.sioc('content'))\n if (isDeleted(message) && !options.showDeletedMessages) {\n return // ignore deleted messaged -- @@ could also leave a placeholder\n }\n /* if (isReplaced(message)) { //\n return // this is old version\n } */\n let thread = store.any(null, ns.sioc('has_member'), message, message.doc())\n const id = store.any(message, ns.sioc('id'), null, message.doc())\n if (id && !thread) {\n thread = store.any(null, ns.sioc('has_member'), id, message.doc())\n }\n\n if (options.thread) { // only show things in thread\n if (store.holds(message, ns.sioc('has_reply'), options.thread)) { // root of thread\n // debug.log(' addMessage: displaying root of thread ' + thread)\n } else if (thread && thread.sameTerm(options.thread)) {\n // debug.log(' addMessage: Displaying body of thread ' + message.uri.slice(-10))\n } else {\n // debug.log(' addMessage: Suppress non-thread message in thread table ' + message.uri.slice(-10))\n return // suppress message not in thread\n }\n } else { // Not threads\n if (thread) {\n // debug.log(' addMessage: Suppress thread message in non-thread table ' + message.uri.slice(-10))\n return // supress thread messages in body\n } else {\n // debug.log(' addMessage: Normal non-thread message in non-thread table ' + message.uri.slice(-10))\n }\n }\n if (!messageTable.fresh) { // if messageTable has been updated with insertMessageIntoTable() don't do it again\n // debug.log('@@@ infinite insertMessageIntoTable ' + message) // alain\n // debug.log('fresh ' + messageTable.fresh)\n // debug.log(messageTable)\n await insertMessageIntoTable(channelObject,\n messageTable,\n message,\n messageTable.fresh,\n options,\n userContext\n ) // fresh from elsewhere\n }\n }\n\n /* Add a new messageTable at the top/bottom\n\n */\n async function insertPreviousMessages (backwards) {\n const extremity = backwards ? earliest : latest\n let date = extremity.messageTable.date // day in mssecs\n\n // Are we at the top of a thread?\n if (backwards && earliest.limit && date <= earliest.limit) {\n if (!liveMessageTable) await appendCurrentMessages() // If necessary skip to today and add that\n return true // done\n }\n // debug.log(' insertPreviousMessages: loadPrevious given date ' + date)\n\n date = await dateFolder.loadPrevious(date, backwards) // backwards\n // debug.log(' insertPreviousMessages: loadPrevious returns date ' + date)\n\n /* debug.log(\n `insertPreviousMessages: from ${\n backwards ? 'backwards' : 'forwards'\n } loadPrevious: ${date}`\n ) */\n if (!date && !backwards && !liveMessageTable) {\n await appendCurrentMessages() // If necessary skip to today and add that\n }\n if (!date) return true // done\n let live = false\n if (!backwards) {\n const todayDoc = dateFolder.leafDocumentFromDate(new Date())\n const doc = dateFolder.leafDocumentFromDate(date)\n live = doc.sameTerm(todayDoc) // Is this todays?\n }\n const newMessageTable = await createMessageTable(date, live)\n extremity.messageTable = newMessageTable // move pointer to earliest\n if (backwards ? newestFirst : !newestFirst) {\n // put on bottom or top\n div.appendChild(newMessageTable)\n } else {\n // put on top as we scroll back\n div.insertBefore(newMessageTable, div.firstChild)\n }\n return live // not done\n }\n\n /* Remove message tables earlier than this one\n */\n function removePreviousMessages (backwards, messageTable) {\n if (backwards ? newestFirst : !newestFirst) {\n // it was put on bottom\n while (messageTable.nextSibling) {\n div.removeChild(messageTable.nextSibling)\n }\n } else {\n // it was put on top as we scroll back\n while (messageTable.previousSibling) {\n div.removeChild(messageTable.previousSibling)\n }\n }\n const extr = backwards ? earliest : latest\n extr.messageTable = messageTable\n }\n\n /* Load and render message table\n ** @returns DOM element generates\n */\n async function createMessageTable (date, live) {\n // debug.log(' createMessageTable for ' + date)\n const chatDocument = dateFolder.leafDocumentFromDate(date)\n try {\n await store.fetcher.createIfNotExists(chatDocument)\n } catch (err) {\n const messageTable = dom.createElement('table')\n const statusTR = messageTable.appendChild(dom.createElement('tr')) // ### find status in exception\n if (err.response && err.response.status && err.response.status === 404) {\n // debug.log('Error 404 for chat file ' + chatDocument)\n return await renderMessageTable(date, live) // no message file is fine. will be created later\n // statusTR.appendChild(widgets.errorMessageBlock(dom, 'no message file', 'white'))\n } else {\n debug.log('*** Error NON 404 for chat file ' + chatDocument)\n statusTR.appendChild(widgets.errorMessageBlock(dom, err, 'pink'))\n }\n return statusTR\n }\n return await renderMessageTable(date, live)\n }\n\n async function renderMessageTable (date, live) {\n const scrollBackbutton = null // was let\n const scrollForwardButton = null // was let\n\n /// ///////////////// Scroll down adding more above\n\n async function extendBackwards () {\n const done = await insertPreviousMessages(true)\n if (done) {\n if (scrollBackbutton) {\n scrollBackbutton.firstChild.setAttribute(\n 'src',\n icons.iconBase + 'noun_T-Block_1114655_000000.svg'\n ) // T\n scrollBackbutton.disabled = true\n }\n messageTable.initial = true\n } else {\n messageTable.extendedBack = true\n }\n setScrollBackbuttonIcon()\n return done\n }\n\n function setScrollBackbuttonIcon () {\n if (!scrollBackbutton) {\n return\n }\n const sense = messageTable.extendedBack ? !newestFirst : newestFirst\n const scrollBackIcon = messageTable.initial\n ? 'noun_T-Block_1114655_000000.svg'\n : getScrollbackIcon(sense)\n scrollBackbutton.firstChild.setAttribute(\n 'src',\n icons.iconBase + scrollBackIcon\n )\n\n function getScrollbackIcon (sense) {\n return sense ? 'noun_1369241.svg' : 'noun_1369237.svg'\n }\n }\n\n /// ////////////// Scroll up adding more below\n\n async function extendForwards () {\n const done = await insertPreviousMessages(false)\n /*\n if (done) {\n scrollForwardButton.firstChild.setAttribute(\n 'src',\n icons.iconBase + 'noun_T-Block_1114655_000000.svg'\n )\n scrollForwardButton.disabled = true\n messageTable.final = true\n } else {\n messageTable.extendedForwards = true\n }\n setScrollForwardButtonIcon()\n */\n return done\n }\n\n function setScrollForwardButtonIcon () {\n if (!scrollForwardButton) return\n const sense = messageTable.extendedForwards ? !newestFirst : newestFirst // noun_T-Block_1114657_000000.svg\n const scrollForwardIcon = messageTable.final\n ? 'noun_T-Block_1114657_000000.svg'\n : getScrollForwardButtonIcon(sense)\n scrollForwardButton.firstChild.setAttribute(\n 'src',\n icons.iconBase + scrollForwardIcon\n )\n\n function getScrollForwardButtonIcon (sense) {\n return !sense ? 'noun_1369241.svg' : 'noun_1369237.svg'\n }\n }\n\n // eslint-disable-next-line no-unused-vars\n async function scrollForwardButtonHandler (_event) {\n if (messageTable.extendedForwards) {\n removePreviousMessages(false, messageTable)\n messageTable.extendedForwards = false\n setScrollForwardButtonIcon()\n } else {\n await extendForwards() // async\n latest.messageTable.scrollIntoView(newestFirst)\n }\n }\n\n /// ///////////////////////\n /*\n options = options || {}\n options.authorDateOnLeft = true\n const newestFirst = options.newestFirst === '1' || options.newestFirst === true // hack for now\n const channelObject = new ChatChannel(chatChannel, options)\n const dateFolder = channelObject.dateFolder\n\n const div = dom.createElement('div')\n const statusArea = div.appendChild(dom.createElement('div'))\n const userContext = { dom, statusArea, div: statusArea } // logged on state, pointers to user's stuff\n\n*/\n // debug.log('Options for called message Area', options)\n const messageTable = dom.createElement('table')\n messageTable.style.width = '100%' // fill the pane div\n messageTable.extendBackwards = extendBackwards // Make function available to scroll stuff\n messageTable.extendForwards = extendForwards // Make function available to scroll stuff\n\n messageTable.date = date\n const chatDocument = dateFolder.leafDocumentFromDate(date)\n messageTable.chatDocument = chatDocument\n\n messageTable.fresh = false\n messageTable.setAttribute('style', 'width: 100%;') // fill that div!\n if (live) {\n messageTable.final = true\n liveMessageTable = messageTable\n latest.messageTable = messageTable\n const tr = renderMessageEditor(channelObject, messageTable, userContext, options)\n if (newestFirst) {\n messageTable.insertBefore(tr, messageTable.firstChild) // If newestFirst\n } else {\n messageTable.appendChild(tr) // not newestFirst\n }\n messageTable.inputRow = tr\n }\n\n /// ///// Infinite scroll\n //\n // @@ listen for swipe past end event not just button\n const test = true\n if (test) { // ws options.infinite but need for non-infinite\n const titleTR = dom.createElement('tr')\n /* const scrollBackbuttonCell = titleTR.appendChild(\n dom.createElement('td')\n ) */\n // up traingles: noun_1369237.svg\n // down triangles: noun_1369241.svg\n /*\n const scrollBackIcon = newestFirst\n ? 'noun_1369241.svg'\n : 'noun_1369237.svg' // down and up arrows respoctively\n scrollBackbutton = widgets.button(\n dom,\n icons.iconBase + scrollBackIcon,\n 'Previous messages ...'\n )\n scrollBackbuttonCell.style = 'width:3em; height:3em;'\n scrollBackbutton.addEventListener('click', scrollBackbuttonHandler, false)\n messageTable.extendedBack = false\n scrollBackbuttonCell.appendChild(scrollBackbutton)\n setScrollBackbuttonIcon()\n */\n const dateCell = titleTR.appendChild(dom.createElement('td'))\n dateCell.style =\n 'text-align: center; vertical-align: middle; color: #888; font-style: italic;'\n dateCell.textContent = widgets.shortDate(date.toISOString(), true) // no time, only date\n\n // @@@@@@@@@@@ todo move this button to other end of message cell, o\n const scrollForwardButtonCell = titleTR.appendChild(\n dom.createElement('td')\n )\n if (options.includeRemoveButton) {\n scrollForwardButtonCell.appendChild(widgets.cancelButton(dom, _e => {\n div.parentNode.removeChild(div)\n }))\n }\n /*\n const scrollForwardIcon = newestFirst\n ? 'noun_1369241.svg'\n : 'noun_1369237.svg' // down and up arrows respoctively\n scrollForwardButton = widgets.button(\n dom,\n icons.iconBase + scrollForwardIcon,\n 'Later messages ...'\n )\n scrollForwardButtonCell.appendChild(scrollForwardButton)\n scrollForwardButtonCell.style = 'width:3em; height:3em;'\n scrollForwardButton.addEventListener(\n 'click',\n scrollForwardButtonHandler,\n false\n )\n messageTable.extendedForward = false\n setScrollForwardButtonIcon()\n */\n messageTable.extendedForwards = false\n\n if (!newestFirst) {\n // opposite end from the entry field\n messageTable.insertBefore(titleTR, messageTable.firstChild) // If not newestFirst\n } else {\n messageTable.appendChild(titleTR) // newestFirst\n }\n }\n\n const sts = store.statementsMatching(null, ns.wf('message'), null, chatDocument)\n if (!live && sts.length === 0) {\n // not todays\n // no need buttomns at the moment\n // messageTable.style.visibility = 'collapse' // Hide files with no messages\n }\n for (const st of sts) {\n await addMessage(st.object, messageTable)\n }\n messageTable.fresh = true // message table updated with insertMessageIntoTable()\n return messageTable\n } // renderMessageTable\n\n async function addNewChatDocumentIfNewDay () {\n // @@ Remove listener from previous table as it is now static\n const newChatDocument = dateFolder.leafDocumentFromDate(new Date())\n if (!newChatDocument.sameTerm(latest.messageTable.chatDocument)) {\n // It is a new day\n if (liveMessageTable.inputRow) {\n liveMessageTable.removeChild(liveMessageTable.inputRow)\n delete liveMessageTable.inputRow\n }\n const oldChatDocument = latest.messageTable.chatDocument\n await appendCurrentMessages()\n // Adding a link in the document will ping listeners to add the new block too\n if (\n !store.holds(\n oldChatDocument,\n ns.rdfs('seeAlso'),\n newChatDocument,\n oldChatDocument\n )\n ) {\n const sts = [\n $rdf.st(\n oldChatDocument,\n ns.rdfs('seeAlso'),\n newChatDocument,\n oldChatDocument\n )\n ]\n try {\n store.updater.update([], sts)\n } catch (err) {\n alert('Unable to link old chat file to new one:' + err)\n }\n }\n }\n }\n\n /*\n function messageCount () {\n var n = 0\n const tables = div.children\n for (let i = 0; i < tables.length; i++) {\n n += tables[i].children.length - 1\n // debug.log(' table length:' + tables[i].children.length)\n }\n return n\n }\n*/\n\n /* Add the live message block with entry field for today\n */\n async function appendCurrentMessages () {\n const now = new Date()\n const chatDocument = dateFolder.leafDocumentFromDate(now)\n\n /// ///////////////////////////////////////////////////////////\n const messageTable = await createMessageTable(now, true)\n div.appendChild(messageTable)\n div.refresh = async function () {\n // only the last messageTable is live\n await addNewChatDocumentIfNewDay(new Date())\n await syncMessages(chatChannel, messageTable) // @@ livemessagetable??\n desktopNotification(chatChannel)\n } // The short chat version the live update listening is done in the pane but we do it in the widget @@\n store.updater.addDownstreamChangeListener(chatDocument, div.refresh) // Live update\n liveMessageTable = messageTable\n latest.messageTable = liveMessageTable\n return messageTable\n }\n\n async function loadMoreWhereNeeded (event, fixScroll) {\n if (lock) return\n lock = true\n const freeze = !fixScroll\n const magicZone = 150\n // const top = div.scrollTop\n // const bottom = div.scrollHeight - top - div.clientHeight\n let done\n\n while (\n div.scrollTop < magicZone &&\n earliest.messageTable &&\n !earliest.messageTable.initial &&\n earliest.messageTable.extendBackwards\n ) {\n // If this has been called before the element is actually in the\n // user's DOM tree, then this scrollTop check won't work -> loop forever\n // https://github.com/solidos/solid-ui/issues/366\n if (div.scrollHeight === 0) {\n // debug.log(' chat/loadMoreWhereNeeded: trying later...')\n setTimeout(loadMoreWhereNeeded, 2000) // couple be less\n lock = false\n return // abandon now, do later\n }\n // debug.log(' chat/loadMoreWhereNeeded: Going now')\n const scrollBottom = div.scrollHeight - div.scrollTop\n // debug.log('infinite scroll: adding above: top ' + div.scrollTop)\n done = await earliest.messageTable.extendBackwards()\n if (freeze) {\n div.scrollTop = div.scrollHeight - scrollBottom\n }\n if (fixScroll) fixScroll()\n if (done) break\n }\n while (\n options.selectedMessage && // we started in the middle not at the bottom\n div.scrollHeight - div.scrollTop - div.clientHeight < magicZone && // we are scrolled right to the bottom\n latest.messageTable &&\n !latest.messageTable.final && // there is more data to come\n latest.messageTable.extendForwards\n ) {\n const scrollTop = div.scrollTop\n /* debug.log(\n 'infinite scroll: adding below: bottom: ' +\n (div.scrollHeight - div.scrollTop - div.clientHeight)\n ) */\n done = await latest.messageTable.extendForwards() // then add more data on the bottom\n if (freeze) {\n div.scrollTop = scrollTop // while adding below keep same things in view\n }\n if (fixScroll) fixScroll()\n if (done) break\n }\n lock = false\n }\n\n async function loadInitialContent () {\n function yank () {\n if (selectedMessageTable && selectedMessageTable.selectedElement) {\n selectedMessageTable.selectedElement.scrollIntoView({ block: 'center' })\n }\n }\n\n // During initial load ONLY keep scroll to selected thing or bottom\n function fixScroll () {\n if (options.selectedElement) {\n options.selectedElement.scrollIntoView({ block: 'center' }) // align tops or bottoms\n } else {\n if (liveMessageTable.inputRow.scrollIntoView) {\n liveMessageTable.inputRow.scrollIntoView(newestFirst) // align tops or bottoms\n }\n }\n }\n\n let live, selectedDocument, threadRootDocument\n if (options.selectedMessage) {\n selectedDocument = options.selectedMessage.doc()\n }\n if (threadRootMessage) {\n threadRootDocument = threadRootMessage.doc()\n }\n const initialDocment = selectedDocument || threadRootDocument\n\n if (initialDocment) {\n const now = new Date()\n const todayDocument = dateFolder.leafDocumentFromDate(now)\n live = todayDocument.sameTerm(initialDocment)\n }\n\n let selectedMessageTable\n if (initialDocment && !live) {\n const selectedDate = dateFolder.dateFromLeafDocument(initialDocment)\n selectedMessageTable = await createMessageTable(selectedDate, live)\n div.appendChild(selectedMessageTable)\n earliest.messageTable = selectedMessageTable\n latest.messageTable = selectedMessageTable\n yank()\n setTimeout(yank, 1000) // @@ kludge - restore position distubed by other cHANGES\n } else {\n // Live end\n await appendCurrentMessages()\n earliest.messageTable = liveMessageTable\n latest.messageTable = liveMessageTable\n }\n\n await loadMoreWhereNeeded(null, fixScroll)\n div.addEventListener('scroll', loadMoreWhereNeeded)\n if (options.solo) {\n document.body.addEventListener('scroll', loadMoreWhereNeeded)\n }\n }\n\n // Body of main function\n\n options = options || {}\n options.authorDateOnLeft = false // @@ make a user optiosn\n const newestFirst = options.newestFirst === '1' || options.newestFirst === true // hack for now\n\n const channelObject = new ChatChannel(chatChannel, options)\n const dateFolder = channelObject.dateFolder\n\n const div = dom.createElement('div')\n channelObject.div = div\n\n const statusArea = div.appendChild(dom.createElement('div'))\n const userContext = { dom, statusArea, div: statusArea } // logged on state, pointers to user's stuff\n\n let liveMessageTable\n let threadRootMessage\n const earliest = { messageTable: null } // Stuff about each end of the loaded days\n const latest = { messageTable: null }\n\n if (options.thread) {\n const thread = options.thread\n threadRootMessage = store.any(null, ns.sioc('has_reply'), thread, thread.doc())\n if (threadRootMessage) {\n const threadTime = store.any(threadRootMessage, ns.dct('created'), null, threadRootMessage.doc())\n if (threadTime) {\n earliest.limit = new Date(threadTime.value)\n // debug.log(' infinite: thread start at ' + earliest.limit)\n }\n }\n }\n\n let lock = false\n\n await loadInitialContent()\n return div\n}\n","// Solid-UI preferences\n// =====================\n//\n\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport { store } from 'solid-logic'\nimport * as debug from './debug'\nimport { ensureLoadedPreferences } from './login/login'\nimport ns from './ns'\nimport * as participation from './participation' // @ts-ignore\nimport * as widgets from './widgets'\n\nconst kb = store\n\n// This was tabulator . preferences in the tabulator\n// Is this functionality used anywhere?\n//\n\n// used for storing user name\n// @@ Deprocate these functions. They were used for\n// communication around the tabulator functionality about the user session\n\nexport const value = []\nexport function get (k) {\n return value[k]\n}\n\nexport function set (k, v) {\n if (typeof v !== 'string') {\n debug.log('Non-string value of preference ' + k + ': ' + v)\n throw new Error('Non-string value of preference ' + k + ': ' + v)\n }\n this.value[k] = v\n}\n\n// In a solid world, Preferences are stored in the web\n//\n// Make an RDF node for recording the common view preferences for any object\n// (maybe make it in a separate file?)\nexport function recordSharedPreferences (subject, context) {\n return new Promise(function (resolve, reject) {\n const sharedPreferences = kb.any(subject, ns.ui('sharedPreferences'))\n if (!sharedPreferences) {\n if (!kb.updater.editable(subject.doc())) {\n debug.log(` Cant make shared preferences, may not change ${subject.doc}`)\n resolve(context)\n }\n const sp = $rdf.sym(subject.doc().uri + '#SharedPreferences')\n const ins = [\n $rdf.st(subject, ns.ui('sharedPreferences'), sp, subject.doc())\n ]\n debug.log('Creating shared preferences ' + sp)\n kb.updater.update([], ins, function (uri, ok, errorMessage) {\n if (!ok) {\n reject(new Error('Error creating shared prefs: ' + errorMessage))\n } else {\n context.sharedPreferences = sp\n resolve(context)\n }\n })\n } else {\n context.sharedPreferences = sharedPreferences\n resolve(context)\n }\n })\n}\n\n// Construct a personal defaults node in the preferences file for a given class of object\n//\nexport function recordPersonalDefaults (theClass, context) {\n return new Promise(function (resolve, reject) {\n ensureLoadedPreferences(context).then(\n context => {\n if (!context.preferencesFile) {\n debug.log(\n 'Not doing private class preferences as no access to preferences file. ' +\n context.preferencesFileError\n )\n return\n }\n const regs = kb.each(\n null,\n ns.solid('forClass'),\n theClass,\n context.preferencesFile\n )\n let ins = []\n let prefs\n let reg\n if (regs.length) {\n // Use existing node if we can\n regs.forEach(r => {\n prefs = prefs || kb.any(r, ns.solid('personalDefaults'))\n })\n if (prefs) {\n context.personalDefaults = prefs // Found one\n resolve(context)\n return\n } else {\n prefs = widgets.newThing(context.preferencesFile)\n reg = regs[0]\n }\n } else {\n // no regs fo class\n reg = widgets.newThing(context.preferencesFile)\n ins = [\n $rdf.st(\n reg,\n ns.rdf('type'),\n ns.solid('TypeRegistration'),\n context.preferencesFile\n ),\n $rdf.st(reg, ns.solid('forClass'), theClass, context.preferencesFile)\n ]\n }\n prefs = widgets.newThing(context.preferencesFile)\n ins.push(\n $rdf.st(\n reg,\n ns.solid('personalDefaults'),\n prefs,\n context.preferencesFile\n )\n )\n kb.updater.update([], ins, function (uri, ok, errm) {\n if (!ok) {\n reject(new Error('Setting preferences for ' + theClass + ': ' + errm))\n } else {\n context.personalDefaults = prefs\n resolve(context)\n }\n })\n },\n err => {\n reject(err)\n }\n )\n })\n}\n\nexport function renderPreferencesForm (subject, theClass, preferencesForm, context) {\n const prefContainer = context.dom.createElement('div')\n participation.participationObject(subject, subject.doc(), context.me).then(\n participation => {\n const dom = context.dom\n function heading (text) {\n prefContainer.appendChild(dom.createElement('h5')).textContent = text\n }\n heading('My view of this ' + context.noun)\n widgets.appendForm(\n dom,\n prefContainer,\n {},\n participation,\n preferencesForm,\n subject.doc(),\n (ok, mes) => {\n if (!ok) widgets.complain(context, mes)\n }\n )\n\n heading('Everyone\\'s view of this ' + context.noun)\n recordSharedPreferences(subject, context).then(context => {\n const sharedPreferences = context.sharedPreferences\n widgets.appendForm(\n dom,\n prefContainer,\n {},\n sharedPreferences,\n preferencesForm,\n subject.doc(),\n (ok, mes) => {\n if (!ok) widgets.complain(context, mes)\n }\n )\n\n heading('My default view of any ' + context.noun)\n recordPersonalDefaults(theClass, context).then(\n context => {\n widgets.appendForm(\n dom,\n prefContainer,\n {},\n context.personalDefaults,\n preferencesForm,\n context.preferencesFile,\n (ok, mes) => {\n if (!ok) widgets.complain(context, mes)\n }\n )\n },\n err => {\n widgets.complain(context, err)\n }\n )\n })\n },\n err => {\n // parp object fails\n prefContainer.appendChild(widgets.errorMessageBlock(context.dom, err))\n }\n )\n return prefContainer\n}\n\n// This should be part of rdflib.js ad part of the RDFJS Standard!!\n\nfunction toJS (term) {\n if (!term.datatype) return term // Objects remain objects\n if (term.datatype.equals(ns.xsd('boolean'))) {\n return term.value === '1'\n }\n if (\n term.datatype.equals(ns.xsd('dateTime')) ||\n term.datatype.equals(ns.xsd('date'))\n ) {\n return new Date(term.value)\n }\n if (\n term.datatype.equals(ns.xsd('integer')) ||\n term.datatype.equals(ns.xsd('float')) ||\n term.datatype.equals(ns.xsd('decimal'))\n ) {\n return Number(term.value)\n }\n return term.value\n}\n\n// This is the function which acuakly reads and combines the preferences\n//\n// @@ make it much more tolerant of missing buts of prefernces\nexport function getPreferencesForClass (subject, theClass, predicates, context) {\n return new Promise(function (resolve, reject) {\n recordSharedPreferences(subject, context).then(context => {\n const sharedPreferences = context.sharedPreferences\n if (context.me) {\n participation\n .participationObject(subject, subject.doc(), context.me)\n .then(participation => {\n recordPersonalDefaults(theClass, context).then(context => {\n const results = []\n const personalDefaults = context.personalDefaults\n predicates.forEach(pred => {\n // Order of preference: My settings on object, Global settings on object, my settings on class\n const v1 =\n kb.any(participation, pred) ||\n kb.any(sharedPreferences, pred) ||\n kb.any(personalDefaults, pred)\n if (v1) {\n results[pred.uri] = toJS(v1)\n }\n })\n resolve(results)\n }, reject)\n }, reject)\n } else {\n // no user defined, just use common prefs\n const results = []\n predicates.forEach(pred => {\n const v1 = kb.any(sharedPreferences, pred)\n if (v1) {\n results[pred.uri] = toJS(v1)\n }\n })\n resolve(results)\n }\n })\n })\n}\n\n// ends\n","// Table Widget: Format an array of RDF statements as an HTML table.\n//\n// This can operate in one of three modes: when the class of object is given\n// or when the source document from whuch data is taken is given,\n// or if a prepared query object is given.\n// (In principle it could operate with neither class nor document\n// given but typically\n// there would be too much data.)\n// When the tableClass is not given, it looks for common classes in the data,\n// and gives the user the option.\n//\n// 2008 Written, Ilaria Liccardi as the tableViewPane.js\n// 2014 Core table widget moved into common/table.js - timbl\n//\n\nimport * as debug from './debug'\nimport { icons } from './iconBase'\nimport { store } from 'solid-logic'\nimport * as log from './log'\nimport ns from './ns'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\nimport * as utils from './utils'\nimport * as widgets from './widgets'\n\nconst UI = { icons, log, ns, utils, widgets }\n\n// UI.widgets.renderTableViewPane\nexport function renderTableViewPane (doc, options) {\n const sourceDocument = options.sourceDocument\n const tableClass = options.tableClass\n const givenQuery = options.query\n\n const RDFS_LITERAL = 'http://www.w3.org/2000/01/rdf-schema#Literal'\n const ns = UI.ns\n const kb = store\n const rowsLookup = {} // Persistent mapping of subject URI to dom TR\n\n // Predicates that are never made into columns:\n\n const FORBIDDEN_COLUMNS = {\n 'http://www.w3.org/2002/07/owl#sameAs': true,\n 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type': true\n }\n\n // Number types defined in the XML schema:\n\n const XSD_NUMBER_TYPES = {\n 'http://www.w3.org/2001/XMLSchema#decimal': true,\n 'http://www.w3.org/2001/XMLSchema#float': true,\n 'http://www.w3.org/2001/XMLSchema#double': true,\n 'http://www.w3.org/2001/XMLSchema#integer': true,\n 'http://www.w3.org/2001/XMLSchema#nonNegativeInteger': true,\n 'http://www.w3.org/2001/XMLSchema#positiveInteger': true,\n 'http://www.w3.org/2001/XMLSchema#nonPositiveInteger': true,\n 'http://www.w3.org/2001/XMLSchema#negativeInteger': true,\n 'http://www.w3.org/2001/XMLSchema#long': true,\n 'http://www.w3.org/2001/XMLSchema#int': true,\n 'http://www.w3.org/2001/XMLSchema#short': true,\n 'http://www.w3.org/2001/XMLSchema#byte': true,\n 'http://www.w3.org/2001/XMLSchema#unsignedLong': true,\n 'http://www.w3.org/2001/XMLSchema#unsignedInt': true,\n 'http://www.w3.org/2001/XMLSchema#unsignedShort': true,\n 'http://www.w3.org/2001/XMLSchema#unsignedByte': true\n }\n\n const XSD_DATE_TYPES = {\n 'http://www.w3.org/2001/XMLSchema#dateTime': true,\n 'http://www.w3.org/2001/XMLSchema#date': true\n }\n\n // Classes that indicate an image:\n\n const IMAGE_TYPES = {\n 'http://xmlns.com/foaf/0.1/Image': true,\n 'http://purl.org/dc/terms/Image': true\n }\n\n // Name of the column used as a \"key\" value to look up the row.\n // This is necessary because in the normal view, the columns are\n // all \"optional\" values, meaning that we will get a result set\n // for every individual value that is found. The row key acts\n // as an anchor that can be used to combine this information\n // back into the same row.\n\n const keyVariable = options.keyVariable || '?_row'\n\n let subjectIdCounter = 0\n let allType, types\n let typeSelectorDiv, addColumnDiv\n\n // The last SPARQL query used:\n let lastQuery = null\n let mostCommonType = null\n\n const resultDiv = doc.createElement('div')\n resultDiv.className = 'tableViewPane'\n\n resultDiv.appendChild(generateControlBar()) // sets typeSelectorDiv\n\n const tableDiv = doc.createElement('div')\n resultDiv.appendChild(tableDiv)\n\n // Save a refresh function for use by caller\n resultDiv.refresh = function () {\n runQuery(table.query, table.logicalRows, table.columns, table)\n // updateTable(givenQuery, mostCommonType) // This could be a lot more incremental and efficient\n }\n\n // A specifically asked-for query\n let table\n if (givenQuery) {\n table = renderTableForQuery(givenQuery)\n // lastQuery = givenQuery\n tableDiv.appendChild(table)\n } else {\n // Find the most common type and select it by default\n\n const s = calculateTable()\n allType = s[0]\n types = s[1]\n if (!tableClass) {\n typeSelectorDiv.appendChild(generateTypeSelector(allType, types))\n }\n\n mostCommonType = getMostCommonType(types)\n\n if (mostCommonType) {\n buildFilteredTable(mostCommonType)\n } else {\n buildFilteredTable(allType)\n }\n }\n return resultDiv\n\n // /////////////////////////////////////////////////////////////////\n /*\n function closeDialog (dialog) {\n dialog.parentNode.removeChild(dialog)\n }\n\n function createActionButton (label, callback) {\n var button = doc.createElement('input')\n button.setAttribute('type', 'submit')\n button.setAttribute('value', label)\n button.addEventListener('click', callback, false)\n return button\n }\n// @@ Tdo: put these buttonsback in,\n// to allow user to see and edit and save the sparql query for the table they are looking at\n//\n\n function createSparqlWindow () {\n var dialog = doc.createElement('div')\n\n dialog.setAttribute('class', 'sparqlDialog')\n\n var title = doc.createElement('h3')\n title.appendChild(doc.createTextNode('Edit SPARQL query'))\n\n var inputbox = doc.createElement('textarea')\n inputbox.value = rdf.queryToSPARQL(lastQuery)\n\n dialog.appendChild(title)\n dialog.appendChild(inputbox)\n\n dialog.appendChild(createActionButton('Query', function () {\n var query = rdf.SPARQLToQuery(inputbox.value)\n updateTable(query)\n closeDialog(dialog)\n }))\n\n dialog.appendChild(createActionButton('Close', function () {\n closeDialog(dialog)\n }))\n\n return dialog\n }\n\n function sparqlButtonPressed () {\n var dialog = createSparqlWindow()\n\n resultDiv.appendChild(dialog)\n }\n\n function generateSparqlButton () {\n var image = doc.createElement('img')\n image.setAttribute('class', 'sparqlButton')\n image.setAttribute('src', UI.iconBase + 'icons/1pt5a.gif')\n image.setAttribute('alt', 'Edit SPARQL query')\n\n image.addEventListener('click', sparqlButtonPressed, false)\n\n return image\n }\n*/\n // Generate the control bar displayed at the top of the screen.\n\n function generateControlBar () {\n const result = doc.createElement('table')\n result.setAttribute('class', 'toolbar')\n\n const tr = doc.createElement('tr')\n\n /* @@ Add in later -- not debugged yet\n var sparqlButtonDiv = doc.createElement(\"td\")\n sparqlButtonDiv.appendChild(generateSparqlButton())\n tr.appendChild(sparqlButtonDiv)\n */\n typeSelectorDiv = doc.createElement('td')\n tr.appendChild(typeSelectorDiv)\n\n addColumnDiv = doc.createElement('td')\n tr.appendChild(addColumnDiv)\n\n result.appendChild(tr)\n\n return result\n }\n\n // Add the SELECT details to the query being built.\n\n function addSelectToQuery (query, type) {\n const selectedColumns = type.getColumns()\n\n for (let i = 0; i < selectedColumns.length; ++i) {\n // TODO: autogenerate nicer names for variables\n // variables have to be unambiguous\n\n const variable = kb.variable('_col' + i)\n\n query.vars.push(variable)\n selectedColumns[i].setVariable(variable)\n }\n }\n\n // Add WHERE details to the query being built.\n\n function addWhereToQuery (query, rowVar, type) {\n let queryType = type.type\n\n if (!queryType) {\n queryType = kb.variable('_any')\n }\n\n // _row a type\n query.pat.add(rowVar, UI.ns.rdf('type'), queryType)\n }\n\n // Generate OPTIONAL column selectors.\n\n function addColumnsToQuery (query, rowVar, type) {\n const selectedColumns = type.getColumns()\n\n for (let i = 0; i < selectedColumns.length; ++i) {\n const column = selectedColumns[i]\n\n const formula = kb.formula()\n\n formula.add(rowVar, column.predicate, column.getVariable())\n\n query.pat.optional.push(formula)\n }\n }\n\n // Generate a query object from the currently-selected type\n // object.\n\n function generateQuery (type) {\n const query = new rdf.Query()\n const rowVar = kb.variable(keyVariable.slice(1)) // don't pass '?'\n\n addSelectToQuery(query, type)\n addWhereToQuery(query, rowVar, type)\n addColumnsToQuery(query, rowVar, type)\n\n return query\n }\n\n // Build the contents of the tableDiv element, filtered according\n // to the specified type.\n\n function buildFilteredTable (type) {\n // Generate \"add column\" cell.\n\n clearElement(addColumnDiv)\n addColumnDiv.appendChild(generateColumnAddDropdown(type))\n\n const query = generateQuery(type)\n\n updateTable(query, type)\n }\n\n function updateTable (query, type) {\n // Stop the previous query from doing any updates.\n\n if (lastQuery) {\n lastQuery.running = false\n }\n\n // Render the HTML table.\n\n const htmlTable = renderTableForQuery(query, type)\n\n // Clear the tableDiv element, and replace with the new table.\n\n clearElement(tableDiv)\n tableDiv.appendChild(htmlTable)\n\n // Save the query for the edit dialog.\n\n lastQuery = query\n }\n\n // Remove all subelements of the specified element.\n\n function clearElement (element) {\n while (element.childNodes.length > 0) {\n element.removeChild(element.childNodes[0])\n }\n }\n\n // A SubjectType is created for each rdf:type discovered.\n\n function SubjectType (type) {\n this.type = type\n this.columns = null\n this.allColumns = []\n this.useCount = 0\n\n // Get a list of all columns used by this type.\n\n this.getAllColumns = function () {\n return this.allColumns\n }\n\n // Get a list of the current columns used by this type\n // (subset of allColumns)\n\n this.getColumns = function () {\n // The first time through, get a list of all the columns\n // and select only the six most popular columns.\n\n if (!this.columns) {\n const allColumns = this.getAllColumns()\n this.columns = allColumns.slice(0, 7)\n }\n\n return this.columns\n }\n\n // Get a list of unused columns\n\n this.getUnusedColumns = function () {\n const allColumns = this.getAllColumns()\n const columns = this.getColumns()\n\n const result = []\n\n for (let i = 0; i < allColumns.length; ++i) {\n if (columns.indexOf(allColumns[i]) === -1) {\n result.push(allColumns[i])\n }\n }\n\n return result\n }\n\n this.addColumn = function (column) {\n this.columns.push(column)\n }\n\n this.removeColumn = function (column) {\n this.columns = this.columns.filter(function (x) {\n return x !== column\n })\n }\n\n this.getLabel = function () {\n return utils.label(this.type)\n }\n\n this.addUse = function () {\n this.useCount += 1\n }\n }\n\n // Class representing a column in the table.\n\n function Column () {\n this.useCount = 0\n\n // Have we checked any values for this column yet?\n\n this.checkedAnyValues = false\n\n // If the range is unknown, but we just get literals in this\n // column, then we can generate a literal selector.\n\n this.possiblyLiteral = true\n\n // If the range is unknown, but we just get literals and they\n // match the regular expression for numbers, we can generate\n // a number selector.\n\n this.possiblyNumber = true\n\n // We accumulate classes which things in the column must be a member of\n\n this.constraints = []\n\n // Check values as they are read. If we don't know what the\n // range is, we might be able to infer that it is a literal\n // if all of the values are literals. Similarly, we might\n // be able to determine if the literal values are actually\n // numbers (using regexps).\n\n this.checkValue = function (term) {\n const termType = term.termType\n if (\n this.possiblyLiteral &&\n termType !== 'Literal' &&\n termType !== 'NamedNode'\n ) {\n this.possiblyNumber = false\n this.possiblyLiteral = false\n } else if (this.possiblyNumber) {\n if (termType !== 'Literal') {\n this.possiblyNumber = false\n } else {\n const literalValue = term.value\n\n if (!literalValue.match(/^-?\\d+(\\.\\d*)?$/)) {\n this.possiblyNumber = false\n }\n }\n }\n\n this.checkedAnyValues = true\n }\n\n this.getVariable = function () {\n return this.variable\n }\n\n this.setVariable = function (variable) {\n this.variable = variable\n }\n\n this.getKey = function () {\n return this.variable.toString()\n }\n\n this.addUse = function () {\n this.useCount += 1\n }\n\n this.getHints = function () {\n if (\n options &&\n options.hints &&\n this.variable &&\n options.hints[this.variable.toNT()]\n ) {\n return options.hints[this.variable.toNT()]\n }\n return {}\n }\n\n this.getLabel = function () {\n if (this.getHints().label) {\n return this.getHints().label\n }\n if (this.predicate) {\n if (this.predicate.sameTerm(ns.rdf('type')) && this.superClass) {\n return utils.label(this.superClass, true) // do initial cap\n }\n return utils.label(this.predicate)\n } else if (this.variable) {\n return this.variable.toString()\n } else {\n return 'unlabeled column?'\n }\n }\n\n this.setPredicate = function (predicate, inverse, other) {\n if (inverse) {\n // variable is in the subject pos\n this.inverse = predicate\n this.constraints = this.constraints.concat(\n kb.each(predicate, UI.ns.rdfs('domain'))\n )\n if (\n predicate.sameTerm(ns.rdfs('subClassOf')) &&\n other.termType === 'NamedNode'\n ) {\n this.superClass = other\n this.alternatives = kb.each(undefined, ns.rdfs('subClassOf'), other)\n }\n } else {\n // variable is the object\n this.predicate = predicate\n this.constraints = this.constraints.concat(\n kb.each(predicate, UI.ns.rdfs('range'))\n )\n }\n }\n\n this.getConstraints = function () {\n return this.constraints\n }\n\n this.filterFunction = function () {\n return true\n }\n\n this.sortKey = function () {\n return this.getLabel().toLowerCase()\n }\n\n this.isImageColumn = function () {\n for (let i = 0; i < this.constraints.length; i++) {\n if (this.constraints[i].uri in IMAGE_TYPES) return true\n }\n return false\n }\n }\n\n // Convert an object to an array.\n\n function objectToArray (obj, filter) {\n const result = []\n\n for (const property in obj) {\n // @@@ have to guard against methods\n const value = obj[property]\n\n if (!filter || filter(property, value)) {\n result.push(value)\n }\n }\n\n return result\n }\n\n // Generate an <option> in a drop-down list.\n\n function optionElement (label, value) {\n const result = doc.createElement('option')\n\n result.setAttribute('value', value)\n result.appendChild(doc.createTextNode(label))\n\n return result\n }\n\n // Generate drop-down list box for choosing type of data displayed\n\n function generateTypeSelector (allType, types) {\n const resultDiv = doc.createElement('div')\n\n resultDiv.appendChild(doc.createTextNode('Select type: '))\n\n const dropdown = doc.createElement('select')\n\n dropdown.appendChild(optionElement('All types', 'null'))\n\n for (const uri in types) {\n dropdown.appendChild(optionElement(types[uri].getLabel(), uri))\n }\n\n dropdown.addEventListener(\n 'click',\n function () {\n let type\n\n if (dropdown.value === 'null') {\n type = allType\n } else {\n type = types[dropdown.value]\n }\n\n typeSelectorChanged(type)\n },\n false\n )\n\n resultDiv.appendChild(dropdown)\n\n return resultDiv\n }\n\n // Callback invoked when the type selector drop-down list is changed.\n\n function typeSelectorChanged (selectedType) {\n buildFilteredTable(selectedType)\n }\n\n // Build drop-down list to add a new column\n\n function generateColumnAddDropdown (type) {\n const resultDiv = doc.createElement('div')\n\n const unusedColumns = type.getUnusedColumns()\n\n unusedColumns.sort(function (a, b) {\n const aLabel = a.sortKey()\n const bLabel = b.sortKey()\n return (aLabel > bLabel) - (aLabel < bLabel)\n })\n\n // If there are no unused columns, the div is empty.\n\n if (unusedColumns.length > 0) {\n resultDiv.appendChild(doc.createTextNode('Add column: '))\n\n // Build dropdown list of unused columns.\n\n const dropdown = doc.createElement('select')\n\n dropdown.appendChild(optionElement('', '-1'))\n\n for (let i = 0; i < unusedColumns.length; ++i) {\n const column = unusedColumns[i]\n dropdown.appendChild(optionElement(column.getLabel(), '' + i))\n }\n\n resultDiv.appendChild(dropdown)\n\n // Invoke callback when the dropdown is changed, to add\n // the column and reload the table.\n\n dropdown.addEventListener(\n 'click',\n function () {\n const columnIndex = Number(dropdown.value)\n\n if (columnIndex >= 0) {\n type.addColumn(unusedColumns[columnIndex])\n buildFilteredTable(type)\n }\n },\n false\n )\n }\n\n return resultDiv\n }\n\n // Find the column for a given variable\n\n function getColumnForVariable (columns, variableNT) {\n for (const predicateUri in columns) {\n const column = columns[predicateUri]\n if (column.variable.toNT() === variableNT) {\n return column\n }\n }\n throw new Error(`getColumnForVariable: no column for variable ${variableNT}`)\n // return null\n }\n\n // Find the column for a given predicate, creating a new column object\n // if necessary.\n\n function getColumnForPredicate (columns, predicate) {\n let column\n\n if (predicate.uri in columns) {\n column = columns[predicate.uri]\n } else {\n column = new Column()\n column.setPredicate(predicate)\n columns[predicate.uri] = column\n }\n\n return column\n }\n\n // Find a type by its URI, creating a new SubjectType object if\n // necessary.\n\n function getTypeForObject (types, type) {\n let subjectType\n\n if (type.uri in types) {\n subjectType = types[type.uri]\n } else {\n subjectType = new SubjectType(type)\n types[type.uri] = subjectType\n }\n\n return subjectType\n }\n\n // Discover types and subjects for search.\n\n function discoverTypes () {\n // rdf:type properties of subjects, indexed by URI for the type.\n\n const types = {}\n\n // Get a list of statements that match: ? rdfs:type ?\n // From this we can get a list of subjects and types.\n\n const subjectList = kb.statementsMatching(\n undefined,\n UI.ns.rdf('type'),\n tableClass, // can be undefined OR\n sourceDocument\n ) // can be undefined\n\n // Subjects for later lookup. This is a mapping of type URIs to\n // lists of subjects (it is necessary to record the type of\n // a subject).\n\n const subjects = {}\n\n for (let i = 0; i < subjectList.length; ++i) {\n const type = subjectList[i].object\n\n if (type.termType !== 'NamedNode') {\n // @@ no bnodes?\n continue\n }\n\n const typeObj = getTypeForObject(types, type)\n\n if (!(type.uri in subjects)) {\n subjects[type.uri] = []\n }\n\n subjects[type.uri].push(subjectList[i].subject)\n typeObj.addUse()\n }\n\n return [subjects, types]\n }\n\n // Get columns for the given subject.\n\n function getSubjectProperties (subject, columns) {\n // Get a list of properties of this subject.\n\n const properties = kb.statementsMatching(\n subject,\n undefined,\n undefined,\n sourceDocument\n )\n\n const result = {}\n\n for (let j = 0; j < properties.length; ++j) {\n const predicate = properties[j].predicate\n\n if (predicate.uri in FORBIDDEN_COLUMNS) {\n continue\n }\n\n // Find/create a column for this predicate.\n\n const column = getColumnForPredicate(columns, predicate)\n column.checkValue(properties[j].object)\n\n result[predicate.uri] = column\n }\n\n return result\n }\n\n // Identify the columns associated with a type.\n\n function identifyColumnsForType (type, subjects) {\n const allColumns = {}\n\n // Process each subject of this type to build up the\n // column list.\n\n for (let i = 0; i < subjects.length; ++i) {\n const columns = getSubjectProperties(subjects[i], allColumns)\n\n for (const predicateUri in columns) {\n const column = columns[predicateUri]\n\n column.addUse()\n }\n }\n\n // Generate the columns list\n\n const allColumnsList = objectToArray(allColumns)\n sortColumns(allColumnsList)\n type.allColumns = allColumnsList\n }\n\n // Build table information from parsing RDF statements.\n\n function calculateTable () {\n // Find the types that we will display in the dropdown\n // list box, and associated objects of those types.\n\n let subjects, types\n\n const s = discoverTypes()\n // eslint-disable-next-line prefer-const\n subjects = s[0]\n // eslint-disable-next-line prefer-const\n types = s[1] // no [ ] on LHS\n\n for (const typeUrl in subjects) {\n const subjectList = subjects[typeUrl]\n const type = types[typeUrl]\n\n identifyColumnsForType(type, subjectList)\n }\n\n // TODO: Special type that captures all rows.\n // Combine columns from all types\n\n const allType = new SubjectType(null)\n\n return [allType, objectToArray(types)]\n }\n\n // Sort the list of columns by the most common columns.\n\n function sortColumns (columns) {\n function sortFunction (a, b) {\n return (a.useCount < b.useCount) - (a.useCount > b.useCount)\n }\n\n columns.sort(sortFunction)\n }\n\n // Create the delete button for a column.\n\n function renderColumnDeleteButton (type, column) {\n const button = doc.createElement('a')\n\n button.appendChild(doc.createTextNode('[x]'))\n\n button.addEventListener(\n 'click',\n function () {\n type.removeColumn(column)\n buildFilteredTable(type)\n },\n false\n )\n\n return button\n }\n\n // Render the table header for the HTML table.\n\n function renderTableHeader (columns, type) {\n const tr = doc.createElement('tr')\n\n /* Empty header for link column */\n const linkTd = doc.createElement('th')\n tr.appendChild(linkTd)\n\n for (let i = 0; i < columns.length; ++i) {\n const th = doc.createElement('th')\n const column = columns[i]\n\n th.appendChild(doc.createTextNode(column.getLabel()))\n\n // We can only add a delete button if we are using the\n // proper interface and have a type to delete from:\n if (type) {\n th.appendChild(renderColumnDeleteButton(type, column))\n }\n\n tr.appendChild(th)\n }\n\n return tr\n }\n\n // Sort the rows in the rendered table by data from a specific\n // column, using the provided sort function to compare values.\n\n function applyColumnSort (rows, column, sortFunction, reverse) {\n const columnKey = column.getKey()\n\n // Sort the rows array.\n rows.sort(function (row1, row2) {\n let row1Value = null\n let row2Value = null\n\n if (columnKey in row1.values) {\n row1Value = row1.values[columnKey][0]\n }\n if (columnKey in row2.values) {\n row2Value = row2.values[columnKey][0]\n }\n\n const result = sortFunction(row1Value, row2Value)\n\n if (reverse) {\n return -result\n } else {\n return result\n }\n })\n\n // Remove all rows from the table:\n\n if (rows.length) {\n const parentTable = rows[0]._htmlRow.parentNode\n\n for (let i = 0; i < rows.length; ++i) {\n parentTable.removeChild(rows[i]._htmlRow)\n }\n\n // Add back the rows in the new sorted order:\n\n for (let i = 0; i < rows.length; ++i) {\n parentTable.appendChild(rows[i]._htmlRow)\n }\n }\n }\n\n // Filter the list of rows based on the selectors for the\n // columns.\n\n function applyColumnFiltersToRow (row, columns) {\n let rowDisplayed = true\n\n // Check the filter functions for every column.\n // The row should only be displayed if the filter functions\n // for all of the columns return true.\n\n for (let c = 0; c < columns.length; ++c) {\n const column = columns[c]\n const columnKey = column.getKey()\n\n let columnValue = null\n\n if (columnKey in row.values) {\n columnValue = row.values[columnKey][0]\n }\n\n if (!column.filterFunction(columnValue)) {\n rowDisplayed = false\n break\n }\n }\n\n // Show or hide the HTML row according to the result\n // from the filter function.\n\n const htmlRow = row._htmlRow\n\n if (rowDisplayed) {\n htmlRow.style.display = ''\n } else {\n htmlRow.style.display = 'none'\n }\n }\n\n // Filter the list of rows based on the selectors for the\n // columns.\n\n function applyColumnFilters (rows, columns) {\n // Apply filterFunction to each row.\n\n for (let r = 0; r < rows.length; ++r) {\n const row = rows[r]\n applyColumnFiltersToRow(row, columns)\n }\n }\n\n // /////////////////////////////////// Literal column handling\n\n // Sort by literal value\n\n function literalSort (rows, column, reverse) {\n function literalToString (colValue) {\n if (colValue) {\n if (colValue.termType === 'Literal') {\n return colValue.value.toLowerCase()\n } else if (colValue.termType === 'NamedNode') {\n return utils.label(colValue).toLowerCase()\n }\n return colValue.value.toLowerCase()\n } else {\n return ''\n }\n }\n\n function literalCompare (value1, value2) {\n const strValue1 = literalToString(value1)\n const strValue2 = literalToString(value2)\n\n if (strValue1 < strValue2) {\n return -1\n } else if (strValue1 > strValue2) {\n return 1\n } else {\n return 0\n }\n }\n\n applyColumnSort(rows, column, literalCompare, reverse)\n }\n\n // Generates a selector for an RDF literal column.\n\n function renderLiteralSelector (rows, columns, column) {\n const result = doc.createElement('div')\n\n const textBox = doc.createElement('input')\n textBox.setAttribute('type', 'text')\n textBox.style.width = '70%'\n\n result.appendChild(textBox)\n\n const sort1 = doc.createElement('span')\n sort1.appendChild(doc.createTextNode('\\u25BC'))\n sort1.addEventListener(\n 'click',\n function () {\n literalSort(rows, column, false)\n },\n false\n )\n result.appendChild(sort1)\n\n const sort2 = doc.createElement('span')\n sort2.appendChild(doc.createTextNode('\\u25B2'))\n sort2.addEventListener(\n 'click',\n function () {\n literalSort(rows, column, true)\n },\n false\n )\n result.appendChild(sort2)\n\n let substring = null\n\n // Filter the table to show only rows that have a particular\n // substring in the specified column.\n\n column.filterFunction = function (colValue) {\n if (!substring) {\n return true\n } else if (!colValue) {\n return false\n } else {\n let literalValue\n\n if (colValue.termType === 'Literal') {\n literalValue = colValue.value\n } else if (colValue.termType === 'NamedNode') {\n literalValue = utils.label(colValue)\n } else {\n literalValue = ''\n }\n\n return literalValue.toLowerCase().indexOf(substring) >= 0\n }\n }\n\n textBox.addEventListener(\n 'keyup',\n function () {\n if (textBox.value !== '') {\n substring = textBox.value.toLowerCase()\n } else {\n substring = null\n }\n\n applyColumnFilters(rows, columns)\n },\n false\n )\n\n return result\n }\n\n // /////////////////////////////////// Enumeration\n\n // Generates a dropdown selector for enumeration types include\n //\n // @param rows,\n // @param columns, the mapping of predictae URIs to columns\n // @param column,\n // @param list, List of alternative terms\n //\n function renderEnumSelector (rows, columns, column, list) {\n const doMultiple = true\n const result = doc.createElement('div')\n const dropdown = doc.createElement('select')\n\n let searchValue = {} // Defualt to all enabled\n for (let i = 0; i < list.length; ++i) {\n const value = list[i]\n searchValue[value.uri] = true\n }\n\n const initialSelection = getHints(column).initialSelection\n if (initialSelection) searchValue = initialSelection\n\n if (doMultiple) dropdown.setAttribute('multiple', 'true')\n else dropdown.appendChild(optionElement('(All)', '-1'))\n\n for (let i = 0; i < list.length; ++i) {\n const value = list[i]\n const ele = optionElement(utils.label(value), i)\n if (searchValue[value.uri]) ele.selected = true\n dropdown.appendChild(ele)\n }\n result.appendChild(dropdown)\n\n // Select based on an enum value.\n\n column.filterFunction = function (colValue) {\n return !searchValue || (colValue && searchValue[colValue.uri])\n }\n\n dropdown.addEventListener(\n 'click',\n function () {\n if (doMultiple) {\n searchValue = {}\n const opt = dropdown.options\n for (let i = 0; i < opt.length; i++) {\n const option = opt[i]\n const index = Number(option.value)\n if (opt[i].selected) searchValue[list[index].uri] = true\n }\n } else {\n const index = Number(dropdown.value) // adjusted in Standard tweaks 2018-01\n if (index < 0) {\n searchValue = null\n } else {\n searchValue = {}\n searchValue[list[index].uri] = true\n }\n }\n applyColumnFilters(rows, columns)\n },\n true\n )\n\n return result\n }\n\n // //////////////////////////////////// Numeric\n //\n // Selector for XSD number types.\n\n function renderNumberSelector (rows, columns, column) {\n const result = doc.createElement('div')\n\n const minSelector = doc.createElement('input')\n minSelector.setAttribute('type', 'text')\n minSelector.style.width = '40px'\n result.appendChild(minSelector)\n\n const maxSelector = doc.createElement('input')\n maxSelector.setAttribute('type', 'text')\n maxSelector.style.width = '40px'\n result.appendChild(maxSelector)\n\n // Select based on minimum/maximum limits.\n\n let min = null\n let max = null\n\n column.filterFunction = function (colValue) {\n if (colValue) {\n colValue = Number(colValue)\n }\n\n if (min && (!colValue || colValue < min)) {\n return false\n }\n if (max && (!colValue || colValue > max)) {\n return false\n }\n\n return true\n }\n\n // When the values in the boxes are changed, update the\n // displayed columns.\n\n function eventListener () {\n if (minSelector.value === '') {\n min = null\n } else {\n min = Number(minSelector.value)\n }\n\n if (maxSelector.value === '') {\n max = null\n } else {\n max = Number(maxSelector.value)\n }\n\n applyColumnFilters(rows, columns)\n }\n\n minSelector.addEventListener('keyup', eventListener, false)\n maxSelector.addEventListener('keyup', eventListener, false)\n\n return result\n }\n\n // /////////////////////////////////////////////////////////////////\n\n // Fallback attempts at generating a selector if other attempts fail.\n\n function fallbackRenderTableSelector (rows, columns, column) {\n // Have all values matched as numbers?\n\n if (column.checkedAnyValues && column.possiblyNumber) {\n return renderNumberSelector(rows, columns, column)\n }\n\n // Have all values been literals?\n\n if (column.possiblyLiteral) {\n return renderLiteralSelector(rows, columns, column)\n }\n\n return null\n }\n\n // Render a selector for a given row.\n\n function renderTableSelector (rows, columns, column) {\n // What type of data is in this column? Check the constraints for\n // this predicate.\n\n // If this is a class which can be one of various sibling classes?\n if (column.superClass && column.alternatives.length > 0) {\n return renderEnumSelector(rows, columns, column, column.alternatives)\n }\n\n const cs = column.getConstraints()\n let range\n for (let i = 0; i < cs.length; i++) {\n range = cs[i]\n\n // Is this a number type?\n // Alternatively, is this an rdf:Literal type where all of\n // the values match as numbers?\n\n if (\n (column.checkedAnyValues && column.possiblyNumber) ||\n range.uri in XSD_NUMBER_TYPES\n ) {\n return renderNumberSelector(rows, columns, column)\n }\n\n // rdf:Literal? Assume a string at this point\n\n if (range.uri === RDFS_LITERAL) {\n return renderLiteralSelector(rows, columns, column)\n }\n\n // Is this an enumeration type?\n\n // Also ToDo: @@@ Handle membership of classes whcih are disjointUnions\n\n const choices = kb.each(range, UI.ns.owl('oneOf'))\n if (choices.length > 0) {\n return renderEnumSelector(rows, columns, column, choices.elements)\n }\n }\n return fallbackRenderTableSelector(rows, columns, column)\n }\n\n // Generate the search selectors for the table columns.\n\n function renderTableSelectors (rows, columns) {\n const tr = doc.createElement('tr')\n tr.className = 'selectors'\n\n // Empty link column\n\n tr.appendChild(doc.createElement('td'))\n\n // Generate selectors.\n\n for (let i = 0; i < columns.length; ++i) {\n const td = doc.createElement('td')\n\n const selector = renderTableSelector(rows, columns, columns[i])\n\n if (selector) {\n td.appendChild(selector)\n }\n /*\n // Useful debug: display URI of predicate in column header\n if (columns[i].predicate.uri) {\n td.appendChild(document.createTextNode(columns[i].predicate.uri))\n }\n */\n tr.appendChild(td)\n }\n\n return tr\n }\n\n function linkTo (uri, linkText, hints) {\n hints = hints || {}\n const result = doc.createElement('a')\n const linkFunction = hints.linkFunction\n result.setAttribute('href', uri)\n result.appendChild(doc.createTextNode(linkText))\n if (!linkFunction) {\n result.addEventListener('click', UI.widgets.openHrefInOutlineMode, true)\n } else {\n result.addEventListener(\n 'click',\n function (e) {\n e.preventDefault()\n e.stopPropagation()\n const target = utils.getTarget(e)\n const uri = target.getAttribute('href')\n if (!uri) debug.log('No href found \\n')\n linkFunction(uri)\n },\n true\n )\n }\n return result\n }\n\n function linkToObject (obj, hints) {\n let match = false\n\n if (obj.uri) {\n match = obj.uri.match(/^mailto:(.*)/)\n }\n\n if (match) {\n return linkTo(obj.uri, match[1], hints)\n } else {\n return linkTo(obj.uri, utils.label(obj), hints)\n }\n }\n\n // Render an image\n\n function renderImage (obj) {\n const result = doc.createElement('img')\n result.setAttribute('src', obj.uri)\n\n // Set the height, so it appears as a thumbnail.\n result.style.height = '40px'\n return result\n }\n\n // Render an individual RDF object to an HTML object displayed\n // in a table cell.\n\n function getHints (column) {\n if (\n options &&\n options.hints &&\n column.variable &&\n options.hints[column.variable.toNT()]\n ) {\n return options.hints[column.variable.toNT()]\n }\n return {}\n }\n\n function renderValue (obj, column) {\n // hint\n const hints = getHints(column)\n const cellFormat = hints.cellFormat\n if (cellFormat) {\n switch (cellFormat) {\n case 'shortDate':\n return doc.createTextNode(UI.widgets.shortDate(obj.value))\n // break\n default:\n // drop through\n }\n } else {\n if (obj.termType === 'Literal') {\n if (obj.datatype) {\n if (XSD_DATE_TYPES[obj.datatype.uri]) {\n return doc.createTextNode(UI.widgets.shortDate(obj.value))\n } else if (XSD_NUMBER_TYPES[obj.datatype.uri]) {\n const span = doc.createElement('span')\n span.textContent = obj.value\n span.setAttribute('style', 'text-align: right')\n return span\n }\n }\n return doc.createTextNode(obj.value)\n } else if (obj.termType === 'NamedNode' && column.isImageColumn()) {\n return renderImage(obj)\n } else if (obj.termType === 'NamedNode' || obj.termType === 'BlankNode') {\n return linkToObject(obj, hints)\n } else if (obj.termType === 'Collection') {\n const span = doc.createElement('span')\n span.appendChild(doc.createTextNode('['))\n obj.elements.forEach(function (x) {\n span.appendChild(renderValue(x, column))\n span.appendChild(doc.createTextNode(', '))\n })\n span.removeChild(span.lastChild)\n span.appendChild(doc.createTextNode(']'))\n return span\n } else {\n return doc.createTextNode('unknown termtype \\'' + obj.termType + '\\'!')\n }\n }\n }\n\n // Render a row of the HTML table, from the given row structure.\n // Note that unlike other functions, this renders into a provided\n // row (<tr>) element.\n\n function renderTableRowInto (tr, row, columns, _downstream) {\n /* Link column, for linking to this subject. */\n\n const linkTd = doc.createElement('td')\n\n if (row._subject && 'uri' in row._subject) {\n linkTd.appendChild(linkTo(row._subject.uri, '\\u2192'))\n }\n\n tr.appendChild(linkTd)\n\n // Create a <td> for each column (whether the row has data for that\n // column or not).\n\n for (let i = 0; i < columns.length; ++i) {\n const column = columns[i]\n const td = doc.createElement('td')\n let orig\n\n const columnKey = column.getKey()\n\n if (columnKey in row.values) {\n const objects = row.values[columnKey]\n let different = false\n if (row.originalValues && row.originalValues[columnKey]) {\n if (objects.length !== row.originalValues[columnKey].length) {\n different = true\n }\n }\n for (let j = 0; j < objects.length; ++j) {\n const obj = objects[j]\n if (\n row.originalValues &&\n row.originalValues[columnKey] &&\n row.originalValues[columnKey].length > j\n ) {\n orig = row.originalValues[columnKey][j]\n if (obj.toString() !== orig.toString()) {\n different = true\n }\n }\n td.appendChild(renderValue(obj, column))\n\n if (j !== objects.length - 1) {\n td.appendChild(doc.createTextNode(',\\n'))\n }\n if (different) {\n td.style.background = '#efe' // green = new changed\n }\n }\n }\n\n tr.appendChild(td)\n }\n\n // Save a reference to the HTML row in the row object.\n\n row._htmlRow = tr\n\n return tr\n }\n\n // Check if a value is already stored in the list of values for\n // a cell (the query can sometimes find it multiple times)\n\n function valueInList (value, list) {\n let key = null\n\n if (value.termType === 'Literal') {\n key = 'value'\n } else if (value.termType === 'NamedNode') {\n key = 'uri'\n } else {\n return list.indexOf(value) >= 0\n }\n\n // Check the list and compare keys:\n\n let i\n\n for (i = 0; i < list.length; ++i) {\n if (list[i].termType === value.termType && list[i][key] === value[key]) {\n return true\n }\n }\n\n // Not found?\n\n return false\n }\n\n // Update a row, add new values, and regenerate the HTML element\n // containing the values.\n\n function updateRow (row, columns, values) {\n let key\n let needUpdate = false\n\n for (key in values) {\n const value = values[key]\n\n // If this key is not already in the row, create a new entry\n // for it:\n\n if (!(key in row.values)) {\n row.values[key] = []\n }\n\n // Possibly add this new value to the list, but don't\n // add it if we have already added it:\n\n if (!valueInList(value, row.values[key])) {\n row.values[key].push(value)\n needUpdate = true\n }\n }\n\n // Regenerate the HTML row?\n\n if (needUpdate) {\n clearElement(row._htmlRow)\n renderTableRowInto(row._htmlRow, row, columns)\n }\n applyColumnFiltersToRow(row, columns) // Hide immediately if nec\n }\n\n // Get a unique ID for the given subject. This is normally the\n // URI; if the subject has no URI, a unique ID is assigned.\n\n function getSubjectId (subject) {\n if ('uri' in subject) {\n return subject.uri\n } else if ('_subject_id' in subject) {\n return subject._subject_id\n } else {\n const result = '' + subjectIdCounter\n subject._subject_id = result\n ++subjectIdCounter\n return result\n }\n }\n\n // Run a query and populate the table.\n // Populates also an array of logical rows. This will be empty when the function\n // first returns (as the query is performed in the background)\n\n function runQuery (query, rows, columns, table) {\n query.running = true\n const startTime = Date.now()\n\n let progressMessage = doc.createElement('tr')\n table.appendChild(progressMessage)\n progressMessage.textContent = 'Loading ...'\n\n for (let i = 0; i < rows.length; i++) {\n rows[i].original = true\n if (!rows[i].originalValues) {\n // remember first set\n rows[i].originalValues = rows[i].values\n }\n rows[i].values = {}\n // oldStyle = rows[i]._htmlRow.getAttribute('style') || ''\n // rows[i]._htmlRow.style.background = '#ffe'; //setAttribute('style', ' background-color: #ffe;')// yellow\n }\n\n const onResult = function (values) {\n if (!query.running) {\n return\n }\n\n progressMessage.textContent += '.' // give a progress bar\n\n let row = null\n let rowKey = null\n let rowKeyId\n\n // If the query has a row key, use it to look up the row.\n\n if (keyVariable in values) {\n rowKey = values[keyVariable]\n rowKeyId = getSubjectId(rowKey)\n\n // Do we have a row for this already?\n // If so, reuse it; otherwise, we must create a new row.\n\n if (rowKeyId in rowsLookup) {\n row = rowsLookup[rowKeyId]\n }\n }\n\n // Create a new row?\n\n if (!row) {\n const tr = doc.createElement('tr')\n table.appendChild(tr)\n\n row = {\n _htmlRow: tr,\n _subject: rowKey,\n values: {}\n }\n rows.push(row)\n\n if (rowKey) {\n rowsLookup[rowKeyId] = row\n }\n }\n\n // Add the new values to this row.\n delete row.original // This is included in the new data\n updateRow(row, columns, values)\n }\n\n const onDone = function () {\n if (\n progressMessage &&\n progressMessage.parentNode &&\n progressMessage.parentNode.removeChild\n ) {\n progressMessage.parentNode.removeChild(progressMessage)\n progressMessage = null\n }\n\n const elapsedTimeMS = Date.now() - startTime\n debug.log(\n 'Query done: ' + rows.length + ' rows, ' + elapsedTimeMS + 'ms'\n )\n // Delete rows which were from old values not new\n for (let i = rows.length - 1; i >= 0; i--) {\n // backwards\n if (rows[i].original) {\n debug.log(' deleting row ' + rows[i]._subject)\n const tr = rows[i]._htmlRow\n tr.parentNode.removeChild(tr)\n delete rowsLookup[getSubjectId(rows[i]._subject)]\n rows.splice(i, 1)\n }\n }\n\n if (options.sortBy) { // @@ for each column check needs sorting\n const column = getColumnForVariable(columns, options.sortBy)\n literalSort(rows, column, options.sortReverse)\n }\n\n if (options.onDone) options.onDone(resultDiv) // return div makes testing easier\n }\n kb.query(query, onResult, undefined, onDone)\n }\n\n // Given the formula object which is the query pattern,\n // deduce from where the variable occurs constraints on\n // what values it can take.\n\n function inferColumnsFromFormula (columns, formula) {\n UI.log.debug('>> processing formula')\n\n for (let i = 0; i < formula.statements.length; ++i) {\n const statement = formula.statements[i]\n // UI.log.debug(\"processing statement \" + i)\n\n // Does it match this?:\n // <something> <predicate> ?var\n // If so, we can use the predicate as the predicate for the\n // column used for the specified variable.\n\n if (\n statement.predicate.termType === 'NamedNode' &&\n statement.object.termType === 'Variable'\n ) {\n const variable = statement.object.toString()\n if (variable in columns) {\n const column = columns[variable]\n column.setPredicate(statement.predicate, false, statement.subject)\n }\n }\n if (\n statement.predicate.termType === 'NamedNode' &&\n statement.subject.termType === 'Variable'\n ) {\n const variable = statement.subject.toString()\n if (variable in columns) {\n const column = columns[variable]\n column.setPredicate(statement.predicate, true, statement.object)\n }\n }\n }\n\n // Apply to OPTIONAL formulas:\n\n for (let i = 0; i < formula.optional.length; ++i) {\n UI.log.debug('recurse to optional subformula ' + i)\n inferColumnsFromFormula(columns, formula.optional[i])\n }\n\n UI.log.debug('<< finished processing formula')\n }\n\n // Generate a list of column structures and infer details about the\n // predicates based on the contents of the query\n\n function inferColumns (query) {\n // Generate the columns list:\n\n const result = []\n const columns = {}\n\n for (let i = 0; i < query.vars.length; ++i) {\n const column = new Column()\n const queryVar = query.vars[i]\n UI.log.debug('column ' + i + ' : ' + queryVar)\n\n column.setVariable(queryVar)\n columns[queryVar] = column\n result.push(column)\n }\n\n inferColumnsFromFormula(columns, query.pat)\n\n return result\n }\n\n // Generate a table from a query.\n\n function renderTableForQuery (query, type) {\n // infer columns from query, to allow generic queries\n let columns\n if (!givenQuery) {\n columns = type.getColumns()\n } else {\n columns = inferColumns(query)\n }\n\n // Start with an empty list of rows; this will be populated\n // by the query.\n\n const rows = []\n\n // Create table element and header.\n\n const table = doc.createElement('table')\n\n table.appendChild(renderTableHeader(columns, type))\n table.appendChild(renderTableSelectors(rows, columns))\n\n // Run query. Note that this is perform asynchronously; the\n // query runs in the background and this call does not block.\n\n table.logicalRows = rows // Save for refresh\n table.columns = columns\n table.query = query\n\n runQuery(query, rows, columns, table)\n\n return table\n }\n\n // Find the most common type of row\n\n function getMostCommonType (types) {\n let bestCount = -1\n let best = null\n\n let typeUri\n for (typeUri in types) {\n const type = types[typeUri]\n\n if (type.useCount > bestCount) {\n best = type\n bestCount = type.useCount\n }\n }\n\n return best\n }\n\n // Filter list of columns to only those columns used in the\n // specified rows.\n /*\n function filterColumns (columns, rows) {\n var filteredColumns = {}\n\n // Copy columns from \"columns\" -> \"filteredColumns\", but only\n // those columns that are used in the list of rows specified.\n\n for (let columnUri in columns) {\n for (let i = 0; i < rows.length; ++i) {\n if (columnUri in rows[i]) {\n filteredColumns[columnUri] = columns[columnUri]\n break\n }\n }\n }\n return filteredColumns\n }\n */\n}\n// ///////////////////////////////////////////////////////////////////\n\n// ENDS\n","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return assertThisInitialized(t);\n}\nexport { _possibleConstructorReturn as default };","function _getPrototypeOf(t) {\n return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && setPrototypeOf(t, e);\n}\nexport { _inherits as default };","function _isNativeFunction(t) {\n try {\n return -1 !== Function.toString.call(t).indexOf(\"[native code]\");\n } catch (n) {\n return \"function\" == typeof t;\n }\n}\nexport { _isNativeFunction as default };","function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nexport { _isNativeReflectConstruct as default };","import isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _construct(t, e, r) {\n if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);\n var o = [null];\n o.push.apply(o, e);\n var p = new (t.bind.apply(t, o))();\n return r && setPrototypeOf(p, r.prototype), p;\n}\nexport { _construct as default };","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nfunction _wrapNativeSuper(t) {\n var r = \"function\" == typeof Map ? new Map() : void 0;\n return _wrapNativeSuper = function _wrapNativeSuper(t) {\n if (null === t || !isNativeFunction(t)) return t;\n if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\");\n if (void 0 !== r) {\n if (r.has(t)) return r.get(t);\n r.set(t, Wrapper);\n }\n function Wrapper() {\n return construct(t, arguments, getPrototypeOf(this).constructor);\n }\n return Wrapper.prototype = Object.create(t.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: !1,\n writable: !0,\n configurable: !0\n }\n }), setPrototypeOf(Wrapper, t);\n }, _wrapNativeSuper(t);\n}\nexport { _wrapNativeSuper as default };","import { cancelButton } from './widgets'\nimport { label } from './utils'\nimport { NamedNode } from 'rdflib'\nimport { style } from './style'\nimport { store } from 'solid-logic'\n\n/**\n * @ignore\n */\nclass ContainerElement extends HTMLElement {\n asSettings?: boolean\n}\n\ntype TabWidgetOptions = {\n backgroundColor?: string;\n dom?: HTMLDocument;\n items?: Array<NamedNode>;\n onClose?: (event: Event) => void;\n ordered?: boolean;\n orientation?: '0' | '1' | '2' | '3';\n predicate?: NamedNode;\n renderMain?: (bodyMain: HTMLElement, subject: NamedNode) => void;\n renderTab?: (tabDiv: HTMLButtonElement, subject: NamedNode) => void;\n renderTabSettings?: (bodyMain: ContainerElement, subject: NamedNode) => void;\n selectedTab?: NamedNode;\n startEmpty?: boolean;\n subject?: NamedNode;\n}\n\nexport class TabWidgetElement extends HTMLElement {\n bodyContainer?: HTMLElement\n refresh?: () => void\n tabContainer?: HTMLElement\n}\n\n/**\n * @ignore\n */\nclass TabElement extends HTMLElement {\n bodyTR?: HTMLElement\n subject?: NamedNode\n}\n\n/**\n * Use this widget to generate tabs from triples set in the global store.\n *\n * [Here you can see examples of the tabs](https://solidos.github.io/solid-ui/examples/tabs/).\n *\n * It assumes that items to use for tabs will be in a collection by default,\n * e.g.:\n *\n * ```turtle\n * :subject :predicate ( :item1 :item2 ) .\n * ```\n *\n * You can override this by setting `ordered: false`, in which case it expects\n * unordered triples:\n *\n * ```turtle\n * :subject :predicate :item1, :item 2 .\n * ```\n *\n * Triples that are not ordered in collection are in principle not sorted,\n * which means that tabs could change order every time you render the widget.\n * But in this case the widget will try to sort it in order to keep it\n * consistent.\n *\n * In both of these cases you need to define options `subject` and `predicate`\n * to tell the widget which triples it should be looking for.\n *\n * Finally you can set items manually, using the `items` option, e.g.:\n *\n * ```javascript\n * {\n * items: [\n * namedNode('https://domain.tld/#item1'),\n * namedNode('https://domain.tld/#item2')\n * ]\n * }\n * ```\n *\n * When you set items manually you do not need to set `subject` and\n * `predicate`.\n *\n * In any case you probably want to set the renderMain option to specify\n * what should be rendered for the various items, e.g.:\n *\n * ```javascript\n * {\n * renderMain: (bodyMain, subject) => {\n * bodyMain.innerHTML = renderItem(subject)\n * }\n * }\n * ```\n *\n * **Note:** `renderItem` is a custom function that you need to define yourself.\n *\n * The option `renderTabSettings` allows you to render a custom view in the\n * body container that is shown when you hold the ALT key and click on a\n * tab. It works very much like the `renderMain` option:\n *\n * ```javascript\n * {\n * renderTabSettings: (bodyMain, subject) => {\n * bodyMain.innerHTML = renderTabSettings(subject)\n * }\n * }\n * ```\n *\n * **Note:** `renderTabSettings` is a custom function that you need to define\n * yourself.\n *\n * By default the widget will try to guess the label by using the\n * [[utils.label]] function. If you want to customize this yourself, you can\n * use the `renderTab` option:\n *\n * ```javascript\n * {\n * renderTab: (tabDiv, subject) => {\n * tabDiv.innerText = renderTabText(subject)\n * }\n * }\n * ```\n *\n * **Note:** `renderTabText` is a custom function you need to define yourself.\n *\n * The option renderTab is also important if you want to set which tab should\n * be selected once the widget is rendered. By default it will simply select\n * the first tab, but you can override by setting `dataset.name` on the tab\n * and referring to the same string in `selectedTab`:\n *\n * ```javascript\n * {\n * renderTab: (tabDiv, subject) => {\n * tabDiv.dataset.name = subject.uri\n * },\n * selectedTab: item2.uri\n * }\n * ```\n *\n * You can apply a color to use for tabs and border of the container by using\n * option `background-color`. This is #ddddcc by default.\n *\n * You can override the document object that the widget uses to generate DOM\n * elements by setting the option `dom`. This is encouraged to set if you\n * intend your functionality to be used in environments that don't provide\n * a global `document` object.\n *\n * If you want to render a close button next to the tabs you can set option\n * `onClose` which takes a callback function that is triggered when the\n * button is clicked:\n *\n * ```javascript\n * {\n * onClose: (event) => {\n * // do something that hides the widget altogether\n * }\n * }\n * ```\n *\n * The option `orientation` allows you to set which side the tabs should be\n * located: `'0'` = Top, `'1'` = Left, `'2'` = Bottom, `'3'` = Right\n *\n * If you don't want to render anything in the body container by default,\n * you can set the option `startEmpty` to `true`.\n *\n * @param options\n */\nconst tabsDefaultBackgroundColor = '#ddddcc'\n\nexport function tabWidget (options: TabWidgetOptions) {\n const subject = options.subject\n const dom = options.dom || document\n const orientation = parseInt(options.orientation || '0')\n const backgroundColor = options.backgroundColor || tabsDefaultBackgroundColor\n const flipped = orientation & 2\n const vertical = orientation & 1\n const onClose = options.onClose\n\n const [selectedColor, color] = getColors(backgroundColor)\n const bodyMainStyle = `flex: 2; width: auto; height: 100%; border: 0.1em; border-style: solid; border-color: ${selectedColor}; padding: 1em;`\n const rootElement: TabWidgetElement = dom.createElement('div') // 20200117a\n\n rootElement.setAttribute('style', style.tabsRootElement)\n rootElement.style.flexDirection = (vertical ? 'row' : 'column') + (flipped ? '-reverse' : '')\n\n const navElement = rootElement.appendChild(dom.createElement('nav'))\n navElement.setAttribute('style', style.tabsNavElement)\n\n const mainElement = rootElement.appendChild(dom.createElement('main'))\n\n mainElement.setAttribute('style', style.tabsMainElement) // override tabbedtab.css\n const tabContainer = navElement.appendChild(dom.createElement('ul'))\n tabContainer.setAttribute('style', style.tabContainer)\n tabContainer.style.flexDirection = `${vertical ? 'column' : 'row'}`\n\n const tabElement = 'li'\n\n const bodyContainer = mainElement\n rootElement.tabContainer = tabContainer\n rootElement.bodyContainer = bodyContainer\n\n const corners = ['0.2em', '0.2em', '0', '0'] // top left, TR, BR, BL\n const cornersPrepped = corners.concat(corners).slice(orientation, orientation + 4)\n const cornersStyle = `border-radius: ${cornersPrepped.join(' ')};`\n\n const margins = ['0.3em', '0.3em', '0', '0.3em'] // top, right, bottom, left\n const marginsPrepped = margins.concat(margins).slice(orientation, orientation + 4)\n const marginsStyle = `margin: ${marginsPrepped.join(' ')};`\n\n const paddingStyle = `padding: ${marginsPrepped.join(' ')};`\n\n const tabStyle = cornersStyle + `position: relative; padding: 0.7em; max-width: 20em; color: ${color};`\n const unselectedStyle = `${\n tabStyle + marginsStyle\n } opacity: 50%; background-color: ${backgroundColor};`\n const selectedStyle = `${tabStyle + marginsStyle} background-color: ${selectedColor};`\n const shownStyle = 'height: 100%; width: 100%;'\n const hiddenStyle = shownStyle + 'display: none;'\n rootElement.refresh = orderedSync\n orderedSync()\n\n if (!options.startEmpty && tabContainer.children.length && options.selectedTab) {\n const selectedTab0 = Array.from(tabContainer.children) // Version left for compatibility with ??\n .map((tab) => tab.firstChild as HTMLElement)\n .find((tab) => tab.dataset.name === options.selectedTab)\n\n const selectedTabURI = options.selectedTab.uri\n const selectedTab1 = Array.from(tabContainer.children)\n // @ts-ignore\n .find(\n (tab) =>\n (tab as TabElement).subject &&\n // @ts-ignore\n (tab as TabElement).subject.uri &&\n // @ts-ignore\n (tab as TabElement).subject.uri === selectedTabURI\n )\n\n const tab = selectedTab1 || selectedTab0 || (tabContainer.children[0] as HTMLButtonElement)\n const clickMe = tab.firstChild\n // @ts-ignore\n if (clickMe) clickMe.click()\n } else if (!options.startEmpty) {\n (tabContainer.children[0].firstChild as HTMLButtonElement).click() // Open first tab\n }\n return rootElement\n\n function addCancelButton (tabContainer) {\n if (tabContainer.dataset.onCloseSet) {\n // @@ TODO: this is only here to make the browser tests work\n // Discussion at https://github.com/solidos/solid-ui/pull/110#issuecomment-527080663\n const existingCancelButton = tabContainer.querySelector('.unstyled')\n tabContainer.removeChild(existingCancelButton)\n }\n const extraTab = dom.createElement(tabElement)\n extraTab.classList.add('unstyled')\n const tabCancelButton = cancelButton(dom, onClose)\n tabCancelButton.setAttribute('style', tabCancelButton.getAttribute('style') + paddingStyle)\n extraTab.appendChild(tabCancelButton)\n tabContainer.appendChild(extraTab)\n tabContainer.dataset.onCloseSet = 'true'\n }\n\n function getItems (): Array<NamedNode> {\n if (options.items) return options.items\n if (options.ordered !== false) {\n // options.ordered defaults to true\n return (store.the(subject, options.predicate) as any).elements\n } else {\n return store.each(subject, options.predicate) as any\n }\n }\n\n function makeNewSlot (item: NamedNode) {\n const ele = dom.createElement(tabElement) as TabElement\n ele.setAttribute('style', unselectedStyle)\n ele.subject = item\n const div = ele.appendChild(dom.createElement('button'))\n div.setAttribute('style', style.makeNewSlot)\n\n div.onclick = function () {\n resetTabStyle()\n resetBodyStyle()\n ele.setAttribute('style', selectedStyle)\n if (!ele.bodyTR) return\n ele.bodyTR.setAttribute('style', shownStyle)\n const bodyMain = getOrCreateContainerElement(ele)\n if (options.renderMain && ele.subject && bodyMain.asSettings !== false) {\n bodyMain.innerHTML = 'loading item ...' + item\n options.renderMain(bodyMain, ele.subject)\n bodyMain.asSettings = false\n }\n }\n\n if (options.renderTabSettings && ele.subject) {\n const ellipsis = dom.createElement('button')\n ellipsis.textContent = '...'\n ellipsis.setAttribute('style', style.ellipsis)\n\n ellipsis.onclick = function () {\n resetTabStyle()\n resetBodyStyle()\n ele.setAttribute('style', selectedStyle)\n if (!ele.bodyTR) return\n ele.bodyTR.setAttribute('style', shownStyle)\n const bodyMain = getOrCreateContainerElement(ele)\n if (options.renderTabSettings && ele.subject && bodyMain.asSettings !== true) {\n bodyMain.innerHTML = 'loading settings ...' + item\n options.renderTabSettings(bodyMain, ele.subject)\n bodyMain.asSettings = true\n }\n }\n ele.appendChild(ellipsis)\n }\n\n if (options.renderTab) {\n options.renderTab(div, item)\n } else {\n div.innerHTML = label(item)\n }\n return ele\n\n function getOrCreateContainerElement (ele: TabElement): ContainerElement {\n const bodyMain = ele.bodyTR?.children[0] as ContainerElement\n if (bodyMain) return bodyMain\n const newBodyMain = ele.bodyTR!.appendChild(dom.createElement('main'))\n newBodyMain.setAttribute('style', bodyMainStyle)\n return newBodyMain\n }\n }\n\n // @@ Use common one from utils?\n function orderedSync () {\n const items = getItems()\n let slot: TabElement, i, j, left, right\n let differ = false\n // Find how many match at each end\n for (left = 0; left < tabContainer.children.length; left++) {\n slot = tabContainer.children[left] as TabElement\n if (left >= items.length || (slot.subject && !slot.subject.sameTerm(items[left]))) {\n differ = true\n break\n }\n }\n if (!differ && items.length === tabContainer.children.length) {\n return // The two just match in order: a case to optimize for\n }\n for (right = tabContainer.children.length - 1; right >= 0; right--) {\n slot = tabContainer.children[right] as TabElement\n j = right - tabContainer.children.length + items.length\n if (slot.subject && !slot.subject.sameTerm(items[j])) {\n break\n }\n }\n // The elements left ... right in tabContainer.children do not match\n const insertables = items.slice(left, right - tabContainer.children.length + items.length + 1)\n while (right >= left) {\n // remove extra\n tabContainer.removeChild(tabContainer.children[left])\n bodyContainer.removeChild(bodyContainer.children[left])\n right -= 1\n }\n for (i = 0; i < insertables.length; i++) {\n const newSlot = makeNewSlot(insertables[i])\n const newBodyDiv = dom.createElement('div')\n newSlot.bodyTR = newBodyDiv\n if (left === tabContainer.children.length) {\n // None left of original on right\n tabContainer.appendChild(newSlot)\n bodyContainer.appendChild(newBodyDiv)\n } else {\n tabContainer.insertBefore(newSlot, tabContainer.children[left + i])\n bodyContainer.insertBefore(newBodyDiv, bodyContainer.children[left + i])\n }\n }\n if (onClose) {\n addCancelButton(tabContainer)\n }\n }\n\n function resetTabStyle () {\n for (let i = 0; i < tabContainer.children.length; i++) {\n const tab = tabContainer.children[i]\n if (tab.classList.contains('unstyled')) {\n continue\n } else {\n tab.setAttribute('style', unselectedStyle)\n }\n }\n }\n\n function resetBodyStyle () {\n for (let i = 0; i < bodyContainer.children.length; i++) {\n bodyContainer.children[i].setAttribute('style', hiddenStyle)\n }\n }\n}\n\n/**\n * @internal\n */\nfunction getColors (backgroundColor: string): [string, string] {\n return isLight(backgroundColor)\n ? [colorBlend(backgroundColor, '#ffffff', 0.3), '#000000']\n : [colorBlend(backgroundColor, '#000000', 0.3), '#ffffff']\n}\n\n/**\n * @internal\n */\nfunction colorBlend (a: string, b: string, mix: number): string {\n let ca, cb, res\n let str = '#'\n const hex = '0123456789abcdef'\n for (let i = 0; i < 3; i++) {\n ca = parseInt(a.slice(i * 2 + 1, i * 2 + 3), 16)\n cb = parseInt(b.slice(i * 2 + 1, i * 2 + 3), 16)\n res = ca * (1.0 - mix) + cb * mix // @@@ rounding\n const res2 = parseInt(('' + res).split('.')[0]) // @@ ugh\n const h = parseInt(('' + res2 / 16).split('.')[0]) // @@ ugh\n const l = parseInt(('' + (res2 % 16)).split('.')[0]) // @@ ugh\n str += hex[h] + hex[l]\n }\n return str\n}\n\n/**\n * @internal\n */\nfunction isLight (x: string): boolean {\n let total = 0\n for (let i = 0; i < 3; i++) {\n total += parseInt(x.slice(i * 2 + 1, i * 2 + 3), 16)\n }\n return total > 128 * 3\n}\n","export const emptyProfile = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" fill=\"none\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M13 25C19.6274 25 25 19.6274 25 13C25 6.37258 19.6274 1 13 1C6.37258 1 1 6.37258 1 13C1 19.6274 6.37258 25 13 25Z\" fill=\"#D8D8D8\" stroke=\"#8B8B8B\"/>\n <mask id=\"mask0\" mask-type=\"alpha\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"26\" height=\"26\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M13 25C19.6274 25 25 19.6274 25 13C25 6.37258 19.6274 1 13 1C6.37258 1 1 6.37258 1 13C1 19.6274 6.37258 25 13 25Z\" fill=\"white\" stroke=\"white\"/>\n </mask>\n <g mask=\"url(#mask0)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M17.0468 10.4586C17.0468 14.4979 15.4281 16.9214 12.9999 16.9214C10.5718 16.9214 8.95298 14.4979 8.95298 10.4586C8.95298 6.41931 12.9999 6.41931 12.9999 6.41931C12.9999 6.41931 17.0468 6.41931 17.0468 10.4586ZM4.09668 23.3842C6.52483 17.7293 12.9999 17.7293 12.9999 17.7293C12.9999 17.7293 19.475 17.7293 21.9031 23.3842C21.9031 23.3842 17.8481 25 12.9999 25C8.15169 25 4.09668 23.3842 4.09668 23.3842Z\" fill=\"#8B8B8B\"/>\n </g>\n</svg>`\n","/*\n Copied from mashlib/src/global/metadata.ts\n */\nimport { IndexedFormula, LiveStore, NamedNode, parse, sym } from 'rdflib'\nimport { ns } from '..'\n\n/* @ts-ignore no-console */\ntype ThrottleOptions = {\n leading?: boolean;\n throttling?: boolean;\n trailing?: boolean;\n}\n\n/**\n * @ignore exporting this only for the unit test\n */\nexport function getPod (): NamedNode {\n // @@ TODO: This is given that mashlib runs on NSS - might need to change when we want it to run on other Pod servers\n return sym(document.location.origin).site()\n}\n/**\n */\nexport async function getPodOwner (pod: NamedNode, store: LiveStore): Promise<NamedNode | null> {\n // This is a massive guess. In future\n // const podOwner = sym(`${pod.uri}profile/card#me`)\n\n try {\n // load turtle Container representation\n if (!store.any(pod, null, ns.ldp('Container'), pod)) {\n const response = await store.fetcher.webOperation('GET', pod.uri, store.fetcher.initFetchOptions(pod.uri, { headers: { accept: 'text/turtle' } }))\n const containerTurtle = response.responseText\n parse(containerTurtle as string, store, pod.uri, 'text/turtle')\n }\n } catch (err) {\n console.error('Error loading pod ' + pod + ': ' + err)\n return null\n }\n if (!store.holds(pod, ns.rdf('type'), ns.space('Storage'), pod)) {\n console.warn('Pod ' + pod + ' does not declare itself as a space:Storage')\n return null\n }\n const podOwner = store.any(pod, ns.solid('owner'), null, pod) ||\n store.any(null, ns.space('storage'), pod, pod)\n if (podOwner) {\n try {\n await store.fetcher.load((podOwner as NamedNode).doc())\n } catch (_err) {\n console.warn('Unable to load profile of pod owner ' + podOwner)\n return null\n }\n if (!store.holds(podOwner, ns.space('storage'), pod, (podOwner as NamedNode).doc())) {\n console.warn(`Pod owner ${podOwner} does NOT list pod ${pod} as their storage`)\n }\n return podOwner as NamedNode// Success!\n } else { // pod owner not declared in pod\n // @@ TODO: This is given the structure that NSS provides\n // This is a massive guess. For old pods which don't have owner link\n const guess = sym(`${pod.uri}profile/card#me`)\n try {\n // @ts-ignore LiveStore always has fetcher\n await store.fetcher.load(guess)\n } catch (_err) {\n console.error('Ooops. Guessed wrong pod owner webid {$guess} : can\\'t load it.')\n return null\n }\n if (store.holds(guess, ns.space('storage'), pod, guess.doc())) {\n console.warn('Using guessed pod owner webid but it links back.')\n return guess\n }\n return null\n }\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function getName (store: IndexedFormula, user: NamedNode): string {\n return store.anyValue(user, ns.vcard('fn'), null, user.doc()) ||\n store.anyValue(user, ns.foaf('name'), null, user.doc()) ||\n user.uri\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function throttle (func: Function, wait: number, options: ThrottleOptions = {}): (...args: any[]) => any {\n let context: any,\n args: any,\n result: any\n let timeout: any = null\n let previous = 0\n const later = function () {\n previous = !options.leading ? 0 : Date.now()\n timeout = null\n result = func.apply(context, args)\n if (!timeout) context = args = null\n }\n return function () {\n const now = Date.now()\n if (!previous && !options.leading) previous = now\n const remaining = wait - (now - previous)\n // @ts-ignore\n context = this\n args = arguments\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout)\n timeout = null\n }\n previous = now\n result = func.apply(context, args)\n if (!timeout) context = args = null\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining)\n }\n return result\n }\n}\n","/* global EventListenerOrEventListenerObject */\n/*\n This file was copied from mashlib/src/global/header.ts file. It is modified to\n work in solid-ui by adjusting where imported functions are found.\n */\nimport { IndexedFormula, NamedNode } from 'rdflib'\nimport { icons } from '../index'\nimport { authn, authSession } from 'solid-logic'\nimport { loginStatusBox } from '../login/login'\n// import { loginStatusBox, authSession, currentUser } from '../authn/authn'\nimport * as widgets from '../widgets'\nimport { style } from '../style'\nimport { emptyProfile } from './empty-profile'\nimport { getPod, throttle } from '../utils/headerFooterHelpers'\n\n/**\n * menu icons\n*/\nconst DEFAULT_HELP_MENU_ICON = icons.iconBase + 'noun_help.svg'\nconst DEFAUL_SOLID_ICON_URL = 'https://solidproject.org/assets/img/solid-emblem.svg'\n\nexport type MenuItemLink = {\n label: string,\n url: string,\n target?: string\n}\n\nexport type MenuItemButton = {\n label: string,\n onclick: () => void\n}\n\nexport type MenuItems = MenuItemLink | MenuItemButton\n\n/*\n HeaderOptions allow for customizing the logo and menu list. If a logo is not provided the default\n is solid. Menulist will always show a link to logout and to the users profile.\n */\nexport type HeaderOptions = {\n logo?: string,\n helpIcon?: string,\n helpMenuList?: MenuItems[]\n}\n\n/**\n * Initialize header component, the header object returned depends on whether the user is authenticated.\n * @param store the data store\n * @param userMenuList a list of menu items when the user is logged in\n * @param options allow the header to be customized with a personalized logo, help icon and a help menu list of links or buttons.\n * @returns a header for an authenticated user with menu items given or a login screen\n */\nexport async function initHeader (store: IndexedFormula, userMenuList: MenuItems[], options?: HeaderOptions) {\n const header = document.getElementById('PageHeader')\n if (!header) {\n return\n }\n\n const pod = getPod()\n rebuildHeader(header, store, pod, userMenuList, options)()\n authSession.events.on('logout', rebuildHeader(header, store, pod, userMenuList, options))\n authSession.events.on('login', rebuildHeader(header, store, pod, userMenuList, options))\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function rebuildHeader (header: HTMLElement, store: IndexedFormula, pod: NamedNode, userMenuList: MenuItems[], options?: HeaderOptions) {\n return async () => {\n const user = authn.currentUser()\n header.innerHTML = ''\n header.appendChild(await createBanner(store, pod, user, userMenuList, options))\n }\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport async function createBanner (store: IndexedFormula, pod: NamedNode, user: NamedNode | null, userMenuList: MenuItems[], options?: HeaderOptions): Promise<HTMLElement> {\n const podLink = document.createElement('a')\n podLink.href = pod.uri\n podLink.setAttribute('style', style.headerBannerLink)\n const image = document.createElement('img')\n if (options) {\n image.src = options.logo ? options.logo : DEFAUL_SOLID_ICON_URL\n }\n image.setAttribute('style', style.headerBannerIcon)\n podLink.appendChild(image)\n\n const userMenu = user\n ? await createUserMenu(store, user, userMenuList)\n : createLoginSignUpButtons()\n\n const banner = document.createElement('div')\n banner.setAttribute('style', style.headerBanner)\n banner.appendChild(podLink)\n\n const leftSideOfHeader = document.createElement('div')\n leftSideOfHeader.setAttribute('style', style.headerBannerRightMenu)\n leftSideOfHeader.appendChild(userMenu)\n\n if (options && options.helpMenuList) {\n const helpMenu = createHelpMenu(options, options.helpMenuList)\n leftSideOfHeader.appendChild(helpMenu as HTMLDivElement)\n }\n\n banner.appendChild(leftSideOfHeader)\n\n return banner\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createHelpMenu (options: HeaderOptions, helpMenuItems: MenuItems[]) {\n if (!helpMenuItems) return\n const helpMenuList = document.createElement('ul')\n helpMenuList.setAttribute('style', style.headerUserMenuList)\n helpMenuItems.forEach(function (menuItem) {\n const menuItemType: string = (menuItem as MenuItemLink).url ? 'url' : 'onclick'\n if (menuItemType === 'url') {\n helpMenuList.appendChild(createUserMenuItem(createUserMenuLink(menuItem.label, (menuItem as MenuItemLink).url, (menuItem as MenuItemLink).target)))\n } else {\n helpMenuList.appendChild(createUserMenuItem(createUserMenuButton(menuItem.label, (menuItem as MenuItemButton).onclick)))\n }\n })\n\n const helpMenu = document.createElement('nav')\n\n helpMenu.setAttribute('style', style.headerUserMenuNavigationMenuNotDisplayed)\n helpMenu.setAttribute('aria-hidden', 'true')\n helpMenu.setAttribute('id', 'helperNav')\n helpMenu.appendChild(helpMenuList)\n\n const helpMenuContainer = document.createElement('div')\n helpMenuContainer.setAttribute('style', style.headerBannerUserMenu)\n helpMenuContainer.appendChild(helpMenu)\n\n const helpMenuTrigger = document.createElement('button')\n helpMenuTrigger.setAttribute('style', style.headerUserMenuTrigger)\n helpMenuTrigger.type = 'button'\n\n const helpMenuIcon = document.createElement('img')\n helpMenuIcon.src = (options && options.helpIcon) ? options.helpIcon : icons.iconBase + DEFAULT_HELP_MENU_ICON\n helpMenuIcon.setAttribute('style', style.headerUserMenuTriggerImg)\n helpMenuContainer.appendChild(helpMenuTrigger)\n helpMenuTrigger.appendChild(helpMenuIcon)\n\n const throttledMenuToggle = throttle((event: Event) => toggleMenu(event, helpMenuTrigger, helpMenu), 50)\n helpMenuTrigger.addEventListener('click', throttledMenuToggle)\n let timer = setTimeout(() => null, 0)\n helpMenuContainer.addEventListener('mouseover', event => {\n clearTimeout(timer)\n throttledMenuToggle(event)\n const nav = document.getElementById('helperNav')\n nav?.setAttribute('style', style.headerUserMenuNavigationMenu)\n })\n helpMenuContainer.addEventListener('mouseout', event => {\n timer = setTimeout(() => throttledMenuToggle(event), 200)\n const nav = document.getElementById('helperNav')\n nav?.setAttribute('style', style.headerUserMenuNavigationMenuNotDisplayed)\n })\n\n return helpMenuContainer\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createLoginSignUpButtons () {\n const profileLoginButtonPre = document.createElement('div')\n profileLoginButtonPre.setAttribute('style', style.headerBannerLogin)\n profileLoginButtonPre.appendChild(loginStatusBox(document, null, {}))\n return profileLoginButtonPre\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createUserMenuButton (label: string, onClick: EventListenerOrEventListenerObject): HTMLElement {\n const button = document.createElement('button')\n button.setAttribute('style', style.headerUserMenuButton)\n button.onmouseover = function () {\n button.setAttribute('style', style.headerUserMenuButtonHover)\n }\n button.onmouseout = function () {\n button.setAttribute('style', style.headerUserMenuButton)\n }\n button.addEventListener('click', onClick)\n button.innerText = label\n return button\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createUserMenuLink (label: string, href: string, target?: string): HTMLElement {\n const link = document.createElement('a')\n link.setAttribute('style', style.headerUserMenuLink)\n link.onmouseover = function () {\n link.setAttribute('style', style.headerUserMenuLinkHover)\n }\n link.onmouseout = function () {\n link.setAttribute('style', style.headerUserMenuLink)\n }\n link.href = href\n link.innerText = label\n if (target) link.target = target\n return link\n}\n\n/**\n * @ignore exporting this only for the unit test\n */\nexport async function createUserMenu (store: IndexedFormula, user: NamedNode, userMenuList: MenuItems[]): Promise<HTMLElement> {\n const fetcher = (<any>store).fetcher\n if (fetcher) {\n // Making sure that Profile is loaded before building menu\n await fetcher.load(user)\n }\n\n const loggedInMenuList = document.createElement('ul')\n loggedInMenuList.setAttribute('style', style.headerUserMenuList)\n if (userMenuList) {\n userMenuList.forEach(function (menuItem) {\n const menuItemType: string = (menuItem as MenuItemLink).url ? 'url' : 'onclick'\n if (menuItemType === 'url') {\n loggedInMenuList.appendChild(createUserMenuItem(createUserMenuLink(menuItem.label, (menuItem as MenuItemLink).url, (menuItem as MenuItemLink).target)))\n } else {\n loggedInMenuList.appendChild(createUserMenuItem(createUserMenuButton(menuItem.label, (menuItem as MenuItemButton).onclick)))\n }\n })\n }\n const loggedInMenu = document.createElement('nav')\n\n loggedInMenu.setAttribute('style', style.headerUserMenuNavigationMenuNotDisplayed)\n loggedInMenu.setAttribute('aria-hidden', 'true')\n loggedInMenu.setAttribute('id', 'loggedInNav')\n loggedInMenu.appendChild(loggedInMenuList)\n\n const loggedInMenuTrigger = document.createElement('button')\n loggedInMenuTrigger.setAttribute('style', style.headerUserMenuTrigger)\n loggedInMenuTrigger.type = 'button'\n const profileImg = getProfileImg(store, user)\n if (typeof profileImg === 'string') {\n loggedInMenuTrigger.innerHTML = profileImg\n } else {\n loggedInMenuTrigger.appendChild(profileImg)\n }\n\n const loggedInMenuContainer = document.createElement('div')\n loggedInMenuContainer.setAttribute('style', style.headerBannerUserMenuNotDisplayed)\n loggedInMenuContainer.appendChild(loggedInMenuTrigger)\n loggedInMenuContainer.appendChild(loggedInMenu)\n\n const throttledMenuToggle = throttle((event: Event) => toggleMenu(event, loggedInMenuTrigger, loggedInMenu), 50)\n loggedInMenuTrigger.addEventListener('click', throttledMenuToggle)\n let timer = setTimeout(() => null, 0)\n loggedInMenuContainer.addEventListener('mouseover', event => {\n clearTimeout(timer)\n throttledMenuToggle(event)\n const nav = document.getElementById('loggedInNav')\n nav?.setAttribute('style', style.headerUserMenuNavigationMenu)\n })\n loggedInMenuContainer.addEventListener('mouseout', event => {\n timer = setTimeout(() => throttledMenuToggle(event), 200)\n const nav = document.getElementById('loggedInNav')\n nav?.setAttribute('style', style.headerUserMenuNavigationMenuNotDisplayed)\n })\n\n return loggedInMenuContainer\n}\n\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createUserMenuItem (child: HTMLElement): HTMLElement {\n const menuProfileItem = document.createElement('li')\n menuProfileItem.setAttribute('style', style.headerUserMenuListItem)\n menuProfileItem.appendChild(child)\n return menuProfileItem\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function getProfileImg (store: IndexedFormula, user: NamedNode): string | HTMLElement {\n let profileUrl = null\n try {\n profileUrl = widgets.findImage(user)\n if (!profileUrl) {\n return emptyProfile\n }\n } catch {\n return emptyProfile\n }\n\n const profileImage = document.createElement('div')\n profileImage.setAttribute('style', style.headerUserMenuPhoto)\n profileImage.style.backgroundImage = `url(${profileUrl})`\n return profileImage\n}\n\n/**\n * @internal\n */\nfunction toggleMenu (event: Event, trigger: HTMLButtonElement, menu: HTMLElement): void {\n const isExpanded = trigger.getAttribute('aria-expanded') === 'true'\n const expand = event.type === 'mouseover'\n const close = event.type === 'mouseout'\n if ((isExpanded && expand) || (!isExpanded && close)) {\n return\n }\n trigger.setAttribute('aria-expanded', (!isExpanded).toString())\n menu.setAttribute('aria-hidden', isExpanded.toString())\n}\n","/*\n This file was copied from mashlib/src/global/footer.ts file. It is modified to\n work in solid-ui by adjusting where imported functions are found.\n */\nimport { LiveStore, NamedNode } from 'rdflib'\nimport { authn, authSession } from 'solid-logic'\nimport { style } from '../style'\nimport { getName, getPod, getPodOwner } from '../utils/headerFooterHelpers'\n\nconst DEFAULT_SOLID_PROJECT_URL = 'https://solidproject.org'\nconst DEFAULT_SOLID_PROJECT_NAME = 'solidproject.org'\n\n/*\n FooterOptions allow for customizing the link and name of the link part of the footer.\n */\nexport type FooterOptions = {\n solidProjectUrl?: string,\n solidProjectName?: string\n}\n\n/**\n * Initialize footer component, the footer object returned depends on whether the user is authenticated.\n * @param store the data store\n * @returns the footer\n */\nexport async function initFooter (store: LiveStore, options?: FooterOptions) {\n const footer = document.getElementById('PageFooter')\n if (!footer) {\n return\n }\n const pod = getPod()\n const podOwner = await getPodOwner(pod, store)\n rebuildFooter(footer, store, pod, podOwner, options)()\n authSession.events.on('login', rebuildFooter(footer, store, pod, podOwner, options))\n authSession.events.on('logout', rebuildFooter(footer, store, pod, podOwner, options))\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function rebuildFooter (footer: HTMLElement, store: LiveStore, pod: NamedNode | null, podOwner: NamedNode | null, options?: FooterOptions) {\n return async () => {\n const user = authn.currentUser()\n footer.innerHTML = ''\n footer.appendChild(await createControllerInfoBlock(store, user, pod, podOwner, options))\n }\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createControllerInfoBlock (store: LiveStore, user: NamedNode | null, pod: NamedNode | null, podOwner: NamedNode | null, options?: FooterOptions): HTMLElement {\n const profileLinkContainer = document.createElement('div')\n if (!pod || !podOwner || (user && user.equals(podOwner))) {\n return profileLinkContainer\n }\n\n profileLinkContainer.setAttribute('style', style.footer)\n\n const podLinkPre = document.createElement('span')\n podLinkPre.innerText = 'You\\'re visiting '\n\n const podLink = document.createElement('a')\n podLink.href = pod.uri\n podLink.innerText = 'the Pod'\n\n const profileLinkPre = document.createElement('span')\n profileLinkPre.innerText = ' controlled by '\n\n const profileLink = document.createElement('a')\n profileLink.href = podOwner.uri\n profileLink.innerText = getName(store, podOwner)\n\n const solidProjectLinkPre = document.createElement('span')\n solidProjectLinkPre.innerText = '. For more info, check out '\n\n const solidProjectLink = document.createElement('a')\n solidProjectLink.href = options && options.solidProjectUrl ? options.solidProjectUrl : DEFAULT_SOLID_PROJECT_URL\n solidProjectLink.innerText = options && options.solidProjectName ? options.solidProjectName : DEFAULT_SOLID_PROJECT_NAME\n\n const solidProjectLinkPost = document.createElement('span')\n solidProjectLinkPost.innerText = '.'\n\n profileLinkContainer.appendChild(podLinkPre)\n profileLinkContainer.appendChild(podLink)\n profileLinkContainer.appendChild(profileLinkPre)\n profileLinkContainer.appendChild(profileLink)\n profileLinkContainer.appendChild(solidProjectLinkPre)\n profileLinkContainer.appendChild(solidProjectLink)\n profileLinkContainer.appendChild(solidProjectLinkPost)\n\n return profileLinkContainer\n}\n","import { NamedNode } from 'rdflib'\nimport { PaneDefinition } from 'pane-registry'\n\nexport type CreateContext = {\n div: HTMLElement\n dom: HTMLDocument\n folder?: NamedNode\n me: NamedNode\n refreshTarget?: HTMLTableElement\n statusArea: HTMLElement\n}\n\nexport interface NewAppInstanceOptions {\n appPathSegment?: string\n event: any\n folder: NamedNode | null\n iconEle: HTMLImageElement\n pane: PaneDefinition\n noun: string\n noIndexHTML: boolean\n div: HTMLElement,\n me: NamedNode,\n dom: HTMLDocument,\n refreshTarget?: HTMLTableElement\n}\n","/*\nThe MIT License (MIT)\n\nCopyright (c) 2015-2016 Solid\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nIf you would like to know more about the solid Solid project, please see\nhttps://github.com/solidos/solid\n*/\n'use strict'\n/**\n * Provides a Solid client helper object (which exposes various static modules).\n * @module UI.js\n * @main UI.js\n */\n\n/**\n * @class UI\n * @static\n */\n\n// REMOVE @ts-ignore as you migrate files to TypeScript\n// @ts-ignore\nimport ns from './ns'\nimport { acl, aclControl } from './acl/index'\nimport { create } from './create/index'\n// @ts-ignore\nimport { icons } from './iconBase'\nimport * as language from './widgets/forms/autocomplete/language'\nimport * as log from './log'\nimport { matrix } from './matrix/index'\nimport { media } from './media/index'\n// @ts-ignore\nimport { messageArea } from './messageArea'\n// @ts-ignore\nimport { infiniteMessageArea } from './chat/infinite'\n// @ts-ignore\nimport * as pad from './pad'\n// @ts-ignore\nimport * as participation from './participation'\n// @ts-ignore\nimport * as preferences from './preferences'\n// @ts-ignore\nimport { style } from './style'\n// @ts-ignore\nimport { renderTableViewPane as table } from './table'\nimport * as tabs from './tabs'\n// @ts-ignore\nimport * as utils from './utils'\nimport * as login from './login/login'\nimport * as widgets from './widgets/index'\nimport { initHeader } from './header'\nimport { initFooter } from './footer'\nimport * as createTypes from './create/types'\n\nconst dom = window ? window.document : null // Idea that UI.dom can be adapted in non-browser environments\n\nif (typeof window !== 'undefined') {\n ;(<any>window).UI = {\n ns,\n acl,\n aclControl,\n create,\n createTypes,\n dom,\n icons,\n language,\n log,\n login,\n matrix,\n media,\n messageArea,\n infiniteMessageArea,\n pad,\n participation,\n preferences,\n style,\n table,\n tabs,\n utils,\n widgets,\n initHeader,\n initFooter\n } // Simpler access by non-node scripts\n}\n\n// this variables are directly used in the storybook\nexport {\n ns,\n acl,\n aclControl,\n create,\n createTypes,\n dom,\n icons,\n language,\n log,\n login,\n matrix,\n media,\n messageArea,\n infiniteMessageArea,\n pad,\n participation,\n preferences,\n style,\n table,\n tabs,\n utils,\n widgets,\n initHeader,\n initFooter\n}\n// uses in solid-panes\nexport type { CreateContext, NewAppInstanceOptions } from './create/types'\n"],"names":["log","iconsOnGithub","icons","module","scriptURI","iconBase","slice","lastIndexOf","originalIconBase","$SolidTestEnvironment","_console","console","apply","arguments","warn","_console2","error","_console3","trace","_console4","solidNamespace","$rdf","TERROR","TWARN","TMESG","TSUCCESS","TINFO","TDEBUG","TALL","LogLevel","_level","_ascending","_dom","document","_window","window","str","type","length","undefined","typestr","logArea","getElementById","addendum","createElement","setAttribute","now","Date","innerHTML","concat","getHours","getMinutes","getSeconds","escapeForXML","insertBefore","firstChild","appendChild","msg","message","debug","info","success","alert","clear","_dom2","setLevel","level","dumpHTML","_dom3","body","logAscending","logDescending","replace","setInternals","store","ns","rdf","UI","label","thing","initialCap","doCap","toUpperCase","cleanUp","result","i","toLowerCase","getWellKnownLabel","value","termType","elements","s","uri","toString","split","map","decodeURIComponent","join","_e","hex","indexOf","String","fromCharCode","parseInt","hash","slash","suffix","any","ui","link","vcard","foaf","dct","dc","rss","contact","sym","cal","as","schema","rdfs","solidLogicSingleton","ACL_LINK","utils","graph","serialize","st","kb","adoptACLDefault","doc","aclDoc","defaultResource","defaultACLDoc","ACL","acl","isContainer","defaults","each","proposed","reduce","accumulatedStatements","da","statementsMatching","kb2","forEach","add","move","subject","predicate","object","symbol","y","readACL","getDefaults","auths","getDefaultsFallback","ac","agent","agentClass","agentGroup","origin","originClass","Object","keys","pred","a","mode","sameACL","b","contains","ACLunion","list","ag","_loop","k","loadUnionACL","subjectList","callbackFunction","aclList","doList","shift","getACLorDefault","ok","p2","targetDoc","targetACLDoc","defaultHolder","defa","push","ACLbyCombination","byCombo","combo","sort","combo2","makeACLGraph","x","makeACLGraphbyCombo","main","pairs","modeURIs","short","u","ACLToString","comboToString","initials","sameTerm","makeACLString","putACLObject","putACLbyCombo","_kb$updater","updater","put","_kb$fetcher","fetcher","unload","requested","fixIndividualCardACL","person","groups","fixIndividualACL","item","subjects","exists","union","setACL","docURI","aclText","Error","webOperation","data","contentType","then","res","nowOrWhenFetched","getACL","status","tryParent","right","left","doc2","nonexistent","response","getProspectiveHolder","_x","_getProspectiveHolder","_asyncToGenerator","_regeneratorRuntime","mark","_callee","targetDirectory","wrap","_context","prev","next","abrupt","Promise","resolve","reject","isDirectACL","stop","highlightColor","formBorderColor","formHeadingColor","lowProfileLinkColor","formFieldNameBoxWidth","mediaModuleCanvasWidth","mediaModuleCanvasHeight","textInputSize","tabBorderRadius","textInputBackgroundColor","textInputBackgroundColorUneditable","textInputColor","textInputColorPending","defaultErrorBackgroundColor","participationDefaultBackground","basicMaxLength","styleConstants","style","checkboxStyle","checkboxInputStyle","fieldLabelStyle","formSelectStyle","textInputStyle","textInputStyleUneditable","buttonStyle","commentStyle","iconStyle","smallButtonStyle","classIconStyle","confirmPopupStyle","messageBodyStyle","pendingeditModifier","personaBarStyle","searchInputStyle","autocompleteRowStyle","signInAndUpButtonStyle","headerBannerLoginInput","signUpBackground","signInBackground","heading1Style","heading2Style","heading3Style","heading4Style","formHeadingStyle","formTextInput","formGroupStyle","formFieldLabelStyle","formFieldNameBoxStyle","multilineTextInputStyle","renderAsDivStyle","imageDivStyle","linkDivStyle","aclControlBoxContainer","aclControlBoxHeader","aclControlBoxStatus","aclControlBoxStatusRevealed","aclGroupContent","accessGroupList","accessGroupListItem","defaultsController","defaultsControllerNotice","bigButton","group","group1","group2","group3","group5","group9","group13","trustedAppAddApplicationsTable","trustedAppCancelButton","trustedAppControllerI","temporaryStatusInit","temporaryStatusEnd","headerUserMenuLink","headerUserMenuLinkHover","headerUserMenuTrigger","headerUserMenuTriggerImg","headerUserMenuButton","headerUserMenuButtonHover","headerUserMenuList","headerUserMenuListDisplay","headerUserMenuNavigationMenu","headerUserMenuNavigationMenuNotDisplayed","headerUserMenuListItem","headerUserMenuPhoto","headerBanner","headerBannerLink","headerBannerRightMenu","headerBannerLogin","allChildrenVisible","headerBannerUserMenu","headerBannerHelpMenu","headerBannerIcon","footer","primaryButton","primaryButtonHover","primaryButtonNoBorder","primaryButtonNoBorderHover","secondaryButton","secondaryButtonHover","secondaryButtonNoBorder","secondaryButtonNoBorderHover","controlStyle","dragEvent","dropEvent","restoreStyle","errorCancelButton","errorMessageBlockStyle","notepadStyle","upstreamStatus","downstreamStatus","baseStyle","headingCore","headingStyle","participantsStyle","participantsBlock","personTableTD","tabsNavElement","tabsRootElement","tabsMainElement","tabContainer","makeNewSlot","ellipsis","setStyle","ele","styleName","mime","makeDropTarget","droppedURIHandler","droppedFileHandler","dragoverListener","e","preventDefault","dataTransfer","dropEffect","dragenterListener","localStyle","savedStyle","dragleaveListener","dropListener","types","uris","text","t","getData","files","f","name","size","lastModifiedDate","toLocaleDateString","addTargetListeners","addEventListener","makeDraggable","tr","obj","fontWeight","setData","outerHTML","stopPropagation","uploadFiles","fileBase","imageBase","successHandler","reader","FileReader","onload","theFile","target","byteLength","lookup","extension","endsWith","folderName","startsWith","destURI","encodeURIComponent","_response","readAsArrayBuffer","addLoadEvent","AJARImage","ancestor","beep","clearVariableNames","emptyNode","findPos","genUuid","getAbout","getEyeFocus","getTarget","getTerm","hashColor","include","labelForXML","labelWithOntology","newVariableName","ontologyLabel","predicateLabel","predicateLabelForXML","predParentOf","RDFComparePredicateObject","RDFComparePredicateSubject","shortName","stackString","syncTableToArray","syncTableToArrayReOrdered","nextVariable","audioContext","AudioContext","webkitAudioContext","ContextClass","ctx","duration","frequency","finishedCallback","osc","createOscillator","connect","destination","start","who","charCodeAt","c","r","Math","random","v","table","things","createNewRow","foundOne","row","children","trashMe","g","newRow","removeChild","elementMap","toNT","existingRow","before","stack","lines","toPrint","line","charAt","chunks","node","nodes","childNodes","len","event","srcElement","nodeType","parentNode","tagName","aa","getAttribute","fromNT","statementTr","AJAR_statement","className","AJAR_inverse","nextSibling","linkstr","lnk","func","oldonload","myDocument","ownerDocument","DocBox","documentElement","getBoundingClientRect","box","top","element","instantly","isBottom","myWindow","elementPosY","appContext","SolidAppContext","scrollDiff","scroll","totalScroll","scrollY","scrollBy","clientHeight","innerHeight","id","setInterval","scrollAmount","times","clearInterval","src","alt","tt","image","clipboardData","p","namespaces","prefixes","pok","canUse","pp","prefixchars","term","part","findTypeURIs","inverse","lab","ip","owl","self","other","compareTerm","n","previousSibling","nodeName","cancelButton","errorMessageBlock","dom","err","backgroundColor","err2","div","errorObject","textContent","wrapDivInATR","td","addClickListenerToElement","onClickFunction","createImageDiv","imageDiv","linkIcon","iconURI","anchor","img","createLinkForURI","linkDiv","iconLink","classList","Util","cancelIconURI","checkIconURI","getStatusArea","context","statusArea","getElementsByTagName","firstElementChild","complain","clearElement","extractLogURI","fullURI","logPos","search","rulPos","substring","shortDate","noTime","month","nowZ","toISOString","formatDateTime","date","format","width","Milliseconds","FullYear","d","Month","timestamp","shortTime","setName","findName","_ok","imagesOf","sioc","iconForClass","tempSite","q","findImageFromURI","iconDir","findImage","trySetImage","iconForClassMap","explitImage","typeIcon","schemeIcon","typeURI","setImage","pref","theClass","happy","faviconOrDefault","isOrigin","parts","renderDeleteConfirmPopup","refererenceElement","prompt","deleteFunction","removePopup","parentElement","removePopupAndDoDeletion","popup","position","display","gridTemplateColumns","affirm","gridColumn","gridRow","cancel","xButton","cancelPrompt","affirmIcon","button","sureButtonElt","deleteButtonWithCheck","container","noun","createPopup","deleteButton","minusIconURI","title","handler","options","buttonColor","needsBorder","toLocaleUpperCase","onmouseover","onmouseout","opacity","continueButton","askName","_reject","form","namefield","select","gotName","trim","keyCode","_event","focus","personTR","renderAsRow","td1","td2","td3","draggable","createNameDiv","nameDiv","createLinkDiv","renderAsDiv","clickable","wrapInATR","refreshTree","root","refresh","attachmentList","deleteAttachment","update","errorBody","_xhr","theTarget","opt","modify","attachmentTable","ins","_options$uploadFolder","_options$uploadFolder2","uploadFolder","promptIcon","wf","attachmentOuter","attachmentOne","attachmentLeft","attachmentRight","paperclip","fhandler","buttonDiv","fileUploadButtonDiv","openHrefInOutlineMode","outlineManager","GotoSubject","panes","getOutliner","defaultAnnotationStore","allClassURIs","set","propertyTriage","possibleProperties","dp","op","no","nd","nu","pi","predicateIndex","ps","linkButton","removeButton","selectorPanel","possible","linkCallback","selectorPanelRefresh","style0","selected","refreshItem","already","iconDiv","connectIcon","index","twoLine","widgetForClass","nav","twoLineDefault","twoLineWidgetForClass","widget","sup","findSuperClassesNT","cl","twoLineTransaction","failed","enc","qu","twoLineTrip","addStyleSheet","href","links","querySelectorAll","isAudio","file","isImage","isVideo","kind","dcCLasses","audio","video","what","typeURIs","prefix","mediaTypeClass","input","buttonElt","click","authEndpoint","fallbackAuthEndpoint","signupEndpoint","signupWindowHeight","signupWindowWidth","key","cert","defaultConfig","Signup","config","prototype","listen","promise","eventMethod","eventListener","messageEvent","user","signup","signupUrl","height","leftPosition","screen","topPosition","windowTitle","windowUrl","location","windowSpecs","open","webid","fieldParams","_fieldParams","_defineProperty","dt","pattern","namedNode","uriPrefix","field","mostSpecificClassURI","ft","bot","bottomTypeURIs","bots","fieldFunction","fieldInQuestion","fun","dom2","STYLE_URI_PREFIX","setFieldStyle","classUri","params","sts","cssAttribute","_err","Literal","renderNameValuePair","flexDirection","lhs","rhs","createTextNode","fieldLabel","property","fieldStore","def","why","editable","basicField","formDoc","suppressEmptyUneditable","anyJS","paramStyle","inputStyle","maxLength","readOnly","match","disabled","ds","xsd","is","statement","updateMany","callback","docs","includes","pop","is1","filter","is2","ds1","ds2","authn","languageCodeURIBase","defaultPreferredLanguages","addDefaults","array","code","getPreferredLanguagesFor","_getPreferredLanguagesFor","_store$fetcher","languageCodeArray","load","lang","solid","getPreferredLanguages","_getPreferredLanguages","_callee2","me","solidLanguagePrefs","_context2","currentUser","sent","navigator","languages","longForm","language","filterByLanguage","bindings","languagePrefs","binding","languagePrefs2","reverse","slimmed","sortMe","pair","parse","AUTOCOMPLETE_LIMIT","subjectRegexp","wikidataClasses","Corporation","EducationalOrganization","GovernmentOrganization","MedicalOrganization","MusicGroup","NGO","Occupation","Project","ResearchOrganization","SportsOrganization","instituteDetailsWikidataQuery","fetcherOptionsJsonPublicData","credentials","headers","Headers","Accept","escoParameters","logo","searchByNameURI","dbpediaParameters","searchByNameQuery","endpoint","dbPediaTypeMap","AcademicInsitution","wikidataOutgoingClassMap","Enterprise","Business","CharitableOrganization","Insitute","wikidataParameters","limit","insitituteDetailsQuery","wikidataIncomingClassMap","variableNameToPredicateMap","targetClass","sealImage","subsidiary","city","state","country","homepage","lat","bindingToTerm","typ","loadFromBindings","solidSubject","predMap","results","combined","JSON","stringify","Set","values","datatype","regexp","exec","float","latitude","longitude","ESCOResultToBindings","json","_embedded","queryESCODataByName","_x2","_x3","_queryESCODataByName","queryTarget","queryURI","responseText","fixWikidataJSON","syntaxProblem","goodness","queryPublicDataByName","_x4","_x5","_x6","_x7","_queryPublicDataByName","substituteStrings","sparql","_store$fetcher2","text2","_t","_t2","_substituteStrings","template","u1","queryPublicDataSelect","_x8","_x9","_queryPublicDataSelect","_callee3","_store$fetcher3","myUrlWithParams","_context3","URL","searchParams","append","queryPublicDataConstruct","_x0","_x1","_x10","_queryPublicDataConstruct","_callee4","pubicId","_store$fetcher4","report","_context4","loadPublicDataThing","_x11","_x12","_x13","_loadPublicDataThing","_callee5","publicDataID","iDToFetch","_context5","getDbpediaDetails","getWikidataDetails","_x14","_x15","_x16","_getWikidataDetails","_callee6","subjRegexp","_context6","getWikidataDetailsOld","_x17","_x18","_x19","_getWikidataDetailsOld","_callee7","_context7","getWikidataLocation","_x20","_x21","_x22","_getWikidataLocation","_callee8","_context8","_x23","_x24","_x25","_getDbpediaDetails","_callee9","_context9","widgets","AUTOCOMPLETE_THRESHOLD","AUTOCOMPLETE_ROWS","AUTOCOMPLETE_ROWS_STRETCH","setVisible","visible","renderAutoComplete","_renderAutoComplete","acOptions","decoration","finish","gotIt","_gotIt","acceptButtonHandler","_acceptButtonHandler","cancelButtonHandler","_cancelButtonHandler","nameMatch","clearList","inputEventHHandler","_inputEventHHandler","loadBindingsAndFilterByLanguage","_loadBindingsAndFilterByLanguage","filterByName","refreshList","_refreshList","initialize","lastBindings","loadedEnough","inputEventHandlerLock","allDisplayed","lastFilter","numberOfRows","foundName","foundObject","head","cell","searchInput","_initialize","currentObject","currentName","acceptButton","editButton","_refreshList3","rowForBinding","compareBindingsByName","displayable","_iterator","_step","_compareBindingsByNam","_rowForBinding","color","nameTerm","_ref","_createForOfIteratorHelper","done","_refreshList2","_filterByName","_loadBindingsAndFilte2","queryParams","_loadBindingsAndFilte","_inputEventHHandler3","_inputEventHHandler2","_clearList","lastChild","_nameMatch","candidate","j","word","_cancelButtonHandler3","permanent","_cancelButtonHandler2","_acceptButtonHandler3","_acceptButtonHandler2","_gotIt3","disbaled","_gotIt2","_finish","objectURIBase","_complain","errorRow","padding","WEBID_NOUN","GREEN_PLUS","SEARCH_ICON","EDIT_ICON","renderAutocompleteControl","_renderAutocompleteControl","barOptions","addOneIdAndRefresh","deleteOne","autoCompleteDone","_autoCompleteDone","greenButtonHandler","_greenButtonHandler","removeDecorated","displayAutocomplete","_displayAutocomplete","searchButtonHandler","_searchButtonHandler","_droppedURIHandler","deleteButtonContainer","editing","syncEditingStatus","decoratedAutocomplete","creationArea","plus","_syncEditingStatus","_droppedURIHandler3","_droppedURIHandler2","_searchButtonHandler3","_searchButtonHandler2","_displayAutocomplete3","call","_displayAutocomplete2","_removeDecorated","_greenButtonHandler3","_greenButtonHandler2","_autoCompleteDone3","_autoCompleteDone2","manualURIEntry","idNoun","dbLookup","autocompleteField","_addOneIdAndRefresh","oldValue","oldName","deletables","insertables","_kb$updater2","the","labelProperty","equals","_deleteOne","_result","_name","_kb$updater3","e2","dataSource","autocompleteOptions","control","multiselect__container","multiselect__wrapper","multiselect__clear_btn","multiselect__options","multiselect__options_visible","multiselect__options_ul","multiselect__options_ul_li","multiselect__options_ul_li_hover","multiselect__options_ul_p_multiselect__options_no_results","multiselect__options_ul_p_multiselect__options_no_data","multiselect__options_ul_li_multiselect__options_selected","multiselect__options_ul_li_multiselect__options_selected_hover","multiselect__options_ul_li_arrow_selected","multiselect__selected","multiselect__selected_multiselect__remove_btn","multiselect__input","IconicMultiSelect","itemTemplate","noData","noResults","placeholder","tagTemplate","textField","valueField","_classCallCheck","_data","_itemTemplate","_noData","_noResults","_placeholder","_select","_selectContainer","_tagTemplate","_textField","_valueField","_createClass","init","_options","_getDataFromSettings","_getDataFromSelectTag","_renderMultiselect","_renderOptionsList","_domElements","_multiselect","querySelector","optionsContainer","optionsContainerList","find","callbackFn","some","_enableEventListenners","_initSelectedList","subscribe","_addOptionToList","option","_this","html","_processTemplate","multiselect__remove_btn","_cross","insertAdjacentHTML","_this$_multiselect$qu","removeBtn","lastElementChild","el","dataset","_handleOption","_clearSelection","_this2","_selectedOptions","remove","_removeOptionFromList","_handleClearSelectionBtn","_handlePlaceholder","_dispatchEvent","action","selection","_closeList","_filterOptions","_removeAllArrowSelected","_this3","_ref2","_ref3","_ref4","_handleArrows","_handleBackspace","_handleEnter","_this4","isOpen","valueLowerCase","hasResults","_showNoResults","_generateId","characters","charactersLength","floor","arr","hasAttribute","isValueFieldValid","isTextFieldValid","scrollIntoView","ArrowUp","Up","ArrowDown","Down","_scrollIntoView","lastSelectedOption","targetLastSelectedOption","dispatchEvent","splice","multiselect__options_selected","_toConsumableArray","_this5","hasItemsSelected","_loop2","processedTemplate","objAttr","_this$_data$index$att","attr","optionDom","_this6","_showNoData","parent","child","rectParent","rectChild","bottom","offsetHeight","scrollTop","offsetTop","condition","buttons","checkMarkCharacter","cancelCharacter","dashCharacter","refreshOpionsSubfieldinGroup","dataDoc","groupDiv","subfields","eles","optionsRender","newOne","already2","weight0","weight","Number","sortBySequence","subFieldFunction","itemChanged","change","dependingOn","cases","tests","test","appendForm","debugString","addItem","_addItem","toBeInserted","newThing","ordered","createListIfNecessary","saveListThenRefresh","renderItem","deleteThisItem","_deleteThisItem","del","holds","subField","moveThisItem","_moveThisItem","upwards","itemDone","fn","multipleUIlabel","frame","gridTemplateRows","moveUpButton","moveDownButton","shim","gridRowStart","plusIconURI","orderedNode","Node","toJS","min","tail","_eventNotUsed","Collection","_saveListThenRefresh","putBack","vals","li","asyncStuff","_asyncStuff","extra","makeDescription","booleanField","tristate","errorBlock","buildCheckboxForm","category","checkOptions","makeSelectForNestedCategory","uiFrom","subForm","opts","disambiguate","getSelectorOptions","findMembersNT","mint","multiSelect","selector","selectedOptions","possibleOptions","sortByLabel","makeSelectForChoice","multiSelectDiv","stringValue","newObject","addSubFormChoice","selectDiv","_callbackFunction","contents","suppressIfUneditable","editFormButton","ff","propertiesForClass","explicit","members","used","findClosest","cla","prop","agenda","lists","supers","formsFor","t1","candidates","newButton","promptForNew","formFunction","gotButton","insertMe","linkDone","rb","AJAR_subject","desc","rows","cols","saveChange","submit","visibility","makeSelectForClassifierOptions","sub","actual","getActual","onChange","removeValue","AJAR_mint","mintClass","thisForm","mintStatementsFun","AJAR_uri","currentURI","sel","subSelect","superSelect","doneNew","_body","multiple","nullLabel","makeSelectForOptions","makeSelectForCategory","du","subs","colorCarrier","fix","Array","holdsAll","missing","displayState","negation","boxHandler","toDelete","newState","toInsert","hmmm","getTime","inputPossibleOptions","optionsFromClassUIfrom","isEmpty","createDefaultSelectOptionText","firstSelectOptionText","createDefaultSelectOption","hidden","createOption","newSelectedOptions","addValue","existingValues","_iterator2","_step2","containsObject","_iterator3","_step3","removeAttribute","thisClass","quad","len2","len4","m","ref1","ref2","ref3","ref4","ref5","seeds","ref","transitiveClosure","rdfFactory","l","len1","len3","BlankNode","authSession","CrossOriginForbiddenError","FetchError","getSuggestedIssuers","NotEditableError","offlineTestID","SameOriginForbiddenError","UnauthorizedError","WebOperationError","_solidLogicSingleton$","profile","loadPreferences","loadProfile","_solidLogicSingleton$2","typeIndex","getScopedAppInstances","getRegistrations","loadAllTypeIndexes","getScopedAppsFromIndex","deleteTypeIndexRegistration","ensureLoggedIn","saveUser","checkUser","webId","loginStatusBox","webIdUri","ensureLoadedPreferences","_ensureLoadedPreferences","progressDisplay","preferencesFile","m2","_t4","ensureLoadedProfile","preferencesFileError","_ensureLoadedProfile","logInContext","_t5","publicProfile","findAppInstances","_findAppInstances","isPublic","items","_t6","scope","instances","instance","scopeLabel","mine","registrationControl","_registrationControl","registrationStatements","renderScopeCheckbox","scopes","tbody","_t7","_renderScopeCheckbox","statements","_registrationStatemen","registrations","reg","renderScopeHeadingRow","backgoundColor","header","textAlign","registrationList","_registrationList","headingRow","_t8","_t9","_context0","_deleteFunction","paddingLeft","delegateYield","signInOrSignUpBox","setUserCallback","signInButtonStyle","magicClassName","signInPopUpButton","events","on","webIdURI","divs","getElementsByClassName","offline","renderSignInPopup","signupButton","signupMgr","issuerPopup","issuerPopupBox","issuerPopupBoxTopMenu","issuerPopupBoxLabel","innerText","issuerPopupBoxCloseButton","loginToIssuer","issuerUri","preLoginRedirectHash","locationUrl","flagAuthorizationMetadata","localStorage","setItem","login","redirectUrl","oidcIssuer","issuerTextContainer","issuerTextInputContainer","issuerTextLabel","issuerTextInput","getItem","issuerTextGoButton","issuerButtonContainer","issuerBottonLabel","issuerInfo","issuerButton","listener","setIt","newidURI","logoutButtonHandler","oldMe","logout","logoutButton","logoutLabel","nick","signOutButton","sessionInfo","isLoggedIn","trackSession","issuer","wellKnownUri","wellKnownResult","openidConfiguration","pathname","fetch","end_session_endpoint","reload","selectWorkspace","appDetails","callbackWS","appPathSegment","say","background","figureOutBase","ws","newBaseNode","space","newBaseString","displayOptions","makeNewWorkspace","_makeNewWorkspace","newBase","newWs","newData","_t3","encodeURI","w","storages","ldp","baseField","autocomplete","col1","col2","col3","comment","cellStyle","deselectedStyle","anyValue","bgcolor","trLast","newAppInstance","gotWS","base","getUserRoles","_getUserRoles","_callee0","_yield$ensureLoadedPr","_t0","_context1","filterAvailablePanes","_filterAvailablePanes","_callee1","userRoles","_context10","pane","isMatchingAudience","audience","isMatch","audienceRole","role","AddAgentButtons","groupList","rootElement","controller","barElement","render","renderAddButton","toggleBar","renderBar","isExpanded","renderPersonButton","renderGroupButton","renderPublicButton","renderAuthenticatedAgentButton","renderBotButton","renderAppsButton","renderSimplifiedBar","from","renderNameForm","addPerson","renderCleanup","renderStatus","addGroup","addAgent","renderTemporaryStatus","_this7","addBot","_this8","eventContext","existingApps","renderAppsTable","renderAppsView","newApp","getOriginFromName","race","addNewURI","_this9","trustedApplications","session","paneRegistry","byName","trustedApplicationsElement","trustedAppController","_renderAppsTable","_this0","trustedApps","trustedOrigins","flatMap","app","appsTable","thingTR","innerTable","innerRow","innerLeftColumn","innerMiddleColumn","innerRightColumn","_addPerson","domainNameRegexp","_addGroup","_addAgent","agentUri","_addBot","_getOriginFromName","COLLOQUIAL","RECOMMENDED","EXPLANATION","AccessGroups","_store","aclMap","addAgentButton","get","renderGroups","isEditable","groupElements","comboIndex","kToCombo","renderGroup","groupRow","handleDroppedUris","groupColumns","renderGroupElements","column","groupNameColumn","ktToList","groupAgentsColumn","groupAgentsTable","combos","_slicedToArray","renderAgent","agentElement","groupDescriptionElement","personRow","deleteAgent","_deleteAgent","comboToRemove","comboPred","comboObj","save","_addNewURI","handleDroppedUri","_handleDroppedUris","all","_handleDroppedUri","secondAttempt","_this$_store","_args4","findAgent","setACLCombo","removeAgentFromCombos","ty","UpdateManager","shortNameForFolder","AccessController","statusElement","targetIsProtected","prospectiveDefaultHolder","isUsingDefaults","aclDefaultStore","mainCombo","defaultsCombo","defaultsDiffer","defaultHolderLink","renderRemoveDefaultsController","renderAddDefaultsController","renderAddAclsController","renderRemoveAclsController","useDefaultButton","removeAcls","addAclButton","addAcls","containerElement","noticeElement","removeDefaults","setTimeout","_addAcls","aclGraph","_message","_addDefaults","_removeAcls","_removeDefaults","fallbackCombo","newAClGraph","_fetch","global","preventBrowserDropEventsDone","Symbol","preventBrowserDropEvents","handleDrop","preventDrag","confirm","ACLControlBox5","loadController","_loadController","getController","_getController","getDirectory","isStorage","hasProtectedAcl","site","setGlobalWindow","aclControl","newThingUI","createContext","dataBrowserContext","thePanes","star","pre","styleTheIcons","iconArray","selectTool","icon","selectNewTool","makeNewAppInstance","selectUI","newPaneOptions","assign","folder","workspace","mintNew","newInstance","isPackage","refreshTarget","pa","mintingPanes","mintingClassMap","classMap","iconEle","noIndexHTML","create","matrixForQuery","query","vx","vy","vvalue","whenDone","matrix","corner","lastHeader","columns","setCell","cellFunction","old","rowFor","y1","dataValueNT","yDecreasing","columnNumberFor","x1","xNT","col","xDecreasing","markOldCells","clearOldCells","colsUsed","rowsUsed","set_y","set_x","newcolumns","addCellFromBindings","colNo","cameraIcon","retakeIcon","cameraCaptureControl","getImageDoc","doneCallback","imageBlob","player","canvas","mainTR","stopVideo","retakeButton","retake","shutterButton","grabCanvas","sendButton","saveBlob","displayPlayer","mediaDevices","getUserMedia","constraints","stream","srcObject","canvasWidth","canvasHeight","getContext","drawImage","toBlob","blob","reviewImage","getVideoTracks","track","_resp","cameraButton","but","restoreButton","_restoreButton","imageDoc","media","escape","v4","uuidv4","PeoplePicker","groupPickedCb","selectedgroup","onSelectGroup","bind","maxWidth","minHeight","outline","selectedGroup","Group","changeGroupButton","findAddressBook","book","chooseExistingGroupButton","margin","GroupPicker","createNewGroupButton","createNewGroup","defaultNewGroupName","GroupBuilder","bookRegistration","errr","_indexes","indexes","groupIndex","groupContainer","patchPromises","typeStatement","nameStatement","includesGroupStatement","toIns","patch","xhr","responseURL","loadGroups","groupButton","handleClickGroup","_indexes2","getWithDefault","doneBuildingCb","groupChangedCb","onGroupChanged","changeType","dropContainer","groupNameInput","setGroupName","groupNameLabel","webIdNode","personDiv","Person","handleRemove","copy","_templateObject","_taggedTemplateLiteral","doneBuildingButton","rdfClass","holdsStatement","toDel","errorMessage","_indexes3","updatePromises","namedGraph","oldNameStatements","newNameStatement","literal","_solidResponse","removeStatements","imgSrc","profileImg","nameSpan","flexGrow","defaultValue","url","dir","_publicData","publicData","messageArea","messageStore","WF","Namespace","DCT","newestFirst","messageTable","mention","announce","newMessageForm","middle","AJAR_date","sendMessage","dateStamp","Statement","sendComplete","renderMessage","turnOnInput","creatorAndDate","altKey","creator","nickAnchor","syncMessages","about","displayed","ele2","messages","stored","addMessage","deleteMessage","deletions","fresh","content","dateString","delButton","sureButton","Query","vs","vars","variable","pat","doneQuery","emptyLeaf","_emptyLeaf","leafDocument","DateFolder","rootThing","leafFileName","membershipProperty","rootFolder","leafDocumentFromDate","isoDate","path","dateFromLeafDocument","_loadPrevious","backwards","previousPeriod","_previousPeriod","found","nextDate","_previousPeriod3","younger","suitable","lastOrFirst","siblings","_folder","uncle","cousins","_lastOrFirst","_suitable","_younger","_previousPeriod2","loadPrevious","_firstLeaf","folderStore","folderFetcher","earliestSubfolder","_earliestSubfolder","leafObjects","_earliestSubfolder3","kids","_suitable2","force","_earliestSubfolder2","Fetcher","leafObject","firstLeaf","schnorr","bytesToHex","sha256","utf8Decoder","TextDecoder","utf8Encoder","TextEncoder","SEC","getBlankMsg","created","dateDeleted","maker","sig","serializeMsg","getMsgHash","msgHash","encode","verifySignature","pubKey","verify","signMsg","sign","getRootIfPreferencesExist","_store$any","_root","pubKeyUrl","privKeyUrl","getExistingPublicKey","_getExistingPublicKey","publicKeyUrl","getKeyIfExists","getExistingPrivateKey","_getExistingPrivateKey","privateKeyUrl","_getKeyIfExists","keyUrl","keyType","setAcl","_setAcl","keyDoc","aclBody","keyAclDoc","_err$response","keyContainerAclBody","keyAclBody","keyAgent","generatePrivateKey","randomPrivateKey","generatePublicKey","privateKey","getPublicKey","_getPublicKey","publicKeyDoc","getPrivateKey","_getPrivateKey","privateKeyDoc","publicKey","validPublicKey","newPublicKey","keyContainer","saveKey","lit","deleteKeyAcl","_saveKey","ChatChannel","channel","channelRoot","dateFolder","_createMessage","updateMessage","createMessage","_updateMessage","oldMsg","deleteIt","thread","chatDocument","oldMsgMaker","oldMsgMostRecentVersion","oldMsgThread","errMsg","_errMsg","_args2","mostRecentVersion","_deleteMessage","_createThread","threadRoot","insert","createThread","allVersions","_allVersions","versions","unshift","originalVersion","_originalVersion","_mostRecentVersion","isDeleted","isReplaced","isHidden","lightColorHash","ParticipationTableElement","_HTMLTableElement","_callSuper","_inherits","_wrapNativeSuper","HTMLTableElement","renderParticipants","unused1","unused2","newRowForParticipation","parp","bg","block","syncTable","parps","participations","participationObject","padDoc","pn","participation","recordParticipation","refreshable","manageParticipation","NamedNode","PAD","NotepadElement","_HTMLElement","HTMLElement","NotepadPart","_HTMLElement2","author","notepad","upstream","clearStatus","_upsteam","setPartStyle","colors","pending","chunk","indent","removePart","reloadAndSync","changeIndent","delta","current","newIndent","requestDownstreamAction","addListeners","queueProperty","queue","shiftKey","newChunk","updateStore","lastSent","inputChangeListener","newPartAfter","tr1","here","newPart","newLinesBefore","consistencyCheck","complain2","sync","manif","reloading","checkAndSync","retryTimeout","tryReload","getChunks","xmlEncode","notepadToHTML","pad","increaseLevel","decreaseLevel","rawContent","h","createTypeIndexLogic","BOOK","BOOKMARK_ICON","updatePromise","findBookmarkDocument","_findBookmarkDocument","userContext","fileTail","newBookmarkFile","bookmarkDocument","createIfNotExists","registerInTypeIndex","addBookmark","_addBookmark","bookmarkDoc","bookmark","toggleBookmark","_toggleBookmark","bookmarkButton","bookmarks","connectedStatements","renderBookmarksButton","_renderBookmarksButton","setBookmarkButtonColor","_setBookmarkButtonColor","_setBookmarkButtonCol2","bookmarked","_setBookmarkButtonCol","switchToEditor","PENCIL_ICON","THUMBS_UP_ICON","THUMBS_DOWN_ICON","REPLY_ICON","emojiMap","emojiFromActionClass","ActionClassFromEmoji","emoji","emojiFromAction","klass","em","sentimentStrip","_sentimentStrip","actions","strings","version","flat","sentimentStripLinked","_sentimentStripLinked","strip","_refresh","_refresh3","sentiments","ss","_ss","_refresh2","messageToolbar","_messageToolbar","messageRow","channelObject","editMessage","_editMessage","replyInThread","_replyInThread","closeToolbar","deleteThingThen","_deleteThingThen","sentimentButton","context1","_sentimentButton","actionClass","mutuallyExclusive","setColor","dirty","existingAction","_deleteThingThen3","_deleteThingThen2","_closeToolbar","_replyInThread3","chatOptions","showThread","_replyInThread2","_editMessage3","_editMessage2","_deleteMessage3","area","_deleteMessage2","insertMessageIntoTable","elementForImageURI","imageUri","inlineImageHeightEms","nickname","creatorAndDateHorizontal","dateBit","fontSize","marginLeft","renderMessageRow","_renderMessageRow","unsignedMessage","colorizeByAuthor","latestVersion","latestVersionCreator","msgId","replies","straightReplies","reply","signature","originalMessage","edited","sortDate","bothDates","isURI","para","_img","anc","getBgColor","toolsButton","_getBgColor","regex","authorDateOnLeft","expandImagesInline","toolsTR","tools","toolsTD","toolTR","_objectSpread","_switchToEditor","editRow","renderMessageEditor","originalRow","revertEditing","messageEditor","handleFieldInput","_handleFieldInput","_sendMessage","fromMainField","_sendComplete","_sendComplete3","_text2","oldRow","_sendComplete2","tookPicture","_tookPicture","menuButton","menuHandler","menuOptions","chatChannel","shiftEnterSendsMessage","sendIcon","desktopNotification","Notification","permission","requestPermission","_insertMessageIntoTable","selectedMessage","selectedElement","newestfirst","infiniteMessageArea","_infiniteMessageArea","_callee13","wasStore","_syncMessages","_addMessage","insertPreviousMessages","_insertPreviousMessages","removePreviousMessages","createMessageTable","_createMessageTable","renderMessageTable","_renderMessageTable","addNewChatDocumentIfNewDay","_addNewChatDocumentIfNewDay","appendCurrentMessages","_appendCurrentMessages","loadMoreWhereNeeded","_loadMoreWhereNeeded","loadInitialContent","_loadInitialContent","liveMessageTable","threadRootMessage","earliest","latest","threadTime","lock","_context13","_loadInitialContent3","_callee12","yank","fixScroll","live","selectedDocument","threadRootDocument","initialDocment","todayDocument","selectedMessageTable","selectedDate","_context12","_fixScroll","inputRow","_yank","solo","_loadInitialContent2","_loadMoreWhereNeeded3","_callee11","freeze","magicZone","scrollBottom","_context11","initial","extendBackwards","scrollHeight","extendForwards","_loadMoreWhereNeeded2","_appendCurrentMessage2","_callee10","addDownstreamChangeListener","_appendCurrentMessage","_addNewChatDocumentIf2","newChatDocument","oldChatDocument","_addNewChatDocumentIf","_renderMessageTable3","scrollBackbutton","scrollForwardButton","_extendBackwards","setScrollBackbuttonIcon","_extendForwards","setScrollForwardButtonIcon","scrollForwardButtonHandler","_scrollForwardButtonHandler","titleTR","dateCell","scrollForwardButtonCell","_scrollForwardButtonH2","extendedForwards","_scrollForwardButtonH","_setScrollForwardButt","sense","scrollForwardIcon","getScrollForwardButtonIcon","_extendForwards3","_extendForwards2","_setScrollBackbuttonI","extendedBack","scrollBackIcon","getScrollbackIcon","_extendBackwards3","_extendBackwards2","includeRemoveButton","_renderMessageTable2","_createMessageTable3","statusTR","_createMessageTable2","_removePreviousMessag","extr","_insertPreviousMessag2","extremity","todayDoc","newMessageTable","_insertPreviousMessag","_addMessage3","showDeletedMessages","_addMessage2","_syncMessages3","_syncMessages2","recordSharedPreferences","sharedPreferences","sp","recordPersonalDefaults","regs","prefs","personalDefaults","errm","renderPreferencesForm","preferencesForm","prefContainer","heading","mes","getPreferencesForClass","predicates","v1","renderTableViewPane","sourceDocument","tableClass","givenQuery","RDFS_LITERAL","rowsLookup","FORBIDDEN_COLUMNS","XSD_NUMBER_TYPES","XSD_DATE_TYPES","IMAGE_TYPES","keyVariable","subjectIdCounter","allType","typeSelectorDiv","addColumnDiv","lastQuery","mostCommonType","resultDiv","generateControlBar","tableDiv","runQuery","logicalRows","renderTableForQuery","calculateTable","generateTypeSelector","getMostCommonType","buildFilteredTable","addSelectToQuery","selectedColumns","getColumns","setVariable","addWhereToQuery","rowVar","queryType","addColumnsToQuery","formula","getVariable","optional","generateQuery","generateColumnAddDropdown","updateTable","running","htmlTable","SubjectType","allColumns","useCount","getAllColumns","getUnusedColumns","addColumn","removeColumn","getLabel","addUse","Column","checkedAnyValues","possiblyLiteral","possiblyNumber","checkValue","literalValue","getKey","getHints","hints","superClass","setPredicate","alternatives","getConstraints","filterFunction","sortKey","isImageColumn","objectToArray","optionElement","dropdown","typeSelectorChanged","selectedType","unusedColumns","aLabel","bLabel","columnIndex","getColumnForVariable","variableNT","predicateUri","getColumnForPredicate","getTypeForObject","subjectType","discoverTypes","typeObj","getSubjectProperties","properties","identifyColumnsForType","allColumnsList","sortColumns","typeUrl","sortFunction","renderColumnDeleteButton","renderTableHeader","linkTd","th","applyColumnSort","columnKey","row1","row2","row1Value","row2Value","parentTable","_htmlRow","applyColumnFiltersToRow","rowDisplayed","columnValue","htmlRow","applyColumnFilters","literalSort","literalToString","colValue","literalCompare","value1","value2","strValue1","strValue2","renderLiteralSelector","textBox","sort1","sort2","renderEnumSelector","doMultiple","searchValue","initialSelection","renderNumberSelector","minSelector","maxSelector","max","fallbackRenderTableSelector","renderTableSelector","cs","range","choices","renderTableSelectors","linkTo","linkText","linkFunction","linkToObject","renderImage","renderValue","cellFormat","span","renderTableRowInto","_downstream","_subject","orig","objects","different","originalValues","valueInList","updateRow","needUpdate","getSubjectId","_subject_id","startTime","progressMessage","original","onResult","rowKey","rowKeyId","onDone","elapsedTimeMS","sortBy","sortReverse","inferColumnsFromFormula","inferColumns","queryVar","bestCount","best","typeUri","ContainerElement","TabWidgetElement","TabElement","_HTMLElement3","tabsDefaultBackgroundColor","tabWidget","orientation","flipped","vertical","onClose","_getColors","getColors","_getColors2","selectedColor","bodyMainStyle","navElement","mainElement","tabElement","bodyContainer","corners","cornersPrepped","cornersStyle","margins","marginsPrepped","marginsStyle","paddingStyle","tabStyle","unselectedStyle","selectedStyle","shownStyle","hiddenStyle","orderedSync","startEmpty","selectedTab","selectedTab0","tab","selectedTabURI","selectedTab1","clickMe","addCancelButton","onCloseSet","existingCancelButton","extraTab","tabCancelButton","getItems","onclick","resetTabStyle","resetBodyStyle","bodyTR","bodyMain","getOrCreateContainerElement","renderMain","asSettings","renderTabSettings","renderTab","_ele$bodyTR","newBodyMain","slot","differ","newSlot","newBodyDiv","isLight","colorBlend","mix","ca","cb","res2","total","emptyProfile","getPod","getPodOwner","_getPodOwner","pod","containerTurtle","podOwner","guess","initFetchOptions","accept","getName","throttle","wait","args","timeout","previous","later","leading","remaining","clearTimeout","trailing","DEFAULT_HELP_MENU_ICON","DEFAUL_SOLID_ICON_URL","initHeader","_initHeader","userMenuList","rebuildHeader","createBanner","_createBanner","podLink","userMenu","banner","leftSideOfHeader","helpMenu","createUserMenu","createLoginSignUpButtons","helpMenuList","createHelpMenu","helpMenuItems","menuItem","menuItemType","createUserMenuItem","createUserMenuLink","createUserMenuButton","helpMenuContainer","helpMenuTrigger","helpMenuIcon","helpIcon","throttledMenuToggle","toggleMenu","timer","profileLoginButtonPre","onClick","_createUserMenu","loggedInMenuList","loggedInMenu","loggedInMenuTrigger","loggedInMenuContainer","getProfileImg","headerBannerUserMenuNotDisplayed","menuProfileItem","profileUrl","_unused","profileImage","backgroundImage","trigger","menu","expand","close","DEFAULT_SOLID_PROJECT_URL","DEFAULT_SOLID_PROJECT_NAME","initFooter","_initFooter","rebuildFooter","createControllerInfoBlock","profileLinkContainer","podLinkPre","profileLinkPre","profileLink","solidProjectLinkPre","solidProjectLink","solidProjectUrl","solidProjectName","solidProjectLinkPost","preferences","tabs","createTypes"],"sourceRoot":""}
|