solid-ui 2.4.23 → 2.4.24

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.
Files changed (136) hide show
  1. package/dist/main.js +2159 -5039
  2. package/dist/main.js.map +1 -1
  3. package/lib/acl/access-controller.js +4 -67
  4. package/lib/acl/access-controller.js.map +1 -1
  5. package/lib/acl/access-groups.js +59 -137
  6. package/lib/acl/access-groups.js.map +1 -1
  7. package/lib/acl/acl-control.js +14 -54
  8. package/lib/acl/acl-control.js.map +1 -1
  9. package/lib/acl/acl.js +32 -107
  10. package/lib/acl/acl.js.map +1 -1
  11. package/lib/acl/add-agent-buttons.js +0 -92
  12. package/lib/acl/add-agent-buttons.js.map +1 -1
  13. package/lib/acl/index.js +1 -3
  14. package/lib/acl/index.js.map +1 -1
  15. package/lib/acl/styles.js +1 -2
  16. package/lib/acl/styles.js.map +1 -1
  17. package/lib/chat/bookmarks.js +8 -80
  18. package/lib/chat/bookmarks.js.map +1 -1
  19. package/lib/chat/chatLogic.js +109 -180
  20. package/lib/chat/chatLogic.js.map +1 -1
  21. package/lib/chat/dateFolder.js +6 -91
  22. package/lib/chat/dateFolder.js.map +1 -1
  23. package/lib/chat/infinite.js +33 -185
  24. package/lib/chat/infinite.js.map +1 -1
  25. package/lib/chat/message.js +37 -150
  26. package/lib/chat/message.js.map +1 -1
  27. package/lib/chat/messageTools.js +23 -96
  28. package/lib/chat/messageTools.js.map +1 -1
  29. package/lib/chat/thread.js +33 -91
  30. package/lib/chat/thread.js.map +1 -1
  31. package/lib/create/create.js +19 -51
  32. package/lib/create/create.js.map +1 -1
  33. package/lib/create/index.js +0 -2
  34. package/lib/create/index.js.map +1 -1
  35. package/lib/debug.js +0 -8
  36. package/lib/debug.js.map +1 -1
  37. package/lib/folders.js +4 -27
  38. package/lib/folders.js.map +1 -1
  39. package/lib/footer/index.js +2 -24
  40. package/lib/footer/index.js.map +1 -1
  41. package/lib/footer/styleMap.js.map +1 -1
  42. package/lib/header/empty-profile.js.map +1 -1
  43. package/lib/header/index.js +3 -72
  44. package/lib/header/index.js.map +1 -1
  45. package/lib/header/styleMap.js +4 -3
  46. package/lib/header/styleMap.js.map +1 -1
  47. package/lib/iconBase.js +3 -4
  48. package/lib/iconBase.js.map +1 -1
  49. package/lib/index.js +5 -46
  50. package/lib/index.js.map +1 -1
  51. package/lib/jss/index.js +3 -9
  52. package/lib/jss/index.js.map +1 -1
  53. package/lib/log.js +15 -51
  54. package/lib/log.js.map +1 -1
  55. package/lib/login/login.js +74 -303
  56. package/lib/login/login.js.map +1 -1
  57. package/lib/matrix/index.js +0 -2
  58. package/lib/matrix/index.js.map +1 -1
  59. package/lib/matrix/matrix.js +7 -55
  60. package/lib/matrix/matrix.js.map +1 -1
  61. package/lib/media/index.js +0 -2
  62. package/lib/media/index.js.map +1 -1
  63. package/lib/media/media-capture.js +13 -33
  64. package/lib/media/media-capture.js.map +1 -1
  65. package/lib/messageArea.js +23 -64
  66. package/lib/messageArea.js.map +1 -1
  67. package/lib/noun_Camera_1618446_000000.js.map +1 -1
  68. package/lib/ns.js +5 -7
  69. package/lib/ns.js.map +1 -1
  70. package/lib/pad.js +48 -234
  71. package/lib/pad.js.map +1 -1
  72. package/lib/participation.js +10 -65
  73. package/lib/participation.js.map +1 -1
  74. package/lib/preferences.js +21 -42
  75. package/lib/preferences.js.map +1 -1
  76. package/lib/signup/config-default.js +1 -8
  77. package/lib/signup/config-default.js.map +1 -1
  78. package/lib/signup/signup.js +6 -13
  79. package/lib/signup/signup.js.map +1 -1
  80. package/lib/stories/decorators.js +0 -2
  81. package/lib/stories/decorators.js.map +1 -1
  82. package/lib/style.js +8 -5
  83. package/lib/style.js.map +1 -1
  84. package/lib/style_multiSelect.js +1 -5
  85. package/lib/style_multiSelect.js.map +1 -1
  86. package/lib/table.js +309 -322
  87. package/lib/table.js.map +1 -1
  88. package/lib/tabs.js +20 -100
  89. package/lib/tabs.js.map +1 -1
  90. package/lib/utils/headerFooterHelpers.js +4 -52
  91. package/lib/utils/headerFooterHelpers.js.map +1 -1
  92. package/lib/utils/index.js +41 -135
  93. package/lib/utils/index.js.map +1 -1
  94. package/lib/utils/label.js +13 -34
  95. package/lib/utils/label.js.map +1 -1
  96. package/lib/versionInfo.js +4 -4
  97. package/lib/versionInfo.js.map +1 -1
  98. package/lib/widgets/buttons/iconLinks.js +0 -8
  99. package/lib/widgets/buttons/iconLinks.js.map +1 -1
  100. package/lib/widgets/buttons.js +115 -291
  101. package/lib/widgets/buttons.js.map +1 -1
  102. package/lib/widgets/dragAndDrop.js +12 -41
  103. package/lib/widgets/dragAndDrop.js.map +1 -1
  104. package/lib/widgets/error.js +3 -9
  105. package/lib/widgets/error.js.map +1 -1
  106. package/lib/widgets/forms/autocomplete/autocompleteBar.js +8 -71
  107. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
  108. package/lib/widgets/forms/autocomplete/autocompleteField.js +13 -65
  109. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
  110. package/lib/widgets/forms/autocomplete/autocompletePicker.js +15 -107
  111. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  112. package/lib/widgets/forms/autocomplete/language.js +6 -55
  113. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  114. package/lib/widgets/forms/autocomplete/publicData.js +12 -131
  115. package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
  116. package/lib/widgets/forms/basic.js +12 -55
  117. package/lib/widgets/forms/basic.js.map +1 -1
  118. package/lib/widgets/forms/comment.js +1 -15
  119. package/lib/widgets/forms/comment.js.map +1 -1
  120. package/lib/widgets/forms/fieldFunction.js +3 -16
  121. package/lib/widgets/forms/fieldFunction.js.map +1 -1
  122. package/lib/widgets/forms/fieldParams.js +0 -12
  123. package/lib/widgets/forms/fieldParams.js.map +1 -1
  124. package/lib/widgets/forms/formStyle.js +1 -14
  125. package/lib/widgets/forms/formStyle.js.map +1 -1
  126. package/lib/widgets/forms.js +70 -474
  127. package/lib/widgets/forms.js.map +1 -1
  128. package/lib/widgets/index.js +0 -21
  129. package/lib/widgets/index.js.map +1 -1
  130. package/lib/widgets/multiSelect.js +48 -171
  131. package/lib/widgets/multiSelect.js.map +1 -1
  132. package/lib/widgets/peoplePicker.js +20 -90
  133. package/lib/widgets/peoplePicker.js.map +1 -1
  134. package/lib/widgets/widgetHelpers.js +2 -9
  135. package/lib/widgets/widgetHelpers.js.map +1 -1
  136. package/package.json +28 -28
@@ -1 +1 @@
1
- {"version":3,"file":"autocompleteField.js","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","st","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","renderAutocompleteControl","then","control","err"],"sources":["../../../../src/widgets/forms/autocomplete/autocompleteField.ts"],"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"],"mappings":"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"}
1
+ {"version":3,"file":"autocompleteField.js","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","st","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","renderAutocompleteControl","then","control","err"],"sources":["../../../../src/widgets/forms/autocomplete/autocompleteField.ts"],"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"],"mappings":"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"}
@@ -1,46 +1,29 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.renderAutoComplete = renderAutoComplete;
11
9
  exports.setVisible = setVisible;
12
-
13
10
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
14
-
15
11
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
16
-
17
12
  var debug = _interopRequireWildcard(require("../../../debug"));
18
-
19
13
  var style = _interopRequireWildcard(require("../../../style"));
20
-
21
14
  var widgets = _interopRequireWildcard(require("../../../widgets"));
22
-
23
15
  var _solidLogic = require("solid-logic");
24
-
25
16
  var _publicData = require("./publicData");
26
-
27
17
  var _language = require("./language");
28
-
29
18
  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
-
31
19
  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; }
32
-
33
20
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
34
-
35
21
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
36
-
37
22
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
38
-
39
23
  var AUTOCOMPLETE_THRESHOLD = 4; // don't check until this many characters typed
40
-
41
24
  var AUTOCOMPLETE_ROWS = 20; // 20?
42
-
43
25
  var AUTOCOMPLETE_ROWS_STRETCH = 40;
26
+
44
27
  /*
45
28
  Autocomplete happens in 6 phases:
46
29
  1. The search string is too small to bother
@@ -56,19 +39,16 @@ Autocomplete happens in 6 phases:
56
39
 
57
40
  function setVisible(element, visible) {
58
41
  element.style.display = visible ? '' : 'none'; // Do not use visibility, it holds the real estate
59
- } // The core of the autocomplete UI
60
-
42
+ }
61
43
 
44
+ // The core of the autocomplete UI
62
45
  function renderAutoComplete(_x, _x2, _x3, _x4) {
63
46
  return _renderAutoComplete.apply(this, arguments);
64
47
  } // renderAutoComplete
65
48
  // ENDS
66
-
67
-
68
49
  function _renderAutoComplete() {
69
50
  _renderAutoComplete = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8(dom, acOptions, decoration, callback) {
70
51
  var complain, finish, gotIt, _gotIt, acceptButtonHandler, _acceptButtonHandler, cancelButtonHandler, _cancelButtonHandler, nameMatch, clearList, inputEventHHandler, _inputEventHHandler, loadBindingsAndFilterByLanguage, _loadBindingsAndFilterByLanguage, filterByName, refreshList, _refreshList, initialize, targetClass, lastBindings, loadedEnough, inputEventHandlerLock, allDisplayed, lastFilter, numberOfRows, div, foundName, foundObject, table, head, cell, searchInput, size, searchInputStyle;
71
-
72
52
  return _regenerator["default"].wrap(function _callee8$(_context8) {
73
53
  while (1) {
74
54
  switch (_context8.prev = _context8.next) {
@@ -85,11 +65,9 @@ function _renderAutoComplete() {
85
65
  lastFilter = undefined;
86
66
  foundObject = undefined;
87
67
  }
88
-
89
68
  if (decoration.deleteButton) {
90
69
  setVisible(decoration.deleteButton, !!acOptions.currentObject);
91
70
  }
92
-
93
71
  if (decoration.acceptButton) {
94
72
  setVisible(decoration.acceptButton, false); // hide until input complete
95
73
  }
@@ -97,7 +75,6 @@ function _renderAutoComplete() {
97
75
  if (decoration.editButton) {
98
76
  setVisible(decoration.editButton, true);
99
77
  }
100
-
101
78
  if (decoration.cancelButton) {
102
79
  setVisible(decoration.cancelButton, false); // only allow cancel when there is something to cancel
103
80
  }
@@ -105,11 +82,9 @@ function _renderAutoComplete() {
105
82
  inputEventHandlerLock = false;
106
83
  clearList();
107
84
  };
108
-
109
85
  _refreshList = function _refreshList3() {
110
86
  _refreshList = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
111
87
  var rowForBinding, compareBindingsByName, languagePrefs, filter, slimmed, displayable, _iterator, _step, binding;
112
-
113
88
  return _regenerator["default"].wrap(function _callee7$(_context7) {
114
89
  while (1) {
115
90
  switch (_context7.prev = _context7.next) {
@@ -117,13 +92,11 @@ function _renderAutoComplete() {
117
92
  compareBindingsByName = function _compareBindingsByNam(self, other) {
118
93
  return other.name.value > self.name.value ? 1 : other.name.name < self.name.value ? -1 : 0;
119
94
  };
120
-
121
95
  rowForBinding = function _rowForBinding(binding) {
122
96
  var row = dom.createElement('tr');
123
97
  style.setStyle(row, 'autocompleteRowStyle');
124
98
  row.setAttribute('style', 'padding: 0.3em;');
125
99
  row.style.color = allDisplayed ? '#080' : '#088'; // green means 'you should find it here'
126
-
127
100
  row.textContent = binding.name.value;
128
101
  var object = (0, _publicData.bindingToTerm)(binding.subject);
129
102
  var nameTerm = (0, _publicData.bindingToTerm)(binding.name);
@@ -135,11 +108,9 @@ function _renderAutoComplete() {
135
108
  case 0:
136
109
  debug.log(' click row textContent: ' + row.textContent);
137
110
  debug.log(' click name: ' + nameTerm.value);
138
-
139
111
  if (object && nameTerm) {
140
112
  gotIt(object, nameTerm);
141
113
  }
142
-
143
114
  case 3:
144
115
  case "end":
145
116
  return _context6.stop();
@@ -147,61 +118,49 @@ function _renderAutoComplete() {
147
118
  }
148
119
  }, _callee6);
149
120
  }));
150
-
151
121
  return function (_x12) {
152
122
  return _ref.apply(this, arguments);
153
123
  };
154
124
  }());
155
125
  return row;
156
126
  };
157
-
158
127
  if (!inputEventHandlerLock) {
159
128
  _context7.next = 5;
160
129
  break;
161
130
  }
162
-
163
131
  debug.log("Ignoring \"".concat(searchInput.value, "\" because of lock "));
164
132
  return _context7.abrupt("return");
165
-
166
133
  case 5:
167
134
  debug.log("Setting lock at \"".concat(searchInput.value, "\""));
168
135
  inputEventHandlerLock = true;
169
136
  _context7.next = 9;
170
137
  return (0, _language.getPreferredLanguages)();
171
-
172
138
  case 9:
173
139
  languagePrefs = _context7.sent;
174
140
  filter = searchInput.value.trim().toLowerCase();
175
-
176
141
  if (!(filter.length < AUTOCOMPLETE_THRESHOLD)) {
177
142
  _context7.next = 16;
178
143
  break;
179
144
  }
180
-
181
145
  // too small
182
- clearList(); // candidatesLoaded = false
183
-
146
+ clearList();
147
+ // candidatesLoaded = false
184
148
  numberOfRows = AUTOCOMPLETE_ROWS;
185
149
  _context7.next = 31;
186
150
  break;
187
-
188
151
  case 16:
189
152
  if (!(!allDisplayed || !lastFilter || !filter.startsWith(lastFilter))) {
190
153
  _context7.next = 21;
191
154
  break;
192
155
  }
193
-
194
156
  debug.log(" Querying database at \"".concat(filter, "\" cf last \"").concat(lastFilter, "\"."));
195
157
  _context7.next = 20;
196
158
  return loadBindingsAndFilterByLanguage(filter, languagePrefs);
197
-
198
159
  case 20:
199
160
  lastBindings = _context7.sent;
200
-
201
161
  case 21:
202
162
  // Trim table as search gets tighter:
203
163
  slimmed = filterByName(filter, lastBindings);
204
-
205
164
  if (loadedEnough && slimmed.length <= AUTOCOMPLETE_ROWS_STRETCH) {
206
165
  numberOfRows = slimmed.length; // stretch if it means we get all items
207
166
  }
@@ -212,7 +171,6 @@ function _renderAutoComplete() {
212
171
  displayable.sort(compareBindingsByName);
213
172
  clearList();
214
173
  _iterator = _createForOfIteratorHelper(displayable);
215
-
216
174
  try {
217
175
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
218
176
  binding = _step.value;
@@ -223,15 +181,12 @@ function _renderAutoComplete() {
223
181
  } finally {
224
182
  _iterator.f();
225
183
  }
226
-
227
184
  if (slimmed.length === 1) {
228
185
  gotIt((0, _publicData.bindingToTerm)(slimmed[0].subject), (0, _publicData.bindingToTerm)(slimmed[0].name));
229
186
  }
230
-
231
187
  case 31:
232
188
  // else
233
189
  inputEventHandlerLock = false;
234
-
235
190
  case 32:
236
191
  case "end":
237
192
  return _context7.stop();
@@ -241,17 +196,14 @@ function _renderAutoComplete() {
241
196
  }));
242
197
  return _refreshList.apply(this, arguments);
243
198
  };
244
-
245
199
  refreshList = function _refreshList2() {
246
200
  return _refreshList.apply(this, arguments);
247
201
  };
248
-
249
202
  filterByName = function _filterByName(filter, bindings) {
250
203
  return bindings.filter(function (binding) {
251
204
  return nameMatch(filter, binding.name.value);
252
205
  });
253
206
  };
254
-
255
207
  _loadBindingsAndFilterByLanguage = function _loadBindingsAndFilte2() {
256
208
  _loadBindingsAndFilterByLanguage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(filter, languagePrefs) {
257
209
  var bindings, slimmed;
@@ -262,32 +214,26 @@ function _renderAutoComplete() {
262
214
  _context5.prev = 0;
263
215
  _context5.next = 3;
264
216
  return (0, _publicData.queryPublicDataByName)(filter, targetClass, languagePrefs || _language.defaultPreferredLanguages, acOptions.queryParams);
265
-
266
217
  case 3:
267
218
  bindings = _context5.sent;
268
219
  _context5.next = 11;
269
220
  break;
270
-
271
221
  case 6:
272
222
  _context5.prev = 6;
273
223
  _context5.t0 = _context5["catch"](0);
274
224
  complain('Error querying db of organizations: ' + _context5.t0);
275
225
  inputEventHandlerLock = false;
276
226
  return _context5.abrupt("return");
277
-
278
227
  case 11:
279
228
  loadedEnough = bindings.length < _publicData.AUTOCOMPLETE_LIMIT;
280
-
281
229
  if (loadedEnough) {
282
230
  lastFilter = filter;
283
231
  } else {
284
232
  lastFilter = undefined;
285
233
  }
286
-
287
234
  clearList();
288
235
  slimmed = (0, _language.filterByLanguage)(bindings, languagePrefs);
289
236
  return _context5.abrupt("return", slimmed);
290
-
291
237
  case 16:
292
238
  case "end":
293
239
  return _context5.stop();
@@ -297,11 +243,9 @@ function _renderAutoComplete() {
297
243
  }));
298
244
  return _loadBindingsAndFilterByLanguage.apply(this, arguments);
299
245
  };
300
-
301
246
  loadBindingsAndFilterByLanguage = function _loadBindingsAndFilte(_x10, _x11) {
302
247
  return _loadBindingsAndFilterByLanguage.apply(this, arguments);
303
248
  };
304
-
305
249
  _inputEventHHandler = function _inputEventHHandler3() {
306
250
  _inputEventHHandler = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(_event) {
307
251
  return _regenerator["default"].wrap(function _callee4$(_context4) {
@@ -310,16 +254,13 @@ function _renderAutoComplete() {
310
254
  case 0:
311
255
  // console.log('@@ AC inputEventHHandler called')
312
256
  setVisible(decoration.cancelButton, true); // only allow cancel when there is something to cancel
313
-
314
257
  refreshList(); /// @@ debounqce does not work with jest
315
-
316
258
  /*
317
259
  if (runningTimeout) {
318
260
  clearTimeout(runningTimeout)
319
261
  }
320
262
  runningTimeout = setTimeout(refreshList, AUTOCOMPLETE_DEBOUNCE_MS)
321
263
  */
322
-
323
264
  case 2:
324
265
  case "end":
325
266
  return _context4.stop();
@@ -329,28 +270,22 @@ function _renderAutoComplete() {
329
270
  }));
330
271
  return _inputEventHHandler.apply(this, arguments);
331
272
  };
332
-
333
273
  inputEventHHandler = function _inputEventHHandler2(_x9) {
334
274
  return _inputEventHHandler.apply(this, arguments);
335
275
  };
336
-
337
276
  clearList = function _clearList() {
338
277
  while (table.children.length > 1) {
339
278
  table.removeChild(table.lastChild);
340
279
  }
341
280
  };
342
-
343
281
  nameMatch = function _nameMatch(filter, candidate) {
344
282
  var parts = filter.split(' '); // Each name part must be somewhere
345
-
346
283
  for (var j = 0; j < parts.length; j++) {
347
284
  var word = parts[j];
348
285
  if (candidate.toLowerCase().indexOf(word) < 0) return false;
349
286
  }
350
-
351
287
  return true;
352
288
  };
353
-
354
289
  _cancelButtonHandler = function _cancelButtonHandler3() {
355
290
  _cancelButtonHandler = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(_event) {
356
291
  return _regenerator["default"].wrap(function _callee3$(_context3) {
@@ -358,7 +293,6 @@ function _renderAutoComplete() {
358
293
  switch (_context3.prev = _context3.next) {
359
294
  case 0:
360
295
  debug.log('Auto complete: Canceled by user! ');
361
-
362
296
  if (acOptions.permanent) {
363
297
  initialize();
364
298
  } else {
@@ -366,7 +300,6 @@ function _renderAutoComplete() {
366
300
  div.parentNode.removeChild(div);
367
301
  }
368
302
  }
369
-
370
303
  case 2:
371
304
  case "end":
372
305
  return _context3.stop();
@@ -376,11 +309,9 @@ function _renderAutoComplete() {
376
309
  }));
377
310
  return _cancelButtonHandler.apply(this, arguments);
378
311
  };
379
-
380
312
  cancelButtonHandler = function _cancelButtonHandler2(_x8) {
381
313
  return _cancelButtonHandler.apply(this, arguments);
382
314
  };
383
-
384
315
  _acceptButtonHandler = function _acceptButtonHandler3() {
385
316
  _acceptButtonHandler = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(_event) {
386
317
  return _regenerator["default"].wrap(function _callee2$(_context2) {
@@ -391,7 +322,6 @@ function _renderAutoComplete() {
391
322
  // still
392
323
  finish(foundObject, foundName);
393
324
  }
394
-
395
325
  case 1:
396
326
  case "end":
397
327
  return _context2.stop();
@@ -401,11 +331,9 @@ function _renderAutoComplete() {
401
331
  }));
402
332
  return _acceptButtonHandler.apply(this, arguments);
403
333
  };
404
-
405
334
  acceptButtonHandler = function _acceptButtonHandler2(_x7) {
406
335
  return _acceptButtonHandler.apply(this, arguments);
407
336
  };
408
-
409
337
  _gotIt = function _gotIt3() {
410
338
  _gotIt = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(object, name) {
411
339
  return _regenerator["default"].wrap(function _callee$(_context) {
@@ -416,24 +344,18 @@ function _renderAutoComplete() {
416
344
  _context.next = 10;
417
345
  break;
418
346
  }
419
-
420
347
  decoration.acceptButton.disbaled = false;
421
348
  setVisible(decoration.acceptButton, true); // now wait for confirmation
422
-
423
349
  searchInput.value = name.value; // complete it
424
-
425
350
  foundName = name;
426
351
  foundObject = object;
427
352
  debug.log('Auto complete: name: ' + name);
428
353
  debug.log('Auto complete: waiting for accept ' + object);
429
354
  clearList(); // This may be an option - nice and clean but does not allow change of mind
430
-
431
355
  return _context.abrupt("return");
432
-
433
356
  case 10:
434
357
  setVisible(decoration.cancelButton, true);
435
358
  finish(object, name);
436
-
437
359
  case 12:
438
360
  case "end":
439
361
  return _context.stop();
@@ -443,73 +365,60 @@ function _renderAutoComplete() {
443
365
  }));
444
366
  return _gotIt.apply(this, arguments);
445
367
  };
446
-
447
368
  gotIt = function _gotIt2(_x5, _x6) {
448
369
  return _gotIt.apply(this, arguments);
449
370
  };
450
-
451
371
  finish = function _finish(object, name) {
452
372
  debug.log('Auto complete: finish! ' + object);
453
-
454
373
  if (object.termType === 'Literal' && acOptions.queryParams.objectURIBase) {
455
374
  object = _solidLogic.store.sym(acOptions.queryParams.objectURIBase.value + object.value);
456
- } // remove(decoration.cancelButton)
375
+ }
376
+ // remove(decoration.cancelButton)
457
377
  // remove(decoration.acceptButton)
458
378
  // remove(div)
459
-
460
-
461
379
  clearList();
462
380
  callback(object, name);
463
381
  };
464
-
465
382
  complain = function _complain(message) {
466
383
  var errorRow = table.appendChild(dom.createElement('tr'));
467
384
  debug.log(message);
468
385
  var err = new Error(message);
469
- errorRow.appendChild(widgets.errorMessageBlock(dom, err, 'pink')); // errorMessageBlock will log the stack to the console
470
-
386
+ errorRow.appendChild(widgets.errorMessageBlock(dom, err, 'pink'));
387
+ // errorMessageBlock will log the stack to the console
471
388
  style.setStyle(errorRow, 'autocompleteRowStyle');
472
389
  errorRow.style.padding = '1em';
473
390
  };
474
-
475
391
  // initialiize
476
392
  // const queryParams: QueryParameters = acOptions.queryParams
477
393
  targetClass = acOptions.targetClass;
478
-
479
394
  if (targetClass) {
480
395
  _context8.next = 21;
481
396
  break;
482
397
  }
483
-
484
398
  throw new Error('renderAutoComplete: missing targetClass');
485
-
486
399
  case 21:
487
400
  // console.log(`renderAutoComplete: targetClass=${targetClass}` )
488
401
  if (decoration.acceptButton) {
489
402
  decoration.acceptButton.addEventListener('click', acceptButtonHandler, false);
490
403
  }
491
-
492
404
  if (decoration.cancelButton) {
493
405
  decoration.cancelButton.addEventListener('click', cancelButtonHandler, false);
494
- } // var candidatesLoaded = false
495
-
406
+ }
496
407
 
408
+ // var candidatesLoaded = false
497
409
  loadedEnough = false;
498
410
  inputEventHandlerLock = false;
499
411
  allDisplayed = false;
500
412
  lastFilter = undefined;
501
413
  numberOfRows = AUTOCOMPLETE_ROWS; // this gets slimmed down
502
-
503
414
  div = dom.createElement('div');
504
415
  foundName = undefined; // once found accepted string must match this
505
-
506
416
  foundObject = undefined;
507
417
  table = div.appendChild(dom.createElement('table'));
508
418
  table.setAttribute('data-testid', 'autocomplete-table');
509
419
  table.setAttribute('style', 'max-width: 30em; margin: 0.5em;');
510
420
  head = table.appendChild(dom.createElement('tr'));
511
421
  style.setStyle(head, 'autocompleteRowStyle'); // textInputStyle or
512
-
513
422
  cell = head.appendChild(dom.createElement('td'));
514
423
  searchInput = cell.appendChild(dom.createElement('input'));
515
424
  searchInput.setAttribute('type', 'text');
@@ -517,19 +426,18 @@ function _renderAutoComplete() {
517
426
  size = acOptions.size || style.textInputSize || 20;
518
427
  searchInput.setAttribute('size', size);
519
428
  searchInput.setAttribute('data-testid', 'autocomplete-input');
520
- searchInputStyle = style.textInputStyle || // searchInputStyle ?
429
+ searchInputStyle = style.textInputStyle ||
430
+ // searchInputStyle ?
521
431
  'border: 0.1em solid #444; border-radius: 0.5em; width: 100%; font-size: 100%; padding: 0.1em 0.6em'; // @
522
-
523
432
  searchInput.setAttribute('style', searchInputStyle);
524
433
  searchInput.addEventListener('keyup', function (event) {
525
434
  if (event.keyCode === 13) {
526
435
  acceptButtonHandler(event);
527
436
  }
528
437
  }, false);
529
- searchInput.addEventListener('input', inputEventHHandler); // console.log('@@ renderAutoComplete returns ' + div.innerHTML)
530
-
438
+ searchInput.addEventListener('input', inputEventHHandler);
439
+ // console.log('@@ renderAutoComplete returns ' + div.innerHTML)
531
440
  return _context8.abrupt("return", div);
532
-
533
441
  case 48:
534
442
  case "end":
535
443
  return _context8.stop();