solid-ui 5.0.2-4 → 5.0.2-5
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/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 +37 -37
- package/dist/acl/access-groups.cjs.js +2 -2
- package/dist/acl/access-groups.cjs.js.map +1 -1
- package/dist/acl/access-groups.esm.js +78 -78
- 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 +19 -19
- package/dist/acl/add-agent-buttons.cjs.js +1 -1
- package/dist/acl/add-agent-buttons.cjs.js.map +1 -1
- package/dist/acl/add-agent-buttons.esm.js +51 -51
- package/dist/chat/bookmarks.cjs.js +1 -1
- package/dist/chat/bookmarks.cjs.js.map +1 -1
- package/dist/chat/bookmarks.esm.js +44 -44
- package/dist/chat/bookmarks.esm.js.map +1 -1
- package/dist/chat/chatLogic.cjs.js +2 -2
- package/dist/chat/chatLogic.cjs.js.map +1 -1
- package/dist/chat/chatLogic.esm.js +54 -54
- package/dist/chat/dateFolder.cjs.js +1 -1
- package/dist/chat/dateFolder.cjs.js.map +1 -1
- package/dist/chat/dateFolder.esm.js +30 -30
- package/dist/chat/infinite.cjs.js +1 -1
- package/dist/chat/infinite.cjs.js.map +1 -1
- package/dist/chat/infinite.esm.js +49 -49
- package/dist/chat/keys.cjs.js +2 -2
- package/dist/chat/keys.cjs.js.map +1 -1
- package/dist/chat/keys.esm.js +17 -17
- package/dist/chat/message.cjs.js +4 -4
- package/dist/chat/message.cjs.js.map +1 -1
- package/dist/chat/message.esm.js +114 -114
- package/dist/chat/message.esm.js.map +1 -1
- package/dist/chat/messageTools.cjs.js +1 -1
- package/dist/chat/messageTools.cjs.js.map +1 -1
- package/dist/chat/messageTools.esm.js +51 -51
- package/dist/chunks/{ResourceActionsMenu-Bllpr4M5.js → ResourceActionsMenu-Bx7YWY3E.js} +29 -29
- package/dist/chunks/{ResourceActionsMenu-Bllpr4M5.js.map → ResourceActionsMenu-Bx7YWY3E.js.map} +1 -1
- package/dist/chunks/{access-control-modal-CwmY_Dod.js → access-control-modal-B1mFFIyz.js} +165 -165
- package/dist/chunks/{access-control-modal-CwmY_Dod.js.map → access-control-modal-B1mFFIyz.js.map} +1 -1
- package/dist/chunks/{account-CoHPKKDu.js → account-DWmMJre6.js} +22 -22
- package/dist/chunks/{account-CoHPKKDu.js.map → account-DWmMJre6.js.map} +1 -1
- package/dist/chunks/{auth-CocCqS1p.js → auth-EK-iYNYZ.js} +37 -37
- package/dist/chunks/{auth-CocCqS1p.js.map → auth-EK-iYNYZ.js.map} +1 -1
- package/dist/chunks/{avatar-sNdKdWVO.js → avatar-BBgvMlqv.js} +13 -13
- package/dist/chunks/{avatar-sNdKdWVO.js.map → avatar-BBgvMlqv.js.map} +1 -1
- package/dist/chunks/{combobox-fSTp9qoT.js → combobox-DS6byaf1.js} +3 -3
- package/dist/chunks/{combobox-fSTp9qoT.js.map → combobox-DS6byaf1.js.map} +1 -1
- package/dist/chunks/{error-state-BD4_Wrkz.js → error-state-jV9dlFX2.js} +2 -2
- package/dist/chunks/{error-state-BD4_Wrkz.js.map → error-state-jV9dlFX2.js.map} +1 -1
- package/dist/chunks/{file-explorer-header-D0TebSYR.js → file-explorer-header-Djp_eFuT.js} +50 -50
- package/dist/chunks/{file-explorer-header-D0TebSYR.js.map → file-explorer-header-Djp_eFuT.js.map} +1 -1
- package/dist/chunks/{guard-BOicu9dt.js → guard-SxVT1xr4.js} +13 -13
- package/dist/chunks/{guard-BOicu9dt.js.map → guard-SxVT1xr4.js.map} +1 -1
- package/dist/chunks/{index.esm-C9oV3H3X.js → index.esm-BQrkxchZ.js} +2 -2
- package/dist/chunks/{index.esm-C9oV3H3X.js.map → index.esm-BQrkxchZ.js.map} +1 -1
- package/dist/chunks/{jsonld-D-TE94B0.js → jsonld-C6IOQ1Tg.js} +2 -2
- package/dist/chunks/{jsonld-D-TE94B0.js.map → jsonld-C6IOQ1Tg.js.map} +1 -1
- package/dist/chunks/{login-button-clTw_9tX.js → login-button-Dd0rwZJk.js} +11 -11
- package/dist/chunks/{login-button-clTw_9tX.js.map → login-button-Dd0rwZJk.js.map} +1 -1
- package/dist/chunks/{logout-button-CP-Pz70O.js → logout-button-Da34Lrnq.js} +11 -11
- package/dist/chunks/{logout-button-CP-Pz70O.js.map → logout-button-Da34Lrnq.js.map} +1 -1
- package/dist/chunks/{menu-D0k2fkiE.js → menu-BNJU654v.js} +2 -2
- package/dist/chunks/{menu-D0k2fkiE.js.map → menu-BNJU654v.js.map} +1 -1
- package/dist/chunks/{provider-Cuv3Kp6G.js → provider-B3FoP2qW.js} +11 -11
- package/dist/chunks/{provider-Cuv3Kp6G.js.map → provider-B3FoP2qW.js.map} +1 -1
- package/dist/chunks/{rdf-form-DVmTw3RG.js → rdf-form-BkKDmFPD.js} +36 -36
- package/dist/chunks/{rdf-form-DVmTw3RG.js.map → rdf-form-BkKDmFPD.js.map} +1 -1
- package/dist/chunks/{rdf-input-CRYLK-27.js → rdf-input-BPePtqfS.js} +61 -61
- package/dist/chunks/{rdf-input-CRYLK-27.js.map → rdf-input-BPePtqfS.js.map} +1 -1
- package/dist/chunks/{signup-button-CexdMWj6.js → signup-button-DOInssOu.js} +11 -11
- package/dist/chunks/{signup-button-CexdMWj6.js.map → signup-button-DOInssOu.js.map} +1 -1
- package/dist/chunks/{solidLogicSingleton.esm-BXyHD7mn.js → solidLogicSingleton.esm-Bvt7E7Vl.js} +50 -29
- package/dist/chunks/solidLogicSingleton.esm-Bvt7E7Vl.js.map +1 -0
- package/dist/chunks/{src-DQgHAH3d.js → src-akaVfkuf.js} +1956 -1944
- package/dist/chunks/src-akaVfkuf.js.map +1 -0
- package/dist/chunks/{style-CXaw5EYi.js → style-Dlw9-wPn.js} +3 -3
- package/dist/chunks/{style-CXaw5EYi.js.map → style-Dlw9-wPn.js.map} +1 -1
- package/dist/chunks/{widgets-BBEQu0CS.js → widgets-B1hBVhRL.js} +309 -309
- package/dist/chunks/widgets-B1hBVhRL.js.map +1 -0
- package/dist/components/access-control-modal/AccessControlAddAccess.cjs.js +1 -1
- package/dist/components/access-control-modal/AccessControlAddAccess.esm.js +5 -5
- package/dist/components/access-control-modal/AccessControlGeneralAccess.cjs.js +2 -2
- package/dist/components/access-control-modal/AccessControlGeneralAccess.cjs.js.map +1 -1
- package/dist/components/access-control-modal/AccessControlGeneralAccess.esm.js +12 -12
- package/dist/components/access-control-modal/AccessControlModal.cjs.js +2 -2
- package/dist/components/access-control-modal/AccessControlModal.cjs.js.map +1 -1
- package/dist/components/access-control-modal/AccessControlModal.esm.js +35 -35
- package/dist/components/access-control-modal/AccessControlModal.esm.js.map +1 -1
- package/dist/components/access-control-modal/AccessControlSharedAccess.cjs.js +1 -1
- package/dist/components/access-control-modal/AccessControlSharedAccess.esm.js +2 -2
- package/dist/components/access-control-modal/accessTargetResolver.cjs.js +1 -1
- package/dist/components/access-control-modal/accessTargetResolver.cjs.js.map +1 -1
- package/dist/components/access-control-modal/accessTargetResolver.esm.js +21 -21
- package/dist/components/access-control-modal.js +1 -1
- package/dist/components/account/Account.cjs.js +1 -1
- package/dist/components/account/Account.esm.js +3 -3
- package/dist/components/account.js +1 -1
- package/dist/components/all.cjs.js +1 -1
- package/dist/components/all.esm.js +16 -16
- package/dist/components/avatar.js +1 -1
- package/dist/components/combobox/Combobox.cjs.js +1 -1
- package/dist/components/combobox/Combobox.esm.js +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/dialog/Dialog.cjs.js +2 -2
- package/dist/components/dialog/Dialog.cjs.js.map +1 -1
- package/dist/components/dialog/Dialog.esm.js +9 -9
- package/dist/components/dialog/Dialog.esm.js.map +1 -1
- package/dist/components/dialog-provider/DialogProvider.cjs.js +1 -1
- package/dist/components/dialog-provider/DialogProvider.cjs.js.map +1 -1
- package/dist/components/dialog-provider/DialogProvider.esm.js +6 -6
- package/dist/components/dialogs-root/DialogsRoot.cjs.js +2 -2
- package/dist/components/dialogs-root/DialogsRoot.cjs.js.map +1 -1
- package/dist/components/dialogs-root/DialogsRoot.esm.js +7 -7
- package/dist/components/error-state/ErrorState.cjs.js +1 -1
- package/dist/components/error-state/ErrorState.esm.js +1 -1
- package/dist/components/error-state.js +1 -1
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.cjs.js +2 -2
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.cjs.js.map +1 -1
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.esm.js +10 -10
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.cjs.js +1 -1
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.esm.js +5 -5
- package/dist/components/file-explorer-header.js +1 -1
- package/dist/components/guard.js +1 -1
- package/dist/components/login-button/LoginButton.cjs.js +1 -1
- package/dist/components/login-button/LoginButton.esm.js +1 -1
- package/dist/components/login-button.js +1 -1
- package/dist/components/login-modal/LoginModal.cjs.js +1 -1
- package/dist/components/login-modal/LoginModal.esm.js +2 -2
- package/dist/components/login-modal.js +1 -1
- package/dist/components/logout-button/LogoutButton.cjs.js +1 -1
- package/dist/components/logout-button/LogoutButton.esm.js +1 -1
- package/dist/components/logout-button.js +1 -1
- package/dist/components/menu/Menu.cjs.js +1 -1
- package/dist/components/menu/Menu.cjs.js.map +1 -1
- package/dist/components/menu/Menu.esm.js +1 -1
- package/dist/components/menu/Menu.esm.js.map +1 -1
- package/dist/components/menu.js +1 -1
- package/dist/components/provider.js +1 -1
- package/dist/components/rdf-form/RDFForm.cjs.js +3 -3
- package/dist/components/rdf-form/RDFForm.cjs.js.map +1 -1
- package/dist/components/rdf-form/RDFForm.esm.js +13 -13
- package/dist/components/rdf-form/RDFForm.esm.js.map +1 -1
- package/dist/components/rdf-form.js +1 -1
- package/dist/components/rdf-input/RDFInput.cjs.js +2 -2
- package/dist/components/rdf-input/RDFInput.cjs.js.map +1 -1
- package/dist/components/rdf-input/RDFInput.esm.js +4 -4
- package/dist/components/rdf-input/RDFInput.esm.js.map +1 -1
- package/dist/components/rdf-input.js +1 -1
- package/dist/components/resource-actions-menu/ResourceActionsMenu.cjs.js +3 -3
- package/dist/components/resource-actions-menu/ResourceActionsMenu.cjs.js.map +1 -1
- package/dist/components/resource-actions-menu/ResourceActionsMenu.esm.js +7 -7
- package/dist/components/resource-actions-menu.js +1 -1
- package/dist/components/select/Select.cjs.js +1 -1
- package/dist/components/select/Select.cjs.js.map +1 -1
- package/dist/components/select/Select.esm.js +1 -1
- package/dist/components/signup-button/SignupButton.cjs.js +1 -1
- package/dist/components/signup-button/SignupButton.esm.js +1 -1
- package/dist/components/signup-button.js +1 -1
- package/dist/components.js +21 -21
- package/dist/create/create.cjs.js +1 -1
- package/dist/create/create.cjs.js.map +1 -1
- package/dist/create/create.esm.js +23 -23
- package/dist/header/index.cjs.js +1 -1
- package/dist/header/index.cjs.js.map +1 -1
- package/dist/header/index.esm.js +53 -53
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +20 -20
- package/dist/index.js +5 -5
- package/dist/lib/auth/SolidAuth.cjs.js +1 -1
- package/dist/lib/auth/SolidAuth.cjs.js.map +1 -1
- package/dist/lib/auth/SolidAuth.esm.js +8 -8
- package/dist/lib/auth/SolidAuth.esm.js.map +1 -1
- package/dist/lib/code-editor/CodeEditor.cjs.js +1 -1
- package/dist/lib/code-editor/CodeEditor.cjs.js.map +1 -1
- package/dist/lib/code-editor/CodeEditor.d.ts.map +1 -1
- package/dist/lib/code-editor/CodeEditor.esm.js +34 -30
- package/dist/lib/code-editor/CodeEditor.esm.js.map +1 -1
- package/dist/lib/components/dialog-component/DialogComponent.cjs.js +1 -1
- package/dist/lib/components/dialog-component/DialogComponent.cjs.js.map +1 -1
- package/dist/lib/components/dialog-component/DialogComponent.esm.js +4 -4
- package/dist/lib/components/index.cjs.js +1 -1
- package/dist/lib/components/index.esm.js +3 -3
- package/dist/lib/dialogs/helpers.cjs.js +1 -1
- package/dist/lib/dialogs/helpers.cjs.js.map +1 -1
- package/dist/lib/dialogs/helpers.esm.js +4 -4
- package/dist/lib/file-explorer/relevant-panes.cjs.js +1 -1
- package/dist/lib/file-explorer/relevant-panes.cjs.js.map +1 -1
- package/dist/lib/file-explorer/relevant-panes.esm.js +8 -8
- package/dist/lib/messageArea.cjs.js +1 -1
- package/dist/lib/messageArea.cjs.js.map +1 -1
- package/dist/lib/messageArea.esm.js +27 -27
- package/dist/lib/pad.cjs.js +1 -1
- package/dist/lib/pad.cjs.js.map +1 -1
- package/dist/lib/pad.esm.js +15 -15
- package/dist/lib/participation.cjs.js +1 -1
- package/dist/lib/participation.cjs.js.map +1 -1
- package/dist/lib/participation.esm.js +59 -59
- package/dist/lib/preferences.cjs.js +1 -1
- package/dist/lib/preferences.cjs.js.map +1 -1
- package/dist/lib/preferences.esm.js +28 -28
- package/dist/lib/table.cjs.js +3 -3
- package/dist/lib/table.cjs.js.map +1 -1
- package/dist/lib/table.esm.js +123 -123
- 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 +16 -16
- package/dist/loader.js +11 -11
- package/dist/login/login.cjs.js +6 -6
- package/dist/login/login.cjs.js.map +1 -1
- package/dist/login/login.esm.js +142 -142
- package/dist/media/media-capture.cjs.js +1 -1
- package/dist/media/media-capture.cjs.js.map +1 -1
- package/dist/media/media-capture.esm.js +6 -6
- package/dist/solid-ui.js +18 -18
- package/dist/solid-ui.min.js +18 -18
- package/dist/solid-ui.min.js.map +1 -1
- package/dist/utils/index.cjs.js +1 -1
- package/dist/utils/index.cjs.js.map +1 -1
- package/dist/utils/index.esm.js +4 -4
- 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 +15 -15
- package/dist/utils/label.cjs.js +1 -1
- package/dist/utils/label.cjs.js.map +1 -1
- package/dist/utils/label.esm.js +4 -4
- package/dist/widgets/buttons.cjs.js +12 -12
- package/dist/widgets/buttons.cjs.js.map +1 -1
- package/dist/widgets/buttons.esm.js +179 -179
- package/dist/widgets/error.cjs.js +1 -1
- package/dist/widgets/error.cjs.js.map +1 -1
- package/dist/widgets/error.esm.js +5 -5
- package/dist/widgets/forms/autocomplete/autocompleteBar.cjs.js +1 -1
- package/dist/widgets/forms/autocomplete/autocompleteBar.cjs.js.map +1 -1
- package/dist/widgets/forms/autocomplete/autocompleteBar.esm.js +17 -17
- package/dist/widgets/forms/autocomplete/autocompleteField.cjs.js +1 -1
- package/dist/widgets/forms/autocomplete/autocompleteField.cjs.js.map +1 -1
- package/dist/widgets/forms/autocomplete/autocompleteField.esm.js +23 -23
- package/dist/widgets/forms/autocomplete/autocompletePicker.cjs.js +1 -1
- package/dist/widgets/forms/autocomplete/autocompletePicker.cjs.js.map +1 -1
- package/dist/widgets/forms/autocomplete/autocompletePicker.esm.js +26 -26
- 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 +9 -9
- package/dist/widgets/forms/autocomplete/publicData.cjs.js +5 -5
- package/dist/widgets/forms/autocomplete/publicData.cjs.js.map +1 -1
- package/dist/widgets/forms/autocomplete/publicData.esm.js +67 -67
- package/dist/widgets/forms/basic.cjs.js +1 -1
- package/dist/widgets/forms/basic.cjs.js.map +1 -1
- package/dist/widgets/forms/basic.esm.js +11 -11
- package/dist/widgets/forms.cjs.js +4 -4
- package/dist/widgets/forms.cjs.js.map +1 -1
- package/dist/widgets/forms.esm.js +561 -561
- package/dist/widgets/forms.esm.js.map +1 -1
- package/dist/widgets/index.cjs.js +1 -1
- package/dist/widgets/index.cjs.js.map +1 -1
- package/dist/widgets/index.esm.js +82 -82
- package/dist/widgets/peoplePicker.cjs.js +2 -2
- package/dist/widgets/peoplePicker.cjs.js.map +1 -1
- package/dist/widgets/peoplePicker.esm.js +82 -82
- package/package.json +3 -3
- package/dist/chunks/solidLogicSingleton.esm-BXyHD7mn.js.map +0 -1
- package/dist/chunks/src-DQgHAH3d.js.map +0 -1
- package/dist/chunks/widgets-BBEQu0CS.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeEditor.cjs.js","names":["Compartment","EditorState","vscodeDark","vscodeLight","EditorView","syntaxHighlighting","defaultHighlightStyle","lineNumbers","history","drawSelection","keymap","defaultKeymap","historyKeymap","StreamLanguage","turtle","sparql","ntriples","json","html","markdown","xml","css","javascript","_codemirror_state","_codemirror_view","_codemirror_language","_codemirror_commands","_codemirror_lang_css","_codemirror_lang_html","_codemirror_lang_javascript","_codemirror_lang_json","_codemirror_lang_markdown","_codemirror_lang_xml","_uiw_codemirror_theme_vscode","_codemirror_legacy_modes_mode_turtle","_codemirror_legacy_modes_mode_sparql","_codemirror_legacy_modes_mode_ntriples","CodeEditor","onDirtyChange","languageExtension","contentType","state","initialDoc","theme","update","container","text","editableCompartment","readOnly","languageCompartment","extension"],"sources":["../../../src/lib/code-editor/CodeEditor.ts"],"sourcesContent":["import type { ThemeMode } from 'pane-registry'\nimport { Compartment, EditorState } from '@codemirror/state'\nimport { EditorView, drawSelection, keymap, lineNumbers } from '@codemirror/view'\nimport { defaultHighlightStyle, syntaxHighlighting, StreamLanguage } from '@codemirror/language'\nimport { defaultKeymap, history, historyKeymap } from '@codemirror/commands'\nimport { css } from '@codemirror/lang-css'\nimport { html } from '@codemirror/lang-html'\nimport { javascript } from '@codemirror/lang-javascript'\nimport { json } from '@codemirror/lang-json'\nimport { markdown } from '@codemirror/lang-markdown'\nimport { xml } from '@codemirror/lang-xml'\nimport { vscodeDark, vscodeLight } from '@uiw/codemirror-theme-vscode'\nimport { turtle } from '@codemirror/legacy-modes/mode/turtle'\nimport { sparql } from '@codemirror/legacy-modes/mode/sparql'\nimport { ntriples } from '@codemirror/legacy-modes/mode/ntriples'\n\nexport class CodeEditor {\n private _view: EditorView | null = null\n private _languageCompartment: Compartment | null = null\n private _editableCompartment: Compartment | null = null\n private _onDirtyChange?: (dirty: boolean) => void\n private _isDirty = false\n\n async initialize (container: HTMLElement, initialDoc = '', contentType: string = 'text/turtle', theme: ThemeMode = 'dark', onDirtyChange?: (dirty: boolean) => void) {\n if (this._view) {\n this._view.destroy()\n }\n\n this._languageCompartment = new Compartment()\n this._editableCompartment = new Compartment()\n this._onDirtyChange = onDirtyChange\n this._isDirty = false\n const languageExtension = await this._getLanguageExtension(contentType)\n\n const state = EditorState.create({\n doc: initialDoc,\n extensions: [\n theme === 'dark' ? vscodeDark : vscodeLight,\n EditorView.theme({\n '&': {\n minHeight: '6lh'\n }\n }),\n this._languageCompartment.of(languageExtension),\n this._editableCompartment.of(EditorView.editable.of(true)),\n syntaxHighlighting(defaultHighlightStyle, { fallback: true }),\n lineNumbers(),\n history(),\n drawSelection(),\n EditorView.lineWrapping,\n EditorView.updateListener.of((update) => {\n if (update.docChanged && !this._isDirty) {\n this._isDirty = true\n this._onDirtyChange?.(true)\n }\n }),\n keymap.of([\n ...defaultKeymap,\n ...historyKeymap\n ])\n ]\n })\n\n this._view = new EditorView({\n state,\n parent: container\n })\n }\n\n destroy () {\n this._view?.destroy()\n this._view = null\n this._isDirty = false\n }\n\n getValue (): string {\n return this._view ? this._view.state.doc.toString() : ''\n }\n\n replaceContent (text: string) {\n if (!this._view) return\n const current = this._view.state.doc.toString()\n if (current === text) return\n this._view.dispatch({\n changes: { from: 0, to: this._view.state.doc.length, insert: text }\n })\n }\n\n resetDirtyState () {\n this._isDirty = false\n }\n\n setReadOnly (readOnly: boolean) {\n if (!this._view) return\n const editableCompartment = this._editableCompartment\n if (!editableCompartment) return\n this._view.dispatch({\n effects: editableCompartment.reconfigure(EditorView.editable.of(!readOnly))\n })\n }\n\n focusEditor () {\n this._view?.focus()\n }\n\n async setLanguage (contentType: string) {\n if (!this._view) return\n const languageCompartment = this._languageCompartment\n if (!languageCompartment) return\n\n const extension = await this._getLanguageExtension(contentType)\n this._view.dispatch({\n effects: languageCompartment.reconfigure(extension)\n })\n }\n\n private async _getLanguageExtension (contentType: string) {\n switch (contentType) {\n case 'text/turtle':\n case 'text/n3':\n return StreamLanguage.define(turtle)\n\n case 'application/sparql-update':\n case 'application/sparql-query':\n return StreamLanguage.define(sparql)\n\n case 'application/nquads':\n case 'application/n-quads':\n case 'application/n-triples':\n return StreamLanguage.define(ntriples)\n\n case 'application/json':\n case 'application/ld+json':\n return json()\n\n case 'text/html':\n case 'application/xhtml+xml':\n return html()\n\n case 'text/markdown':\n case 'text/x-markdown':\n case 'text/md':\n return markdown()\n\n case 'application/rdf+xml':\n case 'application/xml':\n return xml()\n\n case 'text/css':\n return css()\n\n case 'text/javascript':\n case 'application/javascript':\n case 'application/ecmascript':\n return javascript()\n\n default:\n return []\n }\n }\n}\n"],"mappings":"A,iiBAgBA,
|
|
1
|
+
{"version":3,"file":"CodeEditor.cjs.js","names":["Compartment","EditorState","vscodeDark","vscodeLight","EditorView","syntaxHighlighting","defaultHighlightStyle","lineNumbers","history","drawSelection","keymap","indentWithTab","defaultKeymap","historyKeymap","StreamLanguage","turtle","sparql","ntriples","json","html","markdown","xml","css","javascript","_codemirror_state","_codemirror_view","_codemirror_language","_codemirror_commands","_codemirror_lang_css","_codemirror_lang_html","_codemirror_lang_javascript","_codemirror_lang_json","_codemirror_lang_markdown","_codemirror_lang_xml","_uiw_codemirror_theme_vscode","_codemirror_legacy_modes_mode_turtle","_codemirror_legacy_modes_mode_sparql","_codemirror_legacy_modes_mode_ntriples","CodeEditor","onDirtyChange","languageExtension","contentType","state","initialDoc","theme","update","container","text","editableCompartment","readOnly","languageCompartment","extension"],"sources":["../../../src/lib/code-editor/CodeEditor.ts"],"sourcesContent":["import type { ThemeMode } from 'pane-registry'\nimport { Compartment, EditorState } from '@codemirror/state'\nimport { EditorView, drawSelection, keymap, lineNumbers } from '@codemirror/view'\nimport { defaultHighlightStyle, syntaxHighlighting, StreamLanguage } from '@codemirror/language'\nimport { defaultKeymap, history, historyKeymap, indentWithTab } from '@codemirror/commands'\nimport { css } from '@codemirror/lang-css'\nimport { html } from '@codemirror/lang-html'\nimport { javascript } from '@codemirror/lang-javascript'\nimport { json } from '@codemirror/lang-json'\nimport { markdown } from '@codemirror/lang-markdown'\nimport { xml } from '@codemirror/lang-xml'\nimport { vscodeDark, vscodeLight } from '@uiw/codemirror-theme-vscode'\nimport { turtle } from '@codemirror/legacy-modes/mode/turtle'\nimport { sparql } from '@codemirror/legacy-modes/mode/sparql'\nimport { ntriples } from '@codemirror/legacy-modes/mode/ntriples'\n\nexport class CodeEditor {\n private _view: EditorView | null = null\n private _languageCompartment: Compartment | null = null\n private _editableCompartment: Compartment | null = null\n private _onDirtyChange?: (dirty: boolean) => void\n private _isDirty = false\n\n async initialize (container: HTMLElement, initialDoc = '', contentType: string = 'text/turtle', theme: ThemeMode = 'dark', onDirtyChange?: (dirty: boolean) => void) {\n if (this._view) {\n this._view.destroy()\n }\n\n this._languageCompartment = new Compartment()\n this._editableCompartment = new Compartment()\n this._onDirtyChange = onDirtyChange\n this._isDirty = false\n const languageExtension = await this._getLanguageExtension(contentType)\n\n const state = EditorState.create({\n doc: initialDoc,\n extensions: [\n theme === 'dark' ? vscodeDark : vscodeLight,\n EditorView.theme({\n '&': {\n minHeight: '6lh'\n }\n }),\n this._languageCompartment.of(languageExtension),\n this._editableCompartment.of(EditorView.editable.of(true)),\n syntaxHighlighting(defaultHighlightStyle, { fallback: true }),\n lineNumbers(),\n history(),\n drawSelection(),\n EditorView.lineWrapping,\n EditorView.updateListener.of((update) => {\n if (update.docChanged && !this._isDirty) {\n this._isDirty = true\n this._onDirtyChange?.(true)\n }\n }),\n keymap.of([\n indentWithTab,\n ...defaultKeymap,\n ...historyKeymap\n ])\n ]\n })\n\n this._view = new EditorView({\n state,\n parent: container\n })\n }\n\n destroy () {\n this._view?.destroy()\n this._view = null\n this._isDirty = false\n }\n\n getValue (): string {\n return this._view ? this._view.state.doc.toString() : ''\n }\n\n replaceContent (text: string) {\n if (!this._view) return\n const current = this._view.state.doc.toString()\n if (current === text) return\n this._view.dispatch({\n changes: { from: 0, to: this._view.state.doc.length, insert: text }\n })\n }\n\n resetDirtyState () {\n this._isDirty = false\n }\n\n setReadOnly (readOnly: boolean) {\n if (!this._view) return\n const editableCompartment = this._editableCompartment\n if (!editableCompartment) return\n this._view.dispatch({\n effects: editableCompartment.reconfigure(EditorView.editable.of(!readOnly))\n })\n }\n\n focusEditor () {\n this._view?.focus()\n }\n\n async setLanguage (contentType: string) {\n if (!this._view) return\n const languageCompartment = this._languageCompartment\n if (!languageCompartment) return\n\n const extension = await this._getLanguageExtension(contentType)\n this._view.dispatch({\n effects: languageCompartment.reconfigure(extension)\n })\n }\n\n private async _getLanguageExtension (contentType: string) {\n switch (contentType) {\n case 'text/turtle':\n case 'text/n3':\n return StreamLanguage.define(turtle)\n\n case 'application/sparql-update':\n case 'application/sparql-query':\n return StreamLanguage.define(sparql)\n\n case 'application/nquads':\n case 'application/n-quads':\n case 'application/n-triples':\n return StreamLanguage.define(ntriples)\n\n case 'application/json':\n case 'application/ld+json':\n return json()\n\n case 'text/html':\n case 'application/xhtml+xml':\n return html()\n\n case 'text/markdown':\n case 'text/x-markdown':\n case 'text/md':\n return markdown()\n\n case 'application/rdf+xml':\n case 'application/xml':\n return xml()\n\n case 'text/css':\n return css()\n\n case 'text/javascript':\n case 'application/javascript':\n case 'application/ecmascript':\n return javascript()\n\n default:\n return []\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeEditor.d.ts","sourceRoot":"","sources":["../../../src/lib/code-editor/CodeEditor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAgB9C,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,oBAAoB,CAA2B;IACvD,OAAO,CAAC,oBAAoB,CAA2B;IACvD,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,QAAQ,CAAQ;IAElB,UAAU,CAAE,SAAS,EAAE,WAAW,EAAE,UAAU,SAAK,EAAE,WAAW,GAAE,MAAsB,EAAE,KAAK,GAAE,SAAkB,EAAE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI;
|
|
1
|
+
{"version":3,"file":"CodeEditor.d.ts","sourceRoot":"","sources":["../../../src/lib/code-editor/CodeEditor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAgB9C,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,oBAAoB,CAA2B;IACvD,OAAO,CAAC,oBAAoB,CAA2B;IACvD,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,QAAQ,CAAQ;IAElB,UAAU,CAAE,SAAS,EAAE,WAAW,EAAE,UAAU,SAAK,EAAE,WAAW,GAAE,MAAsB,EAAE,KAAK,GAAE,SAAkB,EAAE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI;IA+CnK,OAAO;IAMP,QAAQ,IAAK,MAAM;IAInB,cAAc,CAAE,IAAI,EAAE,MAAM;IAS5B,eAAe;IAIf,WAAW,CAAE,QAAQ,EAAE,OAAO;IAS9B,WAAW;IAIL,WAAW,CAAE,WAAW,EAAE,MAAM;YAWxB,qBAAqB;CA4CpC"}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
import { Compartment as e, EditorState as t } from "@codemirror/state";
|
|
2
2
|
import { EditorView as n, drawSelection as r, keymap as i, lineNumbers as a } from "@codemirror/view";
|
|
3
3
|
import { StreamLanguage as o, defaultHighlightStyle as s, syntaxHighlighting as c } from "@codemirror/language";
|
|
4
|
-
import { defaultKeymap as l, history as u, historyKeymap as d } from "@codemirror/commands";
|
|
5
|
-
import { css as
|
|
6
|
-
import { html as
|
|
7
|
-
import { javascript as
|
|
8
|
-
import { json as
|
|
9
|
-
import { markdown as
|
|
10
|
-
import { xml as
|
|
11
|
-
import { vscodeDark as
|
|
12
|
-
import { turtle as
|
|
13
|
-
import { sparql as
|
|
14
|
-
import { ntriples as
|
|
4
|
+
import { defaultKeymap as l, history as u, historyKeymap as d, indentWithTab as f } from "@codemirror/commands";
|
|
5
|
+
import { css as p } from "@codemirror/lang-css";
|
|
6
|
+
import { html as m } from "@codemirror/lang-html";
|
|
7
|
+
import { javascript as h } from "@codemirror/lang-javascript";
|
|
8
|
+
import { json as g } from "@codemirror/lang-json";
|
|
9
|
+
import { markdown as _ } from "@codemirror/lang-markdown";
|
|
10
|
+
import { xml as v } from "@codemirror/lang-xml";
|
|
11
|
+
import { vscodeDark as y, vscodeLight as b } from "@uiw/codemirror-theme-vscode";
|
|
12
|
+
import { turtle as x } from "@codemirror/legacy-modes/mode/turtle";
|
|
13
|
+
import { sparql as S } from "@codemirror/legacy-modes/mode/sparql";
|
|
14
|
+
import { ntriples as C } from "@codemirror/legacy-modes/mode/ntriples";
|
|
15
15
|
// src/lib/code-editor/CodeEditor.ts
|
|
16
|
-
var
|
|
16
|
+
var w = class {
|
|
17
17
|
_view = null;
|
|
18
18
|
_languageCompartment = null;
|
|
19
19
|
_editableCompartment = null;
|
|
20
20
|
_onDirtyChange;
|
|
21
21
|
_isDirty = !1;
|
|
22
|
-
async initialize(o,
|
|
23
|
-
this._view && this._view.destroy(), this._languageCompartment = new e(), this._editableCompartment = new e(), this._onDirtyChange =
|
|
24
|
-
let
|
|
25
|
-
doc:
|
|
22
|
+
async initialize(o, p = "", m = "text/turtle", h = "dark", g) {
|
|
23
|
+
this._view && this._view.destroy(), this._languageCompartment = new e(), this._editableCompartment = new e(), this._onDirtyChange = g, this._isDirty = !1;
|
|
24
|
+
let _ = await this._getLanguageExtension(m), v = t.create({
|
|
25
|
+
doc: p,
|
|
26
26
|
extensions: [
|
|
27
|
-
|
|
27
|
+
h === "dark" ? y : b,
|
|
28
28
|
n.theme({ "&": { minHeight: "6lh" } }),
|
|
29
|
-
this._languageCompartment.of(
|
|
29
|
+
this._languageCompartment.of(_),
|
|
30
30
|
this._editableCompartment.of(n.editable.of(!0)),
|
|
31
31
|
c(s, { fallback: !0 }),
|
|
32
32
|
a(),
|
|
@@ -36,11 +36,15 @@ var C = class {
|
|
|
36
36
|
n.updateListener.of((e) => {
|
|
37
37
|
e.docChanged && !this._isDirty && (this._isDirty = !0, this._onDirtyChange?.(!0));
|
|
38
38
|
}),
|
|
39
|
-
i.of([
|
|
39
|
+
i.of([
|
|
40
|
+
f,
|
|
41
|
+
...l,
|
|
42
|
+
...d
|
|
43
|
+
])
|
|
40
44
|
]
|
|
41
45
|
});
|
|
42
46
|
this._view = new n({
|
|
43
|
-
state:
|
|
47
|
+
state: v,
|
|
44
48
|
parent: o
|
|
45
49
|
});
|
|
46
50
|
}
|
|
@@ -78,29 +82,29 @@ var C = class {
|
|
|
78
82
|
async _getLanguageExtension(e) {
|
|
79
83
|
switch (e) {
|
|
80
84
|
case "text/turtle":
|
|
81
|
-
case "text/n3": return o.define(
|
|
85
|
+
case "text/n3": return o.define(x);
|
|
82
86
|
case "application/sparql-update":
|
|
83
|
-
case "application/sparql-query": return o.define(
|
|
87
|
+
case "application/sparql-query": return o.define(S);
|
|
84
88
|
case "application/nquads":
|
|
85
89
|
case "application/n-quads":
|
|
86
|
-
case "application/n-triples": return o.define(
|
|
90
|
+
case "application/n-triples": return o.define(C);
|
|
87
91
|
case "application/json":
|
|
88
|
-
case "application/ld+json": return
|
|
92
|
+
case "application/ld+json": return g();
|
|
89
93
|
case "text/html":
|
|
90
|
-
case "application/xhtml+xml": return
|
|
94
|
+
case "application/xhtml+xml": return m();
|
|
91
95
|
case "text/markdown":
|
|
92
96
|
case "text/x-markdown":
|
|
93
|
-
case "text/md": return
|
|
97
|
+
case "text/md": return _();
|
|
94
98
|
case "application/rdf+xml":
|
|
95
|
-
case "application/xml": return
|
|
96
|
-
case "text/css": return
|
|
99
|
+
case "application/xml": return v();
|
|
100
|
+
case "text/css": return p();
|
|
97
101
|
case "text/javascript":
|
|
98
102
|
case "application/javascript":
|
|
99
|
-
case "application/ecmascript": return
|
|
103
|
+
case "application/ecmascript": return h();
|
|
100
104
|
default: return [];
|
|
101
105
|
}
|
|
102
106
|
}
|
|
103
107
|
};
|
|
104
|
-
export {
|
|
108
|
+
export { w as CodeEditor };
|
|
105
109
|
|
|
106
110
|
//# sourceMappingURL=CodeEditor.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeEditor.esm.js","names":["CodeEditor","Compartment","onDirtyChange","languageExtension","contentType","state","EditorState","initialDoc","theme","vscodeDark","vscodeLight","EditorView","syntaxHighlighting","defaultHighlightStyle","lineNumbers","history","drawSelection","update","keymap","defaultKeymap","historyKeymap","container","text","editableCompartment","readOnly","languageCompartment","extension","StreamLanguage","turtle","sparql","ntriples","json","html","markdown","xml","css","javascript"],"sources":["../../../src/lib/code-editor/CodeEditor.ts"],"sourcesContent":["import type { ThemeMode } from 'pane-registry'\nimport { Compartment, EditorState } from '@codemirror/state'\nimport { EditorView, drawSelection, keymap, lineNumbers } from '@codemirror/view'\nimport { defaultHighlightStyle, syntaxHighlighting, StreamLanguage } from '@codemirror/language'\nimport { defaultKeymap, history, historyKeymap } from '@codemirror/commands'\nimport { css } from '@codemirror/lang-css'\nimport { html } from '@codemirror/lang-html'\nimport { javascript } from '@codemirror/lang-javascript'\nimport { json } from '@codemirror/lang-json'\nimport { markdown } from '@codemirror/lang-markdown'\nimport { xml } from '@codemirror/lang-xml'\nimport { vscodeDark, vscodeLight } from '@uiw/codemirror-theme-vscode'\nimport { turtle } from '@codemirror/legacy-modes/mode/turtle'\nimport { sparql } from '@codemirror/legacy-modes/mode/sparql'\nimport { ntriples } from '@codemirror/legacy-modes/mode/ntriples'\n\nexport class CodeEditor {\n private _view: EditorView | null = null\n private _languageCompartment: Compartment | null = null\n private _editableCompartment: Compartment | null = null\n private _onDirtyChange?: (dirty: boolean) => void\n private _isDirty = false\n\n async initialize (container: HTMLElement, initialDoc = '', contentType: string = 'text/turtle', theme: ThemeMode = 'dark', onDirtyChange?: (dirty: boolean) => void) {\n if (this._view) {\n this._view.destroy()\n }\n\n this._languageCompartment = new Compartment()\n this._editableCompartment = new Compartment()\n this._onDirtyChange = onDirtyChange\n this._isDirty = false\n const languageExtension = await this._getLanguageExtension(contentType)\n\n const state = EditorState.create({\n doc: initialDoc,\n extensions: [\n theme === 'dark' ? vscodeDark : vscodeLight,\n EditorView.theme({\n '&': {\n minHeight: '6lh'\n }\n }),\n this._languageCompartment.of(languageExtension),\n this._editableCompartment.of(EditorView.editable.of(true)),\n syntaxHighlighting(defaultHighlightStyle, { fallback: true }),\n lineNumbers(),\n history(),\n drawSelection(),\n EditorView.lineWrapping,\n EditorView.updateListener.of((update) => {\n if (update.docChanged && !this._isDirty) {\n this._isDirty = true\n this._onDirtyChange?.(true)\n }\n }),\n keymap.of([\n ...defaultKeymap,\n ...historyKeymap\n ])\n ]\n })\n\n this._view = new EditorView({\n state,\n parent: container\n })\n }\n\n destroy () {\n this._view?.destroy()\n this._view = null\n this._isDirty = false\n }\n\n getValue (): string {\n return this._view ? this._view.state.doc.toString() : ''\n }\n\n replaceContent (text: string) {\n if (!this._view) return\n const current = this._view.state.doc.toString()\n if (current === text) return\n this._view.dispatch({\n changes: { from: 0, to: this._view.state.doc.length, insert: text }\n })\n }\n\n resetDirtyState () {\n this._isDirty = false\n }\n\n setReadOnly (readOnly: boolean) {\n if (!this._view) return\n const editableCompartment = this._editableCompartment\n if (!editableCompartment) return\n this._view.dispatch({\n effects: editableCompartment.reconfigure(EditorView.editable.of(!readOnly))\n })\n }\n\n focusEditor () {\n this._view?.focus()\n }\n\n async setLanguage (contentType: string) {\n if (!this._view) return\n const languageCompartment = this._languageCompartment\n if (!languageCompartment) return\n\n const extension = await this._getLanguageExtension(contentType)\n this._view.dispatch({\n effects: languageCompartment.reconfigure(extension)\n })\n }\n\n private async _getLanguageExtension (contentType: string) {\n switch (contentType) {\n case 'text/turtle':\n case 'text/n3':\n return StreamLanguage.define(turtle)\n\n case 'application/sparql-update':\n case 'application/sparql-query':\n return StreamLanguage.define(sparql)\n\n case 'application/nquads':\n case 'application/n-quads':\n case 'application/n-triples':\n return StreamLanguage.define(ntriples)\n\n case 'application/json':\n case 'application/ld+json':\n return json()\n\n case 'text/html':\n case 'application/xhtml+xml':\n return html()\n\n case 'text/markdown':\n case 'text/x-markdown':\n case 'text/md':\n return markdown()\n\n case 'application/rdf+xml':\n case 'application/xml':\n return xml()\n\n case 'text/css':\n return css()\n\n case 'text/javascript':\n case 'application/javascript':\n case 'application/ecmascript':\n return javascript()\n\n default:\n return []\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAgBA,IAAaA,IAAb,MAAwB;CACtB,QAAmC;CACnC,uBAAmD;CACnD,uBAAmD;CACnD;CACA,WAAmB;CAEnB,MAAM,WAAY,GAAwB,IAAa,IAAI,IAAsB,eAAe,IAAmB,QAAQ,GAA0C;EAQnK,AAPI,KAAK,SACP,KAAK,MAAM,QAAQ,GAGrB,KAAK,uBAAuB,IAAIC,EAAY,GAC5C,KAAK,uBAAuB,IAAIA,EAAY,GAC5C,KAAK,iBAAiBC,GACtB,KAAK,WAAW;EAChB,IAAMC,IAAoB,MAAM,KAAK,sBAAsBC,CAAW,GAEhEC,IAAQC,EAAY,OAAO;GAC/B,KAAKC;GACL,YAAY;IACVC,MAAU,SAASC,IAAaC;IAChCC,EAAW,MAAM,EACf,KAAK,EACH,WAAW,MACb,EACF,CAAC;IACD,KAAK,qBAAqB,GAAGR,CAAiB;IAC9C,KAAK,qBAAqB,GAAGQ,EAAW,SAAS,GAAG,EAAI,CAAC;IACzDC,EAAmBC,GAAuB,EAAE,UAAU,GAAK,CAAC;IAC5DC,EAAY;IACZC,EAAQ;IACRC,EAAc;IACdL,EAAW;IACXA,EAAW,eAAe,IAAI,MAAW;KACvC,AAAIM,EAAO,cAAc,CAAC,KAAK,aAC7B,KAAK,WAAW,IAChB,KAAK,iBAAiB,EAAI;IAE9B,CAAC;IACDC,EAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"CodeEditor.esm.js","names":["CodeEditor","Compartment","onDirtyChange","languageExtension","contentType","state","EditorState","initialDoc","theme","vscodeDark","vscodeLight","EditorView","syntaxHighlighting","defaultHighlightStyle","lineNumbers","history","drawSelection","update","keymap","indentWithTab","defaultKeymap","historyKeymap","container","text","editableCompartment","readOnly","languageCompartment","extension","StreamLanguage","turtle","sparql","ntriples","json","html","markdown","xml","css","javascript"],"sources":["../../../src/lib/code-editor/CodeEditor.ts"],"sourcesContent":["import type { ThemeMode } from 'pane-registry'\nimport { Compartment, EditorState } from '@codemirror/state'\nimport { EditorView, drawSelection, keymap, lineNumbers } from '@codemirror/view'\nimport { defaultHighlightStyle, syntaxHighlighting, StreamLanguage } from '@codemirror/language'\nimport { defaultKeymap, history, historyKeymap, indentWithTab } from '@codemirror/commands'\nimport { css } from '@codemirror/lang-css'\nimport { html } from '@codemirror/lang-html'\nimport { javascript } from '@codemirror/lang-javascript'\nimport { json } from '@codemirror/lang-json'\nimport { markdown } from '@codemirror/lang-markdown'\nimport { xml } from '@codemirror/lang-xml'\nimport { vscodeDark, vscodeLight } from '@uiw/codemirror-theme-vscode'\nimport { turtle } from '@codemirror/legacy-modes/mode/turtle'\nimport { sparql } from '@codemirror/legacy-modes/mode/sparql'\nimport { ntriples } from '@codemirror/legacy-modes/mode/ntriples'\n\nexport class CodeEditor {\n private _view: EditorView | null = null\n private _languageCompartment: Compartment | null = null\n private _editableCompartment: Compartment | null = null\n private _onDirtyChange?: (dirty: boolean) => void\n private _isDirty = false\n\n async initialize (container: HTMLElement, initialDoc = '', contentType: string = 'text/turtle', theme: ThemeMode = 'dark', onDirtyChange?: (dirty: boolean) => void) {\n if (this._view) {\n this._view.destroy()\n }\n\n this._languageCompartment = new Compartment()\n this._editableCompartment = new Compartment()\n this._onDirtyChange = onDirtyChange\n this._isDirty = false\n const languageExtension = await this._getLanguageExtension(contentType)\n\n const state = EditorState.create({\n doc: initialDoc,\n extensions: [\n theme === 'dark' ? vscodeDark : vscodeLight,\n EditorView.theme({\n '&': {\n minHeight: '6lh'\n }\n }),\n this._languageCompartment.of(languageExtension),\n this._editableCompartment.of(EditorView.editable.of(true)),\n syntaxHighlighting(defaultHighlightStyle, { fallback: true }),\n lineNumbers(),\n history(),\n drawSelection(),\n EditorView.lineWrapping,\n EditorView.updateListener.of((update) => {\n if (update.docChanged && !this._isDirty) {\n this._isDirty = true\n this._onDirtyChange?.(true)\n }\n }),\n keymap.of([\n indentWithTab,\n ...defaultKeymap,\n ...historyKeymap\n ])\n ]\n })\n\n this._view = new EditorView({\n state,\n parent: container\n })\n }\n\n destroy () {\n this._view?.destroy()\n this._view = null\n this._isDirty = false\n }\n\n getValue (): string {\n return this._view ? this._view.state.doc.toString() : ''\n }\n\n replaceContent (text: string) {\n if (!this._view) return\n const current = this._view.state.doc.toString()\n if (current === text) return\n this._view.dispatch({\n changes: { from: 0, to: this._view.state.doc.length, insert: text }\n })\n }\n\n resetDirtyState () {\n this._isDirty = false\n }\n\n setReadOnly (readOnly: boolean) {\n if (!this._view) return\n const editableCompartment = this._editableCompartment\n if (!editableCompartment) return\n this._view.dispatch({\n effects: editableCompartment.reconfigure(EditorView.editable.of(!readOnly))\n })\n }\n\n focusEditor () {\n this._view?.focus()\n }\n\n async setLanguage (contentType: string) {\n if (!this._view) return\n const languageCompartment = this._languageCompartment\n if (!languageCompartment) return\n\n const extension = await this._getLanguageExtension(contentType)\n this._view.dispatch({\n effects: languageCompartment.reconfigure(extension)\n })\n }\n\n private async _getLanguageExtension (contentType: string) {\n switch (contentType) {\n case 'text/turtle':\n case 'text/n3':\n return StreamLanguage.define(turtle)\n\n case 'application/sparql-update':\n case 'application/sparql-query':\n return StreamLanguage.define(sparql)\n\n case 'application/nquads':\n case 'application/n-quads':\n case 'application/n-triples':\n return StreamLanguage.define(ntriples)\n\n case 'application/json':\n case 'application/ld+json':\n return json()\n\n case 'text/html':\n case 'application/xhtml+xml':\n return html()\n\n case 'text/markdown':\n case 'text/x-markdown':\n case 'text/md':\n return markdown()\n\n case 'application/rdf+xml':\n case 'application/xml':\n return xml()\n\n case 'text/css':\n return css()\n\n case 'text/javascript':\n case 'application/javascript':\n case 'application/ecmascript':\n return javascript()\n\n default:\n return []\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("
|
|
1
|
+
const e=require("../traits/DialogTrait.cjs.js"),t=require("../../dialogs/context.cjs.js"),n=require("../web-component/WebComponent.cjs.js");require("../web-component/index.cjs.js");let r=require("@lit/context");var i,a,o,s,c;function l(e,t,n){u(e,t),t.set(e,n)}function u(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}function d(e,t,n){return(t=g(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function f(e,t,n){return e.set(m(e,t),n),n}function p(e,t){return e.get(m(e,t))}function m(e,t,n){if(typeof e==`function`?e===t:e.has(t))return arguments.length<3?t:n;throw TypeError(`Private element is not present on this object`)}function h(e,t,n,r,i,a){function o(e,t,n){return function(r,i){return n&&n(r),e[t].call(r,i)}}function s(e,t){for(var n=0;n<e.length;n++)e[n].call(t);return t}function c(e,t,n,r){if(typeof e!=`function`&&(r||e!==void 0))throw TypeError(t+` must `+(n||`be`)+` a function`+(r?``:` or undefined`));return e}function l(e,t,n,r,i,a,s,l,u,d,f,p,m){function h(e){if(!m(e))throw TypeError(`Attempted to access private element on non-instance`)}var g,_=t[0],y=t[3],b=!l;if(!b){n||Array.isArray(_)||(_=[_]);var x={},S=[],C=i===3?`get`:i===4||p?`set`:`value`;d?(f||p?x={get:v(function(){return y(this)},r,`get`),set:function(e){t[4](this,e)}}:x[C]=y,f||v(x[C],r,i===2?``:C)):f||(x=Object.getOwnPropertyDescriptor(e,r))}for(var w=e,T=_.length-1;T>=0;T-=n?2:1){var E=_[T],D=n?_[T-1]:void 0,O={},k={kind:[`field`,`accessor`,`method`,`getter`,`setter`,`class`][i],name:r,metadata:a,addInitializer:function(e,t){if(e.v)throw Error(`attempted to call addInitializer after decoration was finished`);c(t,`An initializer`,`be`,!0),s.push(t)}.bind(null,O)};try{if(b)(g=c(E.call(D,w,k),`class decorators`,`return`))&&(w=g);else{var A,j;k.static=u,k.private=d,d?i===2?A=function(e){return h(e),x.value}:(i<4&&(A=o(x,`get`,h)),i!==3&&(j=o(x,`set`,h))):(A=function(e){return e[r]},(i<2||i===4)&&(j=function(e,t){e[r]=t}));var M=k.access={has:d?m.bind():function(e){return r in e}};if(A&&(M.get=A),j&&(M.set=j),w=E.call(D,p?{get:x.get,set:x.set}:x[C],k),p){if(typeof w==`object`&&w)(g=c(w.get,`accessor.get`))&&(x.get=g),(g=c(w.set,`accessor.set`))&&(x.set=g),(g=c(w.init,`accessor.init`))&&S.push(g);else if(w!==void 0)throw TypeError(`accessor decorators must return an object with get, set, or init properties or void 0`)}else c(w,(f?`field`:`method`)+` decorators`,`return`)&&(f?S.push(w):x[C]=w)}}finally{O.v=!0}}return(f||p)&&l.push(function(e,t){for(var n=S.length-1;n>=0;n--)t=S[n].call(e,t);return t}),f||b||(d?p?l.push(o(x,`get`),o(x,`set`)):l.push(i===2?x[C]:o.call.bind(x[C])):Object.defineProperty(e,r,x)),w}function u(e,t){return Object.defineProperty(e,Symbol.metadata||Symbol.for(`Symbol.metadata`),{configurable:!0,enumerable:!0,value:t})}if(arguments.length>=6)var d=a[Symbol.metadata||Symbol.for(`Symbol.metadata`)];var f=Object.create(d??null),p=function(e,t,n,r){var i,a,o=[],c=function(t){return y(t)===e},u=new Map;function d(e){e&&o.push(s.bind(null,e))}for(var f=0;f<t.length;f++){var p=t[f];if(Array.isArray(p)){var m=p[1],h=p[2],_=p.length>3,v=16&m,b=!!(8&m),x=(m&=7)==0,S=h+`/`+b;if(!x&&!_){var C=u.get(S);if(!0===C||C===3&&m!==4||C===4&&m!==3)throw Error(`Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: `+h);u.set(S,!(m>2)||m)}l(b?e:e.prototype,p,v,_?`#`+h:g(h),m,r,b?a||=[]:i||=[],o,b,_,x,m===1,b&&_?c:n)}}return d(i),d(a),o}(e,t,i,f);return n.length||u(e,f),{e:p,get c(){var t=[];return n.length&&[u(l(e,[n],r,e.name,5,f,t),f),s.bind(null,t,e)]}}}function g(e){var t=_(e,`string`);return typeof t==`symbol`?t:t+``}function _(e,t){if(typeof e!=`object`||!e)return e;var n;if(typeof Symbol<`u`&&(n=e[Symbol.toPrimitive])!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function v(e,t,n){typeof t==`symbol`&&(t=(t=t.description)?`[`+t+`]`:``);try{Object.defineProperty(e,"name",{configurable:!0,value:n?n+` `+t:t})}catch{}return e}function y(e){if(Object(e)!==e)throw TypeError(`right-hand side of 'in' should be an object, got `+(e===null?`null`:typeof e));return e}var b=new WeakMap;c=(o=(0,r.consume)({context:t.dialogContext,subscribe:!0}),`dialogTrait`);var x=class extends n.default{get context(){return p(b,this)}set context(e){f(b,this,e)}constructor(){super(),d(this,c,void a(this)),l(this,b,s(this,t.DEFAULT_DIALOG_CONTEXT)),this.dialogTrait=this.addTrait(new e.default(this,{getContext:()=>this.context}))}close(e){this.dialogTrait.close(e)}};i=x,[s,a]=h(i,[[o,1,`context`]],[],0,void 0,n.default).e,exports.default=x;
|
|
2
2
|
//# sourceMappingURL=DialogComponent.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DialogComponent.cjs.js","names":["DialogTrait","dialogContext","WebComponent","DEFAULT_DIALOG_CONTEXT","consume","_A","WeakMap","_ref","_contextDecs","context","subscribe","DialogComponent","_classPrivateFieldGet","v","_classPrivateFieldSet","constructor","_defineProperty","_initProto","_classPrivateFieldInitSpec","_init_context","dialogTrait","addTrait","getContext","close","result","_DialogComponent","_applyDecs","e","default","consume","dialogContext","WebComponent","DEFAULT_DIALOG_CONTEXT","DialogTrait","
|
|
1
|
+
{"version":3,"file":"DialogComponent.cjs.js","names":["DialogTrait","dialogContext","WebComponent","DEFAULT_DIALOG_CONTEXT","consume","_A","WeakMap","_ref","_contextDecs","context","subscribe","DialogComponent","_classPrivateFieldGet","v","_classPrivateFieldSet","constructor","_defineProperty","_initProto","_classPrivateFieldInitSpec","_init_context","dialogTrait","addTrait","getContext","close","result","_DialogComponent","_applyDecs","e","default","consume","dialogContext","WebComponent","DEFAULT_DIALOG_CONTEXT","DialogTrait","require_DialogTrait","require_context","require_WebComponent","_lit_context","_DialogComponent","_initProto","_contextDecs","_init_context","_ref","_classPrivateFieldInitSpec","_checkPrivateRedeclaration","a","_defineProperty","_toPropertyKey","r","t","_classPrivateFieldSet","s","_assertClassBrand","_classPrivateFieldGet","_applyDecs","i","n","o","c","applyDec","m","h","y","v","g","u","w","A","d","f","p","_setFunctionName","P","j","D","E","I","O","k","F","l","N","_checkInRHS","b","_toPrimitive","e","_A","DialogComponent","result"],"sources":["../../../../src/lib/components/dialog-component/DialogComponent.ts"],"sourcesContent":["import DialogTrait from '@/lib/components/traits/DialogTrait'\nimport { dialogContext } from '@/lib/dialogs/context'\nimport { WebComponent } from '@/lib/components/web-component'\nimport { DialogContext, DEFAULT_DIALOG_CONTEXT } from '@/lib/dialogs/context'\nimport { consume } from '@lit/context'\n\nexport default class DialogComponent<T> extends WebComponent<{ dialogResult: T }> {\n private dialogTrait: DialogTrait<DialogComponent<T>>\n\n @consume({ context: dialogContext, subscribe: true })\n private accessor context: DialogContext = DEFAULT_DIALOG_CONTEXT;\n\n constructor () {\n super()\n\n this.dialogTrait = this.addTrait(new DialogTrait(this, { getContext: () => this.context }))\n }\n\n protected close (result?: T) {\n this.dialogTrait.close(result)\n }\n}\n"],"mappings":"A,mxIAIsC,IAAAK,EAAA,IAAAC,QAAAC,GAAAC,GAAAA,EAKjCJ,EAAAA,QAAAA,CAAQ,CAAEK,QAASR,EAAAA,cAAeS,UAAW,EAAK,CAAC,EAAC,eAH1C,IAAMC,EAAN,cAAiCT,EAAAA,OAAkC,CAAA,IAI7DO,SAAO,CAAA,OAAAG,EAAAP,EAAA,IAAA,CAAA,CAAA,IAAPI,QAAOI,EAAA,CAAAC,EAAAT,EAAA,KAAAQ,CAAA,CAAA,CAExBE,aAAe,CACb,MAAM,EAACC,EAAA,KAAAT,EAAA,KAAAU,EAAA,IAAA,CAAA,EAAAC,EAAA,KAAAb,EAAAc,EAAA,KAHiChB,EAAAA,sBAAsB,CAAA,EAK9D,KAAKiB,YAAc,KAAKC,SAAS,IAAIrB,EAAAA,QAAY,KAAM,CAAEsB,eAAkB,KAAKb,OAAQ,CAAC,CAAC,CAC5F,CAEUc,MAAOC,EAAY,CAC3B,KAAKJ,YAAYG,MAAMC,CAAM,CAC/B,CACJ,EAACC,EAfoBd,EAAe,CAAAQ,EAAAF,GAAAS,EAAAD,EAAA,CAAA,CAAAjB,EAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,EAAA,IAAA,GAAYN,EAAAA,OAAY,CAAA,CAAAyB,E"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import n from "
|
|
1
|
+
import e from "../traits/DialogTrait.esm.js";
|
|
2
|
+
import { DEFAULT_DIALOG_CONTEXT as t, dialogContext as n } from "../../dialogs/context.esm.js";
|
|
3
3
|
import r from "../web-component/WebComponent.esm.js";
|
|
4
4
|
import "../web-component/index.esm.js";
|
|
5
5
|
import { consume as i } from "@lit/context";
|
|
@@ -175,7 +175,7 @@ function b(e) {
|
|
|
175
175
|
}
|
|
176
176
|
var x = /*#__PURE__*/ new WeakMap();
|
|
177
177
|
l = (s = i({
|
|
178
|
-
context:
|
|
178
|
+
context: n,
|
|
179
179
|
subscribe: !0
|
|
180
180
|
}), "dialogTrait");
|
|
181
181
|
var S = class extends r {
|
|
@@ -186,7 +186,7 @@ var S = class extends r {
|
|
|
186
186
|
p(x, this, e);
|
|
187
187
|
}
|
|
188
188
|
constructor() {
|
|
189
|
-
super(), f(this, l, void o(this)), u(this, x, c(this,
|
|
189
|
+
super(), f(this, l, void o(this)), u(this, x, c(this, t)), this.dialogTrait = this.addTrait(new e(this, { getContext: () => this.context }));
|
|
190
190
|
}
|
|
191
191
|
close(e) {
|
|
192
192
|
this.dialogTrait.close(e);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require("./ids.cjs.js"),t=require("./decorators.cjs.js"),n=require("./traits/DialogTrait.cjs.js"),r=require("./web-component/WebComponent.cjs.js");require("./
|
|
1
|
+
const e=require("./ids.cjs.js"),t=require("./decorators.cjs.js"),n=require("./traits/DialogTrait.cjs.js"),r=require("./web-component/WebComponent.cjs.js");require("./dialog-component/index.cjs.js");const i=require("./dialog-component/DialogComponent.cjs.js");require("./form-control-component/index.cjs.js");const a=require("./traits/FormControlTrait.cjs.js"),o=require("./form-control-component/FormControlComponent.cjs.js");require("./traits/index.cjs.js"),require("./web-component/index.cjs.js"),exports.DialogComponent=i.default,exports.DialogTrait=n.default,exports.FormControlComponent=o.default,exports.FormControlTrait=a.default,exports.WebComponent=r.default,exports.customElement=t.customElement,exports.generateId=e.generateId;
|
|
@@ -2,11 +2,11 @@ import { generateId as e } from "./ids.esm.js";
|
|
|
2
2
|
import { customElement as t } from "./decorators.esm.js";
|
|
3
3
|
import n from "./traits/DialogTrait.esm.js";
|
|
4
4
|
import r from "./web-component/WebComponent.esm.js";
|
|
5
|
-
import "./web-component/index.esm.js";
|
|
6
|
-
import i from "./dialog-component/DialogComponent.esm.js";
|
|
7
5
|
import "./dialog-component/index.esm.js";
|
|
6
|
+
import i from "./dialog-component/DialogComponent.esm.js";
|
|
7
|
+
import "./form-control-component/index.esm.js";
|
|
8
8
|
import a from "./traits/FormControlTrait.esm.js";
|
|
9
9
|
import o from "./form-control-component/FormControlComponent.esm.js";
|
|
10
|
-
import "./form-control-component/index.esm.js";
|
|
11
10
|
import "./traits/index.esm.js";
|
|
11
|
+
import "./web-component/index.esm.js";
|
|
12
12
|
export { i as DialogComponent, n as DialogTrait, o as FormControlComponent, a as FormControlTrait, r as WebComponent, t as customElement, e as generateId };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("./
|
|
1
|
+
const e=require("./events/show-dialog.cjs.js"),t=require("./Dialog.cjs.js");function n(n,r){let i=new n;Object.assign(i,r?.props);let a=new t.default(i,r);return document.dispatchEvent(new e.ShowDialogEvent(a)),a.element}exports.showDialog=n;
|
|
2
2
|
//# sourceMappingURL=helpers.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.cjs.js","names":["Dialog","ShowDialogEvent","
|
|
1
|
+
{"version":3,"file":"helpers.cjs.js","names":["Dialog","ShowDialogEvent","require_show_dialog","require_Dialog","showDialog","element","DialogComponent","config","dialog"],"sources":["../../../src/lib/dialogs/helpers.ts"],"sourcesContent":["import { ShowDialogEvent } from './events/show-dialog'\nimport Dialog, { DialogConfig } from './Dialog'\nimport type WebComponent from '@/lib/components/web-component/WebComponent'\nimport type { GetWebComponentMetadata, WebComponentConstructor } from '@/lib/components/web-component/WebComponent'\n\nexport type GetDialogResult<T, TFallback = unknown> = GetWebComponentMetadata<T> extends { dialogResult: infer TResult } ? TResult : TFallback\n\nexport function showDialog<T extends WebComponent> (\n DialogComponent: WebComponentConstructor<T>,\n config?: DialogConfig<GetDialogResult<T>> & { props?: Partial<T> }\n): T {\n const element = new DialogComponent()\n\n Object.assign(element, config?.props)\n\n const dialog = new Dialog(element, config)\n\n document.dispatchEvent(new ShowDialogEvent(dialog))\n\n return dialog.element as T\n}\n"],"mappings":"A,4EAOA,SAAgBI,EACd,EACA,EACG,CACH,IAAMC,EAAU,IAAIC,EAEpB,OAAO,OAAOD,EAASE,GAAQ,KAAK,EAEpC,IAAMC,EAAS,IAAIR,EAAAA,QAAOK,EAASE,CAAM,EAIzC,OAFA,SAAS,cAAc,IAAIN,EAAAA,gBAAgBO,CAAM,CAAC,EAE3CA,EAAO,OAChB,C"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import e from "./
|
|
2
|
-
import
|
|
1
|
+
import { ShowDialogEvent as e } from "./events/show-dialog.esm.js";
|
|
2
|
+
import t from "./Dialog.esm.js";
|
|
3
3
|
// src/lib/dialogs/helpers.ts
|
|
4
4
|
function n(n, r) {
|
|
5
5
|
let i = new n();
|
|
6
6
|
Object.assign(i, r?.props);
|
|
7
|
-
let a = new
|
|
8
|
-
return document.dispatchEvent(new
|
|
7
|
+
let a = new t(i, r);
|
|
8
|
+
return document.dispatchEvent(new e(a)), a.element;
|
|
9
9
|
}
|
|
10
10
|
export { n as showDialog };
|
|
11
11
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("
|
|
1
|
+
const e=require("../../login/login.cjs.js"),t=require("../ns.cjs.js");async function n(t,n,r={}){let i=new Set(r.excludedPaneNames||[]),a=n.session.paneRegistry,o=a.list.filter(e=>!e.global&&!i.has(e.name)&&e.label(t,n));if(o.length===0){let e=r.fallbackPaneName?a.byName(r.fallbackPaneName):void 0;return e?[e]:[]}let s=await e.filterAvailablePanes(o);return s.length===0?[o[0]]:a.list.indexOf(o[0])<a.list.indexOf(s[0])?[o[0]].concat(s):s}function r(e,n,r){let i=n.session.store,a=i.any(e,t.default.ui(`mintClass`),void 0,e.doc())||i.any(e.doc(),t.default.ui(`mintClass`),void 0,e.doc());if(a){let e=r.find(e=>e.mintClass?.sameTerm(a));if(e)return e}return r.find(t=>t.shouldGetFocus?.(e))||r[0]}exports.getPreferredPane=r,exports.getRelevantPanes=n;
|
|
2
2
|
//# sourceMappingURL=relevant-panes.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relevant-panes.cjs.js","names":["filterAvailablePanes","ns","
|
|
1
|
+
{"version":3,"file":"relevant-panes.cjs.js","names":["filterAvailablePanes","ns","require_login","require_ns","getRelevantPanes","excludedPaneNames","options","paneRegistry","context","relevantPanes","pane","subject","fallbackPane","filteredPanes","getPreferredPane","store","mintClass","mintClassPane"],"sources":["../../../src/lib/file-explorer/relevant-panes.ts"],"sourcesContent":["import type { DataBrowserContext, PaneDefinition } from 'pane-registry'\nimport type { NamedNode } from 'rdflib'\nimport { filterAvailablePanes } from '@/login/login'\nimport ns from '@/lib/ns'\n\nexport type RelevantPaneOptions = {\n excludedPaneNames?: readonly string[]\n fallbackPaneName?: string\n}\n\n/**\n * Returns panes that can represent a subject, preserving legacy outliner ordering.\n *\n * Audience filtering narrows the list, but the first relevant pane is retained\n * even when its audience does not match. The legacy outliner deliberately kept\n * this most relevant view available, including when no panes match the audience.\n */\nexport async function getRelevantPanes (\n subject: NamedNode,\n context: DataBrowserContext,\n options: RelevantPaneOptions = {}\n): Promise<PaneDefinition[]> {\n const excludedPaneNames = new Set(options.excludedPaneNames || [])\n const paneRegistry = context.session.paneRegistry\n const relevantPanes = paneRegistry.list.filter(\n pane => !pane.global &&\n !excludedPaneNames.has(pane.name) &&\n pane.label(subject, context)\n )\n\n if (relevantPanes.length === 0) {\n const fallbackPane = options.fallbackPaneName\n ? paneRegistry.byName(options.fallbackPaneName)\n : undefined\n return fallbackPane ? [fallbackPane] : []\n }\n\n const filteredPanes = await filterAvailablePanes(relevantPanes)\n if (filteredPanes.length === 0) return [relevantPanes[0]]\n\n const firstRelevantPaneIndex = paneRegistry.list.indexOf(relevantPanes[0])\n const firstFilteredPaneIndex = paneRegistry.list.indexOf(filteredPanes[0])\n return firstRelevantPaneIndex < firstFilteredPaneIndex\n ? [relevantPanes[0]].concat(filteredPanes)\n : filteredPanes\n}\n\n/**\n * Chooses the default pane from the relevant panes for a resource.\n *\n * A resource's `ui:mintClass` is an explicit declaration of the pane that\n * created it, so it takes precedence over panes that merely request focus.\n */\nexport function getPreferredPane (\n subject: NamedNode,\n context: DataBrowserContext,\n relevantPanes: PaneDefinition[]\n): PaneDefinition | undefined {\n const store = context.session.store\n const mintClass = store.any(subject, ns.ui('mintClass'), undefined, subject.doc()) ||\n store.any(subject.doc(), ns.ui('mintClass'), undefined, subject.doc())\n if (mintClass) {\n const mintClassPane = relevantPanes.find(pane => pane.mintClass?.sameTerm(mintClass))\n if (mintClassPane) return mintClassPane\n }\n\n return relevantPanes.find(pane => pane.shouldGetFocus?.(subject)) || relevantPanes[0]\n}\n"],"mappings":"A,sEAiBA,eAAsBI,EACpB,EACA,EACA,EAA+B,CAAC,EACL,CAC3B,IAAMC,EAAoB,IAAI,IAAIC,EAAQ,mBAAqB,CAAC,CAAC,EAC3DC,EAAeC,EAAQ,QAAQ,aAC/BC,EAAgBF,EAAa,KAAK,OACtC,GAAQ,CAACG,EAAK,QACZ,CAACL,EAAkB,IAAIK,EAAK,IAAI,GAChCA,EAAK,MAAMC,EAASH,CAAO,CAC/B,EAEA,GAAIC,EAAc,SAAW,EAAG,CAC9B,IAAMG,EAAeN,EAAQ,iBACzBC,EAAa,OAAOD,EAAQ,gBAAgB,EAC5C,IAAA,GACJ,OAAOM,EAAe,CAACA,CAAY,EAAI,CAAC,CAC1C,CAEA,IAAMC,EAAgB,MAAMb,EAAAA,qBAAqBS,CAAa,EAK9D,OAJII,EAAc,SAAW,EAAU,CAACJ,EAAc,EAAE,EAEzBF,EAAa,KAAK,QAAQE,EAAc,EAEhE,EADwBF,EAAa,KAAK,QAAQM,EAAc,EACvC,EAC5B,CAACJ,EAAc,EAAE,CAAC,CAAC,OAAOI,CAAa,EACvCA,CACN,CAQA,SAAgBC,EACd,EACA,EACA,EAC4B,CAC5B,IAAMC,EAAQP,EAAQ,QAAQ,MACxBQ,EAAYD,EAAM,IAAIJ,EAASV,EAAAA,QAAG,GAAG,WAAW,EAAG,IAAA,GAAWU,EAAQ,IAAI,CAAC,GAC/EI,EAAM,IAAIJ,EAAQ,IAAI,EAAGV,EAAAA,QAAG,GAAG,WAAW,EAAG,IAAA,GAAWU,EAAQ,IAAI,CAAC,EACvE,GAAIK,EAAW,CACb,IAAMC,EAAgBR,EAAc,KAAK,GAAQC,EAAK,WAAW,SAASM,CAAS,CAAC,EACpF,GAAIC,EAAe,OAAOA,CAC5B,CAEA,OAAOR,EAAc,KAAK,GAAQC,EAAK,iBAAiBC,CAAO,CAAC,GAAKF,EAAc,EACrF,C"}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import e from "
|
|
2
|
-
import
|
|
1
|
+
import { filterAvailablePanes as e } from "../../login/login.esm.js";
|
|
2
|
+
import t from "../ns.esm.js";
|
|
3
3
|
// src/lib/file-explorer/relevant-panes.ts
|
|
4
|
-
async function n(
|
|
5
|
-
let i = new Set(r.excludedPaneNames || []), a = n.session.paneRegistry, o = a.list.filter((
|
|
4
|
+
async function n(t, n, r = {}) {
|
|
5
|
+
let i = new Set(r.excludedPaneNames || []), a = n.session.paneRegistry, o = a.list.filter((e) => !e.global && !i.has(e.name) && e.label(t, n));
|
|
6
6
|
if (o.length === 0) {
|
|
7
7
|
let e = r.fallbackPaneName ? a.byName(r.fallbackPaneName) : void 0;
|
|
8
8
|
return e ? [e] : [];
|
|
9
9
|
}
|
|
10
|
-
let s = await
|
|
10
|
+
let s = await e(o);
|
|
11
11
|
return s.length === 0 ? [o[0]] : a.list.indexOf(o[0]) < a.list.indexOf(s[0]) ? [o[0]].concat(s) : s;
|
|
12
12
|
}
|
|
13
|
-
function r(
|
|
14
|
-
let i = n.session.store, a = i.any(
|
|
13
|
+
function r(e, n, r) {
|
|
14
|
+
let i = n.session.store, a = i.any(e, t.ui("mintClass"), void 0, e.doc()) || i.any(e.doc(), t.ui("mintClass"), void 0, e.doc());
|
|
15
15
|
if (a) {
|
|
16
16
|
let e = r.find((e) => e.mintClass?.sameTerm(a));
|
|
17
17
|
if (e) return e;
|
|
18
18
|
}
|
|
19
|
-
return r.find((
|
|
19
|
+
return r.find((t) => t.shouldGetFocus?.(e)) || r[0];
|
|
20
20
|
}
|
|
21
21
|
export { r as getPreferredPane, n as getRelevantPanes };
|
|
22
22
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../_virtual/_rolldown/runtime.cjs.js"),t=require("./
|
|
1
|
+
const e=require("../_virtual/_rolldown/runtime.cjs.js"),t=require("./iconBase.cjs.js"),n=require("../utils/label.cjs.js"),r=require("../login/login.cjs.js"),i=require("./ns.cjs.js"),a=require("./style.cjs.js");require("../utils/index.cjs.js");const o=require("../widgets/index.cjs.js");let s=require("rdflib");s=e.__toESM(s);let c=require("solid-logic");var l={icons:t.icons,ns:i.default,rdf:s,style:a.style,widgets:o.widgets_exports};function u(e,t,i,a,o){t||=c.solidLogicSingleton.store,a=a.doc();let u=l.ns,d=s.Namespace(`http://www.w3.org/2005/01/wf/flow#`),f=s.Namespace(`http://purl.org/dc/terms/`);o||={};let p=!!o.newestFirst,m=`white-space: pre-wrap; width: 90%; font-size:100%; border: 0.07em solid #eee; padding: .2em 0.5em; margin: 0.1em 1em 0.1em 1em;`,h=e.createElement(`div`),g,_,v=c.solidLogicSingleton.store.updater,y=function(t,n){let r=e.createElement(`a`);return n&&n.uri&&(r.setAttribute(`href`,n.uri),r.addEventListener(`click`,l.widgets.openHrefInOutlineMode,!0),r.setAttribute(`style`,`color: #3B5998; text-decoration: none; `)),r.textContent=t,r},b=function(t,n){let r=e.createElement(`pre`);return r.setAttribute(`style`,n||`color: grey`),h.appendChild(r),r.appendChild(e.createTextNode(t)),r},x={log:function(e){b(e,`color: #111;`)},warn:function(e){b(e,`color: #880;`)},error:function(e){b(e,`color: #800;`)}},S=function(){let n=e.createElement(`tr`),o=e.createElement(`td`),c=e.createElement(`td`),d=e.createElement(`td`);n.appendChild(o),n.appendChild(c),n.appendChild(d),n.AJAR_date=`9999-01-01T00:00:00Z`;let p=function(){h.setAttribute(`class`,`pendingedit`),h.disabled=!0;let r=[],o=new Date,c=``+o.getTime(),d=s.term(o),p=t.sym(a.uri+`#Msg`+c);r.push(new s.Statement(i,u.wf(`message`),p,a)),r.push(new s.Statement(p,u.sioc(`content`),t.literal(h.value),a)),r.push(new s.Statement(p,f(`created`),d,a)),_&&r.push(new s.Statement(p,u.foaf(`maker`),_,a)),v.update([],r,function(r,i,a){if(!i)n.appendChild(l.widgets.errorMessageBlock(e,`Error writing message: `+a));else{let e={"?msg":p,"?content":t.literal(h.value),"?date":d,"?creator":_};O(e,!1),h.value=``,h.setAttribute(`class`,``),h.disabled=!1}})};n.appendChild(e.createElement(`br`));let h,g,y=function(){w(o,_,``,null),h=e.createElement(`textarea`),c.innerHTML=``,c.appendChild(h),h.rows=3,h.setAttribute(`style`,m+`background-color: #eef;`),h.addEventListener(`keyup`,function(e){e.keyCode===13&&(e.altKey||p())},!1),d.innerHTML=``,g=l.widgets.button(e,l.icons.iconBase+`noun_383448.svg`,`Send`),g.setAttribute(`style`,l.style.buttonStyle+`float: right;`),g.addEventListener(`click`,p,!1),d.appendChild(g)},b={div:c,dom:e};return r.ensureLoggedIn(b).then(e=>{_=e.me,y()}),n};function C(e){let t=c.solidLogicSingleton.store.any(e,l.ns.foaf(`nick`));return t?``+t.value:``+n.label(e)}function w(t,n,r,i){let a=t.appendChild(y(C(n),n));n.uri&&c.solidLogicSingleton.store.fetcher.nowOrWhenFetched(n.doc(),void 0,function(e,t){a.textContent=C(n)}),t.appendChild(e.createElement(`br`)),t.appendChild(y(r,i))}function T(e,n){let r={},i,a;for(i=n.firstChild;i;i=i.nextSibling)i.AJAR_subject&&(r[i.AJAR_subject.uri]=!0);let o=t.each(e,u.wf(`message`)),s={};for(o.forEach(function(e){s[e.uri]=!0,r[e.uri]||D(e)}),i=n.firstChild;i;)a=i.nextSibling,i.AJAR_subject&&!s[i.AJAR_subject.uri]&&n.removeChild(i),i=a}let E=function(e){let n=t.statementsMatching(e).concat(t.statementsMatching(void 0,void 0,e));v.update(n,[],function(e,t,n){t?T(i,g):x.error(`Cant delete messages:`+n)})},D=function(e){let n={"?msg":e,"?creator":t.any(e,u.foaf(`maker`)),"?date":t.any(e,f(`created`)),"?content":t.any(e,u.sioc(`content`))};O(n,!0)},O=function(t,n){let r=t[`?creator`],i=t[`?msg`],a=t[`?date`],o=t[`?content`],s=a.value,c=e.createElement(`tr`);c.AJAR_date=s,c.AJAR_subject=i;let u=!1;for(let e=g.firstChild;e;e=e.nextSibling)if(s>e.AJAR_date&&p||s<e.AJAR_date&&!p){g.insertBefore(c,e),u=!0;break}u||g.appendChild(c);let d=e.createElement(`td`);c.appendChild(d),w(d,r,l.widgets.shortDate(s),i);let f=e.createElement(`td`);c.appendChild(f);let h=e.createElement(`p`);h.setAttribute(`style`,m+(n?`background-color: #e8ffe8;`:`background-color: #white;`)),f.appendChild(h),h.textContent=o.value;let _=e.createElement(`td`);c.appendChild(_);let v=e.createElement(`button`);_.appendChild(v),v.textContent=`-`,c.setAttribute(`class`,`hoverControl`),v.setAttribute(`class`,`hoverControlHide`),v.setAttribute(`style`,`color: red;`),v.addEventListener(`click`,function(t){_.removeChild(v);let n=e.createElement(`button`);n.textContent=`cancel`,_.appendChild(n).addEventListener(`click`,function(e){_.removeChild(r),_.removeChild(n),_.appendChild(v)},!1);let r=e.createElement(`button`);r.textContent=`Delete message`,_.appendChild(r).addEventListener(`click`,function(e){_.removeChild(r),_.removeChild(n),E(i)},!1)},!1)};g=e.createElement(`table`),g.fresh=!1,h.appendChild(g),g.setAttribute(`style`,`width: 100%;`);let k=S();p?g.insertBefore(k,g.firstChild):g.appendChild(k);let A;if(o.query)A=o.query;else{A=new s.Query(`Messages`);let e={};[`msg`,`date`,`creator`,`content`].forEach(function(t){A.vars.push(e[t]=s.variable(t))}),A.pat.add(i,d(`message`),e.msg),A.pat.add(e.msg,u.dct(`created`),e.date),A.pat.add(e.msg,u.foaf(`maker`),e.creator),A.pat.add(e.msg,u.sioc(`content`),e.content)}function j(){g.fresh=!0}return t.query(A,O,void 0,j),h.refresh=function(){T(i,g)},h}exports.messageArea=u;
|
|
2
2
|
//# sourceMappingURL=messageArea.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageArea.cjs.js","names":["solidLogicSingleton","rdf","require_runtime","require_ns","require_label","require_style","require_iconBase","require_index$1","require_login","rdflib","solid_logic","UI","messageArea","messageStore","ns","WF","DCT","newestFirst","options","messageBodyStyle","div","dom","messageTable","me","updater","anchor","a","term","text","mention","pre","style","message","announce","newMessageForm","form","lhs","middle","rhs","sendMessage","field","sts","now","timestamp","dateStamp","kb","subject","success","body","bindings","renderMessage","sendButton","turnOnInput","creatorAndDate","context","nick","s","person","nickAnchor","td1","creator","date","syncMessages","displayed","ele","ele2","messages","about","stored","m","addMessage","deleteMessage","deletions","ok","content","dateString","tr","done","td2","fresh","td3","delButton","cancelButton","sureButton","query","v","x","doneQuery"],"sources":["../../src/lib/messageArea.js"],"sourcesContent":["// Common code for a discussion are a of messages about something\n//\n\nimport { icons } from './iconBase'\nimport * as login from '../login/login'\nimport { solidLogicSingleton } from 'solid-logic'\nimport ns from './ns'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\nimport { style } from './style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\n\nconst UI = { icons, ns, rdf, style, widgets }\n\nexport function messageArea (dom, kb, subject, messageStore, options) {\n kb = kb || solidLogicSingleton.store\n messageStore = messageStore.doc() // No hash\n const ns = UI.ns\n const WF = rdf.Namespace('http://www.w3.org/2005/01/wf/flow#')\n const DCT = rdf.Namespace('http://purl.org/dc/terms/')\n\n options = options || {}\n\n const newestFirst = !!options.newestFirst\n\n const messageBodyStyle =\n 'white-space: pre-wrap; width: 90%; font-size:100%; border: 0.07em solid #eee; padding: .2em 0.5em; margin: 0.1em 1em 0.1em 1em;'\n // 'font-size: 100%; margin: 0.1em 1em 0.1em 1em; background-color: white; white-space: pre-wrap; padding: 0.1em;'\n\n const div = dom.createElement('div')\n // eslint-disable-next-line prefer-const\n let messageTable // Shared by initial build and addMessageFromBindings\n\n let me\n\n const updater = solidLogicSingleton.store.updater\n\n const anchor = function (text, term) {\n // If there is no link return an element anyway\n const a = dom.createElement('a')\n if (term && term.uri) {\n a.setAttribute('href', term.uri)\n a.addEventListener('click', UI.widgets.openHrefInOutlineMode, true)\n a.setAttribute('style', 'color: #3B5998; text-decoration: none; ') // font-weight: bold\n }\n a.textContent = text\n return a\n }\n\n const mention = function mention (message, style) {\n const pre = dom.createElement('pre')\n pre.setAttribute('style', style || 'color: grey')\n div.appendChild(pre)\n pre.appendChild(dom.createTextNode(message))\n return pre\n }\n\n const announce = {\n log: function (message) {\n mention(message, 'color: #111;')\n },\n warn: function (message) {\n mention(message, 'color: #880;')\n },\n error: function (message) {\n mention(message, 'color: #800;')\n }\n }\n\n // Form for a new message\n //\n const newMessageForm = function () {\n const form = dom.createElement('tr')\n const lhs = dom.createElement('td')\n const middle = dom.createElement('td')\n const rhs = dom.createElement('td')\n form.appendChild(lhs)\n form.appendChild(middle)\n form.appendChild(rhs)\n form.AJAR_date = '9999-01-01T00:00:00Z' // ISO format for field sort\n\n const sendMessage = function () {\n // titlefield.setAttribute('class','pendingedit')\n // titlefield.disabled = true\n field.setAttribute('class', 'pendingedit')\n field.disabled = true\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = rdf.term(now)\n // http://www.w3schools.com/jsref/jsref_obj_date.asp\n const message = kb.sym(messageStore.uri + '#' + 'Msg' + timestamp)\n\n sts.push(\n new rdf.Statement(subject, ns.wf('message'), message, messageStore)\n )\n sts.push(\n new rdf.Statement(\n message,\n ns.sioc('content'),\n kb.literal(field.value),\n messageStore\n )\n )\n sts.push(\n new rdf.Statement(message, DCT('created'), dateStamp, messageStore)\n )\n if (me) {\n sts.push(\n new rdf.Statement(message, ns.foaf('maker'), me, messageStore)\n )\n }\n\n const sendComplete = function (uri, success, body) {\n if (!success) {\n form.appendChild(\n UI.widgets.errorMessageBlock(dom, 'Error writing message: ' + body)\n )\n } else {\n const bindings = {\n '?msg': message,\n '?content': kb.literal(field.value),\n '?date': dateStamp,\n '?creator': me\n }\n renderMessage(bindings, false) // not green\n\n field.value = '' // clear from out for reuse\n field.setAttribute('class', '')\n field.disabled = false\n }\n }\n updater.update([], sts, sendComplete)\n }\n form.appendChild(dom.createElement('br'))\n\n let field, sendButton\n const turnOnInput = function () {\n creatorAndDate(lhs, me, '', null)\n\n field = dom.createElement('textarea')\n middle.innerHTML = ''\n middle.appendChild(field)\n field.rows = 3\n // field.cols = 40\n field.setAttribute('style', messageBodyStyle + 'background-color: #eef;')\n\n field.addEventListener(\n 'keyup',\n function (e) {\n // User preference?\n if (e.keyCode === 13) {\n if (!e.altKey) {\n // Alt-Enter just adds a new line\n sendMessage()\n }\n }\n },\n false\n )\n\n rhs.innerHTML = ''\n sendButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + 'noun_383448.svg',\n 'Send'\n )\n sendButton.setAttribute('style', UI.style.buttonStyle + 'float: right;')\n sendButton.addEventListener('click', sendMessage, false)\n rhs.appendChild(sendButton)\n }\n\n const context = { div: middle, dom }\n login.ensureLoggedIn(context).then(context => {\n me = context.me\n turnOnInput()\n })\n\n return form\n }\n\n function nick (person) {\n const s = solidLogicSingleton.store.any(person, UI.ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + utils.label(person)\n }\n\n function creatorAndDate (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(nick(creator), creator))\n if (creator.uri) {\n solidLogicSingleton.store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nick(creator)\n })\n }\n td1.appendChild(dom.createElement('br'))\n td1.appendChild(anchor(date, message))\n }\n\n // ///////////////////////////////////////////////////////////////////////\n\n function syncMessages (about, messageTable) {\n const displayed = {}\n let ele, ele2\n for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {\n if (ele.AJAR_subject) {\n displayed[ele.AJAR_subject.uri] = true\n }\n }\n const messages = kb.each(about, ns.wf('message'))\n const stored = {}\n messages.forEach(function (m) {\n stored[m.uri] = true\n if (!displayed[m.uri]) {\n addMessage(m)\n }\n })\n\n for (ele = messageTable.firstChild; ele;) {\n ele2 = ele.nextSibling\n if (ele.AJAR_subject && !stored[ele.AJAR_subject.uri]) {\n messageTable.removeChild(ele)\n }\n ele = ele2\n }\n }\n\n const deleteMessage = function (message) {\n const deletions = kb\n .statementsMatching(message)\n .concat(kb.statementsMatching(undefined, undefined, message))\n updater.update(deletions, [], function (uri, ok, body) {\n if (!ok) {\n announce.error('Cant delete messages:' + body)\n } else {\n syncMessages(subject, messageTable)\n }\n })\n }\n\n const addMessage = function (message) {\n const bindings = {\n '?msg': message,\n '?creator': kb.any(message, ns.foaf('maker')),\n '?date': kb.any(message, DCT('created')),\n '?content': kb.any(message, ns.sioc('content'))\n }\n renderMessage(bindings, true) // fresh from elsewhere\n }\n\n const renderMessage = function (bindings, fresh) {\n const creator = bindings['?creator']\n const message = bindings['?msg']\n const date = bindings['?date']\n const content = bindings['?content']\n\n const dateString = date.value\n const tr = dom.createElement('tr')\n tr.AJAR_date = dateString\n tr.AJAR_subject = message\n\n let done = false\n for (let ele = messageTable.firstChild; ; ele = ele.nextSibling) {\n if (!ele) {\n // empty\n break\n }\n if (\n (dateString > ele.AJAR_date && newestFirst) ||\n (dateString < ele.AJAR_date && !newestFirst)\n ) {\n messageTable.insertBefore(tr, ele)\n done = true\n break\n }\n }\n if (!done) {\n messageTable.appendChild(tr)\n }\n\n const td1 = dom.createElement('td')\n tr.appendChild(td1)\n creatorAndDate(td1, creator, UI.widgets.shortDate(dateString), message)\n\n const td2 = dom.createElement('td')\n tr.appendChild(td2)\n const pre = dom.createElement('p')\n pre.setAttribute(\n 'style',\n messageBodyStyle +\n (fresh ? 'background-color: #e8ffe8;' : 'background-color: #white;')\n )\n td2.appendChild(pre)\n pre.textContent = content.value\n\n const td3 = dom.createElement('td')\n tr.appendChild(td3)\n\n const delButton = dom.createElement('button')\n td3.appendChild(delButton)\n delButton.textContent = '-'\n\n tr.setAttribute('class', 'hoverControl') // See tabbedtab.css (sigh global CSS)\n delButton.setAttribute('class', 'hoverControlHide')\n delButton.setAttribute('style', 'color: red;')\n delButton.addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(delButton) // Ask -- are you sure?\n const cancelButton = dom.createElement('button')\n cancelButton.textContent = 'cancel'\n td3.appendChild(cancelButton).addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(sureButton)\n td3.removeChild(cancelButton)\n td3.appendChild(delButton)\n },\n false\n )\n const sureButton = dom.createElement('button')\n sureButton.textContent = 'Delete message'\n td3.appendChild(sureButton).addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(sureButton)\n td3.removeChild(cancelButton)\n deleteMessage(message)\n },\n false\n )\n },\n false\n )\n }\n\n // Messages with date, author etc\n\n messageTable = dom.createElement('table')\n messageTable.fresh = false\n div.appendChild(messageTable)\n messageTable.setAttribute('style', 'width: 100%;') // fill that div!\n\n const tr = newMessageForm()\n if (newestFirst) {\n messageTable.insertBefore(tr, messageTable.firstChild) // If newestFirst\n } else {\n messageTable.appendChild(tr) // not newestFirst\n }\n\n let query\n // Do this with a live query to pull in messages from web\n if (options.query) {\n query = options.query\n } else {\n query = new rdf.Query('Messages')\n const v = {} // semicolon needed\n const vs = ['msg', 'date', 'creator', 'content']\n vs.forEach(function (x) {\n query.vars.push((v[x] = rdf.variable(x)))\n })\n query.pat.add(subject, WF('message'), v.msg)\n query.pat.add(v.msg, ns.dct('created'), v.date)\n query.pat.add(v.msg, ns.foaf('maker'), v.creator)\n query.pat.add(v.msg, ns.sioc('content'), v.content)\n }\n function doneQuery () {\n messageTable.fresh = true // any new are fresh and so will be greenish\n }\n kb.query(query, renderMessage, undefined, doneQuery)\n div.refresh = function () {\n syncMessages(subject, messageTable)\n }\n // syncMessages(subject, messageTable) // no the query will do this async\n return div\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"messageArea.cjs.js","names":["solidLogicSingleton","rdf","require_runtime","require_iconBase","require_label","require_login","require_ns","require_style","require_index$1","rdflib","solid_logic","UI","messageArea","messageStore","ns","WF","DCT","newestFirst","options","messageBodyStyle","div","dom","messageTable","me","updater","anchor","a","term","text","mention","pre","style","message","announce","newMessageForm","form","lhs","middle","rhs","sendMessage","field","sts","now","timestamp","dateStamp","kb","subject","success","body","bindings","renderMessage","sendButton","turnOnInput","creatorAndDate","context","nick","s","person","nickAnchor","td1","creator","date","syncMessages","displayed","ele","ele2","messages","about","stored","m","addMessage","deleteMessage","deletions","ok","content","dateString","tr","done","td2","fresh","td3","delButton","cancelButton","sureButton","query","v","x","doneQuery"],"sources":["../../src/lib/messageArea.js"],"sourcesContent":["// Common code for a discussion are a of messages about something\n//\n\nimport { icons } from './iconBase'\nimport * as login from '../login/login'\nimport { solidLogicSingleton } from 'solid-logic'\nimport ns from './ns'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\nimport { style } from './style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\n\nconst UI = { icons, ns, rdf, style, widgets }\n\nexport function messageArea (dom, kb, subject, messageStore, options) {\n kb = kb || solidLogicSingleton.store\n messageStore = messageStore.doc() // No hash\n const ns = UI.ns\n const WF = rdf.Namespace('http://www.w3.org/2005/01/wf/flow#')\n const DCT = rdf.Namespace('http://purl.org/dc/terms/')\n\n options = options || {}\n\n const newestFirst = !!options.newestFirst\n\n const messageBodyStyle =\n 'white-space: pre-wrap; width: 90%; font-size:100%; border: 0.07em solid #eee; padding: .2em 0.5em; margin: 0.1em 1em 0.1em 1em;'\n // 'font-size: 100%; margin: 0.1em 1em 0.1em 1em; background-color: white; white-space: pre-wrap; padding: 0.1em;'\n\n const div = dom.createElement('div')\n // eslint-disable-next-line prefer-const\n let messageTable // Shared by initial build and addMessageFromBindings\n\n let me\n\n const updater = solidLogicSingleton.store.updater\n\n const anchor = function (text, term) {\n // If there is no link return an element anyway\n const a = dom.createElement('a')\n if (term && term.uri) {\n a.setAttribute('href', term.uri)\n a.addEventListener('click', UI.widgets.openHrefInOutlineMode, true)\n a.setAttribute('style', 'color: #3B5998; text-decoration: none; ') // font-weight: bold\n }\n a.textContent = text\n return a\n }\n\n const mention = function mention (message, style) {\n const pre = dom.createElement('pre')\n pre.setAttribute('style', style || 'color: grey')\n div.appendChild(pre)\n pre.appendChild(dom.createTextNode(message))\n return pre\n }\n\n const announce = {\n log: function (message) {\n mention(message, 'color: #111;')\n },\n warn: function (message) {\n mention(message, 'color: #880;')\n },\n error: function (message) {\n mention(message, 'color: #800;')\n }\n }\n\n // Form for a new message\n //\n const newMessageForm = function () {\n const form = dom.createElement('tr')\n const lhs = dom.createElement('td')\n const middle = dom.createElement('td')\n const rhs = dom.createElement('td')\n form.appendChild(lhs)\n form.appendChild(middle)\n form.appendChild(rhs)\n form.AJAR_date = '9999-01-01T00:00:00Z' // ISO format for field sort\n\n const sendMessage = function () {\n // titlefield.setAttribute('class','pendingedit')\n // titlefield.disabled = true\n field.setAttribute('class', 'pendingedit')\n field.disabled = true\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = rdf.term(now)\n // http://www.w3schools.com/jsref/jsref_obj_date.asp\n const message = kb.sym(messageStore.uri + '#' + 'Msg' + timestamp)\n\n sts.push(\n new rdf.Statement(subject, ns.wf('message'), message, messageStore)\n )\n sts.push(\n new rdf.Statement(\n message,\n ns.sioc('content'),\n kb.literal(field.value),\n messageStore\n )\n )\n sts.push(\n new rdf.Statement(message, DCT('created'), dateStamp, messageStore)\n )\n if (me) {\n sts.push(\n new rdf.Statement(message, ns.foaf('maker'), me, messageStore)\n )\n }\n\n const sendComplete = function (uri, success, body) {\n if (!success) {\n form.appendChild(\n UI.widgets.errorMessageBlock(dom, 'Error writing message: ' + body)\n )\n } else {\n const bindings = {\n '?msg': message,\n '?content': kb.literal(field.value),\n '?date': dateStamp,\n '?creator': me\n }\n renderMessage(bindings, false) // not green\n\n field.value = '' // clear from out for reuse\n field.setAttribute('class', '')\n field.disabled = false\n }\n }\n updater.update([], sts, sendComplete)\n }\n form.appendChild(dom.createElement('br'))\n\n let field, sendButton\n const turnOnInput = function () {\n creatorAndDate(lhs, me, '', null)\n\n field = dom.createElement('textarea')\n middle.innerHTML = ''\n middle.appendChild(field)\n field.rows = 3\n // field.cols = 40\n field.setAttribute('style', messageBodyStyle + 'background-color: #eef;')\n\n field.addEventListener(\n 'keyup',\n function (e) {\n // User preference?\n if (e.keyCode === 13) {\n if (!e.altKey) {\n // Alt-Enter just adds a new line\n sendMessage()\n }\n }\n },\n false\n )\n\n rhs.innerHTML = ''\n sendButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + 'noun_383448.svg',\n 'Send'\n )\n sendButton.setAttribute('style', UI.style.buttonStyle + 'float: right;')\n sendButton.addEventListener('click', sendMessage, false)\n rhs.appendChild(sendButton)\n }\n\n const context = { div: middle, dom }\n login.ensureLoggedIn(context).then(context => {\n me = context.me\n turnOnInput()\n })\n\n return form\n }\n\n function nick (person) {\n const s = solidLogicSingleton.store.any(person, UI.ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + utils.label(person)\n }\n\n function creatorAndDate (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(nick(creator), creator))\n if (creator.uri) {\n solidLogicSingleton.store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nick(creator)\n })\n }\n td1.appendChild(dom.createElement('br'))\n td1.appendChild(anchor(date, message))\n }\n\n // ///////////////////////////////////////////////////////////////////////\n\n function syncMessages (about, messageTable) {\n const displayed = {}\n let ele, ele2\n for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {\n if (ele.AJAR_subject) {\n displayed[ele.AJAR_subject.uri] = true\n }\n }\n const messages = kb.each(about, ns.wf('message'))\n const stored = {}\n messages.forEach(function (m) {\n stored[m.uri] = true\n if (!displayed[m.uri]) {\n addMessage(m)\n }\n })\n\n for (ele = messageTable.firstChild; ele;) {\n ele2 = ele.nextSibling\n if (ele.AJAR_subject && !stored[ele.AJAR_subject.uri]) {\n messageTable.removeChild(ele)\n }\n ele = ele2\n }\n }\n\n const deleteMessage = function (message) {\n const deletions = kb\n .statementsMatching(message)\n .concat(kb.statementsMatching(undefined, undefined, message))\n updater.update(deletions, [], function (uri, ok, body) {\n if (!ok) {\n announce.error('Cant delete messages:' + body)\n } else {\n syncMessages(subject, messageTable)\n }\n })\n }\n\n const addMessage = function (message) {\n const bindings = {\n '?msg': message,\n '?creator': kb.any(message, ns.foaf('maker')),\n '?date': kb.any(message, DCT('created')),\n '?content': kb.any(message, ns.sioc('content'))\n }\n renderMessage(bindings, true) // fresh from elsewhere\n }\n\n const renderMessage = function (bindings, fresh) {\n const creator = bindings['?creator']\n const message = bindings['?msg']\n const date = bindings['?date']\n const content = bindings['?content']\n\n const dateString = date.value\n const tr = dom.createElement('tr')\n tr.AJAR_date = dateString\n tr.AJAR_subject = message\n\n let done = false\n for (let ele = messageTable.firstChild; ; ele = ele.nextSibling) {\n if (!ele) {\n // empty\n break\n }\n if (\n (dateString > ele.AJAR_date && newestFirst) ||\n (dateString < ele.AJAR_date && !newestFirst)\n ) {\n messageTable.insertBefore(tr, ele)\n done = true\n break\n }\n }\n if (!done) {\n messageTable.appendChild(tr)\n }\n\n const td1 = dom.createElement('td')\n tr.appendChild(td1)\n creatorAndDate(td1, creator, UI.widgets.shortDate(dateString), message)\n\n const td2 = dom.createElement('td')\n tr.appendChild(td2)\n const pre = dom.createElement('p')\n pre.setAttribute(\n 'style',\n messageBodyStyle +\n (fresh ? 'background-color: #e8ffe8;' : 'background-color: #white;')\n )\n td2.appendChild(pre)\n pre.textContent = content.value\n\n const td3 = dom.createElement('td')\n tr.appendChild(td3)\n\n const delButton = dom.createElement('button')\n td3.appendChild(delButton)\n delButton.textContent = '-'\n\n tr.setAttribute('class', 'hoverControl') // See tabbedtab.css (sigh global CSS)\n delButton.setAttribute('class', 'hoverControlHide')\n delButton.setAttribute('style', 'color: red;')\n delButton.addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(delButton) // Ask -- are you sure?\n const cancelButton = dom.createElement('button')\n cancelButton.textContent = 'cancel'\n td3.appendChild(cancelButton).addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(sureButton)\n td3.removeChild(cancelButton)\n td3.appendChild(delButton)\n },\n false\n )\n const sureButton = dom.createElement('button')\n sureButton.textContent = 'Delete message'\n td3.appendChild(sureButton).addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(sureButton)\n td3.removeChild(cancelButton)\n deleteMessage(message)\n },\n false\n )\n },\n false\n )\n }\n\n // Messages with date, author etc\n\n messageTable = dom.createElement('table')\n messageTable.fresh = false\n div.appendChild(messageTable)\n messageTable.setAttribute('style', 'width: 100%;') // fill that div!\n\n const tr = newMessageForm()\n if (newestFirst) {\n messageTable.insertBefore(tr, messageTable.firstChild) // If newestFirst\n } else {\n messageTable.appendChild(tr) // not newestFirst\n }\n\n let query\n // Do this with a live query to pull in messages from web\n if (options.query) {\n query = options.query\n } else {\n query = new rdf.Query('Messages')\n const v = {} // semicolon needed\n const vs = ['msg', 'date', 'creator', 'content']\n vs.forEach(function (x) {\n query.vars.push((v[x] = rdf.variable(x)))\n })\n query.pat.add(subject, WF('message'), v.msg)\n query.pat.add(v.msg, ns.dct('created'), v.date)\n query.pat.add(v.msg, ns.foaf('maker'), v.creator)\n query.pat.add(v.msg, ns.sioc('content'), v.content)\n }\n function doneQuery () {\n messageTable.fresh = true // any new are fresh and so will be greenish\n }\n kb.query(query, renderMessage, undefined, doneQuery)\n div.refresh = function () {\n syncMessages(subject, messageTable)\n }\n // syncMessages(subject, messageTable) // no the query will do this async\n return div\n}\n"],"mappings":"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"}
|