solid-ui 3.1.3-0 → 3.1.3-10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/_virtual/~icons/app/solid-emblem.cjs.js +3 -0
- package/dist/_virtual/~icons/app/solid-emblem.cjs.js.map +1 -0
- package/dist/_virtual/~icons/app/solid-emblem.esm.js +11 -0
- package/dist/_virtual/~icons/app/solid-emblem.esm.js.map +1 -0
- package/dist/_virtual/~icons/lucide/chevron-down.cjs.js +1 -1
- package/dist/_virtual/~icons/lucide/chevron-down.esm.js +1 -0
- package/dist/_virtual/~icons/lucide/circle-user.cjs.js +1 -1
- package/dist/_virtual/~icons/lucide/circle-user.esm.js +1 -0
- package/dist/_virtual/~icons/lucide/log-in.cjs.js +1 -1
- package/dist/_virtual/~icons/lucide/log-in.esm.js +1 -0
- package/dist/_virtual/~icons/lucide/log-out.cjs.js +1 -1
- package/dist/_virtual/~icons/lucide/log-out.esm.js +1 -0
- package/dist/_virtual/~icons/lucide/user.cjs.js +1 -1
- package/dist/_virtual/~icons/lucide/user.esm.js +1 -0
- package/dist/_virtual/~icons/lucide/x.cjs.js +1 -1
- package/dist/_virtual/~icons/lucide/x.esm.js +1 -0
- package/dist/_virtual/~icons/svg-spinners/180-ring.cjs.js +1 -1
- package/dist/_virtual/~icons/svg-spinners/180-ring.esm.js +1 -0
- package/dist/acl/access-controller.cjs.js +1 -1
- package/dist/acl/access-controller.cjs.js.map +1 -1
- package/dist/acl/access-controller.esm.js.map +1 -1
- package/dist/acl/access-groups.cjs.js.map +1 -1
- package/dist/acl/access-groups.esm.js.map +1 -1
- package/dist/acl/acl-control.cjs.js +1 -1
- package/dist/acl/acl-control.cjs.js.map +1 -1
- package/dist/acl/acl-control.esm.js +1 -1
- package/dist/acl/acl-control.esm.js.map +1 -1
- package/dist/acl/acl.cjs.js.map +1 -1
- package/dist/acl/acl.esm.js.map +1 -1
- package/dist/acl/add-agent-buttons.cjs.js.map +1 -1
- package/dist/acl/add-agent-buttons.esm.js.map +1 -1
- package/dist/breakpoints.css +1 -0
- package/dist/breakpoints.css.d.ts +1 -0
- package/dist/chat/bookmarks.cjs.js +1 -1
- package/dist/chat/bookmarks.cjs.js.map +1 -1
- package/dist/chat/bookmarks.esm.js +1 -1
- package/dist/chat/bookmarks.esm.js.map +1 -1
- package/dist/chat/chatLogic.cjs.js.map +1 -1
- package/dist/chat/chatLogic.esm.js.map +1 -1
- package/dist/chat/dateFolder.cjs.js +1 -1
- package/dist/chat/dateFolder.cjs.js.map +1 -1
- package/dist/chat/dateFolder.esm.js +2 -2
- package/dist/chat/dateFolder.esm.js.map +1 -1
- package/dist/chat/infinite.cjs.js +1 -1
- package/dist/chat/infinite.cjs.js.map +1 -1
- package/dist/chat/infinite.esm.js +1 -1
- package/dist/chat/infinite.esm.js.map +1 -1
- package/dist/chat/keys.cjs.js +1 -1
- package/dist/chat/keys.cjs.js.map +1 -1
- package/dist/chat/keys.esm.js +1 -1
- package/dist/chat/keys.esm.js.map +1 -1
- package/dist/chat/message.cjs.js +1 -1
- package/dist/chat/message.cjs.js.map +1 -1
- package/dist/chat/message.esm.js +29 -27
- package/dist/chat/message.esm.js.map +1 -1
- package/dist/chat/messageTools.cjs.js.map +1 -1
- package/dist/chat/messageTools.esm.js.map +1 -1
- package/dist/chat/signature.cjs.js +1 -1
- package/dist/chat/signature.cjs.js.map +1 -1
- package/dist/chat/signature.esm.js +1 -1
- package/dist/chunks/DialogProvider-CrvbR_fd.js +319 -0
- package/dist/chunks/DialogProvider-CrvbR_fd.js.map +1 -0
- package/dist/chunks/account-Ma2Ipfjx.js +292 -0
- package/dist/chunks/account-Ma2Ipfjx.js.map +1 -0
- package/dist/chunks/auth-BI22fz6P.js +414 -0
- package/dist/chunks/auth-BI22fz6P.js.map +1 -0
- package/dist/chunks/avatar-DN7FzC2N.js +223 -0
- package/dist/chunks/avatar-DN7FzC2N.js.map +1 -0
- package/dist/chunks/button-DHahwxqn.js +286 -0
- package/dist/chunks/button-DHahwxqn.js.map +1 -0
- package/dist/chunks/chevron-down-ujxRg3MD.js +10 -0
- package/dist/chunks/chevron-down-ujxRg3MD.js.map +1 -0
- package/dist/chunks/chunk.7MPIABXH-CEYdxYyt.js +1495 -0
- package/dist/chunks/chunk.7MPIABXH-CEYdxYyt.js.map +1 -0
- package/dist/chunks/close-dialog-DfAh83bX.js +14 -0
- package/dist/chunks/close-dialog-DfAh83bX.js.map +1 -0
- package/dist/chunks/combobox-BWOPh9dj.js +474 -0
- package/dist/chunks/combobox-BWOPh9dj.js.map +1 -0
- package/dist/chunks/combobox-option-DB6KGb7o.js +195 -0
- package/dist/chunks/combobox-option-DB6KGb7o.js.map +1 -0
- package/dist/chunks/components-DH1slGZY.js +107 -0
- package/dist/chunks/components-DH1slGZY.js.map +1 -0
- package/dist/chunks/context-CA1Kq0FW.js +22 -0
- package/dist/chunks/context-CA1Kq0FW.js.map +1 -0
- package/dist/chunks/decorators-BqWyWiL9.js +50 -0
- package/dist/chunks/decorators-BqWyWiL9.js.map +1 -0
- package/dist/chunks/dialog-YaqTwAtR.js +325 -0
- package/dist/chunks/dialog-YaqTwAtR.js.map +1 -0
- package/dist/chunks/dialog-content-B3I3H7hj.js +173 -0
- package/dist/chunks/dialog-content-B3I3H7hj.js.map +1 -0
- package/dist/chunks/dialog-footer-BjcYeVhg.js +173 -0
- package/dist/chunks/dialog-footer-BjcYeVhg.js.map +1 -0
- package/dist/chunks/dialog-header-BynEzovK.js +173 -0
- package/dist/chunks/dialog-header-BynEzovK.js.map +1 -0
- package/dist/chunks/dialogs-root-B61LtZks.js +211 -0
- package/dist/chunks/dialogs-root-B61LtZks.js.map +1 -0
- package/dist/chunks/footer-BLSjn5ur.js +144 -0
- package/dist/chunks/footer-BLSjn5ur.js.map +1 -0
- package/dist/chunks/guard-YhbCPY-V.js +200 -0
- package/dist/chunks/guard-YhbCPY-V.js.map +1 -0
- package/dist/chunks/headerFooterHelpers-CPd5d20q.js +52 -0
- package/dist/chunks/headerFooterHelpers-CPd5d20q.js.map +1 -0
- package/dist/chunks/input-CVKu3XRI.js +312 -0
- package/dist/chunks/input-CVKu3XRI.js.map +1 -0
- package/dist/chunks/jsonld-B61R4iOL.js +4156 -0
- package/dist/chunks/jsonld-B61R4iOL.js.map +1 -0
- package/dist/chunks/lit-C4H1jI4q.js +527 -0
- package/dist/chunks/lit-C4H1jI4q.js.map +1 -0
- package/dist/chunks/login-button-76PlEs2Y.js +211 -0
- package/dist/chunks/login-button-76PlEs2Y.js.map +1 -0
- package/dist/chunks/logout-button-Dt3Utgj0.js +211 -0
- package/dist/chunks/logout-button-Dt3Utgj0.js.map +1 -0
- package/dist/chunks/menu-6ayNsxFG.js +2309 -0
- package/dist/chunks/menu-6ayNsxFG.js.map +1 -0
- package/dist/chunks/menu-item-Ckl9f1rG.js +236 -0
- package/dist/chunks/menu-item-Ckl9f1rG.js.map +1 -0
- package/dist/chunks/photo-capture-DzK6wZF4.js +624 -0
- package/dist/chunks/photo-capture-DzK6wZF4.js.map +1 -0
- package/dist/chunks/provider-BfO67dzy.js +214 -0
- package/dist/chunks/provider-BfO67dzy.js.map +1 -0
- package/dist/chunks/query-BYu9q8lA.js +33 -0
- package/dist/chunks/query-BYu9q8lA.js.map +1 -0
- package/dist/chunks/rolldown-runtime-B1bRi_D7.js +27 -0
- package/dist/chunks/select-DHFgELMJ.js +293 -0
- package/dist/chunks/select-DHFgELMJ.js.map +1 -0
- package/dist/chunks/select-option-Duk4S4Sc.js +195 -0
- package/dist/chunks/select-option-Duk4S4Sc.js.map +1 -0
- package/dist/chunks/show-dialog-eEW5yRBv.js +14 -0
- package/dist/chunks/show-dialog-eEW5yRBv.js.map +1 -0
- package/dist/chunks/signup-button-B10K6b8A.js +211 -0
- package/dist/chunks/signup-button-B10K6b8A.js.map +1 -0
- package/dist/chunks/solid-emblem-DgBJk5Th.js +185 -0
- package/dist/chunks/solid-emblem-DgBJk5Th.js.map +1 -0
- package/dist/chunks/solid-logic.esm-BrMdCG2_.js +16277 -0
- package/dist/chunks/solid-logic.esm-BrMdCG2_.js.map +1 -0
- package/dist/chunks/src-CdZhCYdF.js +16003 -0
- package/dist/chunks/src-CdZhCYdF.js.map +1 -0
- package/dist/components/account/Account.cjs.js +34 -0
- package/dist/components/account/Account.cjs.js.map +1 -0
- package/dist/components/account/Account.d.ts +20 -0
- package/dist/components/account/Account.d.ts.map +1 -0
- package/dist/components/account/Account.esm.js +272 -0
- package/dist/components/account/Account.esm.js.map +1 -0
- package/dist/components/account/Account.stories.d.ts +28 -0
- package/dist/components/account/Account.stories.d.ts.map +1 -0
- package/dist/components/account/Account.styles.cjs.js +2 -0
- package/dist/components/account/Account.styles.cjs.js.map +1 -0
- package/dist/components/account/Account.styles.esm.js +7 -0
- package/dist/components/account/Account.styles.esm.js.map +1 -0
- package/dist/components/account/index.cjs.js +2 -0
- package/dist/components/account/index.cjs.js.map +1 -0
- package/dist/components/account/index.d.ts +4 -0
- package/dist/components/account/index.d.ts.map +1 -0
- package/dist/components/account/index.esm.js +7 -0
- package/dist/components/account/index.esm.js.map +1 -0
- package/dist/components/account.js +2 -0
- package/dist/components/avatar/Avatar.cjs.js +6 -0
- package/dist/components/avatar/Avatar.cjs.js.map +1 -0
- package/dist/components/avatar/Avatar.d.ts +10 -0
- package/dist/components/avatar/Avatar.d.ts.map +1 -0
- package/dist/components/avatar/Avatar.esm.js +217 -0
- package/dist/components/avatar/Avatar.esm.js.map +1 -0
- package/dist/components/avatar/Avatar.stories.d.ts +44 -0
- package/dist/components/avatar/Avatar.stories.d.ts.map +1 -0
- package/dist/components/avatar/Avatar.styles.cjs.js +2 -0
- package/dist/components/avatar/Avatar.styles.cjs.js.map +1 -0
- package/dist/components/avatar/Avatar.styles.esm.js +7 -0
- package/dist/components/avatar/Avatar.styles.esm.js.map +1 -0
- package/dist/components/avatar/index.cjs.js +2 -0
- package/dist/components/avatar/index.cjs.js.map +1 -0
- package/dist/components/avatar/index.d.ts.map +1 -0
- package/dist/components/avatar/index.esm.js +7 -0
- package/dist/components/avatar/index.esm.js.map +1 -0
- package/dist/components/avatar.js +2 -0
- package/dist/components/button/Button.cjs.js +10 -0
- package/dist/components/button/Button.cjs.js.map +1 -0
- package/dist/components/button/Button.d.ts +15 -0
- package/dist/components/button/Button.d.ts.map +1 -0
- package/dist/components/button/Button.esm.js +279 -0
- package/dist/components/button/Button.esm.js.map +1 -0
- package/dist/components/button/Button.stories.d.ts +224 -0
- package/dist/components/button/Button.stories.d.ts.map +1 -0
- package/dist/components/button/Button.styles.cjs.js +2 -0
- package/dist/components/button/Button.styles.cjs.js.map +1 -0
- package/dist/components/button/Button.styles.esm.js +7 -0
- package/dist/components/button/Button.styles.esm.js.map +1 -0
- package/dist/components/button/index.cjs.js +2 -1
- package/dist/components/button/index.cjs.js.map +1 -0
- package/dist/components/button/index.d.ts +3 -1
- package/dist/components/button/index.d.ts.map +1 -1
- package/dist/components/button/index.esm.js +7 -3
- package/dist/components/button/index.esm.js.map +1 -0
- package/dist/components/button.js +2 -2
- package/dist/components/combobox/Combobox.cjs.js +59 -0
- package/dist/components/combobox/Combobox.cjs.js.map +1 -0
- package/dist/components/combobox/Combobox.d.ts +40 -0
- package/dist/components/combobox/Combobox.d.ts.map +1 -0
- package/dist/components/combobox/Combobox.esm.js +474 -0
- package/dist/components/combobox/Combobox.esm.js.map +1 -0
- package/dist/components/combobox/Combobox.stories.d.ts +27 -0
- package/dist/components/combobox/Combobox.stories.d.ts.map +1 -0
- package/dist/components/combobox/Combobox.styles.cjs.js +2 -0
- package/dist/components/combobox/Combobox.styles.cjs.js.map +1 -0
- package/dist/components/combobox/Combobox.styles.esm.js +7 -0
- package/dist/components/combobox/Combobox.styles.esm.js.map +1 -0
- package/dist/components/combobox/index.cjs.js +2 -1
- package/dist/components/combobox/index.cjs.js.map +1 -0
- package/dist/components/combobox/index.d.ts +3 -1
- package/dist/components/combobox/index.d.ts.map +1 -1
- package/dist/components/combobox/index.esm.js +7 -3
- package/dist/components/combobox/index.esm.js.map +1 -0
- package/dist/components/combobox-option/ComboboxOption.cjs.js +2 -0
- package/dist/components/combobox-option/ComboboxOption.cjs.js.map +1 -0
- package/dist/components/combobox-option/ComboboxOption.d.ts +6 -0
- package/dist/components/combobox-option/ComboboxOption.d.ts.map +1 -0
- package/dist/components/combobox-option/ComboboxOption.esm.js +194 -0
- package/dist/components/combobox-option/ComboboxOption.esm.js.map +1 -0
- package/dist/components/combobox-option/index.cjs.js +2 -0
- package/dist/components/combobox-option/index.cjs.js.map +1 -0
- package/dist/components/combobox-option/index.d.ts.map +1 -0
- package/dist/components/combobox-option/index.esm.js +7 -0
- package/dist/components/combobox-option/index.esm.js.map +1 -0
- package/dist/components/combobox-option.js +2 -0
- package/dist/components/combobox.js +2 -2
- package/dist/components/dialog/Dialog.cjs.js +17 -0
- package/dist/components/dialog/Dialog.cjs.js.map +1 -0
- package/dist/components/dialog/Dialog.d.ts +13 -0
- package/dist/components/dialog/Dialog.d.ts.map +1 -0
- package/dist/components/dialog/Dialog.esm.js +264 -0
- package/dist/components/dialog/Dialog.esm.js.map +1 -0
- package/dist/components/dialog/Dialog.styles.cjs.js +2 -0
- package/dist/components/dialog/Dialog.styles.cjs.js.map +1 -0
- package/dist/components/dialog/Dialog.styles.esm.js +7 -0
- package/dist/components/dialog/Dialog.styles.esm.js.map +1 -0
- package/dist/components/dialog/index.cjs.js +2 -0
- package/dist/components/dialog/index.cjs.js.map +1 -0
- package/dist/components/dialog/index.d.ts.map +1 -0
- package/dist/components/dialog/index.esm.js +7 -0
- package/dist/components/dialog/index.esm.js.map +1 -0
- package/dist/components/dialog-content/DialogContent.cjs.js +2 -0
- package/dist/components/dialog-content/DialogContent.cjs.js.map +1 -0
- package/dist/components/dialog-content/DialogContent.d.ts +5 -0
- package/dist/components/dialog-content/DialogContent.d.ts.map +1 -0
- package/dist/components/dialog-content/DialogContent.esm.js +172 -0
- package/dist/components/dialog-content/DialogContent.esm.js.map +1 -0
- package/dist/components/dialog-content/DialogContent.styles.cjs.js +2 -0
- package/dist/components/dialog-content/DialogContent.styles.cjs.js.map +1 -0
- package/dist/components/dialog-content/DialogContent.styles.esm.js +7 -0
- package/dist/components/dialog-content/DialogContent.styles.esm.js.map +1 -0
- package/dist/components/dialog-content/index.cjs.js +2 -0
- package/dist/components/dialog-content/index.cjs.js.map +1 -0
- package/dist/components/dialog-content/index.d.ts.map +1 -0
- package/dist/components/dialog-content/index.esm.js +7 -0
- package/dist/components/dialog-content/index.esm.js.map +1 -0
- package/dist/components/dialog-content.js +2 -0
- package/dist/components/dialog-footer/DialogFooter.cjs.js +2 -0
- package/dist/components/dialog-footer/DialogFooter.cjs.js.map +1 -0
- package/dist/components/dialog-footer/DialogFooter.d.ts +5 -0
- package/dist/components/dialog-footer/DialogFooter.d.ts.map +1 -0
- package/dist/components/dialog-footer/DialogFooter.esm.js +172 -0
- package/dist/components/dialog-footer/DialogFooter.esm.js.map +1 -0
- package/dist/components/dialog-footer/DialogFooter.styles.cjs.js +2 -0
- package/dist/components/dialog-footer/DialogFooter.styles.cjs.js.map +1 -0
- package/dist/components/dialog-footer/DialogFooter.styles.esm.js +7 -0
- package/dist/components/dialog-footer/DialogFooter.styles.esm.js.map +1 -0
- package/dist/components/dialog-footer/index.cjs.js +2 -0
- package/dist/components/dialog-footer/index.cjs.js.map +1 -0
- package/dist/components/dialog-footer/index.d.ts.map +1 -0
- package/dist/components/dialog-footer/index.esm.js +7 -0
- package/dist/components/dialog-footer/index.esm.js.map +1 -0
- package/dist/components/dialog-footer.js +2 -0
- package/dist/components/dialog-header/DialogHeader.cjs.js +2 -0
- package/dist/components/dialog-header/DialogHeader.cjs.js.map +1 -0
- package/dist/components/dialog-header/DialogHeader.d.ts +5 -0
- package/dist/components/dialog-header/DialogHeader.d.ts.map +1 -0
- package/dist/components/dialog-header/DialogHeader.esm.js +172 -0
- package/dist/components/dialog-header/DialogHeader.esm.js.map +1 -0
- package/dist/components/dialog-header/DialogHeader.styles.cjs.js +2 -0
- package/dist/components/dialog-header/DialogHeader.styles.cjs.js.map +1 -0
- package/dist/components/dialog-header/DialogHeader.styles.esm.js +7 -0
- package/dist/components/dialog-header/DialogHeader.styles.esm.js.map +1 -0
- package/dist/components/dialog-header/index.cjs.js +2 -0
- package/dist/components/dialog-header/index.cjs.js.map +1 -0
- package/dist/components/dialog-header/index.d.ts.map +1 -0
- package/dist/components/dialog-header/index.esm.js +7 -0
- package/dist/components/dialog-header/index.esm.js.map +1 -0
- package/dist/components/dialog-header.js +2 -0
- package/dist/components/dialog-provider/DialogProvider.cjs.js +2 -0
- package/dist/components/dialog-provider/DialogProvider.cjs.js.map +1 -0
- package/dist/components/dialog-provider/DialogProvider.d.ts +8 -0
- package/dist/components/dialog-provider/DialogProvider.d.ts.map +1 -0
- package/dist/components/dialog-provider/DialogProvider.esm.js +213 -0
- package/dist/components/dialog-provider/DialogProvider.esm.js.map +1 -0
- package/dist/components/dialog-provider/index.cjs.js +2 -0
- package/dist/components/dialog-provider/index.cjs.js.map +1 -0
- package/dist/components/dialog-provider/index.d.ts.map +1 -0
- package/dist/components/dialog-provider/index.esm.js +7 -0
- package/dist/components/dialog-provider/index.esm.js.map +1 -0
- package/dist/components/dialog-provider.js +7 -0
- package/dist/components/dialog-provider.js.map +1 -0
- package/dist/components/dialog.js +2 -0
- package/dist/components/dialogs-root/DialogsRoot.cjs.js +9 -0
- package/dist/components/dialogs-root/DialogsRoot.cjs.js.map +1 -0
- package/dist/components/dialogs-root/DialogsRoot.d.ts +7 -0
- package/dist/components/dialogs-root/DialogsRoot.d.ts.map +1 -0
- package/dist/components/dialogs-root/DialogsRoot.esm.js +210 -0
- package/dist/components/dialogs-root/DialogsRoot.esm.js.map +1 -0
- package/dist/components/dialogs-root/index.cjs.js +2 -0
- package/dist/components/dialogs-root/index.cjs.js.map +1 -0
- package/dist/components/dialogs-root/index.d.ts.map +1 -0
- package/dist/components/dialogs-root/index.esm.js +7 -0
- package/dist/components/dialogs-root/index.esm.js.map +1 -0
- package/dist/components/dialogs-root.js +2 -0
- package/dist/components/footer.js +1 -1
- package/dist/components/guard/Guard.cjs.js +6 -0
- package/dist/components/guard/Guard.cjs.js.map +1 -0
- package/dist/components/guard/Guard.d.ts +6 -0
- package/dist/components/guard/Guard.d.ts.map +1 -0
- package/dist/components/guard/Guard.esm.js +200 -0
- package/dist/components/guard/Guard.esm.js.map +1 -0
- package/dist/components/guard/Guard.stories.d.ts +33 -0
- package/dist/components/guard/Guard.stories.d.ts.map +1 -0
- package/dist/components/guard/index.cjs.js +2 -0
- package/dist/components/guard/index.cjs.js.map +1 -0
- package/dist/components/guard/index.d.ts.map +1 -0
- package/dist/components/guard/index.esm.js +7 -0
- package/dist/components/guard/index.esm.js.map +1 -0
- package/dist/components/guard.js +2 -0
- package/dist/components/index.cjs.js +1 -1
- package/dist/components/index.esm.js +20 -1
- package/dist/components/input/Input.cjs.js +17 -0
- package/dist/components/input/Input.cjs.js.map +1 -0
- package/dist/components/input/Input.d.ts +17 -0
- package/dist/components/input/Input.d.ts.map +1 -0
- package/dist/components/input/Input.esm.js +312 -0
- package/dist/components/input/Input.esm.js.map +1 -0
- package/dist/components/input/Input.stories.d.ts +43 -0
- package/dist/components/input/Input.stories.d.ts.map +1 -0
- package/dist/components/input/Input.styles.cjs.js +2 -0
- package/dist/components/input/Input.styles.cjs.js.map +1 -0
- package/dist/components/input/Input.styles.esm.js +7 -0
- package/dist/components/input/Input.styles.esm.js.map +1 -0
- package/dist/components/input/index.cjs.js +2 -0
- package/dist/components/input/index.cjs.js.map +1 -0
- package/dist/components/input/index.d.ts +4 -0
- package/dist/components/input/index.d.ts.map +1 -0
- package/dist/components/input/index.esm.js +7 -0
- package/dist/components/input/index.esm.js.map +1 -0
- package/dist/components/input.js +2 -0
- package/dist/components/login-button/LoginButton.cjs.js +10 -0
- package/dist/components/login-button/LoginButton.cjs.js.map +1 -0
- package/dist/components/login-button/LoginButton.d.ts +8 -0
- package/dist/components/login-button/LoginButton.d.ts.map +1 -0
- package/dist/components/login-button/LoginButton.esm.js +211 -0
- package/dist/components/login-button/LoginButton.esm.js.map +1 -0
- package/dist/components/login-button/LoginButton.stories.d.ts +14 -0
- package/dist/components/login-button/LoginButton.stories.d.ts.map +1 -0
- package/dist/components/login-button/index.cjs.js +2 -0
- package/dist/components/login-button/index.cjs.js.map +1 -0
- package/dist/components/login-button/index.d.ts.map +1 -0
- package/dist/components/login-button/index.esm.js +7 -0
- package/dist/components/login-button/index.esm.js.map +1 -0
- package/dist/components/login-button.js +2 -0
- package/dist/components/login-modal/LoginModal.cjs.js +30 -0
- package/dist/components/login-modal/LoginModal.cjs.js.map +1 -0
- package/dist/components/login-modal/LoginModal.d.ts +15 -0
- package/dist/components/login-modal/LoginModal.d.ts.map +1 -0
- package/dist/components/login-modal/LoginModal.esm.js +328 -0
- package/dist/components/login-modal/LoginModal.esm.js.map +1 -0
- package/dist/components/login-modal/LoginModal.stories.d.ts +14 -0
- package/dist/components/login-modal/LoginModal.stories.d.ts.map +1 -0
- package/dist/components/login-modal/LoginModal.styles.cjs.js +2 -0
- package/dist/components/login-modal/LoginModal.styles.cjs.js.map +1 -0
- package/dist/components/login-modal/LoginModal.styles.esm.js +7 -0
- package/dist/components/login-modal/LoginModal.styles.esm.js.map +1 -0
- package/dist/components/login-modal/index.cjs.js +2 -0
- package/dist/components/login-modal/index.cjs.js.map +1 -0
- package/dist/components/login-modal/index.d.ts.map +1 -0
- package/dist/components/login-modal/index.esm.js +7 -0
- package/dist/components/login-modal/index.esm.js.map +1 -0
- package/dist/components/login-modal.js +2 -0
- package/dist/components/logout-button/LogoutButton.cjs.js +10 -0
- package/dist/components/logout-button/LogoutButton.cjs.js.map +1 -0
- package/dist/components/logout-button/LogoutButton.d.ts +8 -0
- package/dist/components/logout-button/LogoutButton.d.ts.map +1 -0
- package/dist/components/logout-button/LogoutButton.esm.js +211 -0
- package/dist/components/logout-button/LogoutButton.esm.js.map +1 -0
- package/dist/components/logout-button/LogoutButton.stories.d.ts +14 -0
- package/dist/components/logout-button/LogoutButton.stories.d.ts.map +1 -0
- package/dist/components/logout-button/index.cjs.js +2 -0
- package/dist/components/logout-button/index.cjs.js.map +1 -0
- package/dist/components/logout-button/index.d.ts.map +1 -0
- package/dist/components/logout-button/index.esm.js +7 -0
- package/dist/components/logout-button/index.esm.js.map +1 -0
- package/dist/components/logout-button.js +2 -0
- package/dist/components/menu/Menu.cjs.js +14 -0
- package/dist/components/menu/Menu.cjs.js.map +1 -0
- package/dist/components/menu/Menu.d.ts +18 -0
- package/dist/components/menu/Menu.d.ts.map +1 -0
- package/dist/components/menu/Menu.esm.js +295 -0
- package/dist/components/menu/Menu.esm.js.map +1 -0
- package/dist/components/menu/Menu.stories.d.ts +8 -0
- package/dist/components/menu/Menu.stories.d.ts.map +1 -0
- package/dist/components/menu/Menu.styles.cjs.js +2 -0
- package/dist/components/menu/Menu.styles.cjs.js.map +1 -0
- package/dist/components/menu/Menu.styles.esm.js +7 -0
- package/dist/components/menu/Menu.styles.esm.js.map +1 -0
- package/dist/components/menu/index.cjs.js +2 -0
- package/dist/components/menu/index.cjs.js.map +1 -0
- package/dist/components/menu/index.d.ts.map +1 -0
- package/dist/components/menu/index.esm.js +7 -0
- package/dist/components/menu/index.esm.js.map +1 -0
- package/dist/components/menu-item/MenuItem.cjs.js +14 -0
- package/dist/components/menu-item/MenuItem.cjs.js.map +1 -0
- package/dist/components/menu-item/MenuItem.d.ts +9 -0
- package/dist/components/menu-item/MenuItem.d.ts.map +1 -0
- package/dist/components/menu-item/MenuItem.esm.js +235 -0
- package/dist/components/menu-item/MenuItem.esm.js.map +1 -0
- package/dist/components/menu-item/MenuItem.styles.cjs.js +2 -0
- package/dist/components/menu-item/MenuItem.styles.cjs.js.map +1 -0
- package/dist/components/menu-item/MenuItem.styles.esm.js +7 -0
- package/dist/components/menu-item/MenuItem.styles.esm.js.map +1 -0
- package/dist/components/menu-item/index.cjs.js +2 -0
- package/dist/components/menu-item/index.cjs.js.map +1 -0
- package/dist/components/menu-item/index.d.ts.map +1 -0
- package/dist/components/menu-item/index.esm.js +7 -0
- package/dist/components/menu-item/index.esm.js.map +1 -0
- package/dist/components/menu-item.js +2 -0
- package/dist/components/menu.js +2 -0
- package/dist/components/photo-capture.js +1 -1
- package/dist/components/provider/Provider.cjs.js +5 -0
- package/dist/components/provider/Provider.cjs.js.map +1 -0
- package/dist/components/provider/Provider.d.ts +8 -0
- package/dist/components/provider/Provider.d.ts.map +1 -0
- package/dist/components/provider/Provider.esm.js +215 -0
- package/dist/components/provider/Provider.esm.js.map +1 -0
- package/dist/components/provider/index.cjs.js +2 -0
- package/dist/components/provider/index.cjs.js.map +1 -0
- package/dist/components/provider/index.d.ts.map +1 -0
- package/dist/components/provider/index.esm.js +7 -0
- package/dist/components/provider/index.esm.js.map +1 -0
- package/dist/components/provider.js +2 -0
- package/dist/components/select/Select.cjs.js +21 -0
- package/dist/components/select/Select.cjs.js.map +1 -0
- package/dist/components/select/Select.d.ts +15 -0
- package/dist/components/select/Select.d.ts.map +1 -0
- package/dist/components/select/Select.esm.js +293 -0
- package/dist/components/select/Select.esm.js.map +1 -0
- package/dist/components/select/Select.stories.d.ts +27 -0
- package/dist/components/select/Select.stories.d.ts.map +1 -0
- package/dist/components/select/Select.styles.cjs.js +2 -0
- package/dist/components/select/Select.styles.cjs.js.map +1 -0
- package/dist/components/select/Select.styles.esm.js +7 -0
- package/dist/components/select/Select.styles.esm.js.map +1 -0
- package/dist/components/select/index.cjs.js +2 -1
- package/dist/components/select/index.cjs.js.map +1 -0
- package/dist/components/select/index.d.ts +3 -1
- package/dist/components/select/index.d.ts.map +1 -1
- package/dist/components/select/index.esm.js +7 -3
- package/dist/components/select/index.esm.js.map +1 -0
- package/dist/components/select-option/SelectOption.cjs.js +2 -0
- package/dist/components/select-option/SelectOption.cjs.js.map +1 -0
- package/dist/components/select-option/SelectOption.d.ts +6 -0
- package/dist/components/select-option/SelectOption.d.ts.map +1 -0
- package/dist/components/select-option/SelectOption.esm.js +194 -0
- package/dist/components/select-option/SelectOption.esm.js.map +1 -0
- package/dist/components/select-option/index.cjs.js +2 -0
- package/dist/components/select-option/index.cjs.js.map +1 -0
- package/dist/components/select-option/index.d.ts +4 -0
- package/dist/components/select-option/index.d.ts.map +1 -0
- package/dist/components/select-option/index.esm.js +7 -0
- package/dist/components/select-option/index.esm.js.map +1 -0
- package/dist/components/select-option.js +2 -0
- package/dist/components/select.js +2 -2
- package/dist/components/signup-button/SignupButton.cjs.js +10 -0
- package/dist/components/signup-button/SignupButton.cjs.js.map +1 -0
- package/dist/components/signup-button/SignupButton.d.ts +8 -0
- package/dist/components/signup-button/SignupButton.d.ts.map +1 -0
- package/dist/components/signup-button/SignupButton.esm.js +211 -0
- package/dist/components/signup-button/SignupButton.esm.js.map +1 -0
- package/dist/components/signup-button/SignupButton.stories.d.ts +14 -0
- package/dist/components/signup-button/SignupButton.stories.d.ts.map +1 -0
- package/dist/components/signup-button/index.cjs.js +2 -0
- package/dist/components/signup-button/index.cjs.js.map +1 -0
- package/dist/components/signup-button/index.d.ts.map +1 -0
- package/dist/components/signup-button/index.esm.js +7 -0
- package/dist/components/signup-button/index.esm.js.map +1 -0
- package/dist/components/signup-button.js +2 -0
- package/dist/components/solid-emblem/SolidEmblem.cjs.js +2 -0
- package/dist/components/solid-emblem/SolidEmblem.cjs.js.map +1 -0
- package/dist/components/solid-emblem/SolidEmblem.d.ts +6 -0
- package/dist/components/solid-emblem/SolidEmblem.d.ts.map +1 -0
- package/dist/components/solid-emblem/SolidEmblem.esm.js +178 -0
- package/dist/components/solid-emblem/SolidEmblem.esm.js.map +1 -0
- package/dist/components/solid-emblem/SolidEmblem.styles.cjs.js +2 -0
- package/dist/components/solid-emblem/SolidEmblem.styles.cjs.js.map +1 -0
- package/dist/components/solid-emblem/SolidEmblem.styles.esm.js +7 -0
- package/dist/components/solid-emblem/SolidEmblem.styles.esm.js.map +1 -0
- package/dist/components/solid-emblem/index.cjs.js +2 -0
- package/dist/components/solid-emblem/index.cjs.js.map +1 -0
- package/dist/components/solid-emblem/index.d.ts +4 -0
- package/dist/components/solid-emblem/index.d.ts.map +1 -0
- package/dist/components/solid-emblem/index.esm.js +7 -0
- package/dist/components/solid-emblem/index.esm.js.map +1 -0
- package/dist/components/solid-emblem.js +2 -0
- package/dist/components.js +25 -6
- package/dist/create/create.cjs.js.map +1 -1
- package/dist/create/create.esm.js.map +1 -1
- package/dist/create/index.cjs.js.map +1 -1
- package/dist/footer/index.cjs.js +1 -1
- package/dist/footer/index.esm.js +1 -1
- package/dist/header/index.cjs.js +1 -1
- package/dist/header/index.cjs.js.map +1 -1
- package/dist/header/index.esm.js +1 -1
- package/dist/header/index.esm.js.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +19 -2
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +9 -4
- package/dist/lib/auth/Account.cjs.js +2 -0
- package/dist/lib/auth/Account.cjs.js.map +1 -0
- package/dist/lib/auth/Account.d.ts.map +1 -0
- package/dist/lib/auth/Account.esm.js +12 -0
- package/dist/lib/auth/Account.esm.js.map +1 -0
- package/dist/lib/auth/NoopAuth.cjs.js +2 -0
- package/dist/lib/auth/NoopAuth.cjs.js.map +1 -0
- package/dist/lib/auth/NoopAuth.d.ts.map +1 -0
- package/dist/lib/auth/NoopAuth.esm.js +22 -0
- package/dist/lib/auth/NoopAuth.esm.js.map +1 -0
- package/dist/lib/auth/SolidAuth.cjs.js +2 -0
- package/dist/lib/auth/SolidAuth.cjs.js.map +1 -0
- package/dist/lib/auth/SolidAuth.d.ts +13 -0
- package/dist/lib/auth/SolidAuth.d.ts.map +1 -0
- package/dist/lib/auth/SolidAuth.esm.js +52 -0
- package/dist/lib/auth/SolidAuth.esm.js.map +1 -0
- package/dist/lib/auth/context.cjs.js.map +1 -0
- package/dist/lib/auth/context.d.ts.map +1 -0
- package/dist/lib/auth/context.esm.js +8 -0
- package/dist/lib/auth/context.esm.js.map +1 -0
- package/dist/lib/auth/index.cjs.js +1 -0
- package/dist/lib/auth/index.d.ts +8 -0
- package/dist/lib/auth/index.d.ts.map +1 -0
- package/dist/lib/auth/index.esm.js +5 -0
- package/dist/lib/components/decorators.cjs.js +2 -0
- package/dist/lib/components/decorators.cjs.js.map +1 -0
- package/dist/lib/components/decorators.d.ts +11 -0
- package/dist/lib/components/decorators.d.ts.map +1 -0
- package/dist/lib/components/decorators.esm.js +17 -0
- package/dist/lib/components/decorators.esm.js.map +1 -0
- package/dist/lib/components/ids.cjs.js.map +1 -0
- package/dist/lib/components/ids.d.ts.map +1 -0
- package/dist/lib/components/ids.esm.js +8 -0
- package/dist/lib/components/ids.esm.js.map +1 -0
- package/dist/lib/components/index.cjs.js +1 -0
- package/dist/lib/components/index.d.ts +5 -0
- package/dist/lib/components/index.d.ts.map +1 -0
- package/dist/lib/components/index.esm.js +8 -0
- package/dist/lib/components/traits/DialogTrait.cjs.js +2 -0
- package/dist/lib/components/traits/DialogTrait.cjs.js.map +1 -0
- package/dist/lib/components/traits/DialogTrait.d.ts +13 -0
- package/dist/lib/components/traits/DialogTrait.d.ts.map +1 -0
- package/dist/lib/components/traits/DialogTrait.esm.js +16 -0
- package/dist/lib/components/traits/DialogTrait.esm.js.map +1 -0
- package/dist/lib/components/traits/InputTrait.cjs.js +2 -0
- package/dist/lib/components/traits/InputTrait.cjs.js.map +1 -0
- package/dist/lib/components/traits/InputTrait.d.ts +30 -0
- package/dist/lib/components/traits/InputTrait.d.ts.map +1 -0
- package/dist/lib/components/traits/InputTrait.esm.js +45 -0
- package/dist/lib/components/traits/InputTrait.esm.js.map +1 -0
- package/dist/lib/components/traits/WebComponentTrait.d.ts +11 -0
- package/dist/lib/components/traits/WebComponentTrait.d.ts.map +1 -0
- package/dist/lib/components/traits/index.cjs.js +1 -0
- package/dist/lib/components/traits/index.d.ts +6 -0
- package/dist/lib/components/traits/index.d.ts.map +1 -0
- package/dist/lib/components/traits/index.esm.js +3 -0
- package/dist/lib/components/web-component/WebComponent.cjs.js +2 -0
- package/dist/lib/components/web-component/WebComponent.cjs.js.map +1 -0
- package/dist/lib/components/web-component/WebComponent.d.ts +21 -0
- package/dist/lib/components/web-component/WebComponent.d.ts.map +1 -0
- package/dist/lib/components/web-component/WebComponent.esm.js +53 -0
- package/dist/lib/components/web-component/WebComponent.esm.js.map +1 -0
- package/dist/lib/components/web-component/WebComponent.styles.cjs.js +2 -0
- package/dist/lib/components/web-component/WebComponent.styles.cjs.js.map +1 -0
- package/dist/lib/components/web-component/WebComponent.styles.esm.js +7 -0
- package/dist/lib/components/web-component/WebComponent.styles.esm.js.map +1 -0
- package/dist/lib/components/web-component/index.cjs.js +1 -0
- package/dist/lib/components/web-component/index.d.ts +4 -0
- package/dist/lib/components/web-component/index.d.ts.map +1 -0
- package/dist/lib/components/web-component/index.esm.js +2 -0
- package/dist/lib/dialogs/Dialog.cjs.js +2 -0
- package/dist/lib/dialogs/Dialog.cjs.js.map +1 -0
- package/dist/lib/dialogs/Dialog.d.ts +15 -0
- package/dist/lib/dialogs/Dialog.d.ts.map +1 -0
- package/dist/lib/dialogs/Dialog.esm.js +25 -0
- package/dist/lib/dialogs/Dialog.esm.js.map +1 -0
- package/dist/lib/dialogs/context.cjs.js +2 -0
- package/dist/lib/dialogs/context.cjs.js.map +1 -0
- package/dist/lib/dialogs/context.d.ts +10 -0
- package/dist/lib/dialogs/context.d.ts.map +1 -0
- package/dist/lib/dialogs/context.esm.js +8 -0
- package/dist/lib/dialogs/context.esm.js.map +1 -0
- package/dist/lib/dialogs/events/close-dialog.cjs.js +2 -0
- package/dist/lib/dialogs/events/close-dialog.cjs.js.map +1 -0
- package/dist/lib/dialogs/events/close-dialog.d.ts +14 -0
- package/dist/lib/dialogs/events/close-dialog.d.ts.map +1 -0
- package/dist/lib/dialogs/events/close-dialog.esm.js +16 -0
- package/dist/lib/dialogs/events/close-dialog.esm.js.map +1 -0
- package/dist/lib/dialogs/events/index.d.ts +3 -0
- package/dist/lib/dialogs/events/index.d.ts.map +1 -0
- package/dist/lib/dialogs/events/show-dialog.cjs.js +2 -0
- package/dist/lib/dialogs/events/show-dialog.cjs.js.map +1 -0
- package/dist/lib/dialogs/events/show-dialog.d.ts.map +1 -0
- package/dist/lib/dialogs/events/show-dialog.esm.js +15 -0
- package/dist/lib/dialogs/events/show-dialog.esm.js.map +1 -0
- package/dist/lib/dialogs/helpers.cjs.js +2 -0
- package/dist/lib/dialogs/helpers.cjs.js.map +1 -0
- package/dist/lib/dialogs/helpers.d.ts +4 -0
- package/dist/lib/dialogs/helpers.d.ts.map +1 -0
- package/dist/lib/dialogs/helpers.esm.js +11 -0
- package/dist/lib/dialogs/helpers.esm.js.map +1 -0
- package/dist/lib/dialogs/index.cjs.js +1 -0
- package/dist/lib/dialogs/index.d.ts +6 -0
- package/dist/lib/dialogs/index.d.ts.map +1 -0
- package/dist/lib/dialogs/index.esm.js +6 -0
- package/dist/lib/forms/rdfHelper.d.ts +4 -0
- package/dist/lib/forms/rdfHelper.d.ts.map +1 -0
- package/dist/lib/log.cjs.js +1 -1
- package/dist/lib/log.cjs.js.map +1 -1
- package/dist/lib/log.esm.js +1 -1
- package/dist/lib/log.esm.js.map +1 -1
- package/dist/lib/messageArea.cjs.js +1 -1
- package/dist/lib/messageArea.cjs.js.map +1 -1
- package/dist/lib/messageArea.esm.js +13 -8
- package/dist/lib/messageArea.esm.js.map +1 -1
- package/dist/lib/ns.cjs.js.map +1 -1
- package/dist/lib/pad.cjs.js +2 -2
- package/dist/lib/pad.cjs.js.map +1 -1
- package/dist/lib/pad.esm.js +12 -5
- package/dist/lib/pad.esm.js.map +1 -1
- package/dist/lib/participation.cjs.js.map +1 -1
- package/dist/lib/participation.esm.js.map +1 -1
- package/dist/lib/preferences.cjs.js +1 -1
- package/dist/lib/preferences.cjs.js.map +1 -1
- package/dist/lib/preferences.esm.js +1 -1
- package/dist/lib/preferences.esm.js.map +1 -1
- package/dist/lib/style.cjs.js +1 -1
- package/dist/lib/style.cjs.js.map +1 -1
- package/dist/lib/style.esm.js +1 -1
- package/dist/lib/style.esm.js.map +1 -1
- package/dist/lib/table.cjs.js.map +1 -1
- package/dist/lib/table.esm.js.map +1 -1
- package/dist/lib/tabs.cjs.js +1 -1
- package/dist/lib/tabs.cjs.js.map +1 -1
- package/dist/lib/tabs.esm.js +1 -1
- package/dist/lib/tabs.esm.js.map +1 -1
- package/dist/loader.js +9 -4
- package/dist/login/login.cjs.js +1 -1
- package/dist/login/login.cjs.js.map +1 -1
- package/dist/login/login.esm.js +1 -1
- package/dist/login/login.esm.js.map +1 -1
- package/dist/matrix/index.cjs.js.map +1 -1
- package/dist/matrix/matrix.cjs.js.map +1 -1
- package/dist/matrix/matrix.esm.js.map +1 -1
- package/dist/media/media-capture.cjs.js.map +1 -1
- package/dist/media/media-capture.esm.js.map +1 -1
- package/dist/signup/signup.cjs.js.map +1 -1
- package/dist/signup/signup.esm.js.map +1 -1
- package/dist/solid-ui.js +1597 -1946
- package/dist/solid-ui.min.js +1597 -1946
- package/dist/solid-ui.min.js.map +1 -1
- package/dist/storybook/auth/StorybookAuth.d.ts +1 -2
- package/dist/storybook/auth/StorybookAuth.d.ts.map +1 -1
- package/dist/storybook/components/StorybookProvider.d.ts +1 -1
- package/dist/storybook/components/StorybookProvider.d.ts.map +1 -1
- package/dist/storybook/helpers.d.ts +22 -0
- package/dist/storybook/helpers.d.ts.map +1 -0
- package/dist/storybook/index.d.ts +3 -21
- package/dist/storybook/index.d.ts.map +1 -1
- package/dist/storybook/internals.d.ts.map +1 -0
- package/dist/theme.css +1 -0
- package/dist/theme.css.d.ts +1 -0
- package/dist/utils/headerFooterHelpers.cjs.js.map +1 -1
- package/dist/utils/headerFooterHelpers.esm.js.map +1 -1
- package/dist/utils/index.cjs.js +2 -2
- package/dist/utils/index.cjs.js.map +1 -1
- package/dist/utils/index.esm.js +1 -1
- package/dist/utils/index.esm.js.map +1 -1
- package/dist/utils/keyHelpers/accessData.cjs.js +1 -1
- package/dist/utils/keyHelpers/accessData.cjs.js.map +1 -1
- package/dist/utils/keyHelpers/accessData.esm.js +1 -1
- package/dist/utils/keyHelpers/accessData.esm.js.map +1 -1
- package/dist/utils/keyHelpers/acl.cjs.js.map +1 -1
- package/dist/utils/keyHelpers/acl.esm.js.map +1 -1
- package/dist/utils/keyHelpers/otherHelpers.cjs.js.map +1 -1
- package/dist/utils/keyHelpers/otherHelpers.esm.js.map +1 -1
- package/dist/utils/label.cjs.js.map +1 -1
- package/dist/utils/label.esm.js.map +1 -1
- package/dist/v2/components/layout/footer/index.cjs.js +1 -1
- package/dist/v2/components/layout/footer/index.esm.js +1 -0
- package/dist/v2/components/media/photoCapture/PhotoCapture.cjs.js +1 -1
- package/dist/v2/components/media/photoCapture/PhotoCapture.cjs.js.map +1 -1
- package/dist/v2/components/media/photoCapture/PhotoCapture.esm.js +1 -1
- package/dist/v2/components/media/photoCapture/PhotoCapture.esm.js.map +1 -1
- package/dist/v2/components/media/photoCapture/index.cjs.js +1 -1
- package/dist/v2/components/media/photoCapture/index.esm.js +1 -0
- package/dist/widgets/buttons/iconLinks.cjs.js.map +1 -1
- package/dist/widgets/buttons/iconLinks.esm.js.map +1 -1
- package/dist/widgets/buttons.cjs.js.map +1 -1
- package/dist/widgets/buttons.esm.js.map +1 -1
- package/dist/widgets/dragAndDrop.cjs.js.map +1 -1
- package/dist/widgets/dragAndDrop.esm.js.map +1 -1
- package/dist/widgets/error.cjs.js.map +1 -1
- package/dist/widgets/error.esm.js.map +1 -1
- package/dist/widgets/forms/autocomplete/autocompleteField.cjs.js.map +1 -1
- package/dist/widgets/forms/autocomplete/autocompleteField.esm.js.map +1 -1
- package/dist/widgets/forms/autocomplete/autocompletePicker.cjs.js.map +1 -1
- package/dist/widgets/forms/autocomplete/autocompletePicker.esm.js.map +1 -1
- package/dist/widgets/forms/autocomplete/language.cjs.js +1 -1
- package/dist/widgets/forms/autocomplete/language.cjs.js.map +1 -1
- package/dist/widgets/forms/autocomplete/language.esm.js +1 -1
- package/dist/widgets/forms/autocomplete/language.esm.js.map +1 -1
- package/dist/widgets/forms/autocomplete/publicData.cjs.js +1 -1
- package/dist/widgets/forms/autocomplete/publicData.cjs.js.map +1 -1
- package/dist/widgets/forms/autocomplete/publicData.esm.js +1 -1
- package/dist/widgets/forms/autocomplete/publicData.esm.js.map +1 -1
- package/dist/widgets/forms/basic.cjs.js.map +1 -1
- package/dist/widgets/forms/basic.esm.js.map +1 -1
- package/dist/widgets/forms/fieldFunction.cjs.js.map +1 -1
- package/dist/widgets/forms/fieldParams.cjs.js.map +1 -1
- package/dist/widgets/forms/fieldParams.esm.js.map +1 -1
- package/dist/widgets/forms/formStyle.cjs.js.map +1 -1
- package/dist/widgets/forms/formStyle.esm.js.map +1 -1
- package/dist/widgets/forms.cjs.js +1 -1
- package/dist/widgets/forms.cjs.js.map +1 -1
- package/dist/widgets/forms.esm.js +2 -2
- package/dist/widgets/forms.esm.js.map +1 -1
- package/dist/widgets/index.cjs.js +1 -1
- package/dist/widgets/index.esm.js +65 -65
- package/dist/widgets/multiSelect.cjs.js +1 -1
- package/dist/widgets/multiSelect.cjs.js.map +1 -1
- package/dist/widgets/multiSelect.esm.js +1 -1
- package/dist/widgets/multiSelect.esm.js.map +1 -1
- package/dist/widgets/peoplePicker.cjs.js.map +1 -1
- package/dist/widgets/peoplePicker.esm.js.map +1 -1
- package/dist/widgets/widgetHelpers.cjs.js.map +1 -1
- package/dist/widgets/widgetHelpers.esm.js.map +1 -1
- package/package.json +29 -16
- package/dist/chunks/button-znE29yDV.js +0 -348
- package/dist/chunks/button-znE29yDV.js.map +0 -1
- package/dist/chunks/combobox-BAJFfAqV.js +0 -391
- package/dist/chunks/combobox-BAJFfAqV.js.map +0 -1
- package/dist/chunks/footer-CS8u8ycB.js +0 -144
- package/dist/chunks/footer-CS8u8ycB.js.map +0 -1
- package/dist/chunks/header-DNCcdokw.js +0 -6192
- package/dist/chunks/header-DNCcdokw.js.map +0 -1
- package/dist/chunks/headerFooterHelpers-5LYv-0Rt.js +0 -52
- package/dist/chunks/headerFooterHelpers-5LYv-0Rt.js.map +0 -1
- package/dist/chunks/iconBase-DJ0zbNSL.js +0 -31
- package/dist/chunks/iconBase-DJ0zbNSL.js.map +0 -1
- package/dist/chunks/jsonld-DZG2v1pE.js +0 -4156
- package/dist/chunks/jsonld-DZG2v1pE.js.map +0 -1
- package/dist/chunks/listboxTemplate-CLsbhnb_.js +0 -171
- package/dist/chunks/listboxTemplate-CLsbhnb_.js.map +0 -1
- package/dist/chunks/lit-CC2G_f_C.js +0 -512
- package/dist/chunks/lit-CC2G_f_C.js.map +0 -1
- package/dist/chunks/photo-capture-COoxZRW_.js +0 -624
- package/dist/chunks/photo-capture-COoxZRW_.js.map +0 -1
- package/dist/chunks/select-CGTwgBk7.js +0 -391
- package/dist/chunks/select-CGTwgBk7.js.map +0 -1
- package/dist/chunks/solid-logic.esm-7q6hmfIF.js +0 -16302
- package/dist/chunks/solid-logic.esm-7q6hmfIF.js.map +0 -1
- package/dist/chunks/src-CagI5kMT.js +0 -15962
- package/dist/chunks/src-CagI5kMT.js.map +0 -1
- package/dist/components/header/index.cjs.js +0 -1
- package/dist/components/header/index.d.ts +0 -2
- package/dist/components/header/index.d.ts.map +0 -1
- package/dist/components/header/index.esm.js +0 -3
- package/dist/components/header.js +0 -2
- package/dist/design-system/components/account/Account.cjs.js +0 -31
- package/dist/design-system/components/account/Account.cjs.js.map +0 -1
- package/dist/design-system/components/account/Account.d.ts +0 -13
- package/dist/design-system/components/account/Account.d.ts.map +0 -1
- package/dist/design-system/components/account/Account.esm.js +0 -257
- package/dist/design-system/components/account/Account.esm.js.map +0 -1
- package/dist/design-system/components/account/Account.stories.d.ts +0 -33
- package/dist/design-system/components/account/Account.stories.d.ts.map +0 -1
- package/dist/design-system/components/account/Account.styles.cjs.js +0 -2
- package/dist/design-system/components/account/Account.styles.cjs.js.map +0 -1
- package/dist/design-system/components/account/Account.styles.esm.js +0 -7
- package/dist/design-system/components/account/Account.styles.esm.js.map +0 -1
- package/dist/design-system/components/account/index.cjs.js +0 -1
- package/dist/design-system/components/account/index.d.ts +0 -4
- package/dist/design-system/components/account/index.d.ts.map +0 -1
- package/dist/design-system/components/account/index.esm.js +0 -1
- package/dist/design-system/components/button/Button.cjs.js +0 -10
- package/dist/design-system/components/button/Button.cjs.js.map +0 -1
- package/dist/design-system/components/button/Button.d.ts +0 -14
- package/dist/design-system/components/button/Button.d.ts.map +0 -1
- package/dist/design-system/components/button/Button.esm.js +0 -267
- package/dist/design-system/components/button/Button.esm.js.map +0 -1
- package/dist/design-system/components/button/Button.stories.d.ts +0 -224
- package/dist/design-system/components/button/Button.stories.d.ts.map +0 -1
- package/dist/design-system/components/button/Button.styles.cjs.js +0 -2
- package/dist/design-system/components/button/Button.styles.cjs.js.map +0 -1
- package/dist/design-system/components/button/Button.styles.esm.js +0 -7
- package/dist/design-system/components/button/Button.styles.esm.js.map +0 -1
- package/dist/design-system/components/button/index.cjs.js +0 -1
- package/dist/design-system/components/button/index.d.ts +0 -4
- package/dist/design-system/components/button/index.d.ts.map +0 -1
- package/dist/design-system/components/button/index.esm.js +0 -1
- package/dist/design-system/components/combobox/Combobox.cjs.js +0 -18
- package/dist/design-system/components/combobox/Combobox.cjs.js.map +0 -1
- package/dist/design-system/components/combobox/Combobox.d.ts +0 -19
- package/dist/design-system/components/combobox/Combobox.d.ts.map +0 -1
- package/dist/design-system/components/combobox/Combobox.esm.js +0 -303
- package/dist/design-system/components/combobox/Combobox.esm.js.map +0 -1
- package/dist/design-system/components/combobox/Combobox.stories.d.ts +0 -27
- package/dist/design-system/components/combobox/Combobox.stories.d.ts.map +0 -1
- package/dist/design-system/components/combobox/Combobox.styles.cjs.js +0 -2
- package/dist/design-system/components/combobox/Combobox.styles.cjs.js.map +0 -1
- package/dist/design-system/components/combobox/Combobox.styles.esm.js +0 -7
- package/dist/design-system/components/combobox/Combobox.styles.esm.js.map +0 -1
- package/dist/design-system/components/combobox/index.cjs.js +0 -1
- package/dist/design-system/components/combobox/index.d.ts +0 -4
- package/dist/design-system/components/combobox/index.d.ts.map +0 -1
- package/dist/design-system/components/combobox/index.esm.js +0 -1
- package/dist/design-system/components/combobox-option/ComboboxOption.cjs.js +0 -2
- package/dist/design-system/components/combobox-option/ComboboxOption.cjs.js.map +0 -1
- package/dist/design-system/components/combobox-option/ComboboxOption.d.ts +0 -6
- package/dist/design-system/components/combobox-option/ComboboxOption.d.ts.map +0 -1
- package/dist/design-system/components/combobox-option/ComboboxOption.esm.js +0 -193
- package/dist/design-system/components/combobox-option/ComboboxOption.esm.js.map +0 -1
- package/dist/design-system/components/combobox-option/index.cjs.js +0 -1
- package/dist/design-system/components/combobox-option/index.d.ts.map +0 -1
- package/dist/design-system/components/combobox-option/index.esm.js +0 -1
- package/dist/design-system/components/dialog/Dialog.cjs.js +0 -17
- package/dist/design-system/components/dialog/Dialog.cjs.js.map +0 -1
- package/dist/design-system/components/dialog/Dialog.d.ts +0 -11
- package/dist/design-system/components/dialog/Dialog.d.ts.map +0 -1
- package/dist/design-system/components/dialog/Dialog.esm.js +0 -264
- package/dist/design-system/components/dialog/Dialog.esm.js.map +0 -1
- package/dist/design-system/components/dialog/Dialog.styles.cjs.js +0 -2
- package/dist/design-system/components/dialog/Dialog.styles.cjs.js.map +0 -1
- package/dist/design-system/components/dialog/Dialog.styles.esm.js +0 -7
- package/dist/design-system/components/dialog/Dialog.styles.esm.js.map +0 -1
- package/dist/design-system/components/dialog/index.cjs.js +0 -1
- package/dist/design-system/components/dialog/index.d.ts.map +0 -1
- package/dist/design-system/components/dialog/index.esm.js +0 -1
- package/dist/design-system/components/dialog-content/DialogContent.cjs.js +0 -2
- package/dist/design-system/components/dialog-content/DialogContent.cjs.js.map +0 -1
- package/dist/design-system/components/dialog-content/DialogContent.d.ts +0 -5
- package/dist/design-system/components/dialog-content/DialogContent.d.ts.map +0 -1
- package/dist/design-system/components/dialog-content/DialogContent.esm.js +0 -171
- package/dist/design-system/components/dialog-content/DialogContent.esm.js.map +0 -1
- package/dist/design-system/components/dialog-content/DialogContent.styles.cjs.js +0 -2
- package/dist/design-system/components/dialog-content/DialogContent.styles.cjs.js.map +0 -1
- package/dist/design-system/components/dialog-content/DialogContent.styles.esm.js +0 -7
- package/dist/design-system/components/dialog-content/DialogContent.styles.esm.js.map +0 -1
- package/dist/design-system/components/dialog-content/index.cjs.js +0 -1
- package/dist/design-system/components/dialog-content/index.d.ts.map +0 -1
- package/dist/design-system/components/dialog-content/index.esm.js +0 -1
- package/dist/design-system/components/dialog-footer/DialogFooter.cjs.js +0 -2
- package/dist/design-system/components/dialog-footer/DialogFooter.cjs.js.map +0 -1
- package/dist/design-system/components/dialog-footer/DialogFooter.d.ts +0 -5
- package/dist/design-system/components/dialog-footer/DialogFooter.d.ts.map +0 -1
- package/dist/design-system/components/dialog-footer/DialogFooter.esm.js +0 -171
- package/dist/design-system/components/dialog-footer/DialogFooter.esm.js.map +0 -1
- package/dist/design-system/components/dialog-footer/DialogFooter.styles.cjs.js +0 -2
- package/dist/design-system/components/dialog-footer/DialogFooter.styles.cjs.js.map +0 -1
- package/dist/design-system/components/dialog-footer/DialogFooter.styles.esm.js +0 -7
- package/dist/design-system/components/dialog-footer/DialogFooter.styles.esm.js.map +0 -1
- package/dist/design-system/components/dialog-footer/index.cjs.js +0 -1
- package/dist/design-system/components/dialog-footer/index.d.ts.map +0 -1
- package/dist/design-system/components/dialog-footer/index.esm.js +0 -1
- package/dist/design-system/components/dialog-header/DialogHeader.cjs.js +0 -2
- package/dist/design-system/components/dialog-header/DialogHeader.cjs.js.map +0 -1
- package/dist/design-system/components/dialog-header/DialogHeader.d.ts +0 -5
- package/dist/design-system/components/dialog-header/DialogHeader.d.ts.map +0 -1
- package/dist/design-system/components/dialog-header/DialogHeader.esm.js +0 -171
- package/dist/design-system/components/dialog-header/DialogHeader.esm.js.map +0 -1
- package/dist/design-system/components/dialog-header/DialogHeader.styles.cjs.js +0 -2
- package/dist/design-system/components/dialog-header/DialogHeader.styles.cjs.js.map +0 -1
- package/dist/design-system/components/dialog-header/DialogHeader.styles.esm.js +0 -7
- package/dist/design-system/components/dialog-header/DialogHeader.styles.esm.js.map +0 -1
- package/dist/design-system/components/dialog-header/index.cjs.js +0 -1
- package/dist/design-system/components/dialog-header/index.d.ts.map +0 -1
- package/dist/design-system/components/dialog-header/index.esm.js +0 -1
- package/dist/design-system/components/dialog-provider/DialogProvider.cjs.js +0 -2
- package/dist/design-system/components/dialog-provider/DialogProvider.cjs.js.map +0 -1
- package/dist/design-system/components/dialog-provider/DialogProvider.d.ts +0 -8
- package/dist/design-system/components/dialog-provider/DialogProvider.d.ts.map +0 -1
- package/dist/design-system/components/dialog-provider/DialogProvider.esm.js +0 -211
- package/dist/design-system/components/dialog-provider/DialogProvider.esm.js.map +0 -1
- package/dist/design-system/components/dialog-provider/index.d.ts.map +0 -1
- package/dist/design-system/components/dialogs-root/DialogsRoot.cjs.js +0 -9
- package/dist/design-system/components/dialogs-root/DialogsRoot.cjs.js.map +0 -1
- package/dist/design-system/components/dialogs-root/DialogsRoot.d.ts +0 -7
- package/dist/design-system/components/dialogs-root/DialogsRoot.d.ts.map +0 -1
- package/dist/design-system/components/dialogs-root/DialogsRoot.esm.js +0 -207
- package/dist/design-system/components/dialogs-root/DialogsRoot.esm.js.map +0 -1
- package/dist/design-system/components/dialogs-root/index.cjs.js +0 -1
- package/dist/design-system/components/dialogs-root/index.d.ts.map +0 -1
- package/dist/design-system/components/dialogs-root/index.esm.js +0 -1
- package/dist/design-system/components/login-modal/LoginModal.cjs.js +0 -30
- package/dist/design-system/components/login-modal/LoginModal.cjs.js.map +0 -1
- package/dist/design-system/components/login-modal/LoginModal.d.ts +0 -15
- package/dist/design-system/components/login-modal/LoginModal.d.ts.map +0 -1
- package/dist/design-system/components/login-modal/LoginModal.esm.js +0 -326
- package/dist/design-system/components/login-modal/LoginModal.esm.js.map +0 -1
- package/dist/design-system/components/login-modal/LoginModal.stories.d.ts +0 -14
- package/dist/design-system/components/login-modal/LoginModal.stories.d.ts.map +0 -1
- package/dist/design-system/components/login-modal/LoginModal.styles.cjs.js +0 -2
- package/dist/design-system/components/login-modal/LoginModal.styles.cjs.js.map +0 -1
- package/dist/design-system/components/login-modal/LoginModal.styles.esm.js +0 -7
- package/dist/design-system/components/login-modal/LoginModal.styles.esm.js.map +0 -1
- package/dist/design-system/components/login-modal/index.cjs.js +0 -1
- package/dist/design-system/components/login-modal/index.d.ts.map +0 -1
- package/dist/design-system/components/login-modal/index.esm.js +0 -1
- package/dist/design-system/components/menu/Menu.cjs.js +0 -9
- package/dist/design-system/components/menu/Menu.cjs.js.map +0 -1
- package/dist/design-system/components/menu/Menu.d.ts +0 -13
- package/dist/design-system/components/menu/Menu.d.ts.map +0 -1
- package/dist/design-system/components/menu/Menu.esm.js +0 -250
- package/dist/design-system/components/menu/Menu.esm.js.map +0 -1
- package/dist/design-system/components/menu/Menu.stories.d.ts +0 -8
- package/dist/design-system/components/menu/Menu.stories.d.ts.map +0 -1
- package/dist/design-system/components/menu/index.cjs.js +0 -1
- package/dist/design-system/components/menu/index.d.ts.map +0 -1
- package/dist/design-system/components/menu/index.esm.js +0 -1
- package/dist/design-system/components/menu-item/MenuItem.cjs.js +0 -14
- package/dist/design-system/components/menu-item/MenuItem.cjs.js.map +0 -1
- package/dist/design-system/components/menu-item/MenuItem.d.ts +0 -7
- package/dist/design-system/components/menu-item/MenuItem.d.ts.map +0 -1
- package/dist/design-system/components/menu-item/MenuItem.esm.js +0 -218
- package/dist/design-system/components/menu-item/MenuItem.esm.js.map +0 -1
- package/dist/design-system/components/menu-item/MenuItem.styles.cjs.js +0 -2
- package/dist/design-system/components/menu-item/MenuItem.styles.cjs.js.map +0 -1
- package/dist/design-system/components/menu-item/MenuItem.styles.esm.js +0 -7
- package/dist/design-system/components/menu-item/MenuItem.styles.esm.js.map +0 -1
- package/dist/design-system/components/menu-item/index.cjs.js +0 -1
- package/dist/design-system/components/menu-item/index.d.ts.map +0 -1
- package/dist/design-system/components/menu-item/index.esm.js +0 -1
- package/dist/design-system/components/menu-items/MenuItems.cjs.js +0 -6
- package/dist/design-system/components/menu-items/MenuItems.cjs.js.map +0 -1
- package/dist/design-system/components/menu-items/MenuItems.d.ts +0 -8
- package/dist/design-system/components/menu-items/MenuItems.d.ts.map +0 -1
- package/dist/design-system/components/menu-items/MenuItems.esm.js +0 -217
- package/dist/design-system/components/menu-items/MenuItems.esm.js.map +0 -1
- package/dist/design-system/components/menu-items/MenuItems.styles.cjs.js +0 -2
- package/dist/design-system/components/menu-items/MenuItems.styles.cjs.js.map +0 -1
- package/dist/design-system/components/menu-items/MenuItems.styles.esm.js +0 -7
- package/dist/design-system/components/menu-items/MenuItems.styles.esm.js.map +0 -1
- package/dist/design-system/components/menu-items/index.cjs.js +0 -1
- package/dist/design-system/components/menu-items/index.d.ts +0 -4
- package/dist/design-system/components/menu-items/index.d.ts.map +0 -1
- package/dist/design-system/components/menu-items/index.esm.js +0 -1
- package/dist/design-system/components/provider/Provider.cjs.js +0 -5
- package/dist/design-system/components/provider/Provider.cjs.js.map +0 -1
- package/dist/design-system/components/provider/Provider.d.ts +0 -8
- package/dist/design-system/components/provider/Provider.d.ts.map +0 -1
- package/dist/design-system/components/provider/Provider.esm.js +0 -213
- package/dist/design-system/components/provider/Provider.esm.js.map +0 -1
- package/dist/design-system/components/provider/index.cjs.js +0 -1
- package/dist/design-system/components/provider/index.d.ts.map +0 -1
- package/dist/design-system/components/provider/index.esm.js +0 -1
- package/dist/design-system/lib/auth/SolidAuth.cjs.js +0 -2
- package/dist/design-system/lib/auth/SolidAuth.cjs.js.map +0 -1
- package/dist/design-system/lib/auth/SolidAuth.d.ts +0 -13
- package/dist/design-system/lib/auth/SolidAuth.d.ts.map +0 -1
- package/dist/design-system/lib/auth/SolidAuth.esm.js +0 -50
- package/dist/design-system/lib/auth/SolidAuth.esm.js.map +0 -1
- package/dist/design-system/lib/dialogs/Dialog.cjs.js +0 -2
- package/dist/design-system/lib/dialogs/Dialog.cjs.js.map +0 -1
- package/dist/design-system/lib/dialogs/Dialog.d.ts +0 -10
- package/dist/design-system/lib/dialogs/Dialog.d.ts.map +0 -1
- package/dist/design-system/lib/dialogs/Dialog.esm.js +0 -38
- package/dist/design-system/lib/dialogs/Dialog.esm.js.map +0 -1
- package/dist/design-system/lib/dialogs/context.cjs.js +0 -2
- package/dist/design-system/lib/dialogs/context.cjs.js.map +0 -1
- package/dist/design-system/lib/dialogs/context.d.ts +0 -7
- package/dist/design-system/lib/dialogs/context.d.ts.map +0 -1
- package/dist/design-system/lib/dialogs/context.esm.js +0 -7
- package/dist/design-system/lib/dialogs/context.esm.js.map +0 -1
- package/dist/design-system/lib/dialogs/events/close-dialog.cjs.js +0 -2
- package/dist/design-system/lib/dialogs/events/close-dialog.cjs.js.map +0 -1
- package/dist/design-system/lib/dialogs/events/close-dialog.d.ts +0 -13
- package/dist/design-system/lib/dialogs/events/close-dialog.d.ts.map +0 -1
- package/dist/design-system/lib/dialogs/events/close-dialog.esm.js +0 -36
- package/dist/design-system/lib/dialogs/events/close-dialog.esm.js.map +0 -1
- package/dist/design-system/lib/dialogs/events/show-dialog.cjs.js +0 -2
- package/dist/design-system/lib/dialogs/events/show-dialog.cjs.js.map +0 -1
- package/dist/design-system/lib/dialogs/events/show-dialog.d.ts.map +0 -1
- package/dist/design-system/lib/dialogs/events/show-dialog.esm.js +0 -36
- package/dist/design-system/lib/dialogs/events/show-dialog.esm.js.map +0 -1
- package/dist/design-system/lib/dialogs/index.cjs.js +0 -2
- package/dist/design-system/lib/dialogs/index.cjs.js.map +0 -1
- package/dist/design-system/lib/dialogs/index.d.ts +0 -3
- package/dist/design-system/lib/dialogs/index.d.ts.map +0 -1
- package/dist/design-system/lib/dialogs/index.esm.js +0 -11
- package/dist/design-system/lib/dialogs/index.esm.js.map +0 -1
- package/dist/design-system/lib/ids.cjs.js.map +0 -1
- package/dist/design-system/lib/ids.d.ts.map +0 -1
- package/dist/design-system/lib/ids.esm.js +0 -8
- package/dist/design-system/lib/ids.esm.js.map +0 -1
- package/dist/design-system/lib/internals.d.ts.map +0 -1
- package/dist/design-system/lib/menus/context.cjs.js +0 -2
- package/dist/design-system/lib/menus/context.cjs.js.map +0 -1
- package/dist/design-system/lib/menus/context.d.ts +0 -7
- package/dist/design-system/lib/menus/context.d.ts.map +0 -1
- package/dist/design-system/lib/menus/context.esm.js +0 -7
- package/dist/design-system/lib/menus/context.esm.js.map +0 -1
- package/dist/design-system/polyfills/css-anchor-positioning.d.ts +0 -8
- package/dist/design-system/polyfills/css-anchor-positioning.d.ts.map +0 -1
- package/dist/lib/features.cjs.js +0 -2
- package/dist/lib/features.cjs.js.map +0 -1
- package/dist/lib/features.d.ts +0 -8
- package/dist/lib/features.d.ts.map +0 -1
- package/dist/lib/features.esm.js +0 -6
- package/dist/lib/features.esm.js.map +0 -1
- package/dist/primitives/components/avatar/Avatar.cjs.js +0 -6
- package/dist/primitives/components/avatar/Avatar.cjs.js.map +0 -1
- package/dist/primitives/components/avatar/Avatar.d.ts +0 -10
- package/dist/primitives/components/avatar/Avatar.d.ts.map +0 -1
- package/dist/primitives/components/avatar/Avatar.esm.js +0 -216
- package/dist/primitives/components/avatar/Avatar.esm.js.map +0 -1
- package/dist/primitives/components/avatar/Avatar.stories.d.ts +0 -44
- package/dist/primitives/components/avatar/Avatar.stories.d.ts.map +0 -1
- package/dist/primitives/components/avatar/Avatar.styles.cjs.js +0 -2
- package/dist/primitives/components/avatar/Avatar.styles.cjs.js.map +0 -1
- package/dist/primitives/components/avatar/Avatar.styles.esm.js +0 -7
- package/dist/primitives/components/avatar/Avatar.styles.esm.js.map +0 -1
- package/dist/primitives/components/avatar/index.cjs.js +0 -1
- package/dist/primitives/components/avatar/index.d.ts.map +0 -1
- package/dist/primitives/components/avatar/index.esm.js +0 -1
- package/dist/primitives/components/guard/Guard.d.ts +0 -6
- package/dist/primitives/components/guard/Guard.d.ts.map +0 -1
- package/dist/primitives/components/guard/Guard.stories.d.ts +0 -33
- package/dist/primitives/components/guard/Guard.stories.d.ts.map +0 -1
- package/dist/primitives/components/guard/index.d.ts.map +0 -1
- package/dist/primitives/components/login-button/LoginButton.cjs.js +0 -10
- package/dist/primitives/components/login-button/LoginButton.cjs.js.map +0 -1
- package/dist/primitives/components/login-button/LoginButton.d.ts +0 -8
- package/dist/primitives/components/login-button/LoginButton.d.ts.map +0 -1
- package/dist/primitives/components/login-button/LoginButton.esm.js +0 -221
- package/dist/primitives/components/login-button/LoginButton.esm.js.map +0 -1
- package/dist/primitives/components/login-button/LoginButton.stories.d.ts +0 -14
- package/dist/primitives/components/login-button/LoginButton.stories.d.ts.map +0 -1
- package/dist/primitives/components/login-button/LoginButton.styles.cjs.js +0 -2
- package/dist/primitives/components/login-button/LoginButton.styles.cjs.js.map +0 -1
- package/dist/primitives/components/login-button/LoginButton.styles.esm.js +0 -7
- package/dist/primitives/components/login-button/LoginButton.styles.esm.js.map +0 -1
- package/dist/primitives/components/login-button/index.cjs.js +0 -1
- package/dist/primitives/components/login-button/index.d.ts.map +0 -1
- package/dist/primitives/components/login-button/index.esm.js +0 -1
- package/dist/primitives/components/logout-button/LogoutButton.cjs.js +0 -10
- package/dist/primitives/components/logout-button/LogoutButton.cjs.js.map +0 -1
- package/dist/primitives/components/logout-button/LogoutButton.d.ts +0 -8
- package/dist/primitives/components/logout-button/LogoutButton.d.ts.map +0 -1
- package/dist/primitives/components/logout-button/LogoutButton.esm.js +0 -221
- package/dist/primitives/components/logout-button/LogoutButton.esm.js.map +0 -1
- package/dist/primitives/components/logout-button/LogoutButton.stories.d.ts +0 -14
- package/dist/primitives/components/logout-button/LogoutButton.stories.d.ts.map +0 -1
- package/dist/primitives/components/logout-button/LogoutButton.styles.cjs.js +0 -2
- package/dist/primitives/components/logout-button/LogoutButton.styles.cjs.js.map +0 -1
- package/dist/primitives/components/logout-button/LogoutButton.styles.esm.js +0 -7
- package/dist/primitives/components/logout-button/LogoutButton.styles.esm.js.map +0 -1
- package/dist/primitives/components/logout-button/index.cjs.js +0 -1
- package/dist/primitives/components/logout-button/index.d.ts.map +0 -1
- package/dist/primitives/components/logout-button/index.esm.js +0 -1
- package/dist/primitives/components/signup-button/SignupButton.cjs.js +0 -10
- package/dist/primitives/components/signup-button/SignupButton.cjs.js.map +0 -1
- package/dist/primitives/components/signup-button/SignupButton.d.ts +0 -8
- package/dist/primitives/components/signup-button/SignupButton.d.ts.map +0 -1
- package/dist/primitives/components/signup-button/SignupButton.esm.js +0 -221
- package/dist/primitives/components/signup-button/SignupButton.esm.js.map +0 -1
- package/dist/primitives/components/signup-button/SignupButton.stories.d.ts +0 -14
- package/dist/primitives/components/signup-button/SignupButton.stories.d.ts.map +0 -1
- package/dist/primitives/components/signup-button/SignupButton.styles.cjs.js +0 -2
- package/dist/primitives/components/signup-button/SignupButton.styles.cjs.js.map +0 -1
- package/dist/primitives/components/signup-button/SignupButton.styles.esm.js +0 -7
- package/dist/primitives/components/signup-button/SignupButton.styles.esm.js.map +0 -1
- package/dist/primitives/components/signup-button/index.cjs.js +0 -1
- package/dist/primitives/components/signup-button/index.d.ts.map +0 -1
- package/dist/primitives/components/signup-button/index.esm.js +0 -1
- package/dist/primitives/lib/WebComponent.cjs.js +0 -2
- package/dist/primitives/lib/WebComponent.cjs.js.map +0 -1
- package/dist/primitives/lib/WebComponent.d.ts +0 -13
- package/dist/primitives/lib/WebComponent.d.ts.map +0 -1
- package/dist/primitives/lib/WebComponent.esm.js +0 -61
- package/dist/primitives/lib/WebComponent.esm.js.map +0 -1
- package/dist/primitives/lib/auth/Account.cjs.js +0 -2
- package/dist/primitives/lib/auth/Account.cjs.js.map +0 -1
- package/dist/primitives/lib/auth/Account.d.ts.map +0 -1
- package/dist/primitives/lib/auth/Account.esm.js +0 -32
- package/dist/primitives/lib/auth/Account.esm.js.map +0 -1
- package/dist/primitives/lib/auth/NoopAuth.cjs.js +0 -2
- package/dist/primitives/lib/auth/NoopAuth.cjs.js.map +0 -1
- package/dist/primitives/lib/auth/NoopAuth.d.ts.map +0 -1
- package/dist/primitives/lib/auth/NoopAuth.esm.js +0 -22
- package/dist/primitives/lib/auth/NoopAuth.esm.js.map +0 -1
- package/dist/primitives/lib/auth/context.cjs.js.map +0 -1
- package/dist/primitives/lib/auth/context.d.ts.map +0 -1
- package/dist/primitives/lib/auth/context.esm.js +0 -8
- package/dist/primitives/lib/auth/context.esm.js.map +0 -1
- package/dist/primitives/lib/customElement.cjs.js +0 -2
- package/dist/primitives/lib/customElement.cjs.js.map +0 -1
- package/dist/primitives/lib/customElement.d.ts +0 -11
- package/dist/primitives/lib/customElement.d.ts.map +0 -1
- package/dist/primitives/lib/customElement.esm.js +0 -17
- package/dist/primitives/lib/customElement.esm.js.map +0 -1
- package/dist/primitives/styles/common.styles.cjs.js +0 -2
- package/dist/primitives/styles/common.styles.cjs.js.map +0 -1
- package/dist/primitives/styles/common.styles.esm.js +0 -7
- package/dist/primitives/styles/common.styles.esm.js.map +0 -1
- package/dist/solid-ui.js.map +0 -1
- package/dist/styles.css +0 -1
- package/dist/v2/components/actions/button/Button.cjs.js +0 -245
- package/dist/v2/components/actions/button/Button.cjs.js.map +0 -1
- package/dist/v2/components/actions/button/Button.d.ts +0 -97
- package/dist/v2/components/actions/button/Button.d.ts.map +0 -1
- package/dist/v2/components/actions/button/Button.esm.js +0 -347
- package/dist/v2/components/actions/button/Button.esm.js.map +0 -1
- package/dist/v2/components/actions/button/Button.test.d.ts +0 -1
- package/dist/v2/components/actions/button/Button.test.d.ts.map +0 -1
- package/dist/v2/components/actions/button/index.cjs.js +0 -2
- package/dist/v2/components/actions/button/index.cjs.js.map +0 -1
- package/dist/v2/components/actions/button/index.d.ts +0 -8
- package/dist/v2/components/actions/button/index.d.ts.map +0 -1
- package/dist/v2/components/actions/button/index.esm.js +0 -7
- package/dist/v2/components/actions/button/index.esm.js.map +0 -1
- package/dist/v2/components/auth/loginButton/LoginButton.cjs.js +0 -414
- package/dist/v2/components/auth/loginButton/LoginButton.cjs.js.map +0 -1
- package/dist/v2/components/auth/loginButton/LoginButton.esm.js +0 -519
- package/dist/v2/components/auth/loginButton/LoginButton.esm.js.map +0 -1
- package/dist/v2/components/auth/loginButton/downArrow.cjs.js +0 -9
- package/dist/v2/components/auth/loginButton/downArrow.cjs.js.map +0 -1
- package/dist/v2/components/auth/loginButton/downArrow.esm.js +0 -14
- package/dist/v2/components/auth/loginButton/downArrow.esm.js.map +0 -1
- package/dist/v2/components/auth/loginButton/index.cjs.js +0 -2
- package/dist/v2/components/auth/loginButton/index.cjs.js.map +0 -1
- package/dist/v2/components/auth/loginButton/index.esm.js +0 -7
- package/dist/v2/components/auth/loginButton/index.esm.js.map +0 -1
- package/dist/v2/components/auth/signupButton/SignupButton.cjs.js +0 -59
- package/dist/v2/components/auth/signupButton/SignupButton.cjs.js.map +0 -1
- package/dist/v2/components/auth/signupButton/SignupButton.esm.js +0 -98
- package/dist/v2/components/auth/signupButton/SignupButton.esm.js.map +0 -1
- package/dist/v2/components/auth/signupButton/index.cjs.js +0 -2
- package/dist/v2/components/auth/signupButton/index.cjs.js.map +0 -1
- package/dist/v2/components/auth/signupButton/index.esm.js +0 -7
- package/dist/v2/components/auth/signupButton/index.esm.js.map +0 -1
- package/dist/v2/components/forms/combobox/Combobox.cjs.js +0 -194
- package/dist/v2/components/forms/combobox/Combobox.cjs.js.map +0 -1
- package/dist/v2/components/forms/combobox/Combobox.d.ts +0 -82
- package/dist/v2/components/forms/combobox/Combobox.d.ts.map +0 -1
- package/dist/v2/components/forms/combobox/Combobox.esm.js +0 -394
- package/dist/v2/components/forms/combobox/Combobox.esm.js.map +0 -1
- package/dist/v2/components/forms/combobox/Combobox.test.d.ts +0 -1
- package/dist/v2/components/forms/combobox/Combobox.test.d.ts.map +0 -1
- package/dist/v2/components/forms/combobox/comboboxTypes.d.ts +0 -6
- package/dist/v2/components/forms/combobox/comboboxTypes.d.ts.map +0 -1
- package/dist/v2/components/forms/combobox/index.cjs.js +0 -2
- package/dist/v2/components/forms/combobox/index.cjs.js.map +0 -1
- package/dist/v2/components/forms/combobox/index.d.ts +0 -3
- package/dist/v2/components/forms/combobox/index.d.ts.map +0 -1
- package/dist/v2/components/forms/combobox/index.esm.js +0 -7
- package/dist/v2/components/forms/combobox/index.esm.js.map +0 -1
- package/dist/v2/components/forms/select/Select.cjs.js +0 -225
- package/dist/v2/components/forms/select/Select.cjs.js.map +0 -1
- package/dist/v2/components/forms/select/Select.d.ts +0 -68
- package/dist/v2/components/forms/select/Select.d.ts.map +0 -1
- package/dist/v2/components/forms/select/Select.esm.js +0 -394
- package/dist/v2/components/forms/select/Select.esm.js.map +0 -1
- package/dist/v2/components/forms/select/Select.test.d.ts +0 -1
- package/dist/v2/components/forms/select/Select.test.d.ts.map +0 -1
- package/dist/v2/components/forms/select/index.cjs.js +0 -2
- package/dist/v2/components/forms/select/index.cjs.js.map +0 -1
- package/dist/v2/components/forms/select/index.d.ts +0 -3
- package/dist/v2/components/forms/select/index.d.ts.map +0 -1
- package/dist/v2/components/forms/select/index.esm.js +0 -7
- package/dist/v2/components/forms/select/index.esm.js.map +0 -1
- package/dist/v2/components/forms/shared/downArrow.cjs.js +0 -9
- package/dist/v2/components/forms/shared/downArrow.cjs.js.map +0 -1
- package/dist/v2/components/forms/shared/downArrow.d.ts +0 -2
- package/dist/v2/components/forms/shared/downArrow.d.ts.map +0 -1
- package/dist/v2/components/forms/shared/downArrow.esm.js +0 -14
- package/dist/v2/components/forms/shared/downArrow.esm.js.map +0 -1
- package/dist/v2/components/forms/shared/keyboard.cjs.js +0 -2
- package/dist/v2/components/forms/shared/keyboard.cjs.js.map +0 -1
- package/dist/v2/components/forms/shared/keyboard.d.ts +0 -7
- package/dist/v2/components/forms/shared/keyboard.d.ts.map +0 -1
- package/dist/v2/components/forms/shared/keyboard.esm.js +0 -34
- package/dist/v2/components/forms/shared/keyboard.esm.js.map +0 -1
- package/dist/v2/components/forms/shared/listboxStyles.cjs.js +0 -95
- package/dist/v2/components/forms/shared/listboxStyles.cjs.js.map +0 -1
- package/dist/v2/components/forms/shared/listboxStyles.d.ts +0 -2
- package/dist/v2/components/forms/shared/listboxStyles.d.ts.map +0 -1
- package/dist/v2/components/forms/shared/listboxStyles.esm.js +0 -100
- package/dist/v2/components/forms/shared/listboxStyles.esm.js.map +0 -1
- package/dist/v2/components/forms/shared/listboxTemplate.cjs.js +0 -24
- package/dist/v2/components/forms/shared/listboxTemplate.cjs.js.map +0 -1
- package/dist/v2/components/forms/shared/listboxTemplate.d.ts +0 -11
- package/dist/v2/components/forms/shared/listboxTemplate.d.ts.map +0 -1
- package/dist/v2/components/forms/shared/listboxTemplate.esm.js +0 -37
- package/dist/v2/components/forms/shared/listboxTemplate.esm.js.map +0 -1
- package/dist/v2/components/forms/shared/optionTypes.d.ts +0 -6
- package/dist/v2/components/forms/shared/optionTypes.d.ts.map +0 -1
- package/dist/v2/components/layout/header/Header.cjs.js +0 -625
- package/dist/v2/components/layout/header/Header.cjs.js.map +0 -1
- package/dist/v2/components/layout/header/Header.d.ts +0 -160
- package/dist/v2/components/layout/header/Header.d.ts.map +0 -1
- package/dist/v2/components/layout/header/Header.esm.js +0 -873
- package/dist/v2/components/layout/header/Header.esm.js.map +0 -1
- package/dist/v2/components/layout/header/header.test.d.ts +0 -1
- package/dist/v2/components/layout/header/header.test.d.ts.map +0 -1
- package/dist/v2/components/layout/header/index.cjs.js +0 -2
- package/dist/v2/components/layout/header/index.cjs.js.map +0 -1
- package/dist/v2/components/layout/header/index.d.ts +0 -4
- package/dist/v2/components/layout/header/index.d.ts.map +0 -1
- package/dist/v2/components/layout/header/index.esm.js +0 -7
- package/dist/v2/components/layout/header/index.esm.js.map +0 -1
- /package/dist/{primitives/components → components}/avatar/index.d.ts +0 -0
- /package/dist/{design-system/components → components}/combobox-option/index.d.ts +0 -0
- /package/dist/{design-system/components → components}/dialog/index.d.ts +0 -0
- /package/dist/{design-system/components → components}/dialog-content/index.d.ts +0 -0
- /package/dist/{design-system/components → components}/dialog-footer/index.d.ts +0 -0
- /package/dist/{design-system/components → components}/dialog-header/index.d.ts +0 -0
- /package/dist/{design-system/components → components}/dialog-provider/index.d.ts +0 -0
- /package/dist/{design-system/components → components}/dialogs-root/index.d.ts +0 -0
- /package/dist/{primitives/components → components}/guard/index.d.ts +0 -0
- /package/dist/{primitives/components → components}/login-button/index.d.ts +0 -0
- /package/dist/{design-system/components → components}/login-modal/index.d.ts +0 -0
- /package/dist/{primitives/components → components}/logout-button/index.d.ts +0 -0
- /package/dist/{design-system/components → components}/menu/index.d.ts +0 -0
- /package/dist/{design-system/components → components}/menu-item/index.d.ts +0 -0
- /package/dist/{design-system/components → components}/provider/index.d.ts +0 -0
- /package/dist/{primitives/components → components}/signup-button/index.d.ts +0 -0
- /package/dist/{primitives/lib → lib}/auth/Account.d.ts +0 -0
- /package/dist/{primitives/lib → lib}/auth/NoopAuth.d.ts +0 -0
- /package/dist/{primitives/lib → lib}/auth/context.cjs.js +0 -0
- /package/dist/{primitives/lib → lib}/auth/context.d.ts +0 -0
- /package/dist/{design-system/lib → lib/components}/ids.cjs.js +0 -0
- /package/dist/{design-system/lib → lib/components}/ids.d.ts +0 -0
- /package/dist/{design-system/lib → lib}/dialogs/events/show-dialog.d.ts +0 -0
- /package/dist/{design-system/lib → storybook}/internals.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-agent-buttons.esm.js","names":[],"sources":["../../src/acl/add-agent-buttons.ts"],"sourcesContent":["/**\n * Contains the [[AddAgentButtons]] class\n * @packageDocumentation\n */\n\nimport { NamedNode, Store } from 'rdflib'\nimport { AuthenticationContext } from 'solid-logic'\nimport * as debug from '../lib/debug'\nimport { icons } from '../lib/iconBase'\nimport { ensureLoadedProfile } from '../login/login'\nimport ns from '../lib/ns'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { style } from '../lib/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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"add-agent-buttons.esm.js","names":[],"sources":["../../src/acl/add-agent-buttons.ts"],"sourcesContent":["/**\n * Contains the [[AddAgentButtons]] class\n * @packageDocumentation\n */\n\nimport { NamedNode, Store } from 'rdflib'\nimport { AuthenticationContext } from 'solid-logic'\nimport * as debug from '../lib/debug'\nimport { icons } from '../lib/iconBase'\nimport { ensureLoadedProfile } from '../login/login'\nimport ns from '../lib/ns'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { style } from '../lib/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"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@custom-media --solid-ui-mobile (max-width: 48rem); /* 768px */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../_virtual/_rolldown/runtime.cjs.js"),t=require("../lib/ns.cjs.js"),n=require("../utils/label.cjs.js"),r=require("../utils/index.cjs.js"),i=require("../lib/debug.cjs.js"),a=require("../lib/style.cjs.js"),o=require("../lib/iconBase.cjs.js"),s=require("../widgets/index.cjs.js"),c=require("../login/login.cjs.js"),l=require("../media/index.cjs.js"),u=require("../lib/pad.cjs.js");let d=require("rdflib");d=e.__toESM(d);let f=require("solid-logic");var p={icons:o.icons,ns:t.default,media:l.media,pad:u.pad_exports,style:a.style,utils:r.utils_exports,widgets:s.widgets_exports},m=d.Namespace(`http://www.w3.org/2002/01/bookmark#`),h=`noun_45961.svg`,g=n.label,_=window.document||null;function v(e,t){return new Promise(function(n,r){f.store.updater.update(e,t,function(e,t,i){t?n():r(Error(i))})})}async function y(e){let t=m(`Bookmark`);if(await c.findAppInstances(e,t,!0),e.instances&&e.instances.length>0)e.bookmarkDocument=e.instances[0],e.instances.length>1&&i.warn(`More than one bookmark file! `+e.instances);else if(e.publicProfile){let n=d.sym(e.publicProfile.dir().uri+`bookmarks.ttl`);try{i.log(`Creating new bookmark file `+n),await f.store.fetcher.createIfNotExists(n)}catch(t){return i.warn(`Can't make fresh bookmark file:`+t),e}await f.createTypeIndexLogic.registerInTypeIndex(n,e.index,t),e.bookmarkDocument=n}else i.warn(`You seem to have no bookmark file, nor even a profile file!`);return e}async function b(e,n){let r=``,a=f.authn.currentUser();if(!a)throw Error(`Must be logged on to add Bookmark`);r=g(f.store.any(n,t.default.foaf(`maker`)))+`: `+f.store.anyValue(n,t.default.sioc(`content`)).slice(0,80);let o=e.bookmarkDocument,s=p.widgets.newThing(o,r),c=[d.st(o,p.ns.dct(`references`),s,o),d.st(s,p.ns.rdf(`type`),m(`Bookmark`),o),d.st(s,p.ns.dct(`created`),new Date,o),d.st(s,m(`recalls`),n,o),d.st(s,p.ns.foaf(`maker`),a,o),d.st(s,p.ns.dct(`title`),r,o)];try{await v([],c)}catch(e){let t=`Making bookmark: `+e;return i.warn(t),null}return s}async function x(e,t,n){await f.store.fetcher.load(e.bookmarkDocument);let r=f.store.each(null,m(`recalls`),t,e.bookmarkDocument);if(r.length){if(!confirm(`Delete bookmark on this?`+r.length))return;for(let e=0;e<r.length;e++)try{await v(f.store.connectedStatements(r[e]),[]),n.style.backgroundColor=`white`,i.log(`Bookmark deleted: `+r[e])}catch(e){i.error(`Cant delete bookmark:`+e),i.warn(`Cannot delete bookmark:`+e)}}else{let r=await b(e,t);n.style.backgroundColor=`yellow`,i.log(`Bookmark added: `+r)}}async function S(e,t){async function n(t){await f.store.fetcher.load(e.bookmarkDocument);let n=f.store.any(null,m(`recalls`),t.target,e.bookmarkDocument);t.style=p.style.buttonStyle,n&&(t.style.backgroundColor=`yellow`)}let r;if(e.bookmarkDocument)return r=p.widgets.button(_,p.icons.iconBase+h,g(m(`Bookmark`)),()=>{x(e,t,r)}),r.target=t,await n(r),r}exports.findBookmarkDocument=y,exports.renderBookmarksButton=S;
|
|
1
|
+
const e=require("../_virtual/_rolldown/runtime.cjs.js"),t=require("../lib/ns.cjs.js"),n=require("../utils/label.cjs.js"),r=require("../utils/index.cjs.js"),i=require("../lib/debug.cjs.js"),a=require("../lib/style.cjs.js"),o=require("../lib/iconBase.cjs.js"),s=require("../widgets/index.cjs.js"),c=require("../login/login.cjs.js"),l=require("../media/index.cjs.js"),u=require("../lib/pad.cjs.js");let d=require("rdflib");d=e.__toESM(d);let f=require("solid-logic");var p={icons:o.icons,ns:t.default,media:l.media,pad:u.pad_exports,style:a.style,utils:r.utils_exports,widgets:s.widgets_exports},m=d.Namespace(`http://www.w3.org/2002/01/bookmark#`),h=`noun_45961.svg`,g=n.label,_=window.document||null;function v(e,t){return new Promise(function(n,r){f.store.updater.update(e,t,function(e,t,i){t?n():r(Error(i))})})}async function y(e){let t=m(`Bookmark`);if(await c.findAppInstances(e,t,!0),e.instances&&e.instances.length>0)e.bookmarkDocument=e.instances[0],e.instances.length>1&&i.warn(`More than one bookmark file! `+e.instances);else if(e.publicProfile){let n=d.sym(e.publicProfile.dir().uri+`bookmarks.ttl`);try{i.log(`Creating new bookmark file `+n),await f.store.fetcher.createIfNotExists(n)}catch(t){return i.warn(`Can't make fresh bookmark file:`+t),e}await f.createTypeIndexLogic.registerInTypeIndex(n,e.index,t),e.bookmarkDocument=n}else i.warn(`You seem to have no bookmark file, nor even a profile file!`);return e}async function b(e,n){let r=``,a=f.authn.currentUser();if(!a)throw Error(`Must be logged on to add Bookmark`);r=g(f.store.any(n,t.default.foaf(`maker`)))+`: `+f.store.anyValue(n,t.default.sioc(`content`)).slice(0,80);let o=e.bookmarkDocument,s=p.widgets.newThing(o,r),c=[d.st(o,p.ns.dct(`references`),s,o),d.st(s,p.ns.rdf(`type`),m(`Bookmark`),o),d.st(s,p.ns.dct(`created`),new Date,o),d.st(s,m(`recalls`),n,o),d.st(s,p.ns.foaf(`maker`),a,o),d.st(s,p.ns.dct(`title`),r,o)];try{await v([],c)}catch(e){let t=`Making bookmark: `+e;return i.warn(t),null}return s}async function x(e,t,n){await f.store.fetcher.load(e.bookmarkDocument);let r=f.store.each(null,m(`recalls`),t,e.bookmarkDocument);if(r.length){if(!confirm(`Delete bookmark on this?`+r.length))return;for(let e=0;e<r.length;e++)try{await v(f.store.connectedStatements(r[e]),[]),n.style.backgroundColor=`white`,i.log(`Bookmark deleted: `+r[e])}catch(e){i.error(`Cant delete bookmark:`+e),i.warn(`Cannot delete bookmark:`+e)}}else{let r=await b(e,t);n.style.backgroundColor=`yellow`,i.log(`Bookmark added: `+r)}}async function S(e,t){async function n(t){await f.store.fetcher.load(e.bookmarkDocument);let n=f.store.any(null,m(`recalls`),t.target,e.bookmarkDocument);t.style=p.style.buttonStyle,n&&(t.style.backgroundColor=`yellow`)}let r;if(e.bookmarkDocument)return r=p.widgets.button(_,p.icons.iconBase+h,g(m(`Bookmark`)),()=>{x(e,t,r)}),r.target=t,await n(r),r}exports.findBookmarkDocument=y,exports.renderBookmarksButton=S,exports.toggleBookmark=x;
|
|
2
2
|
//# sourceMappingURL=bookmarks.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bookmarks.cjs.js","names":["$rdf","findAppInstances","store","createTypeIndexLogic","authn","ns"],"sources":["../../src/chat/bookmarks.js"],"sourcesContent":["/**\n * Functions related to chat and bookmarks\n * @packageDocumentation\n */\n\nimport * as debug from '../lib/debug'\nimport { icons } from '../lib/iconBase'\nimport { media } from '../media/index'\nimport ns from '../lib/ns'\nimport * as pad from '../lib/pad'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport { style } from '../lib/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"],"mappings":"gdAiBA,IAAM,EAAK,CAAE,MAAA,EAAA,MAAO,GAAA,EAAA,QAAI,MAAA,EAAA,MAAO,IAAA,EAAA,YAAK,MAAA,EAAA,MAAO,MAAA,EAAA,cAAO,QAAA,EAAA,eAAQ,EAEpD,EAAOA,EAAK,UAAU,qCAAqC,EAC3D,EAAgB,iBAEhB,EAAA,EAAA,MACA,EAAM,OAAO,UAAY,KAG/B,SAAS,EAAe,EAAK,EAAK,CAChC,OAAO,IAAI,QAAQ,SAAU,EAAS,EAAQ,CAC5C,EAAA,MAAM,QAAQ,OAAO,EAAK,EAAK,SAAU,EAAK,EAAI,EAAW,CACtD,EAGH,EAAQ,EAFR,EAAW,MAAM,CAAS,CAAC,CAI/B,CAAC,CACH,CAAC,CACH,CAMA,eAAsB,EAAsB,EAAa,CACvD,IAAM,EAAW,EAAK,UAAU,EAMhC,GAFA,MAAMC,EAAAA,iBAAiB,EAAa,EAAU,EAAQ,EAElD,EAAY,WAAa,EAAY,UAAU,OAAS,EAC1D,EAAY,iBAAmB,EAAY,UAAU,GACjD,EAAY,UAAU,OAAS,GACjC,EAAA,KAAW,gCAAkC,EAAY,SAAS,OAIpE,GAAI,EAAY,cAAe,CAE7B,IAAM,EAAkBD,EAAK,IAC3B,EAAY,cAAc,IAAI,
|
|
1
|
+
{"version":3,"file":"bookmarks.cjs.js","names":["$rdf","findAppInstances","store","createTypeIndexLogic","authn","ns"],"sources":["../../src/chat/bookmarks.js"],"sourcesContent":["/**\n * Functions related to chat and bookmarks\n * @packageDocumentation\n */\n\nimport * as debug from '../lib/debug'\nimport { icons } from '../lib/iconBase'\nimport { media } from '../media/index'\nimport ns from '../lib/ns'\nimport * as pad from '../lib/pad'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport { style } from '../lib/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"],"mappings":"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"}
|
|
@@ -87,6 +87,6 @@ async function T(e, t) {
|
|
|
87
87
|
}), r.target = t, await n(r), r;
|
|
88
88
|
}
|
|
89
89
|
//#endregion
|
|
90
|
-
export { S as findBookmarkDocument, T as renderBookmarksButton };
|
|
90
|
+
export { S as findBookmarkDocument, T as renderBookmarksButton, w as toggleBookmark };
|
|
91
91
|
|
|
92
92
|
//# sourceMappingURL=bookmarks.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bookmarks.esm.js","names":["utils.label","ns"],"sources":["../../src/chat/bookmarks.js"],"sourcesContent":["/**\n * Functions related to chat and bookmarks\n * @packageDocumentation\n */\n\nimport * as debug from '../lib/debug'\nimport { icons } from '../lib/iconBase'\nimport { media } from '../media/index'\nimport ns from '../lib/ns'\nimport * as pad from '../lib/pad'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport { style } from '../lib/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"],"mappings":";;;;;;;;;;;;;AAiBA,IAAM,IAAK;CAAE;CAAO,IAAA;CAAI;CAAO,KAAA;CAAK;CAAO,OAAA;CAAO,SAAA;AAAQ,GAEpD,IAAO,EAAK,UAAU,qCAAqC,GAC3D,IAAgB,kBAEhB,IAAQA,GACR,IAAM,OAAO,YAAY;AAG/B,SAAS,EAAe,GAAK,GAAK;CAChC,OAAO,IAAI,QAAQ,SAAU,GAAS,GAAQ;EAC5C,EAAM,QAAQ,OAAO,GAAK,GAAK,SAAU,GAAK,GAAI,GAAW;GAC3D,AAAK,IAGH,EAAQ,IAFR,EAAW,MAAM,CAAS,CAAC;EAI/B,CAAC;CACH,CAAC;AACH;AAMA,eAAsB,EAAsB,GAAa;CACvD,IAAM,IAAW,EAAK,UAAU;CAMhC,IAFA,MAAM,EAAiB,GAAa,GAAU,EAAQ,GAElD,EAAY,aAAa,EAAY,UAAU,SAAS,GAE1D,AADA,EAAY,mBAAmB,EAAY,UAAU,IACjD,EAAY,UAAU,SAAS,KACjC,EAAW,kCAAkC,EAAY,SAAS;MAIpE,IAAI,EAAY,eAAe;EAE7B,IAAM,IAAkB,EAAK,IAC3B,EAAY,cAAc,IAAI,
|
|
1
|
+
{"version":3,"file":"bookmarks.esm.js","names":["utils.label","ns"],"sources":["../../src/chat/bookmarks.js"],"sourcesContent":["/**\n * Functions related to chat and bookmarks\n * @packageDocumentation\n */\n\nimport * as debug from '../lib/debug'\nimport { icons } from '../lib/iconBase'\nimport { media } from '../media/index'\nimport ns from '../lib/ns'\nimport * as pad from '../lib/pad'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport { style } from '../lib/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"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatLogic.cjs.js","names":["DateFolder","$rdf","store","authn","getBlankMsg","ns","signMsg","getPrivateKey","SEC"],"sources":["../../src/chat/chatLogic.js"],"sourcesContent":["/**\n * Contains the [[ChatChannel]] class and logic for Solid Chat\n * @packageDocumentation\n */\n\nimport * as debug from '../lib/debug'\nimport { DateFolder } from './dateFolder'\nimport { store, authn } from 'solid-logic'\nimport ns from '../lib/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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chatLogic.cjs.js","names":["DateFolder","$rdf","store","authn","getBlankMsg","ns","signMsg","getPrivateKey","SEC"],"sources":["../../src/chat/chatLogic.js"],"sourcesContent":["/**\n * Contains the [[ChatChannel]] class and logic for Solid Chat\n * @packageDocumentation\n */\n\nimport * as debug from '../lib/debug'\nimport { DateFolder } from './dateFolder'\nimport { store, authn } from 'solid-logic'\nimport ns from '../lib/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"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatLogic.esm.js","names":["ns"],"sources":["../../src/chat/chatLogic.js"],"sourcesContent":["/**\n * Contains the [[ChatChannel]] class and logic for Solid Chat\n * @packageDocumentation\n */\n\nimport * as debug from '../lib/debug'\nimport { DateFolder } from './dateFolder'\nimport { store, authn } from 'solid-logic'\nimport ns from '../lib/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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chatLogic.esm.js","names":["ns"],"sources":["../../src/chat/chatLogic.js"],"sourcesContent":["/**\n * Contains the [[ChatChannel]] class and logic for Solid Chat\n * @packageDocumentation\n */\n\nimport * as debug from '../lib/debug'\nimport { DateFolder } from './dateFolder'\nimport { store, authn } from 'solid-logic'\nimport ns from '../lib/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"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../_virtual/_rolldown/runtime.cjs.js"),t=require("../lib/ns.cjs.js"),n=require("../lib/debug.cjs.js");let r=require("rdflib");r=e.__toESM(r);let i=require("solid-logic");async function a(e){return await i.store.fetcher.load(e),!(i.store.statementsMatching(null,t.default.dct(`created`),null,e).length>0)}var o=class{constructor(e,n,r){this.root=e,this.rootFolder=e.dir(),this.leafFileName=n||`index.ttl`,this.membershipProperty=r||t.default.wf(`leafObject`)}leafDocumentFromDate(e){let t=e.toISOString().split(`T`)[0].replace(/-/g,`/`);return t=this.root.dir().uri+t+`/`+this.leafFileName,i.store.sym(t)}dateFromLeafDocument(e){let t=this.rootFolder.uri.length,n=e.uri.slice(t,t+10).replace(/\//g,`-`);return new Date(n)}async loadPrevious(e,r){async function o(e,a){function s(t){return!(r?t.uri>=e.uri:t.uri<=e.uri)}function c(e){let t=e.uri.slice(0,-1).split(`/`).slice(-1)[0];return!!`0123456789`.includes(t[0])}function l(e){return e=e.filter(c),e.sort(),r||e.reverse(),e.pop()}let u=e.dir();try{await i.store.fetcher.load(u);let e=i.store.each(u,t.default.ldp(`contains`));e=e.filter(s);let n=l(e);if(n)return n}catch(e){if(e.response&&e.response.status&&e.response.status===404)n.log(`Error 404 for chat parent file `+u);else throw n.log(`*** Error NON 404 for chat parent file `+u),Error(`*** ${e.message} for chat folder ${u}`)}if(a===0)return null;let d=await o(u,a-1);return d?(await i.store.fetcher.load(d),l(i.store.each(d,t.default.ldp(`contains`)))):null}let s=this.leafDocumentFromDate(e).dir();for(;;){let t=await o(s,3);if(t){let n=i.store.sym(t.uri+this.leafFileName),r=this.dateFromLeafDocument(n);if(await a(n))e=r,s=this.leafDocumentFromDate(e).dir();else return r}else return null}}async firstLeaf(e){let i=r.graph(),a=new r.Fetcher(i);async function o(n){function r(e){let t=e.uri.slice(0,-1).split(`/`).slice(-1)[0];return!!`0123456789`.includes(t[0])}delete a.requested[n.uri],await a.load(n,{force:!0});let o=i.each(n,t.default.ldp(`contains`));if(o=o.filter(r),o.length===0)throw Error(` @@@ No children to parent2 `+n);return o.sort(),e&&o.reverse(),o[0]}let s=await o(await o(await o(this.root.dir()))),c=r.sym(s.uri+`chat.ttl`);await a.load(c);let l=i.each(this.root,this.membershipProperty,null,c);if(l.length===0){let e=` INCONSISTENCY -- no chat leafObject in file `+c;throw n.trace(e),Error(e)}let u=l.map(e=>[i.any(e,t.default.dct(`created`)),e]);return u.sort(),e&&u.reverse(),u[0][1]}};exports.DateFolder=o;
|
|
1
|
+
const e=require("../_virtual/_rolldown/runtime.cjs.js"),t=require("../lib/ns.cjs.js"),n=require("../lib/debug.cjs.js");let r=require("rdflib");r=e.__toESM(r);let i=require("solid-logic");async function a(e){return await i.store.fetcher.load(e),!(i.store.statementsMatching(null,t.default.dct(`created`),null,e).length>0)}var o=class{constructor(e,n,r){this.root=e,this.rootFolder=e.dir(),this.leafFileName=n||`index.ttl`,this.membershipProperty=r||t.default.wf(`leafObject`)}leafDocumentFromDate(e){let t=e.toISOString().split(`T`)[0].replace(/-/g,`/`);return t=this.root.dir().uri+t+`/`+this.leafFileName,i.store.sym(t)}dateFromLeafDocument(e){let t=this.rootFolder.uri.length,n=e.uri.slice(t,t+10).replace(/\//g,`-`);return new Date(n)}async loadPrevious(e,r){async function o(e,a){function s(t){return!(r?t.uri>=e.uri:t.uri<=e.uri)}function c(e){let t=e.uri.slice(0,-1).split(`/`).slice(-1)[0];return!!`0123456789`.includes(t[0])}function l(e){return e=e.filter(c),e.sort(),r||e.reverse(),e.pop()}let u=e.dir();try{await i.store.fetcher.load(u);let e=i.store.each(u,t.default.ldp(`contains`));e=e.filter(s);let n=l(e);if(n)return n}catch(e){if(e.response&&e.response.status&&e.response.status===404)n.log(`Error 404 for chat parent file `+u);else throw n.log(`*** Error NON 404 for chat parent file `+u),Error(`*** ${e.message} for chat folder ${u}`)}if(a===0)return null;let d=await o(u,a-1);return d?(await i.store.fetcher.load(d),l(i.store.each(d,t.default.ldp(`contains`)))):null}let s=this.leafDocumentFromDate(e).dir();for(;;){let t=await o(s,3);if(t){let n=i.store.sym(t.uri+this.leafFileName),r=this.dateFromLeafDocument(n);if(await a(n))e=r,s=this.leafDocumentFromDate(e).dir();else return r}else return null}}async firstLeaf(e){let i=r.graph(),a=new r.Fetcher(i);async function o(n){function r(e){let t=e.uri.slice(0,-1).split(`/`).slice(-1)[0];return!!`0123456789`.includes(t[0])}delete a.requested[n.uri],await a.load(n,{force:!0});let o=i.each(n,t.default.ldp(`contains`));if(o=o.filter(r),o.length===0)throw Error(` @@@ No children to parent2 `+n);return o.sort(),e&&o.reverse(),o[0]}let s=await o(await o(await o(this.root.dir()))),c=r.sym(s.uri+`chat.ttl`);await a.load(c);let l=i.each(this.root,this.membershipProperty,null,c);if(l.length===0){let e=` INCONSISTENCY -- no chat leafObject in file `+c;throw n.trace(e),Error(e)}let u=l.map(e=>[i.any(e,t.default.dct(`created`)),e]);return u.sort(),e&&u.reverse(),u[0][1]}};exports.DateFolder=o,exports.emptyLeaf=a;
|
|
2
2
|
//# sourceMappingURL=dateFolder.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dateFolder.cjs.js","names":["store","ns","$rdf"],"sources":["../../src/chat/dateFolder.js"],"sourcesContent":["/**\n * Contains the [[DateFolder]] class\n * This tracks data stored in dated folders and sub-folders\n *\n */\nimport * as debug from '../lib/debug'\nimport { store } from 'solid-logic'\nimport ns from '../lib/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"],"mappings":"2LAUA,eAAsB,EAAW,EAAc,CAG7C,OAFA,MAAMA,EAAAA,MAAM,QAAQ,KAAK,CAAY,EAE9B,EACLA,EAAAA,MAAM,mBAAmB,KAAMC,EAAAA,QAAG,IAAI,SAAS,EAAG,KAAM,CAAY,
|
|
1
|
+
{"version":3,"file":"dateFolder.cjs.js","names":["store","ns","$rdf"],"sources":["../../src/chat/dateFolder.js"],"sourcesContent":["/**\n * Contains the [[DateFolder]] class\n * This tracks data stored in dated folders and sub-folders\n *\n */\nimport * as debug from '../lib/debug'\nimport { store } from 'solid-logic'\nimport ns from '../lib/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"],"mappings":"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"}
|
|
@@ -39,7 +39,7 @@ var o = class {
|
|
|
39
39
|
if (n) return n;
|
|
40
40
|
} catch (e) {
|
|
41
41
|
if (e.response && e.response.status && e.response.status === 404) t("Error 404 for chat parent file " + u);
|
|
42
|
-
else throw t("*** Error NON 404 for chat parent file " + u),
|
|
42
|
+
else throw t("*** Error NON 404 for chat parent file " + u), Error(`*** ${e.message} for chat folder ${u}`);
|
|
43
43
|
}
|
|
44
44
|
if (a === 0) return null;
|
|
45
45
|
let d = await o(u, a - 1);
|
|
@@ -79,6 +79,6 @@ var o = class {
|
|
|
79
79
|
}
|
|
80
80
|
};
|
|
81
81
|
//#endregion
|
|
82
|
-
export { o as DateFolder };
|
|
82
|
+
export { o as DateFolder, a as emptyLeaf };
|
|
83
83
|
|
|
84
84
|
//# sourceMappingURL=dateFolder.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dateFolder.esm.js","names":["ns"],"sources":["../../src/chat/dateFolder.js"],"sourcesContent":["/**\n * Contains the [[DateFolder]] class\n * This tracks data stored in dated folders and sub-folders\n *\n */\nimport * as debug from '../lib/debug'\nimport { store } from 'solid-logic'\nimport ns from '../lib/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"],"mappings":";;;;;AAUA,eAAsB,EAAW,GAAc;CAG7C,OAFA,MAAM,EAAM,QAAQ,KAAK,CAAY,GAE9B,EACL,EAAM,mBAAmB,MAAMA,EAAG,IAAI,SAAS,GAAG,MAAM,CAAY,
|
|
1
|
+
{"version":3,"file":"dateFolder.esm.js","names":["ns"],"sources":["../../src/chat/dateFolder.js"],"sourcesContent":["/**\n * Contains the [[DateFolder]] class\n * This tracks data stored in dated folders and sub-folders\n *\n */\nimport * as debug from '../lib/debug'\nimport { store } from 'solid-logic'\nimport ns from '../lib/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"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../_virtual/_rolldown/runtime.cjs.js"),t=require("../lib/ns.cjs.js"),n=require("../lib/debug.cjs.js"),r=require("../widgets/error.cjs.js");require("../lib/iconBase.cjs.js");const i=require("../widgets/buttons.cjs.js");require("../widgets/index.cjs.js");const a=require("./chatLogic.cjs.js"),o=require("./message.cjs.js");let s=require("rdflib");s=e.__toESM(s);let c=require("solid-logic");function l(e){`Notification`in window?Notification.permission===`granted`?new Notification(e):Notification.permission!==`denied`&&Notification.requestPermission().then(function(t){t===`granted`&&new Notification(e)}):n.warn(`This browser does no t support desktop notification`)}async function u(e,t,n,r,i,a){let s=await o.renderMessageRow(e,n,r,i,a);i.selectedMessage&&i.selectedMessage.sameTerm(n)&&(s.style.backgroundColor=`yellow`,i.selectedElement=s,t.selectedElement=s);let c=!1;for(let e=t.firstChild;e;e=e.nextSibling){let n=i.newestfirst===!0,r=s.AJAR_date;if(r>e.AJAR_date&&n||r<e.AJAR_date&&!n){t.insertBefore(s,e),c=!0;break}}c||t.appendChild(s)}async function d(e,d,f,p){async function m(e,n){let r={},a,o;for(a=n.firstChild;a;a=a.nextSibling)a.AJAR_subject&&(r[a.AJAR_subject.uri]=!0);let s=c.store.each(e,t.default.wf(`message`),null,n.chatDocument),l={};for(let e of s)l[e.uri]=!0,r[e.uri]||await h(e,n);for(a=n.firstChild;a;)o=a.nextSibling,a.AJAR_subject&&!l[a.AJAR_subject.uri]&&n.removeChild(a),a=o;for(a=n.firstChild;a;a=a.nextSibling)a.AJAR_subject&&i.refreshTree(a)}async function h(e,n){if(a.isDeleted(e)&&!p.showDeletedMessages)return;let r=c.store.any(null,t.default.sioc(`has_member`),e,e.doc()),i=c.store.any(e,t.default.sioc(`id`),null,e.doc());if(i&&!r&&(r=c.store.any(null,t.default.sioc(`has_member`),i,e.doc())),p.thread){if(!c.store.holds(e,t.default.sioc(`has_reply`),p.thread)&&!(r&&r.sameTerm(p.thread)))return}else if(r)return;n.fresh||await u(w,n,e,n.fresh,p,O)}async function g(e){let t=e?j:M,n=t.messageTable.date;if(e&&j.limit&&n<=j.limit)return k||await b(),!0;if(n=await T.loadPrevious(n,e),!n&&!e&&!k&&await b(),!n)return!0;let r=!1;if(!e){let e=T.leafDocumentFromDate(new Date);r=T.leafDocumentFromDate(n).sameTerm(e)}let i=await _(n,r);return t.messageTable=i,(e?C:!C)?E.appendChild(i):E.insertBefore(i,E.firstChild),r}async function _(t,i){let a=T.leafDocumentFromDate(t);try{await c.store.fetcher.createIfNotExists(a)}catch(o){let s=e.createElement(`table`).appendChild(e.createElement(`tr`));return o.response&&o.response.status&&o.response.status===404?await v(t,i):(n.log(`*** Error NON 404 for chat file `+a),s.appendChild(r.errorMessageBlock(e,o,`pink`)),s)}return await v(t,i)}async function v(n,r){async function a(){let e=await g(!0);return e?l.initial=!0:l.extendedBack=!0,e}async function s(){return await g(!1)}let l=e.createElement(`table`);l.style.width=`100%`,l.extendBackwards=a,l.extendForwards=s,l.date=n;let u=T.leafDocumentFromDate(n);if(l.chatDocument=u,l.fresh=!1,l.setAttribute(`style`,`width: 100%;`),r){l.final=!0,k=l,M.messageTable=l;let e=o.renderMessageEditor(w,l,O,p);C?l.insertBefore(e,l.firstChild):l.appendChild(e),l.inputRow=e}{let t=e.createElement(`tr`),r=t.appendChild(e.createElement(`td`));r.style=`text-align: center; vertical-align: middle; color: #888; font-style: italic;`,r.textContent=i.shortDate(n.toISOString(),!0);let a=t.appendChild(e.createElement(`td`));p.includeRemoveButton&&a.appendChild(i.cancelButton(e,e=>{E.parentNode.removeChild(E)})),l.extendedForwards=!1,C?l.appendChild(t):l.insertBefore(t,l.firstChild)}let d=c.store.statementsMatching(null,t.default.wf(`message`),null,u);!r&&d.length;for(let e of d)await h(e.object,l);return l.fresh=!0,l}async function y(){let e=T.leafDocumentFromDate(new Date);if(!e.sameTerm(M.messageTable.chatDocument)){k.inputRow&&(k.removeChild(k.inputRow),delete k.inputRow);let n=M.messageTable.chatDocument;if(await b(),!c.store.holds(n,t.default.rdfs(`seeAlso`),e,n)){let r=[s.st(n,t.default.rdfs(`seeAlso`),e,n)];try{c.store.updater.update([],r)}catch(e){alert(`Unable to link old chat file to new one:`+e)}}}}async function b(){let e=new Date,t=T.leafDocumentFromDate(e),n=await _(e,!0);return E.appendChild(n),E.refresh=async function(){await y(new Date),await m(f,n),l(f)},c.store.updater.addDownstreamChangeListener(t,E.refresh),k=n,M.messageTable=k,n}async function x(e,t){if(N)return;N=!0;let n=!t,r;for(;E.scrollTop<150&&j.messageTable&&!j.messageTable.initial&&j.messageTable.extendBackwards;){if(E.scrollHeight===0){setTimeout(x,2e3),N=!1;return}let e=E.scrollHeight-E.scrollTop;if(r=await j.messageTable.extendBackwards(),n&&(E.scrollTop=E.scrollHeight-e),t&&t(),r)break}for(;p.selectedMessage&&E.scrollHeight-E.scrollTop-E.clientHeight<150&&M.messageTable&&!M.messageTable.final&&M.messageTable.extendForwards;){let e=E.scrollTop;if(r=await M.messageTable.extendForwards(),n&&(E.scrollTop=e),t&&t(),r)break}N=!1}async function S(){function e(){o&&o.selectedElement&&o.selectedElement.scrollIntoView({block:`center`})}function t(){p.selectedElement?p.selectedElement.scrollIntoView({block:`center`}):k.inputRow.scrollIntoView&&k.inputRow.scrollIntoView(C)}let n,r,i;p.selectedMessage&&(r=p.selectedMessage.doc()),A&&(i=A.doc());let a=r||i;if(a){let e=new Date;n=T.leafDocumentFromDate(e).sameTerm(a)}let o;a&&!n?(o=await _(T.dateFromLeafDocument(a),n),E.appendChild(o),j.messageTable=o,M.messageTable=o,e(),setTimeout(e,1e3)):(await b(),j.messageTable=k,M.messageTable=k),await x(null,t),E.addEventListener(`scroll`,x),p.solo&&document.body.addEventListener(`scroll`,x)}p||={},p.authorDateOnLeft=!1;let C=p.newestFirst===`1`||p.newestFirst===!0,w=new a.ChatChannel(f,p),T=w.dateFolder,E=e.createElement(`div`);w.div=E;let D=E.appendChild(e.createElement(`div`)),O={dom:e,statusArea:D,div:D},k,A,j={messageTable:null},M={messageTable:null};if(p.thread){let e=p.thread;if(A=c.store.any(null,t.default.sioc(`has_reply`),e,e.doc()),A){let e=c.store.any(A,t.default.dct(`created`),null,A.doc());e&&(j.limit=new Date(e.value))}}let N=!1;return await S(),E}exports.infiniteMessageArea=d,exports.insertMessageIntoTable=u;
|
|
1
|
+
const e=require("../_virtual/_rolldown/runtime.cjs.js"),t=require("../lib/ns.cjs.js"),n=require("../lib/debug.cjs.js"),r=require("../widgets/error.cjs.js");require("../lib/iconBase.cjs.js");const i=require("../widgets/buttons.cjs.js");require("../widgets/index.cjs.js");const a=require("./chatLogic.cjs.js"),o=require("./message.cjs.js");let s=require("rdflib");s=e.__toESM(s);let c=require("solid-logic");function l(e){`Notification`in window?Notification.permission===`granted`?new Notification(e):Notification.permission!==`denied`&&Notification.requestPermission().then(function(t){t===`granted`&&new Notification(e)}):n.warn(`This browser does no t support desktop notification`)}async function u(e,t,n,r,i,a){let s=await o.renderMessageRow(e,n,r,i,a);i.selectedMessage&&i.selectedMessage.sameTerm(n)&&(s.style.backgroundColor=`yellow`,i.selectedElement=s,t.selectedElement=s);let c=!1;for(let e=t.firstChild;e;e=e.nextSibling){let n=i.newestfirst===!0,r=s.AJAR_date;if(r>e.AJAR_date&&n||r<e.AJAR_date&&!n){t.insertBefore(s,e),c=!0;break}}c||t.appendChild(s)}async function d(e,d,f,p){async function m(e,n){let r={},a,o;for(a=n.firstChild;a;a=a.nextSibling)a.AJAR_subject&&(r[a.AJAR_subject.uri]=!0);let s=c.store.each(e,t.default.wf(`message`),null,n.chatDocument),l={};for(let e of s)l[e.uri]=!0,r[e.uri]||await h(e,n);for(a=n.firstChild;a;)o=a.nextSibling,a.AJAR_subject&&!l[a.AJAR_subject.uri]&&n.removeChild(a),a=o;for(a=n.firstChild;a;a=a.nextSibling)a.AJAR_subject&&i.refreshTree(a)}async function h(e,n){if(a.isDeleted(e)&&!p.showDeletedMessages)return;let r=c.store.any(null,t.default.sioc(`has_member`),e,e.doc()),i=c.store.any(e,t.default.sioc(`id`),null,e.doc());if(i&&!r&&(r=c.store.any(null,t.default.sioc(`has_member`),i,e.doc())),p.thread){if(!c.store.holds(e,t.default.sioc(`has_reply`),p.thread)&&!(r&&r.sameTerm(p.thread)))return}else if(r)return;n.fresh||await u(w,n,e,n.fresh,p,O)}async function g(e){let t=e?j:M,n=t.messageTable.date;if(e&&j.limit&&n<=j.limit)return k||await b(),!0;if(n=await T.loadPrevious(n,e),!n&&!e&&!k&&await b(),!n)return!0;let r=!1;if(!e){let e=T.leafDocumentFromDate(new Date);r=T.leafDocumentFromDate(n).sameTerm(e)}let i=await _(n,r);return t.messageTable=i,(e?C:!C)?E.appendChild(i):E.insertBefore(i,E.firstChild),r}async function _(t,i){let a=T.leafDocumentFromDate(t);try{await c.store.fetcher.createIfNotExists(a)}catch(o){let s=e.createElement(`table`).appendChild(e.createElement(`tr`));return o.response&&o.response.status&&o.response.status===404?await v(t,i):(n.log(`*** Error NON 404 for chat file `+a),s.appendChild(r.errorMessageBlock(e,o,`pink`)),s)}return await v(t,i)}async function v(n,r){async function a(){let e=await g(!0);return e?l.initial=!0:l.extendedBack=!0,e}async function s(){return await g(!1)}let l=e.createElement(`table`);l.style.width=`100%`,l.extendBackwards=a,l.extendForwards=s,l.date=n;let u=T.leafDocumentFromDate(n);if(l.chatDocument=u,l.fresh=!1,l.setAttribute(`style`,`width: 100%;`),r){l.final=!0,k=l,M.messageTable=l;let e=o.renderMessageEditor(w,l,O,p);C?l.insertBefore(e,l.firstChild):l.appendChild(e),l.inputRow=e}{let t=e.createElement(`tr`),r=t.appendChild(e.createElement(`td`));r.style=`text-align: center; vertical-align: middle; color: #888; font-style: italic;`,r.textContent=i.shortDate(n.toISOString(),!0);let a=t.appendChild(e.createElement(`td`));p.includeRemoveButton&&a.appendChild(i.cancelButton(e,e=>{E.parentNode.removeChild(E)})),l.extendedForwards=!1,C?l.appendChild(t):l.insertBefore(t,l.firstChild)}let d=c.store.statementsMatching(null,t.default.wf(`message`),null,u);!r&&d.length;for(let e of d)await h(e.object,l);return l.fresh=!0,l}async function y(){let e=T.leafDocumentFromDate(new Date);if(!e.sameTerm(M.messageTable.chatDocument)){k.inputRow&&(k.removeChild(k.inputRow),delete k.inputRow);let n=M.messageTable.chatDocument;if(await b(),!c.store.holds(n,t.default.rdfs(`seeAlso`),e,n)){let r=[s.st(n,t.default.rdfs(`seeAlso`),e,n)];try{c.store.updater.update([],r)}catch(e){alert(`Unable to link old chat file to new one:`+e)}}}}async function b(){let e=new Date,t=T.leafDocumentFromDate(e),n=await _(e,!0);return E.appendChild(n),E.refresh=async function(){await y(new Date),await m(f,n),l(f)},c.store.updater.addDownstreamChangeListener(t,E.refresh),k=n,M.messageTable=k,n}async function x(e,t){if(N)return;N=!0;let n=!t,r;for(;E.scrollTop<150&&j.messageTable&&!j.messageTable.initial&&j.messageTable.extendBackwards;){if(E.scrollHeight===0){setTimeout(x,2e3),N=!1;return}let e=E.scrollHeight-E.scrollTop;if(r=await j.messageTable.extendBackwards(),n&&(E.scrollTop=E.scrollHeight-e),t&&t(),r)break}for(;p.selectedMessage&&E.scrollHeight-E.scrollTop-E.clientHeight<150&&M.messageTable&&!M.messageTable.final&&M.messageTable.extendForwards;){let e=E.scrollTop;if(r=await M.messageTable.extendForwards(),n&&(E.scrollTop=e),t&&t(),r)break}N=!1}async function S(){function e(){o&&o.selectedElement&&o.selectedElement.scrollIntoView({block:`center`})}function t(){p.selectedElement?p.selectedElement.scrollIntoView({block:`center`}):k.inputRow.scrollIntoView&&k.inputRow.scrollIntoView(C)}let n,r,i;p.selectedMessage&&(r=p.selectedMessage.doc()),A&&(i=A.doc());let a=r||i;if(a){let e=new Date;n=T.leafDocumentFromDate(e).sameTerm(a)}let o;a&&!n?(o=await _(T.dateFromLeafDocument(a),n),E.appendChild(o),j.messageTable=o,M.messageTable=o,e(),setTimeout(e,1e3)):(await b(),j.messageTable=k,M.messageTable=k),await x(null,t),E.addEventListener(`scroll`,x),p.solo&&document.body.addEventListener(`scroll`,x)}p||={},p.authorDateOnLeft=!1;let C=p.newestFirst===`1`||p.newestFirst===!0,w=new a.ChatChannel(f,p),T=w.dateFolder,E=e.createElement(`div`);w.div=E;let D=E.appendChild(e.createElement(`div`)),O={dom:e,statusArea:D,div:D},k,A,j={messageTable:null},M={messageTable:null};if(p.thread){let e=p.thread;if(A=c.store.any(null,t.default.sioc(`has_reply`),e,e.doc()),A){let e=c.store.any(A,t.default.dct(`created`),null,A.doc());e&&(j.limit=new Date(e.value))}}let N=!1;return await S(),E}exports.desktopNotification=l,exports.infiniteMessageArea=d,exports.insertMessageIntoTable=u;
|
|
2
2
|
//# sourceMappingURL=infinite.cjs.js.map
|