solid-ui 2.4.18 → 2.4.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/lib/acl/acl.d.ts.map +1 -1
- package/lib/acl/acl.js +2 -4
- package/lib/acl/acl.js.map +1 -1
- package/lib/acl/add-agent-buttons.d.ts.map +1 -1
- package/lib/acl/add-agent-buttons.js +5 -5
- package/lib/acl/add-agent-buttons.js.map +1 -1
- package/lib/chat/bookmarks.js +20 -22
- package/lib/chat/bookmarks.js.map +1 -1
- package/lib/chat/chatLogic.js +13 -15
- package/lib/chat/chatLogic.js.map +1 -1
- package/lib/chat/dateFolder.js +10 -10
- package/lib/chat/dateFolder.js.map +1 -1
- package/lib/chat/infinite.js +14 -16
- package/lib/chat/infinite.js.map +1 -1
- package/lib/chat/message.js +19 -23
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/messageTools.js +16 -21
- package/lib/chat/messageTools.js.map +1 -1
- package/lib/chat/thread.js +24 -24
- package/lib/chat/thread.js.map +1 -1
- package/lib/create/create.d.ts.map +1 -1
- package/lib/create/create.js +9 -9
- package/lib/create/create.js.map +1 -1
- package/lib/folders.js +2 -6
- package/lib/folders.js.map +1 -1
- package/lib/footer/index.js +4 -4
- package/lib/footer/index.js.map +1 -1
- package/lib/header/index.d.ts.map +1 -1
- package/lib/header/index.js +11 -8
- package/lib/header/index.js.map +1 -1
- package/lib/index.d.ts +4 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +30 -28
- package/lib/index.js.map +1 -1
- package/lib/login/login.d.ts +130 -0
- package/lib/login/login.d.ts.map +1 -0
- package/lib/login/login.js +1415 -0
- package/lib/login/login.js.map +1 -0
- package/lib/matrix/matrix.js +2 -2
- package/lib/matrix/matrix.js.map +1 -1
- package/lib/messageArea.js +9 -10
- package/lib/messageArea.js.map +1 -1
- package/lib/pad.js +2 -2
- package/lib/pad.js.map +1 -1
- package/lib/participation.d.ts.map +1 -1
- package/lib/participation.js +4 -5
- package/lib/participation.js.map +1 -1
- package/lib/preferences.js +8 -8
- package/lib/preferences.js.map +1 -1
- package/lib/{authn → signup}/config-default.js +0 -0
- package/lib/signup/config-default.js.map +1 -0
- package/lib/{authn → signup}/signup.js +0 -0
- package/lib/signup/signup.js.map +1 -0
- package/lib/table.js +2 -3
- package/lib/table.js.map +1 -1
- package/lib/tabs.js +3 -3
- package/lib/tabs.js.map +1 -1
- package/lib/utils/index.js +6 -6
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/label.js +4 -5
- package/lib/utils/label.js.map +1 -1
- package/lib/versionInfo.js +2 -2
- package/lib/versionInfo.js.map +1 -1
- package/lib/webpack-bundle.js +8230 -24429
- package/lib/webpack-bundle.js.map +1 -1
- package/lib/widgets/buttons.js +16 -16
- package/lib/widgets/buttons.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteBar.js +2 -2
- package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteField.js +2 -2
- package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompletePicker.js +2 -2
- package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
- package/lib/widgets/forms/autocomplete/language.d.ts.map +1 -1
- package/lib/widgets/forms/autocomplete/language.js +7 -10
- package/lib/widgets/forms/autocomplete/language.js.map +1 -1
- package/lib/widgets/forms/autocomplete/publicData.d.ts +1 -1
- package/lib/widgets/forms/autocomplete/publicData.d.ts.map +1 -1
- package/lib/widgets/forms/autocomplete/publicData.js +15 -16
- package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
- package/lib/widgets/forms/basic.d.ts +1 -1
- package/lib/widgets/forms/basic.d.ts.map +1 -1
- package/lib/widgets/forms/basic.js +2 -2
- package/lib/widgets/forms/basic.js.map +1 -1
- package/lib/widgets/forms/comment.d.ts +1 -1
- package/lib/widgets/forms/comment.js +3 -3
- package/lib/widgets/forms/comment.js.map +1 -1
- package/lib/widgets/forms/fieldFunction.js +2 -2
- package/lib/widgets/forms/fieldFunction.js.map +1 -1
- package/lib/widgets/forms/formStyle.js +3 -3
- package/lib/widgets/forms/formStyle.js.map +1 -1
- package/lib/widgets/forms.js +10 -10
- package/lib/widgets/forms.js.map +1 -1
- package/lib/widgets/peoplePicker.js +2 -2
- package/lib/widgets/peoplePicker.js.map +1 -1
- package/package.json +12 -4
- package/lib/authn/authSession.d.ts +0 -4
- package/lib/authn/authSession.d.ts.map +0 -1
- package/lib/authn/authSession.js +0 -25
- package/lib/authn/authSession.js.map +0 -1
- package/lib/authn/authn.d.ts +0 -193
- package/lib/authn/authn.d.ts.map +0 -1
- package/lib/authn/authn.js +0 -2238
- package/lib/authn/authn.js.map +0 -1
- package/lib/authn/config-default.js.map +0 -1
- package/lib/authn/index.d.ts +0 -35
- package/lib/authn/index.d.ts.map +0 -1
- package/lib/authn/index.js +0 -44
- package/lib/authn/index.js.map +0 -1
- package/lib/authn/signup.js.map +0 -1
- package/lib/authn/types.d.ts +0 -25
- package/lib/authn/types.d.ts.map +0 -1
- package/lib/authn/types.js +0 -6
- package/lib/authn/types.js.map +0 -1
- package/lib/logic.d.ts +0 -8
- package/lib/logic.d.ts.map +0 -1
- package/lib/logic.js +0 -79
- package/lib/logic.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/login/login.ts"],"names":["ensureLoggedIn","context","me","authn","currentUser","saveUser","Promise","resolve","checkUser","then","webId","debug","log","div","dom","box","loginStatusBox","webIdUri","appendChild","ensureLoadedPreferences","complain","message","statusArea","widgets","errorMessageBlock","preferencesFile","ensureLoadedProfile","solidLogicSingleton","loadPreferences","progressDisplay","parentNode","removeChild","UnauthorizedError","m2","CrossOriginForbiddenError","window","location","origin","preferencesFileError","SameOriginForbiddenError","warn","NotFoundError","confirm","Error","FetchError","status","publicProfile","logInContext","loadProfile","findAppInstances","theClass","isPublic","unique","arr","Array","from","Set","undefined","visibility","error","index","thisIndex","registrations","map","ix","store","each","ns","solid","reduce","acc","curr","concat","instances","reg","containers","length","load","e","utils","label","i","cont","getContainerMembers","value","uri","sym","registrationControl","instance","createElement","innerHTML","setAttribute","tbody","children","form","BlankNode","registrationStatements","getRegistrations","newThing","statements","buildCheckBoxForm","noun","msg","textContent","registrationList","options","_indexes","table","firstChild","sts","vs","forEach","statementsMatching","statement","type","holds","subject","why","inst","object","personTR","deleteFunction","_x","updater","update","ok","errorBody","getDefaultSignInButtonStyle","signInOrSignUpBox","setUserCallback","signInButtonStyle","buttonStyle","magicClassName","style","signInPopUpButton","authSession","onLogin","webIdURI","divs","getElementsByClassName","parent","addEventListener","offline","renderSignInPopup","signupButton","_event","signupMgr","Signup","signup","issuerPopup","body","issuerPopupBox","issuerPopupBoxTopMenu","issuerPopupBoxLabel","innerText","issuerPopupBoxCloseButton","remove","loginToIssuer","issuerUri","preLoginRedirectHash","URL","href","hash","localStorage","setItem","login","redirectUrl","oidcIssuer","issuerTextContainer","issuerTextInputContainer","issuerTextLabel","issuerTextInput","getItem","issuerTextGoButton","issuerButtonContainer","issuerBottonLabel","issuerInfo","issuerButton","name","listener","setIt","newidURI","refresh","logoutButtonHandler","oldMe","logout","alert","err","logoutButton","logoutLabel","nick","any","foaf","signOutButton","clearElement","trackSession","onLogout","issuer","wellKnownUri","pathname","fetch","toString","wellKnownResult","json","openidConfiguration","end_session_endpoint","credentials","reload","selectWorkspace","appDetails","callbackWS","appPathSegment","say","s","background","figureOutBase","ws","newBaseNode","space","newBaseString","split","slice","now","Date","getTime","displayOptions","makeNewWorkspace","row","cell","padding","encodeURI","askName","newBase","newWs","newData","id","w","storages","ldp","filter","file","includes","toLowerCase","p","commentStyle","baseField","textInputStyle","size","autocomplete","button","replace","x","rdf","col1","col2","col3","tr","comment","cellStyle","deselectedStyle","anyValue","ui","a","b","charCodeAt","bgcolor","target","rdfs","disabled","trLast","newAppInstance","callback","gotWS","base","getUserRoles","doc","filterAvailablePanes","panes","userRoles","pane","isMatchingAudience","audience","isMatch","audienceRole","find","role","equals"],"mappings":"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","sourcesContent":["/**\n * Signing in, signing up, profile and preferences reloading\n * Type index management\n *\n * Many functions in this module take a context object which\n * holds various RDF symbols, add to it, and return a promise of it.\n *\n * * `me` RDF symbol for the user's WebID\n * * `publicProfile` The user's public profile, iff loaded\n * * `preferencesFile` The user's personal preference file, iff loaded\n * * `index.public` The user's public type index file\n * * `index.private` The user's private type index file\n *\n * Not RDF symbols:\n * * `noun` A string in english for the type of thing -- like \"address book\"\n * * `instance` An array of nodes which are existing instances\n * * `containers` An array of nodes of containers of instances\n * * `div` A DOM element where UI can be displayed\n * * `statusArea` A DOM element (opt) progress stuff can be displayed, or error messages\n * @packageDocumentation\n */\nimport { PaneDefinition } from 'pane-registry'\nimport { BlankNode, IndexedFormula, NamedNode, st, Statement } from 'rdflib'\n// eslint-disable-next-line camelcase\nimport { Quad_Object } from 'rdflib/lib/tf-types'\nimport { AppDetails, AuthenticationContext, loadIndex, authn, authSession, CrossOriginForbiddenError, ensureTypeIndexes, FetchError, getSuggestedIssuers, NotFoundError, offlineTestID, SameOriginForbiddenError, solidLogicSingleton, UnauthorizedError } from 'solid-logic'\nimport * as debug from '../debug'\nimport { alert } from '../log'\nimport * as ns from '../ns.js'\nimport { Signup } from '../signup/signup.js'\nimport { buttonStyle, commentStyle, textInputStyle } from '../style'\nimport { utils } from '../utils/index'\nimport * as widgets from '../widgets'\n\n/**\n * Resolves with the logged in user's WebID\n *\n * @param context\n */\n// used to be logIn\nexport function ensureLoggedIn (context: AuthenticationContext): Promise<AuthenticationContext> {\n const me = authn.currentUser()\n if (me) {\n authn.saveUser(me, context)\n return Promise.resolve(context)\n }\n\n return new Promise(resolve => {\n authn.checkUser().then(webId => {\n // Already logged in?\n if (webId) {\n debug.log(`logIn: Already logged in as ${webId}`)\n return resolve(context)\n }\n if (!context.div || !context.dom) {\n return resolve(context)\n }\n const box = loginStatusBox(context.dom, webIdUri => {\n authn.saveUser(webIdUri, context)\n resolve(context) // always pass growing context\n })\n context.div.appendChild(box)\n })\n })\n}\n\n/**\n * Loads preference file\n * Do this after having done log in and load profile\n *\n * @private\n *\n * @param context\n */\n// used to be logInLoadPreferences\nexport async function ensureLoadedPreferences (context: AuthenticationContext): Promise<AuthenticationContext> {\n if (context.preferencesFile) return Promise.resolve(context) // already done\n\n const statusArea = context.statusArea || context.div || null\n let progressDisplay\n function complain (message) {\n message = `ensureLoadedPreferences: ${message}`\n if (statusArea) {\n // statusArea.innerHTML = ''\n statusArea.appendChild(\n widgets.errorMessageBlock(context.dom, message)\n )\n }\n debug.log(message)\n // reject(new Error(message))\n }\n try {\n context = await ensureLoadedProfile(context)\n\n // console.log('back in Solid UI after logInLoadProfile', context)\n const preferencesFile = await solidLogicSingleton.loadPreferences(context.me as NamedNode)\n if (progressDisplay) {\n progressDisplay.parentNode.removeChild(progressDisplay)\n }\n context.preferencesFile = preferencesFile\n } catch (err) {\n let m2: string\n if (err instanceof UnauthorizedError) {\n m2 = 'Ooops - you are not authenticated (properly logged in) to for me to read your preference file. Try loggin out and logging in?'\n alert(m2)\n } else if (err instanceof CrossOriginForbiddenError) {\n m2 = `Unauthorized: Assuming preference file blocked for origin ${window.location.origin}`\n context.preferencesFileError = m2\n return context\n } else if (err instanceof SameOriginForbiddenError) {\n m2 = 'You are not authorized to read your preference file. This may be because you are using an untrusted web app.'\n debug.warn(m2)\n } else if (err instanceof NotFoundError) {\n if (\n confirm(`You do not currently have a preference file. OK for me to create an empty one? ${(err as any).preferencesFile || ''}`)\n ) {\n // @@@ code me ... weird to have a name of the file but no file\n alert(`Sorry; I am not prepared to do this. Please create an empty file at ${(err as any).preferencesFile || '(?)'}`)\n complain(\n new Error('Sorry; no code yet to create a preference file at ')\n )\n } else {\n throw (\n new Error(`User declined to create a preference file at ${(err as any).preferencesFile || '(?)'}`)\n )\n }\n } else if (err instanceof FetchError) {\n m2 = `Strange: Error ${err.status} trying to read your preference file.${err.message}`\n alert(m2)\n } else {\n throw new Error(`(via loadPrefs) ${err}`)\n }\n }\n return context\n}\n\n/**\n * Logs the user in and loads their WebID profile document into the store\n *\n * @param context\n *\n * @returns Resolves with the context after login / fetch\n */\n// used to be logInLoadProfile\nexport async function ensureLoadedProfile (context: AuthenticationContext): Promise<AuthenticationContext> {\n if (context.publicProfile) {\n return context\n } // already done\n try {\n const logInContext = await ensureLoggedIn(context)\n if (!logInContext.me) {\n throw new Error('Could not log in')\n }\n context.publicProfile = await solidLogicSingleton.loadProfile(logInContext.me)\n } catch (err) {\n if (context.div && context.dom) {\n context.div.appendChild(\n widgets.errorMessageBlock(context.dom, err.message)\n )\n }\n throw new Error(`Can't log in: ${err}`)\n }\n return context\n}\n\n/**\n * Returns promise of context with arrays of symbols\n *\n * 2016-12-11 change to include forClass arc a la\n * https://github.com/solid/solid/blob/main/proposals/data-discovery.md\n */\nexport async function findAppInstances (\n context: AuthenticationContext,\n theClass: NamedNode,\n isPublic?: boolean\n): Promise<AuthenticationContext> {\n // console.log('findAppInstances', { context, theClass, isPublic })\n if (isPublic === undefined) {\n // Then both public and private\n // console.log('finding public app instance')\n await findAppInstances(context, theClass, true)\n // console.log('finding private app instance')\n await findAppInstances(context, theClass, false)\n // console.log('found public & private app instance', context)\n return context\n }\n\n // Loading preferences is more than loading profile\n try {\n // console.log('calling logInLoad', isPublic)\n await (isPublic\n ? ensureLoadedProfile(context)\n : ensureLoadedPreferences(context))\n // console.log('called logInLoad', isPublic)\n } catch (err) {\n widgets.complain(context, `loadIndex: login and load problem ${err}`)\n }\n // console.log('awaited LogInLoad!', context)\n const visibility = isPublic ? 'public' : 'private'\n try {\n await loadIndex(context, isPublic)\n } catch (err) {\n debug.error(err)\n }\n const index = context.index as { [key: string]: Array<NamedNode> }\n const thisIndex = index[visibility]\n const registrations = thisIndex\n .map(ix => solidLogicSingleton.store.each(undefined, ns.solid('forClass'), theClass, ix))\n .reduce((acc, curr) => acc.concat(curr), [])\n const instances = registrations\n .map(reg => solidLogicSingleton.store.each(reg as NamedNode, ns.solid('instance')))\n .reduce((acc, curr) => acc.concat(curr), [])\n const containers = registrations\n .map(reg => solidLogicSingleton.store.each(reg as NamedNode, ns.solid('instanceContainer')))\n .reduce((acc, curr) => acc.concat(curr), [])\n\n function unique (arr: NamedNode[]): NamedNode[] {\n return Array.from(new Set(arr))\n }\n context.instances = context.instances || []\n context.instances = unique(context.instances.concat(instances as NamedNode[]))\n\n context.containers = context.containers || []\n context.containers = unique(context.containers.concat(containers as NamedNode[]))\n if (!containers.length) {\n return context\n }\n // If the index gives containers, then look up all things within them\n try {\n await solidLogicSingleton.load(containers as NamedNode[])\n } catch (err) {\n const e = new Error(`[FAI] Unable to load containers${err}`)\n debug.log(e) // complain\n widgets.complain(context, `Error looking for ${utils.label(theClass)}: ${err}`)\n // but then ignore it\n // throw new Error(e)\n }\n for (let i = 0; i < containers.length; i++) {\n const cont = containers[i]\n context.instances = context.instances.concat(\n (await solidLogicSingleton.getContainerMembers(cont.value)).map(uri => solidLogicSingleton.store.sym(uri)) // @@ warning: uses strings not NN\n )\n }\n return context\n}\n\n/**\n * UI to control registration of instance\n */\nexport function registrationControl (\n context: AuthenticationContext,\n instance,\n theClass\n): Promise<AuthenticationContext | void> {\n const dom = context.dom\n if (!dom || !context.div) {\n return Promise.resolve()\n }\n const box = dom.createElement('div')\n context.div.appendChild(box)\n\n return ensureTypeIndexes(context)\n .then(function () {\n box.innerHTML = '<table><tbody><tr></tr><tr></tr></tbody></table>' // tbody will be inserted anyway\n box.setAttribute('style', 'font-size: 120%; text-align: right; padding: 1em; border: solid gray 0.05em;')\n const tbody = box.children[0].children[0]\n const form = new BlankNode() // @@ say for now\n\n const registrationStatements = function (index) {\n const registrations = solidLogicSingleton.getRegistrations(instance, theClass)\n const reg = registrations.length\n ? registrations[0]\n : widgets.newThing(index)\n return [\n st(reg, ns.solid('instance'), instance, index),\n st(reg, ns.solid('forClass'), theClass, index)\n ]\n }\n\n let index, statements\n\n if (context.index && context.index.public && context.index.public.length > 0) {\n index = context.index.public[0]\n statements = registrationStatements(index)\n tbody.children[0].appendChild(\n widgets.buildCheckBoxForm(\n context.dom,\n solidLogicSingleton.store,\n `Public link to this ${context.noun}`,\n null,\n statements,\n form,\n index\n )\n )\n }\n\n if (context.index && context.index.private && context.index.private.length > 0) {\n index = context.index.private[0]\n statements = registrationStatements(index)\n tbody.children[1].appendChild(\n widgets.buildCheckBoxForm(\n context.dom,\n solidLogicSingleton.store,\n `Personal note of this ${context.noun}`,\n null,\n statements,\n form,\n index\n )\n )\n }\n return context\n },\n function (e) {\n let msg\n if (context.div && context.preferencesFileError) {\n msg = '(Preferences not available)'\n context.div.appendChild(dom.createElement('p')).textContent = msg\n } else if (context.div) {\n msg = `registrationControl: Type indexes not available: ${e}`\n context.div.appendChild(widgets.errorMessageBlock(context.dom, e))\n }\n debug.log(msg)\n }\n )\n .catch(function (e) {\n const msg = `registrationControl: Error making panel: ${e}`\n if (context.div) {\n context.div.appendChild(widgets.errorMessageBlock(context.dom, e))\n }\n debug.log(msg)\n })\n}\n\n/**\n * UI to List at all registered things\n */\nexport function registrationList (context: AuthenticationContext, options: {\n private?: boolean\n public?: boolean\n type?: NamedNode\n }): Promise<AuthenticationContext> {\n const dom = context.dom as HTMLDocument\n const div = context.div as HTMLElement\n\n const box = dom.createElement('div')\n div.appendChild(box)\n\n return ensureTypeIndexes(context).then(_indexes => {\n box.innerHTML = '<table><tbody></tbody></table>' // tbody will be inserted anyway\n box.setAttribute('style', 'font-size: 120%; text-align: right; padding: 1em; border: solid #eee 0.5em;')\n const table = box.firstChild as HTMLElement\n\n let ix: Array<NamedNode> = []\n let sts: Statement[] = []\n const vs = ['private', 'public']\n vs.forEach(function (visibility) {\n if (context.index && options[visibility]) {\n ix = ix.concat(context.index[visibility][0])\n sts = sts.concat(\n (solidLogicSingleton.store as unknown as IndexedFormula).statementsMatching(\n undefined,\n ns.solid('instance'),\n undefined,\n context.index[visibility][0]\n )\n )\n }\n })\n\n for (let i = 0; i < sts.length; i++) {\n const statement: Statement = sts[i]\n if (options.type) { // now check terms:forClass\n if (!solidLogicSingleton.store.holds(statement.subject, ns.solid('forClass'), options.type, statement.why)) {\n continue // skip irrelevant ones\n }\n }\n // const cla = statement.subject\n const inst = statement.object\n table.appendChild(widgets.personTR(dom, ns.solid('instance'), inst, {\n deleteFunction: function (_x) {\n if (!solidLogicSingleton.store.updater) {\n throw new Error('Cannot delete this, store has no updater')\n }\n solidLogicSingleton.store.updater.update([statement], [], function (uri, ok, errorBody) {\n if (ok) {\n debug.log(`Removed from index: ${statement.subject}`)\n } else {\n debug.log(`Error: Cannot delete ${statement}: ${errorBody}`)\n }\n })\n }\n }))\n } // registrationList\n\n /*\n //const containers = solidLogicSingleton.store.each(theClass, ns.solid('instanceContainer'));\n if (containers.length) {\n fetcher.load(containers).then(function(xhrs){\n for (const i=0; i<containers.length; i++) {\n const cont = containers[i];\n instances = instances.concat(solidLogicSingleton.store.each(cont, ns.ldp('contains')));\n }\n });\n }\n */\n\n return context\n })\n}\n\nfunction getDefaultSignInButtonStyle (): string {\n return 'padding: 1em; border-radius:0.5em; font-size: 100%;'\n}\n\n/**\n * Bootstrapping identity\n * (Called by `loginStatusBox()`)\n *\n * @param dom\n * @param setUserCallback\n *\n * @returns\n */\nfunction signInOrSignUpBox (\n dom: HTMLDocument,\n setUserCallback: (user: string) => void,\n options: {\n buttonStyle?: string\n } = {}\n): HTMLElement {\n options = options || {}\n const signInButtonStyle = options.buttonStyle || getDefaultSignInButtonStyle()\n\n // @@ TODO Remove the need to cast HTML element to any\n const box: any = dom.createElement('div')\n const magicClassName = 'SolidSignInOrSignUpBox'\n debug.log('widgets.signInOrSignUpBox')\n box.setUserCallback = setUserCallback\n box.setAttribute('class', magicClassName)\n ;(box as any).style = 'display:flex;' // @@ fix all typecasts like this\n\n // Sign in button with PopUP\n const signInPopUpButton = dom.createElement('input') // multi\n box.appendChild(signInPopUpButton)\n signInPopUpButton.setAttribute('type', 'button')\n signInPopUpButton.setAttribute('value', 'Log in')\n signInPopUpButton.setAttribute('style', `${signInButtonStyle}background-color: #eef;`)\n\n authSession.onLogin(() => {\n const me = authn.currentUser()\n // const sessionInfo = authSession.info\n // if (sessionInfo && sessionInfo.isLoggedIn) {\n if (me) {\n // const webIdURI = sessionInfo.webId\n const webIdURI = me.uri\n // setUserCallback(webIdURI)\n const divs = dom.getElementsByClassName(magicClassName)\n debug.log(`Logged in, ${divs.length} panels to be serviced`)\n // At the same time, satisfy all the other login boxes\n for (let i = 0; i < divs.length; i++) {\n const div: any = divs[i]\n // @@ TODO Remove the need to manipulate HTML elements\n if (div.setUserCallback) {\n try {\n div.setUserCallback(webIdURI)\n const parent = div.parentNode\n if (parent) {\n parent.removeChild(div)\n }\n } catch (e) {\n debug.log(`## Error satisfying login box: ${e}`)\n div.appendChild(widgets.errorMessageBlock(dom, e))\n }\n }\n }\n }\n })\n\n signInPopUpButton.addEventListener('click', () => {\n const offline = offlineTestID()\n if (offline) return setUserCallback(offline.uri)\n\n renderSignInPopup(dom)\n }, false)\n\n // Sign up button\n const signupButton = dom.createElement('input')\n box.appendChild(signupButton)\n signupButton.setAttribute('type', 'button')\n signupButton.setAttribute('value', 'Sign Up for Solid')\n signupButton.setAttribute('style', `${signInButtonStyle}background-color: #efe;`)\n\n signupButton.addEventListener('click', function (_event) {\n const signupMgr = new Signup()\n signupMgr.signup().then(function (uri) {\n debug.log('signInOrSignUpBox signed up ' + uri)\n setUserCallback(uri)\n })\n }, false)\n return box\n}\n\nexport function renderSignInPopup (dom: HTMLDocument) {\n /**\n * Issuer Menu\n */\n const issuerPopup = dom.createElement('div')\n issuerPopup.setAttribute('style', 'position: fixed; top: 0; left: 0; right: 0; bottom: 0; display: flex; justify-content: center; align-items: center;')\n dom.body.appendChild(issuerPopup)\n const issuerPopupBox = dom.createElement('div')\n issuerPopupBox.setAttribute('style', `\n background-color: white;\n box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.2);\n -moz-box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.2);\n -o-box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.2);\n border-radius: 4px;\n min-width: 400px;\n padding: 10px;\n `)\n issuerPopup.appendChild(issuerPopupBox)\n const issuerPopupBoxTopMenu = dom.createElement('div')\n issuerPopupBoxTopMenu.setAttribute('style', `\n border-bottom: 1px solid #DDD;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n `)\n issuerPopupBox.appendChild(issuerPopupBoxTopMenu)\n const issuerPopupBoxLabel = dom.createElement('label')\n issuerPopupBoxLabel.setAttribute('style', 'margin-right: 5px; font-weight: 800')\n issuerPopupBoxLabel.innerText = 'Select an identity provider'\n const issuerPopupBoxCloseButton = dom.createElement('button')\n issuerPopupBoxCloseButton.innerHTML = '<img src=\"https://solid.github.io/solid-ui/src/icons/noun_1180156.svg\" style=\"width: 2em; height: 2em;\" title=\"Cancel\">'\n issuerPopupBoxCloseButton.setAttribute('style', 'background-color: transparent; border: none;')\n issuerPopupBoxCloseButton.addEventListener('click', () => {\n issuerPopup.remove()\n })\n issuerPopupBoxTopMenu.appendChild(issuerPopupBoxLabel)\n issuerPopupBoxTopMenu.appendChild(issuerPopupBoxCloseButton)\n\n const loginToIssuer = async (issuerUri: string) => {\n try {\n // Save hash\n const preLoginRedirectHash = new URL(window.location.href).hash\n if (preLoginRedirectHash) {\n window.localStorage.setItem('preLoginRedirectHash', preLoginRedirectHash)\n }\n window.localStorage.setItem('loginIssuer', issuerUri)\n // Login\n await authSession.login({\n redirectUrl: window.location.href,\n oidcIssuer: issuerUri\n })\n } catch (err) {\n alert(err.message)\n }\n }\n\n /**\n * Text-based idp selection\n */\n const issuerTextContainer = dom.createElement('div')\n issuerTextContainer.setAttribute('style', `\n border-bottom: 1px solid #DDD;\n display: flex;\n flex-direction: column;\n padding-top: 10px;\n `)\n const issuerTextInputContainer = dom.createElement('div')\n issuerTextInputContainer.setAttribute('style', `\n display: flex;\n flex-direction: row;\n `)\n const issuerTextLabel = dom.createElement('label')\n issuerTextLabel.innerText = 'Enter the URL of your identity provider:'\n issuerTextLabel.setAttribute('style', 'color: #888')\n const issuerTextInput = dom.createElement('input')\n issuerTextInput.setAttribute('type', 'text')\n issuerTextInput.setAttribute('style', 'margin-left: 0 !important; flex: 1; margin-right: 5px !important')\n issuerTextInput.setAttribute('placeholder', 'https://example.com')\n issuerTextInput.value = localStorage.getItem('loginIssuer') || ''\n const issuerTextGoButton = dom.createElement('button')\n issuerTextGoButton.innerText = 'Go'\n issuerTextGoButton.setAttribute('style', 'margin-top: 12px; margin-bottom: 12px;')\n issuerTextGoButton.addEventListener('click', () => {\n loginToIssuer(issuerTextInput.value)\n })\n issuerTextContainer.appendChild(issuerTextLabel)\n issuerTextInputContainer.appendChild(issuerTextInput)\n issuerTextInputContainer.appendChild(issuerTextGoButton)\n issuerTextContainer.appendChild(issuerTextInputContainer)\n issuerPopupBox.appendChild(issuerTextContainer)\n\n /**\n * Button-based idp selection\n */\n const issuerButtonContainer = dom.createElement('div')\n issuerButtonContainer.setAttribute('style', `\n display: flex;\n flex-direction: column;\n padding-top: 10px;\n `)\n const issuerBottonLabel = dom.createElement('label')\n issuerBottonLabel.innerText = 'Or pick an identity provider from the list below:'\n issuerBottonLabel.setAttribute('style', 'color: #888')\n issuerButtonContainer.appendChild(issuerBottonLabel)\n getSuggestedIssuers().forEach((issuerInfo) => {\n const issuerButton = dom.createElement('button')\n issuerButton.innerText = issuerInfo.name\n issuerButton.setAttribute('style', 'height: 38px; margin-top: 10px')\n issuerButton.addEventListener('click', () => {\n loginToIssuer(issuerInfo.uri)\n })\n issuerButtonContainer.appendChild(issuerButton)\n })\n issuerPopupBox.appendChild(issuerButtonContainer)\n}\n\n/**\n * Login status box\n *\n * A big sign-up/sign in box or a logout box depending on the state\n *\n * @param dom\n * @param listener\n *\n * @returns\n */\nexport function loginStatusBox (\n dom: HTMLDocument,\n listener: ((uri: string | null) => void) | null = null,\n options: {\n buttonStyle?: string\n } = {}\n): HTMLElement {\n // 20190630\n let me = offlineTestID()\n // @@ TODO Remove the need to cast HTML element to any\n const box: any = dom.createElement('div')\n\n function setIt (newidURI) {\n if (!newidURI) {\n return\n }\n\n // const uri = newidURI.uri || newidURI\n // me = sym(uri)\n me = authn.saveUser(newidURI)\n box.refresh()\n if (listener) listener(me!.uri)\n }\n\n function logoutButtonHandler (_event) {\n const oldMe = me\n authSession.logout().then(\n function () {\n const message = `Your WebID was ${oldMe}. It has been forgotten.`\n me = null\n try {\n alert(message)\n } catch (e) {\n window.alert(message)\n }\n box.refresh()\n if (listener) listener(null)\n },\n err => {\n alert('Fail to log out:' + err)\n }\n )\n }\n\n function logoutButton (me, options) {\n const signInButtonStyle = options.buttonStyle || getDefaultSignInButtonStyle()\n let logoutLabel = 'WebID logout'\n if (me) {\n const nick =\n solidLogicSingleton.store.any(me, ns.foaf('nick')) ||\n solidLogicSingleton.store.any(me, ns.foaf('name'))\n if (nick) {\n logoutLabel = 'Logout ' + nick.value\n }\n }\n const signOutButton = dom.createElement('input')\n // signOutButton.className = 'WebIDCancelButton'\n signOutButton.setAttribute('type', 'button')\n signOutButton.setAttribute('value', logoutLabel)\n signOutButton.setAttribute('style', `${signInButtonStyle}background-color: #eee;`)\n signOutButton.addEventListener('click', logoutButtonHandler, false)\n return signOutButton\n }\n\n box.refresh = function () {\n me = authn.currentUser()\n if ((me && box.me !== me.uri) || (!me && box.me)) {\n widgets.clearElement(box)\n if (me) {\n box.appendChild(logoutButton(me, options))\n } else {\n box.appendChild(signInOrSignUpBox(dom, setIt, options))\n }\n }\n box.me = me ? me.uri : null\n }\n box.refresh()\n\n function trackSession () {\n me = authn.currentUser()\n box.refresh()\n }\n trackSession()\n\n authSession.onLogin(trackSession)\n authSession.onLogout(trackSession)\n box.me = '99999' // Force refresh\n box.refresh()\n return box\n}\n\nauthSession.onLogout(async () => {\n const issuer = window.localStorage.getItem('loginIssuer')\n if (issuer) {\n try {\n const wellKnownUri = new URL(issuer)\n wellKnownUri.pathname = '/.well-known/openid-configuration'\n const wellKnownResult = await fetch(wellKnownUri.toString())\n if (wellKnownResult.status === 200) {\n const openidConfiguration = await wellKnownResult.json()\n if (openidConfiguration && openidConfiguration.end_session_endpoint) {\n await fetch(openidConfiguration.end_session_endpoint, { credentials: 'include' })\n }\n }\n } catch (err) {\n // Do nothing\n }\n }\n window.location.reload()\n})\n\n/**\n * Workspace selection etc\n * See https://github.com/solid/userguide/issues/16\n */\n\n/**\n * Returns a UI object which, if it selects a workspace,\n * will callback(workspace, newBase).\n * See https://github.com/solid/userguide/issues/16 for more info on workspaces.\n *\n * If necessary, will get an account, preference file, etc. In sequence:\n *\n * - If not logged in, log in.\n * - Load preference file\n * - Prompt user for workspaces\n * - Allows the user to just type in a URI by hand\n *\n * Calls back with the workspace and the base URI\n *\n * @param dom\n * @param appDetails\n * @param callbackWS\n */\nexport function selectWorkspace (\n dom: HTMLDocument,\n appDetails: AppDetails,\n callbackWS: (workspace: string | null, newBase: string) => void\n): HTMLElement {\n const noun = appDetails.noun\n const appPathSegment = appDetails.appPathSegment\n\n const me = offlineTestID()\n const box = dom.createElement('div')\n const context: AuthenticationContext = { me: me, dom: dom, div: box }\n\n function say (s, background) {\n box.appendChild(widgets.errorMessageBlock(dom, s, background))\n }\n\n function figureOutBase (ws) {\n const newBaseNode: NamedNode = solidLogicSingleton.store.any(ws, ns.space('uriPrefix')) as NamedNode\n let newBaseString: string\n if (!newBaseNode) {\n newBaseString = ws.uri.split('#')[0]\n } else {\n newBaseString = newBaseNode.value\n }\n if (newBaseString.slice(-1) !== '/') {\n debug.log(`${appPathSegment}: No / at end of uriPrefix ${newBaseString}`) // @@ paramater?\n newBaseString = `${newBaseString}/`\n }\n const now = new Date()\n newBaseString += `${appPathSegment}/id${now.getTime()}/` // unique id\n return newBaseString\n }\n\n function displayOptions (context) {\n // console.log('displayOptions!', context)\n async function makeNewWorkspace (_event) {\n const row = table.appendChild(dom.createElement('tr'))\n const cell = row.appendChild(dom.createElement('td'))\n cell.setAttribute('colspan', '3')\n cell.style.padding = '0.5em'\n const newBase = encodeURI(await widgets.askName(dom, solidLogicSingleton.store, cell, ns.solid('URL'), ns.space('Workspace'), 'Workspace'))\n const newWs = widgets.newThing(context.preferencesFile)\n const newData = [st(context.me, ns.space('workspace'), newWs, context.preferencesFile),\n // eslint-disable-next-line camelcase\n st(newWs, ns.space('uriPrefix'), newBase as unknown as Quad_Object, context.preferencesFile)]\n if (!solidLogicSingleton.store.updater) {\n throw new Error('store has no updater')\n }\n await solidLogicSingleton.store.updater.update([], newData)\n // @@ now refresh list of workspaces\n }\n\n // const status = ''\n const id = context.me\n const preferencesFile = context.preferencesFile\n let newBase: any = null\n\n // A workspace specifically defined in the private preference file:\n let w: any = solidLogicSingleton.store.each(id, ns.space('workspace'), undefined, preferencesFile) // Only trust preference file here\n\n // A workspace in a storage in the public profile:\n const storages = solidLogicSingleton.store.each(id, ns.space('storage')) // @@ No provenance requirement at the moment\n if (w.length === 0 && storages) {\n say(`You don't seem to have any workspaces. You have ${storages.length} storage spaces.`, 'white')\n storages.map(function (s: any) {\n w = w.concat(solidLogicSingleton.store.each(s, ns.ldp('contains')))\n return w\n }).filter(file => {\n return (file.id) ? ['public', 'private'].includes(file.id().toLowerCase()) : ''\n })\n }\n\n if (w.length === 1) {\n say(`Workspace used: ${w[0].uri}`, 'white') // @@ allow user to see URI\n newBase = figureOutBase(w[0])\n // callbackWS(w[0], newBase)\n // } else if (w.length === 0) {\n }\n\n // Prompt for ws selection or creation\n // say( w.length + \" workspaces for \" + id + \"Choose one.\");\n const table = dom.createElement('table')\n table.setAttribute('style', 'border-collapse:separate; border-spacing: 0.5em;')\n\n // const popup = window.open(undefined, '_blank', { height: 300, width:400 }, false)\n box.appendChild(table)\n\n // Add a field for directly adding the URI yourself\n\n // const hr = box.appendChild(dom.createElement('hr')) // @@\n box.appendChild(dom.createElement('hr')) // @@\n\n const p = box.appendChild(dom.createElement('p'))\n ;(p as any).style = commentStyle\n p.textContent = `Where would you like to store the data for the ${noun}?\n Give the URL of the folder where you would like the data stored.\n It can be anywhere in solid world - this URI is just an idea.`\n // @@ TODO Remove the need to cast baseField to any\n const baseField: any = box.appendChild(dom.createElement('input'))\n baseField.setAttribute('type', 'text')\n ;(baseField as any).style = textInputStyle\n baseField.size = 80 // really a string\n baseField.label = 'base URL'\n baseField.autocomplete = 'on'\n if (newBase) {\n // set to default\n baseField.value = newBase\n }\n\n context.baseField = baseField\n\n box.appendChild(dom.createElement('br')) // @@\n\n const button = box.appendChild(dom.createElement('button'))\n ;(button as any).style = buttonStyle\n button.textContent = `Start new ${noun} at this URI`\n button.addEventListener('click', function (_event) {\n let newBase = baseField.value.replace(' ', '%20') // do not re-encode in general, as % encodings may exist\n if (newBase.slice(-1) !== '/') {\n newBase += '/'\n }\n callbackWS(null, newBase)\n })\n\n // Now go set up the table of spaces\n\n // const row = 0\n w = w.filter(function (x) {\n return !solidLogicSingleton.store.holds(\n x,\n ns.rdf('type'), // Ignore master workspaces\n ns.space('MasterWorkspace')\n )\n })\n let col1, col2, col3, tr, ws, style, comment\n const cellStyle = 'height: 3em; margin: 1em; padding: 1em white; border-radius: 0.3em;'\n const deselectedStyle = `${cellStyle}border: 0px;`\n // const selectedStyle = cellStyle + 'border: 1px solid black;'\n for (let i = 0; i < w.length; i++) {\n ws = w[i]\n tr = dom.createElement('tr')\n if (i === 0) {\n col1 = dom.createElement('td')\n col1.setAttribute('rowspan', `${w.length}`)\n col1.textContent = 'Choose a workspace for this:'\n col1.setAttribute('style', 'vertical-align:middle;')\n tr.appendChild(col1)\n }\n col2 = dom.createElement('td')\n style = solidLogicSingleton.store.anyValue(ws, ns.ui('style'))\n if (!style) {\n // Otherwise make up arbitrary colour\n const hash = function (x) {\n return x.split('').reduce(function (a, b) {\n a = (a << 5) - a + b.charCodeAt(0)\n return a & a\n }, 0)\n }\n const bgcolor = `#${((hash(ws.uri) & 0xffffff) | 0xc0c0c0).toString(16)}` // c0c0c0 forces pale\n style = `color: black ; background-color: ${bgcolor};`\n }\n col2.setAttribute('style', deselectedStyle + style)\n tr.target = ws.uri\n let label = solidLogicSingleton.store.any(ws, ns.rdfs('label'))\n if (!label) {\n label = ws.uri.split('/').slice(-1)[0] || ws.uri.split('/').slice(-2)[0]\n }\n col2.textContent = label || '???'\n tr.appendChild(col2)\n if (i === 0) {\n col3 = dom.createElement('td')\n col3.setAttribute('rowspan', `${w.length}1`)\n // col3.textContent = '@@@@@ remove';\n col3.setAttribute('style', 'width:50%;')\n tr.appendChild(col3)\n }\n table.appendChild(tr)\n\n comment = solidLogicSingleton.store.any(ws, ns.rdfs('comment'))\n comment = comment ? comment.value : 'Use this workspace'\n col2.addEventListener('click', function (_event) {\n col3.textContent = comment ? comment.value : ''\n col3.setAttribute('style', deselectedStyle + style)\n const button = dom.createElement('button')\n button.textContent = 'Continue'\n // button.setAttribute('style', style);\n const newBase = figureOutBase(ws)\n baseField.value = newBase // show user proposed URI\n\n button.addEventListener('click', function (_event) {\n button.disabled = true\n callbackWS(ws, newBase)\n button.textContent = '---->'\n }, true) // capture vs bubble\n col3.appendChild(button)\n }, true) // capture vs bubble\n }\n\n // last line with \"Make new workspace\"\n const trLast = dom.createElement('tr')\n col2 = dom.createElement('td')\n col2.setAttribute('style', cellStyle)\n col2.textContent = '+ Make a new workspace'\n col2.addEventListener('click', makeNewWorkspace)\n trLast.appendChild(col2)\n table.appendChild(trLast)\n } // displayOptions\n\n // console.log('kicking off async operation')\n ensureLoadedPreferences(context) // kick off async operation\n .then(displayOptions)\n .catch(err => {\n // console.log(\"err from async op\")\n box.appendChild(widgets.errorMessageBlock(context.dom, err))\n })\n\n return box // return the box element, while login proceeds\n} // selectWorkspace\n\n/**\n * Creates a new instance of an app.\n *\n * An instance of an app could be e.g. an issue tracker for a given project,\n * or a chess game, or calendar, or a health/fitness record for a person.\n *\n * Note that this use of the term 'app' refers more to entries in the user's\n * type index than to actual software applications that use the personal data\n * to which these entries point.\n *\n * @param dom\n * @param appDetails\n * @param callback\n *\n * @returns A div with a button in it for making a new app instance\n */\nexport function newAppInstance (\n dom: HTMLDocument,\n appDetails: AppDetails,\n callback: (workspace: string | null, newBase: string) => void\n): HTMLElement {\n const gotWS = function (ws, base) {\n // log.debug(\"newAppInstance: Selected workspace = \" + (ws? ws.uri : 'none'))\n callback(ws, base)\n }\n const div = dom.createElement('div')\n const b = dom.createElement('button')\n b.setAttribute('type', 'button')\n div.appendChild(b)\n b.innerHTML = `Make new ${appDetails.noun}`\n b.addEventListener('click', _event => {\n div.appendChild(selectWorkspace(dom, appDetails, gotWS))\n }, false)\n div.appendChild(b)\n return div\n}\n/**\n * Retrieves whether the currently logged in user is a power user\n * and/or a developer\n */\nexport async function getUserRoles (): Promise<Array<NamedNode>> {\n try {\n const {\n me,\n preferencesFile,\n preferencesFileError\n } = await ensureLoadedPreferences({})\n if (!preferencesFile || preferencesFileError) {\n throw new Error(preferencesFileError)\n }\n return solidLogicSingleton.store.each(me, ns.rdf('type'), null, preferencesFile.doc()) as NamedNode[]\n } catch (error) {\n debug.warn('Unable to fetch your preferences - this was the error: ', error)\n }\n return []\n}\n\n/**\n * Filters which panes should be available, based on the result of [[getUserRoles]]\n */\nexport async function filterAvailablePanes (panes: Array<PaneDefinition>): Promise<Array<PaneDefinition>> {\n const userRoles = await getUserRoles()\n return panes.filter(pane => isMatchingAudience(pane, userRoles))\n}\n\nfunction isMatchingAudience (pane: PaneDefinition, userRoles: Array<NamedNode>): boolean {\n const audience = pane.audience || []\n return audience.reduce(\n (isMatch, audienceRole) => isMatch && !!userRoles.find(role => role.equals(audienceRole)),\n true as boolean\n )\n}\n"],"file":"login.js"}
|
package/lib/matrix/matrix.js
CHANGED
|
@@ -11,7 +11,7 @@ var utils = _interopRequireWildcard(require("../utils"));
|
|
|
11
11
|
|
|
12
12
|
var $rdf = _interopRequireWildcard(require("rdflib"));
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _solidLogic = require("solid-logic");
|
|
15
15
|
|
|
16
16
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
17
|
|
|
@@ -37,7 +37,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
37
37
|
// Header row at top (x axis) and left (y-axis) generated automatically.
|
|
38
38
|
// Extra rows and columns are inserted as needed to hold new data points
|
|
39
39
|
// matrix.refresh() will re-run the query and adjust the display
|
|
40
|
-
var kb =
|
|
40
|
+
var kb = _solidLogic.solidLogicSingleton.store;
|
|
41
41
|
|
|
42
42
|
function matrixForQuery(dom, query, vx, vy, vvalue, options, whenDone) {
|
|
43
43
|
// @@ TODO Remove need to cast to any
|
package/lib/matrix/matrix.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/matrix/matrix.ts"],"names":["kb","solidLogicSingleton","store","matrixForQuery","dom","query","vx","vy","vvalue","options","whenDone","matrix","createElement","header","corner","appendChild","setAttribute","lastHeader","columns","rows","setCell","cell","x","y","value","firstChild","removeChild","style","textAlign","cellFunction","textContent","utils","label","old","rowFor","y1","toNT","tr","termType","fetcher","nowOrWhenFetched","uri","split","undefined","ok","_body","_response","i","length","$rdf","fromNT","dataValueNT","ele","nextSibling","yDecreasing","insertBefore","columnNumberFor","x1","xNT","col","xDecreasing","slice","concat","push","row","td","t","j","markOldCells","children","clearOldCells","colsUsed","rowsUsed","set_y","k","set_x","newcolumns","refresh","addCellFromBindings","bindings","toString","colNo"],"mappings":"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","sourcesContent":["// Build a 2D matrix of values\n//\n// dom AKA document\n// query a Query object of rdflib.js with a valid pattern\n// vx A variable object, the one to be used for the X variable (horiz)\n// vy A variable object, the one to be used for the Y variable (vertical)\n// vvalue A variable object, the one to be used for the cell value\n// returns A DOM element with the matrix in it, which has a .refresh() function.\n//\n// Options:\n// cellFunction(td, x, y, value) fill the TD element of a single cell\n// xDecreasing set true for x axis to be in decreasing order.\n// yDecreasing set true for y axis to be in decreasing order.\n// set_x array of X values to be define initial rows (order irrelevant)\n// set_y array of Y values to be define initial columns\n//\n// Features:\n// Header row at top (x axis) and left (y-axis) generated automatically.\n// Extra rows and columns are inserted as needed to hold new data points\n// matrix.refresh() will re-run the query and adjust the display\n\nimport * as utils from '../utils'\nimport * as $rdf from 'rdflib'\nimport { MatrixOptions } from './types'\nimport { solidLogicSingleton } from '../logic'\n\nconst kb = solidLogicSingleton.store\n\nexport function matrixForQuery (\n dom: HTMLDocument,\n query: $rdf.Query,\n vx: $rdf.Variable,\n vy: $rdf.Variable,\n vvalue: $rdf.Variable,\n options: MatrixOptions,\n whenDone: () => void\n) {\n // @@ TODO Remove need to cast to any\n const matrix: any = dom.createElement('table')\n const header = dom.createElement('tr')\n const corner = header.appendChild(dom.createElement('td'))\n corner.setAttribute('class', 'MatrixCorner')\n matrix.appendChild(header) // just one for now\n matrix.lastHeader = header // Element before data\n let columns: any[] = [] // Vector\n const rows: any[] = [] // Associative array\n\n const setCell = function (cell, x, y, value) {\n while (cell.firstChild) {\n // Empty any previous\n cell.removeChild(cell.firstChild)\n }\n cell.setAttribute('style', '')\n cell.style.textAlign = 'center'\n\n if (options.cellFunction) {\n options.cellFunction(cell, x, y, value)\n } else {\n cell.textContent = utils.label(value)\n cell.setAttribute('style', 'padding: 0.3em')\n }\n delete cell.old\n }\n\n const rowFor = function (y1) {\n const y = y1.toNT()\n if (rows[y]) return rows[y]\n // @@ TODO Remove need for casting to any\n const tr: any = dom.createElement('tr')\n const header = tr.appendChild(dom.createElement('td'))\n header.setAttribute('style', 'padding: 0.3em;')\n header.textContent = utils.label(y1) // first approximation\n if (y1.termType === 'NamedNode') {\n kb.fetcher!.nowOrWhenFetched(y1.uri.split('#')[0], undefined, function (\n ok,\n _body,\n _response\n ) {\n if (ok) header.textContent = utils.label(y1)\n })\n }\n for (let i = 0; i < columns.length; i++) {\n setCell(\n tr.appendChild(dom.createElement('td')),\n $rdf.fromNT(columns[i]),\n y1,\n null\n )\n }\n tr.dataValueNT = y\n rows[y] = tr\n for (let ele = matrix.lastHeader.nextSibling; ele; ele = ele.nextSibling) {\n // skip header\n if (\n (y > ele.dataValueNT && options && options.yDecreasing) ||\n (y < ele.dataValueNT && !(options && options.yDecreasing))\n ) {\n return matrix.insertBefore(tr, ele) // return the tr\n }\n }\n return matrix.appendChild(tr) // return the tr\n }\n\n const columnNumberFor = function (x1): number {\n const xNT: any = x1.toNT() // xNT is a NT string\n let col: any = null\n // These are data columns (not headings)\n for (let i = 0; i < columns.length; i++) {\n if (columns[i] === xNT) {\n return i\n }\n\n if (\n (xNT > columns[i] && options.xDecreasing) ||\n (xNT < columns[i] && !options.xDecreasing)\n ) {\n columns = columns\n .slice(0, i)\n .concat([xNT])\n .concat(columns.slice(i))\n col = i\n break\n }\n }\n\n if (col === null) {\n col = columns.length\n columns.push(xNT)\n }\n\n // col is the number of the new column, starting from 0\n for (let row = matrix.firstChild; row; row = row.nextSibling) {\n // For every row header or not\n const y = row.dataValueNT\n const td = dom.createElement('td') // Add a new cell\n td.style.textAlign = 'center'\n if (row === matrix.firstChild) {\n td.textContent = utils.label(x1)\n } else {\n setCell(td, x1, $rdf.fromNT(y), null)\n }\n if (col === columns.length - 1) {\n row.appendChild(td)\n } else {\n let t = row.firstChild\n for (let j = 0; j < col + 1; j++) {\n // Skip header col too\n t = t.nextSibling\n }\n row.insertBefore(td, t)\n }\n }\n return col\n }\n\n const markOldCells = function () {\n for (let i = 1; i < matrix.children.length; i++) {\n const row = matrix.children[i]\n for (let j = 1; j < row.children.length; j++) {\n row.children[j].old = true\n }\n }\n }\n\n const clearOldCells = function () {\n let row, cell\n const colsUsed: any[] = []\n const rowsUsed: any[] = []\n\n if (options.set_y) {\n // Knows y values create rows\n for (let k = 0; k < options.set_y.length; k++) {\n rowsUsed[options.set_y[k]] = true\n }\n }\n if (options.set_x) {\n for (let k = 0; k < options.set_x.length; k++) {\n colsUsed[columnNumberFor(options.set_x[k]) + 1] = true\n }\n }\n\n for (let i = 1; i < matrix.children.length; i++) {\n row = matrix.children[i]\n for (let j = 1; j < row.children.length; j++) {\n cell = row.children[j]\n if (cell.old) {\n const y = $rdf.fromNT(row.dataValueNT)\n const x = $rdf.fromNT(columns[j - 1])\n setCell(cell, x, y, null)\n } else {\n rowsUsed[row.dataValueNT] = true\n colsUsed[j] = true\n }\n }\n }\n\n for (let i = 0; i < matrix.children.length; i++) {\n row = matrix.children[i]\n if (i > 0 && !rowsUsed[row.dataValueNT]) {\n delete rows[row.dataValueNT]\n matrix.removeChild(row)\n } else {\n for (let j = row.children.length - 1; j > 0; j--) {\n // backwards\n const cell = row.children[j]\n if (!colsUsed[j]) {\n row.removeChild(cell)\n }\n }\n }\n }\n const newcolumns: any[] = []\n for (let j = 0; j < columns.length; j++) {\n if (colsUsed[j + 1]) {\n newcolumns.push(columns[j])\n }\n }\n columns = newcolumns\n }\n\n matrix.refresh = function () {\n markOldCells()\n kb.query(query, addCellFromBindings, undefined, clearOldCells)\n }\n\n const addCellFromBindings = function (bindings) {\n const x = bindings[vx.toString()]\n const y = bindings[vy.toString()]\n const value = bindings[(vvalue.toString())]\n const row = rowFor(y)\n const colNo = columnNumberFor(x)\n const cell = row.children[colNo + 1] // number of Y axis headings\n setCell(cell, x, y, value)\n }\n\n if (options.set_y) {\n // Knows y values create rows\n for (let k = 0; k < options.set_y.length; k++) {\n rowFor(options.set_y[k])\n }\n }\n if (options.set_x) {\n for (let k = 0; k < options.set_x.length; k++) {\n columnNumberFor(options.set_x[k])\n }\n }\n\n kb.query(query, addCellFromBindings, undefined, whenDone) // Populate the matrix\n return matrix\n}\n"],"file":"matrix.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/matrix/matrix.ts"],"names":["kb","solidLogicSingleton","store","matrixForQuery","dom","query","vx","vy","vvalue","options","whenDone","matrix","createElement","header","corner","appendChild","setAttribute","lastHeader","columns","rows","setCell","cell","x","y","value","firstChild","removeChild","style","textAlign","cellFunction","textContent","utils","label","old","rowFor","y1","toNT","tr","termType","fetcher","nowOrWhenFetched","uri","split","undefined","ok","_body","_response","i","length","$rdf","fromNT","dataValueNT","ele","nextSibling","yDecreasing","insertBefore","columnNumberFor","x1","xNT","col","xDecreasing","slice","concat","push","row","td","t","j","markOldCells","children","clearOldCells","colsUsed","rowsUsed","set_y","k","set_x","newcolumns","refresh","addCellFromBindings","bindings","toString","colNo"],"mappings":"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","sourcesContent":["// Build a 2D matrix of values\n//\n// dom AKA document\n// query a Query object of rdflib.js with a valid pattern\n// vx A variable object, the one to be used for the X variable (horiz)\n// vy A variable object, the one to be used for the Y variable (vertical)\n// vvalue A variable object, the one to be used for the cell value\n// returns A DOM element with the matrix in it, which has a .refresh() function.\n//\n// Options:\n// cellFunction(td, x, y, value) fill the TD element of a single cell\n// xDecreasing set true for x axis to be in decreasing order.\n// yDecreasing set true for y axis to be in decreasing order.\n// set_x array of X values to be define initial rows (order irrelevant)\n// set_y array of Y values to be define initial columns\n//\n// Features:\n// Header row at top (x axis) and left (y-axis) generated automatically.\n// Extra rows and columns are inserted as needed to hold new data points\n// matrix.refresh() will re-run the query and adjust the display\n\nimport * as utils from '../utils'\nimport * as $rdf from 'rdflib'\nimport { MatrixOptions } from './types'\nimport { solidLogicSingleton } from 'solid-logic'\n\nconst kb = solidLogicSingleton.store\n\nexport function matrixForQuery (\n dom: HTMLDocument,\n query: $rdf.Query,\n vx: $rdf.Variable,\n vy: $rdf.Variable,\n vvalue: $rdf.Variable,\n options: MatrixOptions,\n whenDone: () => void\n) {\n // @@ TODO Remove need to cast to any\n const matrix: any = dom.createElement('table')\n const header = dom.createElement('tr')\n const corner = header.appendChild(dom.createElement('td'))\n corner.setAttribute('class', 'MatrixCorner')\n matrix.appendChild(header) // just one for now\n matrix.lastHeader = header // Element before data\n let columns: any[] = [] // Vector\n const rows: any[] = [] // Associative array\n\n const setCell = function (cell, x, y, value) {\n while (cell.firstChild) {\n // Empty any previous\n cell.removeChild(cell.firstChild)\n }\n cell.setAttribute('style', '')\n cell.style.textAlign = 'center'\n\n if (options.cellFunction) {\n options.cellFunction(cell, x, y, value)\n } else {\n cell.textContent = utils.label(value)\n cell.setAttribute('style', 'padding: 0.3em')\n }\n delete cell.old\n }\n\n const rowFor = function (y1) {\n const y = y1.toNT()\n if (rows[y]) return rows[y]\n // @@ TODO Remove need for casting to any\n const tr: any = dom.createElement('tr')\n const header = tr.appendChild(dom.createElement('td'))\n header.setAttribute('style', 'padding: 0.3em;')\n header.textContent = utils.label(y1) // first approximation\n if (y1.termType === 'NamedNode') {\n kb.fetcher!.nowOrWhenFetched(y1.uri.split('#')[0], undefined, function (\n ok,\n _body,\n _response\n ) {\n if (ok) header.textContent = utils.label(y1)\n })\n }\n for (let i = 0; i < columns.length; i++) {\n setCell(\n tr.appendChild(dom.createElement('td')),\n $rdf.fromNT(columns[i]),\n y1,\n null\n )\n }\n tr.dataValueNT = y\n rows[y] = tr\n for (let ele = matrix.lastHeader.nextSibling; ele; ele = ele.nextSibling) {\n // skip header\n if (\n (y > ele.dataValueNT && options && options.yDecreasing) ||\n (y < ele.dataValueNT && !(options && options.yDecreasing))\n ) {\n return matrix.insertBefore(tr, ele) // return the tr\n }\n }\n return matrix.appendChild(tr) // return the tr\n }\n\n const columnNumberFor = function (x1): number {\n const xNT: any = x1.toNT() // xNT is a NT string\n let col: any = null\n // These are data columns (not headings)\n for (let i = 0; i < columns.length; i++) {\n if (columns[i] === xNT) {\n return i\n }\n\n if (\n (xNT > columns[i] && options.xDecreasing) ||\n (xNT < columns[i] && !options.xDecreasing)\n ) {\n columns = columns\n .slice(0, i)\n .concat([xNT])\n .concat(columns.slice(i))\n col = i\n break\n }\n }\n\n if (col === null) {\n col = columns.length\n columns.push(xNT)\n }\n\n // col is the number of the new column, starting from 0\n for (let row = matrix.firstChild; row; row = row.nextSibling) {\n // For every row header or not\n const y = row.dataValueNT\n const td = dom.createElement('td') // Add a new cell\n td.style.textAlign = 'center'\n if (row === matrix.firstChild) {\n td.textContent = utils.label(x1)\n } else {\n setCell(td, x1, $rdf.fromNT(y), null)\n }\n if (col === columns.length - 1) {\n row.appendChild(td)\n } else {\n let t = row.firstChild\n for (let j = 0; j < col + 1; j++) {\n // Skip header col too\n t = t.nextSibling\n }\n row.insertBefore(td, t)\n }\n }\n return col\n }\n\n const markOldCells = function () {\n for (let i = 1; i < matrix.children.length; i++) {\n const row = matrix.children[i]\n for (let j = 1; j < row.children.length; j++) {\n row.children[j].old = true\n }\n }\n }\n\n const clearOldCells = function () {\n let row, cell\n const colsUsed: any[] = []\n const rowsUsed: any[] = []\n\n if (options.set_y) {\n // Knows y values create rows\n for (let k = 0; k < options.set_y.length; k++) {\n rowsUsed[options.set_y[k]] = true\n }\n }\n if (options.set_x) {\n for (let k = 0; k < options.set_x.length; k++) {\n colsUsed[columnNumberFor(options.set_x[k]) + 1] = true\n }\n }\n\n for (let i = 1; i < matrix.children.length; i++) {\n row = matrix.children[i]\n for (let j = 1; j < row.children.length; j++) {\n cell = row.children[j]\n if (cell.old) {\n const y = $rdf.fromNT(row.dataValueNT)\n const x = $rdf.fromNT(columns[j - 1])\n setCell(cell, x, y, null)\n } else {\n rowsUsed[row.dataValueNT] = true\n colsUsed[j] = true\n }\n }\n }\n\n for (let i = 0; i < matrix.children.length; i++) {\n row = matrix.children[i]\n if (i > 0 && !rowsUsed[row.dataValueNT]) {\n delete rows[row.dataValueNT]\n matrix.removeChild(row)\n } else {\n for (let j = row.children.length - 1; j > 0; j--) {\n // backwards\n const cell = row.children[j]\n if (!colsUsed[j]) {\n row.removeChild(cell)\n }\n }\n }\n }\n const newcolumns: any[] = []\n for (let j = 0; j < columns.length; j++) {\n if (colsUsed[j + 1]) {\n newcolumns.push(columns[j])\n }\n }\n columns = newcolumns\n }\n\n matrix.refresh = function () {\n markOldCells()\n kb.query(query, addCellFromBindings, undefined, clearOldCells)\n }\n\n const addCellFromBindings = function (bindings) {\n const x = bindings[vx.toString()]\n const y = bindings[vy.toString()]\n const value = bindings[(vvalue.toString())]\n const row = rowFor(y)\n const colNo = columnNumberFor(x)\n const cell = row.children[colNo + 1] // number of Y axis headings\n setCell(cell, x, y, value)\n }\n\n if (options.set_y) {\n // Knows y values create rows\n for (let k = 0; k < options.set_y.length; k++) {\n rowFor(options.set_y[k])\n }\n }\n if (options.set_x) {\n for (let k = 0; k < options.set_x.length; k++) {\n columnNumberFor(options.set_x[k])\n }\n }\n\n kb.query(query, addCellFromBindings, undefined, whenDone) // Populate the matrix\n return matrix\n}\n"],"file":"matrix.js"}
|
package/lib/messageArea.js
CHANGED
|
@@ -7,11 +7,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.messageArea = messageArea;
|
|
9
9
|
|
|
10
|
-
var _index = require("./authn/index");
|
|
11
|
-
|
|
12
10
|
var _iconBase = require("./iconBase");
|
|
13
11
|
|
|
14
|
-
var
|
|
12
|
+
var login = _interopRequireWildcard(require("./login/login"));
|
|
13
|
+
|
|
14
|
+
var _solidLogic = require("solid-logic");
|
|
15
15
|
|
|
16
16
|
var ns = _interopRequireWildcard(require("./ns"));
|
|
17
17
|
|
|
@@ -31,17 +31,15 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
31
31
|
//
|
|
32
32
|
// pull in first avoid cross-refs
|
|
33
33
|
var UI = {
|
|
34
|
-
authn: _index.authn,
|
|
35
34
|
icons: _iconBase.icons,
|
|
36
35
|
ns: ns,
|
|
37
36
|
rdf: rdf,
|
|
38
|
-
store: _logic.store,
|
|
39
37
|
style: style,
|
|
40
38
|
widgets: widgets
|
|
41
39
|
};
|
|
42
40
|
|
|
43
41
|
function messageArea(dom, kb, subject, messageStore, options) {
|
|
44
|
-
kb = kb ||
|
|
42
|
+
kb = kb || _solidLogic.solidLogicSingleton.store;
|
|
45
43
|
messageStore = messageStore.doc(); // No hash
|
|
46
44
|
|
|
47
45
|
var ns = UI.ns;
|
|
@@ -56,7 +54,7 @@ function messageArea(dom, kb, subject, messageStore, options) {
|
|
|
56
54
|
var messageTable; // Shared by initial build and addMessageFromBindings
|
|
57
55
|
|
|
58
56
|
var me;
|
|
59
|
-
var updater =
|
|
57
|
+
var updater = _solidLogic.solidLogicSingleton.store.updater;
|
|
60
58
|
|
|
61
59
|
var anchor = function anchor(text, term) {
|
|
62
60
|
// If there is no link return an element anyway
|
|
@@ -175,7 +173,7 @@ function messageArea(dom, kb, subject, messageStore, options) {
|
|
|
175
173
|
div: middle,
|
|
176
174
|
dom: dom
|
|
177
175
|
};
|
|
178
|
-
|
|
176
|
+
login.ensureLoggedIn(context).then(function (context) {
|
|
179
177
|
me = context.me;
|
|
180
178
|
turnOnInput();
|
|
181
179
|
});
|
|
@@ -183,7 +181,8 @@ function messageArea(dom, kb, subject, messageStore, options) {
|
|
|
183
181
|
};
|
|
184
182
|
|
|
185
183
|
function nick(person) {
|
|
186
|
-
var s =
|
|
184
|
+
var s = _solidLogic.solidLogicSingleton.store.any(person, UI.ns.foaf('nick'));
|
|
185
|
+
|
|
187
186
|
if (s) return '' + s.value;
|
|
188
187
|
return '' + utils.label(person);
|
|
189
188
|
}
|
|
@@ -192,7 +191,7 @@ function messageArea(dom, kb, subject, messageStore, options) {
|
|
|
192
191
|
var nickAnchor = td1.appendChild(anchor(nick(creator), creator));
|
|
193
192
|
|
|
194
193
|
if (creator.uri) {
|
|
195
|
-
|
|
194
|
+
_solidLogic.solidLogicSingleton.store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (_ok, _body) {
|
|
196
195
|
nickAnchor.textContent = nick(creator);
|
|
197
196
|
});
|
|
198
197
|
}
|
package/lib/messageArea.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/messageArea.js"],"names":["UI","authn","icons","ns","rdf","store","style","widgets","messageArea","dom","kb","subject","messageStore","options","doc","WF","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","sts","now","Date","timestamp","getTime","dateStamp","sym","push","Statement","wf","sioc","literal","value","foaf","sendComplete","success","body","errorMessageBlock","bindings","renderMessage","update","sendButton","turnOnInput","creatorAndDate","innerHTML","rows","e","keyCode","altKey","button","iconBase","buttonStyle","context","logIn","then","nick","person","s","any","utils","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","deleteMessage","deletions","statementsMatching","concat","ok","fresh","content","dateString","tr","done","insertBefore","shortDate","td2","td3","delButton","_event","cancelButton","sureButton","query","Query","v","vs","x","vars","variable","pat","add","msg","dct","doneQuery","refresh"],"mappings":"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","sourcesContent":["// Common code for a discussion are a of messages about something\n//\n\nimport { authn } from './authn/index'\nimport { icons } from './iconBase'\nimport { store } from './logic'\nimport * as ns from './ns'\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 = { authn, icons, ns, rdf, store, style, widgets }\n\nexport function messageArea (dom, kb, subject, messageStore, options) {\n kb = kb || UI.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 = UI.store.updater\n\n const anchor = function (text, term) {\n // If there is no link return an element anyway\n const a = dom.createElement('a')\n if (term && term.uri) {\n a.setAttribute('href', term.uri)\n a.addEventListener('click', UI.widgets.openHrefInOutlineMode, true)\n a.setAttribute('style', 'color: #3B5998; text-decoration: none; ') // font-weight: bold\n }\n a.textContent = text\n return a\n }\n\n const mention = function mention (message, style) {\n const pre = dom.createElement('pre')\n pre.setAttribute('style', style || 'color: grey')\n div.appendChild(pre)\n pre.appendChild(dom.createTextNode(message))\n return pre\n }\n\n const announce = {\n log: function (message) {\n mention(message, 'color: #111;')\n },\n warn: function (message) {\n mention(message, 'color: #880;')\n },\n error: function (message) {\n mention(message, 'color: #800;')\n }\n }\n\n // Form for a new message\n //\n const newMessageForm = function () {\n const form = dom.createElement('tr')\n const lhs = dom.createElement('td')\n const middle = dom.createElement('td')\n const rhs = dom.createElement('td')\n form.appendChild(lhs)\n form.appendChild(middle)\n form.appendChild(rhs)\n form.AJAR_date = '9999-01-01T00:00:00Z' // ISO format for field sort\n\n const sendMessage = function () {\n // titlefield.setAttribute('class','pendingedit')\n // titlefield.disabled = true\n field.setAttribute('class', 'pendingedit')\n field.disabled = true\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = rdf.term(now)\n // http://www.w3schools.com/jsref/jsref_obj_date.asp\n const message = kb.sym(messageStore.uri + '#' + 'Msg' + timestamp)\n\n sts.push(\n new rdf.Statement(subject, ns.wf('message'), message, messageStore)\n )\n sts.push(\n new rdf.Statement(\n message,\n ns.sioc('content'),\n kb.literal(field.value),\n messageStore\n )\n )\n sts.push(\n new rdf.Statement(message, DCT('created'), dateStamp, messageStore)\n )\n if (me) {\n sts.push(\n new rdf.Statement(message, ns.foaf('maker'), me, messageStore)\n )\n }\n\n const sendComplete = function (uri, success, body) {\n if (!success) {\n form.appendChild(\n UI.widgets.errorMessageBlock(dom, 'Error writing message: ' + body)\n )\n } else {\n const bindings = {\n '?msg': message,\n '?content': kb.literal(field.value),\n '?date': dateStamp,\n '?creator': me\n }\n renderMessage(bindings, false) // not green\n\n field.value = '' // clear from out for reuse\n field.setAttribute('class', '')\n field.disabled = false\n }\n }\n updater.update([], sts, sendComplete)\n }\n form.appendChild(dom.createElement('br'))\n\n let field, sendButton\n const turnOnInput = function () {\n creatorAndDate(lhs, me, '', null)\n\n field = dom.createElement('textarea')\n middle.innerHTML = ''\n middle.appendChild(field)\n field.rows = 3\n // field.cols = 40\n field.setAttribute('style', messageBodyStyle + 'background-color: #eef;')\n\n field.addEventListener(\n 'keyup',\n function (e) {\n // User preference?\n if (e.keyCode === 13) {\n if (!e.altKey) {\n // Alt-Enter just adds a new line\n sendMessage()\n }\n }\n },\n false\n )\n\n rhs.innerHTML = ''\n sendButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + 'noun_383448.svg',\n 'Send'\n )\n sendButton.setAttribute('style', UI.style.buttonStyle + 'float: right;')\n sendButton.addEventListener('click', sendMessage, false)\n rhs.appendChild(sendButton)\n }\n\n const context = { div: middle, dom: dom }\n UI.authn.logIn(context).then(context => {\n me = context.me\n turnOnInput()\n })\n\n return form\n }\n\n function nick (person) {\n const s = UI.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 UI.store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nick(creator)\n })\n }\n td1.appendChild(dom.createElement('br'))\n td1.appendChild(anchor(date, message))\n }\n\n // ///////////////////////////////////////////////////////////////////////\n\n function syncMessages (about, messageTable) {\n const displayed = {}\n let ele, ele2\n for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {\n if (ele.AJAR_subject) {\n displayed[ele.AJAR_subject.uri] = true\n }\n }\n const messages = kb.each(about, ns.wf('message'))\n const stored = {}\n messages.forEach(function (m) {\n stored[m.uri] = true\n if (!displayed[m.uri]) {\n addMessage(m)\n }\n })\n\n // 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 deleteMessage = function (message) {\n const deletions = kb\n .statementsMatching(message)\n .concat(kb.statementsMatching(undefined, undefined, message))\n updater.update(deletions, [], function (uri, ok, body) {\n if (!ok) {\n announce.error('Cant delete messages:' + body)\n } else {\n syncMessages(subject, messageTable)\n }\n })\n }\n\n const addMessage = function (message) {\n const bindings = {\n '?msg': message,\n '?creator': kb.any(message, ns.foaf('maker')),\n '?date': kb.any(message, DCT('created')),\n '?content': kb.any(message, ns.sioc('content'))\n }\n renderMessage(bindings, true) // fresh from elsewhere\n }\n\n const renderMessage = function (bindings, fresh) {\n const creator = bindings['?creator']\n const message = bindings['?msg']\n const date = bindings['?date']\n const content = bindings['?content']\n\n const dateString = date.value\n const tr = dom.createElement('tr')\n tr.AJAR_date = dateString\n tr.AJAR_subject = message\n\n let done = false\n for (let ele = messageTable.firstChild; ; ele = ele.nextSibling) {\n if (!ele) {\n // empty\n break\n }\n if (\n (dateString > ele.AJAR_date && newestFirst) ||\n (dateString < ele.AJAR_date && !newestFirst)\n ) {\n messageTable.insertBefore(tr, ele)\n done = true\n break\n }\n }\n if (!done) {\n messageTable.appendChild(tr)\n }\n\n const td1 = dom.createElement('td')\n tr.appendChild(td1)\n creatorAndDate(td1, creator, UI.widgets.shortDate(dateString), message)\n\n const td2 = dom.createElement('td')\n tr.appendChild(td2)\n const pre = dom.createElement('p')\n pre.setAttribute(\n 'style',\n messageBodyStyle +\n (fresh ? 'background-color: #e8ffe8;' : 'background-color: #white;')\n )\n td2.appendChild(pre)\n pre.textContent = content.value\n\n const td3 = dom.createElement('td')\n tr.appendChild(td3)\n\n const delButton = dom.createElement('button')\n td3.appendChild(delButton)\n delButton.textContent = '-'\n\n tr.setAttribute('class', 'hoverControl') // See tabbedtab.css (sigh global CSS)\n delButton.setAttribute('class', 'hoverControlHide')\n delButton.setAttribute('style', 'color: red;')\n delButton.addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(delButton) // Ask -- are you sure?\n const cancelButton = dom.createElement('button')\n cancelButton.textContent = 'cancel'\n td3.appendChild(cancelButton).addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(sureButton)\n td3.removeChild(cancelButton)\n td3.appendChild(delButton)\n },\n false\n )\n const sureButton = dom.createElement('button')\n sureButton.textContent = 'Delete message'\n td3.appendChild(sureButton).addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(sureButton)\n td3.removeChild(cancelButton)\n deleteMessage(message)\n },\n false\n )\n },\n false\n )\n }\n\n // Messages with date, author etc\n\n messageTable = dom.createElement('table')\n messageTable.fresh = false\n div.appendChild(messageTable)\n messageTable.setAttribute('style', 'width: 100%;') // fill that div!\n\n const tr = newMessageForm()\n if (newestFirst) {\n messageTable.insertBefore(tr, messageTable.firstChild) // If newestFirst\n } else {\n messageTable.appendChild(tr) // not newestFirst\n }\n\n let query\n // Do this with a live query to pull in messages from web\n if (options.query) {\n query = options.query\n } else {\n query = new rdf.Query('Messages')\n const v = {} // semicolon needed\n const vs = ['msg', 'date', 'creator', 'content']\n vs.forEach(function (x) {\n query.vars.push((v[x] = rdf.variable(x)))\n })\n query.pat.add(subject, WF('message'), v.msg)\n query.pat.add(v.msg, ns.dct('created'), v.date)\n query.pat.add(v.msg, ns.foaf('maker'), v.creator)\n query.pat.add(v.msg, ns.sioc('content'), v.content)\n }\n function doneQuery () {\n messageTable.fresh = true // any new are fresh and so will be greenish\n }\n kb.query(query, renderMessage, undefined, doneQuery)\n div.refresh = function () {\n syncMessages(subject, messageTable)\n }\n // syncMessages(subject, messageTable) // no the query will do this async\n return div\n}\n"],"file":"messageArea.js"}
|
|
1
|
+
{"version":3,"sources":["../src/messageArea.js"],"names":["UI","icons","ns","rdf","style","widgets","messageArea","dom","kb","subject","messageStore","options","solidLogicSingleton","store","doc","WF","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","sts","now","Date","timestamp","getTime","dateStamp","sym","push","Statement","wf","sioc","literal","value","foaf","sendComplete","success","body","errorMessageBlock","bindings","renderMessage","update","sendButton","turnOnInput","creatorAndDate","innerHTML","rows","e","keyCode","altKey","button","iconBase","buttonStyle","context","login","ensureLoggedIn","then","nick","person","s","any","utils","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","deleteMessage","deletions","statementsMatching","concat","ok","fresh","content","dateString","tr","done","insertBefore","shortDate","td2","td3","delButton","_event","cancelButton","sureButton","query","Query","v","vs","x","vars","variable","pat","add","msg","dct","doneQuery","refresh"],"mappings":"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","sourcesContent":["// Common code for a discussion are a of messages about something\n//\n\nimport { icons } from './iconBase'\nimport * as login from './login/login'\nimport { solidLogicSingleton } from 'solid-logic'\nimport * as ns from './ns'\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, rdf, style, widgets }\n\nexport function messageArea (dom, kb, subject, messageStore, options) {\n kb = kb || solidLogicSingleton.store\n messageStore = messageStore.doc() // No hash\n const ns = UI.ns\n const WF = rdf.Namespace('http://www.w3.org/2005/01/wf/flow#')\n const DCT = rdf.Namespace('http://purl.org/dc/terms/')\n\n options = options || {}\n\n const newestFirst = !!options.newestFirst\n\n const messageBodyStyle =\n 'white-space: pre-wrap; width: 90%; font-size:100%; border: 0.07em solid #eee; padding: .2em 0.5em; margin: 0.1em 1em 0.1em 1em;'\n // 'font-size: 100%; margin: 0.1em 1em 0.1em 1em; background-color: white; white-space: pre-wrap; padding: 0.1em;'\n\n const div = dom.createElement('div')\n // eslint-disable-next-line prefer-const\n let messageTable // Shared by initial build and addMessageFromBindings\n\n let me\n\n const updater = solidLogicSingleton.store.updater\n\n const anchor = function (text, term) {\n // If there is no link return an element anyway\n const a = dom.createElement('a')\n if (term && term.uri) {\n a.setAttribute('href', term.uri)\n a.addEventListener('click', UI.widgets.openHrefInOutlineMode, true)\n a.setAttribute('style', 'color: #3B5998; text-decoration: none; ') // font-weight: bold\n }\n a.textContent = text\n return a\n }\n\n const mention = function mention (message, style) {\n const pre = dom.createElement('pre')\n pre.setAttribute('style', style || 'color: grey')\n div.appendChild(pre)\n pre.appendChild(dom.createTextNode(message))\n return pre\n }\n\n const announce = {\n log: function (message) {\n mention(message, 'color: #111;')\n },\n warn: function (message) {\n mention(message, 'color: #880;')\n },\n error: function (message) {\n mention(message, 'color: #800;')\n }\n }\n\n // Form for a new message\n //\n const newMessageForm = function () {\n const form = dom.createElement('tr')\n const lhs = dom.createElement('td')\n const middle = dom.createElement('td')\n const rhs = dom.createElement('td')\n form.appendChild(lhs)\n form.appendChild(middle)\n form.appendChild(rhs)\n form.AJAR_date = '9999-01-01T00:00:00Z' // ISO format for field sort\n\n const sendMessage = function () {\n // titlefield.setAttribute('class','pendingedit')\n // titlefield.disabled = true\n field.setAttribute('class', 'pendingedit')\n field.disabled = true\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = rdf.term(now)\n // http://www.w3schools.com/jsref/jsref_obj_date.asp\n const message = kb.sym(messageStore.uri + '#' + 'Msg' + timestamp)\n\n sts.push(\n new rdf.Statement(subject, ns.wf('message'), message, messageStore)\n )\n sts.push(\n new rdf.Statement(\n message,\n ns.sioc('content'),\n kb.literal(field.value),\n messageStore\n )\n )\n sts.push(\n new rdf.Statement(message, DCT('created'), dateStamp, messageStore)\n )\n if (me) {\n sts.push(\n new rdf.Statement(message, ns.foaf('maker'), me, messageStore)\n )\n }\n\n const sendComplete = function (uri, success, body) {\n if (!success) {\n form.appendChild(\n UI.widgets.errorMessageBlock(dom, 'Error writing message: ' + body)\n )\n } else {\n const bindings = {\n '?msg': message,\n '?content': kb.literal(field.value),\n '?date': dateStamp,\n '?creator': me\n }\n renderMessage(bindings, false) // not green\n\n field.value = '' // clear from out for reuse\n field.setAttribute('class', '')\n field.disabled = false\n }\n }\n updater.update([], sts, sendComplete)\n }\n form.appendChild(dom.createElement('br'))\n\n let field, sendButton\n const turnOnInput = function () {\n creatorAndDate(lhs, me, '', null)\n\n field = dom.createElement('textarea')\n middle.innerHTML = ''\n middle.appendChild(field)\n field.rows = 3\n // field.cols = 40\n field.setAttribute('style', messageBodyStyle + 'background-color: #eef;')\n\n field.addEventListener(\n 'keyup',\n function (e) {\n // User preference?\n if (e.keyCode === 13) {\n if (!e.altKey) {\n // Alt-Enter just adds a new line\n sendMessage()\n }\n }\n },\n false\n )\n\n rhs.innerHTML = ''\n sendButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + 'noun_383448.svg',\n 'Send'\n )\n sendButton.setAttribute('style', UI.style.buttonStyle + 'float: right;')\n sendButton.addEventListener('click', sendMessage, false)\n rhs.appendChild(sendButton)\n }\n\n const context = { div: middle, dom: dom }\n login.ensureLoggedIn(context).then(context => {\n me = context.me\n turnOnInput()\n })\n\n return form\n }\n\n function nick (person) {\n const s = solidLogicSingleton.store.any(person, UI.ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + utils.label(person)\n }\n\n function creatorAndDate (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(nick(creator), creator))\n if (creator.uri) {\n solidLogicSingleton.store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nick(creator)\n })\n }\n td1.appendChild(dom.createElement('br'))\n td1.appendChild(anchor(date, message))\n }\n\n // ///////////////////////////////////////////////////////////////////////\n\n function syncMessages (about, messageTable) {\n const displayed = {}\n let ele, ele2\n for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {\n if (ele.AJAR_subject) {\n displayed[ele.AJAR_subject.uri] = true\n }\n }\n const messages = kb.each(about, ns.wf('message'))\n const stored = {}\n messages.forEach(function (m) {\n stored[m.uri] = true\n if (!displayed[m.uri]) {\n addMessage(m)\n }\n })\n\n // 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 deleteMessage = function (message) {\n const deletions = kb\n .statementsMatching(message)\n .concat(kb.statementsMatching(undefined, undefined, message))\n updater.update(deletions, [], function (uri, ok, body) {\n if (!ok) {\n announce.error('Cant delete messages:' + body)\n } else {\n syncMessages(subject, messageTable)\n }\n })\n }\n\n const addMessage = function (message) {\n const bindings = {\n '?msg': message,\n '?creator': kb.any(message, ns.foaf('maker')),\n '?date': kb.any(message, DCT('created')),\n '?content': kb.any(message, ns.sioc('content'))\n }\n renderMessage(bindings, true) // fresh from elsewhere\n }\n\n const renderMessage = function (bindings, fresh) {\n const creator = bindings['?creator']\n const message = bindings['?msg']\n const date = bindings['?date']\n const content = bindings['?content']\n\n const dateString = date.value\n const tr = dom.createElement('tr')\n tr.AJAR_date = dateString\n tr.AJAR_subject = message\n\n let done = false\n for (let ele = messageTable.firstChild; ; ele = ele.nextSibling) {\n if (!ele) {\n // empty\n break\n }\n if (\n (dateString > ele.AJAR_date && newestFirst) ||\n (dateString < ele.AJAR_date && !newestFirst)\n ) {\n messageTable.insertBefore(tr, ele)\n done = true\n break\n }\n }\n if (!done) {\n messageTable.appendChild(tr)\n }\n\n const td1 = dom.createElement('td')\n tr.appendChild(td1)\n creatorAndDate(td1, creator, UI.widgets.shortDate(dateString), message)\n\n const td2 = dom.createElement('td')\n tr.appendChild(td2)\n const pre = dom.createElement('p')\n pre.setAttribute(\n 'style',\n messageBodyStyle +\n (fresh ? 'background-color: #e8ffe8;' : 'background-color: #white;')\n )\n td2.appendChild(pre)\n pre.textContent = content.value\n\n const td3 = dom.createElement('td')\n tr.appendChild(td3)\n\n const delButton = dom.createElement('button')\n td3.appendChild(delButton)\n delButton.textContent = '-'\n\n tr.setAttribute('class', 'hoverControl') // See tabbedtab.css (sigh global CSS)\n delButton.setAttribute('class', 'hoverControlHide')\n delButton.setAttribute('style', 'color: red;')\n delButton.addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(delButton) // Ask -- are you sure?\n const cancelButton = dom.createElement('button')\n cancelButton.textContent = 'cancel'\n td3.appendChild(cancelButton).addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(sureButton)\n td3.removeChild(cancelButton)\n td3.appendChild(delButton)\n },\n false\n )\n const sureButton = dom.createElement('button')\n sureButton.textContent = 'Delete message'\n td3.appendChild(sureButton).addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(sureButton)\n td3.removeChild(cancelButton)\n deleteMessage(message)\n },\n false\n )\n },\n false\n )\n }\n\n // Messages with date, author etc\n\n messageTable = dom.createElement('table')\n messageTable.fresh = false\n div.appendChild(messageTable)\n messageTable.setAttribute('style', 'width: 100%;') // fill that div!\n\n const tr = newMessageForm()\n if (newestFirst) {\n messageTable.insertBefore(tr, messageTable.firstChild) // If newestFirst\n } else {\n messageTable.appendChild(tr) // not newestFirst\n }\n\n let query\n // Do this with a live query to pull in messages from web\n if (options.query) {\n query = options.query\n } else {\n query = new rdf.Query('Messages')\n const v = {} // semicolon needed\n const vs = ['msg', 'date', 'creator', 'content']\n vs.forEach(function (x) {\n query.vars.push((v[x] = rdf.variable(x)))\n })\n query.pat.add(subject, WF('message'), v.msg)\n query.pat.add(v.msg, ns.dct('created'), v.date)\n query.pat.add(v.msg, ns.foaf('maker'), v.creator)\n query.pat.add(v.msg, ns.sioc('content'), v.content)\n }\n function doneQuery () {\n messageTable.fresh = true // any new are fresh and so will be greenish\n }\n kb.query(query, renderMessage, undefined, doneQuery)\n div.refresh = function () {\n syncMessages(subject, messageTable)\n }\n // syncMessages(subject, messageTable) // no the query will do this async\n return div\n}\n"],"file":"messageArea.js"}
|
package/lib/pad.js
CHANGED
|
@@ -63,7 +63,7 @@ var _utils = require("./utils");
|
|
|
63
63
|
|
|
64
64
|
var _debug = require("./debug");
|
|
65
65
|
|
|
66
|
-
var
|
|
66
|
+
var _solidLogic = require("solid-logic");
|
|
67
67
|
|
|
68
68
|
var _participation = require("./participation");
|
|
69
69
|
|
|
@@ -75,7 +75,7 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
|
|
|
75
75
|
|
|
76
76
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
77
77
|
|
|
78
|
-
var store =
|
|
78
|
+
var store = _solidLogic.solidLogicSingleton.store;
|
|
79
79
|
var PAD = (0, _rdflib.Namespace)('http://www.w3.org/ns/pim/pad#');
|
|
80
80
|
|
|
81
81
|
/**
|