solid-ui 2.4.18 → 2.4.19-6a4efc3e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +0 -0
- package/README.md +3 -2
- package/lib/acl/access-controller.d.ts +0 -0
- package/lib/acl/access-controller.d.ts.map +0 -0
- package/lib/acl/access-controller.js +0 -0
- package/lib/acl/access-controller.js.map +0 -0
- package/lib/acl/access-groups.d.ts +0 -0
- package/lib/acl/access-groups.d.ts.map +0 -0
- package/lib/acl/access-groups.js +0 -0
- package/lib/acl/access-groups.js.map +0 -0
- package/lib/acl/acl-control.d.ts +0 -0
- package/lib/acl/acl-control.d.ts.map +0 -0
- package/lib/acl/acl-control.js +0 -0
- package/lib/acl/acl-control.js.map +0 -0
- package/lib/acl/acl.d.ts +0 -0
- package/lib/acl/acl.d.ts.map +1 -1
- package/lib/acl/acl.js +2 -4
- package/lib/acl/acl.js.map +1 -1
- package/lib/acl/add-agent-buttons.d.ts +0 -0
- package/lib/acl/add-agent-buttons.d.ts.map +1 -1
- package/lib/acl/add-agent-buttons.js +5 -5
- package/lib/acl/add-agent-buttons.js.map +1 -1
- package/lib/acl/index.d.ts +0 -0
- package/lib/acl/index.d.ts.map +0 -0
- package/lib/acl/index.js +0 -0
- package/lib/acl/index.js.map +0 -0
- package/lib/acl/styles.d.ts +0 -0
- package/lib/acl/styles.d.ts.map +0 -0
- package/lib/acl/styles.js +0 -0
- package/lib/acl/styles.js.map +0 -0
- package/lib/acl/types.d.ts +0 -0
- package/lib/acl/types.d.ts.map +0 -0
- package/lib/acl/types.js +0 -0
- package/lib/acl/types.js.map +0 -0
- package/lib/chat/bookmarks.js +20 -22
- package/lib/chat/bookmarks.js.map +1 -1
- package/lib/chat/chatLogic.js +13 -15
- package/lib/chat/chatLogic.js.map +1 -1
- package/lib/chat/dateFolder.js +10 -10
- package/lib/chat/dateFolder.js.map +1 -1
- package/lib/chat/infinite.js +14 -16
- package/lib/chat/infinite.js.map +1 -1
- package/lib/chat/message.js +19 -23
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/messageTools.js +16 -21
- package/lib/chat/messageTools.js.map +1 -1
- package/lib/chat/thread.js +24 -24
- package/lib/chat/thread.js.map +1 -1
- package/lib/create/create.d.ts +0 -0
- package/lib/create/create.d.ts.map +1 -1
- package/lib/create/create.js +9 -9
- package/lib/create/create.js.map +1 -1
- package/lib/create/index.d.ts +0 -0
- package/lib/create/index.d.ts.map +0 -0
- package/lib/create/index.js +0 -0
- package/lib/create/index.js.map +0 -0
- package/lib/create/types.d.ts +0 -0
- package/lib/create/types.d.ts.map +0 -0
- package/lib/create/types.js +0 -0
- package/lib/create/types.js.map +0 -0
- package/lib/debug.d.ts +0 -0
- package/lib/debug.d.ts.map +0 -0
- package/lib/debug.js +0 -0
- package/lib/debug.js.map +0 -0
- package/lib/folders.js +2 -6
- package/lib/folders.js.map +1 -1
- package/lib/footer/index.d.ts +0 -0
- package/lib/footer/index.d.ts.map +0 -0
- package/lib/footer/index.js +4 -4
- package/lib/footer/index.js.map +1 -1
- package/lib/footer/styleMap.d.ts +0 -0
- package/lib/footer/styleMap.d.ts.map +0 -0
- package/lib/footer/styleMap.js +0 -0
- package/lib/footer/styleMap.js.map +0 -0
- package/lib/header/empty-profile.d.ts +0 -0
- package/lib/header/empty-profile.d.ts.map +0 -0
- package/lib/header/empty-profile.js +0 -0
- package/lib/header/empty-profile.js.map +0 -0
- package/lib/header/index.d.ts +0 -0
- package/lib/header/index.d.ts.map +1 -1
- package/lib/header/index.js +11 -8
- package/lib/header/index.js.map +1 -1
- package/lib/header/styleMap.d.ts +4 -0
- package/lib/header/styleMap.d.ts.map +1 -1
- package/lib/header/styleMap.js +20 -15
- package/lib/header/styleMap.js.map +1 -1
- package/lib/iconBase.d.ts +0 -0
- package/lib/iconBase.d.ts.map +0 -0
- package/lib/iconBase.js +0 -0
- package/lib/iconBase.js.map +0 -0
- package/lib/icons/solid_logo.d.ts +0 -0
- package/lib/icons/solid_logo.d.ts.map +0 -0
- package/lib/icons/solid_logo.js +0 -0
- package/lib/icons/solid_logo.js.map +0 -0
- package/lib/index.d.ts +4 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +30 -28
- package/lib/index.js.map +1 -1
- package/lib/jss/index.d.ts +0 -0
- package/lib/jss/index.d.ts.map +0 -0
- package/lib/jss/index.js +0 -0
- package/lib/jss/index.js.map +0 -0
- package/lib/log.d.ts +0 -0
- package/lib/log.d.ts.map +0 -0
- package/lib/log.js +0 -0
- package/lib/log.js.map +0 -0
- package/lib/login/login.d.ts +130 -0
- package/lib/login/login.d.ts.map +1 -0
- package/lib/login/login.js +1415 -0
- package/lib/login/login.js.map +1 -0
- package/lib/matrix/index.d.ts +0 -0
- package/lib/matrix/index.d.ts.map +0 -0
- package/lib/matrix/index.js +0 -0
- package/lib/matrix/index.js.map +0 -0
- package/lib/matrix/matrix.d.ts +0 -0
- package/lib/matrix/matrix.d.ts.map +0 -0
- package/lib/matrix/matrix.js +2 -2
- package/lib/matrix/matrix.js.map +1 -1
- package/lib/matrix/types.d.ts +0 -0
- package/lib/matrix/types.d.ts.map +0 -0
- package/lib/matrix/types.js +0 -0
- package/lib/matrix/types.js.map +0 -0
- package/lib/media/index.d.ts +0 -0
- package/lib/media/index.d.ts.map +0 -0
- package/lib/media/index.js +0 -0
- package/lib/media/index.js.map +0 -0
- package/lib/media/media-capture.d.ts +0 -0
- package/lib/media/media-capture.d.ts.map +0 -0
- package/lib/media/media-capture.js +0 -0
- package/lib/media/media-capture.js.map +0 -0
- package/lib/messageArea.js +9 -10
- package/lib/messageArea.js.map +1 -1
- package/lib/noun_Camera_1618446_000000.js +0 -0
- package/lib/noun_Camera_1618446_000000.js.map +0 -0
- package/lib/ns.js +0 -0
- package/lib/ns.js.map +0 -0
- package/lib/pad.d.ts +0 -0
- package/lib/pad.d.ts.map +0 -0
- package/lib/pad.js +2 -2
- package/lib/pad.js.map +1 -1
- package/lib/participation.d.ts +0 -0
- package/lib/participation.d.ts.map +1 -1
- package/lib/participation.js +4 -5
- package/lib/participation.js.map +1 -1
- package/lib/preferences.js +8 -8
- package/lib/preferences.js.map +1 -1
- package/lib/{authn → signup}/config-default.js +0 -0
- package/lib/signup/config-default.js.map +1 -0
- package/lib/{authn → signup}/signup.js +0 -0
- package/lib/signup/signup.js.map +1 -0
- package/lib/stories/decorators.js +0 -0
- package/lib/stories/decorators.js.map +0 -0
- package/lib/style.js +0 -0
- package/lib/style.js.map +0 -0
- package/lib/table.js +2 -3
- package/lib/table.js.map +1 -1
- package/lib/tabs.d.ts +0 -0
- package/lib/tabs.d.ts.map +0 -0
- package/lib/tabs.js +3 -3
- package/lib/tabs.js.map +1 -1
- package/lib/typings.d.js +0 -0
- package/lib/typings.d.js.map +0 -0
- package/lib/utils/headerFooterHelpers.d.ts +0 -0
- package/lib/utils/headerFooterHelpers.d.ts.map +0 -0
- package/lib/utils/headerFooterHelpers.js +0 -0
- package/lib/utils/headerFooterHelpers.js.map +0 -0
- package/lib/utils/index.js +6 -6
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/label.d.ts +0 -0
- package/lib/utils/label.d.ts.map +0 -0
- package/lib/utils/label.js +4 -5
- package/lib/utils/label.js.map +1 -1
- package/lib/versionInfo.d.ts +0 -0
- package/lib/versionInfo.d.ts.map +0 -0
- package/lib/versionInfo.js +14 -14
- package/lib/versionInfo.js.map +1 -1
- package/lib/webpack-bundle.js +8265 -24459
- package/lib/webpack-bundle.js.map +1 -1
- package/lib/widgets/buttons/iconLinks.d.ts +0 -0
- package/lib/widgets/buttons/iconLinks.d.ts.map +0 -0
- package/lib/widgets/buttons/iconLinks.js +0 -0
- package/lib/widgets/buttons/iconLinks.js.map +0 -0
- package/lib/widgets/buttons.d.ts +0 -0
- package/lib/widgets/buttons.d.ts.map +0 -0
- package/lib/widgets/buttons.js +16 -16
- package/lib/widgets/buttons.js.map +1 -1
- package/lib/widgets/dragAndDrop.js +0 -0
- package/lib/widgets/dragAndDrop.js.map +0 -0
- package/lib/widgets/error.d.ts +0 -0
- package/lib/widgets/error.d.ts.map +0 -0
- package/lib/widgets/error.js +0 -0
- package/lib/widgets/error.js.map +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteBar.d.ts +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteBar.d.ts.map +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteBar.js +2 -2
- package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteField.d.ts +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteField.d.ts.map +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteField.js +2 -2
- package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts +0 -0
- package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts.map +0 -0
- package/lib/widgets/forms/autocomplete/autocompletePicker.js +2 -2
- package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
- package/lib/widgets/forms/autocomplete/language.d.ts +0 -0
- package/lib/widgets/forms/autocomplete/language.d.ts.map +1 -1
- package/lib/widgets/forms/autocomplete/language.js +7 -10
- package/lib/widgets/forms/autocomplete/language.js.map +1 -1
- package/lib/widgets/forms/autocomplete/publicData.d.ts +1 -1
- package/lib/widgets/forms/autocomplete/publicData.d.ts.map +1 -1
- package/lib/widgets/forms/autocomplete/publicData.js +15 -16
- package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
- package/lib/widgets/forms/basic.d.ts +1 -1
- package/lib/widgets/forms/basic.d.ts.map +1 -1
- package/lib/widgets/forms/basic.js +2 -2
- package/lib/widgets/forms/basic.js.map +1 -1
- package/lib/widgets/forms/comment.d.ts +1 -1
- package/lib/widgets/forms/comment.d.ts.map +0 -0
- package/lib/widgets/forms/comment.js +3 -3
- package/lib/widgets/forms/comment.js.map +1 -1
- package/lib/widgets/forms/fieldFunction.d.ts +0 -0
- package/lib/widgets/forms/fieldFunction.d.ts.map +0 -0
- package/lib/widgets/forms/fieldFunction.js +2 -2
- package/lib/widgets/forms/fieldFunction.js.map +1 -1
- package/lib/widgets/forms/fieldParams.d.ts +0 -0
- package/lib/widgets/forms/fieldParams.d.ts.map +0 -0
- package/lib/widgets/forms/fieldParams.js +0 -0
- package/lib/widgets/forms/fieldParams.js.map +0 -0
- package/lib/widgets/forms/formStyle.d.ts +0 -0
- package/lib/widgets/forms/formStyle.d.ts.map +0 -0
- package/lib/widgets/forms/formStyle.js +3 -3
- package/lib/widgets/forms/formStyle.js.map +1 -1
- package/lib/widgets/forms.js +10 -10
- package/lib/widgets/forms.js.map +1 -1
- package/lib/widgets/index.js +0 -0
- package/lib/widgets/index.js.map +0 -0
- package/lib/widgets/peoplePicker.js +2 -2
- package/lib/widgets/peoplePicker.js.map +1 -1
- package/lib/widgets/widgetHelpers.d.ts +0 -0
- package/lib/widgets/widgetHelpers.d.ts.map +0 -0
- package/lib/widgets/widgetHelpers.js +0 -0
- package/lib/widgets/widgetHelpers.js.map +0 -0
- package/package.json +14 -6
- package/lib/authn/authSession.d.ts +0 -4
- package/lib/authn/authSession.d.ts.map +0 -1
- package/lib/authn/authSession.js +0 -25
- package/lib/authn/authSession.js.map +0 -1
- package/lib/authn/authn.d.ts +0 -193
- package/lib/authn/authn.d.ts.map +0 -1
- package/lib/authn/authn.js +0 -2238
- package/lib/authn/authn.js.map +0 -1
- package/lib/authn/config-default.js.map +0 -1
- package/lib/authn/index.d.ts +0 -35
- package/lib/authn/index.d.ts.map +0 -1
- package/lib/authn/index.js +0 -44
- package/lib/authn/index.js.map +0 -1
- package/lib/authn/signup.js.map +0 -1
- package/lib/authn/types.d.ts +0 -25
- package/lib/authn/types.d.ts.map +0 -1
- package/lib/authn/types.js +0 -6
- package/lib/authn/types.js.map +0 -1
- package/lib/logic.d.ts +0 -8
- package/lib/logic.d.ts.map +0 -1
- package/lib/logic.js +0 -79
- package/lib/logic.js.map +0 -1
|
@@ -15,7 +15,7 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
|
|
|
15
15
|
|
|
16
16
|
var ns = _interopRequireWildcard(require("../../../ns"));
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _solidLogic = require("solid-logic");
|
|
19
19
|
|
|
20
20
|
var widgets = _interopRequireWildcard(require("../../../widgets"));
|
|
21
21
|
|
|
@@ -192,7 +192,7 @@ function autocompleteField(dom, container, already, subject, form, doc, callback
|
|
|
192
192
|
throw new Error('Sorry this field only works on NamedNode subjects (for editable)');
|
|
193
193
|
}
|
|
194
194
|
|
|
195
|
-
var kb =
|
|
195
|
+
var kb = _solidLogic.store;
|
|
196
196
|
var formDoc = form.doc ? form.doc() : null; // @@ if blank no way to know
|
|
197
197
|
|
|
198
198
|
var box = dom.createElement('div');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/widgets/forms/autocomplete/autocompleteField.ts"],"names":["autocompleteField","dom","container","already","subject","form","doc","callbackFunction","addOneIdAndRefresh","result","name","Error","oldValue","kb","the","property","oldName","any","labelProperty","equals","sameTerm","deletables","statementsMatching","concat","insertables","updater","updateMany","box","appendChild","widgets","errorMessageBlock","deleteOne","_result","_name","e2","termType","store","formDoc","createElement","lhs","setAttribute","style","formFieldNameBoxStyle","rhs","ns","ui","schema","dataSource","queryParams","label","anyJS","logo","targetClass","objectURIBase","undefined","endpoint","searchByNameQuery","insitituteDetailsQuery","searchByNameURI","suppressEmptyUneditable","editable","uri","autocompleteOptions","permanent","size","obj","currentObject","currentName","display","fieldLabel","barOptions","dbLookup","then","control","err"],"mappings":"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","sourcesContent":["/* Form field for doing autocompleete\n */\nimport * as ns from '../../../ns'\nimport { store } from '../../../logic'\nimport * as widgets from '../../../widgets'\nimport * as style from '../../../style'\nimport { renderAutocompleteControl } from './autocompleteBar'\nimport { QueryParameters } from './publicData'\nimport { NamedNode, BlankNode, Literal, Variable, st } from 'rdflib'\nimport { AutocompleteOptions } from './autocompletePicker'\n/**\n * Render a autocomplete form field\n *\n * The autocomplete form searches for an object in a definitive public database,\n * and allows the user to search for it by name, displaying a list of objects whose names match\n * the input to date, and letting the user either click on one of the list,\n * or just go on untill there is only one. The process then returns two values,\n * the URiI of the object and its name.\n *\n * @param dom The HTML Document object aka Document Object Model\n * @param container If present, the created widget will be appended to this\n * @param already A hash table of (form, subject) kept to prevent recursive forms looping\n * @param subject The thing about which the form displays/edits data\n * @param form The form or field to be rendered\n * @param doc The web document in which the data is\n * @param callbackFunction Called when data is changed so other parts can be refreshed.\n *\n * Form properties:\n * @param ui:property The property to store the object itself\n * @param ui:labelProperty The property used to store the name of the object\n * @param ui:category The class of objects to be searched, if fixed (else dep on class of subject)\n *\n * @returns The HTML widget created\n */\n// eslint-disable-next-line complexity\nexport function autocompleteField (\n dom: HTMLDocument,\n container: HTMLElement | undefined,\n already,\n subject: NamedNode | BlankNode | Variable,\n form: NamedNode,\n doc: NamedNode | undefined,\n callbackFunction: (_ok: boolean, _errorMessage: string) => void\n): HTMLElement {\n async function addOneIdAndRefresh (result:NamedNode | Literal, name: Literal) {\n if (!name) {\n throw new Error('autocompleteField: No name set.')\n }\n const oldValue = kb.the(subject, property as any, null, doc)\n if (oldValue) {\n const oldName = kb.any(oldValue as any, labelProperty as any, null, doc)\n if (oldValue.equals(result) && oldName && oldName.sameTerm(name)) {\n // console.log('No change: same values.')\n return\n }\n }\n const deletables = oldValue\n ? kb.statementsMatching(subject, property as any, oldValue, doc)\n .concat(kb.statementsMatching(oldValue as any, labelProperty as any, null, doc))\n : []\n // console.log('autocompleteField Deletables ' + deletables.map(st => st.toNT()))\n const insertables = [st(subject, property as any, result, doc),\n st(result as any, labelProperty as any, name, doc)] // @@ track the language of the name too!\n // console.log(`AC form: ${deletables.length} to delete and ${insertables.length} to insert`)\n try {\n // console.log('@@@ AC updating ', deletables, insertables)\n await kb.updater?.updateMany(deletables, insertables)\n } catch (err) {\n callbackFunction(false, err)\n box.appendChild(widgets.errorMessageBlock(dom, 'Autocomplete form data update error:' + err, null, err))\n return\n }\n callbackFunction(true, '')\n }\n\n async function deleteOne (_result:NamedNode | Literal, _name: Literal) {\n const oldValue = kb.the(subject, property as any, null, doc)\n if (!oldValue) {\n callbackFunction(false, 'NO data to elete')\n box.appendChild(widgets.errorMessageBlock(dom, 'Autocomplete delete: no old data!'))\n return\n }\n // const oldName = kb.any(oldValue as any, labelProperty as any, null, doc)\n const deletables = kb.statementsMatching(subject, property as any, oldValue, doc)\n .concat(kb.statementsMatching(oldValue as any, labelProperty as any, null, doc))\n // console.log('autocompleteField Deletables ' + deletables.map(st => st.toNT()))\n const insertables = []\n // console.log(`AC form delete: ${deletables.length} to delete and ${insertables.length} to insert`)\n try {\n // console.log('@@@ AC updating ', deletables, insertables)\n await kb.updater?.updateMany(deletables, insertables)\n } catch (err) {\n const e2 = new Error('Autocomplete form data delete error:' + err)\n callbackFunction(false, err)\n box.appendChild(widgets.errorMessageBlock(dom, e2, null, err))\n return\n }\n callbackFunction(true, '') // changed\n }\n\n if (subject.termType !== 'NamedNode') {\n throw new Error('Sorry this field only works on NamedNode subjects (for editable)')\n }\n const kb = store\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n const box = dom.createElement('div')\n if (container) container.appendChild(box)\n const lhs = dom.createElement('div')\n lhs.setAttribute('class', 'formFieldName')\n lhs.setAttribute('style', style.formFieldNameBoxStyle)\n box.appendChild(lhs)\n const rhs = dom.createElement('div')\n rhs.setAttribute('class', 'formFieldValue')\n box.appendChild(rhs)\n\n const property = kb.any(form, ns.ui('property'))\n if (!property) {\n return box.appendChild(\n widgets.errorMessageBlock(dom, 'Error: No property given for autocomplete field: ' + form)\n )\n }\n const labelProperty = kb.any(form, ns.ui('labelProperty')) || ns.schema('name')\n\n // Parse the data source into query options\n\n const dataSource = kb.any(form, ns.ui('dataSource')) as NamedNode | undefined\n if (!dataSource) {\n // console.log('@@ connectedStatements ACF ', kb.connectedStatements(form).map(x => x.toNT()).join('\\n'))\n return box.appendChild(\n widgets.errorMessageBlock(dom, 'Error: No data source given for autocomplete field: ' + form)\n )\n }\n const queryParams:QueryParameters = {\n // targetClass: kb.any(dataSource, ns.ui('targetClass'), null, dataSource.doc()) as NamedNode | undefined,\n label: kb.anyJS(dataSource, ns.schema('name'), null, dataSource.doc()),\n logo: (kb.any(dataSource, ns.schema('logo'), null, dataSource.doc())) as NamedNode | undefined\n }\n\n // @@ Should we pass the target class in from the data source definition or use a current type of the subject\n const targetClass = (kb.any(form, ns.ui('targetClass'), null, form.doc()) || // class in form takes pecedence\n kb.any(dataSource, ns.ui('targetClass'), null, dataSource.doc())) as NamedNode | undefined\n if (targetClass) {\n queryParams.targetClass = targetClass\n }\n\n queryParams.objectURIBase = (kb.any(dataSource, ns.ui('objectURIBase'), null, dataSource.doc()) || undefined) as NamedNode | undefined\n\n /*\n if (!queryParams.targetClass) {\n const klass = kb.any(subject, ns.rdf('type')) as NamedNode | undefined\n // @@ be more selective of which class if many\n // @@ todo: Take ALL classes, and compare them with those the data source knows about\n // with translation where necessary. Find most specific of the classes for the search.\n if (!klass) throw new Error('Autocomplete: No class specified or is current type of' + subject)\n queryParams.targetClass = klass\n }\n */\n const endpoint = kb.anyJS(dataSource, ns.ui('endpoint'), null, dataSource.doc()) as string | undefined\n if (endpoint) { // SPARQL\n queryParams.endpoint = endpoint\n\n queryParams.searchByNameQuery = kb.anyJS(dataSource, ns.ui('searchByNameQuery'), null, dataSource.doc())\n if (!queryParams.searchByNameQuery) {\n return box.appendChild(\n widgets.errorMessageBlock(dom, 'Error: No searchByNameQuery given for endpoint data Source: ' + form))\n }\n queryParams.insitituteDetailsQuery = kb.anyJS(dataSource, ns.ui('insitituteDetailsQuery'), null, dataSource.doc())\n } else {\n // return box.appendChild(\n // widgets.errorMessageBlock(dom, 'Error: No SPARQL endpoint given for autocomplete field: ' + form))\n const searchByNameURI = kb.anyJS(dataSource, ns.ui('searchByNameURI'))\n if (!searchByNameURI) {\n return box.appendChild(\n widgets.errorMessageBlock(dom, 'Error: No searchByNameURI OR sparql endpoint given for dataSource: ' + dataSource)\n )\n }\n queryParams.searchByNameURI = searchByNameURI\n }\n // It can be cleaner to just remove empty fields if you can't edit them anyway\n const suppressEmptyUneditable = kb.anyJS(form, ns.ui('suppressEmptyUneditable'), null, formDoc)\n const editable = kb.updater?.editable((doc as NamedNode).uri)\n\n const autocompleteOptions:AutocompleteOptions = { // cancelButton?: HTMLElement,\n permanent: true,\n targetClass: queryParams.targetClass, // @@ simplify?\n queryParams\n }\n\n autocompleteOptions.size = kb.anyJS(form, ns.ui('size'), null, formDoc) || undefined\n\n let obj = kb.any(subject, property as any, undefined, doc)\n if (!obj) {\n obj = kb.any(form, ns.ui('default'))\n if (obj) {\n autocompleteOptions.currentObject = obj as NamedNode\n autocompleteOptions.currentName = kb.any(autocompleteOptions.currentObject, labelProperty, null, doc) as Literal\n } else { // No data or default. Should we suprress the whole field?\n if (suppressEmptyUneditable && !editable) {\n box.style.display = 'none' // clutter removal\n return box\n }\n }\n } else { // get object and name from target data:\n autocompleteOptions.currentObject = obj as NamedNode\n autocompleteOptions.currentName = kb.any(autocompleteOptions.currentObject, labelProperty, null, doc) as Literal\n }\n\n lhs.appendChild(widgets.fieldLabel(dom, property as any, form))\n\n const barOptions = {\n editable,\n dbLookup: true\n }\n\n renderAutocompleteControl(dom, subject as NamedNode, barOptions, autocompleteOptions, addOneIdAndRefresh, deleteOne).then((control) => {\n rhs.appendChild(control)\n }, (err) => {\n rhs.appendChild(widgets.errorMessageBlock(dom, `Error rendering autocomplete ${form}: ${err}`, '#fee', err)) //\n })\n return box\n}\n\n// ends\n"],"file":"autocompleteField.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/widgets/forms/autocomplete/autocompleteField.ts"],"names":["autocompleteField","dom","container","already","subject","form","doc","callbackFunction","addOneIdAndRefresh","result","name","Error","oldValue","kb","the","property","oldName","any","labelProperty","equals","sameTerm","deletables","statementsMatching","concat","insertables","updater","updateMany","box","appendChild","widgets","errorMessageBlock","deleteOne","_result","_name","e2","termType","store","formDoc","createElement","lhs","setAttribute","style","formFieldNameBoxStyle","rhs","ns","ui","schema","dataSource","queryParams","label","anyJS","logo","targetClass","objectURIBase","undefined","endpoint","searchByNameQuery","insitituteDetailsQuery","searchByNameURI","suppressEmptyUneditable","editable","uri","autocompleteOptions","permanent","size","obj","currentObject","currentName","display","fieldLabel","barOptions","dbLookup","then","control","err"],"mappings":"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","sourcesContent":["/* Form field for doing autocompleete\n */\nimport * as ns from '../../../ns'\nimport { store } from 'solid-logic'\nimport * as widgets from '../../../widgets'\nimport * as style from '../../../style'\nimport { renderAutocompleteControl } from './autocompleteBar'\nimport { QueryParameters } from './publicData'\nimport { NamedNode, BlankNode, Literal, Variable, st } from 'rdflib'\nimport { AutocompleteOptions } from './autocompletePicker'\n/**\n * Render a autocomplete form field\n *\n * The autocomplete form searches for an object in a definitive public database,\n * and allows the user to search for it by name, displaying a list of objects whose names match\n * the input to date, and letting the user either click on one of the list,\n * or just go on untill there is only one. The process then returns two values,\n * the URiI of the object and its name.\n *\n * @param dom The HTML Document object aka Document Object Model\n * @param container If present, the created widget will be appended to this\n * @param already A hash table of (form, subject) kept to prevent recursive forms looping\n * @param subject The thing about which the form displays/edits data\n * @param form The form or field to be rendered\n * @param doc The web document in which the data is\n * @param callbackFunction Called when data is changed so other parts can be refreshed.\n *\n * Form properties:\n * @param ui:property The property to store the object itself\n * @param ui:labelProperty The property used to store the name of the object\n * @param ui:category The class of objects to be searched, if fixed (else dep on class of subject)\n *\n * @returns The HTML widget created\n */\n// eslint-disable-next-line complexity\nexport function autocompleteField (\n dom: HTMLDocument,\n container: HTMLElement | undefined,\n already,\n subject: NamedNode | BlankNode | Variable,\n form: NamedNode,\n doc: NamedNode | undefined,\n callbackFunction: (_ok: boolean, _errorMessage: string) => void\n): HTMLElement {\n async function addOneIdAndRefresh (result:NamedNode | Literal, name: Literal) {\n if (!name) {\n throw new Error('autocompleteField: No name set.')\n }\n const oldValue = kb.the(subject, property as any, null, doc)\n if (oldValue) {\n const oldName = kb.any(oldValue as any, labelProperty as any, null, doc)\n if (oldValue.equals(result) && oldName && oldName.sameTerm(name)) {\n // console.log('No change: same values.')\n return\n }\n }\n const deletables = oldValue\n ? kb.statementsMatching(subject, property as any, oldValue, doc)\n .concat(kb.statementsMatching(oldValue as any, labelProperty as any, null, doc))\n : []\n // console.log('autocompleteField Deletables ' + deletables.map(st => st.toNT()))\n const insertables = [st(subject, property as any, result, doc),\n st(result as any, labelProperty as any, name, doc)] // @@ track the language of the name too!\n // console.log(`AC form: ${deletables.length} to delete and ${insertables.length} to insert`)\n try {\n // console.log('@@@ AC updating ', deletables, insertables)\n await kb.updater?.updateMany(deletables, insertables)\n } catch (err) {\n callbackFunction(false, err)\n box.appendChild(widgets.errorMessageBlock(dom, 'Autocomplete form data update error:' + err, null, err))\n return\n }\n callbackFunction(true, '')\n }\n\n async function deleteOne (_result:NamedNode | Literal, _name: Literal) {\n const oldValue = kb.the(subject, property as any, null, doc)\n if (!oldValue) {\n callbackFunction(false, 'NO data to elete')\n box.appendChild(widgets.errorMessageBlock(dom, 'Autocomplete delete: no old data!'))\n return\n }\n // const oldName = kb.any(oldValue as any, labelProperty as any, null, doc)\n const deletables = kb.statementsMatching(subject, property as any, oldValue, doc)\n .concat(kb.statementsMatching(oldValue as any, labelProperty as any, null, doc))\n // console.log('autocompleteField Deletables ' + deletables.map(st => st.toNT()))\n const insertables = []\n // console.log(`AC form delete: ${deletables.length} to delete and ${insertables.length} to insert`)\n try {\n // console.log('@@@ AC updating ', deletables, insertables)\n await kb.updater?.updateMany(deletables, insertables)\n } catch (err) {\n const e2 = new Error('Autocomplete form data delete error:' + err)\n callbackFunction(false, err)\n box.appendChild(widgets.errorMessageBlock(dom, e2, null, err))\n return\n }\n callbackFunction(true, '') // changed\n }\n\n if (subject.termType !== 'NamedNode') {\n throw new Error('Sorry this field only works on NamedNode subjects (for editable)')\n }\n const kb = store\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n const box = dom.createElement('div')\n if (container) container.appendChild(box)\n const lhs = dom.createElement('div')\n lhs.setAttribute('class', 'formFieldName')\n lhs.setAttribute('style', style.formFieldNameBoxStyle)\n box.appendChild(lhs)\n const rhs = dom.createElement('div')\n rhs.setAttribute('class', 'formFieldValue')\n box.appendChild(rhs)\n\n const property = kb.any(form, ns.ui('property'))\n if (!property) {\n return box.appendChild(\n widgets.errorMessageBlock(dom, 'Error: No property given for autocomplete field: ' + form)\n )\n }\n const labelProperty = kb.any(form, ns.ui('labelProperty')) || ns.schema('name')\n\n // Parse the data source into query options\n\n const dataSource = kb.any(form, ns.ui('dataSource')) as NamedNode | undefined\n if (!dataSource) {\n // console.log('@@ connectedStatements ACF ', kb.connectedStatements(form).map(x => x.toNT()).join('\\n'))\n return box.appendChild(\n widgets.errorMessageBlock(dom, 'Error: No data source given for autocomplete field: ' + form)\n )\n }\n const queryParams:QueryParameters = {\n // targetClass: kb.any(dataSource, ns.ui('targetClass'), null, dataSource.doc()) as NamedNode | undefined,\n label: kb.anyJS(dataSource, ns.schema('name'), null, dataSource.doc()),\n logo: (kb.any(dataSource, ns.schema('logo'), null, dataSource.doc())) as NamedNode | undefined\n }\n\n // @@ Should we pass the target class in from the data source definition or use a current type of the subject\n const targetClass = (kb.any(form, ns.ui('targetClass'), null, form.doc()) || // class in form takes pecedence\n kb.any(dataSource, ns.ui('targetClass'), null, dataSource.doc())) as NamedNode | undefined\n if (targetClass) {\n queryParams.targetClass = targetClass\n }\n\n queryParams.objectURIBase = (kb.any(dataSource, ns.ui('objectURIBase'), null, dataSource.doc()) || undefined) as NamedNode | undefined\n\n /*\n if (!queryParams.targetClass) {\n const klass = kb.any(subject, ns.rdf('type')) as NamedNode | undefined\n // @@ be more selective of which class if many\n // @@ todo: Take ALL classes, and compare them with those the data source knows about\n // with translation where necessary. Find most specific of the classes for the search.\n if (!klass) throw new Error('Autocomplete: No class specified or is current type of' + subject)\n queryParams.targetClass = klass\n }\n */\n const endpoint = kb.anyJS(dataSource, ns.ui('endpoint'), null, dataSource.doc()) as string | undefined\n if (endpoint) { // SPARQL\n queryParams.endpoint = endpoint\n\n queryParams.searchByNameQuery = kb.anyJS(dataSource, ns.ui('searchByNameQuery'), null, dataSource.doc())\n if (!queryParams.searchByNameQuery) {\n return box.appendChild(\n widgets.errorMessageBlock(dom, 'Error: No searchByNameQuery given for endpoint data Source: ' + form))\n }\n queryParams.insitituteDetailsQuery = kb.anyJS(dataSource, ns.ui('insitituteDetailsQuery'), null, dataSource.doc())\n } else {\n // return box.appendChild(\n // widgets.errorMessageBlock(dom, 'Error: No SPARQL endpoint given for autocomplete field: ' + form))\n const searchByNameURI = kb.anyJS(dataSource, ns.ui('searchByNameURI'))\n if (!searchByNameURI) {\n return box.appendChild(\n widgets.errorMessageBlock(dom, 'Error: No searchByNameURI OR sparql endpoint given for dataSource: ' + dataSource)\n )\n }\n queryParams.searchByNameURI = searchByNameURI\n }\n // It can be cleaner to just remove empty fields if you can't edit them anyway\n const suppressEmptyUneditable = kb.anyJS(form, ns.ui('suppressEmptyUneditable'), null, formDoc)\n const editable = kb.updater?.editable((doc as NamedNode).uri)\n\n const autocompleteOptions:AutocompleteOptions = { // cancelButton?: HTMLElement,\n permanent: true,\n targetClass: queryParams.targetClass, // @@ simplify?\n queryParams\n }\n\n autocompleteOptions.size = kb.anyJS(form, ns.ui('size'), null, formDoc) || undefined\n\n let obj = kb.any(subject, property as any, undefined, doc)\n if (!obj) {\n obj = kb.any(form, ns.ui('default'))\n if (obj) {\n autocompleteOptions.currentObject = obj as NamedNode\n autocompleteOptions.currentName = kb.any(autocompleteOptions.currentObject, labelProperty, null, doc) as Literal\n } else { // No data or default. Should we suprress the whole field?\n if (suppressEmptyUneditable && !editable) {\n box.style.display = 'none' // clutter removal\n return box\n }\n }\n } else { // get object and name from target data:\n autocompleteOptions.currentObject = obj as NamedNode\n autocompleteOptions.currentName = kb.any(autocompleteOptions.currentObject, labelProperty, null, doc) as Literal\n }\n\n lhs.appendChild(widgets.fieldLabel(dom, property as any, form))\n\n const barOptions = {\n editable,\n dbLookup: true\n }\n\n renderAutocompleteControl(dom, subject as NamedNode, barOptions, autocompleteOptions, addOneIdAndRefresh, deleteOne).then((control) => {\n rhs.appendChild(control)\n }, (err) => {\n rhs.appendChild(widgets.errorMessageBlock(dom, `Error rendering autocomplete ${form}: ${err}`, '#fee', err)) //\n })\n return box\n}\n\n// ends\n"],"file":"autocompleteField.js"}
|
|
File without changes
|
|
File without changes
|
|
@@ -20,7 +20,7 @@ var style = _interopRequireWildcard(require("../../../style"));
|
|
|
20
20
|
|
|
21
21
|
var widgets = _interopRequireWildcard(require("../../../widgets"));
|
|
22
22
|
|
|
23
|
-
var
|
|
23
|
+
var _solidLogic = require("solid-logic");
|
|
24
24
|
|
|
25
25
|
var _publicData = require("./publicData");
|
|
26
26
|
|
|
@@ -452,7 +452,7 @@ function _renderAutoComplete() {
|
|
|
452
452
|
debug.log('Auto complete: finish! ' + object);
|
|
453
453
|
|
|
454
454
|
if (object.termType === 'Literal' && acOptions.queryParams.objectURIBase) {
|
|
455
|
-
object =
|
|
455
|
+
object = _solidLogic.store.sym(acOptions.queryParams.objectURIBase.value + object.value);
|
|
456
456
|
} // remove(decoration.cancelButton)
|
|
457
457
|
// remove(decoration.acceptButton)
|
|
458
458
|
// remove(div)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/widgets/forms/autocomplete/autocompletePicker.ts"],"names":["AUTOCOMPLETE_THRESHOLD","AUTOCOMPLETE_ROWS","AUTOCOMPLETE_ROWS_STRETCH","setVisible","element","visible","style","display","renderAutoComplete","dom","acOptions","decoration","callback","complain","finish","gotIt","acceptButtonHandler","cancelButtonHandler","nameMatch","clearList","inputEventHHandler","loadBindingsAndFilterByLanguage","filterByName","refreshList","initialize","currentObject","searchInput","value","currentName","foundName","lastFilter","undefined","foundObject","deleteButton","acceptButton","editButton","cancelButton","inputEventHandlerLock","rowForBinding","compareBindingsByName","self","other","name","binding","row","createElement","setStyle","setAttribute","color","allDisplayed","textContent","object","subject","nameTerm","addEventListener","_event","debug","log","languagePrefs","filter","trim","toLowerCase","length","numberOfRows","startsWith","lastBindings","slimmed","loadedEnough","displayable","slice","sort","table","appendChild","bindings","targetClass","defaultPreferredLanguages","queryParams","AUTOCOMPLETE_LIMIT","children","removeChild","lastChild","candidate","parts","split","j","word","indexOf","permanent","div","parentNode","disbaled","termType","objectURIBase","kb","sym","message","errorRow","err","Error","widgets","errorMessageBlock","padding","head","cell","size","textInputSize","searchInputStyle","textInputStyle","event","keyCode"],"mappings":"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","sourcesContent":["/* Autocomplete Picker: Create and edit data using public data\n**\n** As the data source is passed as a parameter, all kinds of APIa and query services can be used\n**\n*/\nimport * as debug from '../../../debug'\nimport * as style from '../../../style'\nimport * as widgets from '../../../widgets'\nimport { kb } from '../../../logic'\nimport { NamedNode, Literal } from 'rdflib'\nimport { queryPublicDataByName, bindingToTerm, AUTOCOMPLETE_LIMIT, QueryParameters } from './publicData'\nimport { filterByLanguage, getPreferredLanguages, defaultPreferredLanguages } from './language'\n\nconst AUTOCOMPLETE_THRESHOLD = 4 // don't check until this many characters typed\nconst AUTOCOMPLETE_ROWS = 20 // 20?\nconst AUTOCOMPLETE_ROWS_STRETCH = 40\n\n/*\nAutocomplete happens in 6 phases:\n 1. The search string is too small to bother\n 2. The search string is big enough, and we have not loaded the array\n 3. The search string is big enough, and we have loaded array up to the limit\n Display them and wait for more user input\n 4. The search string is big enough, and we have loaded array NOT to the limit\n but including all matches. No more fetches.\n If user gets more precise, wait for them to select one - or reduce to a single\n 5. Single one selected. Optionally waiting for accept button to be pressed, OR can change string and go to 5 or 2\n 6. Locked with a value. Press 'edit' button to return to 5\n*/\n\nexport type AutocompleteDecoration = {\n acceptButton?: HTMLElement,\n cancelButton: HTMLElement, // Must have cancel button\n editButton?: HTMLElement,\n deleteButton?: HTMLElement\n}\nexport type AutocompleteOptions = {\n targetClass?: NamedNode,\n currentObject?: NamedNode,\n currentName?: Literal,\n queryParams: QueryParameters,\n size?: number,\n permanent?: boolean\n}\n\ninterface Callback1 {\n (_subject: NamedNode, _name: Literal): any;\n}\n\nexport function setVisible (element:HTMLElement, visible:boolean) {\n element.style.display = visible ? '' : 'none' // Do not use visibility, it holds the real estate\n}\n\n// The core of the autocomplete UI\nexport async function renderAutoComplete (dom: HTMLDocument,\n acOptions:AutocompleteOptions,\n decoration: AutocompleteDecoration,\n callback: Callback1) {\n function complain (message) {\n const errorRow = table.appendChild(dom.createElement('tr'))\n debug.log(message)\n const err = new Error(message)\n errorRow.appendChild(widgets.errorMessageBlock(dom, err, 'pink'))\n // errorMessageBlock will log the stack to the console\n style.setStyle(errorRow, 'autocompleteRowStyle')\n errorRow.style.padding = '1em'\n }\n\n function finish (object, name) {\n debug.log('Auto complete: finish! ' + object)\n if (object.termType === 'Literal' && acOptions.queryParams.objectURIBase) {\n object = kb.sym(acOptions.queryParams.objectURIBase.value + object.value)\n }\n // remove(decoration.cancelButton)\n // remove(decoration.acceptButton)\n // remove(div)\n clearList()\n callback(object, name)\n }\n async function gotIt (object:NamedNode | Literal, name: Literal) {\n if (decoration.acceptButton) {\n (decoration.acceptButton as any).disbaled = false\n setVisible(decoration.acceptButton, true) // now wait for confirmation\n searchInput.value = name.value // complete it\n foundName = name\n foundObject = object\n debug.log('Auto complete: name: ' + name)\n debug.log('Auto complete: waiting for accept ' + object)\n clearList() // This may be an option - nice and clean but does not allow change of mind\n return\n }\n setVisible(decoration.cancelButton, true)\n finish(object, name)\n }\n\n async function acceptButtonHandler (_event) {\n if (foundName && searchInput.value === foundName.value) { // still\n finish(foundObject, foundName)\n }\n }\n\n async function cancelButtonHandler (_event) {\n debug.log('Auto complete: Canceled by user! ')\n if (acOptions.permanent) {\n initialize()\n } else {\n if (div.parentNode) {\n div.parentNode.removeChild(div)\n }\n }\n }\n\n function nameMatch (filter:string, candidate: string):boolean {\n const parts = filter.split(' ') // Each name part must be somewhere\n for (let j = 0; j < parts.length; j++) {\n const word = parts[j]\n if (candidate.toLowerCase().indexOf(word) < 0) return false\n }\n return true\n }\n\n function clearList () {\n while (table.children.length > 1) {\n table.removeChild(table.lastChild as Node)\n }\n }\n\n async function inputEventHHandler (_event) {\n // console.log('@@ AC inputEventHHandler called')\n setVisible(decoration.cancelButton, true) // only allow cancel when there is something to cancel\n refreshList() /// @@ debounqce does not work with jest\n /*\n if (runningTimeout) {\n clearTimeout(runningTimeout)\n }\n runningTimeout = setTimeout(refreshList, AUTOCOMPLETE_DEBOUNCE_MS)\n */\n }\n\n async function loadBindingsAndFilterByLanguage (filter, languagePrefs) {\n // console.log('@@ loadBindingsAndFilterByLanguage ' + filter)\n let bindings\n try {\n bindings = await queryPublicDataByName(filter, targetClass as any,\n languagePrefs || defaultPreferredLanguages, acOptions.queryParams)\n } catch (err) {\n complain('Error querying db of organizations: ' + err)\n inputEventHandlerLock = false\n return\n }\n loadedEnough = bindings.length < AUTOCOMPLETE_LIMIT\n if (loadedEnough) {\n lastFilter = filter\n } else {\n lastFilter = undefined\n }\n clearList()\n const slimmed = filterByLanguage(bindings, languagePrefs)\n return slimmed\n }\n\n function filterByName (filter, bindings) {\n return bindings.filter(binding => nameMatch(filter, binding.name.value))\n }\n\n async function refreshList () {\n // console.log('@@ refreshList called')\n function rowForBinding (binding) {\n const row = dom.createElement('tr')\n style.setStyle(row, 'autocompleteRowStyle')\n row.setAttribute('style', 'padding: 0.3em;')\n row.style.color = allDisplayed ? '#080' : '#088' // green means 'you should find it here'\n row.textContent = binding.name.value\n const object = bindingToTerm(binding.subject)\n const nameTerm = bindingToTerm(binding.name)\n row.addEventListener('click', async _event => {\n debug.log(' click row textContent: ' + row.textContent)\n debug.log(' click name: ' + nameTerm.value)\n if (object && nameTerm) {\n gotIt(object, nameTerm as Literal)\n }\n })\n return row\n } // rowForBinding\n function compareBindingsByName (self, other) {\n return other.name.value > self.name.value\n ? 1\n : other.name.name < self.name.value ? -1 : 0\n }\n\n if (inputEventHandlerLock) {\n debug.log(`Ignoring \"${searchInput.value}\" because of lock `)\n return\n }\n debug.log(`Setting lock at \"${searchInput.value}\"`)\n\n inputEventHandlerLock = true\n const languagePrefs = await getPreferredLanguages()\n const filter = searchInput.value.trim().toLowerCase()\n if (filter.length < AUTOCOMPLETE_THRESHOLD) { // too small\n clearList()\n // candidatesLoaded = false\n numberOfRows = AUTOCOMPLETE_ROWS\n } else {\n if (!allDisplayed || !lastFilter || !filter.startsWith(lastFilter)) {\n debug.log(` Querying database at \"${filter}\" cf last \"${lastFilter}\".`)\n lastBindings = await loadBindingsAndFilterByLanguage(filter, languagePrefs) // freesh query\n }\n // Trim table as search gets tighter:\n const slimmed = filterByName(filter, lastBindings)\n if (loadedEnough && slimmed.length <= AUTOCOMPLETE_ROWS_STRETCH) {\n numberOfRows = slimmed.length // stretch if it means we get all items\n }\n allDisplayed = loadedEnough && slimmed.length <= numberOfRows\n debug.log(` Filter:\"${filter}\" lastBindings: ${lastBindings.length}, slimmed to ${slimmed.length}; rows: ${numberOfRows}, Enough? ${loadedEnough}, All displayed? ${allDisplayed}`)\n\n const displayable = slimmed.slice(0, numberOfRows)\n\n displayable.sort(compareBindingsByName)\n clearList()\n for (const binding of displayable) {\n table.appendChild(rowForBinding(binding))\n }\n if (slimmed.length === 1) {\n gotIt(bindingToTerm(slimmed[0].subject), bindingToTerm(slimmed[0].name) as Literal)\n }\n } // else\n inputEventHandlerLock = false\n } // refreshList\n\n function initialize () {\n if (acOptions.currentObject) { // If have existing value then jump into the endgame of the autocomplete\n searchInput.value = acOptions.currentName ? acOptions.currentName.value : '??? wot no name for ' + acOptions.currentObject\n foundName = acOptions.currentName\n lastFilter = acOptions.currentName ? acOptions.currentName.value : undefined\n foundObject = acOptions.currentObject\n } else {\n searchInput.value = ''\n lastFilter = undefined\n foundObject = undefined\n }\n if (decoration.deleteButton) {\n setVisible(decoration.deleteButton, !!acOptions.currentObject)\n }\n\n if (decoration.acceptButton) {\n setVisible(decoration.acceptButton, false) // hide until input complete\n }\n if (decoration.editButton) {\n setVisible(decoration.editButton, true)\n }\n if (decoration.cancelButton) {\n setVisible(decoration.cancelButton, false) // only allow cancel when there is something to cancel\n }\n inputEventHandlerLock = false\n clearList()\n } // initialiize\n\n // const queryParams: QueryParameters = acOptions.queryParams\n const targetClass = acOptions.targetClass\n if (!targetClass) throw new Error('renderAutoComplete: missing targetClass')\n // console.log(`renderAutoComplete: targetClass=${targetClass}` )\n if (decoration.acceptButton) {\n decoration.acceptButton.addEventListener('click', acceptButtonHandler, false)\n }\n if (decoration.cancelButton) {\n decoration.cancelButton.addEventListener('click', cancelButtonHandler, false)\n }\n\n // var candidatesLoaded = false\n let lastBindings\n let loadedEnough = false\n let inputEventHandlerLock = false\n let allDisplayed = false\n let lastFilter = undefined as (string | undefined)\n let numberOfRows = AUTOCOMPLETE_ROWS // this gets slimmed down\n const div = dom.createElement('div')\n let foundName = undefined as (Literal | undefined)// once found accepted string must match this\n let foundObject = undefined as (NamedNode | Literal | undefined)\n const table = div.appendChild(dom.createElement('table'))\n table.setAttribute('data-testid', 'autocomplete-table')\n table.setAttribute('style', 'max-width: 30em; margin: 0.5em;')\n const head = table.appendChild(dom.createElement('tr'))\n style.setStyle(head, 'autocompleteRowStyle') // textInputStyle or\n const cell = head.appendChild(dom.createElement('td'))\n const searchInput = cell.appendChild(dom.createElement('input'))\n searchInput.setAttribute('type', 'text')\n\n initialize()\n\n const size = acOptions.size || style.textInputSize || 20\n searchInput.setAttribute('size', size)\n searchInput.setAttribute('data-testid', 'autocomplete-input')\n\n const searchInputStyle = style.textInputStyle || // searchInputStyle ?\n 'border: 0.1em solid #444; border-radius: 0.5em; width: 100%; font-size: 100%; padding: 0.1em 0.6em' // @\n searchInput.setAttribute('style', searchInputStyle)\n searchInput.addEventListener('keyup', function (event) {\n if (event.keyCode === 13) {\n acceptButtonHandler(event)\n }\n }, false)\n\n searchInput.addEventListener('input', inputEventHHandler)\n // console.log('@@ renderAutoComplete returns ' + div.innerHTML)\n return div\n} // renderAutoComplete\n\n// ENDS\n"],"file":"autocompletePicker.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/widgets/forms/autocomplete/autocompletePicker.ts"],"names":["AUTOCOMPLETE_THRESHOLD","AUTOCOMPLETE_ROWS","AUTOCOMPLETE_ROWS_STRETCH","setVisible","element","visible","style","display","renderAutoComplete","dom","acOptions","decoration","callback","complain","finish","gotIt","acceptButtonHandler","cancelButtonHandler","nameMatch","clearList","inputEventHHandler","loadBindingsAndFilterByLanguage","filterByName","refreshList","initialize","currentObject","searchInput","value","currentName","foundName","lastFilter","undefined","foundObject","deleteButton","acceptButton","editButton","cancelButton","inputEventHandlerLock","rowForBinding","compareBindingsByName","self","other","name","binding","row","createElement","setStyle","setAttribute","color","allDisplayed","textContent","object","subject","nameTerm","addEventListener","_event","debug","log","languagePrefs","filter","trim","toLowerCase","length","numberOfRows","startsWith","lastBindings","slimmed","loadedEnough","displayable","slice","sort","table","appendChild","bindings","targetClass","defaultPreferredLanguages","queryParams","AUTOCOMPLETE_LIMIT","children","removeChild","lastChild","candidate","parts","split","j","word","indexOf","permanent","div","parentNode","disbaled","termType","objectURIBase","store","sym","message","errorRow","err","Error","widgets","errorMessageBlock","padding","head","cell","size","textInputSize","searchInputStyle","textInputStyle","event","keyCode"],"mappings":"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","sourcesContent":["/* Autocomplete Picker: Create and edit data using public data\n**\n** As the data source is passed as a parameter, all kinds of APIa and query services can be used\n**\n*/\nimport * as debug from '../../../debug'\nimport * as style from '../../../style'\nimport * as widgets from '../../../widgets'\nimport { store } from 'solid-logic'\nimport { NamedNode, Literal } from 'rdflib'\nimport { queryPublicDataByName, bindingToTerm, AUTOCOMPLETE_LIMIT, QueryParameters } from './publicData'\nimport { filterByLanguage, getPreferredLanguages, defaultPreferredLanguages } from './language'\n\nconst AUTOCOMPLETE_THRESHOLD = 4 // don't check until this many characters typed\nconst AUTOCOMPLETE_ROWS = 20 // 20?\nconst AUTOCOMPLETE_ROWS_STRETCH = 40\n\n/*\nAutocomplete happens in 6 phases:\n 1. The search string is too small to bother\n 2. The search string is big enough, and we have not loaded the array\n 3. The search string is big enough, and we have loaded array up to the limit\n Display them and wait for more user input\n 4. The search string is big enough, and we have loaded array NOT to the limit\n but including all matches. No more fetches.\n If user gets more precise, wait for them to select one - or reduce to a single\n 5. Single one selected. Optionally waiting for accept button to be pressed, OR can change string and go to 5 or 2\n 6. Locked with a value. Press 'edit' button to return to 5\n*/\n\nexport type AutocompleteDecoration = {\n acceptButton?: HTMLElement,\n cancelButton: HTMLElement, // Must have cancel button\n editButton?: HTMLElement,\n deleteButton?: HTMLElement\n}\nexport type AutocompleteOptions = {\n targetClass?: NamedNode,\n currentObject?: NamedNode,\n currentName?: Literal,\n queryParams: QueryParameters,\n size?: number,\n permanent?: boolean\n}\n\ninterface Callback1 {\n (_subject: NamedNode, _name: Literal): any;\n}\n\nexport function setVisible (element:HTMLElement, visible:boolean) {\n element.style.display = visible ? '' : 'none' // Do not use visibility, it holds the real estate\n}\n\n// The core of the autocomplete UI\nexport async function renderAutoComplete (dom: HTMLDocument,\n acOptions:AutocompleteOptions,\n decoration: AutocompleteDecoration,\n callback: Callback1) {\n function complain (message) {\n const errorRow = table.appendChild(dom.createElement('tr'))\n debug.log(message)\n const err = new Error(message)\n errorRow.appendChild(widgets.errorMessageBlock(dom, err, 'pink'))\n // errorMessageBlock will log the stack to the console\n style.setStyle(errorRow, 'autocompleteRowStyle')\n errorRow.style.padding = '1em'\n }\n\n function finish (object, name) {\n debug.log('Auto complete: finish! ' + object)\n if (object.termType === 'Literal' && acOptions.queryParams.objectURIBase) {\n object = store.sym(acOptions.queryParams.objectURIBase.value + object.value)\n }\n // remove(decoration.cancelButton)\n // remove(decoration.acceptButton)\n // remove(div)\n clearList()\n callback(object, name)\n }\n async function gotIt (object:NamedNode | Literal, name: Literal) {\n if (decoration.acceptButton) {\n (decoration.acceptButton as any).disbaled = false\n setVisible(decoration.acceptButton, true) // now wait for confirmation\n searchInput.value = name.value // complete it\n foundName = name\n foundObject = object\n debug.log('Auto complete: name: ' + name)\n debug.log('Auto complete: waiting for accept ' + object)\n clearList() // This may be an option - nice and clean but does not allow change of mind\n return\n }\n setVisible(decoration.cancelButton, true)\n finish(object, name)\n }\n\n async function acceptButtonHandler (_event) {\n if (foundName && searchInput.value === foundName.value) { // still\n finish(foundObject, foundName)\n }\n }\n\n async function cancelButtonHandler (_event) {\n debug.log('Auto complete: Canceled by user! ')\n if (acOptions.permanent) {\n initialize()\n } else {\n if (div.parentNode) {\n div.parentNode.removeChild(div)\n }\n }\n }\n\n function nameMatch (filter:string, candidate: string):boolean {\n const parts = filter.split(' ') // Each name part must be somewhere\n for (let j = 0; j < parts.length; j++) {\n const word = parts[j]\n if (candidate.toLowerCase().indexOf(word) < 0) return false\n }\n return true\n }\n\n function clearList () {\n while (table.children.length > 1) {\n table.removeChild(table.lastChild as Node)\n }\n }\n\n async function inputEventHHandler (_event) {\n // console.log('@@ AC inputEventHHandler called')\n setVisible(decoration.cancelButton, true) // only allow cancel when there is something to cancel\n refreshList() /// @@ debounqce does not work with jest\n /*\n if (runningTimeout) {\n clearTimeout(runningTimeout)\n }\n runningTimeout = setTimeout(refreshList, AUTOCOMPLETE_DEBOUNCE_MS)\n */\n }\n\n async function loadBindingsAndFilterByLanguage (filter, languagePrefs) {\n // console.log('@@ loadBindingsAndFilterByLanguage ' + filter)\n let bindings\n try {\n bindings = await queryPublicDataByName(filter, targetClass as any,\n languagePrefs || defaultPreferredLanguages, acOptions.queryParams)\n } catch (err) {\n complain('Error querying db of organizations: ' + err)\n inputEventHandlerLock = false\n return\n }\n loadedEnough = bindings.length < AUTOCOMPLETE_LIMIT\n if (loadedEnough) {\n lastFilter = filter\n } else {\n lastFilter = undefined\n }\n clearList()\n const slimmed = filterByLanguage(bindings, languagePrefs)\n return slimmed\n }\n\n function filterByName (filter, bindings) {\n return bindings.filter(binding => nameMatch(filter, binding.name.value))\n }\n\n async function refreshList () {\n // console.log('@@ refreshList called')\n function rowForBinding (binding) {\n const row = dom.createElement('tr')\n style.setStyle(row, 'autocompleteRowStyle')\n row.setAttribute('style', 'padding: 0.3em;')\n row.style.color = allDisplayed ? '#080' : '#088' // green means 'you should find it here'\n row.textContent = binding.name.value\n const object = bindingToTerm(binding.subject)\n const nameTerm = bindingToTerm(binding.name)\n row.addEventListener('click', async _event => {\n debug.log(' click row textContent: ' + row.textContent)\n debug.log(' click name: ' + nameTerm.value)\n if (object && nameTerm) {\n gotIt(object, nameTerm as Literal)\n }\n })\n return row\n } // rowForBinding\n function compareBindingsByName (self, other) {\n return other.name.value > self.name.value\n ? 1\n : other.name.name < self.name.value ? -1 : 0\n }\n\n if (inputEventHandlerLock) {\n debug.log(`Ignoring \"${searchInput.value}\" because of lock `)\n return\n }\n debug.log(`Setting lock at \"${searchInput.value}\"`)\n\n inputEventHandlerLock = true\n const languagePrefs = await getPreferredLanguages()\n const filter = searchInput.value.trim().toLowerCase()\n if (filter.length < AUTOCOMPLETE_THRESHOLD) { // too small\n clearList()\n // candidatesLoaded = false\n numberOfRows = AUTOCOMPLETE_ROWS\n } else {\n if (!allDisplayed || !lastFilter || !filter.startsWith(lastFilter)) {\n debug.log(` Querying database at \"${filter}\" cf last \"${lastFilter}\".`)\n lastBindings = await loadBindingsAndFilterByLanguage(filter, languagePrefs) // freesh query\n }\n // Trim table as search gets tighter:\n const slimmed = filterByName(filter, lastBindings)\n if (loadedEnough && slimmed.length <= AUTOCOMPLETE_ROWS_STRETCH) {\n numberOfRows = slimmed.length // stretch if it means we get all items\n }\n allDisplayed = loadedEnough && slimmed.length <= numberOfRows\n debug.log(` Filter:\"${filter}\" lastBindings: ${lastBindings.length}, slimmed to ${slimmed.length}; rows: ${numberOfRows}, Enough? ${loadedEnough}, All displayed? ${allDisplayed}`)\n\n const displayable = slimmed.slice(0, numberOfRows)\n\n displayable.sort(compareBindingsByName)\n clearList()\n for (const binding of displayable) {\n table.appendChild(rowForBinding(binding))\n }\n if (slimmed.length === 1) {\n gotIt(bindingToTerm(slimmed[0].subject), bindingToTerm(slimmed[0].name) as Literal)\n }\n } // else\n inputEventHandlerLock = false\n } // refreshList\n\n function initialize () {\n if (acOptions.currentObject) { // If have existing value then jump into the endgame of the autocomplete\n searchInput.value = acOptions.currentName ? acOptions.currentName.value : '??? wot no name for ' + acOptions.currentObject\n foundName = acOptions.currentName\n lastFilter = acOptions.currentName ? acOptions.currentName.value : undefined\n foundObject = acOptions.currentObject\n } else {\n searchInput.value = ''\n lastFilter = undefined\n foundObject = undefined\n }\n if (decoration.deleteButton) {\n setVisible(decoration.deleteButton, !!acOptions.currentObject)\n }\n\n if (decoration.acceptButton) {\n setVisible(decoration.acceptButton, false) // hide until input complete\n }\n if (decoration.editButton) {\n setVisible(decoration.editButton, true)\n }\n if (decoration.cancelButton) {\n setVisible(decoration.cancelButton, false) // only allow cancel when there is something to cancel\n }\n inputEventHandlerLock = false\n clearList()\n } // initialiize\n\n // const queryParams: QueryParameters = acOptions.queryParams\n const targetClass = acOptions.targetClass\n if (!targetClass) throw new Error('renderAutoComplete: missing targetClass')\n // console.log(`renderAutoComplete: targetClass=${targetClass}` )\n if (decoration.acceptButton) {\n decoration.acceptButton.addEventListener('click', acceptButtonHandler, false)\n }\n if (decoration.cancelButton) {\n decoration.cancelButton.addEventListener('click', cancelButtonHandler, false)\n }\n\n // var candidatesLoaded = false\n let lastBindings\n let loadedEnough = false\n let inputEventHandlerLock = false\n let allDisplayed = false\n let lastFilter = undefined as (string | undefined)\n let numberOfRows = AUTOCOMPLETE_ROWS // this gets slimmed down\n const div = dom.createElement('div')\n let foundName = undefined as (Literal | undefined)// once found accepted string must match this\n let foundObject = undefined as (NamedNode | Literal | undefined)\n const table = div.appendChild(dom.createElement('table'))\n table.setAttribute('data-testid', 'autocomplete-table')\n table.setAttribute('style', 'max-width: 30em; margin: 0.5em;')\n const head = table.appendChild(dom.createElement('tr'))\n style.setStyle(head, 'autocompleteRowStyle') // textInputStyle or\n const cell = head.appendChild(dom.createElement('td'))\n const searchInput = cell.appendChild(dom.createElement('input'))\n searchInput.setAttribute('type', 'text')\n\n initialize()\n\n const size = acOptions.size || style.textInputSize || 20\n searchInput.setAttribute('size', size)\n searchInput.setAttribute('data-testid', 'autocomplete-input')\n\n const searchInputStyle = style.textInputStyle || // searchInputStyle ?\n 'border: 0.1em solid #444; border-radius: 0.5em; width: 100%; font-size: 100%; padding: 0.1em 0.6em' // @\n searchInput.setAttribute('style', searchInputStyle)\n searchInput.addEventListener('keyup', function (event) {\n if (event.keyCode === 13) {\n acceptButtonHandler(event)\n }\n }, false)\n\n searchInput.addEventListener('input', inputEventHHandler)\n // console.log('@@ renderAutoComplete returns ' + div.innerHTML)\n return div\n} // renderAutoComplete\n\n// ENDS\n"],"file":"autocompletePicker.js"}
|
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"language.d.ts","sourceRoot":"","sources":["../../../../src/widgets/forms/autocomplete/language.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"language.d.ts","sourceRoot":"","sources":["../../../../src/widgets/forms/autocomplete/language.ts"],"names":[],"mappings":"AAWA,OAAO,EAAc,SAAS,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAMpD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,QAAQ,CAAC,EAAE,IAAI,CAAA;IACf,WAAW,CAAC,EAAE,IAAI,CAAA;CACnB;AAED,eAAO,MAAM,mBAAmB,8CAA8C,CAAA;AAE9E,eAAO,MAAM,yBAAyB,UAAiC,CAAA;AAEvE,wBAAgB,WAAW,CAAE,KAAK,KAAA,OAGjC;AAED,wBAAsB,wBAAwB,CAAE,MAAM,EAAE,SAAS,gBA6BhE;AAKD,wBAAsB,qBAAqB,iBAkB1C;AAOD,wBAAgB,gBAAgB,CAAE,QAAQ,KAAA,EAAE,aAAa,KAAA,aA6BxD"}
|
|
@@ -20,12 +20,10 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
|
|
|
20
20
|
|
|
21
21
|
var debug = _interopRequireWildcard(require("../../../debug"));
|
|
22
22
|
|
|
23
|
-
var
|
|
23
|
+
var _solidLogic = require("solid-logic");
|
|
24
24
|
|
|
25
25
|
var ns = _interopRequireWildcard(require("../../../ns"));
|
|
26
26
|
|
|
27
|
-
var _logic = require("../../../logic");
|
|
28
|
-
|
|
29
27
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
30
28
|
|
|
31
29
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -38,8 +36,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
38
36
|
|
|
39
37
|
/* eslint-disable no-console */
|
|
40
38
|
// import * as logic from '../index'
|
|
41
|
-
// import {
|
|
42
|
-
// import { nativeNameForLanguageCode, englishNameForLanguageCode } from './nativeNameForLanguageCode'
|
|
39
|
+
// import { authn } from '../../../authn/index'
|
|
43
40
|
var languageCodeURIBase = 'https://www.w3.org/ns/iana/language-code/'; /// @@ unsupported on the web (2021)
|
|
44
41
|
|
|
45
42
|
exports.languageCodeURIBase = languageCodeURIBase;
|
|
@@ -64,7 +61,7 @@ function getPreferredLanguagesFor(_x) {
|
|
|
64
61
|
|
|
65
62
|
function _getPreferredLanguagesFor() {
|
|
66
63
|
_getPreferredLanguagesFor = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(person) {
|
|
67
|
-
var
|
|
64
|
+
var _store$fetcher;
|
|
68
65
|
|
|
69
66
|
var doc, list, languageCodeArray;
|
|
70
67
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
@@ -73,10 +70,10 @@ function _getPreferredLanguagesFor() {
|
|
|
73
70
|
case 0:
|
|
74
71
|
doc = person.doc();
|
|
75
72
|
_context.next = 3;
|
|
76
|
-
return (
|
|
73
|
+
return (_store$fetcher = _solidLogic.store.fetcher) === null || _store$fetcher === void 0 ? void 0 : _store$fetcher.load(doc);
|
|
77
74
|
|
|
78
75
|
case 3:
|
|
79
|
-
list =
|
|
76
|
+
list = _solidLogic.store.any(person, ns.schema('knowsLanguage'), null, doc);
|
|
80
77
|
|
|
81
78
|
if (list) {
|
|
82
79
|
_context.next = 6;
|
|
@@ -89,7 +86,7 @@ function _getPreferredLanguagesFor() {
|
|
|
89
86
|
languageCodeArray = [];
|
|
90
87
|
list.elements.forEach(function (item) {
|
|
91
88
|
// console.log('@@ item ' + item)
|
|
92
|
-
var lang =
|
|
89
|
+
var lang = _solidLogic.store.any(item, ns.solid('publicId'), null, doc);
|
|
93
90
|
|
|
94
91
|
if (!lang) {
|
|
95
92
|
console.warn('getPreferredLanguages: No publiID of language.');
|
|
@@ -143,7 +140,7 @@ function _getPreferredLanguages() {
|
|
|
143
140
|
switch (_context2.prev = _context2.next) {
|
|
144
141
|
case 0:
|
|
145
142
|
_context2.next = 2;
|
|
146
|
-
return
|
|
143
|
+
return _solidLogic.authn.currentUser();
|
|
147
144
|
|
|
148
145
|
case 2:
|
|
149
146
|
me = _context2.sent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/widgets/forms/autocomplete/language.ts"],"names":["languageCodeURIBase","defaultPreferredLanguages","addDefaults","array","concat","filter","code","includes","getPreferredLanguagesFor","person","doc","
|
|
1
|
+
{"version":3,"sources":["../../../../src/widgets/forms/autocomplete/language.ts"],"names":["languageCodeURIBase","defaultPreferredLanguages","addDefaults","array","concat","filter","code","includes","getPreferredLanguagesFor","person","doc","store","fetcher","load","list","any","ns","schema","languageCodeArray","elements","forEach","item","lang","solid","console","warn","value","startsWith","error","slice","length","push","log","join","getPreferredLanguages","authn","currentUser","me","solidLanguagePrefs","navigator","languages","map","longForm","split","language","filterByLanguage","bindings","languagePrefs","uris","binding","uri","subject","languagePrefs2","reverse","slimmed","u","sortMe","name","index","indexOf","pair","sort","debug"],"mappings":"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","sourcesContent":["/* Logic to access public data stores\n*\n* including filtering resut by natural language etc\n* See https://solidos.solidcommunity.net/public/2021/01%20Building%20Solid%20Apps%20which%20use%20Public%20Data.html\n*/\n/* eslint-disable no-console */\nimport * as debug from '../../../debug'\n// import * as logic from '../index'\n// import { authn } from '../../../authn/index'\nimport { authn, store } from 'solid-logic'\nimport * as ns from '../../../ns'\nimport { Collection, NamedNode, Node } from 'rdflib'\n// import { Binding } from '../widgets/forms/autocomplete/publicData'\n// import { nativeNameForLanguageCode, englishNameForLanguageCode } from './nativeNameForLanguageCode'\n\n// const { currentUser } = logic.authn\n\nexport interface Binding {\n subject: Node;\n name?: Node\n location?: Node\n coordinates?: Node\n}\n\nexport const languageCodeURIBase = 'https://www.w3.org/ns/iana/language-code/' /// @@ unsupported on the web (2021)\n\nexport const defaultPreferredLanguages = ['en', 'fr', 'de', 'it', 'ar']\n\nexport function addDefaults (array) {\n if (!array) array = []\n return array.concat(defaultPreferredLanguages.filter(code => !array.includes(code)))\n}\n\nexport async function getPreferredLanguagesFor (person: NamedNode) {\n const doc = person.doc()\n await store.fetcher?.load(doc)\n const list = store.any(person, ns.schema('knowsLanguage'), null, doc) as Collection | undefined\n if (!list) {\n // console.log(`User ${person} has not set their languages in their profile.`)\n return defaultPreferredLanguages\n }\n const languageCodeArray: string[] = []\n list.elements.forEach(item => {\n // console.log('@@ item ' + item)\n const lang = store.any(item as any, ns.solid('publicId'), null, doc)\n if (!lang) {\n console.warn('getPreferredLanguages: No publiID of language.')\n return\n }\n if (!lang.value.startsWith(languageCodeURIBase)) {\n console.error(`What should be a language code ${lang.value} does not start with ${languageCodeURIBase}`)\n return\n }\n const code = lang.value.slice(languageCodeURIBase.length)\n languageCodeArray.push(code)\n })\n\n if (languageCodeArray.length > 0) {\n console.log(` User knows languages with codes: \"${languageCodeArray.join(',')}\"`)\n return addDefaults(languageCodeArray)\n }\n return null\n}\n/* Get the preferred langauges for the user\n *\n * Either from solid preferences or browser preferences or default\n */\nexport async function getPreferredLanguages () {\n // In future: cache in the login session for speed, but get from profile and private prefs\n // We append the defaults so if someone's first choice is not available they don't get something very obscure\n // See https://github.com/solid/solidos/issues/42\n const me = await authn.currentUser() as NamedNode\n if (me) { // If logged in\n const solidLanguagePrefs = await getPreferredLanguagesFor(me)\n if (solidLanguagePrefs) return solidLanguagePrefs\n }\n if (typeof navigator !== 'undefined') { // use browser settings\n if (navigator.languages) {\n return addDefaults(navigator.languages.map(longForm => longForm.split('-')[0]))\n }\n if (navigator.language) {\n return addDefaults([navigator.language.split('-')[0]])\n }\n }\n return defaultPreferredLanguages\n}\n\n/* From an array of bindings with a names for each row,\n * remove dupliacte names for the same thing, leaving the user's\n * preferred language version\n*/\n\nexport function filterByLanguage (bindings, languagePrefs) {\n const uris = {}\n bindings.forEach(binding => { // Organize names by their subject\n const uri = binding.subject.value\n uris[uri] = uris[uri] || []\n uris[uri].push(binding)\n })\n\n const languagePrefs2 = languagePrefs || defaultPreferredLanguages\n languagePrefs2.reverse() // Preferred last\n\n const slimmed = ([] as Array<Binding>)\n // console.log(` @@ {languagePrefs2 ${languagePrefs2}`)\n for (const u in uris) { // needs hasOwnProperty ?\n const bindings = uris[u]\n const sortMe = bindings.map(binding => {\n const lang = binding.name['xml:lang']\n const index = languagePrefs2.indexOf(lang)\n const pair = [index, binding]\n // console.log(` @@ lang: ${lang}, index: ${index}`)\n return pair\n })\n sortMe.sort() // best at th ebottom\n sortMe.reverse() // best at the top\n // console.debug('@@ sortMe:', sortMe)\n slimmed.push((sortMe[0][1] as any))\n } // map u\n debug.log(` Filter by language: ${bindings.length} -> ${slimmed.length}`)\n return slimmed\n}\n"],"file":"language.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publicData.d.ts","sourceRoot":"","sources":["../../../../src/widgets/forms/autocomplete/publicData.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"publicData.d.ts","sourceRoot":"","sources":["../../../../src/widgets/forms/autocomplete/publicData.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,12 +30,12 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
|
|
|
30
30
|
|
|
31
31
|
var _rdflib = require("rdflib");
|
|
32
32
|
|
|
33
|
+
var _solidLogic = require("solid-logic");
|
|
34
|
+
|
|
33
35
|
var debug = _interopRequireWildcard(require("../../../debug"));
|
|
34
36
|
|
|
35
37
|
var ns = _interopRequireWildcard(require("../../../ns"));
|
|
36
38
|
|
|
37
|
-
var _logic = require("../../../logic");
|
|
38
|
-
|
|
39
39
|
var _language = require("./language");
|
|
40
40
|
|
|
41
41
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -49,7 +49,6 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
49
49
|
*/
|
|
50
50
|
|
|
51
51
|
/* eslint-disable no-console */
|
|
52
|
-
// import * as logic from '../../../logic'
|
|
53
52
|
var AUTOCOMPLETE_LIMIT = 200; // How many to get from server
|
|
54
53
|
// With 3000 we could exceed the wikidata timeout
|
|
55
54
|
|
|
@@ -89,7 +88,7 @@ var fetcherOptionsJsonPublicData = {
|
|
|
89
88
|
exports.fetcherOptionsJsonPublicData = fetcherOptionsJsonPublicData;
|
|
90
89
|
var escoParameters = {
|
|
91
90
|
label: 'ESCO',
|
|
92
|
-
logo:
|
|
91
|
+
logo: _solidLogic.store.sym('https://ec.europa.eu/esco/portal/static_resource2/images/logo/logo_en.gif'),
|
|
93
92
|
searchByNameURI: 'https://ec.europa.eu/esco/api/search?language=$(language)&type=occupation&text=$(name)' // endpoint: undefined
|
|
94
93
|
// returnFormat: 'ESCO',
|
|
95
94
|
// targetClass: {}
|
|
@@ -98,7 +97,7 @@ var escoParameters = {
|
|
|
98
97
|
exports.escoParameters = escoParameters;
|
|
99
98
|
var dbpediaParameters = {
|
|
100
99
|
label: 'DBPedia',
|
|
101
|
-
logo:
|
|
100
|
+
logo: _solidLogic.store.sym('https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/DBpediaLogo.svg/263px-DBpediaLogo.svg.png'),
|
|
102
101
|
searchByNameQuery: "select distinct ?subject, ?name where {\n ?subject a $(targetClass); rdfs:label ?name\n FILTER regex(?name, \"$(name)\", \"i\")\n } LIMIT $(limit)",
|
|
103
102
|
endpoint: 'https://dbpedia.org/sparql/'
|
|
104
103
|
};
|
|
@@ -120,7 +119,7 @@ var wikidataParameters = {
|
|
|
120
119
|
label: 'WikiData',
|
|
121
120
|
limit: 3000,
|
|
122
121
|
// Need a high one as very many items, and many languages
|
|
123
|
-
logo:
|
|
122
|
+
logo: _solidLogic.store.sym('https://www.wikimedia.org/static/images/project-logos/wikidatawiki.png'),
|
|
124
123
|
endpoint: 'https://query.wikidata.org/sparql',
|
|
125
124
|
searchByNameQuery: "SELECT ?subject ?name\n WHERE {\n ?klass wdt:P279* $(targetClass) .\n ?subject wdt:P31 ?klass .\n ?subject rdfs:label ?name.\n FILTER regex(?name, \"$(name)\", \"i\")\n } LIMIT $(limit) ",
|
|
126
125
|
// was SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" }
|
|
@@ -169,7 +168,7 @@ function bindingToTerm(item) {
|
|
|
169
168
|
var typ = item.type.toLowerCase();
|
|
170
169
|
|
|
171
170
|
if (typ === 'uri' || typ === 'iri') {
|
|
172
|
-
return
|
|
171
|
+
return _solidLogic.store.sym(item.value);
|
|
173
172
|
} else if (typ === 'literal') {
|
|
174
173
|
if (item['xml:lang']) {
|
|
175
174
|
return new _rdflib.Literal(item.value, item['xml:lang']);
|
|
@@ -291,7 +290,7 @@ function queryESCODataByName(_x, _x2, _x3) {
|
|
|
291
290
|
|
|
292
291
|
function _queryESCODataByName() {
|
|
293
292
|
_queryESCODataByName = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(filter, theClass, queryTarget) {
|
|
294
|
-
var
|
|
293
|
+
var _store$fetcher;
|
|
295
294
|
|
|
296
295
|
var limit, queryURI, response, text, json;
|
|
297
296
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
@@ -310,7 +309,7 @@ function _queryESCODataByName() {
|
|
|
310
309
|
queryURI = queryTarget.searchByNameURI.replace('$(name)', filter).replace('$(limit)', '' + limit).replace('$(targetClass)', theClass.toNT());
|
|
311
310
|
debug.log('Querying ESCO data - uri: ' + queryURI);
|
|
312
311
|
_context.next = 7;
|
|
313
|
-
return (
|
|
312
|
+
return (_store$fetcher = _solidLogic.store.fetcher) === null || _store$fetcher === void 0 ? void 0 : _store$fetcher.webOperation('GET', queryURI, fetcherOptionsJsonPublicData);
|
|
314
313
|
|
|
315
314
|
case 7:
|
|
316
315
|
response = _context.sent;
|
|
@@ -361,7 +360,7 @@ function queryPublicDataByName(_x4, _x5, _x6, _x7) {
|
|
|
361
360
|
|
|
362
361
|
function _queryPublicDataByName() {
|
|
363
362
|
_queryPublicDataByName = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(filter, theClass, languages, queryTarget) {
|
|
364
|
-
var substituteStrings, languagePrefs, language, sparql, queryURI, response,
|
|
363
|
+
var substituteStrings, languagePrefs, language, sparql, queryURI, response, _store$fetcher2, text, text2, json, bindings;
|
|
365
364
|
|
|
366
365
|
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
367
366
|
while (1) {
|
|
@@ -417,7 +416,7 @@ function _queryPublicDataByName() {
|
|
|
417
416
|
queryURI = substituteStrings(queryTarget.searchByNameURI);
|
|
418
417
|
_context2.prev = 18;
|
|
419
418
|
_context2.next = 21;
|
|
420
|
-
return (
|
|
419
|
+
return (_store$fetcher2 = _solidLogic.store.fetcher) === null || _store$fetcher2 === void 0 ? void 0 : _store$fetcher2.webOperation('GET', queryURI, fetcherOptionsJsonPublicData);
|
|
421
420
|
|
|
422
421
|
case 21:
|
|
423
422
|
response = _context2.sent;
|
|
@@ -494,7 +493,7 @@ function queryPublicDataSelect(_x8, _x9) {
|
|
|
494
493
|
|
|
495
494
|
function _queryPublicDataSelect() {
|
|
496
495
|
_queryPublicDataSelect = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(sparql, queryTarget) {
|
|
497
|
-
var
|
|
496
|
+
var _store$fetcher3;
|
|
498
497
|
|
|
499
498
|
var myUrlWithParams, queryURI, headers, options, response, text, text2, json, bindings;
|
|
500
499
|
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
@@ -521,7 +520,7 @@ function _queryPublicDataSelect() {
|
|
|
521
520
|
headers: headers
|
|
522
521
|
};
|
|
523
522
|
_context3.next = 11;
|
|
524
|
-
return (
|
|
523
|
+
return (_store$fetcher3 = _solidLogic.store.fetcher) === null || _store$fetcher3 === void 0 ? void 0 : _store$fetcher3.webOperation('GET', queryURI, options);
|
|
525
524
|
|
|
526
525
|
case 11:
|
|
527
526
|
response = _context3.sent;
|
|
@@ -557,7 +556,7 @@ function queryPublicDataConstruct(_x10, _x11, _x12) {
|
|
|
557
556
|
|
|
558
557
|
function _queryPublicDataConstruct() {
|
|
559
558
|
_queryPublicDataConstruct = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(sparql, pubicId, queryTarget) {
|
|
560
|
-
var
|
|
559
|
+
var _store$fetcher4;
|
|
561
560
|
|
|
562
561
|
var myUrlWithParams, queryURI, headers, options, response, text, report;
|
|
563
562
|
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
@@ -587,7 +586,7 @@ function _queryPublicDataConstruct() {
|
|
|
587
586
|
|
|
588
587
|
};
|
|
589
588
|
_context4.next = 12;
|
|
590
|
-
return (
|
|
589
|
+
return (_store$fetcher4 = _solidLogic.store.fetcher) === null || _store$fetcher4 === void 0 ? void 0 : _store$fetcher4.webOperation('GET', queryURI, options);
|
|
591
590
|
|
|
592
591
|
case 12:
|
|
593
592
|
response = _context4.sent;
|
|
@@ -603,7 +602,7 @@ function _queryPublicDataConstruct() {
|
|
|
603
602
|
throw new Error('queryPublicDataConstruct: No text back from construct query:' + queryURI);
|
|
604
603
|
|
|
605
604
|
case 18:
|
|
606
|
-
(0, _rdflib.parse)(text,
|
|
605
|
+
(0, _rdflib.parse)(text, _solidLogic.store, pubicId.uri, 'text/turtle');
|
|
607
606
|
|
|
608
607
|
case 19:
|
|
609
608
|
case "end":
|