solid-ui 2.4.28-7b1c0b2d → 2.4.28-7d93d5d2

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.
@@ -10,7 +10,7 @@ export declare function generatePublicKey(privateKey: string): string;
10
10
  */
11
11
  export declare function getPublicKey(webId: NamedNode): Promise<string | undefined>;
12
12
  export declare function validPublicKey(webId: NamedNode, publicKey: string | undefined, privateKey: string): boolean;
13
- export declare function generateAndStorePublicKey(webId: NamedNode, privateKey: string, publicKey: string | undefined, publicKeyDoc: string): Promise<void>;
13
+ export declare function generateAndStoreNewPublicKey(webId: NamedNode, privateKey: string, publicKey: string | undefined, publicKeyDoc: string): Promise<void>;
14
14
  export declare function createAndSaveKeyPairs(webId: NamedNode, publicKey: string | undefined, privateKeyDoc: string, publicKeyDoc: string): Promise<string>;
15
15
  export declare function getPrivateKey(webId: NamedNode): Promise<string>;
16
16
  //# sourceMappingURL=keys.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/chat/keys.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAKlC,wBAAgB,kBAAkB,IAAK,MAAM,CAE5C;AAED,wBAAgB,iBAAiB,CAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAE,KAAK,EAAE,SAAS,+BAgBnD;AAED,wBAAgB,cAAc,CAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAM5G;AAED,wBAAsB,yBAAyB,CAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,MAAM,iBAKzI;AAED,wBAAsB,qBAAqB,CAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mBAQxI;AAED,wBAAsB,aAAa,CAAE,KAAK,EAAE,SAAS,mBAoBpD"}
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/chat/keys.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAKlC,wBAAgB,kBAAkB,IAAK,MAAM,CAE5C;AAED,wBAAgB,iBAAiB,CAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAE,KAAK,EAAE,SAAS,+BAgBnD;AAED,wBAAgB,cAAc,CAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAM5G;AAED,wBAAsB,4BAA4B,CAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,MAAM,iBAK5I;AAED,wBAAsB,qBAAqB,CAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mBAQxI;AAED,wBAAsB,aAAa,CAAE,KAAK,EAAE,SAAS,mBAoBpD"}
package/lib/chat/keys.js CHANGED
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.createAndSaveKeyPairs = createAndSaveKeyPairs;
9
- exports.generateAndStorePublicKey = generateAndStorePublicKey;
9
+ exports.generateAndStoreNewPublicKey = generateAndStoreNewPublicKey;
10
10
  exports.generatePrivateKey = generatePrivateKey;
11
11
  exports.generatePublicKey = generatePublicKey;
12
12
  exports.getPrivateKey = getPrivateKey;
@@ -89,11 +89,11 @@ function validPublicKey(webId, publicKey, privateKey) {
89
89
  }
90
90
  return true;
91
91
  }
92
- function generateAndStorePublicKey(_x2, _x3, _x4, _x5) {
93
- return _generateAndStorePublicKey.apply(this, arguments);
92
+ function generateAndStoreNewPublicKey(_x2, _x3, _x4, _x5) {
93
+ return _generateAndStoreNewPublicKey.apply(this, arguments);
94
94
  }
95
- function _generateAndStorePublicKey() {
96
- _generateAndStorePublicKey = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(webId, privateKey, publicKey, publicKeyDoc) {
95
+ function _generateAndStoreNewPublicKey() {
96
+ _generateAndStoreNewPublicKey = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(webId, privateKey, publicKey, publicKeyDoc) {
97
97
  var del, newPublicKey, add;
98
98
  return _regenerator["default"].wrap(function _callee3$(_context3) {
99
99
  while (1) switch (_context3.prev = _context3.next) {
@@ -109,7 +109,7 @@ function _generateAndStorePublicKey() {
109
109
  }
110
110
  }, _callee3);
111
111
  }));
112
- return _generateAndStorePublicKey.apply(this, arguments);
112
+ return _generateAndStoreNewPublicKey.apply(this, arguments);
113
113
  }
114
114
  function createAndSaveKeyPairs(_x6, _x7, _x8, _x9) {
115
115
  return _createAndSaveKeyPairs.apply(this, arguments);
@@ -126,7 +126,7 @@ function _createAndSaveKeyPairs() {
126
126
  return saveKeyAndHandleAcl(privateKeyDoc, [], add, webId.uri);
127
127
  case 4:
128
128
  _context4.next = 6;
129
- return generateAndStorePublicKey(webId, privateKey, publicKey, publicKeyDoc);
129
+ return generateAndStoreNewPublicKey(webId, privateKey, publicKey, publicKeyDoc);
130
130
  case 6:
131
131
  return _context4.abrupt("return", privateKey);
132
132
  case 7:
@@ -179,7 +179,7 @@ function _getPrivateKey() {
179
179
  break;
180
180
  }
181
181
  _context5.next = 21;
182
- return generateAndStorePublicKey(webId, privateKey, publicKey, publicKeyDoc);
182
+ return generateAndStoreNewPublicKey(webId, privateKey, publicKey, publicKeyDoc);
183
183
  case 21:
184
184
  keyContainer = privateKeyDoc.substring(0, privateKeyDoc.lastIndexOf('/') + 1);
185
185
  _context5.next = 24;
@@ -1 +1 @@
1
- {"version":3,"file":"keys.js","names":["debug","_interopRequireWildcard","require","_secp256k","_utils","ns","_solidLogic","$rdf","_accessData","_acl","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","generatePrivateKey","bytesToHex","schnorr","utils","randomPrivateKey","generatePublicKey","privateKey","getPublicKey","_x","_getPublicKey","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee2","webId","publicKeyDoc","wrap","_callee2$","_context2","prev","next","store","fetcher","load","pubKeyUrl","sent","any","solid","abrupt","value","t0","error","undefined","t1","stop","validPublicKey","publicKey","confirm","uri","generateAndStorePublicKey","_x2","_x3","_x4","_x5","_generateAndStorePublicKey","_callee3","del","newPublicKey","add","_callee3$","_context3","st","lit","sym","literal","saveKeyAndHandleAcl","createAndSaveKeyPairs","_x6","_x7","_x8","_x9","_createAndSaveKeyPairs","_callee4","privateKeyDoc","_callee4$","_context4","getPrivateKey","_x10","_getPrivateKey","_callee5","keyContainer","_callee5$","_context5","privKeyUrl","getExistingPublicKey","getExistingPrivateKey","substring","lastIndexOf","setAcl","keyContainerAclBody","deleteKeyAcl","_ref","_callee","keyDoc","keyAclDoc","response","_callee$","_context","webOperation","log","status","Error","_x11","_x12","_x13","_x14","_saveKeyAndHandleAcl","me","length","_callee6","aclBody","_callee6$","_context6","updater","updateMany","keyAclBody"],"sources":["../../src/chat/keys.ts"],"sourcesContent":["import * as debug from '../debug'\r\nimport { schnorr } from '@noble/curves/secp256k1'\r\nimport { bytesToHex } from '@noble/hashes/utils'\r\nimport * as ns from '../ns'\r\nimport { store } from 'solid-logic'\r\nimport { NamedNode } from 'rdflib'\r\nimport * as $rdf from 'rdflib'\r\nimport { getExistingPublicKey, pubKeyUrl, privKeyUrl, getExistingPrivateKey } from '../utils/keyHelpers/accessData'\r\nimport { setAcl, keyContainerAclBody, keyAclBody } from '../utils/keyHelpers/acl'\r\n\r\nexport function generatePrivateKey (): string {\r\n return bytesToHex(schnorr.utils.randomPrivateKey())\r\n}\r\n\r\nexport function generatePublicKey (privateKey: string): string {\r\n return bytesToHex(schnorr.getPublicKey(privateKey))\r\n}\r\n\r\n/**\r\n * getPublicKey\r\n * used for displaying messages in chat, therefore does not\r\n * create a new key if not found\r\n * @param webId\r\n * @returns string | undefined\r\n */\r\nexport async function getPublicKey (webId: NamedNode) {\r\n try {\r\n await store.fetcher.load(webId)\r\n const publicKeyDoc = await pubKeyUrl(webId)\r\n try {\r\n await store.fetcher.load(publicKeyDoc) // url.href)\r\n const key = store.any(webId, ns.solid('publicKey'))\r\n return key?.value // as NamedNode\r\n } catch (err) {\r\n debug.error(err)\r\n return undefined\r\n }\r\n } catch (err) {\r\n debug.error(err)\r\n return undefined\r\n }\r\n}\r\n\r\nexport function validPublicKey (webId: NamedNode, publicKey: string | undefined, privateKey: string): boolean {\r\n if (privateKey && (publicKey !== generatePublicKey(privateKey as string))) {\r\n if (confirm('This is strange the publicKey is not valid for\\n' + webId?.uri +\r\n '\\'shall we repair keeping the private key ?')) return false\r\n }\r\n return true\r\n}\r\n\r\nexport async function generateAndStorePublicKey (webId: NamedNode, privateKey: string, publicKey: string | undefined, publicKeyDoc: string) {\r\n const del = [$rdf.st(webId, ns.solid('publicKey'), $rdf.lit(publicKey || ''), store.sym(publicKeyDoc))]\r\n const newPublicKey = generatePublicKey(privateKey)\r\n const add = [$rdf.st(webId, ns.solid('publicKey'), $rdf.literal(newPublicKey), store.sym(publicKeyDoc))]\r\n await saveKeyAndHandleAcl(publicKeyDoc, del, add)\r\n}\r\n\r\nexport async function createAndSaveKeyPairs (webId: NamedNode, publicKey: string | undefined, privateKeyDoc: string, publicKeyDoc: string) {\r\n const privateKey = generatePrivateKey()\r\n const add = [$rdf.st(webId, ns.solid('privateKey'), $rdf.literal(privateKey), store.sym(privateKeyDoc))]\r\n await saveKeyAndHandleAcl(privateKeyDoc, [], add, webId.uri)\r\n\r\n await generateAndStorePublicKey(webId, privateKey, publicKey, publicKeyDoc)\r\n\r\n return privateKey\r\n}\r\n\r\nexport async function getPrivateKey (webId: NamedNode) {\r\n await store.fetcher.load(webId)\r\n // find keys url's\r\n const publicKeyDoc = await pubKeyUrl(webId)\r\n const privateKeyDoc = await privKeyUrl(webId)\r\n\r\n // find key pair\r\n const publicKey = await getExistingPublicKey(webId, publicKeyDoc)\r\n let privateKey = await getExistingPrivateKey(webId, privateKeyDoc)\r\n\r\n if (!privateKey) {\r\n privateKey = await createAndSaveKeyPairs(webId, publicKey, privateKeyDoc, publicKeyDoc)\r\n }\r\n if (!validPublicKey(webId, publicKey, privateKey)) {\r\n await generateAndStorePublicKey(webId, privateKey, publicKey, publicKeyDoc)\r\n }\r\n\r\n const keyContainer = privateKeyDoc.substring(0, privateKeyDoc.lastIndexOf('/') + 1)\r\n await setAcl(keyContainer, keyContainerAclBody(webId.uri)) // includes DELETE and PUT\r\n return privateKey as string\r\n}\r\n\r\nconst deleteKeyAcl = async (keyDoc: string) => {\r\n await store.fetcher.load(keyDoc)\r\n\r\n const keyAclDoc = store.any(store.sym(keyDoc), store.sym('http://www.iana.org/assignments/link-relations/acl'))\r\n if (keyAclDoc) {\r\n // delete READ only keyAclDoc. This is possible if the webId is an owner\r\n try {\r\n const response = await store.fetcher.webOperation('DELETE', keyAclDoc.value) // this may fail if webId is not an owner\r\n debug.log('delete ' + keyAclDoc.value + ' ' + response.status) // should test 404 and 2xx\r\n } catch (err) {\r\n if (err.response.status !== 404) { throw new Error(err) }\r\n debug.log('delete ' + keyAclDoc.value + ' ' + err.response.status) // should test 404 and 2xx\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * delete acl if keydoc exists\r\n * create/edit keyDoc\r\n * set keyDoc acl\r\n */\r\nasync function saveKeyAndHandleAcl (keyDoc: string, del, add, me: string = '') {\r\n await deleteKeyAcl(keyDoc)\r\n // save key\r\n await store.updater.updateMany(del, add) // or a promise store.updater.update ?\r\n\r\n // create READ only ACL\r\n const aclBody = keyAclBody(keyDoc, me)\r\n await setAcl(keyDoc, aclBody)\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,EAAA,GAAAJ,uBAAA,CAAAC,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AAEA,IAAAK,IAAA,GAAAN,uBAAA,CAAAC,OAAA;AACA,IAAAM,WAAA,GAAAN,OAAA;AACA,IAAAO,IAAA,GAAAP,OAAA;AAAiF,SAAAQ,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAV,wBAAAc,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,aAAAE,OAAA,CAAAF,GAAA,yBAAAA,GAAA,uCAAAA,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,cAAAN,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAE1E,SAASW,kBAAkBA,CAAA,EAAY;EAC5C,OAAO,IAAAC,iBAAU,EAACC,iBAAO,CAACC,KAAK,CAACC,gBAAgB,EAAE,CAAC;AACrD;AAEO,SAASC,iBAAiBA,CAAEC,UAAkB,EAAU;EAC7D,OAAO,IAAAL,iBAAU,EAACC,iBAAO,CAACK,YAAY,CAACD,UAAU,CAAC,CAAC;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AANA,SAOsBC,YAAYA,CAAAC,EAAA;EAAA,OAAAC,aAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,cAAA;EAAAA,aAAA,OAAAG,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAA3B,SAAAC,SAA6BC,KAAgB;IAAA,IAAAC,YAAA,EAAAvB,GAAA;IAAA,OAAAmB,YAAA,YAAAK,IAAA,UAAAC,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAAE,IAAA;QAAA;UAAAF,SAAA,CAAAC,IAAA;UAAAD,SAAA,CAAAE,IAAA;UAAA,OAE1CC,iBAAK,CAACC,OAAO,CAACC,IAAI,CAACT,KAAK,CAAC;QAAA;UAAAI,SAAA,CAAAE,IAAA;UAAA,OACJ,IAAAI,qBAAS,EAACV,KAAK,CAAC;QAAA;UAArCC,YAAY,GAAAG,SAAA,CAAAO,IAAA;UAAAP,SAAA,CAAAC,IAAA;UAAAD,SAAA,CAAAE,IAAA;UAAA,OAEVC,iBAAK,CAACC,OAAO,CAACC,IAAI,CAACR,YAAY,CAAC;QAAA;UAAC;UACjCvB,GAAG,GAAG6B,iBAAK,CAACK,GAAG,CAACZ,KAAK,EAAE3C,EAAE,CAACwD,KAAK,CAAC,WAAW,CAAC,CAAC;UAAA,OAAAT,SAAA,CAAAU,MAAA,WAC5CpC,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEqC,KAAK;QAAA;UAAAX,SAAA,CAAAC,IAAA;UAAAD,SAAA,CAAAY,EAAA,GAAAZ,SAAA;UAEjBpD,KAAK,CAACiE,KAAK,CAAAb,SAAA,CAAAY,EAAA,CAAK;UAAA,OAAAZ,SAAA,CAAAU,MAAA,WACTI,SAAS;QAAA;UAAAd,SAAA,CAAAE,IAAA;UAAA;QAAA;UAAAF,SAAA,CAAAC,IAAA;UAAAD,SAAA,CAAAe,EAAA,GAAAf,SAAA;UAGlBpD,KAAK,CAACiE,KAAK,CAAAb,SAAA,CAAAe,EAAA,CAAK;UAAA,OAAAf,SAAA,CAAAU,MAAA,WACTI,SAAS;QAAA;QAAA;UAAA,OAAAd,SAAA,CAAAgB,IAAA;MAAA;IAAA,GAAArB,QAAA;EAAA,CAEnB;EAAA,OAAAN,aAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAEM,SAAS0B,cAAcA,CAAErB,KAAgB,EAAEsB,SAA6B,EAAEhC,UAAkB,EAAW;EAC5G,IAAIA,UAAU,IAAKgC,SAAS,KAAKjC,iBAAiB,CAACC,UAAU,CAAY,EAAE;IACzE,IAAIiC,OAAO,CAAC,kDAAkD,IAAGvB,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEwB,GAAG,IAC1E,6CAA6C,CAAC,EAAE,OAAO,KAAK;EAC/D;EACA,OAAO,IAAI;AACb;AAAC,SAEqBC,yBAAyBA,CAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,0BAAA,CAAApC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAmC,2BAAA;EAAAA,0BAAA,OAAAlC,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAAxC,SAAAiC,SAA0C/B,KAAgB,EAAEV,UAAkB,EAAEgC,SAA6B,EAAErB,YAAoB;IAAA,IAAA+B,GAAA,EAAAC,YAAA,EAAAC,GAAA;IAAA,OAAArC,YAAA,YAAAK,IAAA,UAAAiC,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAA/B,IAAA,GAAA+B,SAAA,CAAA9B,IAAA;QAAA;UAClI0B,GAAG,GAAG,CAACzE,IAAI,CAAC8E,EAAE,CAACrC,KAAK,EAAE3C,EAAE,CAACwD,KAAK,CAAC,WAAW,CAAC,EAAEtD,IAAI,CAAC+E,GAAG,CAAChB,SAAS,IAAI,EAAE,CAAC,EAAEf,iBAAK,CAACgC,GAAG,CAACtC,YAAY,CAAC,CAAC,CAAC;UACjGgC,YAAY,GAAG5C,iBAAiB,CAACC,UAAU,CAAC;UAC5C4C,GAAG,GAAG,CAAC3E,IAAI,CAAC8E,EAAE,CAACrC,KAAK,EAAE3C,EAAE,CAACwD,KAAK,CAAC,WAAW,CAAC,EAAEtD,IAAI,CAACiF,OAAO,CAACP,YAAY,CAAC,EAAE1B,iBAAK,CAACgC,GAAG,CAACtC,YAAY,CAAC,CAAC,CAAC;UAAAmC,SAAA,CAAA9B,IAAA;UAAA,OAClGmC,mBAAmB,CAACxC,YAAY,EAAE+B,GAAG,EAAEE,GAAG,CAAC;QAAA;QAAA;UAAA,OAAAE,SAAA,CAAAhB,IAAA;MAAA;IAAA,GAAAW,QAAA;EAAA,CAClD;EAAA,OAAAD,0BAAA,CAAApC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAEqB+C,qBAAqBA,CAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,sBAAA,CAAArD,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAoD,uBAAA;EAAAA,sBAAA,OAAAnD,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAApC,SAAAkD,SAAsChD,KAAgB,EAAEsB,SAA6B,EAAE2B,aAAqB,EAAEhD,YAAoB;IAAA,IAAAX,UAAA,EAAA4C,GAAA;IAAA,OAAArC,YAAA,YAAAK,IAAA,UAAAgD,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAA9C,IAAA,GAAA8C,SAAA,CAAA7C,IAAA;QAAA;UACjIhB,UAAU,GAAGN,kBAAkB,EAAE;UACjCkD,GAAG,GAAG,CAAC3E,IAAI,CAAC8E,EAAE,CAACrC,KAAK,EAAE3C,EAAE,CAACwD,KAAK,CAAC,YAAY,CAAC,EAAEtD,IAAI,CAACiF,OAAO,CAAClD,UAAU,CAAC,EAAEiB,iBAAK,CAACgC,GAAG,CAACU,aAAa,CAAC,CAAC,CAAC;UAAAE,SAAA,CAAA7C,IAAA;UAAA,OAClGmC,mBAAmB,CAACQ,aAAa,EAAE,EAAE,EAAEf,GAAG,EAAElC,KAAK,CAACwB,GAAG,CAAC;QAAA;UAAA2B,SAAA,CAAA7C,IAAA;UAAA,OAEtDmB,yBAAyB,CAACzB,KAAK,EAAEV,UAAU,EAAEgC,SAAS,EAAErB,YAAY,CAAC;QAAA;UAAA,OAAAkD,SAAA,CAAArC,MAAA,WAEpExB,UAAU;QAAA;QAAA;UAAA,OAAA6D,SAAA,CAAA/B,IAAA;MAAA;IAAA,GAAA4B,QAAA;EAAA,CAClB;EAAA,OAAAD,sBAAA,CAAArD,KAAA,OAAAC,SAAA;AAAA;AAAA,SAEqByD,aAAaA,CAAAC,IAAA;EAAA,OAAAC,cAAA,CAAA5D,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAA2D,eAAA;EAAAA,cAAA,OAAA1D,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAA5B,SAAAyD,SAA8BvD,KAAgB;IAAA,IAAAC,YAAA,EAAAgD,aAAA,EAAA3B,SAAA,EAAAhC,UAAA,EAAAkE,YAAA;IAAA,OAAA3D,YAAA,YAAAK,IAAA,UAAAuD,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAArD,IAAA,GAAAqD,SAAA,CAAApD,IAAA;QAAA;UAAAoD,SAAA,CAAApD,IAAA;UAAA,OAC7CC,iBAAK,CAACC,OAAO,CAACC,IAAI,CAACT,KAAK,CAAC;QAAA;UAAA0D,SAAA,CAAApD,IAAA;UAAA,OAEJ,IAAAI,qBAAS,EAACV,KAAK,CAAC;QAAA;UAArCC,YAAY,GAAAyD,SAAA,CAAA/C,IAAA;UAAA+C,SAAA,CAAApD,IAAA;UAAA,OACU,IAAAqD,sBAAU,EAAC3D,KAAK,CAAC;QAAA;UAAvCiD,aAAa,GAAAS,SAAA,CAAA/C,IAAA;UAAA+C,SAAA,CAAApD,IAAA;UAAA,OAGK,IAAAsD,gCAAoB,EAAC5D,KAAK,EAAEC,YAAY,CAAC;QAAA;UAA3DqB,SAAS,GAAAoC,SAAA,CAAA/C,IAAA;UAAA+C,SAAA,CAAApD,IAAA;UAAA,OACQ,IAAAuD,iCAAqB,EAAC7D,KAAK,EAAEiD,aAAa,CAAC;QAAA;UAA9D3D,UAAU,GAAAoE,SAAA,CAAA/C,IAAA;UAAA,IAETrB,UAAU;YAAAoE,SAAA,CAAApD,IAAA;YAAA;UAAA;UAAAoD,SAAA,CAAApD,IAAA;UAAA,OACMoC,qBAAqB,CAAC1C,KAAK,EAAEsB,SAAS,EAAE2B,aAAa,EAAEhD,YAAY,CAAC;QAAA;UAAvFX,UAAU,GAAAoE,SAAA,CAAA/C,IAAA;QAAA;UAAA,IAEPU,cAAc,CAACrB,KAAK,EAAEsB,SAAS,EAAEhC,UAAU,CAAC;YAAAoE,SAAA,CAAApD,IAAA;YAAA;UAAA;UAAAoD,SAAA,CAAApD,IAAA;UAAA,OACzCmB,yBAAyB,CAACzB,KAAK,EAAEV,UAAU,EAAEgC,SAAS,EAAErB,YAAY,CAAC;QAAA;UAGvEuD,YAAY,GAAGP,aAAa,CAACa,SAAS,CAAC,CAAC,EAAEb,aAAa,CAACc,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;UAAAL,SAAA,CAAApD,IAAA;UAAA,OAC7E,IAAA0D,WAAM,EAACR,YAAY,EAAE,IAAAS,wBAAmB,EAACjE,KAAK,CAACwB,GAAG,CAAC,CAAC;QAAA;UAAA,OAAAkC,SAAA,CAAA5C,MAAA,WACnDxB,UAAU;QAAA;QAAA;UAAA,OAAAoE,SAAA,CAAAtC,IAAA;MAAA;IAAA,GAAAmC,QAAA;EAAA,CAClB;EAAA,OAAAD,cAAA,CAAA5D,KAAA,OAAAC,SAAA;AAAA;AAED,IAAMuE,YAAY;EAAA,IAAAC,IAAA,OAAAvE,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAAG,SAAAsE,QAAOC,MAAc;IAAA,IAAAC,SAAA,EAAAC,QAAA;IAAA,OAAA1E,YAAA,YAAAK,IAAA,UAAAsE,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAApE,IAAA,GAAAoE,QAAA,CAAAnE,IAAA;QAAA;UAAAmE,QAAA,CAAAnE,IAAA;UAAA,OAClCC,iBAAK,CAACC,OAAO,CAACC,IAAI,CAAC4D,MAAM,CAAC;QAAA;UAE1BC,SAAS,GAAG/D,iBAAK,CAACK,GAAG,CAACL,iBAAK,CAACgC,GAAG,CAAC8B,MAAM,CAAC,EAAE9D,iBAAK,CAACgC,GAAG,CAAC,oDAAoD,CAAC,CAAC;UAAA,KAC3G+B,SAAS;YAAAG,QAAA,CAAAnE,IAAA;YAAA;UAAA;UAAAmE,QAAA,CAAApE,IAAA;UAAAoE,QAAA,CAAAnE,IAAA;UAAA,OAGcC,iBAAK,CAACC,OAAO,CAACkE,YAAY,CAAC,QAAQ,EAAEJ,SAAS,CAACvD,KAAK,CAAC;QAAA;UAAtEwD,QAAQ,GAAAE,QAAA,CAAA9D,IAAA;UAA+D;UAC7E3D,KAAK,CAAC2H,GAAG,CAAC,SAAS,GAAGL,SAAS,CAACvD,KAAK,GAAG,GAAG,GAAGwD,QAAQ,CAACK,MAAM,CAAC,EAAC;UAAAH,QAAA,CAAAnE,IAAA;UAAA;QAAA;UAAAmE,QAAA,CAAApE,IAAA;UAAAoE,QAAA,CAAAzD,EAAA,GAAAyD,QAAA;UAAA,MAE3DA,QAAA,CAAAzD,EAAA,CAAIuD,QAAQ,CAACK,MAAM,KAAK,GAAG;YAAAH,QAAA,CAAAnE,IAAA;YAAA;UAAA;UAAA,MAAU,IAAIuE,KAAK,CAAAJ,QAAA,CAAAzD,EAAA,CAAK;QAAA;UACvDhE,KAAK,CAAC2H,GAAG,CAAC,SAAS,GAAGL,SAAS,CAACvD,KAAK,GAAG,GAAG,GAAG0D,QAAA,CAAAzD,EAAA,CAAIuD,QAAQ,CAACK,MAAM,CAAC,EAAC;QAAA;QAAA;UAAA,OAAAH,QAAA,CAAArD,IAAA;MAAA;IAAA,GAAAgD,OAAA;EAAA,CAGxE;EAAA,gBAdKF,YAAYA,CAAAY,IAAA;IAAA,OAAAX,IAAA,CAAAzE,KAAA,OAAAC,SAAA;EAAA;AAAA,GAcjB;;AAED;AACA;AACA;AACA;AACA;AAJA,SAKe8C,mBAAmBA,CAAAsC,IAAA,EAAAC,IAAA,EAAAC,IAAA;EAAA,OAAAC,oBAAA,CAAAxF,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAuF,qBAAA;EAAAA,oBAAA,OAAAtF,kBAAA,aAAlC,UAAoCyE,MAAc,EAAErC,GAAG,EAAEE,GAAG;IAAA,IAAEiD,EAAU,GAAAxF,SAAA,CAAAyF,MAAA,QAAAzF,SAAA,QAAAuB,SAAA,GAAAvB,SAAA,MAAG,EAAE;IAAA,oBAAAE,YAAA,YAAAC,IAAA,UAAAuF,SAAA;MAAA,IAAAC,OAAA;MAAA,OAAAzF,YAAA,YAAAK,IAAA,UAAAqF,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAnF,IAAA,GAAAmF,SAAA,CAAAlF,IAAA;UAAA;YAAAkF,SAAA,CAAAlF,IAAA;YAAA,OACrE4D,YAAY,CAACG,MAAM,CAAC;UAAA;YAAAmB,SAAA,CAAAlF,IAAA;YAAA,OAEpBC,iBAAK,CAACkF,OAAO,CAACC,UAAU,CAAC1D,GAAG,EAAEE,GAAG,CAAC;UAAA;YAAC;YAEzC;YACMoD,OAAO,GAAG,IAAAK,eAAU,EAACtB,MAAM,EAAEc,EAAE,CAAC;YAAAK,SAAA,CAAAlF,IAAA;YAAA,OAChC,IAAA0D,WAAM,EAACK,MAAM,EAAEiB,OAAO,CAAC;UAAA;UAAA;YAAA,OAAAE,SAAA,CAAApE,IAAA;QAAA;MAAA,GAAAiE,QAAA;IAAA;EAAA,CAC9B;EAAA,OAAAH,oBAAA,CAAAxF,KAAA,OAAAC,SAAA;AAAA"}
1
+ {"version":3,"file":"keys.js","names":["debug","_interopRequireWildcard","require","_secp256k","_utils","ns","_solidLogic","$rdf","_accessData","_acl","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","generatePrivateKey","bytesToHex","schnorr","utils","randomPrivateKey","generatePublicKey","privateKey","getPublicKey","_x","_getPublicKey","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee2","webId","publicKeyDoc","wrap","_callee2$","_context2","prev","next","store","fetcher","load","pubKeyUrl","sent","any","solid","abrupt","value","t0","error","undefined","t1","stop","validPublicKey","publicKey","confirm","uri","generateAndStoreNewPublicKey","_x2","_x3","_x4","_x5","_generateAndStoreNewPublicKey","_callee3","del","newPublicKey","add","_callee3$","_context3","st","lit","sym","literal","saveKeyAndHandleAcl","createAndSaveKeyPairs","_x6","_x7","_x8","_x9","_createAndSaveKeyPairs","_callee4","privateKeyDoc","_callee4$","_context4","getPrivateKey","_x10","_getPrivateKey","_callee5","keyContainer","_callee5$","_context5","privKeyUrl","getExistingPublicKey","getExistingPrivateKey","substring","lastIndexOf","setAcl","keyContainerAclBody","deleteKeyAcl","_ref","_callee","keyDoc","keyAclDoc","response","_callee$","_context","webOperation","log","status","Error","_x11","_x12","_x13","_x14","_saveKeyAndHandleAcl","me","length","_callee6","aclBody","_callee6$","_context6","updater","updateMany","keyAclBody"],"sources":["../../src/chat/keys.ts"],"sourcesContent":["import * as debug from '../debug'\r\nimport { schnorr } from '@noble/curves/secp256k1'\r\nimport { bytesToHex } from '@noble/hashes/utils'\r\nimport * as ns from '../ns'\r\nimport { store } from 'solid-logic'\r\nimport { NamedNode } from 'rdflib'\r\nimport * as $rdf from 'rdflib'\r\nimport { getExistingPublicKey, pubKeyUrl, privKeyUrl, getExistingPrivateKey } from '../utils/keyHelpers/accessData'\r\nimport { setAcl, keyContainerAclBody, keyAclBody } from '../utils/keyHelpers/acl'\r\n\r\nexport function generatePrivateKey (): string {\r\n return bytesToHex(schnorr.utils.randomPrivateKey())\r\n}\r\n\r\nexport function generatePublicKey (privateKey: string): string {\r\n return bytesToHex(schnorr.getPublicKey(privateKey))\r\n}\r\n\r\n/**\r\n * getPublicKey\r\n * used for displaying messages in chat, therefore does not\r\n * create a new key if not found\r\n * @param webId\r\n * @returns string | undefined\r\n */\r\nexport async function getPublicKey (webId: NamedNode) {\r\n try {\r\n await store.fetcher.load(webId)\r\n const publicKeyDoc = await pubKeyUrl(webId)\r\n try {\r\n await store.fetcher.load(publicKeyDoc) // url.href)\r\n const key = store.any(webId, ns.solid('publicKey'))\r\n return key?.value // as NamedNode\r\n } catch (err) {\r\n debug.error(err)\r\n return undefined\r\n }\r\n } catch (err) {\r\n debug.error(err)\r\n return undefined\r\n }\r\n}\r\n\r\nexport function validPublicKey (webId: NamedNode, publicKey: string | undefined, privateKey: string): boolean {\r\n if (privateKey && (publicKey !== generatePublicKey(privateKey as string))) {\r\n if (confirm('This is strange the publicKey is not valid for\\n' + webId?.uri +\r\n '\\'shall we repair keeping the private key ?')) return false\r\n }\r\n return true\r\n}\r\n\r\nexport async function generateAndStoreNewPublicKey (webId: NamedNode, privateKey: string, publicKey: string | undefined, publicKeyDoc: string) {\r\n const del = [$rdf.st(webId, ns.solid('publicKey'), $rdf.lit(publicKey || ''), store.sym(publicKeyDoc))]\r\n const newPublicKey = generatePublicKey(privateKey)\r\n const add = [$rdf.st(webId, ns.solid('publicKey'), $rdf.literal(newPublicKey), store.sym(publicKeyDoc))]\r\n await saveKeyAndHandleAcl(publicKeyDoc, del, add)\r\n}\r\n\r\nexport async function createAndSaveKeyPairs (webId: NamedNode, publicKey: string | undefined, privateKeyDoc: string, publicKeyDoc: string) {\r\n const privateKey = generatePrivateKey()\r\n const add = [$rdf.st(webId, ns.solid('privateKey'), $rdf.literal(privateKey), store.sym(privateKeyDoc))]\r\n await saveKeyAndHandleAcl(privateKeyDoc, [], add, webId.uri)\r\n\r\n await generateAndStoreNewPublicKey(webId, privateKey, publicKey, publicKeyDoc)\r\n\r\n return privateKey\r\n}\r\n\r\nexport async function getPrivateKey (webId: NamedNode) {\r\n await store.fetcher.load(webId)\r\n // find keys url's\r\n const publicKeyDoc = await pubKeyUrl(webId)\r\n const privateKeyDoc = await privKeyUrl(webId)\r\n\r\n // find key pair\r\n const publicKey = await getExistingPublicKey(webId, publicKeyDoc)\r\n let privateKey = await getExistingPrivateKey(webId, privateKeyDoc)\r\n\r\n if (!privateKey) {\r\n privateKey = await createAndSaveKeyPairs(webId, publicKey, privateKeyDoc, publicKeyDoc)\r\n }\r\n if (!validPublicKey(webId, publicKey, privateKey)) {\r\n await generateAndStoreNewPublicKey(webId, privateKey, publicKey, publicKeyDoc)\r\n }\r\n\r\n const keyContainer = privateKeyDoc.substring(0, privateKeyDoc.lastIndexOf('/') + 1)\r\n await setAcl(keyContainer, keyContainerAclBody(webId.uri)) // includes DELETE and PUT\r\n return privateKey as string\r\n}\r\n\r\nconst deleteKeyAcl = async (keyDoc: string) => {\r\n await store.fetcher.load(keyDoc)\r\n\r\n const keyAclDoc = store.any(store.sym(keyDoc), store.sym('http://www.iana.org/assignments/link-relations/acl'))\r\n if (keyAclDoc) {\r\n // delete READ only keyAclDoc. This is possible if the webId is an owner\r\n try {\r\n const response = await store.fetcher.webOperation('DELETE', keyAclDoc.value) // this may fail if webId is not an owner\r\n debug.log('delete ' + keyAclDoc.value + ' ' + response.status) // should test 404 and 2xx\r\n } catch (err) {\r\n if (err.response.status !== 404) { throw new Error(err) }\r\n debug.log('delete ' + keyAclDoc.value + ' ' + err.response.status) // should test 404 and 2xx\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * delete acl if keydoc exists\r\n * create/edit keyDoc\r\n * set keyDoc acl\r\n */\r\nasync function saveKeyAndHandleAcl (keyDoc: string, del, add, me: string = '') {\r\n await deleteKeyAcl(keyDoc)\r\n // save key\r\n await store.updater.updateMany(del, add) // or a promise store.updater.update ?\r\n\r\n // create READ only ACL\r\n const aclBody = keyAclBody(keyDoc, me)\r\n await setAcl(keyDoc, aclBody)\r\n}\r\n"],"mappings":"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"}
@@ -144,23 +144,20 @@ function renderMessageRow(_x, _x2, _x3, _x4, _x5) {
144
144
  } // END OF RENDERMESSAGE
145
145
  function _renderMessageRow() {
146
146
  _renderMessageRow = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9(channelObject, message, fresh, options, userContext) {
147
- var unsignedMessage, colorizeByAuthor, creator, date, latestVersion, latestVersionCreator, msgId, content, versions, replies, thread, straightReplies, _iterator2, _step2, reply, signature, msg, originalMessage, edited, sortDate, messageRow, td1, img, bothDates, td2, text, isURI, para, isImage, _img, anc, bgcolor, getBgColor, strip, td3, toolsButton;
147
+ var colorizeByAuthor, creator, date, latestVersion, latestVersionCreator, msgId, content, versions, replies, thread, straightReplies, _iterator2, _step2, reply, signature, msg, messageRow, publicKey, regex, validSignature, validPublicKeyHexString, originalMessage, edited, sortDate, td1, img, bothDates, td2, text, isURI, para, isImage, _img, anc, bgcolor, getBgColor, strip, td3, toolsButton;
148
148
  return _regenerator["default"].wrap(function _callee9$(_context10) {
149
149
  while (1) switch (_context10.prev = _context10.next) {
150
150
  case 0:
151
151
  getBgColor = function _getBgColor(fresh) {
152
152
  return fresh ? '#e8ffe8' : 'white';
153
153
  };
154
- unsignedMessage = false;
155
- colorizeByAuthor = options.colorizeByAuthor === '1' || options.colorizeByAuthor === true; // const id = store.any(latestVersion, ns.sioc('id'))
156
- // const replies = store.each(latestVersion, ns.sioc('has_reply'))
154
+ colorizeByAuthor = options.colorizeByAuthor === '1' || options.colorizeByAuthor === true;
157
155
  creator = _solidLogic.store.any(message, ns.foaf('maker'));
158
156
  date = _solidLogic.store.any(message, ns.dct('created'));
159
- _context10.next = 7;
157
+ _context10.next = 6;
160
158
  return (0, _chatLogic.mostRecentVersion)(message);
161
- case 7:
159
+ case 6:
162
160
  latestVersion = _context10.sent;
163
- debug.log('@@@@ alain mostRecentVersion');
164
161
  debug.log(message);
165
162
  debug.log(latestVersion);
166
163
  latestVersionCreator = _solidLogic.store.any(latestVersion, ns.foaf('maker')); // use latest content if same owner, else use original
@@ -170,9 +167,9 @@ function _renderMessageRow() {
170
167
  debug.log(latestVersionCreator);
171
168
  msgId = creator.uri === (latestVersionCreator === null || latestVersionCreator === void 0 ? void 0 : latestVersionCreator.uri) ? latestVersion : message;
172
169
  content = _solidLogic.store.any(msgId, ns.sioc('content'));
173
- _context10.next = 19;
170
+ _context10.next = 17;
174
171
  return (0, _chatLogic.allVersions)(msgId);
175
- case 19:
172
+ case 17:
176
173
  versions = _context10.sent;
177
174
  if (versions.length > 1) {
178
175
  debug.log('renderMessageRow versions: ', versions.join(', '));
@@ -214,35 +211,38 @@ function _renderMessageRow() {
214
211
  msg.created = _solidLogic.store.any(msgId, ns.dct('created')).value;
215
212
  msg.content = content.value;
216
213
  msg.maker = creator.uri;
217
-
218
- // verify signature
219
- if (!(signature !== null && signature !== void 0 && signature.value)) {
220
- // unsigned message
221
- unsignedMessage = true;
222
- debug.warn(msgId.uri + ' is unsigned'); // TODO replace with UI (colored message ?)
223
- } else {
224
- // signed message, get public key and check signature
225
- (0, _keys.getPublicKey)(creator).then(function (publicKey) {
226
- debug.log(creator.uri + '\n' + msg.created + '\n' + msg.id + '\n' + publicKey);
227
- if (!publicKey) {
228
- debug.warn('message is signed but ' + creator.uri + ' is missing publicKey');
229
- }
230
- // check that publicKey is a valid hex string
231
- var regex = /[0-9A-Fa-f]{6}/g;
232
- if (!(publicKey !== null && publicKey !== void 0 && publicKey.match(regex))) debug.warn('invalid publicKey hex string\n' + creator.uri + '\n' + publicKey);
233
- // verify signature
234
- else if (signature !== null && signature !== void 0 && signature.value && !(0, _signature.verifySignature)(signature === null || signature === void 0 ? void 0 : signature.value, msg, publicKey)) debug.warn('invalid signature\n' + msg.id);
235
- });
214
+ messageRow = dom.createElement('tr'); // verify signature
215
+ if (signature !== null && signature !== void 0 && signature.value) {
216
+ _context10.next = 38;
217
+ break;
236
218
  }
237
- _context10.next = 38;
238
- return (0, _chatLogic.originalVersion)(message);
219
+ // unsigned message
220
+ messageRow.setAttribute('style', style.textInputBackgroundColorHighlight);
221
+ _context10.next = 48;
222
+ break;
239
223
  case 38:
224
+ _context10.next = 40;
225
+ return (0, _keys.getPublicKey)(creator);
226
+ case 40:
227
+ publicKey = _context10.sent;
228
+ debug.log(creator.uri + '\n' + msg.created + '\n' + msg.id + '\n' + publicKey);
229
+ if (!publicKey) {
230
+ debug.warn('message is signed but ' + creator.uri + ' is missing publicKey');
231
+ }
232
+ // check that publicKey is a valid hex string
233
+ regex = /[0-9A-Fa-f]{6}/g;
234
+ validSignature = (0, _signature.verifySignature)(signature === null || signature === void 0 ? void 0 : signature.value, msg, publicKey);
235
+ validPublicKeyHexString = publicKey === null || publicKey === void 0 ? void 0 : publicKey.match(regex);
236
+ if (!validPublicKeyHexString) debug.warn('invalid publicKey hex string\n' + creator.uri + '\n' + publicKey);else if (signature !== null && signature !== void 0 && signature.value && !validSignature) debug.warn('invalid signature\n' + msg.id);
237
+ if (!validSignature || !validPublicKeyHexString) messageRow.setAttribute('style', style.textInputBackgroundColorError);
238
+ case 48:
239
+ _context10.next = 50;
240
+ return (0, _chatLogic.originalVersion)(message);
241
+ case 50:
240
242
  originalMessage = _context10.sent;
241
243
  edited = !message.sameTerm(originalMessage); // @@ load it first @@ Or display the new data at the old date.
242
244
  // @@@ kludge!
243
245
  sortDate = _solidLogic.store.the(originalMessage, ns.dct('created'), null, originalMessage.doc()) || _solidLogic.store.the(message, ns.dct('created'), null, message.doc()); // In message
244
- messageRow = dom.createElement('tr');
245
- if (unsignedMessage) messageRow.setAttribute('style', 'background-color: red');
246
246
  messageRow.AJAR_date = sortDate.value;
247
247
  messageRow.AJAR_subject = message;
248
248
  td1 = dom.createElement('td');
@@ -293,9 +293,9 @@ function _renderMessageRow() {
293
293
  bgcolor = colorizeByAuthor ? pad.lightColorHash(creator) : getBgColor(fresh);
294
294
  para.setAttribute('style', messageBodyStyle + 'background-color: ' + bgcolor + ';');
295
295
  }
296
- _context10.next = 59;
296
+ _context10.next = 69;
297
297
  return (0, _messageTools.sentimentStripLinked)(message, message.doc());
298
- case 59:
298
+ case 69:
299
299
  strip = _context10.sent;
300
300
  if (strip.children.length) {
301
301
  td2.appendChild(dom.createElement('br'));
@@ -360,7 +360,7 @@ function _renderMessageRow() {
360
360
  }));
361
361
  }
362
362
  return _context10.abrupt("return", messageRow);
363
- case 68:
363
+ case 78:
364
364
  case "end":
365
365
  return _context10.stop();
366
366
  }
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","names":["_infinite","require","_messageTools","_bookmarks","_chatLogic","debug","_interopRequireWildcard","_iconBase","_solidLogic","_login","_index","ns","pad","style","utils","widgets","_signature","_keys","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","F","s","n","done","value","e","_e2","f","TypeError","normalCompletion","didErr","err","step","next","_e3","minLen","_arrayLikeToArray","toString","slice","constructor","name","from","test","arr","len","arr2","dom","window","document","messageBodyStyle","label","elementForImageURI","imageUri","options","img","createElement","height","inlineImageHeightEms","trim","setAttribute","anchor","appendChild","makeDraggable","$rdf","text","term","a","uri","addEventListener","openHrefInOutlineMode","textContent","nickname","person","store","any","foaf","creatorAndDate","td1","creator","date","message","nickAnchor","fetcher","nowOrWhenFetched","doc","undefined","_ok","_body","creatorAndDateHorizontal","dateBit","fontSize","marginLeft","renderMessageRow","_x","_x2","_x3","_x4","_x5","_renderMessageRow","_asyncToGenerator2","_regenerator","mark","_callee9","channelObject","fresh","userContext","unsignedMessage","colorizeByAuthor","latestVersion","latestVersionCreator","msgId","content","versions","replies","thread","straightReplies","_iterator2","_step2","reply","signature","msg","originalMessage","edited","sortDate","messageRow","bothDates","td2","isURI","para","isImage","_img","anc","bgcolor","getBgColor","strip","td3","toolsButton","wrap","_callee9$","_context10","prev","_getBgColor","dct","mostRecentVersion","sent","log","sioc","allVersions","join","map","version","each","flat","holds","rdf","concat","SEC","getBlankMsg","id","created","maker","warn","getPublicKey","then","publicKey","regex","match","verifySignature","originalVersion","sameTerm","the","AJAR_date","AJAR_subject","authorDateOnLeft","setImage","shortDate","expandImagesInline","href","lightColorHash","sentimentStripLinked","children","button","icons","iconBase","_ref4","_callee8","_event","toolsTR","tools","toolsTD","_callee8$","_context9","toolTR","parentNode","removeChild","abrupt","messageToolbar","chatOptions","nextSibling","parentElement","insertBefore","stop","_x20","showThread","_e","switchToEditor","_x6","_x7","_x8","_x9","_switchToEditor","_callee10","messageTable","editRow","_callee10$","_context11","t0","renderMessageEditor","t1","t2","t3","t4","t5","originalRow","visibility","revertEditing","messageEditor","handleFieldInput","_x10","_handleFieldInput","_callee5","_callee5$","_context6","sendMessage","field","_x11","_x12","_sendMessage","_callee7","fromMainField","sendComplete","_sendComplete","statusArea","_callee7$","_context8","_sendComplete3","_callee6","_text2","oldRow","_callee6$","_context7","insertMessageIntoTable","backgroundColor","disabled","scrollIntoView","newestFirst","focus","select","_sendComplete2","_x18","_x19","updateMessage","errorMessageBlock","droppedFileHandler","files","base","chatDocument","dir","uploadFiles","_ref","_callee","theFile","destURI","_callee$","_context2","_x13","_x14","droppedURIHandler","_ref2","_callee2","uris","_iterator","_step","_callee2$","_context3","finish","_x15","turnOnInput","getImageDoc","imageDoc","Date","now","tookPicture","_x16","_tookPicture","_callee4","_callee4$","_context5","menuButton","menuHandler","buttonStyle","rhs","me","authn","currentUser","menuOptions","div","newBase","event","chatChannel","lhs","middle","innerHTML","rows","anyValue","_ref3","_callee3","_callee3$","_context4","code","shiftKey","shiftEnterSendsMessage","_x17","makeDropTarget","sendButton","sendIcon","cancelButton","dateFolder","leafDocumentFromDate","media","cameraButton","recordParticipation","channel","context","ensureLoggedIn","assign","findBookmarkDocument","_context"],"sources":["../../src/chat/message.js"],"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, allVersions } 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'\nimport { getBlankMsg, verifySignature, SEC } from './signature'\nimport { getPublicKey } from './keys'\n\nconst dom = window.document\nconst messageBodyStyle = style.messageBodyStyle\n\nconst label = utils.label\n\n/**\n * elementForImageURI\n * HTML component for an image\n * @param imageUri\n * @param options { inlineImageHeightEms }\n * @returns HTMLAnchorElement For 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 nickname (person) {\n const s = store.any(person, ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + label(person)\n}\n\n/**\n * creatorAndDate\n * Displays creator and date for a chat message\n * inside the `td1` element\n * @param td1\n * @param creator\n * @param date\n * @param message\n * @returns HTMLAnchorElement For Image\n */\nexport function creatorAndDate (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(nickname(creator), creator))\n if (creator.uri) {\n store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nickname(creator)\n })\n }\n td1.appendChild(dom.createElement('br'))\n td1.appendChild(anchor(date, message))\n}\n\n/**\n * creatorAndDateHorizontal\n * Horizontally displays creator and date for a chat message\n * inside the `td1` element\n * @param td1\n * @param creator\n * @param date\n * @param message\n * @returns HTMLAnchorElement For Image\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 = nickname(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 * renderMessageRow\n * Renders a chat message, read-only mode\n * @param channelObject\n * @param message\n * @param fresh\n * @param options\n * @param userContext\n * @returns Message Row HTML Table Element\n */\nexport async function renderMessageRow (channelObject, message, fresh, options, userContext) {\n let unsignedMessage = false\n const colorizeByAuthor =\n options.colorizeByAuthor === '1' || options.colorizeByAuthor === true\n\n // const id = store.any(latestVersion, ns.sioc('id'))\n // const replies = store.each(latestVersion, ns.sioc('has_reply'))\n\n const creator = store.any(message, ns.foaf('maker'))\n const date = store.any(message, ns.dct('created'))\n const latestVersion = await mostRecentVersion(message)\n debug.log('@@@@ alain mostRecentVersion')\n debug.log(message)\n debug.log(latestVersion)\n const latestVersionCreator = store.any(latestVersion, ns.foaf('maker'))\n\n // use latest content if same owner, else use original\n // this is may be too strict. Should we find latest valid version if any ?\n debug.log('@@@@ alain creator')\n debug.log(creator)\n debug.log(latestVersionCreator)\n const msgId = creator.uri === latestVersionCreator?.uri ? latestVersion : message\n const content = store.any(msgId, ns.sioc('content'))\n\n const versions = await allVersions(msgId)\n if (versions.length > 1) {\n debug.log('renderMessageRow versions: ', versions.join(', '))\n }\n // be tolerant in accepting replies on any version of a message\n const replies = versions.map(version => store.each(version, ns.sioc('has_reply'))).flat()\n\n let thread = null\n const straightReplies = []\n for (const reply of replies) {\n if (store.holds(reply, ns.rdf('type'), ns.sioc('Thread'))) {\n thread = reply\n debug.log('renderMessageRow: found thread: ' + thread)\n } else {\n straightReplies.push(reply)\n }\n }\n if (straightReplies.length > 1) {\n debug.log('renderMessageRow: found normal replies: ', straightReplies)\n }\n debug.log('@@@@ is thread')\n if (!thread) {\n // thread = store.any(message, ns.sioc('has_reply'))\n thread = store.any(null, ns.sioc('has_member'), message)\n }\n // get signature\n const signature = store.any(msgId, $rdf.sym(`${SEC}proofValue`))\n\n // set proof message object\n const msg = getBlankMsg()\n msg.id = msgId.uri\n msg.created = store.any(msgId, ns.dct('created')).value\n msg.content = content.value\n msg.maker = creator.uri\n\n // verify signature\n if (!signature?.value) { // unsigned message\n unsignedMessage = true\n debug.warn(msgId.uri + ' is unsigned') // TODO replace with UI (colored message ?)\n } else { // signed message, get public key and check signature\n getPublicKey(creator).then(publicKey => {\n debug.log(creator.uri + '\\n' + msg.created + '\\n' + msg.id + '\\n' + publicKey)\n if (!publicKey) {\n debug.warn('message is signed but ' + creator.uri + ' is missing publicKey')\n }\n // check that publicKey is a valid hex string\n const regex = /[0-9A-Fa-f]{6}/g\n if (!publicKey?.match(regex)) debug.warn('invalid publicKey hex string\\n' + creator.uri + '\\n' + publicKey)\n // verify signature\n else if (signature?.value && !verifySignature(signature?.value, msg, publicKey)) debug.warn('invalid signature\\n' + msg.id)\n })\n }\n\n const originalMessage = await originalVersion(message)\n const edited = !message.sameTerm(originalMessage)\n // @@ load it first @@ Or display the new data at the old date.\n // @@@ kludge!\n const sortDate = store.the(originalMessage, ns.dct('created'), null, originalMessage.doc()) || store.the(message, ns.dct('created'), null, message.doc())\n // In message\n\n const messageRow = dom.createElement('tr')\n if (unsignedMessage) messageRow.setAttribute('style', 'background-color: red')\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 ? content.value.trim() : '??? no content?'\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 = await 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', async 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 = await messageToolbar(message, messageRow, { ...userContext, chatOptions: options }, 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 if (thread && options.showThread) {\n debug.log(' message has thread ' + thread)\n td3.appendChild(widgets.button(\n dom,\n icons.iconBase + 'noun_1180164.svg', // right arrow .. @@ think of stg better\n 'see thread',\n _e => {\n debug.log('@@@@ Calling showThread thread ' + thread)\n options.showThread(thread, options)\n }\n ))\n }\n return messageRow\n} // END OF RENDERMESSAGE\n\nexport async function switchToEditor (messageRow, message, channelObject, userContext) {\n const messageTable = messageRow.parentNode\n const editRow = renderMessageEditor(channelObject, messageTable, userContext,\n channelObject.options, await 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 async function sendComplete (message, _text2) {\n // const dateStamp = store.any(message, ns.dct('created'), null, message.doc())\n // const content = $rdf.literal(text2)\n await 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, null, options.thread)\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 await 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 // debug.log('Bookmark file: ' + context.bookmarkDocument)\n })\n })\n\n return messageEditor\n} // renderMessageEditor\n"],"mappings":"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"}
1
+ {"version":3,"file":"message.js","names":["_infinite","require","_messageTools","_bookmarks","_chatLogic","debug","_interopRequireWildcard","_iconBase","_solidLogic","_login","_index","ns","pad","style","utils","widgets","_signature","_keys","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","F","s","n","done","value","e","_e2","f","TypeError","normalCompletion","didErr","err","step","next","_e3","minLen","_arrayLikeToArray","toString","slice","constructor","name","from","test","arr","len","arr2","dom","window","document","messageBodyStyle","label","elementForImageURI","imageUri","options","img","createElement","height","inlineImageHeightEms","trim","setAttribute","anchor","appendChild","makeDraggable","$rdf","text","term","a","uri","addEventListener","openHrefInOutlineMode","textContent","nickname","person","store","any","foaf","creatorAndDate","td1","creator","date","message","nickAnchor","fetcher","nowOrWhenFetched","doc","undefined","_ok","_body","creatorAndDateHorizontal","dateBit","fontSize","marginLeft","renderMessageRow","_x","_x2","_x3","_x4","_x5","_renderMessageRow","_asyncToGenerator2","_regenerator","mark","_callee9","channelObject","fresh","userContext","colorizeByAuthor","latestVersion","latestVersionCreator","msgId","content","versions","replies","thread","straightReplies","_iterator2","_step2","reply","signature","msg","messageRow","publicKey","regex","validSignature","validPublicKeyHexString","originalMessage","edited","sortDate","bothDates","td2","isURI","para","isImage","_img","anc","bgcolor","getBgColor","strip","td3","toolsButton","wrap","_callee9$","_context10","prev","_getBgColor","dct","mostRecentVersion","sent","log","sioc","allVersions","join","map","version","each","flat","holds","rdf","concat","SEC","getBlankMsg","id","created","maker","textInputBackgroundColorHighlight","getPublicKey","warn","verifySignature","match","textInputBackgroundColorError","originalVersion","sameTerm","the","AJAR_date","AJAR_subject","authorDateOnLeft","setImage","shortDate","expandImagesInline","href","lightColorHash","sentimentStripLinked","children","button","icons","iconBase","_ref4","_callee8","_event","toolsTR","tools","toolsTD","_callee8$","_context9","toolTR","parentNode","removeChild","abrupt","messageToolbar","chatOptions","nextSibling","parentElement","insertBefore","stop","_x20","showThread","_e","switchToEditor","_x6","_x7","_x8","_x9","_switchToEditor","_callee10","messageTable","editRow","_callee10$","_context11","t0","renderMessageEditor","t1","t2","t3","t4","t5","originalRow","visibility","revertEditing","messageEditor","handleFieldInput","_x10","_handleFieldInput","_callee5","_callee5$","_context6","sendMessage","field","_x11","_x12","_sendMessage","_callee7","fromMainField","sendComplete","_sendComplete","statusArea","_callee7$","_context8","_sendComplete3","_callee6","_text2","oldRow","_callee6$","_context7","insertMessageIntoTable","backgroundColor","disabled","scrollIntoView","newestFirst","focus","select","_sendComplete2","_x18","_x19","updateMessage","errorMessageBlock","droppedFileHandler","files","base","chatDocument","dir","uploadFiles","_ref","_callee","theFile","destURI","_callee$","_context2","_x13","_x14","droppedURIHandler","_ref2","_callee2","uris","_iterator","_step","_callee2$","_context3","finish","_x15","turnOnInput","getImageDoc","imageDoc","Date","now","tookPicture","_x16","_tookPicture","_callee4","_callee4$","_context5","menuButton","menuHandler","buttonStyle","rhs","me","authn","currentUser","menuOptions","div","newBase","event","chatChannel","lhs","middle","innerHTML","rows","anyValue","_ref3","_callee3","_callee3$","_context4","code","shiftKey","shiftEnterSendsMessage","_x17","makeDropTarget","sendButton","sendIcon","cancelButton","dateFolder","leafDocumentFromDate","media","cameraButton","recordParticipation","channel","context","ensureLoggedIn","then","assign","findBookmarkDocument","_context"],"sources":["../../src/chat/message.js"],"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, allVersions } 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'\nimport { getBlankMsg, verifySignature, SEC } from './signature'\nimport { getPublicKey } from './keys'\n\nconst dom = window.document\nconst messageBodyStyle = style.messageBodyStyle\n\nconst label = utils.label\n\n/**\n * elementForImageURI\n * HTML component for an image\n * @param imageUri\n * @param options { inlineImageHeightEms }\n * @returns HTMLAnchorElement For 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 nickname (person) {\n const s = store.any(person, ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + label(person)\n}\n\n/**\n * creatorAndDate\n * Displays creator and date for a chat message\n * inside the `td1` element\n * @param td1\n * @param creator\n * @param date\n * @param message\n * @returns HTMLAnchorElement For Image\n */\nexport function creatorAndDate (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(nickname(creator), creator))\n if (creator.uri) {\n store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nickname(creator)\n })\n }\n td1.appendChild(dom.createElement('br'))\n td1.appendChild(anchor(date, message))\n}\n\n/**\n * creatorAndDateHorizontal\n * Horizontally displays creator and date for a chat message\n * inside the `td1` element\n * @param td1\n * @param creator\n * @param date\n * @param message\n * @returns HTMLAnchorElement For Image\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 = nickname(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 * renderMessageRow\n * Renders a chat message, read-only mode\n * @param channelObject\n * @param message\n * @param fresh\n * @param options\n * @param userContext\n * @returns Message Row HTML Table Element\n */\nexport async 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 = await mostRecentVersion(message)\n debug.log(message)\n debug.log(latestVersion)\n const latestVersionCreator = store.any(latestVersion, ns.foaf('maker'))\n\n // use latest content if same owner, else use original\n // this is may be too strict. Should we find latest valid version if any ?\n debug.log('@@@@ alain creator')\n debug.log(creator)\n debug.log(latestVersionCreator)\n const msgId = creator.uri === latestVersionCreator?.uri ? latestVersion : message\n const content = store.any(msgId, ns.sioc('content'))\n\n const versions = await allVersions(msgId)\n if (versions.length > 1) {\n debug.log('renderMessageRow versions: ', versions.join(', '))\n }\n // be tolerant in accepting replies on any version of a message\n const replies = versions.map(version => store.each(version, ns.sioc('has_reply'))).flat()\n\n let thread = null\n const straightReplies = []\n for (const reply of replies) {\n if (store.holds(reply, ns.rdf('type'), ns.sioc('Thread'))) {\n thread = reply\n debug.log('renderMessageRow: found thread: ' + thread)\n } else {\n straightReplies.push(reply)\n }\n }\n if (straightReplies.length > 1) {\n debug.log('renderMessageRow: found normal replies: ', straightReplies)\n }\n debug.log('@@@@ is thread')\n if (!thread) {\n // thread = store.any(message, ns.sioc('has_reply'))\n thread = store.any(null, ns.sioc('has_member'), message)\n }\n // get signature\n const signature = store.any(msgId, $rdf.sym(`${SEC}proofValue`))\n\n // set proof message object\n const msg = getBlankMsg()\n msg.id = msgId.uri\n msg.created = store.any(msgId, ns.dct('created')).value\n msg.content = content.value\n msg.maker = creator.uri\n\n const messageRow = dom.createElement('tr')\n // verify signature\n if (!signature?.value) { // unsigned message\n messageRow.setAttribute('style', style.textInputBackgroundColorHighlight)\n } else { // signed message, get public key and check signature\n const publicKey = await getPublicKey(creator)\n debug.log(creator.uri + '\\n' + msg.created + '\\n' + msg.id + '\\n' + publicKey)\n if (!publicKey) {\n debug.warn('message is signed but ' + creator.uri + ' is missing publicKey')\n }\n // check that publicKey is a valid hex string\n const regex = /[0-9A-Fa-f]{6}/g\n const validSignature = verifySignature(signature?.value, msg, publicKey)\n const validPublicKeyHexString = publicKey?.match(regex)\n if (!validPublicKeyHexString) debug.warn('invalid publicKey hex string\\n' + creator.uri + '\\n' + publicKey)\n else if (signature?.value && !validSignature) debug.warn('invalid signature\\n' + msg.id)\n if (!validSignature || !validPublicKeyHexString) messageRow.setAttribute('style', style.textInputBackgroundColorError)\n }\n\n const originalMessage = await originalVersion(message)\n const edited = !message.sameTerm(originalMessage)\n // @@ load it first @@ Or display the new data at the old date.\n // @@@ kludge!\n const sortDate = store.the(originalMessage, ns.dct('created'), null, originalMessage.doc()) || store.the(message, ns.dct('created'), null, message.doc())\n // In message\n\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 ? content.value.trim() : '??? no content?'\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 = await 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', async 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 = await messageToolbar(message, messageRow, { ...userContext, chatOptions: options }, 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 if (thread && options.showThread) {\n debug.log(' message has thread ' + thread)\n td3.appendChild(widgets.button(\n dom,\n icons.iconBase + 'noun_1180164.svg', // right arrow .. @@ think of stg better\n 'see thread',\n _e => {\n debug.log('@@@@ Calling showThread thread ' + thread)\n options.showThread(thread, options)\n }\n ))\n }\n return messageRow\n} // END OF RENDERMESSAGE\n\nexport async function switchToEditor (messageRow, message, channelObject, userContext) {\n const messageTable = messageRow.parentNode\n const editRow = renderMessageEditor(channelObject, messageTable, userContext,\n channelObject.options, await 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 async function sendComplete (message, _text2) {\n // const dateStamp = store.any(message, ns.dct('created'), null, message.doc())\n // const content = $rdf.literal(text2)\n await 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, null, options.thread)\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 await 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 // debug.log('Bookmark file: ' + context.bookmarkDocument)\n })\n })\n\n return messageEditor\n} // renderMessageEditor\n"],"mappings":"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"}
package/lib/style.js CHANGED
@@ -77,6 +77,8 @@ var style = {
77
77
  formFieldNameBoxStyle: "padding: 0.3em; vertical-align: middle; width:".concat(formFieldNameBoxWidth, ";"),
78
78
  textInputBackgroundColor: '#eef',
79
79
  textInputBackgroundColorUneditable: '#fff',
80
+ textInputBackgroundColorError: 'background-color: #fee;',
81
+ textInputBackgroundColorHighlight: 'background-color: #fdeadc;',
80
82
  textInputColor: '#000',
81
83
  textInputColorPending: '#888',
82
84
  multilineTextInputStyle: 'font-size:100%; white-space: pre-wrap; background-color: #eef;' + ' border: 0.07em solid gray; padding: 1em 0.5em; margin: 1em 1em;',