solid-ui 2.4.23 → 2.4.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/main.js +2159 -5039
  2. package/dist/main.js.map +1 -1
  3. package/lib/acl/access-controller.js +4 -67
  4. package/lib/acl/access-controller.js.map +1 -1
  5. package/lib/acl/access-groups.js +59 -137
  6. package/lib/acl/access-groups.js.map +1 -1
  7. package/lib/acl/acl-control.js +14 -54
  8. package/lib/acl/acl-control.js.map +1 -1
  9. package/lib/acl/acl.js +32 -107
  10. package/lib/acl/acl.js.map +1 -1
  11. package/lib/acl/add-agent-buttons.js +0 -92
  12. package/lib/acl/add-agent-buttons.js.map +1 -1
  13. package/lib/acl/index.js +1 -3
  14. package/lib/acl/index.js.map +1 -1
  15. package/lib/acl/styles.js +1 -2
  16. package/lib/acl/styles.js.map +1 -1
  17. package/lib/chat/bookmarks.js +8 -80
  18. package/lib/chat/bookmarks.js.map +1 -1
  19. package/lib/chat/chatLogic.js +109 -180
  20. package/lib/chat/chatLogic.js.map +1 -1
  21. package/lib/chat/dateFolder.js +6 -91
  22. package/lib/chat/dateFolder.js.map +1 -1
  23. package/lib/chat/infinite.js +33 -185
  24. package/lib/chat/infinite.js.map +1 -1
  25. package/lib/chat/message.js +37 -150
  26. package/lib/chat/message.js.map +1 -1
  27. package/lib/chat/messageTools.js +23 -96
  28. package/lib/chat/messageTools.js.map +1 -1
  29. package/lib/chat/thread.js +33 -91
  30. package/lib/chat/thread.js.map +1 -1
  31. package/lib/create/create.js +19 -51
  32. package/lib/create/create.js.map +1 -1
  33. package/lib/create/index.js +0 -2
  34. package/lib/create/index.js.map +1 -1
  35. package/lib/debug.js +0 -8
  36. package/lib/debug.js.map +1 -1
  37. package/lib/folders.js +4 -27
  38. package/lib/folders.js.map +1 -1
  39. package/lib/footer/index.js +2 -24
  40. package/lib/footer/index.js.map +1 -1
  41. package/lib/footer/styleMap.js.map +1 -1
  42. package/lib/header/empty-profile.js.map +1 -1
  43. package/lib/header/index.js +3 -72
  44. package/lib/header/index.js.map +1 -1
  45. package/lib/header/styleMap.js +4 -3
  46. package/lib/header/styleMap.js.map +1 -1
  47. package/lib/iconBase.js +3 -4
  48. package/lib/iconBase.js.map +1 -1
  49. package/lib/index.js +5 -46
  50. package/lib/index.js.map +1 -1
  51. package/lib/jss/index.js +3 -9
  52. package/lib/jss/index.js.map +1 -1
  53. package/lib/log.js +15 -51
  54. package/lib/log.js.map +1 -1
  55. package/lib/login/login.js +74 -303
  56. package/lib/login/login.js.map +1 -1
  57. package/lib/matrix/index.js +0 -2
  58. package/lib/matrix/index.js.map +1 -1
  59. package/lib/matrix/matrix.js +7 -55
  60. package/lib/matrix/matrix.js.map +1 -1
  61. package/lib/media/index.js +0 -2
  62. package/lib/media/index.js.map +1 -1
  63. package/lib/media/media-capture.js +13 -33
  64. package/lib/media/media-capture.js.map +1 -1
  65. package/lib/messageArea.js +23 -64
  66. package/lib/messageArea.js.map +1 -1
  67. package/lib/noun_Camera_1618446_000000.js.map +1 -1
  68. package/lib/ns.js +5 -7
  69. package/lib/ns.js.map +1 -1
  70. package/lib/pad.js +48 -234
  71. package/lib/pad.js.map +1 -1
  72. package/lib/participation.js +10 -65
  73. package/lib/participation.js.map +1 -1
  74. package/lib/preferences.js +21 -42
  75. package/lib/preferences.js.map +1 -1
  76. package/lib/signup/config-default.js +1 -8
  77. package/lib/signup/config-default.js.map +1 -1
  78. package/lib/signup/signup.js +6 -13
  79. package/lib/signup/signup.js.map +1 -1
  80. package/lib/stories/decorators.js +0 -2
  81. package/lib/stories/decorators.js.map +1 -1
  82. package/lib/style.js +8 -5
  83. package/lib/style.js.map +1 -1
  84. package/lib/style_multiSelect.js +1 -5
  85. package/lib/style_multiSelect.js.map +1 -1
  86. package/lib/table.js +309 -322
  87. package/lib/table.js.map +1 -1
  88. package/lib/tabs.js +20 -100
  89. package/lib/tabs.js.map +1 -1
  90. package/lib/utils/headerFooterHelpers.js +4 -52
  91. package/lib/utils/headerFooterHelpers.js.map +1 -1
  92. package/lib/utils/index.js +41 -135
  93. package/lib/utils/index.js.map +1 -1
  94. package/lib/utils/label.js +13 -34
  95. package/lib/utils/label.js.map +1 -1
  96. package/lib/versionInfo.js +4 -4
  97. package/lib/versionInfo.js.map +1 -1
  98. package/lib/widgets/buttons/iconLinks.js +0 -8
  99. package/lib/widgets/buttons/iconLinks.js.map +1 -1
  100. package/lib/widgets/buttons.js +115 -291
  101. package/lib/widgets/buttons.js.map +1 -1
  102. package/lib/widgets/dragAndDrop.js +12 -41
  103. package/lib/widgets/dragAndDrop.js.map +1 -1
  104. package/lib/widgets/error.js +3 -9
  105. package/lib/widgets/error.js.map +1 -1
  106. package/lib/widgets/forms/autocomplete/autocompleteBar.js +8 -71
  107. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
  108. package/lib/widgets/forms/autocomplete/autocompleteField.js +13 -65
  109. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
  110. package/lib/widgets/forms/autocomplete/autocompletePicker.js +15 -107
  111. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  112. package/lib/widgets/forms/autocomplete/language.js +6 -55
  113. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  114. package/lib/widgets/forms/autocomplete/publicData.js +12 -131
  115. package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
  116. package/lib/widgets/forms/basic.js +12 -55
  117. package/lib/widgets/forms/basic.js.map +1 -1
  118. package/lib/widgets/forms/comment.js +1 -15
  119. package/lib/widgets/forms/comment.js.map +1 -1
  120. package/lib/widgets/forms/fieldFunction.js +3 -16
  121. package/lib/widgets/forms/fieldFunction.js.map +1 -1
  122. package/lib/widgets/forms/fieldParams.js +0 -12
  123. package/lib/widgets/forms/fieldParams.js.map +1 -1
  124. package/lib/widgets/forms/formStyle.js +1 -14
  125. package/lib/widgets/forms/formStyle.js.map +1 -1
  126. package/lib/widgets/forms.js +70 -474
  127. package/lib/widgets/forms.js.map +1 -1
  128. package/lib/widgets/index.js +0 -21
  129. package/lib/widgets/index.js.map +1 -1
  130. package/lib/widgets/multiSelect.js +48 -171
  131. package/lib/widgets/multiSelect.js.map +1 -1
  132. package/lib/widgets/peoplePicker.js +20 -90
  133. package/lib/widgets/peoplePicker.js.map +1 -1
  134. package/lib/widgets/widgetHelpers.js +2 -9
  135. package/lib/widgets/widgetHelpers.js.map +1 -1
  136. package/package.json +28 -28
@@ -1,41 +1,27 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.DateFolder = void 0;
11
-
12
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
-
14
10
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
-
16
11
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
-
18
12
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
-
20
13
  var debug = _interopRequireWildcard(require("../debug"));
21
-
22
14
  var _solidLogic = require("solid-logic");
23
-
24
15
  var ns = _interopRequireWildcard(require("../ns"));
25
-
26
16
  var $rdf = _interopRequireWildcard(require("rdflib"));
27
-
28
17
  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); }
29
-
30
18
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
-
32
19
  /**
33
20
  * Contains the [[DateFolder]] class
34
21
  * This tracks data stored in dated folders and sub-folders
35
22
  *
36
23
  */
37
24
  // pull in first avoid cross-refs
38
-
39
25
  /**
40
26
  * Track back through the YYYY/MM/DD tree to find the previous/next day
41
27
  */
@@ -45,37 +31,32 @@ var DateFolder = /*#__PURE__*/function () {
45
31
  this.root = rootThing;
46
32
  this.rootFolder = rootThing.dir();
47
33
  this.leafFileName = leafFileName || 'index.ttl'; // typically chat.ttl
48
-
49
34
  this.membershipProperty = membershipProperty || ns.wf('leafObject');
50
35
  }
36
+
51
37
  /* Generate the leaf document (rdf object) from date
52
38
  * @returns: <NamedNode> - document
53
39
  */
54
-
55
-
56
40
  (0, _createClass2["default"])(DateFolder, [{
57
41
  key: "leafDocumentFromDate",
58
42
  value: function leafDocumentFromDate(date) {
59
43
  // debug.log('incoming date: ' + date)
60
44
  var isoDate = date.toISOString(); // Like "2018-05-07T17:42:46.576Z"
61
-
62
45
  var path = isoDate.split('T')[0].replace(/-/g, '/'); // Like "2018/05/07"
63
-
64
46
  path = this.root.dir().uri + path + '/' + this.leafFileName;
65
47
  return _solidLogic.store.sym(path);
66
48
  }
49
+
67
50
  /* Generate a date object from the leaf file name
68
51
  */
69
-
70
52
  }, {
71
53
  key: "dateFromLeafDocument",
72
54
  value: function dateFromLeafDocument(doc) {
73
55
  var head = this.rootFolder.uri.length;
74
- var str = doc.uri.slice(head, head + 10).replace(/\//g, '-'); // let date = new Date(str + 'Z') // GMT - but fails in FF - invalid format :-(
75
-
56
+ var str = doc.uri.slice(head, head + 10).replace(/\//g, '-');
57
+ // let date = new Date(str + 'Z') // GMT - but fails in FF - invalid format :-(
76
58
  var date = new Date(str); // not explicitly UTC but is assumed so in spec
77
59
  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse
78
-
79
60
  debug.log('Date for ' + doc + ':' + date.toISOString());
80
61
  return date;
81
62
  }
@@ -84,7 +65,6 @@ var DateFolder = /*#__PURE__*/function () {
84
65
  value: function () {
85
66
  var _loadPrevious = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(date, backwards) {
86
67
  var thisDateFolder, previousPeriod, _previousPeriod, folder, found, doc;
87
-
88
68
  return _regenerator["default"].wrap(function _callee3$(_context3) {
89
69
  while (1) {
90
70
  switch (_context3.prev = _context3.next) {
@@ -92,7 +72,6 @@ var DateFolder = /*#__PURE__*/function () {
92
72
  _previousPeriod = function _previousPeriod3() {
93
73
  _previousPeriod = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(file, level) {
94
74
  var younger, suitable, lastNonEmpty, _lastNonEmpty, parent, siblings, folder, uncle, cousins, result;
95
-
96
75
  return _regenerator["default"].wrap(function _callee2$(_context2) {
97
76
  while (1) {
98
77
  switch (_context2.prev = _context2.next) {
@@ -100,49 +79,38 @@ var DateFolder = /*#__PURE__*/function () {
100
79
  _lastNonEmpty = function _lastNonEmpty3() {
101
80
  _lastNonEmpty = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(siblings) {
102
81
  var _folder, leafDocument;
103
-
104
82
  return _regenerator["default"].wrap(function _callee$(_context) {
105
83
  while (1) {
106
84
  switch (_context.prev = _context.next) {
107
85
  case 0:
108
86
  siblings = siblings.filter(suitable);
109
87
  siblings.sort(); // chronological order
110
-
111
88
  if (!backwards) siblings.reverse();
112
-
113
89
  if (!(level !== 3)) {
114
90
  _context.next = 5;
115
91
  break;
116
92
  }
117
-
118
93
  return _context.abrupt("return", siblings.pop());
119
-
120
94
  case 5:
121
95
  if (!siblings.length) {
122
96
  _context.next = 14;
123
97
  break;
124
98
  }
125
-
126
99
  _folder = siblings.pop();
127
100
  leafDocument = _solidLogic.store.sym(_folder.uri + thisDateFolder.leafFileName);
128
101
  _context.next = 10;
129
102
  return _solidLogic.store.fetcher.load(leafDocument);
130
-
131
103
  case 10:
132
104
  if (!(_solidLogic.store.statementsMatching(null, ns.dct('created'), null, leafDocument).length > 0)) {
133
105
  _context.next = 12;
134
106
  break;
135
107
  }
136
-
137
108
  return _context.abrupt("return", _folder);
138
-
139
109
  case 12:
140
110
  _context.next = 5;
141
111
  break;
142
-
143
112
  case 14:
144
113
  return _context.abrupt("return", null);
145
-
146
114
  case 15:
147
115
  case "end":
148
116
  return _context.stop();
@@ -152,80 +120,60 @@ var DateFolder = /*#__PURE__*/function () {
152
120
  }));
153
121
  return _lastNonEmpty.apply(this, arguments);
154
122
  };
155
-
156
123
  lastNonEmpty = function _lastNonEmpty2(_x5) {
157
124
  return _lastNonEmpty.apply(this, arguments);
158
125
  };
159
-
160
126
  suitable = function _suitable(x) {
161
127
  var tail = x.uri.slice(0, -1).split('/').slice(-1)[0];
162
128
  if (!'0123456789'.includes(tail[0])) return false; // not numeric
163
-
164
129
  return true;
165
130
  };
166
-
167
131
  younger = function _younger(x) {
168
132
  if (backwards ? x.uri >= file.uri : x.uri <= file.uri) return false; // later than we want or same -- looking for different
169
-
170
133
  return true;
171
134
  };
172
-
173
135
  // debug.log(' previousPeriod level' + level + ' file ' + file)
174
136
  parent = file.dir();
175
137
  _context2.next = 7;
176
138
  return _solidLogic.store.fetcher.load(parent);
177
-
178
139
  case 7:
179
140
  siblings = _solidLogic.store.each(parent, ns.ldp('contains'));
180
141
  siblings = siblings.filter(younger);
181
142
  _context2.next = 11;
182
143
  return lastNonEmpty(siblings);
183
-
184
144
  case 11:
185
145
  folder = _context2.sent;
186
-
187
146
  if (!folder) {
188
147
  _context2.next = 14;
189
148
  break;
190
149
  }
191
-
192
150
  return _context2.abrupt("return", folder);
193
-
194
151
  case 14:
195
152
  if (!(level === 0)) {
196
153
  _context2.next = 16;
197
154
  break;
198
155
  }
199
-
200
156
  return _context2.abrupt("return", null);
201
-
202
157
  case 16:
203
158
  _context2.next = 18;
204
159
  return previousPeriod(parent, level - 1);
205
-
206
160
  case 18:
207
161
  uncle = _context2.sent;
208
-
209
162
  if (uncle) {
210
163
  _context2.next = 21;
211
164
  break;
212
165
  }
213
-
214
166
  return _context2.abrupt("return", null);
215
-
216
167
  case 21:
217
168
  _context2.next = 23;
218
169
  return _solidLogic.store.fetcher.load(uncle);
219
-
220
170
  case 23:
221
171
  cousins = _solidLogic.store.each(uncle, ns.ldp('contains'));
222
172
  _context2.next = 26;
223
173
  return lastNonEmpty(cousins);
224
-
225
174
  case 26:
226
175
  result = _context2.sent;
227
176
  return _context2.abrupt("return", result);
228
-
229
177
  case 28:
230
178
  case "end":
231
179
  return _context2.stop();
@@ -235,31 +183,24 @@ var DateFolder = /*#__PURE__*/function () {
235
183
  }));
236
184
  return _previousPeriod.apply(this, arguments);
237
185
  };
238
-
239
186
  previousPeriod = function _previousPeriod2(_x3, _x4) {
240
187
  return _previousPeriod.apply(this, arguments);
241
188
  };
242
-
243
189
  thisDateFolder = this;
244
190
  // previousPeriod
245
191
  folder = this.leafDocumentFromDate(date).dir();
246
192
  _context3.next = 6;
247
193
  return previousPeriod(folder, 3);
248
-
249
194
  case 6:
250
195
  found = _context3.sent;
251
-
252
196
  if (!found) {
253
197
  _context3.next = 10;
254
198
  break;
255
199
  }
256
-
257
200
  doc = _solidLogic.store.sym(found.uri + this.leafFileName);
258
201
  return _context3.abrupt("return", this.dateFromLeafDocument(doc));
259
-
260
202
  case 10:
261
203
  return _context3.abrupt("return", null);
262
-
263
204
  case 11:
264
205
  case "end":
265
206
  return _context3.stop();
@@ -267,20 +208,16 @@ var DateFolder = /*#__PURE__*/function () {
267
208
  }
268
209
  }, _callee3, this);
269
210
  }));
270
-
271
211
  function loadPrevious(_x, _x2) {
272
212
  return _loadPrevious.apply(this, arguments);
273
213
  }
274
-
275
214
  return loadPrevious;
276
215
  }() // loadPrevious
277
-
278
216
  }, {
279
217
  key: "firstLeaf",
280
218
  value: function () {
281
219
  var _firstLeaf = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(backwards) {
282
220
  var folderStore, folderFetcher, earliestSubfolder, _earliestSubfolder, y, month, d, leafDocument, leafObjects, msg, sortMe;
283
-
284
221
  return _regenerator["default"].wrap(function _callee5$(_context5) {
285
222
  while (1) {
286
223
  switch (_context5.prev = _context5.next) {
@@ -295,37 +232,30 @@ var DateFolder = /*#__PURE__*/function () {
295
232
  suitable = function _suitable2(x) {
296
233
  var tail = x.uri.slice(0, -1).split('/').slice(-1)[0];
297
234
  if (!'0123456789'.includes(tail[0])) return false; // not numeric
298
-
299
235
  return true;
300
236
  };
301
-
302
237
  debug.log(' parent ' + parent);
303
- delete folderFetcher.requested[parent.uri]; // try {
304
-
238
+ delete folderFetcher.requested[parent.uri];
239
+ // try {
305
240
  _context4.next = 5;
306
241
  return folderFetcher.load(parent, {
307
242
  force: true
308
243
  });
309
-
310
244
  case 5:
311
245
  // Force fetch as will have changed
312
246
  // }catch (err) {
313
247
  // }
314
248
  kids = folderStore.each(parent, ns.ldp('contains'));
315
249
  kids = kids.filter(suitable);
316
-
317
250
  if (!(kids.length === 0)) {
318
251
  _context4.next = 9;
319
252
  break;
320
253
  }
321
-
322
254
  throw new Error(' @@@ No children to parent2 ' + parent);
323
-
324
255
  case 9:
325
256
  kids.sort();
326
257
  if (backwards) kids.reverse();
327
258
  return _context4.abrupt("return", kids[0]);
328
-
329
259
  case 12:
330
260
  case "end":
331
261
  return _context4.stop();
@@ -335,45 +265,36 @@ var DateFolder = /*#__PURE__*/function () {
335
265
  }));
336
266
  return _earliestSubfolder.apply(this, arguments);
337
267
  };
338
-
339
268
  earliestSubfolder = function _earliestSubfolder2(_x7) {
340
269
  return _earliestSubfolder.apply(this, arguments);
341
270
  };
342
-
343
271
  // backwards -> last leafObject
344
272
  folderStore = $rdf.graph();
345
273
  folderFetcher = new $rdf.Fetcher(folderStore);
346
274
  _context5.next = 6;
347
275
  return earliestSubfolder(this.root.dir());
348
-
349
276
  case 6:
350
277
  y = _context5.sent;
351
278
  _context5.next = 9;
352
279
  return earliestSubfolder(y);
353
-
354
280
  case 9:
355
281
  month = _context5.sent;
356
282
  _context5.next = 12;
357
283
  return earliestSubfolder(month);
358
-
359
284
  case 12:
360
285
  d = _context5.sent;
361
286
  leafDocument = $rdf.sym(d.uri + 'chat.ttl');
362
287
  _context5.next = 16;
363
288
  return folderFetcher.load(leafDocument);
364
-
365
289
  case 16:
366
290
  leafObjects = folderStore.each(this.root, this.membershipProperty, null, leafDocument);
367
-
368
291
  if (!(leafObjects.length === 0)) {
369
292
  _context5.next = 21;
370
293
  break;
371
294
  }
372
-
373
295
  msg = ' INCONSISTENCY -- no chat leafObject in file ' + leafDocument;
374
296
  debug.trace(msg);
375
297
  throw new Error(msg);
376
-
377
298
  case 21:
378
299
  sortMe = leafObjects.map(function (leafObject) {
379
300
  return [folderStore.any(leafObject, ns.dct('created')), leafObject];
@@ -382,7 +303,6 @@ var DateFolder = /*#__PURE__*/function () {
382
303
  if (backwards) sortMe.reverse();
383
304
  debug.log((backwards ? 'Latest' : 'Earliest') + ' leafObject is ' + sortMe[0][1]);
384
305
  return _context5.abrupt("return", sortMe[0][1]);
385
-
386
306
  case 26:
387
307
  case "end":
388
308
  return _context5.stop();
@@ -390,18 +310,13 @@ var DateFolder = /*#__PURE__*/function () {
390
310
  }
391
311
  }, _callee5, this);
392
312
  }));
393
-
394
313
  function firstLeaf(_x6) {
395
314
  return _firstLeaf.apply(this, arguments);
396
315
  }
397
-
398
316
  return firstLeaf;
399
317
  }() // firstleafObject
400
-
401
318
  }]);
402
319
  return DateFolder;
403
320
  }(); // class
404
-
405
-
406
321
  exports.DateFolder = DateFolder;
407
322
  //# sourceMappingURL=dateFolder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dateFolder.js","names":["DateFolder","rootThing","leafFileName","membershipProperty","root","rootFolder","dir","ns","wf","date","isoDate","toISOString","path","split","replace","uri","store","sym","doc","head","length","str","slice","Date","debug","log","backwards","previousPeriod","file","level","younger","suitable","lastNonEmpty","siblings","filter","sort","reverse","pop","folder","leafDocument","thisDateFolder","fetcher","load","statementsMatching","dct","x","tail","includes","parent","each","ldp","uncle","cousins","result","leafDocumentFromDate","found","dateFromLeafDocument","earliestSubfolder","folderFetcher","requested","force","kids","folderStore","Error","$rdf","graph","Fetcher","y","month","d","leafObjects","msg","trace","sortMe","map","leafObject","any"],"sources":["../../src/chat/dateFolder.js"],"sourcesContent":["/**\n * Contains the [[DateFolder]] class\n * This tracks data stored in dated folders and sub-folders\n *\n */\n\nimport * as debug from '../debug'\nimport { store } from 'solid-logic'\n\nimport * as ns from '../ns'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\n\n/**\n * Track back through the YYYY/MM/DD tree to find the previous/next day\n */\nexport class DateFolder {\n constructor (rootThing, leafFileName, membershipProperty) {\n this.root = rootThing\n this.rootFolder = rootThing.dir()\n this.leafFileName = leafFileName || 'index.ttl' // typically chat.ttl\n this.membershipProperty = membershipProperty || ns.wf('leafObject')\n }\n\n /* Generate the leaf document (rdf object) from date\n * @returns: <NamedNode> - document\n */\n leafDocumentFromDate (date) {\n // debug.log('incoming date: ' + date)\n const isoDate = date.toISOString() // Like \"2018-05-07T17:42:46.576Z\"\n let path = isoDate.split('T')[0].replace(/-/g, '/') // Like \"2018/05/07\"\n path = this.root.dir().uri + path + '/' + this.leafFileName\n return store.sym(path)\n }\n\n /* Generate a date object from the leaf file name\n */\n dateFromLeafDocument (doc) {\n const head = this.rootFolder.uri.length\n const str = doc.uri.slice(head, head + 10).replace(/\\//g, '-')\n // let date = new Date(str + 'Z') // GMT - but fails in FF - invalid format :-(\n const date = new Date(str) // not explicitly UTC but is assumed so in spec\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse\n debug.log('Date for ' + doc + ':' + date.toISOString())\n return date\n }\n\n async loadPrevious (date, backwards) {\n const thisDateFolder = this\n async function previousPeriod (file, level) {\n function younger (x) {\n if (backwards ? x.uri >= file.uri : x.uri <= file.uri) return false // later than we want or same -- looking for different\n return true\n }\n function suitable (x) {\n const tail = x.uri\n .slice(0, -1)\n .split('/')\n .slice(-1)[0]\n if (!'0123456789'.includes(tail[0])) return false // not numeric\n return true\n }\n\n async function lastNonEmpty (siblings) {\n siblings = siblings.filter(suitable)\n siblings.sort() // chronological order\n if (!backwards) siblings.reverse()\n if (level !== 3) return siblings.pop() // only length chck final leverl\n while (siblings.length) {\n const folder = siblings.pop()\n const leafDocument = store.sym(folder.uri + thisDateFolder.leafFileName)\n await store.fetcher.load(leafDocument)\n // files can have seealso links. skip ones with no leafObjects with a date\n if (\n store.statementsMatching(null, ns.dct('created'), null, leafDocument)\n .length > 0\n ) {\n return folder\n }\n }\n return null\n }\n // debug.log(' previousPeriod level' + level + ' file ' + file)\n const parent = file.dir()\n await store.fetcher.load(parent)\n let siblings = store.each(parent, ns.ldp('contains'))\n siblings = siblings.filter(younger)\n const folder = await lastNonEmpty(siblings)\n if (folder) return folder\n\n if (level === 0) return null // 3:day, 2:month, 1: year 0: no\n\n const uncle = await previousPeriod(parent, level - 1)\n if (!uncle) return null // reached first ever\n await store.fetcher.load(uncle)\n const cousins = store.each(uncle, ns.ldp('contains'))\n const result = await lastNonEmpty(cousins)\n return result\n } // previousPeriod\n\n const folder = this.leafDocumentFromDate(date).dir()\n const found = await previousPeriod(folder, 3)\n if (found) {\n const doc = store.sym(found.uri + this.leafFileName)\n return this.dateFromLeafDocument(doc)\n }\n return null\n } // loadPrevious\n\n async firstLeaf (backwards) {\n // backwards -> last leafObject\n const folderStore = $rdf.graph()\n const folderFetcher = new $rdf.Fetcher(folderStore)\n async function earliestSubfolder (parent) {\n function suitable (x) {\n const tail = x.uri\n .slice(0, -1)\n .split('/')\n .slice(-1)[0]\n if (!'0123456789'.includes(tail[0])) return false // not numeric\n return true\n }\n debug.log(' parent ' + parent)\n delete folderFetcher.requested[parent.uri]\n // try {\n await folderFetcher.load(parent, { force: true }) // Force fetch as will have changed\n // }catch (err) {\n // }\n\n let kids = folderStore.each(parent, ns.ldp('contains'))\n kids = kids.filter(suitable)\n if (kids.length === 0) {\n throw new Error(' @@@ No children to parent2 ' + parent)\n }\n\n kids.sort()\n if (backwards) kids.reverse()\n return kids[0]\n }\n const y = await earliestSubfolder(this.root.dir())\n const month = await earliestSubfolder(y)\n const d = await earliestSubfolder(month)\n const leafDocument = $rdf.sym(d.uri + 'chat.ttl')\n await folderFetcher.load(leafDocument)\n const leafObjects = folderStore.each(\n this.root,\n this.membershipProperty,\n null,\n leafDocument\n )\n if (leafObjects.length === 0) {\n const msg =\n ' INCONSISTENCY -- no chat leafObject in file ' + leafDocument\n debug.trace(msg)\n throw new Error(msg)\n }\n const sortMe = leafObjects.map(leafObject => [\n folderStore.any(leafObject, ns.dct('created')),\n leafObject\n ])\n sortMe.sort()\n if (backwards) sortMe.reverse()\n debug.log(\n (backwards ? 'Latest' : 'Earliest') + ' leafObject is ' + sortMe[0][1]\n )\n return sortMe[0][1]\n } // firstleafObject\n} // class\n"],"mappings":"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"}
1
+ {"version":3,"file":"dateFolder.js","names":["DateFolder","rootThing","leafFileName","membershipProperty","root","rootFolder","dir","ns","wf","date","isoDate","toISOString","path","split","replace","uri","store","sym","doc","head","length","str","slice","Date","debug","log","backwards","previousPeriod","file","level","younger","suitable","lastNonEmpty","siblings","filter","sort","reverse","pop","folder","leafDocument","thisDateFolder","fetcher","load","statementsMatching","dct","x","tail","includes","parent","each","ldp","uncle","cousins","result","leafDocumentFromDate","found","dateFromLeafDocument","earliestSubfolder","folderFetcher","requested","force","kids","folderStore","Error","$rdf","graph","Fetcher","y","month","d","leafObjects","msg","trace","sortMe","map","leafObject","any"],"sources":["../../src/chat/dateFolder.js"],"sourcesContent":["/**\n * Contains the [[DateFolder]] class\n * This tracks data stored in dated folders and sub-folders\n *\n */\n\nimport * as debug from '../debug'\nimport { store } from 'solid-logic'\n\nimport * as ns from '../ns'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\n\n/**\n * Track back through the YYYY/MM/DD tree to find the previous/next day\n */\nexport class DateFolder {\n constructor (rootThing, leafFileName, membershipProperty) {\n this.root = rootThing\n this.rootFolder = rootThing.dir()\n this.leafFileName = leafFileName || 'index.ttl' // typically chat.ttl\n this.membershipProperty = membershipProperty || ns.wf('leafObject')\n }\n\n /* Generate the leaf document (rdf object) from date\n * @returns: <NamedNode> - document\n */\n leafDocumentFromDate (date) {\n // debug.log('incoming date: ' + date)\n const isoDate = date.toISOString() // Like \"2018-05-07T17:42:46.576Z\"\n let path = isoDate.split('T')[0].replace(/-/g, '/') // Like \"2018/05/07\"\n path = this.root.dir().uri + path + '/' + this.leafFileName\n return store.sym(path)\n }\n\n /* Generate a date object from the leaf file name\n */\n dateFromLeafDocument (doc) {\n const head = this.rootFolder.uri.length\n const str = doc.uri.slice(head, head + 10).replace(/\\//g, '-')\n // let date = new Date(str + 'Z') // GMT - but fails in FF - invalid format :-(\n const date = new Date(str) // not explicitly UTC but is assumed so in spec\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse\n debug.log('Date for ' + doc + ':' + date.toISOString())\n return date\n }\n\n async loadPrevious (date, backwards) {\n const thisDateFolder = this\n async function previousPeriod (file, level) {\n function younger (x) {\n if (backwards ? x.uri >= file.uri : x.uri <= file.uri) return false // later than we want or same -- looking for different\n return true\n }\n function suitable (x) {\n const tail = x.uri\n .slice(0, -1)\n .split('/')\n .slice(-1)[0]\n if (!'0123456789'.includes(tail[0])) return false // not numeric\n return true\n }\n\n async function lastNonEmpty (siblings) {\n siblings = siblings.filter(suitable)\n siblings.sort() // chronological order\n if (!backwards) siblings.reverse()\n if (level !== 3) return siblings.pop() // only length chck final leverl\n while (siblings.length) {\n const folder = siblings.pop()\n const leafDocument = store.sym(folder.uri + thisDateFolder.leafFileName)\n await store.fetcher.load(leafDocument)\n // files can have seealso links. skip ones with no leafObjects with a date\n if (\n store.statementsMatching(null, ns.dct('created'), null, leafDocument)\n .length > 0\n ) {\n return folder\n }\n }\n return null\n }\n // debug.log(' previousPeriod level' + level + ' file ' + file)\n const parent = file.dir()\n await store.fetcher.load(parent)\n let siblings = store.each(parent, ns.ldp('contains'))\n siblings = siblings.filter(younger)\n const folder = await lastNonEmpty(siblings)\n if (folder) return folder\n\n if (level === 0) return null // 3:day, 2:month, 1: year 0: no\n\n const uncle = await previousPeriod(parent, level - 1)\n if (!uncle) return null // reached first ever\n await store.fetcher.load(uncle)\n const cousins = store.each(uncle, ns.ldp('contains'))\n const result = await lastNonEmpty(cousins)\n return result\n } // previousPeriod\n\n const folder = this.leafDocumentFromDate(date).dir()\n const found = await previousPeriod(folder, 3)\n if (found) {\n const doc = store.sym(found.uri + this.leafFileName)\n return this.dateFromLeafDocument(doc)\n }\n return null\n } // loadPrevious\n\n async firstLeaf (backwards) {\n // backwards -> last leafObject\n const folderStore = $rdf.graph()\n const folderFetcher = new $rdf.Fetcher(folderStore)\n async function earliestSubfolder (parent) {\n function suitable (x) {\n const tail = x.uri\n .slice(0, -1)\n .split('/')\n .slice(-1)[0]\n if (!'0123456789'.includes(tail[0])) return false // not numeric\n return true\n }\n debug.log(' parent ' + parent)\n delete folderFetcher.requested[parent.uri]\n // try {\n await folderFetcher.load(parent, { force: true }) // Force fetch as will have changed\n // }catch (err) {\n // }\n\n let kids = folderStore.each(parent, ns.ldp('contains'))\n kids = kids.filter(suitable)\n if (kids.length === 0) {\n throw new Error(' @@@ No children to parent2 ' + parent)\n }\n\n kids.sort()\n if (backwards) kids.reverse()\n return kids[0]\n }\n const y = await earliestSubfolder(this.root.dir())\n const month = await earliestSubfolder(y)\n const d = await earliestSubfolder(month)\n const leafDocument = $rdf.sym(d.uri + 'chat.ttl')\n await folderFetcher.load(leafDocument)\n const leafObjects = folderStore.each(\n this.root,\n this.membershipProperty,\n null,\n leafDocument\n )\n if (leafObjects.length === 0) {\n const msg =\n ' INCONSISTENCY -- no chat leafObject in file ' + leafDocument\n debug.trace(msg)\n throw new Error(msg)\n }\n const sortMe = leafObjects.map(leafObject => [\n folderStore.any(leafObject, ns.dct('created')),\n leafObject\n ])\n sortMe.sort()\n if (backwards) sortMe.reverse()\n debug.log(\n (backwards ? 'Latest' : 'Earliest') + ' leafObject is ' + sortMe[0][1]\n )\n return sortMe[0][1]\n } // firstleafObject\n} // class\n"],"mappings":"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"}