solid-ui 2.4.19-f604a927 → 2.4.20
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 +1 -1
- package/dist/index.html +9 -0
- package/{lib/webpack-bundle.js → dist/main.js} +44526 -51661
- package/dist/main.js.map +1 -0
- 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 +1 -1
- 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 +0 -0
- package/lib/acl/acl.js +0 -0
- package/lib/acl/acl.js.map +0 -0
- package/lib/acl/add-agent-buttons.d.ts +0 -0
- package/lib/acl/add-agent-buttons.d.ts.map +0 -0
- package/lib/acl/add-agent-buttons.js +0 -0
- package/lib/acl/add-agent-buttons.js.map +0 -0
- 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 +0 -0
- package/lib/chat/bookmarks.js.map +0 -0
- package/lib/chat/chatLogic.js +0 -0
- package/lib/chat/chatLogic.js.map +0 -0
- package/lib/chat/dateFolder.js +0 -0
- package/lib/chat/dateFolder.js.map +0 -0
- package/lib/chat/infinite.js +0 -0
- package/lib/chat/infinite.js.map +0 -0
- package/lib/chat/message.js +0 -0
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/messageTools.js +0 -0
- package/lib/chat/messageTools.js.map +0 -0
- package/lib/chat/thread.js +0 -0
- package/lib/chat/thread.js.map +1 -1
- package/lib/create/create.d.ts +0 -0
- package/lib/create/create.d.ts.map +0 -0
- package/lib/create/create.js +0 -0
- 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 +0 -0
- package/lib/folders.js.map +0 -0
- package/lib/footer/index.d.ts +0 -0
- package/lib/footer/index.d.ts.map +0 -0
- package/lib/footer/index.js +0 -0
- package/lib/footer/index.js.map +0 -0
- 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 +0 -0
- package/lib/header/index.js +0 -0
- package/lib/header/index.js.map +0 -0
- package/lib/header/styleMap.d.ts +0 -0
- package/lib/header/styleMap.d.ts.map +0 -0
- package/lib/header/styleMap.js +0 -0
- package/lib/header/styleMap.js.map +0 -0
- 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 +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -5
- 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 +0 -0
- package/lib/login/login.d.ts.map +0 -0
- package/lib/login/login.js +0 -0
- package/lib/login/login.js.map +1 -1
- 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 +0 -0
- package/lib/matrix/matrix.js.map +0 -0
- 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 +1 -1
- package/lib/messageArea.js +0 -0
- 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 +0 -0
- package/lib/pad.js.map +0 -0
- package/lib/participation.d.ts +0 -0
- package/lib/participation.d.ts.map +0 -0
- package/lib/participation.js +0 -0
- package/lib/participation.js.map +0 -0
- package/lib/preferences.js +0 -0
- package/lib/preferences.js.map +0 -0
- package/lib/signup/config-default.js +0 -0
- package/lib/signup/config-default.js.map +0 -0
- package/lib/signup/signup.js +0 -0
- package/lib/signup/signup.js.map +0 -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 +1 -1
- package/lib/table.js +0 -0
- package/lib/table.js.map +0 -0
- package/lib/tabs.d.ts +0 -0
- package/lib/tabs.d.ts.map +0 -0
- package/lib/tabs.js +0 -0
- package/lib/tabs.js.map +0 -0
- 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 +0 -0
- package/lib/utils/index.js.map +0 -0
- package/lib/utils/label.d.ts +0 -0
- package/lib/utils/label.d.ts.map +0 -0
- package/lib/utils/label.js +0 -0
- package/lib/utils/label.js.map +0 -0
- package/lib/versionInfo.d.ts +12 -11
- package/lib/versionInfo.d.ts.map +1 -1
- package/lib/versionInfo.js +19 -17
- package/lib/versionInfo.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 +0 -0
- package/lib/widgets/buttons.js.map +1 -1
- package/lib/widgets/dragAndDrop.js +1 -1
- package/lib/widgets/dragAndDrop.js.map +1 -1
- 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 +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +0 -0
- 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 +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteField.js.map +0 -0
- 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 +0 -0
- package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +0 -0
- package/lib/widgets/forms/autocomplete/language.d.ts +0 -0
- package/lib/widgets/forms/autocomplete/language.d.ts.map +0 -0
- package/lib/widgets/forms/autocomplete/language.js +0 -0
- package/lib/widgets/forms/autocomplete/language.js.map +0 -0
- package/lib/widgets/forms/autocomplete/publicData.d.ts +0 -0
- package/lib/widgets/forms/autocomplete/publicData.d.ts.map +0 -0
- package/lib/widgets/forms/autocomplete/publicData.js +0 -0
- package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
- package/lib/widgets/forms/basic.d.ts +0 -0
- package/lib/widgets/forms/basic.d.ts.map +0 -0
- package/lib/widgets/forms/basic.js +0 -0
- package/lib/widgets/forms/basic.js.map +0 -0
- package/lib/widgets/forms/comment.d.ts +0 -0
- package/lib/widgets/forms/comment.d.ts.map +0 -0
- package/lib/widgets/forms/comment.js +0 -0
- package/lib/widgets/forms/comment.js.map +0 -0
- 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 +0 -0
- package/lib/widgets/forms/fieldFunction.js.map +0 -0
- 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 +0 -0
- package/lib/widgets/forms/formStyle.js.map +0 -0
- package/lib/widgets/forms.js +0 -0
- 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 +0 -0
- package/lib/widgets/peoplePicker.js.map +0 -0
- 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 +44 -46
- package/lib/webpack-bundle.js.map +0 -1
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/lib/acl/access-groups.js
CHANGED
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/acl/access-groups.ts"],"names":["ACL","ns","acl","COLLOQUIAL","RECOMMENDED","EXPLANATION","AccessGroups","doc","aclDoc","controller","store","options","defaults","_store","aclMap","byCombo","addAgentButton","AddAgentButtons","rootElement","dom","createElement","classList","add","classes","accessGroupList","innerHTML","renderGroups","forEach","group","appendChild","isEditable","render","groupElements","comboIndex","combo","kToCombo","push","renderGroup","groupRow","accessGroupListItem","widgets","makeDropTarget","uris","handleDroppedUris","then","error","renderStatus","groupColumns","renderGroupElements","column","groupNameColumn","toggle","innerText","ktToList","groupAgentsColumn","groupAgentsTable","combos","map","pred","obj","renderAgent","agentElement","groupDescriptionElement","personRow","personTR","deleteFunction","deleteAgent","removeChild","comboToRemove","find","comboPred","comboObj","splice","indexOf","save","uri","handleDroppedUri","Promise","all","reject","secondAttempt","agent","findAgent","thing","debug","log","fetcher","load","message","Error","setACLCombo","subject","res","removeAgentFromCombos","k","i","length","y","sort","join","list","kb","types","findTypeURIs","ty","startsWith","split","endsWith","slice","vcard","sameTerm","foaf","rdf","owl","pref","any","solid"],"mappings":"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","sourcesContent":["/**\n * Contains the [[AccessGroups]]\n * and [[AccessGroupsOptions]] classes\n * @packageDocumentation\n */\n\nimport { NamedNode, sym, Store } from 'rdflib'\nimport { ACLbyCombination, readACL } from './acl'\nimport * as widgets from '../widgets'\nimport * as ns from '../ns'\nimport { AccessController } from './access-controller'\nimport { AgentMapMap, ComboList, PartialAgentTriple } from './types'\nimport { AddAgentButtons } from './add-agent-buttons'\nimport * as debug from '../debug'\n\nconst ACL = ns.acl\n\nconst COLLOQUIAL = {\n 13: 'Owners',\n 9: 'Owners (write locked)',\n 5: 'Editors',\n 3: 'Posters',\n 2: 'Submitters',\n 1: 'Viewers'\n}\n\nconst RECOMMENDED = {\n 13: true,\n 5: true,\n 3: true,\n 2: true,\n 1: true\n}\n\nconst EXPLANATION = {\n 13: 'can read, write, and control sharing.',\n 9: 'can read and control sharing, currently write-locked.',\n 5: 'can read and change information',\n 3: 'can add new information, and read but not change existing information',\n 2: 'can add new information but not read any',\n 1: 'can read but not change information'\n}\n\n/**\n * Type for the options parameter of [[AccessGroups]]\n */\nexport interface AccessGroupsOptions {\n defaults?: boolean\n}\n\n/**\n * Renders the table of Owners, Editors, Posters, Submitters, Viewers\n * for https://github.com/solid/userguide/blob/main/views/sharing/userguide.md\n */\nexport class AccessGroups {\n private readonly defaults: boolean\n public byCombo: ComboList\n public aclMap: AgentMapMap\n private readonly addAgentButton: AddAgentButtons\n private readonly rootElement: HTMLElement\n private _store: Store // @@ was LiveStore but does not need to be connected to web\n\n constructor (\n private doc: NamedNode,\n private aclDoc: NamedNode,\n public controller: AccessController,\n store: Store, // @@ was LiveStore\n private options: AccessGroupsOptions = {}\n ) {\n this.defaults = options.defaults || false\n this._store = store\n this.aclMap = readACL(doc, aclDoc, store, this.defaults)\n this.byCombo = ACLbyCombination(this.aclMap)\n this.addAgentButton = new AddAgentButtons(this)\n this.rootElement = this.controller.dom.createElement('div')\n this.rootElement.classList.add(this.controller.classes.accessGroupList)\n }\n\n public get store () {\n return this._store\n }\n\n public set store (store) {\n this._store = store\n this.aclMap = readACL(this.doc, this.aclDoc, store, this.defaults)\n this.byCombo = ACLbyCombination(this.aclMap)\n }\n\n public render (): HTMLElement {\n this.rootElement.innerHTML = ''\n this.renderGroups().forEach(group => this.rootElement.appendChild(group))\n if (this.controller.isEditable) {\n this.rootElement.appendChild(this.addAgentButton.render())\n }\n return this.rootElement\n }\n\n private renderGroups (): HTMLElement[] {\n const groupElements: HTMLElement[] = []\n for (let comboIndex = 15; comboIndex > 0; comboIndex--) {\n const combo = kToCombo(comboIndex)\n if ((this.controller.isEditable && RECOMMENDED[comboIndex]) || this.byCombo[combo]) {\n groupElements.push(this.renderGroup(comboIndex, combo))\n }\n }\n return groupElements\n }\n\n private renderGroup (comboIndex: number, combo: string): HTMLElement {\n const groupRow = this.controller.dom.createElement('div')\n groupRow.classList.add(this.controller.classes.accessGroupListItem)\n widgets.makeDropTarget(groupRow, (uris) => this.handleDroppedUris(uris, combo)\n .then(() => this.controller.render())\n .catch(error => this.controller.renderStatus(error)))\n const groupColumns = this.renderGroupElements(comboIndex, combo)\n groupColumns.forEach(column => groupRow.appendChild(column))\n return groupRow\n }\n\n private renderGroupElements (comboIndex, combo): HTMLElement[] {\n const groupNameColumn = this.controller.dom.createElement('div')\n groupNameColumn.classList.add(this.controller.classes.group)\n groupNameColumn.classList.toggle(this.controller.classes[`group-${comboIndex}`], this.controller.isEditable)\n groupNameColumn.innerText = COLLOQUIAL[comboIndex] || ktToList(comboIndex)\n\n const groupAgentsColumn = this.controller.dom.createElement('div')\n groupAgentsColumn.classList.add(this.controller.classes.group)\n groupAgentsColumn.classList.toggle(this.controller.classes[`group-${comboIndex}`], this.controller.isEditable)\n const groupAgentsTable = groupAgentsColumn.appendChild(this.controller.dom.createElement('table'))\n const combos = this.byCombo[combo] || []\n combos\n .map(([pred, obj]) => this.renderAgent(groupAgentsTable, combo, pred, obj))\n .forEach(agentElement => groupAgentsTable.appendChild(agentElement))\n\n const groupDescriptionElement = this.controller.dom.createElement('div')\n groupDescriptionElement.classList.add(this.controller.classes.group)\n groupDescriptionElement.classList.toggle(this.controller.classes[`group-${comboIndex}`], this.controller.isEditable)\n groupDescriptionElement.innerText = EXPLANATION[comboIndex] || 'Unusual combination'\n\n return [groupNameColumn, groupAgentsColumn, groupDescriptionElement]\n }\n\n private renderAgent (groupAgentsTable, combo, pred, obj): HTMLElement {\n const personRow = widgets.personTR(this.controller.dom, ACL(pred), sym(obj), this.controller.isEditable\n ? {\n deleteFunction: () => this.deleteAgent(combo, pred, obj)\n .then(() => groupAgentsTable.removeChild(personRow))\n .catch(error => this.controller.renderStatus(error))\n }\n : {})\n return personRow\n }\n\n private async deleteAgent (combo, pred, obj): Promise<void> {\n const combos = this.byCombo[combo] || []\n const comboToRemove = combos.find(([comboPred, comboObj]) => comboPred === pred && comboObj === obj)\n if (comboToRemove) {\n combos.splice(combos.indexOf(comboToRemove), 1)\n }\n await this.controller.save()\n }\n\n public async addNewURI (uri: string): Promise<void> {\n await this.handleDroppedUri(uri, kToCombo(1))\n await this.controller.save()\n }\n\n private async handleDroppedUris (uris: string[], combo: string): Promise<void> {\n try {\n await Promise.all(uris.map(uri => this.handleDroppedUri(uri, combo)))\n await this.controller.save()\n } catch (error) {\n return Promise.reject(error)\n }\n }\n\n private async handleDroppedUri (uri: string, combo: string, secondAttempt: boolean = false): Promise<void> {\n const agent = findAgent(uri, this.store) // eg 'agent', 'origin', agentClass'\n const thing = sym(uri)\n if (!agent && !secondAttempt) {\n debug.log(` Not obvious: looking up dropped thing ${thing}`)\n try {\n await this._store?.fetcher?.load(thing.doc())\n } catch (error) {\n const message = `Ignore error looking up dropped thing: ${error}`\n debug.error(message)\n return Promise.reject(new Error(message))\n }\n return this.handleDroppedUri(uri, combo, true)\n } else if (!agent) {\n const error = ` Error: Drop fails to drop appropriate thing! ${uri}`\n debug.error(error)\n return Promise.reject(new Error(error))\n }\n this.setACLCombo(combo, uri, agent, this.controller.subject)\n }\n\n private setACLCombo (combo: string, uri: string, res: PartialAgentTriple, subject: NamedNode): void {\n if (!(combo in this.byCombo)) {\n this.byCombo[combo] = []\n }\n this.removeAgentFromCombos(uri) // Combos are mutually distinct\n this.byCombo[combo].push([res.pred, res.obj.uri])\n debug.log(`ACL: setting access to ${subject} by ${res.pred}: ${res.obj}`)\n }\n\n private removeAgentFromCombos (uri: string): void {\n for (let k = 0; k < 16; k++) {\n const combos = this.byCombo[kToCombo(k)]\n if (combos) {\n for (let i = 0; i < combos.length; i++) {\n while (i < combos.length && combos[i][1] === uri) {\n combos.splice(i, 1)\n }\n }\n }\n }\n }\n}\n\nfunction kToCombo (k: number): string {\n const y = ['Read', 'Append', 'Write', 'Control']\n const combo: string[] = []\n for (let i = 0; i < 4; i++) {\n if (k & (1 << i)) {\n combo.push('http://www.w3.org/ns/auth/acl#' + y[i])\n }\n }\n combo.sort()\n return combo.join('\\n')\n}\n\nfunction ktToList (k: number): string {\n let list = ''\n const y = ['Read', 'Append', 'Write', 'Control']\n for (let i = 0; i < 4; i++) {\n if (k & (1 << i)) {\n list += y[i]\n }\n }\n return list\n}\n\nfunction findAgent (uri, kb): PartialAgentTriple | null {\n const obj = sym(uri)\n const types = kb.findTypeURIs(obj)\n for (const ty in types) {\n debug.log(' drop object type includes: ' + ty)\n }\n // An Origin URI is one like https://fred.github.io eith no trailing slash\n if (uri.startsWith('http') && uri.split('/').length === 3) {\n // there is no third slash\n return { pred: 'origin', obj: obj } // The only way to know an origin alas\n }\n // @@ This is an almighty kludge needed because drag and drop adds extra slashes to origins\n if (\n uri.startsWith('http') &&\n uri.split('/').length === 4 &&\n uri.endsWith('/')\n ) {\n // there IS third slash\n debug.log('Assuming final slash on dragged origin URI was unintended!')\n return { pred: 'origin', obj: sym(uri.slice(0, -1)) } // Fix a URI where the drag and drop system has added a spurious slash\n }\n\n if (ns.vcard('WebID').uri in types) return { pred: 'agent', obj: obj }\n\n if (ns.vcard('Group').uri in types) {\n return { pred: 'agentGroup', obj: obj } // @@ note vcard membership not RDFs\n }\n if (\n obj.sameTerm(ns.foaf('Agent')) ||\n obj.sameTerm(ns.acl('AuthenticatedAgent')) || // AuthenticatedAgent\n obj.sameTerm(ns.rdf('Resource')) ||\n obj.sameTerm(ns.owl('Thing'))\n ) {\n return { pred: 'agentClass', obj: obj }\n }\n if (\n ns.vcard('Individual').uri in types ||\n ns.foaf('Person').uri in types ||\n ns.foaf('Agent').uri in types\n ) {\n const pref = kb.any(obj, ns.foaf('preferredURI'))\n if (pref) return { pred: 'agent', obj: sym(pref) }\n return { pred: 'agent', obj: obj }\n }\n if (ns.solid('AppProvider').uri in types) {\n return { pred: 'origin', obj: obj }\n }\n if (ns.solid('AppProviderClass').uri in types) {\n return { pred: 'originClass', obj: obj }\n }\n debug.log(' Triage fails for ' + uri)\n return null\n}\n"],"file":"access-groups.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/acl/access-groups.ts"],"names":["ACL","ns","acl","COLLOQUIAL","RECOMMENDED","EXPLANATION","AccessGroups","doc","aclDoc","controller","store","options","defaults","_store","aclMap","byCombo","addAgentButton","AddAgentButtons","rootElement","dom","createElement","classList","add","classes","accessGroupList","innerHTML","renderGroups","forEach","group","appendChild","isEditable","render","groupElements","comboIndex","combo","kToCombo","push","renderGroup","groupRow","accessGroupListItem","widgets","makeDropTarget","uris","handleDroppedUris","then","error","renderStatus","groupColumns","renderGroupElements","column","groupNameColumn","toggle","innerText","ktToList","groupAgentsColumn","groupAgentsTable","combos","map","pred","obj","renderAgent","agentElement","groupDescriptionElement","personRow","personTR","deleteFunction","deleteAgent","removeChild","comboToRemove","find","comboPred","comboObj","splice","indexOf","save","uri","handleDroppedUri","Promise","all","reject","secondAttempt","agent","findAgent","thing","debug","log","fetcher","load","message","Error","setACLCombo","subject","res","removeAgentFromCombos","k","i","length","y","sort","join","list","kb","types","findTypeURIs","ty","startsWith","split","endsWith","slice","vcard","sameTerm","foaf","rdf","owl","pref","any","solid"],"mappings":"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","sourcesContent":["/**\n * Contains the [[AccessGroups]]\n * and [[AccessGroupsOptions]] classes\n * @packageDocumentation\n */\n\nimport { NamedNode, sym, Store } from 'rdflib'\nimport { ACLbyCombination, readACL } from './acl'\nimport * as widgets from '../widgets'\nimport * as ns from '../ns'\nimport { AccessController } from './access-controller'\nimport { AgentMapMap, ComboList, PartialAgentTriple } from './types'\nimport { AddAgentButtons } from './add-agent-buttons'\nimport * as debug from '../debug'\n\nconst ACL = ns.acl\n\nconst COLLOQUIAL = {\n 13: 'Owners',\n 9: 'Owners (write locked)',\n 5: 'Editors',\n 3: 'Posters',\n 2: 'Submitters',\n 1: 'Viewers'\n}\n\nconst RECOMMENDED = {\n 13: true,\n 5: true,\n 3: true,\n 2: true,\n 1: true\n}\n\nconst EXPLANATION = {\n 13: 'can read, write, and control sharing.',\n 9: 'can read and control sharing, currently write-locked.',\n 5: 'can read and change information',\n 3: 'can add new information, and read but not change existing information',\n 2: 'can add new information but not read any',\n 1: 'can read but not change information'\n}\n\n/**\n * Type for the options parameter of [[AccessGroups]]\n */\nexport interface AccessGroupsOptions {\n defaults?: boolean\n}\n\n/**\n * Renders the table of Owners, Editors, Posters, Submitters, Viewers\n * for https://github.com/solid/userguide/blob/main/views/sharing/userguide.md\n */\nexport class AccessGroups {\n private readonly defaults: boolean\n public byCombo: ComboList\n public aclMap: AgentMapMap\n private readonly addAgentButton: AddAgentButtons\n private readonly rootElement: HTMLElement\n private _store: Store // @@ was LiveStore but does not need to be connected to web\n\n constructor (\n private doc: NamedNode,\n private aclDoc: NamedNode,\n public controller: AccessController,\n store: Store, // @@ was LiveStore\n private options: AccessGroupsOptions = {}\n ) {\n this.defaults = options.defaults || false\n this._store = store\n this.aclMap = readACL(doc, aclDoc, store, this.defaults)\n this.byCombo = ACLbyCombination(this.aclMap)\n this.addAgentButton = new AddAgentButtons(this)\n this.rootElement = this.controller.dom.createElement('div')\n this.rootElement.classList.add(this.controller.classes.accessGroupList)\n }\n\n public get store () {\n return this._store\n }\n\n public set store (store) {\n this._store = store\n this.aclMap = readACL(this.doc, this.aclDoc, store, this.defaults)\n this.byCombo = ACLbyCombination(this.aclMap)\n }\n\n public render (): HTMLElement {\n this.rootElement.innerHTML = ''\n this.renderGroups().forEach(group => this.rootElement.appendChild(group))\n if (this.controller.isEditable) {\n this.rootElement.appendChild(this.addAgentButton.render())\n }\n return this.rootElement\n }\n\n private renderGroups (): HTMLElement[] {\n const groupElements: HTMLElement[] = []\n for (let comboIndex = 15; comboIndex > 0; comboIndex--) {\n const combo = kToCombo(comboIndex)\n if ((this.controller.isEditable && RECOMMENDED[comboIndex]) || this.byCombo[combo]) {\n groupElements.push(this.renderGroup(comboIndex, combo))\n }\n }\n return groupElements\n }\n\n private renderGroup (comboIndex: number, combo: string): HTMLElement {\n const groupRow = this.controller.dom.createElement('div')\n groupRow.classList.add(this.controller.classes.accessGroupListItem)\n widgets.makeDropTarget(groupRow, (uris) => this.handleDroppedUris(uris, combo)\n .then(() => this.controller.render())\n .catch(error => this.controller.renderStatus(error)))\n const groupColumns = this.renderGroupElements(comboIndex, combo)\n groupColumns.forEach(column => groupRow.appendChild(column))\n return groupRow\n }\n\n private renderGroupElements (comboIndex, combo): HTMLElement[] {\n const groupNameColumn = this.controller.dom.createElement('div')\n groupNameColumn.classList.add(this.controller.classes.group)\n groupNameColumn.classList.toggle(this.controller.classes[`group-${comboIndex}`], this.controller.isEditable)\n groupNameColumn.innerText = COLLOQUIAL[comboIndex] || ktToList(comboIndex)\n\n const groupAgentsColumn = this.controller.dom.createElement('div')\n groupAgentsColumn.classList.add(this.controller.classes.group)\n groupAgentsColumn.classList.toggle(this.controller.classes[`group-${comboIndex}`], this.controller.isEditable)\n const groupAgentsTable = groupAgentsColumn.appendChild(this.controller.dom.createElement('table'))\n const combos = this.byCombo[combo] || []\n combos\n .map(([pred, obj]) => this.renderAgent(groupAgentsTable, combo, pred, obj))\n .forEach(agentElement => groupAgentsTable.appendChild(agentElement))\n\n const groupDescriptionElement = this.controller.dom.createElement('div')\n groupDescriptionElement.classList.add(this.controller.classes.group)\n groupDescriptionElement.classList.toggle(this.controller.classes[`group-${comboIndex}`], this.controller.isEditable)\n groupDescriptionElement.innerText = EXPLANATION[comboIndex] || 'Unusual combination'\n\n return [groupNameColumn, groupAgentsColumn, groupDescriptionElement]\n }\n\n private renderAgent (groupAgentsTable, combo, pred, obj): HTMLElement {\n const personRow = widgets.personTR(this.controller.dom, ACL(pred), sym(obj), this.controller.isEditable\n ? {\n deleteFunction: () => this.deleteAgent(combo, pred, obj)\n .then(() => groupAgentsTable.removeChild(personRow))\n .catch(error => this.controller.renderStatus(error))\n }\n : {})\n return personRow\n }\n\n private async deleteAgent (combo, pred, obj): Promise<void> {\n const combos = this.byCombo[combo] || []\n const comboToRemove = combos.find(([comboPred, comboObj]) => comboPred === pred && comboObj === obj)\n if (comboToRemove) {\n combos.splice(combos.indexOf(comboToRemove), 1)\n }\n await this.controller.save()\n }\n\n public async addNewURI (uri: string): Promise<void> {\n await this.handleDroppedUri(uri, kToCombo(1))\n await this.controller.save()\n }\n\n private async handleDroppedUris (uris: string[], combo: string): Promise<void> {\n try {\n await Promise.all(uris.map(uri => this.handleDroppedUri(uri, combo)))\n await this.controller.save()\n } catch (error) {\n return Promise.reject(error)\n }\n }\n\n private async handleDroppedUri (uri: string, combo: string, secondAttempt: boolean = false): Promise<void> {\n const agent = findAgent(uri, this.store) // eg 'agent', 'origin', agentClass'\n const thing = sym(uri)\n if (!agent && !secondAttempt) {\n debug.log(` Not obvious: looking up dropped thing ${thing}`)\n try {\n await this._store?.fetcher?.load(thing.doc())\n } catch (error) {\n const message = `Ignore error looking up dropped thing: ${error}`\n debug.error(message)\n return Promise.reject(new Error(message))\n }\n return this.handleDroppedUri(uri, combo, true)\n } else if (!agent) {\n const error = ` Error: Drop fails to drop appropriate thing! ${uri}`\n debug.error(error)\n return Promise.reject(new Error(error))\n }\n this.setACLCombo(combo, uri, agent, this.controller.subject)\n }\n\n private setACLCombo (combo: string, uri: string, res: PartialAgentTriple, subject: NamedNode): void {\n if (!(combo in this.byCombo)) {\n this.byCombo[combo] = []\n }\n this.removeAgentFromCombos(uri) // Combos are mutually distinct\n this.byCombo[combo].push([res.pred, res.obj.uri])\n debug.log(`ACL: setting access to ${subject} by ${res.pred}: ${res.obj}`)\n }\n\n private removeAgentFromCombos (uri: string): void {\n for (let k = 0; k < 16; k++) {\n const combos = this.byCombo[kToCombo(k)]\n if (combos) {\n for (let i = 0; i < combos.length; i++) {\n while (i < combos.length && combos[i][1] === uri) {\n combos.splice(i, 1)\n }\n }\n }\n }\n }\n}\n\nfunction kToCombo (k: number): string {\n const y = ['Read', 'Append', 'Write', 'Control']\n const combo: string[] = []\n for (let i = 0; i < 4; i++) {\n if (k & (1 << i)) {\n combo.push('http://www.w3.org/ns/auth/acl#' + y[i])\n }\n }\n combo.sort()\n return combo.join('\\n')\n}\n\nfunction ktToList (k: number): string {\n let list = ''\n const y = ['Read', 'Append', 'Write', 'Control']\n for (let i = 0; i < 4; i++) {\n if (k & (1 << i)) {\n list += y[i]\n }\n }\n return list\n}\n\nfunction findAgent (uri, kb): PartialAgentTriple | null {\n const obj = sym(uri)\n const types = kb.findTypeURIs(obj)\n for (const ty in types) {\n debug.log(' drop object type includes: ' + ty)\n }\n // An Origin URI is one like https://fred.github.io eith no trailing slash\n if (uri.startsWith('http') && uri.split('/').length === 3) {\n // there is no third slash\n return { pred: 'origin', obj } // The only way to know an origin alas\n }\n // @@ This is an almighty kludge needed because drag and drop adds extra slashes to origins\n if (\n uri.startsWith('http') &&\n uri.split('/').length === 4 &&\n uri.endsWith('/')\n ) {\n // there IS third slash\n debug.log('Assuming final slash on dragged origin URI was unintended!')\n return { pred: 'origin', obj: sym(uri.slice(0, -1)) } // Fix a URI where the drag and drop system has added a spurious slash\n }\n\n if (ns.vcard('WebID').uri in types) return { pred: 'agent', obj }\n\n if (ns.vcard('Group').uri in types) {\n return { pred: 'agentGroup', obj } // @@ note vcard membership not RDFs\n }\n if (\n obj.sameTerm(ns.foaf('Agent')) ||\n obj.sameTerm(ns.acl('AuthenticatedAgent')) || // AuthenticatedAgent\n obj.sameTerm(ns.rdf('Resource')) ||\n obj.sameTerm(ns.owl('Thing'))\n ) {\n return { pred: 'agentClass', obj }\n }\n if (\n ns.vcard('Individual').uri in types ||\n ns.foaf('Person').uri in types ||\n ns.foaf('Agent').uri in types\n ) {\n const pref = kb.any(obj, ns.foaf('preferredURI'))\n if (pref) return { pred: 'agent', obj: sym(pref) }\n return { pred: 'agent', obj }\n }\n if (ns.solid('AppProvider').uri in types) {\n return { pred: 'origin', obj }\n }\n if (ns.solid('AppProviderClass').uri in types) {\n return { pred: 'originClass', obj }\n }\n debug.log(' Triage fails for ' + uri)\n return null\n}\n"],"file":"access-groups.js"}
|
package/lib/acl/acl-control.d.ts
CHANGED
|
File without changes
|
|
File without changes
|
package/lib/acl/acl-control.js
CHANGED
|
File without changes
|
|
File without changes
|
package/lib/acl/acl.d.ts
CHANGED
|
File without changes
|
package/lib/acl/acl.d.ts.map
CHANGED
|
File without changes
|
package/lib/acl/acl.js
CHANGED
|
File without changes
|
package/lib/acl/acl.js.map
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/lib/acl/index.d.ts
CHANGED
|
File without changes
|
package/lib/acl/index.d.ts.map
CHANGED
|
File without changes
|
package/lib/acl/index.js
CHANGED
|
File without changes
|
package/lib/acl/index.js.map
CHANGED
|
File without changes
|
package/lib/acl/styles.d.ts
CHANGED
|
File without changes
|
package/lib/acl/styles.d.ts.map
CHANGED
|
File without changes
|
package/lib/acl/styles.js
CHANGED
|
File without changes
|
package/lib/acl/styles.js.map
CHANGED
|
File without changes
|
package/lib/acl/types.d.ts
CHANGED
|
File without changes
|
package/lib/acl/types.d.ts.map
CHANGED
|
File without changes
|
package/lib/acl/types.js
CHANGED
|
File without changes
|
package/lib/acl/types.js.map
CHANGED
|
File without changes
|
package/lib/chat/bookmarks.js
CHANGED
|
File without changes
|
|
File without changes
|
package/lib/chat/chatLogic.js
CHANGED
|
File without changes
|
|
File without changes
|
package/lib/chat/dateFolder.js
CHANGED
|
File without changes
|
|
File without changes
|
package/lib/chat/infinite.js
CHANGED
|
File without changes
|
package/lib/chat/infinite.js.map
CHANGED
|
File without changes
|
package/lib/chat/message.js
CHANGED
|
File without changes
|
package/lib/chat/message.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/chat/message.js"],"names":["dom","window","document","messageBodyStyle","style","label","utils","elementForImageURI","imageUri","options","img","createElement","height","inlineImageHeightEms","trim","setAttribute","anchor","appendChild","widgets","makeDraggable","$rdf","sym","text","term","a","uri","addEventListener","openHrefInOutlineMode","textContent","nick","person","s","store","any","ns","foaf","value","creatorAndDate","td1","creator","date","message","nickAnchor","fetcher","nowOrWhenFetched","doc","undefined","_ok","_body","creatorAndDateHorizontal","dateBit","fontSize","marginLeft","renderMessageRow","channelObject","fresh","userContext","colorizeByAuthor","dct","latestVersion","content","sioc","originalMessage","edited","sameTerm","sortDate","the","messageRow","AJAR_date","AJAR_subject","authorDateOnLeft","setImage","shortDate","bothDates","td2","isURI","test","para","isImage","expandImagesInline","anc","href","bgcolor","pad","lightColorHash","getBgColor","strip","children","length","td3","toolsButton","button","icons","iconBase","_event","toolTR","parentNode","removeChild","toolsTR","tools","nextSibling","parentElement","insertBefore","toolsTD","switchToEditor","messageTable","editRow","renderMessageEditor","originalRow","visibility","revertEditing","messageEditor","handleFieldInput","sendMessage","field","fromMainField","sendComplete","_text2","oldRow","debug","warn","backgroundColor","disabled","scrollIntoView","newestFirst","focus","select","updateMessage","statusArea","errorMessageBlock","droppedFileHandler","files","base","chatDocument","dir","uploadFiles","theFile","destURI","droppedURIHandler","uris","turnOnInput","getImageDoc","imageDoc","Date","now","tookPicture","menuButton","menuHandler","buttonStyle","rhs","me","authn","currentUser","menuOptions","div","newBase","event","chatChannel","lhs","middle","innerHTML","rows","anyValue","e","code","shiftKey","shiftEnterSendsMessage","makeDropTarget","sendButton","sendIcon","cancelButton","dateFolder","leafDocumentFromDate","media","cameraButton","recordParticipation","channel","context","then","Object","assign","_context"],"mappings":";;;;;;;;;;;;;;;;;;;;AAMA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;AAEA,IAAMA,GAAG,GAAGC,MAAM,CAACC,QAAnB;AACA,IAAMC,gBAAgB,GAAGC,KAAK,CAACD,gBAA/B;AAEA,IAAME,KAAK,GAAGC,KAAK,CAACD,KAApB;AAEA;AACA;AACA;;AACO,SAASE,kBAAT,CAA6BC,QAA7B,EAAuCC,OAAvC,EAAgD;AACrD,MAAMC,GAAG,GAAGV,GAAG,CAACW,aAAJ,CAAkB,KAAlB,CAAZ;AACA,MAAIC,MAAM,GAAG,IAAb;;AACA,MAAIH,OAAO,CAACI,oBAAZ,EAAkC;AAChCD,IAAAA,MAAM,GAAG,CAAC,KAAKH,OAAO,CAACI,oBAAd,EAAoCC,IAApC,EAAT;AACD;;AACDJ,EAAAA,GAAG,CAACK,YAAJ,CACE,OADF,EAEE,iBAAiBH,MAAjB,GAA0B,wCAF5B,EANqD,CAUrD;;AACA,MAAIJ,QAAJ,EAAcE,GAAG,CAACK,YAAJ,CAAiB,KAAjB,EAAwBP,QAAxB;AACd,MAAMQ,MAAM,GAAGhB,GAAG,CAACW,aAAJ,CAAkB,GAAlB,CAAf;AACAK,EAAAA,MAAM,CAACD,YAAP,CAAoB,MAApB,EAA4BP,QAA5B;AACAQ,EAAAA,MAAM,CAACD,YAAP,CAAoB,QAApB,EAA8B,QAA9B;AACAC,EAAAA,MAAM,CAACC,WAAP,CAAmBP,GAAnB;AACAQ,EAAAA,OAAO,CAACC,aAAR,CAAsBT,GAAtB,EAA2BU,IAAI,CAACC,GAAL,CAASb,QAAT,CAA3B;AACA,SAAOQ,MAAP;AACD;;AAED,IAAMA,MAAM,GAAG,SAATA,MAAS,CAAUM,IAAV,EAAgBC,IAAhB,EAAsB;AACnC;AACA,MAAMC,CAAC,GAAGxB,GAAG,CAACW,aAAJ,CAAkB,GAAlB,CAAV;;AACA,MAAIY,IAAI,IAAIA,IAAI,CAACE,GAAjB,EAAsB;AACpBD,IAAAA,CAAC,CAACT,YAAF,CAAe,MAAf,EAAuBQ,IAAI,CAACE,GAA5B;AACAD,IAAAA,CAAC,CAACE,gBAAF,CAAmB,OAAnB,EAA4BR,OAAO,CAACS,qBAApC,EAA2D,IAA3D;AACAH,IAAAA,CAAC,CAACT,YAAF,CAAe,OAAf,EAAwB,yCAAxB,EAHoB,CAG+C;AACpE;;AACDS,EAAAA,CAAC,CAACI,WAAF,GAAgBN,IAAhB;AACA,SAAOE,CAAP;AACD,CAVD;;AAYA,SAASK,IAAT,CAAeC,MAAf,EAAuB;AACrB,MAAMC,CAAC,GAAGC,kBAAMC,GAAN,CAAUH,MAAV,EAAkBI,EAAE,CAACC,IAAH,CAAQ,MAAR,CAAlB,CAAV;;AACA,MAAIJ,CAAJ,EAAO,OAAO,KAAKA,CAAC,CAACK,KAAd;AACP,SAAO,KAAK/B,KAAK,CAACyB,MAAD,CAAjB;AACD;AAED;AACA;AACA;AACA;;;AACO,SAASO,cAAT,CAAyBC,GAAzB,EAA8BC,OAA9B,EAAuCC,IAAvC,EAA6CC,OAA7C,EAAsD;AAC3D,MAAMC,UAAU,GAAGJ,GAAG,CAACrB,WAAJ,CAAgBD,MAAM,CAACa,IAAI,CAACU,OAAD,CAAL,EAAgBA,OAAhB,CAAtB,CAAnB;;AACA,MAAIA,OAAO,CAACd,GAAZ,EAAiB;AACfO,sBAAMW,OAAN,CAAcC,gBAAd,CAA+BL,OAAO,CAACM,GAAR,EAA/B,EAA8CC,SAA9C,EAAyD,UACvDC,GADuD,EAEvDC,KAFuD,EAGvD;AACAN,MAAAA,UAAU,CAACd,WAAX,GAAyBC,IAAI,CAACU,OAAD,CAA7B;AACD,KALD;AAMD;;AACDD,EAAAA,GAAG,CAACrB,WAAJ,CAAgBjB,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAAhB;AACA2B,EAAAA,GAAG,CAACrB,WAAJ,CAAgBD,MAAM,CAACwB,IAAD,EAAOC,OAAP,CAAtB;AACD;AAED;AACA;AACA;AACA;;;AACO,SAASQ,wBAAT,CAAmCX,GAAnC,EAAwCC,OAAxC,EAAiDC,IAAjD,EAAuDC,OAAvD,EAAgE;AACrE,MAAMC,UAAU,GAAGJ,GAAG,CAACrB,WAAJ,CAAgBD,MAAM,CAACX,KAAK,CAACkC,OAAD,CAAN,EAAiBA,OAAjB,CAAtB,CAAnB;;AACA,MAAIA,OAAO,CAACd,GAAZ,EAAiB;AACfO,sBAAMW,OAAN,CAAcC,gBAAd,CAA+BL,OAAO,CAACM,GAAR,EAA/B,EAA8CC,SAA9C,EAAyD,UACvDC,GADuD,EAEvDC,KAFuD,EAGvD;AACAN,MAAAA,UAAU,CAACd,WAAX,GAAyBC,IAAI,CAACU,OAAD,CAA7B;AACD,KALD;AAMD;;AACD,MAAMW,OAAO,GAAGZ,GAAG,CAACrB,WAAJ,CAAgBD,MAAM,CAACwB,IAAD,EAAOC,OAAP,CAAtB,CAAhB;AACAS,EAAAA,OAAO,CAAC9C,KAAR,CAAc+C,QAAd,GAAyB,KAAzB;AACAD,EAAAA,OAAO,CAAC9C,KAAR,CAAcgD,UAAd,GAA2B,KAA3B;AACAd,EAAAA,GAAG,CAACrB,WAAJ,CAAgBjB,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAAhB;AACD;AAED;AACA;AACA;;;AACO,SAAS0C,gBAAT,CAA2BC,aAA3B,EAA0Cb,OAA1C,EAAmDc,KAAnD,EAA0D9C,OAA1D,EAAmE+C,WAAnE,EAAgF;AACrF,MAAMC,gBAAgB,GACpBhD,OAAO,CAACgD,gBAAR,KAA6B,GAA7B,IAAoChD,OAAO,CAACgD,gBAAR,KAA6B,IADnE;;AAGA,MAAMlB,OAAO,GAAGP,kBAAMC,GAAN,CAAUQ,OAAV,EAAmBP,EAAE,CAACC,IAAH,CAAQ,OAAR,CAAnB,CAAhB;;AACA,MAAMK,IAAI,GAAGR,kBAAMC,GAAN,CAAUQ,OAAV,EAAmBP,EAAE,CAACwB,GAAH,CAAO,SAAP,CAAnB,CAAb;;AACA,MAAMC,aAAa,GAAG,kCAAkBlB,OAAlB,CAAtB;;AACA,MAAMmB,OAAO,GAAG5B,kBAAMC,GAAN,CAAU0B,aAAV,EAAyBzB,EAAE,CAAC2B,IAAH,CAAQ,SAAR,CAAzB,CAAhB;;AAEA,MAAMC,eAAe,GAAG,gCAAgBrB,OAAhB,CAAxB;AACA,MAAMsB,MAAM,GAAG,CAACtB,OAAO,CAACuB,QAAR,CAAiBF,eAAjB,CAAhB;;AAEA,MAAMG,QAAQ,GAAGjC,kBAAMkC,GAAN,CAAUJ,eAAV,EAA2B5B,EAAE,CAACwB,GAAH,CAAO,SAAP,CAA3B,EAA8C,IAA9C,EAAoDI,eAAe,CAACjB,GAAhB,EAApD,CAAjB,CAZqF,CAYO;;;AAE5F,MAAMsB,UAAU,GAAGnE,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAAnB;AACAwD,EAAAA,UAAU,CAACC,SAAX,GAAuBH,QAAQ,CAAC7B,KAAhC;AACA+B,EAAAA,UAAU,CAACE,YAAX,GAA0B5B,OAA1B;AAEA,MAAMH,GAAG,GAAGtC,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAAZ;AACAwD,EAAAA,UAAU,CAAClD,WAAX,CAAuBqB,GAAvB;;AACA,MAAI,CAAC7B,OAAO,CAAC6D,gBAAb,EAA+B;AAC7B,QAAM5D,GAAG,GAAGV,GAAG,CAACW,aAAJ,CAAkB,KAAlB,CAAZ;AACAD,IAAAA,GAAG,CAACK,YAAJ,CACE,OADF,EAEE,0EAFF;AAIAG,IAAAA,OAAO,CAACqD,QAAR,CAAiB7D,GAAjB,EAAsB6B,OAAtB;AACAD,IAAAA,GAAG,CAACrB,WAAJ,CAAgBP,GAAhB;AACD,GARD,MAQO;AACL2B,IAAAA,cAAc,CAACC,GAAD,EAAMC,OAAN,EAAerB,OAAO,CAACsD,SAAR,CAAkBP,QAAQ,CAAC7B,KAA3B,CAAf,EAAkDK,OAAlD,CAAd;AACD;;AACD,MAAIgC,SAAS,GAAGvD,OAAO,CAACsD,SAAR,CAAkBP,QAAQ,CAAC7B,KAA3B,CAAhB;;AACA,MAAI2B,MAAJ,EAAY;AACVU,IAAAA,SAAS,IAAI,UAAUvD,OAAO,CAACsD,SAAR,CAAkBhC,IAAI,CAACJ,KAAvB,CAAvB;AACD,GAlCoF,CAoCrF;;;AACA,MAAMsC,GAAG,GAAGP,UAAU,CAAClD,WAAX,CAAuBjB,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAAvB,CAAZ;;AAEA,MAAI,CAACF,OAAO,CAAC6D,gBAAb,EAA+B;AAC7BrB,IAAAA,wBAAwB,CACtByB,GADsB,EAEtBnC,OAFsB,EAGtBkC,SAHsB,EAGX;AACXhC,IAAAA,OAJsB,CAAxB;AAMD;;AACD,MAAMnB,IAAI,GAAGsC,OAAO,CAACxB,KAAR,CAActB,IAAd,EAAb;AACA,MAAM6D,KAAK,GAAG,sBAAsBC,IAAtB,CAA2BtD,IAA3B,CAAd;AACA,MAAIuD,IAAI,GAAG,IAAX;;AACA,MAAIF,KAAJ,EAAW;AACT,QAAMG,OAAO,GAAG,kCAAkCF,IAAlC,CAAuCtD,IAAvC,CAAhB,CADS,CACoD;;AAC7D,QAAIwD,OAAO,IAAIrE,OAAO,CAACsE,kBAAvB,EAA2C;AACzC,UAAMrE,IAAG,GAAGH,kBAAkB,CAACe,IAAD,EAAOb,OAAP,CAA9B;;AACAiE,MAAAA,GAAG,CAACzD,WAAJ,CAAgBP,IAAhB;AACD,KAHD,MAGO;AACL;AACA,UAAMsE,GAAG,GAAGN,GAAG,CAACzD,WAAJ,CAAgBjB,GAAG,CAACW,aAAJ,CAAkB,GAAlB,CAAhB,CAAZ;AACAkE,MAAAA,IAAI,GAAGG,GAAG,CAAC/D,WAAJ,CAAgBjB,GAAG,CAACW,aAAJ,CAAkB,GAAlB,CAAhB,CAAP;AACAqE,MAAAA,GAAG,CAACC,IAAJ,GAAW3D,IAAX;AACAuD,MAAAA,IAAI,CAACjD,WAAL,GAAmBN,IAAnB;AACAoD,MAAAA,GAAG,CAACzD,WAAJ,CAAgB+D,GAAhB;AACD;AACF,GAbD,MAaO;AACL;AACAH,IAAAA,IAAI,GAAG7E,GAAG,CAACW,aAAJ,CAAkB,GAAlB,CAAP;AACA+D,IAAAA,GAAG,CAACzD,WAAJ,CAAgB4D,IAAhB;AACAA,IAAAA,IAAI,CAACjD,WAAL,GAAmBN,IAAnB;AACD;;AACD,MAAIuD,IAAJ,EAAU;AACR,QAAMK,OAAO,GAAGzB,gBAAgB,GAC5B0B,GAAG,CAACC,cAAJ,CAAmB7C,OAAnB,CAD4B,GAE5B8C,UAAU,CAAC9B,KAAD,CAFd;AAGAsB,IAAAA,IAAI,CAAC9D,YAAL,CACE,OADF,EAEEZ,gBAAgB,GAAG,oBAAnB,GAA0C+E,OAA1C,GAAoD,GAFtD;AAID;;AAED,WAASG,UAAT,CAAqB9B,KAArB,EAA4B;AAC1B,WAAOA,KAAK,GAAG,SAAH,GAAe,OAA3B;AACD,GAjFoF,CAmFrF;;;AACA,MAAM+B,KAAK,GAAG,wCAAqB7C,OAArB,EAA8BA,OAAO,CAACI,GAAR,EAA9B,CAAd;;AACA,MAAIyC,KAAK,CAACC,QAAN,CAAeC,MAAnB,EAA2B;AACzBd,IAAAA,GAAG,CAACzD,WAAJ,CAAgBjB,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAAhB;AACA+D,IAAAA,GAAG,CAACzD,WAAJ,CAAgBqE,KAAhB;AACD,GAxFoF,CA0FrF;;;AACA,MAAMG,GAAG,GAAGzF,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAAZ;AACAwD,EAAAA,UAAU,CAAClD,WAAX,CAAuBwE,GAAvB;AACA,MAAMC,WAAW,GAAGxE,OAAO,CAACyE,MAAR,CAClB3F,GADkB,EAElB4F,gBAAMC,QAAN,GAAiB,iBAFC,EAGlB,KAHkB,CAApB;AAKAJ,EAAAA,GAAG,CAACxE,WAAJ,CAAgByE,WAAhB;AACAA,EAAAA,WAAW,CAAChE,gBAAZ,CAA6B,OAA7B,EAAsC,UAAUoE,MAAV,EAAkB;AACtD,QAAI3B,UAAU,CAAC4B,MAAf,EAAuB;AACrB;AACA5B,MAAAA,UAAU,CAAC6B,UAAX,CAAsBC,WAAtB,CAAkC9B,UAAU,CAAC4B,MAA7C;AACA,aAAO5B,UAAU,CAAC4B,MAAlB;AACA;AACD;;AACD,QAAMG,OAAO,GAAGlG,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAAhB;AACA,QAAMwF,KAAK,GAAG,kCAAe1D,OAAf,EAAwB0B,UAAxB,EAAoCX,WAApC,EAAiDF,aAAjD,CAAd;AACA6C,IAAAA,KAAK,CAAC/F,KAAN,GACE,kHADF,CATsD,CAU+D;;AACrH,QAAI+D,UAAU,CAACiC,WAAf,EAA4B;AAC1BjC,MAAAA,UAAU,CAACkC,aAAX,CAAyBC,YAAzB,CAAsCJ,OAAtC,EAA+C/B,UAAU,CAACiC,WAA1D;AACD,KAFD,MAEO;AACLjC,MAAAA,UAAU,CAACkC,aAAX,CAAyBpF,WAAzB,CAAqCiF,OAArC;AACD;;AACD/B,IAAAA,UAAU,CAAC4B,MAAX,GAAoBG,OAApB;AACAA,IAAAA,OAAO,CAACjF,WAAR,CAAoBjB,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAApB,EAjBsD,CAiBT;;AAC7C,QAAM4F,OAAO,GAAGL,OAAO,CAACjF,WAAR,CAAoBjB,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAApB,CAAhB;AACAuF,IAAAA,OAAO,CAACjF,WAAR,CAAoBjB,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAApB,EAnBsD,CAmBT;;AAC7C4F,IAAAA,OAAO,CAACtF,WAAR,CAAoBkF,KAApB;AACD,GArBD;AAsBA,SAAOhC,UAAP;AACD;;AAEM,SAASqC,cAAT,CAAyBrC,UAAzB,EAAqC1B,OAArC,EAA8Ca,aAA9C,EAA6DE,WAA7D,EAA0E;AAC/E,MAAMiD,YAAY,GAAGtC,UAAU,CAAC6B,UAAhC;AACA,MAAMU,OAAO,GAAGC,mBAAmB,CAACrD,aAAD,EAAgBmD,YAAhB,EAA8BjD,WAA9B,EACjCF,aAAa,CAAC7C,OADmB,EACV,kCAAkBgC,OAAlB,CADU,CAAnC;AAEAgE,EAAAA,YAAY,CAACH,YAAb,CAA0BI,OAA1B,EAAmCvC,UAAnC;AACAuC,EAAAA,OAAO,CAACE,WAAR,GAAsBzC,UAAtB;AACAA,EAAAA,UAAU,CAAC/D,KAAX,CAAiByG,UAAjB,GAA8B,QAA9B,CAN+E,CAMxC;AACxC;AACD;AACA;AACA;;;AACO,SAASF,mBAAT,CAA8BrD,aAA9B,EAA6CmD,YAA7C,EAA2DjD,WAA3D,EAAwE/C,OAAxE,EAAiFqD,eAAjF,EAAkG;AACvG,WAASgD,aAAT,CAAwBC,aAAxB,EAAuC;AACrCA,IAAAA,aAAa,CAACH,WAAd,CAA0BxG,KAA1B,CAAgCyG,UAAhC,GAA6C,SAA7C,CADqC,CACkB;;AACvDE,IAAAA,aAAa,CAACf,UAAd,CAAyBC,WAAzB,CAAqCc,aAArC;AACD;;AAJsG,WAMxFC,gBANwF;AAAA;AAAA;;AAAA;AAAA,sGAMvG,kBAAiClB,MAAjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBACQmB,WAAW,CAACC,KAAK,CAAC9E,KAAP,EAAc,IAAd,CADnB;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KANuG;AAAA;AAAA;;AAAA,WAUxF6E,WAVwF;AAAA;AAAA,IAyDrG;AAEF;;;AA3DuG;AAAA,iGAUvG,kBAA4B3F,IAA5B,EAAkC6F,aAAlC;AAAA,UACWC,YADX;AAAA;AAAA;AAAA;AAAA;AACWA,cAAAA,YADX,0BACyB3E,OADzB,EACkC4E,MADlC,EAC0C;AACtC;AACA;AACA,sDAAuB/D,aAAvB,EAAsCmD,YAAtC,EAAoDhE,OAApD,EAA6D,KAA7D,EAAoEhC,OAApE,EAA6E+C,WAA7E,EAHsC,CAGoD;;AAE1F,oBAAIM,eAAJ,EAAqB;AAAE;AACrB,sBAAMwD,MAAM,GAAGP,aAAa,CAACH,WAA7B,CADmB,CAEnB;;AACA,sBAAIU,MAAM,CAACtB,UAAX,EAAuB;AACrBsB,oBAAAA,MAAM,CAACtB,UAAP,CAAkBC,WAAlB,CAA8BqB,MAA9B,EADqB,CACiB;AACvC,mBAFD,MAEO;AACLC,oBAAAA,KAAK,CAACC,IAAN,CAAW,kCAAkCF,MAAM,CAAC1F,WAApD;AACA0F,oBAAAA,MAAM,CAAClH,KAAP,CAAaqH,eAAb,GAA+B,MAA/B;AACAH,oBAAAA,MAAM,CAAClH,KAAP,CAAayG,UAAb,GAA0B,QAA1B,CAHK,CAG8B;AACpC;;AACDE,kBAAAA,aAAa,CAACf,UAAd,CAAyBC,WAAzB,CAAqCc,aAArC,EAVmB,CAUiC;AACrD,iBAXD,MAWO;AACL,sBAAII,aAAJ,EAAmB;AACjBD,oBAAAA,KAAK,CAAC9E,KAAN,GAAc,EAAd,CADiB,CACA;;AACjB8E,oBAAAA,KAAK,CAACnG,YAAN,CAAmB,OAAnB,EAA4BZ,gBAA5B;AACA+G,oBAAAA,KAAK,CAACQ,QAAN,GAAiB,KAAjB;AACAR,oBAAAA,KAAK,CAACS,cAAN,CAAqBlH,OAAO,CAACmH,WAA7B,EAJiB,CAIyB;;AAC1CV,oBAAAA,KAAK,CAACW,KAAN,GALiB,CAKH;;AACdX,oBAAAA,KAAK,CAACY,MAAN;AACD;AACF,iBAzBqC,CA0BtC;;AACD,eA5BH;;AA8BE;AACA,kBAAIX,aAAJ,EAAmB;AACjBD,gBAAAA,KAAK,CAACnG,YAAN,CAAmB,OAAnB,EAA4BZ,gBAAgB,GAAG,cAA/C,EADiB,CAC8C;;AAC/D+G,gBAAAA,KAAK,CAACQ,QAAN,GAAiB,IAAjB;AACD;;AAlCH;AAAA;AAAA,qBAsCoBpE,aAAa,CAACyE,aAAd,CAA4BzG,IAA5B,EAAkCwC,eAAlC,CAtCpB;;AAAA;AAsCIrB,cAAAA,OAtCJ;AAAA;AAAA;;AAAA;AAAA;AAAA;AAwCUuF,cAAAA,UAxCV,GAwCuBxE,WAAW,CAACwE,UAAZ,IAA0BjB,aAxCjD;AAyCIiB,cAAAA,UAAU,CAAC/G,WAAX,CACEC,OAAO,CAAC+G,iBAAR,CAA0BjI,GAA1B,EAA+B,wCAA/B,CADF;AAzCJ;;AAAA;AA8CEoH,cAAAA,YAAY,CAAC3E,OAAD,EAAUnB,IAAV,CAAZ;;AA9CF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAVuG;AAAA;AAAA;;AA4DvG,WAAS4G,kBAAT,CAA6BC,KAA7B,EAAoC;AAClC,QAAMC,IAAI,GAAG3B,YAAY,CAAC4B,YAAb,CAA0BC,GAA1B,GAAgC7G,GAA7C;AACAP,IAAAA,OAAO,CAACqH,WAAR,CACEvG,kBAAMW,OADR,EAEEwF,KAFF,EAGEC,IAAI,GAAG,OAHT,EAIEA,IAAI,GAAG,UAJT;AAAA,+FAKE,iBAAgBI,OAAhB,EAAyBC,OAAzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEQxB,WAAW,CAACwB,OAAD,CAFnB;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OALF;;AAAA;AAAA;AAAA;AAAA;AAUD,GAxEsG,CA0EvG;;;AACA,MAAMC,iBAAiB;AAAA,8FAAG,kBAAgBC,IAAhB;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,qDACNA,IADM;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACblH,cAAAA,GADa;AAAA;AAAA,qBAEhBwF,WAAW,CAACxF,GAAD,CAFK;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAH;;AAAA,oBAAjBiH,iBAAiB;AAAA;AAAA;AAAA,KAAvB,CA3EuG,CAiFvG;;;AACA,WAASE,WAAT,GAAwB;AACtB,aAASC,WAAT,GAAwB;AACtBC,MAAAA,QAAQ,GAAG1H,IAAI,CAACC,GAAL,CACTgH,YAAY,CAACC,GAAb,GAAmB7G,GAAnB,GAAyB,QAAzB,GAAoCsH,IAAI,CAACC,GAAL,EAApC,GAAiD,MADxC,CAAX;AAGA,aAAOF,QAAP;AACD;;AANqB,aAQPG,WARO;AAAA;AAAA,MActB;;;AAdsB;AAAA,mGAQtB,kBAA4BH,QAA5B;AAAA;AAAA;AAAA;AAAA;AAAA,qBACMA,QADN;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAEU7B,WAAW,CAAC6B,QAAQ,CAACrH,GAAV,CAFrB;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OARsB;AAAA;AAAA;;AAgBtB,QAAIyH,UAAJ;;AACA,QAAIzI,OAAO,CAAC0I,WAAZ,EAAyB;AACvB,UAAMD,WAAU,GAAGhI,OAAO,CAACyE,MAAR,CACjB3F,GADiB,EACZ4F,gBAAMC,QAAN,GAAiB,iBADL,EACwB,MADxB,CAAnB;;AAEAqD,MAAAA,WAAU,CAACnI,YAAX,CAAwB,OAAxB,EAAiCX,KAAK,CAACgJ,WAAN,GAAoB,eAArD,EAHuB,CAIvB;;;AACAC,MAAAA,GAAG,CAACpI,WAAJ,CAAgBiI,WAAhB;AACD;;AAED,QAAIzI,OAAO,CAAC0I,WAAR,IAAuBD,UAA3B,EAAuC;AACrC,UAAMI,GAAE,GAAGC,kBAAMC,WAAN,EAAX;;AACA,UAAMC,WAAW,GAAG;AAClBH,QAAAA,EAAE,EAAFA,GADkB;AAElBtJ,QAAAA,GAAG,EAAHA,GAFkB;AAGlB0J,QAAAA,GAAG,EAAE,IAHa;AAGP;AACXC,QAAAA,OAAO,EAAElD,YAAY,CAAC4B,YAAb,CAA0BC,GAA1B,GAAgC7G;AAJvB,OAApB;AAMAyH,MAAAA,UAAU,CAACxH,gBAAX,CACE,OADF,EAEE,UAAAkI,KAAK,EAAI;AACPnJ,QAAAA,OAAO,CAAC0I,WAAR,CAAoBS,KAApB,EAA2BtG,aAAa,CAACuG,WAAzC,EAAsDJ,WAAtD;AACD,OAJH,EAKE,KALF;AAOD;;AAED,QAAMH,EAAE,GAAGC,kBAAMC,WAAN,EAAX,CA1CsB,CA0CS;;;AAC/BnH,IAAAA,cAAc,CAACyH,GAAD,EAAMR,EAAN,EAAU,EAAV,EAAc,IAAd,CAAd;AAEApC,IAAAA,KAAK,GAAGlH,GAAG,CAACW,aAAJ,CAAkB,UAAlB,CAAR;AACAoJ,IAAAA,MAAM,CAACC,SAAP,GAAmB,EAAnB;AACAD,IAAAA,MAAM,CAAC9I,WAAP,CAAmBiG,KAAnB;AACAA,IAAAA,KAAK,CAAC+C,IAAN,GAAa,CAAb;;AACA,QAAInG,eAAJ,EAAqB;AACnBoD,MAAAA,KAAK,CAAC9E,KAAN,GAAcJ,kBAAMkI,QAAN,CAAepG,eAAf,EAAgC5B,EAAE,CAAC2B,IAAH,CAAQ,SAAR,CAAhC,EAAoD,IAApD,EAA0DC,eAAe,CAACjB,GAAhB,EAA1D,CAAd;AACD,KAnDqB,CAoDtB;;;AACAqE,IAAAA,KAAK,CAACnG,YAAN,CAAmB,OAAnB,EAA4BZ,gBAAgB,GAAG,yBAA/C,EArDsB,CAuDtB;;AAEA+G,IAAAA,KAAK,CAACxF,gBAAN,CACE,SADF;AAAA,gGAEE,kBAAgByI,CAAhB;AAAA;AAAA;AAAA;AAAA;AAAA,sBAEMA,CAAC,CAACC,IAAF,KAAW,OAFjB;AAAA;AAAA;AAAA;;AAAA,sBAIS,CAACD,CAAC,CAACE,QAAH,IAAe,CAAC5J,OAAO,CAAC6J,sBAAzB,IAAqDH,CAAC,CAACE,QAAF,IAAc5J,OAAO,CAAC6J,sBAJnF;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAOYtD,gBAAgB,CAACmD,CAAD,CAP5B;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAFF;;AAAA;AAAA;AAAA;AAAA,SAaE,KAbF;AAgBAjJ,IAAAA,OAAO,CAACqJ,cAAR,CAAuBrD,KAAvB,EAA8BwB,iBAA9B,EAAiDR,kBAAjD;AAEAmB,IAAAA,GAAG,CAACW,SAAJ,GAAgB,EAAhB;AAEAQ,IAAAA,UAAU,GAAGtJ,OAAO,CAACyE,MAAR,CAAe3F,GAAf,EAAoByK,QAApB,EAA8B,MAA9B,CAAb;AACAD,IAAAA,UAAU,CAACpK,KAAX,YAAyB,OAAzB;AACAoK,IAAAA,UAAU,CAAC9I,gBAAX,CAA4B,OAA5B,EAAqC,UAAAoE,MAAM;AAAA,aAAIkB,gBAAgB,EAApB;AAAA,KAA3C,EAAmE,KAAnE;AACAqC,IAAAA,GAAG,CAACpI,WAAJ,CAAgBuJ,UAAhB;;AAEA,QAAI1G,eAAJ,EAAqB;AAAE;AACrB,UAAM4G,YAAY,GAAGrB,GAAG,CAACpI,WAAJ,CAAgBC,OAAO,CAACwJ,YAAR,CAAqB1K,GAArB,CAAhB,CAArB;AACA0K,MAAAA,YAAY,CAACtK,KAAb,YAA2B,MAA3B,CAFmB,CAGnB;;AACAsK,MAAAA,YAAY,CAAChJ,gBAAb,CAA8B,OAA9B,EAAuC,UAAAoE,MAAM;AAAA,eAAIgB,aAAa,CAACC,aAAD,CAAjB;AAAA,OAA7C,EAA+E,KAA/E;AACAsC,MAAAA,GAAG,CAACpI,WAAJ,CAAgByJ,YAAhB;AACD;;AAED,QAAMrC,YAAY,GAAG/E,aAAa,CAACqH,UAAd,CAAyBC,oBAAzB,CAA8C,IAAI7B,IAAJ,EAA9C,CAArB;AACA,QAAID,QAAJ;AAEAiB,IAAAA,MAAM,CAAC9I,WAAP,CACE4J,aAAMC,YAAN,CAAmB9K,GAAnB,EAAwBgC,iBAAxB,EAA+B6G,WAA/B,EAA4CI,WAA5C,CADF;AAIA9D,IAAAA,GAAG,CAAC4F,mBAAJ,CAAwBzH,aAAa,CAAC0H,OAAtC,EAA+C1H,aAAa,CAAC0H,OAAd,CAAsBnI,GAAtB,EAA/C,EAjGsB,CAiGsD;AAC7E,GApLsG,CAoLrG;AAEF;;;AAEA,MAAIoB,QAAJ,EAAcwG,QAAd;;AACA,MAAI3G,eAAJ,EAAqB;AACnBG,IAAAA,QAAQ,GAAGjC,kBAAMkI,QAAN,CAAepG,eAAf,EAAgC5B,EAAE,CAACwB,GAAH,CAAO,SAAP,CAAhC,EAAmD,IAAnD,EAAyDI,eAAe,CAACjB,GAAhB,EAAzD,CAAX,CADmB,CAEnB;;AACA4H,IAAAA,QAAQ,GAAG7E,gBAAMC,QAAN,GAAiB,kBAA5B,CAHmB,CAG4B;AAC/C;AACD,GALD,MAKO;AACL4E,IAAAA,QAAQ,GAAG7E,gBAAMC,QAAN,GAAiB,iBAA5B;AACA5B,IAAAA,QAAQ,GAAG,sBAAX,CAFK,CAE6B;AAClC;AACD;;AACD,MAAM8C,aAAa,GAAG/G,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAAtB;AACA,MAAMmJ,GAAG,GAAG9J,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAAZ;AACA,MAAMoJ,MAAM,GAAG/J,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAAf;AACA,MAAM0I,GAAG,GAAGrJ,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAAZ;AACAoG,EAAAA,aAAa,CAAC9F,WAAd,CAA0B6I,GAA1B;AACA/C,EAAAA,aAAa,CAAC9F,WAAd,CAA0B8I,MAA1B;AACAhD,EAAAA,aAAa,CAAC9F,WAAd,CAA0BoI,GAA1B;AACAtC,EAAAA,aAAa,CAAC3C,SAAd,GAA0BH,QAA1B,CA1MuG,CA2MvG;;AAEA,MAAIiD,KAAJ,EAAWsD,UAAX;AACA,MAAMS,OAAO,GAAG;AAAEvB,IAAAA,GAAG,EAAEK,MAAP;AAAe/J,IAAAA,GAAG,EAAEA;AAApB,GAAhB;AAEA,6BAAeiL,OAAf,EAAwBC,IAAxB,CAA6B,UAAAD,OAAO,EAAI;AACtC;AACArC,IAAAA,WAAW;AACXuC,IAAAA,MAAM,CAACC,MAAP,CAAcH,OAAd,EAAuBzH,WAAvB;AACA,yCAAqByH,OAArB,EAA8BC,IAA9B,CAAmC,UAAAG,QAAQ,EAAI,CAC7C;AACD,KAFD;AAGD,GAPD;AASA,SAAOtE,aAAP;AACD,C,CAAC","sourcesContent":["/** UI code for individual messages: display them, edit them\n *\n * @packageDocumentation\n */\n\n/* global $rdf */\nimport { insertMessageIntoTable } from './infinite'\nimport { messageToolbar, sentimentStripLinked } from './messageTools'\nimport { findBookmarkDocument } from './bookmarks'\nimport { mostRecentVersion, originalVersion } from './chatLogic'\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\nimport { store, authn } from 'solid-logic'\nimport { ensureLoggedIn } from '../login/login'\nimport { media } from '../media/index'\nimport * as ns from '../ns'\nimport * as pad from '../pad'\nimport * as style from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\n\nconst dom = window.document\nconst messageBodyStyle = style.messageBodyStyle\n\nconst label = utils.label\n\n/**\n * HTML component for an image\n */\nexport function elementForImageURI (imageUri, options) {\n const img = dom.createElement('img')\n let height = '10'\n if (options.inlineImageHeightEms) {\n height = ('' + options.inlineImageHeightEms).trim()\n }\n img.setAttribute(\n 'style',\n 'max-height: ' + height + 'em; border-radius: 1em; margin: 0.7em;'\n )\n // widgets.makeDropTarget(img, handleURIsDroppedOnMugshot, droppedFileHandler)\n if (imageUri) img.setAttribute('src', imageUri)\n const anchor = dom.createElement('a')\n anchor.setAttribute('href', imageUri)\n anchor.setAttribute('target', 'images')\n anchor.appendChild(img)\n widgets.makeDraggable(img, $rdf.sym(imageUri))\n return anchor\n}\n\nconst anchor = function (text, term) {\n // If there is no link return an element anyway\n const a = dom.createElement('a')\n if (term && term.uri) {\n a.setAttribute('href', term.uri)\n a.addEventListener('click', widgets.openHrefInOutlineMode, true)\n a.setAttribute('style', 'color: #3B5998; text-decoration: none; ') // font-weight: bold\n }\n a.textContent = text\n return a\n}\n\nfunction nick (person) {\n const s = store.any(person, ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + label(person)\n}\n\n/**\n * Displays creator and date for a chat message\n * inside the `td1` element\n */\nexport function creatorAndDate (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(nick(creator), creator))\n if (creator.uri) {\n store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nick(creator)\n })\n }\n td1.appendChild(dom.createElement('br'))\n td1.appendChild(anchor(date, message))\n}\n\n/**\n * Horizontally displays creator and date for a chat message\n * inside the `td1` element\n */\nexport function creatorAndDateHorizontal (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(label(creator), creator))\n if (creator.uri) {\n store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nick(creator)\n })\n }\n const dateBit = td1.appendChild(anchor(date, message))\n dateBit.style.fontSize = '80%'\n dateBit.style.marginLeft = '1em'\n td1.appendChild(dom.createElement('br'))\n}\n\n/**\n * Renders a chat message, read-only mode\n */\nexport function renderMessageRow (channelObject, message, fresh, options, userContext) {\n const colorizeByAuthor =\n options.colorizeByAuthor === '1' || options.colorizeByAuthor === true\n\n const creator = store.any(message, ns.foaf('maker'))\n const date = store.any(message, ns.dct('created'))\n const latestVersion = mostRecentVersion(message)\n const content = store.any(latestVersion, ns.sioc('content'))\n\n const originalMessage = originalVersion(message)\n const edited = !message.sameTerm(originalMessage)\n\n const sortDate = store.the(originalMessage, ns.dct('created'), null, originalMessage.doc()) // In message\n\n const messageRow = dom.createElement('tr')\n messageRow.AJAR_date = sortDate.value\n messageRow.AJAR_subject = message\n\n const td1 = dom.createElement('td')\n messageRow.appendChild(td1)\n if (!options.authorDateOnLeft) {\n const img = dom.createElement('img')\n img.setAttribute(\n 'style',\n 'max-height: 2.5em; max-width: 2.5em; border-radius: 0.5em; margin: auto;'\n )\n widgets.setImage(img, creator)\n td1.appendChild(img)\n } else {\n creatorAndDate(td1, creator, widgets.shortDate(sortDate.value), message)\n }\n let bothDates = widgets.shortDate(sortDate.value)\n if (edited) {\n bothDates += ' ... ' + widgets.shortDate(date.value)\n }\n\n // Render the content ot the message itself\n const td2 = messageRow.appendChild(dom.createElement('td'))\n\n if (!options.authorDateOnLeft) {\n creatorAndDateHorizontal(\n td2,\n creator,\n bothDates, // widgets.shortDate(dateString)\n message\n )\n }\n const text = content.value.trim()\n const isURI = /^https?:\\/[^ <>]*$/i.test(text)\n let para = null\n if (isURI) {\n const isImage = /\\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(text) // @@ Should use content-type not URI\n if (isImage && options.expandImagesInline) {\n const img = elementForImageURI(text, options)\n td2.appendChild(img)\n } else {\n // Link but not Image\n const anc = td2.appendChild(dom.createElement('a'))\n para = anc.appendChild(dom.createElement('p'))\n anc.href = text\n para.textContent = text\n td2.appendChild(anc)\n }\n } else {\n // text\n para = dom.createElement('p')\n td2.appendChild(para)\n para.textContent = text\n }\n if (para) {\n const bgcolor = colorizeByAuthor\n ? pad.lightColorHash(creator)\n : getBgColor(fresh)\n para.setAttribute(\n 'style',\n messageBodyStyle + 'background-color: ' + bgcolor + ';'\n )\n }\n\n function getBgColor (fresh) {\n return fresh ? '#e8ffe8' : 'white'\n }\n\n // Sentiment strip\n const strip = sentimentStripLinked(message, message.doc())\n if (strip.children.length) {\n td2.appendChild(dom.createElement('br'))\n td2.appendChild(strip)\n }\n\n // Message tool bar button\n const td3 = dom.createElement('td')\n messageRow.appendChild(td3)\n const toolsButton = widgets.button(\n dom,\n icons.iconBase + 'noun_243787.svg',\n '...'\n )\n td3.appendChild(toolsButton)\n toolsButton.addEventListener('click', function (_event) {\n if (messageRow.toolTR) {\n // already got a toolbar? Toogle\n messageRow.parentNode.removeChild(messageRow.toolTR)\n delete messageRow.toolTR\n return\n }\n const toolsTR = dom.createElement('tr')\n const tools = messageToolbar(message, messageRow, userContext, channelObject)\n tools.style =\n 'border: 0.05em solid #888; border-radius: 0 0 0.7em 0.7em; border-top: 0; height:3.5em; background-color: #fff;' // @@ fix\n if (messageRow.nextSibling) {\n messageRow.parentElement.insertBefore(toolsTR, messageRow.nextSibling)\n } else {\n messageRow.parentElement.appendChild(toolsTR)\n }\n messageRow.toolTR = toolsTR\n toolsTR.appendChild(dom.createElement('td')) // left\n const toolsTD = toolsTR.appendChild(dom.createElement('td'))\n toolsTR.appendChild(dom.createElement('td')) // right\n toolsTD.appendChild(tools)\n })\n return messageRow\n}\n\nexport function switchToEditor (messageRow, message, channelObject, userContext) {\n const messageTable = messageRow.parentNode\n const editRow = renderMessageEditor(channelObject, messageTable, userContext,\n channelObject.options, mostRecentVersion(message))\n messageTable.insertBefore(editRow, messageRow)\n editRow.originalRow = messageRow\n messageRow.style.visibility = 'hidden' // Hide the original message. unhide if user cancels edit\n}\n/* Control for a new message -- or editing an old message ***************\n *\n */\nexport function renderMessageEditor (channelObject, messageTable, userContext, options, originalMessage) {\n function revertEditing (messageEditor) {\n messageEditor.originalRow.style.visibility = 'visible' // restore read-only version\n messageEditor.parentNode.removeChild(messageEditor)\n }\n\n async function handleFieldInput (_event) {\n await sendMessage(field.value, true)\n }\n\n async function sendMessage (text, fromMainField) {\n function sendComplete (message, _text2) {\n // const dateStamp = store.any(message, ns.dct('created'), null, message.doc())\n // const content = $rdf.literal(text2)\n insertMessageIntoTable(channelObject, messageTable, message, false, options, userContext) // not green\n\n if (originalMessage) { // editing another message\n const oldRow = messageEditor.originalRow\n // oldRow.style.display = '' // restore read-only version, re-attack\n if (oldRow.parentNode) {\n oldRow.parentNode.removeChild(oldRow) // No longer needed old version\n } else {\n debug.warn('No parentNode on old message ' + oldRow.textContent)\n oldRow.style.backgroundColor = '#fee'\n oldRow.style.visibility = 'hidden' // @@ FIX THIS AND REMOVE FROM DOM INSTEAD\n }\n messageEditor.parentNode.removeChild(messageEditor) // no longer need editor\n } else {\n if (fromMainField) {\n field.value = '' // clear from out for reuse\n field.setAttribute('style', messageBodyStyle)\n field.disabled = false\n field.scrollIntoView(options.newestFirst) // allign bottom (top)\n field.focus() // Start typing next line immediately\n field.select()\n }\n }\n // await channelObject.div.refresh() // Add new day if nec @@ add back\n }\n\n // const me = authn.currentUser() // Must be logged on or wuld have got login button\n if (fromMainField) {\n field.setAttribute('style', messageBodyStyle + 'color: #bbb;') // pendingedit\n field.disabled = true\n }\n\n let message\n try {\n message = await channelObject.updateMessage(text, originalMessage)\n } catch (err) {\n const statusArea = userContext.statusArea || messageEditor\n statusArea.appendChild(\n widgets.errorMessageBlock(dom, 'Error writing message: ' + err)\n )\n return\n }\n sendComplete(message, text)\n } // sendMessage\n\n // DRAG AND DROP\n function droppedFileHandler (files) {\n const base = messageTable.chatDocument.dir().uri\n widgets.uploadFiles(\n store.fetcher,\n files,\n base + 'Files',\n base + 'Pictures',\n async function (theFile, destURI) {\n // @@@@@@ Wait for each if several\n await sendMessage(destURI)\n }\n )\n }\n\n // When a set of URIs are dropped on the field\n const droppedURIHandler = async function (uris) {\n for (const uri of uris) {\n await sendMessage(uri)\n }\n }\n\n // When we are actually logged on\n function turnOnInput () {\n function getImageDoc () {\n imageDoc = $rdf.sym(\n chatDocument.dir().uri + 'Image_' + Date.now() + '.png'\n )\n return imageDoc\n }\n\n async function tookPicture (imageDoc) {\n if (imageDoc) {\n await sendMessage(imageDoc.uri)\n }\n }\n\n // Body of turnOnInput\n\n let menuButton\n if (options.menuHandler) {\n const menuButton = widgets.button(\n dom, icons.iconBase + 'noun_243787.svg', 'More')\n menuButton.setAttribute('style', style.buttonStyle + 'float: right;')\n // menuButton.addEventListener('click', _event => sendMessage(), false) (done in turnoninput)\n rhs.appendChild(menuButton)\n }\n\n if (options.menuHandler && menuButton) {\n const me = authn.currentUser()\n const menuOptions = {\n me,\n dom,\n div: null, // @@ was: div\n newBase: messageTable.chatDocument.dir().uri\n }\n menuButton.addEventListener(\n 'click',\n event => {\n options.menuHandler(event, channelObject.chatChannel, menuOptions)\n },\n false\n )\n }\n\n const me = authn.currentUser() // If already logged on\n creatorAndDate(lhs, me, '', null)\n\n field = dom.createElement('textarea')\n middle.innerHTML = ''\n middle.appendChild(field)\n field.rows = 3\n if (originalMessage) {\n field.value = store.anyValue(originalMessage, ns.sioc('content'), null, originalMessage.doc())\n }\n // field.cols = 40\n field.setAttribute('style', messageBodyStyle + 'background-color: #eef;')\n\n // Trap the Enter BEFORE it is used ti make a newline\n\n field.addEventListener(\n 'keydown',\n async function (e) {\n // User preference?\n if (e.code === 'Enter') {\n // if (e.keyCode === 13) { // deprocated https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode\n if ((!e.shiftKey && !options.shiftEnterSendsMessage) || (e.shiftKey && options.shiftEnterSendsMessage)) {\n // Shift-Enter just adds a new line\n // (note alt-enter doesn't add newline anyway on my setup - so have to use shift.\n await handleFieldInput(e)\n }\n }\n },\n false\n )\n\n widgets.makeDropTarget(field, droppedURIHandler, droppedFileHandler)\n\n rhs.innerHTML = ''\n\n sendButton = widgets.button(dom, sendIcon, 'Send')\n sendButton.style.float = 'right'\n sendButton.addEventListener('click', _event => handleFieldInput(), false)\n rhs.appendChild(sendButton)\n\n if (originalMessage) { // Are we editing another message?\n const cancelButton = rhs.appendChild(widgets.cancelButton(dom))\n cancelButton.style.float = 'left'\n // cancelButton.firstChild.style.opacity = '0.3' // moved to buttons\n cancelButton.addEventListener('click', _event => revertEditing(messageEditor), false)\n rhs.appendChild(cancelButton)\n }\n\n const chatDocument = channelObject.dateFolder.leafDocumentFromDate(new Date())\n let imageDoc\n\n middle.appendChild(\n media.cameraButton(dom, store, getImageDoc, tookPicture)\n )\n\n pad.recordParticipation(channelObject.channel, channelObject.channel.doc()) // participation =\n } // turn on inpuut\n\n // Body of renderMessageEditor\n\n let sortDate, sendIcon\n if (originalMessage) {\n sortDate = store.anyValue(originalMessage, ns.dct('created'), null, originalMessage.doc())\n // text = store.anyValue(originalMessage, ns.sioc('content'), null, originalMessage.doc())\n sendIcon = icons.iconBase + 'noun_1180158.svg' // Green check\n // cancelIcon = icons.iconBase + 'noun_1180156.svg' // Black cross\n } else {\n sendIcon = icons.iconBase + 'noun_383448.svg'\n sortDate = '9999-01-01T00:00:00Z' // ISO format for field sort\n // text = ''\n }\n const messageEditor = dom.createElement('tr')\n const lhs = dom.createElement('td')\n const middle = dom.createElement('td')\n const rhs = dom.createElement('td')\n messageEditor.appendChild(lhs)\n messageEditor.appendChild(middle)\n messageEditor.appendChild(rhs)\n messageEditor.AJAR_date = sortDate\n // messageEditor.appendChild(dom.createElement('br'))\n\n let field, sendButton\n const context = { div: middle, dom: dom }\n\n ensureLoggedIn(context).then(context => {\n // me = context.me\n turnOnInput()\n Object.assign(context, userContext)\n findBookmarkDocument(context).then(_context => {\n // console.log('Bookmark file: ' + context.bookmarkDocument)\n })\n })\n\n return messageEditor\n} // renderMessageEditor\n"],"file":"message.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/chat/message.js"],"names":["dom","window","document","messageBodyStyle","style","label","utils","elementForImageURI","imageUri","options","img","createElement","height","inlineImageHeightEms","trim","setAttribute","anchor","appendChild","widgets","makeDraggable","$rdf","sym","text","term","a","uri","addEventListener","openHrefInOutlineMode","textContent","nick","person","s","store","any","ns","foaf","value","creatorAndDate","td1","creator","date","message","nickAnchor","fetcher","nowOrWhenFetched","doc","undefined","_ok","_body","creatorAndDateHorizontal","dateBit","fontSize","marginLeft","renderMessageRow","channelObject","fresh","userContext","colorizeByAuthor","dct","latestVersion","content","sioc","originalMessage","edited","sameTerm","sortDate","the","messageRow","AJAR_date","AJAR_subject","authorDateOnLeft","setImage","shortDate","bothDates","td2","isURI","test","para","isImage","expandImagesInline","anc","href","bgcolor","pad","lightColorHash","getBgColor","strip","children","length","td3","toolsButton","button","icons","iconBase","_event","toolTR","parentNode","removeChild","toolsTR","tools","nextSibling","parentElement","insertBefore","toolsTD","switchToEditor","messageTable","editRow","renderMessageEditor","originalRow","visibility","revertEditing","messageEditor","handleFieldInput","sendMessage","field","fromMainField","sendComplete","_text2","oldRow","debug","warn","backgroundColor","disabled","scrollIntoView","newestFirst","focus","select","updateMessage","statusArea","errorMessageBlock","droppedFileHandler","files","base","chatDocument","dir","uploadFiles","theFile","destURI","droppedURIHandler","uris","turnOnInput","getImageDoc","imageDoc","Date","now","tookPicture","menuButton","menuHandler","buttonStyle","rhs","me","authn","currentUser","menuOptions","div","newBase","event","chatChannel","lhs","middle","innerHTML","rows","anyValue","e","code","shiftKey","shiftEnterSendsMessage","makeDropTarget","sendButton","sendIcon","cancelButton","dateFolder","leafDocumentFromDate","media","cameraButton","recordParticipation","channel","context","then","Object","assign","_context"],"mappings":"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","sourcesContent":["/** UI code for individual messages: display them, edit them\n *\n * @packageDocumentation\n */\n\n/* global $rdf */\nimport { insertMessageIntoTable } from './infinite'\nimport { messageToolbar, sentimentStripLinked } from './messageTools'\nimport { findBookmarkDocument } from './bookmarks'\nimport { mostRecentVersion, originalVersion } from './chatLogic'\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\nimport { store, authn } from 'solid-logic'\nimport { ensureLoggedIn } from '../login/login'\nimport { media } from '../media/index'\nimport * as ns from '../ns'\nimport * as pad from '../pad'\nimport * as style from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\n\nconst dom = window.document\nconst messageBodyStyle = style.messageBodyStyle\n\nconst label = utils.label\n\n/**\n * HTML component for an image\n */\nexport function elementForImageURI (imageUri, options) {\n const img = dom.createElement('img')\n let height = '10'\n if (options.inlineImageHeightEms) {\n height = ('' + options.inlineImageHeightEms).trim()\n }\n img.setAttribute(\n 'style',\n 'max-height: ' + height + 'em; border-radius: 1em; margin: 0.7em;'\n )\n // widgets.makeDropTarget(img, handleURIsDroppedOnMugshot, droppedFileHandler)\n if (imageUri) img.setAttribute('src', imageUri)\n const anchor = dom.createElement('a')\n anchor.setAttribute('href', imageUri)\n anchor.setAttribute('target', 'images')\n anchor.appendChild(img)\n widgets.makeDraggable(img, $rdf.sym(imageUri))\n return anchor\n}\n\nconst anchor = function (text, term) {\n // If there is no link return an element anyway\n const a = dom.createElement('a')\n if (term && term.uri) {\n a.setAttribute('href', term.uri)\n a.addEventListener('click', widgets.openHrefInOutlineMode, true)\n a.setAttribute('style', 'color: #3B5998; text-decoration: none; ') // font-weight: bold\n }\n a.textContent = text\n return a\n}\n\nfunction nick (person) {\n const s = store.any(person, ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + label(person)\n}\n\n/**\n * Displays creator and date for a chat message\n * inside the `td1` element\n */\nexport function creatorAndDate (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(nick(creator), creator))\n if (creator.uri) {\n store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nick(creator)\n })\n }\n td1.appendChild(dom.createElement('br'))\n td1.appendChild(anchor(date, message))\n}\n\n/**\n * Horizontally displays creator and date for a chat message\n * inside the `td1` element\n */\nexport function creatorAndDateHorizontal (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(label(creator), creator))\n if (creator.uri) {\n store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nick(creator)\n })\n }\n const dateBit = td1.appendChild(anchor(date, message))\n dateBit.style.fontSize = '80%'\n dateBit.style.marginLeft = '1em'\n td1.appendChild(dom.createElement('br'))\n}\n\n/**\n * Renders a chat message, read-only mode\n */\nexport function renderMessageRow (channelObject, message, fresh, options, userContext) {\n const colorizeByAuthor =\n options.colorizeByAuthor === '1' || options.colorizeByAuthor === true\n\n const creator = store.any(message, ns.foaf('maker'))\n const date = store.any(message, ns.dct('created'))\n const latestVersion = mostRecentVersion(message)\n const content = store.any(latestVersion, ns.sioc('content'))\n\n const originalMessage = originalVersion(message)\n const edited = !message.sameTerm(originalMessage)\n\n const sortDate = store.the(originalMessage, ns.dct('created'), null, originalMessage.doc()) // In message\n\n const messageRow = dom.createElement('tr')\n messageRow.AJAR_date = sortDate.value\n messageRow.AJAR_subject = message\n\n const td1 = dom.createElement('td')\n messageRow.appendChild(td1)\n if (!options.authorDateOnLeft) {\n const img = dom.createElement('img')\n img.setAttribute(\n 'style',\n 'max-height: 2.5em; max-width: 2.5em; border-radius: 0.5em; margin: auto;'\n )\n widgets.setImage(img, creator)\n td1.appendChild(img)\n } else {\n creatorAndDate(td1, creator, widgets.shortDate(sortDate.value), message)\n }\n let bothDates = widgets.shortDate(sortDate.value)\n if (edited) {\n bothDates += ' ... ' + widgets.shortDate(date.value)\n }\n\n // Render the content ot the message itself\n const td2 = messageRow.appendChild(dom.createElement('td'))\n\n if (!options.authorDateOnLeft) {\n creatorAndDateHorizontal(\n td2,\n creator,\n bothDates, // widgets.shortDate(dateString)\n message\n )\n }\n const text = content.value.trim()\n const isURI = /^https?:\\/[^ <>]*$/i.test(text)\n let para = null\n if (isURI) {\n const isImage = /\\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(text) // @@ Should use content-type not URI\n if (isImage && options.expandImagesInline) {\n const img = elementForImageURI(text, options)\n td2.appendChild(img)\n } else {\n // Link but not Image\n const anc = td2.appendChild(dom.createElement('a'))\n para = anc.appendChild(dom.createElement('p'))\n anc.href = text\n para.textContent = text\n td2.appendChild(anc)\n }\n } else {\n // text\n para = dom.createElement('p')\n td2.appendChild(para)\n para.textContent = text\n }\n if (para) {\n const bgcolor = colorizeByAuthor\n ? pad.lightColorHash(creator)\n : getBgColor(fresh)\n para.setAttribute(\n 'style',\n messageBodyStyle + 'background-color: ' + bgcolor + ';'\n )\n }\n\n function getBgColor (fresh) {\n return fresh ? '#e8ffe8' : 'white'\n }\n\n // Sentiment strip\n const strip = sentimentStripLinked(message, message.doc())\n if (strip.children.length) {\n td2.appendChild(dom.createElement('br'))\n td2.appendChild(strip)\n }\n\n // Message tool bar button\n const td3 = dom.createElement('td')\n messageRow.appendChild(td3)\n const toolsButton = widgets.button(\n dom,\n icons.iconBase + 'noun_243787.svg',\n '...'\n )\n td3.appendChild(toolsButton)\n toolsButton.addEventListener('click', function (_event) {\n if (messageRow.toolTR) {\n // already got a toolbar? Toogle\n messageRow.parentNode.removeChild(messageRow.toolTR)\n delete messageRow.toolTR\n return\n }\n const toolsTR = dom.createElement('tr')\n const tools = messageToolbar(message, messageRow, userContext, channelObject)\n tools.style =\n 'border: 0.05em solid #888; border-radius: 0 0 0.7em 0.7em; border-top: 0; height:3.5em; background-color: #fff;' // @@ fix\n if (messageRow.nextSibling) {\n messageRow.parentElement.insertBefore(toolsTR, messageRow.nextSibling)\n } else {\n messageRow.parentElement.appendChild(toolsTR)\n }\n messageRow.toolTR = toolsTR\n toolsTR.appendChild(dom.createElement('td')) // left\n const toolsTD = toolsTR.appendChild(dom.createElement('td'))\n toolsTR.appendChild(dom.createElement('td')) // right\n toolsTD.appendChild(tools)\n })\n return messageRow\n}\n\nexport function switchToEditor (messageRow, message, channelObject, userContext) {\n const messageTable = messageRow.parentNode\n const editRow = renderMessageEditor(channelObject, messageTable, userContext,\n channelObject.options, mostRecentVersion(message))\n messageTable.insertBefore(editRow, messageRow)\n editRow.originalRow = messageRow\n messageRow.style.visibility = 'hidden' // Hide the original message. unhide if user cancels edit\n}\n/* Control for a new message -- or editing an old message ***************\n *\n */\nexport function renderMessageEditor (channelObject, messageTable, userContext, options, originalMessage) {\n function revertEditing (messageEditor) {\n messageEditor.originalRow.style.visibility = 'visible' // restore read-only version\n messageEditor.parentNode.removeChild(messageEditor)\n }\n\n async function handleFieldInput (_event) {\n await sendMessage(field.value, true)\n }\n\n async function sendMessage (text, fromMainField) {\n function sendComplete (message, _text2) {\n // const dateStamp = store.any(message, ns.dct('created'), null, message.doc())\n // const content = $rdf.literal(text2)\n insertMessageIntoTable(channelObject, messageTable, message, false, options, userContext) // not green\n\n if (originalMessage) { // editing another message\n const oldRow = messageEditor.originalRow\n // oldRow.style.display = '' // restore read-only version, re-attack\n if (oldRow.parentNode) {\n oldRow.parentNode.removeChild(oldRow) // No longer needed old version\n } else {\n debug.warn('No parentNode on old message ' + oldRow.textContent)\n oldRow.style.backgroundColor = '#fee'\n oldRow.style.visibility = 'hidden' // @@ FIX THIS AND REMOVE FROM DOM INSTEAD\n }\n messageEditor.parentNode.removeChild(messageEditor) // no longer need editor\n } else {\n if (fromMainField) {\n field.value = '' // clear from out for reuse\n field.setAttribute('style', messageBodyStyle)\n field.disabled = false\n field.scrollIntoView(options.newestFirst) // allign bottom (top)\n field.focus() // Start typing next line immediately\n field.select()\n }\n }\n // await channelObject.div.refresh() // Add new day if nec @@ add back\n }\n\n // const me = authn.currentUser() // Must be logged on or wuld have got login button\n if (fromMainField) {\n field.setAttribute('style', messageBodyStyle + 'color: #bbb;') // pendingedit\n field.disabled = true\n }\n\n let message\n try {\n message = await channelObject.updateMessage(text, originalMessage)\n } catch (err) {\n const statusArea = userContext.statusArea || messageEditor\n statusArea.appendChild(\n widgets.errorMessageBlock(dom, 'Error writing message: ' + err)\n )\n return\n }\n sendComplete(message, text)\n } // sendMessage\n\n // DRAG AND DROP\n function droppedFileHandler (files) {\n const base = messageTable.chatDocument.dir().uri\n widgets.uploadFiles(\n store.fetcher,\n files,\n base + 'Files',\n base + 'Pictures',\n async function (theFile, destURI) {\n // @@@@@@ Wait for each if several\n await sendMessage(destURI)\n }\n )\n }\n\n // When a set of URIs are dropped on the field\n const droppedURIHandler = async function (uris) {\n for (const uri of uris) {\n await sendMessage(uri)\n }\n }\n\n // When we are actually logged on\n function turnOnInput () {\n function getImageDoc () {\n imageDoc = $rdf.sym(\n chatDocument.dir().uri + 'Image_' + Date.now() + '.png'\n )\n return imageDoc\n }\n\n async function tookPicture (imageDoc) {\n if (imageDoc) {\n await sendMessage(imageDoc.uri)\n }\n }\n\n // Body of turnOnInput\n\n let menuButton\n if (options.menuHandler) {\n const menuButton = widgets.button(\n dom, icons.iconBase + 'noun_243787.svg', 'More')\n menuButton.setAttribute('style', style.buttonStyle + 'float: right;')\n // menuButton.addEventListener('click', _event => sendMessage(), false) (done in turnoninput)\n rhs.appendChild(menuButton)\n }\n\n if (options.menuHandler && menuButton) {\n const me = authn.currentUser()\n const menuOptions = {\n me,\n dom,\n div: null, // @@ was: div\n newBase: messageTable.chatDocument.dir().uri\n }\n menuButton.addEventListener(\n 'click',\n event => {\n options.menuHandler(event, channelObject.chatChannel, menuOptions)\n },\n false\n )\n }\n\n const me = authn.currentUser() // If already logged on\n creatorAndDate(lhs, me, '', null)\n\n field = dom.createElement('textarea')\n middle.innerHTML = ''\n middle.appendChild(field)\n field.rows = 3\n if (originalMessage) {\n field.value = store.anyValue(originalMessage, ns.sioc('content'), null, originalMessage.doc())\n }\n // field.cols = 40\n field.setAttribute('style', messageBodyStyle + 'background-color: #eef;')\n\n // Trap the Enter BEFORE it is used ti make a newline\n\n field.addEventListener(\n 'keydown',\n async function (e) {\n // User preference?\n if (e.code === 'Enter') {\n // if (e.keyCode === 13) { // deprocated https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode\n if ((!e.shiftKey && !options.shiftEnterSendsMessage) || (e.shiftKey && options.shiftEnterSendsMessage)) {\n // Shift-Enter just adds a new line\n // (note alt-enter doesn't add newline anyway on my setup - so have to use shift.\n await handleFieldInput(e)\n }\n }\n },\n false\n )\n\n widgets.makeDropTarget(field, droppedURIHandler, droppedFileHandler)\n\n rhs.innerHTML = ''\n\n sendButton = widgets.button(dom, sendIcon, 'Send')\n sendButton.style.float = 'right'\n sendButton.addEventListener('click', _event => handleFieldInput(), false)\n rhs.appendChild(sendButton)\n\n if (originalMessage) { // Are we editing another message?\n const cancelButton = rhs.appendChild(widgets.cancelButton(dom))\n cancelButton.style.float = 'left'\n // cancelButton.firstChild.style.opacity = '0.3' // moved to buttons\n cancelButton.addEventListener('click', _event => revertEditing(messageEditor), false)\n rhs.appendChild(cancelButton)\n }\n\n const chatDocument = channelObject.dateFolder.leafDocumentFromDate(new Date())\n let imageDoc\n\n middle.appendChild(\n media.cameraButton(dom, store, getImageDoc, tookPicture)\n )\n\n pad.recordParticipation(channelObject.channel, channelObject.channel.doc()) // participation =\n } // turn on inpuut\n\n // Body of renderMessageEditor\n\n let sortDate, sendIcon\n if (originalMessage) {\n sortDate = store.anyValue(originalMessage, ns.dct('created'), null, originalMessage.doc())\n // text = store.anyValue(originalMessage, ns.sioc('content'), null, originalMessage.doc())\n sendIcon = icons.iconBase + 'noun_1180158.svg' // Green check\n // cancelIcon = icons.iconBase + 'noun_1180156.svg' // Black cross\n } else {\n sendIcon = icons.iconBase + 'noun_383448.svg'\n sortDate = '9999-01-01T00:00:00Z' // ISO format for field sort\n // text = ''\n }\n const messageEditor = dom.createElement('tr')\n const lhs = dom.createElement('td')\n const middle = dom.createElement('td')\n const rhs = dom.createElement('td')\n messageEditor.appendChild(lhs)\n messageEditor.appendChild(middle)\n messageEditor.appendChild(rhs)\n messageEditor.AJAR_date = sortDate\n // messageEditor.appendChild(dom.createElement('br'))\n\n let field, sendButton\n const context = { div: middle, dom }\n\n ensureLoggedIn(context).then(context => {\n // me = context.me\n turnOnInput()\n Object.assign(context, userContext)\n findBookmarkDocument(context).then(_context => {\n // console.log('Bookmark file: ' + context.bookmarkDocument)\n })\n })\n\n return messageEditor\n} // renderMessageEditor\n"],"file":"message.js"}
|
package/lib/chat/messageTools.js
CHANGED
|
File without changes
|
|
File without changes
|
package/lib/chat/thread.js
CHANGED
|
File without changes
|
package/lib/chat/thread.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/chat/thread.js"],"names":["UI","icons","ns","media","pad","style","utils","widgets","thread","dom","kb","subject","messageStore","options","store","doc","WF","$rdf","Namespace","DCT","newestFirst","messageBodyStyle","div","createElement","messageTable","me","updater","anchor","text","term","a","uri","setAttribute","addEventListener","openHrefInOutlineMode","textContent","mention","message","pre","appendChild","createTextNode","announce","log","warn","error","newMessageForm","form","lhs","middle","rhs","AJAR_date","sendMessage","field","disabled","appendMsg","value","dateStamp","sts","sendComplete","success","body","errorMessageBlock","bindings","literal","renderMessage","update","sendButton","turnOnInput","creatorAndDate","innerHTML","rows","e","keyCode","altKey","button","iconBase","buttonStyle","context","login","ensureLoggedIn","then","fieldValue","oldMsg","now","Date","timestamp","getTime","sym","push","Statement","mostRecentVersion","wf","msgBody","nick","sioc","foaf","person","s","any","label","td1","creator","date","nickAnchor","fetcher","nowOrWhenFetched","undefined","_ok","_body","syncMessages","about","displayed","ele","ele2","firstChild","nextSibling","AJAR_subject","messages","each","stored","forEach","m","addMessage","removeChild","msg","statementsMatching","_deleteMessage","connectedStatements","deletions","ok","fresh","content","dateString","tr","done","insertBefore","shortDate","td2","td3","delButton","_event","cancelButton","sureButton","query","Query","v","vs","x","vars","variable","pat","add","dct","doneQuery","refresh"],"mappings":";;;;;;;;;;;;;;;AAKA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAdA;AACA;AACA;AACA;AAQ+B;AAK/B,IAAMA,EAAE,GAAG;AAAEC,EAAAA,KAAK,EAALA,eAAF;AAASC,EAAAA,EAAE,EAAFA,EAAT;AAAaC,EAAAA,KAAK,EAALA,YAAb;AAAoBC,EAAAA,GAAG,EAAHA,GAApB;AAAyBC,EAAAA,KAAK,EAALA,KAAzB;AAAgCC,EAAAA,KAAK,EAALA,KAAhC;AAAuCC,EAAAA,OAAO,EAAPA;AAAvC,CAAX;AAEA;AACA;AACA;;AACO,SAASC,MAAT,CAAiBC,GAAjB,EAAsBC,EAAtB,EAA0BC,OAA1B,EAAmCC,YAAnC,EAAiDC,OAAjD,EAA0D;AAC/DH,EAAAA,EAAE,GAAGA,EAAE,IAAII,iBAAX;AACAF,EAAAA,YAAY,GAAGA,YAAY,CAACG,GAAb,EAAf,CAF+D,CAE7B;;AAClC,MAAMb,EAAE,GAAGF,EAAE,CAACE,EAAd;AACA,MAAMc,EAAE,GAAGC,IAAI,CAACC,SAAL,CAAe,oCAAf,CAAX;AACA,MAAMC,GAAG,GAAGF,IAAI,CAACC,SAAL,CAAe,2BAAf,CAAZ;AAEAL,EAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB;AAEA,MAAMO,WAAW,GAAG,CAAC,CAACP,OAAO,CAACO,WAA9B;AAEA,MAAMC,gBAAgB,GACpB,iIADF,CAX+D,CAa/D;;AAEA,MAAMC,GAAG,GAAGb,GAAG,CAACc,aAAJ,CAAkB,KAAlB,CAAZ,CAf+D,CAgB/D;;AACA,MAAIC,YAAJ,CAjB+D,CAiB9C;;AAEjB,MAAIC,EAAJ;AAEA,MAAMC,OAAO,GAAGZ,kBAAMY,OAAtB;;AAEA,MAAMC,MAAM,GAAG,SAATA,MAAS,CAAUC,IAAV,EAAgBC,IAAhB,EAAsB;AACnC;AACA,QAAMC,CAAC,GAAGrB,GAAG,CAACc,aAAJ,CAAkB,GAAlB,CAAV;;AACA,QAAIM,IAAI,IAAIA,IAAI,CAACE,GAAjB,EAAsB;AACpBD,MAAAA,CAAC,CAACE,YAAF,CAAe,MAAf,EAAuBH,IAAI,CAACE,GAA5B;AACAD,MAAAA,CAAC,CAACG,gBAAF,CAAmB,OAAnB,EAA4BjC,EAAE,CAACO,OAAH,CAAW2B,qBAAvC,EAA8D,IAA9D;AACAJ,MAAAA,CAAC,CAACE,YAAF,CAAe,OAAf,EAAwB,yCAAxB,EAHoB,CAG+C;AACpE;;AACDF,IAAAA,CAAC,CAACK,WAAF,GAAgBP,IAAhB;AACA,WAAOE,CAAP;AACD,GAVD;;AAYA,MAAMM,OAAO,GAAG,SAASA,OAAT,CAAkBC,OAAlB,EAA2BhC,KAA3B,EAAkC;AAChD,QAAMiC,GAAG,GAAG7B,GAAG,CAACc,aAAJ,CAAkB,KAAlB,CAAZ;AACAe,IAAAA,GAAG,CAACN,YAAJ,CAAiB,OAAjB,EAA0B3B,KAAK,IAAI,aAAnC;AACAiB,IAAAA,GAAG,CAACiB,WAAJ,CAAgBD,GAAhB;AACAA,IAAAA,GAAG,CAACC,WAAJ,CAAgB9B,GAAG,CAAC+B,cAAJ,CAAmBH,OAAnB,CAAhB;AACA,WAAOC,GAAP;AACD,GAND;;AAQA,MAAMG,QAAQ,GAAG;AACfC,IAAAA,GAAG,EAAE,aAAUL,OAAV,EAAmB;AACtBD,MAAAA,OAAO,CAACC,OAAD,EAAU,cAAV,CAAP;AACD,KAHc;AAIfM,IAAAA,IAAI,EAAE,cAAUN,OAAV,EAAmB;AACvBD,MAAAA,OAAO,CAACC,OAAD,EAAU,cAAV,CAAP;AACD,KANc;AAOfO,IAAAA,KAAK,EAAE,eAAUP,OAAV,EAAmB;AACxBD,MAAAA,OAAO,CAACC,OAAD,EAAU,cAAV,CAAP;AACD;AATc,GAAjB;AAYA;AACF;AACA;;AACE,MAAMQ,cAAc,GAAG,SAAjBA,cAAiB,GAAY;AACjC,QAAMC,IAAI,GAAGrC,GAAG,CAACc,aAAJ,CAAkB,IAAlB,CAAb;AACA,QAAMwB,GAAG,GAAGtC,GAAG,CAACc,aAAJ,CAAkB,IAAlB,CAAZ;AACA,QAAMyB,MAAM,GAAGvC,GAAG,CAACc,aAAJ,CAAkB,IAAlB,CAAf;AACA,QAAM0B,GAAG,GAAGxC,GAAG,CAACc,aAAJ,CAAkB,IAAlB,CAAZ;AACAuB,IAAAA,IAAI,CAACP,WAAL,CAAiBQ,GAAjB;AACAD,IAAAA,IAAI,CAACP,WAAL,CAAiBS,MAAjB;AACAF,IAAAA,IAAI,CAACP,WAAL,CAAiBU,GAAjB;AACAH,IAAAA,IAAI,CAACI,SAAL,GAAiB,sBAAjB,CARiC,CAQO;;AAExC,QAAMC,WAAW,GAAG,SAAdA,WAAc,GAAY;AAC9B;AACA;AACAC,MAAAA,KAAK,CAACpB,YAAN,CAAmB,OAAnB,EAA4B,aAA5B;AACAoB,MAAAA,KAAK,CAACC,QAAN,GAAiB,IAAjB;;AACA,uBAAoCC,SAAS,CAACF,KAAK,CAACG,KAAP,CAA7C;AAAA,UAAQlB,OAAR,cAAQA,OAAR;AAAA,UAAiBmB,SAAjB,cAAiBA,SAAjB;AAAA,UAA4BC,GAA5B,cAA4BA,GAA5B;;AAEA,UAAMC,YAAY,GAAG,SAAfA,YAAe,CAAU3B,GAAV,EAAe4B,OAAf,EAAwBC,IAAxB,EAA8B;AACjD,YAAI,CAACD,OAAL,EAAc;AACZb,UAAAA,IAAI,CAACP,WAAL,CACEvC,EAAE,CAACO,OAAH,CAAWsD,iBAAX,CAA6BpD,GAA7B,EAAkC,4BAA4BmD,IAA9D,CADF;AAGD,SAJD,MAIO;AACL,cAAME,QAAQ,GAAG;AACf,oBAAQzB,OADO;AAEf,wBAAYvB,kBAAMiD,OAAN,CAAcX,KAAK,CAACG,KAApB,CAFG;AAGf,qBAASC,SAHM;AAIf,wBAAY/B;AAJG,WAAjB;AAMAuC,UAAAA,aAAa,CAACF,QAAD,EAAW,KAAX,CAAb,CAPK,CAO0B;;AAE/BV,UAAAA,KAAK,CAACG,KAAN,GAAc,EAAd,CATK,CASY;;AACjBH,UAAAA,KAAK,CAACpB,YAAN,CAAmB,OAAnB,EAA4B,EAA5B;AACAoB,UAAAA,KAAK,CAACC,QAAN,GAAiB,KAAjB;AACD;AACF,OAlBD;;AAmBA3B,MAAAA,OAAO,CAACuC,MAAR,CAAe,EAAf,EAAmBR,GAAnB,EAAwBC,YAAxB;AACD,KA3BD;;AA4BAZ,IAAAA,IAAI,CAACP,WAAL,CAAiB9B,GAAG,CAACc,aAAJ,CAAkB,IAAlB,CAAjB;AAEA,QAAI6B,KAAJ,EAAWc,UAAX;;AACA,QAAMC,WAAW,GAAG,SAAdA,WAAc,GAAY;AAC9BC,MAAAA,cAAc,CAACrB,GAAD,EAAMtB,EAAN,EAAU,EAAV,EAAc,IAAd,CAAd;AAEA2B,MAAAA,KAAK,GAAG3C,GAAG,CAACc,aAAJ,CAAkB,UAAlB,CAAR;AACAyB,MAAAA,MAAM,CAACqB,SAAP,GAAmB,EAAnB;AACArB,MAAAA,MAAM,CAACT,WAAP,CAAmBa,KAAnB;AACAA,MAAAA,KAAK,CAACkB,IAAN,GAAa,CAAb,CAN8B,CAO9B;;AACAlB,MAAAA,KAAK,CAACpB,YAAN,CAAmB,OAAnB,EAA4BX,gBAAgB,GAAG,yBAA/C;AAEA+B,MAAAA,KAAK,CAACnB,gBAAN,CACE,OADF,EAEE,UAAUsC,CAAV,EAAa;AACX;AACA,YAAIA,CAAC,CAACC,OAAF,KAAc,EAAlB,EAAsB;AACpB,cAAI,CAACD,CAAC,CAACE,MAAP,EAAe;AACb;AACAtB,YAAAA,WAAW;AACZ;AACF;AACF,OAVH,EAWE,KAXF;AAcAF,MAAAA,GAAG,CAACoB,SAAJ,GAAgB,EAAhB;AACAH,MAAAA,UAAU,GAAGlE,EAAE,CAACO,OAAH,CAAWmE,MAAX,CACXjE,GADW,EAEXT,EAAE,CAACC,KAAH,CAAS0E,QAAT,GAAoB,iBAFT,EAGX,MAHW,CAAb;AAKAT,MAAAA,UAAU,CAAClC,YAAX,CAAwB,OAAxB,EAAiChC,EAAE,CAACK,KAAH,CAASuE,WAAT,GAAuB,eAAxD;AACAV,MAAAA,UAAU,CAACjC,gBAAX,CAA4B,OAA5B,EAAqCkB,WAArC,EAAkD,KAAlD;AACAF,MAAAA,GAAG,CAACV,WAAJ,CAAgB2B,UAAhB;AACD,KAjCD;;AAmCA,QAAMW,OAAO,GAAG;AAAEvD,MAAAA,GAAG,EAAE0B,MAAP;AAAevC,MAAAA,GAAG,EAAEA;AAApB,KAAhB;AACAqE,IAAAA,KAAK,CAACC,cAAN,CAAqBF,OAArB,EAA8BG,IAA9B,CAAmC,UAAAH,OAAO,EAAI;AAC5CpD,MAAAA,EAAE,GAAGoD,OAAO,CAACpD,EAAb;AACA0C,MAAAA,WAAW;AACZ,KAHD;AAKA,WAAOrB,IAAP;AACD,GAnFD;AAqFA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAKE,MAAMQ,SAAS,GAAG,SAAZA,SAAY,CAAU2B,UAAV,EAAiD;AAAA,QAA3BC,MAA2B,uEAAlB,EAAkB;AAAA,QAAdrE,OAAc,uEAAJ,EAAI;AAAE;AACnE,QAAM4C,GAAG,GAAG,EAAZ;AACA,QAAM0B,GAAG,GAAG,IAAIC,IAAJ,EAAZ;AACA,QAAMC,SAAS,GAAG,KAAKF,GAAG,CAACG,OAAJ,EAAvB;AACA,QAAM9B,SAAS,GAAGvC,IAAI,CAACY,IAAL,CAAUsD,GAAV,CAAlB,CAJiE,CAKjE;;AACA,QAAM9C,OAAO,GAAGvB,kBAAMyE,GAAN,CAAU3E,YAAY,CAACmB,GAAb,GAAmB,GAAnB,GAAyB,KAAzB,GAAiCsD,SAA3C,CAAhB;;AAEA,QAAIxE,OAAO,KAAK,MAAZ,IAAsBA,OAAO,KAAK,QAAtC,EAAgD;AAC9C4C,MAAAA,GAAG,CAAC+B,IAAJ,CACE,IAAIvE,IAAI,CAACwE,SAAT,CAAmBC,iBAAiB,CAACR,MAAD,CAApC,EAA8C/D,GAAG,CAAC,cAAD,CAAjD,EAAmEkB,OAAnE,EAA4EzB,YAA5E,CADF;AAGD,KAJD,MAIO;AACL6C,MAAAA,GAAG,CAAC+B,IAAJ,CACE,IAAIvE,IAAI,CAACwE,SAAT,CAAmB9E,OAAnB,EAA4BT,EAAE,CAACyF,EAAH,CAAM,SAAN,CAA5B,EAA8CtD,OAA9C,EAAuDzB,YAAvD,CADF;AAGD,KAhBgE,CAiBjE;;;AACA,QAAMgF,OAAO,GAAG/E,OAAO,KAAK,QAAZ,GAAuBoE,UAAvB,iCAA2DY,IAAI,CAACpE,EAAD,CAA/D,CAAhB;AACAgC,IAAAA,GAAG,CAAC+B,IAAJ,CACE,IAAIvE,IAAI,CAACwE,SAAT,CACEpD,OADF,EAEEnC,EAAE,CAAC4F,IAAH,CAAQ,SAAR,CAFF,EAGEhF,kBAAMiD,OAAN,CAAc6B,OAAd,CAHF,EAIEhF,YAJF,CADF;AAQA6C,IAAAA,GAAG,CAAC+B,IAAJ,CACE,IAAIvE,IAAI,CAACwE,SAAT,CAAmBpD,OAAnB,EAA4BlB,GAAG,CAAC,SAAD,CAA/B,EAA4CqC,SAA5C,EAAuD5C,YAAvD,CADF;;AAGA,QAAIa,EAAJ,EAAQ;AACNgC,MAAAA,GAAG,CAAC+B,IAAJ,CACE,IAAIvE,IAAI,CAACwE,SAAT,CAAmBpD,OAAnB,EAA4BnC,EAAE,CAAC6F,IAAH,CAAQ,OAAR,CAA5B,EAA8CtE,EAA9C,EAAkDb,YAAlD,CADF;AAGD;;AACD,WAAO;AAAEyB,MAAAA,OAAO,EAAPA,OAAF;AAAWmB,MAAAA,SAAS,EAATA,SAAX;AAAsBC,MAAAA,GAAG,EAAHA;AAAtB,KAAP;AACD,GApCD;;AAsCA,WAASoC,IAAT,CAAeG,MAAf,EAAuB;AACrB,QAAMC,CAAC,GAAGnF,kBAAMoF,GAAN,CAAUF,MAAV,EAAkBhG,EAAE,CAACE,EAAH,CAAM6F,IAAN,CAAW,MAAX,CAAlB,CAAV;;AACA,QAAIE,CAAJ,EAAO,OAAO,KAAKA,CAAC,CAAC1C,KAAd;AACP,WAAO,KAAKjD,KAAK,CAAC6F,KAAN,CAAYH,MAAZ,CAAZ;AACD;;AAED,WAAS5B,cAAT,CAAyBgC,GAAzB,EAA8BC,OAA9B,EAAuCC,IAAvC,EAA6CjE,OAA7C,EAAsD;AACpD,QAAMkE,UAAU,GAAGH,GAAG,CAAC7D,WAAJ,CAAgBZ,MAAM,CAACkE,IAAI,CAACQ,OAAD,CAAL,EAAgBA,OAAhB,CAAtB,CAAnB;;AACA,QAAIA,OAAO,CAACtE,GAAZ,EAAiB;AACfjB,wBAAM0F,OAAN,CAAcC,gBAAd,CAA+BJ,OAAO,CAACtF,GAAR,EAA/B,EAA8C2F,SAA9C,EAAyD,UACvDC,GADuD,EAEvDC,KAFuD,EAGvD;AACAL,QAAAA,UAAU,CAACpE,WAAX,GAAyB0D,IAAI,CAACQ,OAAD,CAA7B;AACD,OALD;AAMD;;AACDD,IAAAA,GAAG,CAAC7D,WAAJ,CAAgB9B,GAAG,CAACc,aAAJ,CAAkB,IAAlB,CAAhB;AACA6E,IAAAA,GAAG,CAAC7D,WAAJ,CAAgBZ,MAAM,CAAC2E,IAAD,EAAOjE,OAAP,CAAtB;AACD,GArQ8D,CAuQ/D;;;AAEA,WAASwE,YAAT,CAAuBC,KAAvB,EAA8BtF,YAA9B,EAA4C;AAC1C,QAAMuF,SAAS,GAAG,EAAlB;AACA,QAAIC,GAAJ,EAASC,IAAT;;AACA,SAAKD,GAAG,GAAGxF,YAAY,CAAC0F,UAAxB,EAAoCF,GAApC,EAAyCA,GAAG,GAAGA,GAAG,CAACG,WAAnD,EAAgE;AAC9D,UAAIH,GAAG,CAACI,YAAR,EAAsB;AACpBL,QAAAA,SAAS,CAACC,GAAG,CAACI,YAAJ,CAAiBrF,GAAlB,CAAT,GAAkC,IAAlC;AACD;AACF;;AACD,QAAMsF,QAAQ,GAAGvG,kBAAMwG,IAAN,CAAWR,KAAX,EAAkB5G,EAAE,CAACyF,EAAH,CAAM,SAAN,CAAlB,CAAjB;;AACA,QAAM4B,MAAM,GAAG,EAAf;AACAF,IAAAA,QAAQ,CAACG,OAAT,CAAiB,UAAUC,CAAV,EAAa;AAC5BF,MAAAA,MAAM,CAACE,CAAC,CAAC1F,GAAH,CAAN,GAAgB,IAAhB;;AACA,UAAI,CAACgF,SAAS,CAACU,CAAC,CAAC1F,GAAH,CAAd,EAAuB;AACrB2F,QAAAA,UAAU,CAACD,CAAD,CAAV;AACD;AACF,KALD,EAV0C,CAiB1C;;AACA,SAAKT,GAAG,GAAGxF,YAAY,CAAC0F,UAAxB,EAAoCF,GAApC,GAA2C;AACzCC,MAAAA,IAAI,GAAGD,GAAG,CAACG,WAAX;;AACA,UAAIH,GAAG,CAACI,YAAJ,IAAoB,CAACG,MAAM,CAACP,GAAG,CAACI,YAAJ,CAAiBrF,GAAlB,CAA/B,EAAuD;AACrDP,QAAAA,YAAY,CAACmG,WAAb,CAAyBX,GAAzB;AACD;;AACDA,MAAAA,GAAG,GAAGC,IAAN;AACD;AACF;;AAED,MAAMvB,iBAAiB,GAAG,SAApBA,iBAAoB,CAAUrD,OAAV,EAAmB;AAC3C,QAAIuF,GAAG,GAAGvF,OAAV,CAD2C,CAE3C;;AACA,WAAOuF,GAAP,EAAY;AACV;AACAA,MAAAA,GAAG,GAAG9G,kBAAM+G,kBAAN,CAAyBxF,OAAzB,EAAkClB,GAAG,CAAC,cAAD,CAArC,CAAN;AACD;;AACD,WAAOyG,GAAP;AACD,GARD;;AAUA,MAAME,cAAc;AAAA,6FAAG,iBAAgBzF,OAAhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAEGvB,kBAAMiH,mBAAN,CAA0B1F,OAA1B,EAAmCzB,YAAnC,CAFH;;AAAA;AAEfoH,cAAAA,SAFe;AAGrBtG,cAAAA,OAAO,CAACuC,MAAR,CAAe+D,SAAf,EAA0B,EAA1B,EAA8B,UAAUjG,GAAV,EAAekG,EAAf,EAAmBrE,IAAnB,EAAyB;AACrD,oBAAI,CAACqE,EAAL,EAAS;AACPxF,kBAAAA,QAAQ,CAACG,KAAT,CAAe,0BAA0BgB,IAAzC;AACD,iBAFD,MAEO;AACLiD,kBAAAA,YAAY,CAAClG,OAAD,EAAUa,YAAV,CAAZ;AACD;AACF,eAND;;AAHqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAH;;AAAA,oBAAdsG,cAAc;AAAA;AAAA;AAAA,KAApB;;AAYA,MAAMJ,UAAU,GAAG,SAAbA,UAAa,CAAUrF,OAAV,EAAmB;AACpC,QAAMyB,QAAQ,GAAG;AACf,cAAQzB,OADO;AAEf,kBAAYvB,kBAAMoF,GAAN,CAAU7D,OAAV,EAAmBnC,EAAE,CAAC6F,IAAH,CAAQ,OAAR,CAAnB,CAFG;AAGf,eAASjF,kBAAMoF,GAAN,CAAU7D,OAAV,EAAmBlB,GAAG,CAAC,SAAD,CAAtB,CAHM;AAIf,kBAAYL,kBAAMoF,GAAN,CAAU7D,OAAV,EAAmBnC,EAAE,CAAC4F,IAAH,CAAQ,SAAR,CAAnB;AAJG,KAAjB;AAMA9B,IAAAA,aAAa,CAACF,QAAD,EAAW,IAAX,CAAb,CAPoC,CAON;AAC/B,GARD;;AAUA,MAAME,aAAa,GAAG,SAAhBA,aAAgB,CAAUF,QAAV,EAAoBoE,KAApB,EAA2B;AAC/C,QAAM7B,OAAO,GAAGvC,QAAQ,CAAC,UAAD,CAAxB;AACA,QAAMzB,OAAO,GAAGyB,QAAQ,CAAC,MAAD,CAAxB;AACA,QAAMwC,IAAI,GAAGxC,QAAQ,CAAC,OAAD,CAArB;AACA,QAAMqE,OAAO,GAAGrE,QAAQ,CAAC,UAAD,CAAxB;AAEA,QAAMsE,UAAU,GAAG9B,IAAI,CAAC/C,KAAxB;AACA,QAAM8E,EAAE,GAAG5H,GAAG,CAACc,aAAJ,CAAkB,IAAlB,CAAX;AACA8G,IAAAA,EAAE,CAACnF,SAAH,GAAekF,UAAf;AACAC,IAAAA,EAAE,CAACjB,YAAH,GAAkB/E,OAAlB;AAEA,QAAIiG,IAAI,GAAG,KAAX;;AACA,SAAK,IAAItB,GAAG,GAAGxF,YAAY,CAAC0F,UAA5B,GAA0CF,GAAG,GAAGA,GAAG,CAACG,WAApD,EAAiE;AAC/D,UAAI,CAACH,GAAL,EAAU;AACR;AACA;AACD;;AACD,UACGoB,UAAU,GAAGpB,GAAG,CAAC9D,SAAjB,IAA8B9B,WAA/B,IACCgH,UAAU,GAAGpB,GAAG,CAAC9D,SAAjB,IAA8B,CAAC9B,WAFlC,EAGE;AACAI,QAAAA,YAAY,CAAC+G,YAAb,CAA0BF,EAA1B,EAA8BrB,GAA9B;AACAsB,QAAAA,IAAI,GAAG,IAAP;AACA;AACD;AACF;;AACD,QAAI,CAACA,IAAL,EAAW;AACT9G,MAAAA,YAAY,CAACe,WAAb,CAAyB8F,EAAzB;AACD;;AAED,QAAMjC,GAAG,GAAG3F,GAAG,CAACc,aAAJ,CAAkB,IAAlB,CAAZ;AACA8G,IAAAA,EAAE,CAAC9F,WAAH,CAAe6D,GAAf;AACAhC,IAAAA,cAAc,CAACgC,GAAD,EAAMC,OAAN,EAAerG,EAAE,CAACO,OAAH,CAAWiI,SAAX,CAAqBJ,UAArB,CAAf,EAAiD/F,OAAjD,CAAd;AAEA,QAAMoG,GAAG,GAAGhI,GAAG,CAACc,aAAJ,CAAkB,IAAlB,CAAZ;AACA8G,IAAAA,EAAE,CAAC9F,WAAH,CAAekG,GAAf;AACA,QAAMnG,GAAG,GAAG7B,GAAG,CAACc,aAAJ,CAAkB,GAAlB,CAAZ;AACAe,IAAAA,GAAG,CAACN,YAAJ,CACE,OADF,EAEEX,gBAAgB,IACb6G,KAAK,GAAG,4BAAH,GAAkC,2BAD1B,CAFlB;AAKAO,IAAAA,GAAG,CAAClG,WAAJ,CAAgBD,GAAhB;AACAA,IAAAA,GAAG,CAACH,WAAJ,GAAkBgG,OAAO,CAAC5E,KAA1B;AAEA,QAAMmF,GAAG,GAAGjI,GAAG,CAACc,aAAJ,CAAkB,IAAlB,CAAZ;AACA8G,IAAAA,EAAE,CAAC9F,WAAH,CAAemG,GAAf;AAEA,QAAMC,SAAS,GAAGlI,GAAG,CAACc,aAAJ,CAAkB,QAAlB,CAAlB;AACAmH,IAAAA,GAAG,CAACnG,WAAJ,CAAgBoG,SAAhB;AACAA,IAAAA,SAAS,CAACxG,WAAV,GAAwB,GAAxB;AAEAkG,IAAAA,EAAE,CAACrG,YAAH,CAAgB,OAAhB,EAAyB,cAAzB,EApD+C,CAoDN;;AACzC2G,IAAAA,SAAS,CAAC3G,YAAV,CAAuB,OAAvB,EAAgC,kBAAhC;AACA2G,IAAAA,SAAS,CAAC3G,YAAV,CAAuB,OAAvB,EAAgC,aAAhC;AACA2G,IAAAA,SAAS,CAAC1G,gBAAV,CACE,OADF,EAEE,UAAU2G,MAAV,EAAkB;AAChBF,MAAAA,GAAG,CAACf,WAAJ,CAAgBgB,SAAhB,EADgB,CACW;;AAC3B,UAAME,YAAY,GAAGpI,GAAG,CAACc,aAAJ,CAAkB,QAAlB,CAArB;AACAsH,MAAAA,YAAY,CAAC1G,WAAb,GAA2B,QAA3B;AACAuG,MAAAA,GAAG,CAACnG,WAAJ,CAAgBsG,YAAhB,EAA8B5G,gBAA9B,CACE,OADF,EAEE,UAAU2G,MAAV,EAAkB;AAChBF,QAAAA,GAAG,CAACf,WAAJ,CAAgBmB,UAAhB;AACAJ,QAAAA,GAAG,CAACf,WAAJ,CAAgBkB,YAAhB;AACAH,QAAAA,GAAG,CAACnG,WAAJ,CAAgBoG,SAAhB;AACD,OANH,EAOE,KAPF;AASA,UAAMG,UAAU,GAAGrI,GAAG,CAACc,aAAJ,CAAkB,QAAlB,CAAnB;AACAuH,MAAAA,UAAU,CAAC3G,WAAX,GAAyB,gBAAzB;AACAuG,MAAAA,GAAG,CAACnG,WAAJ,CAAgBuG,UAAhB,EAA4B7G,gBAA5B,CACE,OADF,EAEE,UAAU2G,MAAV,EAAkB;AAAE;AAClBF,QAAAA,GAAG,CAACf,WAAJ,CAAgBmB,UAAhB;AACAJ,QAAAA,GAAG,CAACf,WAAJ,CAAgBkB,YAAhB,EAFgB,CAGhB;;AACA,YAAIpH,EAAE,CAAC8B,KAAH,KAAazC,kBAAMoF,GAAN,CAAU7D,OAAV,EAAmBnC,EAAE,CAAC6F,IAAH,CAAQ,OAAR,CAAnB,EAAqCxC,KAAtD,EAA6D;AAC3D,4BAAgBD,SAAS,EAAzB;AAAA,cAAQG,GAAR,eAAQA,GAAR,CAD2D,CAC/B;;;AAC5B/B,UAAAA,OAAO,CAACuC,MAAR,CAAe,EAAf,EAAmBR,GAAnB;AACD;AACF,OAVH,EAWE,KAXF;AAaD,KA9BH,EA+BE,KA/BF;AAiCD,GAxFD,CApU+D,CA8Z/D;;;AAEAjC,EAAAA,YAAY,GAAGf,GAAG,CAACc,aAAJ,CAAkB,OAAlB,CAAf;AACAC,EAAAA,YAAY,CAAC0G,KAAb,GAAqB,KAArB;AACA5G,EAAAA,GAAG,CAACiB,WAAJ,CAAgBf,YAAhB;AACAA,EAAAA,YAAY,CAACQ,YAAb,CAA0B,OAA1B,EAAmC,cAAnC,EAna+D,CAmaZ;;AAEnD,MAAMqG,EAAE,GAAGxF,cAAc,EAAzB;;AACA,MAAIzB,WAAJ,EAAiB;AACfI,IAAAA,YAAY,CAAC+G,YAAb,CAA0BF,EAA1B,EAA8B7G,YAAY,CAAC0F,UAA3C,EADe,CACwC;AACxD,GAFD,MAEO;AACL1F,IAAAA,YAAY,CAACe,WAAb,CAAyB8F,EAAzB,EADK,CACwB;AAC9B;;AAED,MAAIU,KAAJ,CA5a+D,CA6a/D;;AACA,MAAIlI,OAAO,CAACkI,KAAZ,EAAmB;AACjBA,IAAAA,KAAK,GAAGlI,OAAO,CAACkI,KAAhB;AACD,GAFD,MAEO;AACLA,IAAAA,KAAK,GAAG,IAAI9H,IAAI,CAAC+H,KAAT,CAAe,UAAf,CAAR;AACA,QAAMC,CAAC,GAAG,EAAV,CAFK,CAEQ;;AACb,QAAMC,EAAE,GAAG,CAAC,KAAD,EAAQ,MAAR,EAAgB,SAAhB,EAA2B,SAA3B,CAAX;AACAA,IAAAA,EAAE,CAAC1B,OAAH,CAAW,UAAU2B,CAAV,EAAa;AACtBJ,MAAAA,KAAK,CAACK,IAAN,CAAW5D,IAAX,CAAiByD,CAAC,CAACE,CAAD,CAAD,GAAOlI,IAAI,CAACoI,QAAL,CAAcF,CAAd,CAAxB;AACD,KAFD;AAGAJ,IAAAA,KAAK,CAACO,GAAN,CAAUC,GAAV,CAAc5I,OAAd,EAAuBK,EAAE,CAAC,SAAD,CAAzB,EAAsCiI,CAAC,CAACrB,GAAxC;AACAmB,IAAAA,KAAK,CAACO,GAAN,CAAUC,GAAV,CAAcN,CAAC,CAACrB,GAAhB,EAAqB1H,EAAE,CAACsJ,GAAH,CAAO,SAAP,CAArB,EAAwCP,CAAC,CAAC3C,IAA1C;AACAyC,IAAAA,KAAK,CAACO,GAAN,CAAUC,GAAV,CAAcN,CAAC,CAACrB,GAAhB,EAAqB1H,EAAE,CAAC6F,IAAH,CAAQ,OAAR,CAArB,EAAuCkD,CAAC,CAAC5C,OAAzC;AACA0C,IAAAA,KAAK,CAACO,GAAN,CAAUC,GAAV,CAAcN,CAAC,CAACrB,GAAhB,EAAqB1H,EAAE,CAAC4F,IAAH,CAAQ,SAAR,CAArB,EAAyCmD,CAAC,CAACd,OAA3C;AACD;;AAED,WAASsB,SAAT,GAAsB;AACpBjI,IAAAA,YAAY,CAAC0G,KAAb,GAAqB,IAArB,CADoB,CACM;AAC3B;;AACDpH,oBAAMiI,KAAN,CAAYA,KAAZ,EAAmB/E,aAAnB,EAAkC0C,SAAlC,EAA6C+C,SAA7C;;AACAnI,EAAAA,GAAG,CAACoI,OAAJ,GAAc,YAAY;AACxB7C,IAAAA,YAAY,CAAClG,OAAD,EAAUa,YAAV,CAAZ;AACD,GAFD,CAjc+D,CAoc/D;;;AACA,SAAOF,GAAP;AACD","sourcesContent":["/**\n * Contains the [[thread]] function\n * @packageDocumentation\n */\n\nimport { icons } from '../iconBase'\nimport { store } from 'solid-logic'\nimport { media } from '../media/index'\nimport * as ns from '../ns'\nimport * as login from '../login/login'\nimport * as pad from '../pad'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport * as style from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\n\nconst UI = { icons, ns, media, pad, style, utils, widgets }\n\n/**\n * HTML component for a chat thread\n */\nexport function thread (dom, kb, subject, messageStore, options) {\n kb = kb || store\n messageStore = messageStore.doc() // No hash\n const ns = UI.ns\n const WF = $rdf.Namespace('http://www.w3.org/2005/01/wf/flow#')\n const DCT = $rdf.Namespace('http://purl.org/dc/terms/')\n\n options = options || {}\n\n const newestFirst = !!options.newestFirst\n\n const messageBodyStyle =\n 'white-space: pre-wrap; width: 90%; font-size:100%; border: 0.07em solid #eee; padding: .2em 0.5em; margin: 0.1em 1em 0.1em 1em;'\n // 'font-size: 100%; margin: 0.1em 1em 0.1em 1em; background-color: white; white-space: pre-wrap; padding: 0.1em;'\n\n const div = dom.createElement('div')\n // eslint-disable-next-line prefer-const\n let messageTable // Shared by initial build and addMessageFromBindings\n\n let me\n\n const updater = store.updater\n\n const anchor = function (text, term) {\n // If there is no link return an element anyway\n const a = dom.createElement('a')\n if (term && term.uri) {\n a.setAttribute('href', term.uri)\n a.addEventListener('click', UI.widgets.openHrefInOutlineMode, true)\n a.setAttribute('style', 'color: #3B5998; text-decoration: none; ') // font-weight: bold\n }\n a.textContent = text\n return a\n }\n\n const mention = function mention (message, style) {\n const pre = dom.createElement('pre')\n pre.setAttribute('style', style || 'color: grey')\n div.appendChild(pre)\n pre.appendChild(dom.createTextNode(message))\n return pre\n }\n\n const announce = {\n log: function (message) {\n mention(message, 'color: #111;')\n },\n warn: function (message) {\n mention(message, 'color: #880;')\n },\n error: function (message) {\n mention(message, 'color: #800;')\n }\n }\n\n /**\n * Form for a new message\n */\n const newMessageForm = function () {\n const form = dom.createElement('tr')\n const lhs = dom.createElement('td')\n const middle = dom.createElement('td')\n const rhs = dom.createElement('td')\n form.appendChild(lhs)\n form.appendChild(middle)\n form.appendChild(rhs)\n form.AJAR_date = '9999-01-01T00:00:00Z' // ISO format for field sort\n\n const sendMessage = function () {\n // titlefield.setAttribute('class','pendingedit')\n // titlefield.disabled = true\n field.setAttribute('class', 'pendingedit')\n field.disabled = true\n const { message, dateStamp, sts } = appendMsg(field.value)\n\n const sendComplete = function (uri, success, body) {\n if (!success) {\n form.appendChild(\n UI.widgets.errorMessageBlock(dom, 'Error writing message: ' + body)\n )\n } else {\n const bindings = {\n '?msg': message,\n '?content': store.literal(field.value),\n '?date': dateStamp,\n '?creator': me\n }\n renderMessage(bindings, false) // not green\n\n field.value = '' // clear from out for reuse\n field.setAttribute('class', '')\n field.disabled = false\n }\n }\n updater.update([], sts, sendComplete)\n }\n form.appendChild(dom.createElement('br'))\n\n let field, sendButton\n const turnOnInput = function () {\n creatorAndDate(lhs, me, '', null)\n\n field = dom.createElement('textarea')\n middle.innerHTML = ''\n middle.appendChild(field)\n field.rows = 3\n // field.cols = 40\n field.setAttribute('style', messageBodyStyle + 'background-color: #eef;')\n\n field.addEventListener(\n 'keyup',\n function (e) {\n // User preference?\n if (e.keyCode === 13) {\n if (!e.altKey) {\n // Alt-Enter just adds a new line\n sendMessage()\n }\n }\n },\n false\n )\n\n rhs.innerHTML = ''\n sendButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + 'noun_383448.svg',\n 'Send'\n )\n sendButton.setAttribute('style', UI.style.buttonStyle + 'float: right;')\n sendButton.addEventListener('click', sendMessage, false)\n rhs.appendChild(sendButton)\n }\n\n const context = { div: middle, dom: dom }\n login.ensureLoggedIn(context).then(context => {\n me = context.me\n turnOnInput()\n })\n\n return form\n }\n\n /* const sendMessage = function (oldMsg, options) { // alain\n // titlefield.setAttribute('class','pendingedit')\n // titlefield.disabled = true\n field.setAttribute('class', 'pendingedit')\n field.disabled = true\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = $rdf.term(now)\n // http://www.w3schools.com/jsref/jsref_obj_date.asp\n const message = store.sym(messageStore.uri + '#' + 'Msg' + timestamp)\n\n if (options === 'edit' || options === 'delete') {\n sts.push(\n new $rdf.Statement(mostRecentVersion(oldMsg), DCT('isReplacedBy'), message, messageStore)\n )\n } else {\n sts.push(\n new $rdf.Statement(subject, ns.wf('message'), message, messageStore)\n )\n }\n // sts.push(new $rdf.Statement(message, ns.dc('title'), store.literal(titlefield.value), messageStore))\n const msgBody = options !== 'delete' ? field.value : `message deleted\\nby ${nick(me)}`\n sts.push(\n new $rdf.Statement(\n message,\n ns.sioc('content'),\n store.literal(msgBody),\n messageStore\n )\n )\n sts.push(\n new $rdf.Statement(message, DCT('created'), dateStamp, messageStore)\n )\n if (me) {\n sts.push(\n new $rdf.Statement(message, ns.foaf('maker'), me, messageStore)\n )\n }\n\n const sendComplete = function (uri, success, body) {\n if (!success) {\n form.appendChild(\n UI.widgets.errorMessageBlock(dom, 'Error writing message: ' + body)\n )\n } else {\n const bindings = {\n '?msg': message,\n '?content': store.literal(field.value),\n '?date': dateStamp,\n '?creator': me\n }\n renderMessage(bindings, false) // not green\n\n field.value = '' // clear from out for reuse\n field.setAttribute('class', '')\n field.disabled = false\n }\n }\n updater.update([], sts, sendComplete)\n } */\n\n const appendMsg = function (fieldValue, oldMsg = {}, options = '') { // alain\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = $rdf.term(now)\n // http://www.w3schools.com/jsref/jsref_obj_date.asp\n const message = store.sym(messageStore.uri + '#' + 'Msg' + timestamp)\n\n if (options === 'edit' || options === 'delete') {\n sts.push(\n new $rdf.Statement(mostRecentVersion(oldMsg), DCT('isReplacedBy'), message, messageStore)\n )\n } else {\n sts.push(\n new $rdf.Statement(subject, ns.wf('message'), message, messageStore)\n )\n }\n // sts.push(new $rdf.Statement(message, ns.dc('title'), store.literal(titlefield.value), messageStore))\n const msgBody = options !== 'delete' ? fieldValue : `message deleted\\nby ${nick(me)}`\n sts.push(\n new $rdf.Statement(\n message,\n ns.sioc('content'),\n store.literal(msgBody),\n messageStore\n )\n )\n sts.push(\n new $rdf.Statement(message, DCT('created'), dateStamp, messageStore)\n )\n if (me) {\n sts.push(\n new $rdf.Statement(message, ns.foaf('maker'), me, messageStore)\n )\n }\n return { message, dateStamp, sts }\n }\n\n function nick (person) {\n const s = store.any(person, UI.ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + utils.label(person)\n }\n\n function creatorAndDate (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(nick(creator), creator))\n if (creator.uri) {\n store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nick(creator)\n })\n }\n td1.appendChild(dom.createElement('br'))\n td1.appendChild(anchor(date, message))\n }\n\n // ///////////////////////////////////////////////////////////////////////\n\n function syncMessages (about, messageTable) {\n const displayed = {}\n let ele, ele2\n for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {\n if (ele.AJAR_subject) {\n displayed[ele.AJAR_subject.uri] = true\n }\n }\n const messages = store.each(about, ns.wf('message'))\n const stored = {}\n messages.forEach(function (m) {\n stored[m.uri] = true\n if (!displayed[m.uri]) {\n addMessage(m)\n }\n })\n\n // eslint-disable-next-line space-in-parens\n for (ele = messageTable.firstChild; ele; ) {\n ele2 = ele.nextSibling\n if (ele.AJAR_subject && !stored[ele.AJAR_subject.uri]) {\n messageTable.removeChild(ele)\n }\n ele = ele2\n }\n }\n\n const mostRecentVersion = function (message) {\n let msg = message\n // const listMsg = []\n while (msg) {\n // listMsg.push(msg)\n msg = store.statementsMatching(message, DCT('isReplacedBy'))\n }\n return msg\n }\n\n const _deleteMessage = async function (message) { // alain: must delete message and all linked with isReplacedBy\n // alain: check that me is not the author and ask for confirmation.\n const deletions = await store.connectedStatements(message, messageStore)\n updater.update(deletions, [], function (uri, ok, body) {\n if (!ok) {\n announce.error('Cant delete messages:' + body)\n } else {\n syncMessages(subject, messageTable)\n }\n })\n }\n\n const addMessage = function (message) {\n const bindings = {\n '?msg': message,\n '?creator': store.any(message, ns.foaf('maker')),\n '?date': store.any(message, DCT('created')),\n '?content': store.any(message, ns.sioc('content'))\n }\n renderMessage(bindings, true) // fresh from elsewhere\n }\n\n const renderMessage = function (bindings, fresh) {\n const creator = bindings['?creator']\n const message = bindings['?msg']\n const date = bindings['?date']\n const content = bindings['?content']\n\n const dateString = date.value\n const tr = dom.createElement('tr')\n tr.AJAR_date = dateString\n tr.AJAR_subject = message\n\n let done = false\n for (let ele = messageTable.firstChild; ; ele = ele.nextSibling) {\n if (!ele) {\n // empty\n break\n }\n if (\n (dateString > ele.AJAR_date && newestFirst) ||\n (dateString < ele.AJAR_date && !newestFirst)\n ) {\n messageTable.insertBefore(tr, ele)\n done = true\n break\n }\n }\n if (!done) {\n messageTable.appendChild(tr)\n }\n\n const td1 = dom.createElement('td')\n tr.appendChild(td1)\n creatorAndDate(td1, creator, UI.widgets.shortDate(dateString), message)\n\n const td2 = dom.createElement('td')\n tr.appendChild(td2)\n const pre = dom.createElement('p')\n pre.setAttribute(\n 'style',\n messageBodyStyle +\n (fresh ? 'background-color: #e8ffe8;' : 'background-color: #white;')\n )\n td2.appendChild(pre)\n pre.textContent = content.value\n\n const td3 = dom.createElement('td')\n tr.appendChild(td3)\n\n const delButton = dom.createElement('button')\n td3.appendChild(delButton)\n delButton.textContent = '-'\n\n tr.setAttribute('class', 'hoverControl') // See tabbedtab.css (sigh global CSS)\n delButton.setAttribute('class', 'hoverControlHide')\n delButton.setAttribute('style', 'color: red;')\n delButton.addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(delButton) // Ask -- are you sure?\n const cancelButton = dom.createElement('button')\n cancelButton.textContent = 'cancel'\n td3.appendChild(cancelButton).addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(sureButton)\n td3.removeChild(cancelButton)\n td3.appendChild(delButton)\n },\n false\n )\n const sureButton = dom.createElement('button')\n sureButton.textContent = 'Delete message'\n td3.appendChild(sureButton).addEventListener(\n 'click',\n function (_event) { // alain test for delete or edit depending on me = maker\n td3.removeChild(sureButton)\n td3.removeChild(cancelButton)\n // deleteMessage(message) // alain or sendMessage(message, 'delete' or 'edit') //alain\n if (me.value === store.any(message, ns.foaf('maker')).value) {\n const { sts } = appendMsg() // alain\n updater.update([], sts)\n }\n },\n false\n )\n },\n false\n )\n }\n\n // Messages with date, author etc\n\n messageTable = dom.createElement('table')\n messageTable.fresh = false\n div.appendChild(messageTable)\n messageTable.setAttribute('style', 'width: 100%;') // fill that div!\n\n const tr = newMessageForm()\n if (newestFirst) {\n messageTable.insertBefore(tr, messageTable.firstChild) // If newestFirst\n } else {\n messageTable.appendChild(tr) // not newestFirst\n }\n\n let query\n // Do this with a live query to pull in messages from web\n if (options.query) {\n query = options.query\n } else {\n query = new $rdf.Query('Messages')\n const v = {} // semicolon needed\n const vs = ['msg', 'date', 'creator', 'content']\n vs.forEach(function (x) {\n query.vars.push((v[x] = $rdf.variable(x)))\n })\n query.pat.add(subject, WF('message'), v.msg)\n query.pat.add(v.msg, ns.dct('created'), v.date)\n query.pat.add(v.msg, ns.foaf('maker'), v.creator)\n query.pat.add(v.msg, ns.sioc('content'), v.content)\n }\n\n function doneQuery () {\n messageTable.fresh = true // any new are fresh and so will be greenish\n }\n store.query(query, renderMessage, undefined, doneQuery)\n div.refresh = function () {\n syncMessages(subject, messageTable)\n }\n // syncMessages(subject, messageTable) // no the query will do this async\n return div\n}\n"],"file":"thread.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/chat/thread.js"],"names":["UI","icons","ns","media","pad","style","utils","widgets","thread","dom","kb","subject","messageStore","options","store","doc","WF","$rdf","Namespace","DCT","newestFirst","messageBodyStyle","div","createElement","messageTable","me","updater","anchor","text","term","a","uri","setAttribute","addEventListener","openHrefInOutlineMode","textContent","mention","message","pre","appendChild","createTextNode","announce","log","warn","error","newMessageForm","form","lhs","middle","rhs","AJAR_date","sendMessage","field","disabled","appendMsg","value","dateStamp","sts","sendComplete","success","body","errorMessageBlock","bindings","literal","renderMessage","update","sendButton","turnOnInput","creatorAndDate","innerHTML","rows","e","keyCode","altKey","button","iconBase","buttonStyle","context","login","ensureLoggedIn","then","fieldValue","oldMsg","now","Date","timestamp","getTime","sym","push","Statement","mostRecentVersion","wf","msgBody","nick","sioc","foaf","person","s","any","label","td1","creator","date","nickAnchor","fetcher","nowOrWhenFetched","undefined","_ok","_body","syncMessages","about","displayed","ele","ele2","firstChild","nextSibling","AJAR_subject","messages","each","stored","forEach","m","addMessage","removeChild","msg","statementsMatching","_deleteMessage","connectedStatements","deletions","ok","fresh","content","dateString","tr","done","insertBefore","shortDate","td2","td3","delButton","_event","cancelButton","sureButton","query","Query","v","vs","x","vars","variable","pat","add","dct","doneQuery","refresh"],"mappings":"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","sourcesContent":["/**\n * Contains the [[thread]] function\n * @packageDocumentation\n */\n\nimport { icons } from '../iconBase'\nimport { store } from 'solid-logic'\nimport { media } from '../media/index'\nimport * as ns from '../ns'\nimport * as login from '../login/login'\nimport * as pad from '../pad'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport * as style from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\n\nconst UI = { icons, ns, media, pad, style, utils, widgets }\n\n/**\n * HTML component for a chat thread\n */\nexport function thread (dom, kb, subject, messageStore, options) {\n kb = kb || store\n messageStore = messageStore.doc() // No hash\n const ns = UI.ns\n const WF = $rdf.Namespace('http://www.w3.org/2005/01/wf/flow#')\n const DCT = $rdf.Namespace('http://purl.org/dc/terms/')\n\n options = options || {}\n\n const newestFirst = !!options.newestFirst\n\n const messageBodyStyle =\n 'white-space: pre-wrap; width: 90%; font-size:100%; border: 0.07em solid #eee; padding: .2em 0.5em; margin: 0.1em 1em 0.1em 1em;'\n // 'font-size: 100%; margin: 0.1em 1em 0.1em 1em; background-color: white; white-space: pre-wrap; padding: 0.1em;'\n\n const div = dom.createElement('div')\n // eslint-disable-next-line prefer-const\n let messageTable // Shared by initial build and addMessageFromBindings\n\n let me\n\n const updater = store.updater\n\n const anchor = function (text, term) {\n // If there is no link return an element anyway\n const a = dom.createElement('a')\n if (term && term.uri) {\n a.setAttribute('href', term.uri)\n a.addEventListener('click', UI.widgets.openHrefInOutlineMode, true)\n a.setAttribute('style', 'color: #3B5998; text-decoration: none; ') // font-weight: bold\n }\n a.textContent = text\n return a\n }\n\n const mention = function mention (message, style) {\n const pre = dom.createElement('pre')\n pre.setAttribute('style', style || 'color: grey')\n div.appendChild(pre)\n pre.appendChild(dom.createTextNode(message))\n return pre\n }\n\n const announce = {\n log: function (message) {\n mention(message, 'color: #111;')\n },\n warn: function (message) {\n mention(message, 'color: #880;')\n },\n error: function (message) {\n mention(message, 'color: #800;')\n }\n }\n\n /**\n * Form for a new message\n */\n const newMessageForm = function () {\n const form = dom.createElement('tr')\n const lhs = dom.createElement('td')\n const middle = dom.createElement('td')\n const rhs = dom.createElement('td')\n form.appendChild(lhs)\n form.appendChild(middle)\n form.appendChild(rhs)\n form.AJAR_date = '9999-01-01T00:00:00Z' // ISO format for field sort\n\n const sendMessage = function () {\n // titlefield.setAttribute('class','pendingedit')\n // titlefield.disabled = true\n field.setAttribute('class', 'pendingedit')\n field.disabled = true\n const { message, dateStamp, sts } = appendMsg(field.value)\n\n const sendComplete = function (uri, success, body) {\n if (!success) {\n form.appendChild(\n UI.widgets.errorMessageBlock(dom, 'Error writing message: ' + body)\n )\n } else {\n const bindings = {\n '?msg': message,\n '?content': store.literal(field.value),\n '?date': dateStamp,\n '?creator': me\n }\n renderMessage(bindings, false) // not green\n\n field.value = '' // clear from out for reuse\n field.setAttribute('class', '')\n field.disabled = false\n }\n }\n updater.update([], sts, sendComplete)\n }\n form.appendChild(dom.createElement('br'))\n\n let field, sendButton\n const turnOnInput = function () {\n creatorAndDate(lhs, me, '', null)\n\n field = dom.createElement('textarea')\n middle.innerHTML = ''\n middle.appendChild(field)\n field.rows = 3\n // field.cols = 40\n field.setAttribute('style', messageBodyStyle + 'background-color: #eef;')\n\n field.addEventListener(\n 'keyup',\n function (e) {\n // User preference?\n if (e.keyCode === 13) {\n if (!e.altKey) {\n // Alt-Enter just adds a new line\n sendMessage()\n }\n }\n },\n false\n )\n\n rhs.innerHTML = ''\n sendButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + 'noun_383448.svg',\n 'Send'\n )\n sendButton.setAttribute('style', UI.style.buttonStyle + 'float: right;')\n sendButton.addEventListener('click', sendMessage, false)\n rhs.appendChild(sendButton)\n }\n\n const context = { div: middle, dom }\n login.ensureLoggedIn(context).then(context => {\n me = context.me\n turnOnInput()\n })\n\n return form\n }\n\n /* const sendMessage = function (oldMsg, options) { // alain\n // titlefield.setAttribute('class','pendingedit')\n // titlefield.disabled = true\n field.setAttribute('class', 'pendingedit')\n field.disabled = true\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = $rdf.term(now)\n // http://www.w3schools.com/jsref/jsref_obj_date.asp\n const message = store.sym(messageStore.uri + '#' + 'Msg' + timestamp)\n\n if (options === 'edit' || options === 'delete') {\n sts.push(\n new $rdf.Statement(mostRecentVersion(oldMsg), DCT('isReplacedBy'), message, messageStore)\n )\n } else {\n sts.push(\n new $rdf.Statement(subject, ns.wf('message'), message, messageStore)\n )\n }\n // sts.push(new $rdf.Statement(message, ns.dc('title'), store.literal(titlefield.value), messageStore))\n const msgBody = options !== 'delete' ? field.value : `message deleted\\nby ${nick(me)}`\n sts.push(\n new $rdf.Statement(\n message,\n ns.sioc('content'),\n store.literal(msgBody),\n messageStore\n )\n )\n sts.push(\n new $rdf.Statement(message, DCT('created'), dateStamp, messageStore)\n )\n if (me) {\n sts.push(\n new $rdf.Statement(message, ns.foaf('maker'), me, messageStore)\n )\n }\n\n const sendComplete = function (uri, success, body) {\n if (!success) {\n form.appendChild(\n UI.widgets.errorMessageBlock(dom, 'Error writing message: ' + body)\n )\n } else {\n const bindings = {\n '?msg': message,\n '?content': store.literal(field.value),\n '?date': dateStamp,\n '?creator': me\n }\n renderMessage(bindings, false) // not green\n\n field.value = '' // clear from out for reuse\n field.setAttribute('class', '')\n field.disabled = false\n }\n }\n updater.update([], sts, sendComplete)\n } */\n\n const appendMsg = function (fieldValue, oldMsg = {}, options = '') { // alain\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = $rdf.term(now)\n // http://www.w3schools.com/jsref/jsref_obj_date.asp\n const message = store.sym(messageStore.uri + '#' + 'Msg' + timestamp)\n\n if (options === 'edit' || options === 'delete') {\n sts.push(\n new $rdf.Statement(mostRecentVersion(oldMsg), DCT('isReplacedBy'), message, messageStore)\n )\n } else {\n sts.push(\n new $rdf.Statement(subject, ns.wf('message'), message, messageStore)\n )\n }\n // sts.push(new $rdf.Statement(message, ns.dc('title'), store.literal(titlefield.value), messageStore))\n const msgBody = options !== 'delete' ? fieldValue : `message deleted\\nby ${nick(me)}`\n sts.push(\n new $rdf.Statement(\n message,\n ns.sioc('content'),\n store.literal(msgBody),\n messageStore\n )\n )\n sts.push(\n new $rdf.Statement(message, DCT('created'), dateStamp, messageStore)\n )\n if (me) {\n sts.push(\n new $rdf.Statement(message, ns.foaf('maker'), me, messageStore)\n )\n }\n return { message, dateStamp, sts }\n }\n\n function nick (person) {\n const s = store.any(person, UI.ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + utils.label(person)\n }\n\n function creatorAndDate (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(nick(creator), creator))\n if (creator.uri) {\n store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nick(creator)\n })\n }\n td1.appendChild(dom.createElement('br'))\n td1.appendChild(anchor(date, message))\n }\n\n // ///////////////////////////////////////////////////////////////////////\n\n function syncMessages (about, messageTable) {\n const displayed = {}\n let ele, ele2\n for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {\n if (ele.AJAR_subject) {\n displayed[ele.AJAR_subject.uri] = true\n }\n }\n const messages = store.each(about, ns.wf('message'))\n const stored = {}\n messages.forEach(function (m) {\n stored[m.uri] = true\n if (!displayed[m.uri]) {\n addMessage(m)\n }\n })\n\n // eslint-disable-next-line space-in-parens\n for (ele = messageTable.firstChild; ele; ) {\n ele2 = ele.nextSibling\n if (ele.AJAR_subject && !stored[ele.AJAR_subject.uri]) {\n messageTable.removeChild(ele)\n }\n ele = ele2\n }\n }\n\n const mostRecentVersion = function (message) {\n let msg = message\n // const listMsg = []\n while (msg) {\n // listMsg.push(msg)\n msg = store.statementsMatching(message, DCT('isReplacedBy'))\n }\n return msg\n }\n\n const _deleteMessage = async function (message) { // alain: must delete message and all linked with isReplacedBy\n // alain: check that me is not the author and ask for confirmation.\n const deletions = await store.connectedStatements(message, messageStore)\n updater.update(deletions, [], function (uri, ok, body) {\n if (!ok) {\n announce.error('Cant delete messages:' + body)\n } else {\n syncMessages(subject, messageTable)\n }\n })\n }\n\n const addMessage = function (message) {\n const bindings = {\n '?msg': message,\n '?creator': store.any(message, ns.foaf('maker')),\n '?date': store.any(message, DCT('created')),\n '?content': store.any(message, ns.sioc('content'))\n }\n renderMessage(bindings, true) // fresh from elsewhere\n }\n\n const renderMessage = function (bindings, fresh) {\n const creator = bindings['?creator']\n const message = bindings['?msg']\n const date = bindings['?date']\n const content = bindings['?content']\n\n const dateString = date.value\n const tr = dom.createElement('tr')\n tr.AJAR_date = dateString\n tr.AJAR_subject = message\n\n let done = false\n for (let ele = messageTable.firstChild; ; ele = ele.nextSibling) {\n if (!ele) {\n // empty\n break\n }\n if (\n (dateString > ele.AJAR_date && newestFirst) ||\n (dateString < ele.AJAR_date && !newestFirst)\n ) {\n messageTable.insertBefore(tr, ele)\n done = true\n break\n }\n }\n if (!done) {\n messageTable.appendChild(tr)\n }\n\n const td1 = dom.createElement('td')\n tr.appendChild(td1)\n creatorAndDate(td1, creator, UI.widgets.shortDate(dateString), message)\n\n const td2 = dom.createElement('td')\n tr.appendChild(td2)\n const pre = dom.createElement('p')\n pre.setAttribute(\n 'style',\n messageBodyStyle +\n (fresh ? 'background-color: #e8ffe8;' : 'background-color: #white;')\n )\n td2.appendChild(pre)\n pre.textContent = content.value\n\n const td3 = dom.createElement('td')\n tr.appendChild(td3)\n\n const delButton = dom.createElement('button')\n td3.appendChild(delButton)\n delButton.textContent = '-'\n\n tr.setAttribute('class', 'hoverControl') // See tabbedtab.css (sigh global CSS)\n delButton.setAttribute('class', 'hoverControlHide')\n delButton.setAttribute('style', 'color: red;')\n delButton.addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(delButton) // Ask -- are you sure?\n const cancelButton = dom.createElement('button')\n cancelButton.textContent = 'cancel'\n td3.appendChild(cancelButton).addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(sureButton)\n td3.removeChild(cancelButton)\n td3.appendChild(delButton)\n },\n false\n )\n const sureButton = dom.createElement('button')\n sureButton.textContent = 'Delete message'\n td3.appendChild(sureButton).addEventListener(\n 'click',\n function (_event) { // alain test for delete or edit depending on me = maker\n td3.removeChild(sureButton)\n td3.removeChild(cancelButton)\n // deleteMessage(message) // alain or sendMessage(message, 'delete' or 'edit') //alain\n if (me.value === store.any(message, ns.foaf('maker')).value) {\n const { sts } = appendMsg() // alain\n updater.update([], sts)\n }\n },\n false\n )\n },\n false\n )\n }\n\n // Messages with date, author etc\n\n messageTable = dom.createElement('table')\n messageTable.fresh = false\n div.appendChild(messageTable)\n messageTable.setAttribute('style', 'width: 100%;') // fill that div!\n\n const tr = newMessageForm()\n if (newestFirst) {\n messageTable.insertBefore(tr, messageTable.firstChild) // If newestFirst\n } else {\n messageTable.appendChild(tr) // not newestFirst\n }\n\n let query\n // Do this with a live query to pull in messages from web\n if (options.query) {\n query = options.query\n } else {\n query = new $rdf.Query('Messages')\n const v = {} // semicolon needed\n const vs = ['msg', 'date', 'creator', 'content']\n vs.forEach(function (x) {\n query.vars.push((v[x] = $rdf.variable(x)))\n })\n query.pat.add(subject, WF('message'), v.msg)\n query.pat.add(v.msg, ns.dct('created'), v.date)\n query.pat.add(v.msg, ns.foaf('maker'), v.creator)\n query.pat.add(v.msg, ns.sioc('content'), v.content)\n }\n\n function doneQuery () {\n messageTable.fresh = true // any new are fresh and so will be greenish\n }\n store.query(query, renderMessage, undefined, doneQuery)\n div.refresh = function () {\n syncMessages(subject, messageTable)\n }\n // syncMessages(subject, messageTable) // no the query will do this async\n return div\n}\n"],"file":"thread.js"}
|
package/lib/create/create.d.ts
CHANGED
|
File without changes
|
|
File without changes
|
package/lib/create/create.js
CHANGED
|
File without changes
|