solid-ui 2.4.23 → 2.4.24-0c90afe2

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 (248) hide show
  1. package/LICENSE.md +0 -0
  2. package/README.md +0 -0
  3. package/dist/index.html +0 -0
  4. package/dist/main.js +2221 -5081
  5. package/dist/main.js.map +1 -1
  6. package/lib/acl/access-controller.d.ts +0 -0
  7. package/lib/acl/access-controller.d.ts.map +0 -0
  8. package/lib/acl/access-controller.js +4 -67
  9. package/lib/acl/access-controller.js.map +1 -1
  10. package/lib/acl/access-groups.d.ts +0 -0
  11. package/lib/acl/access-groups.d.ts.map +0 -0
  12. package/lib/acl/access-groups.js +59 -137
  13. package/lib/acl/access-groups.js.map +1 -1
  14. package/lib/acl/acl-control.d.ts +0 -0
  15. package/lib/acl/acl-control.d.ts.map +0 -0
  16. package/lib/acl/acl-control.js +14 -54
  17. package/lib/acl/acl-control.js.map +1 -1
  18. package/lib/acl/acl.d.ts +0 -0
  19. package/lib/acl/acl.d.ts.map +0 -0
  20. package/lib/acl/acl.js +32 -107
  21. package/lib/acl/acl.js.map +1 -1
  22. package/lib/acl/add-agent-buttons.d.ts +0 -0
  23. package/lib/acl/add-agent-buttons.d.ts.map +0 -0
  24. package/lib/acl/add-agent-buttons.js +0 -92
  25. package/lib/acl/add-agent-buttons.js.map +1 -1
  26. package/lib/acl/index.d.ts +0 -0
  27. package/lib/acl/index.d.ts.map +0 -0
  28. package/lib/acl/index.js +1 -3
  29. package/lib/acl/index.js.map +1 -1
  30. package/lib/acl/styles.d.ts +0 -0
  31. package/lib/acl/styles.d.ts.map +0 -0
  32. package/lib/acl/styles.js +1 -2
  33. package/lib/acl/styles.js.map +1 -1
  34. package/lib/acl/types.d.ts +0 -0
  35. package/lib/acl/types.d.ts.map +0 -0
  36. package/lib/acl/types.js +0 -0
  37. package/lib/acl/types.js.map +0 -0
  38. package/lib/chat/bookmarks.js +8 -80
  39. package/lib/chat/bookmarks.js.map +1 -1
  40. package/lib/chat/chatLogic.js +109 -180
  41. package/lib/chat/chatLogic.js.map +1 -1
  42. package/lib/chat/dateFolder.js +51 -117
  43. package/lib/chat/dateFolder.js.map +1 -1
  44. package/lib/chat/infinite.js +40 -191
  45. package/lib/chat/infinite.js.map +1 -1
  46. package/lib/chat/message.js +37 -150
  47. package/lib/chat/message.js.map +1 -1
  48. package/lib/chat/messageTools.js +23 -96
  49. package/lib/chat/messageTools.js.map +1 -1
  50. package/lib/chat/thread.js +33 -91
  51. package/lib/chat/thread.js.map +1 -1
  52. package/lib/create/create.d.ts +0 -0
  53. package/lib/create/create.d.ts.map +0 -0
  54. package/lib/create/create.js +19 -51
  55. package/lib/create/create.js.map +1 -1
  56. package/lib/create/index.d.ts +0 -0
  57. package/lib/create/index.d.ts.map +0 -0
  58. package/lib/create/index.js +0 -2
  59. package/lib/create/index.js.map +1 -1
  60. package/lib/create/types.d.ts +0 -0
  61. package/lib/create/types.d.ts.map +0 -0
  62. package/lib/create/types.js +0 -0
  63. package/lib/create/types.js.map +0 -0
  64. package/lib/debug.d.ts +0 -0
  65. package/lib/debug.d.ts.map +0 -0
  66. package/lib/debug.js +0 -8
  67. package/lib/debug.js.map +1 -1
  68. package/lib/folders.js +4 -27
  69. package/lib/folders.js.map +1 -1
  70. package/lib/footer/index.d.ts +0 -0
  71. package/lib/footer/index.d.ts.map +0 -0
  72. package/lib/footer/index.js +2 -24
  73. package/lib/footer/index.js.map +1 -1
  74. package/lib/footer/styleMap.d.ts +0 -0
  75. package/lib/footer/styleMap.d.ts.map +0 -0
  76. package/lib/footer/styleMap.js +0 -0
  77. package/lib/footer/styleMap.js.map +1 -1
  78. package/lib/header/empty-profile.d.ts +0 -0
  79. package/lib/header/empty-profile.d.ts.map +0 -0
  80. package/lib/header/empty-profile.js +0 -0
  81. package/lib/header/empty-profile.js.map +1 -1
  82. package/lib/header/index.d.ts +0 -0
  83. package/lib/header/index.d.ts.map +0 -0
  84. package/lib/header/index.js +3 -72
  85. package/lib/header/index.js.map +1 -1
  86. package/lib/header/styleMap.d.ts +0 -0
  87. package/lib/header/styleMap.d.ts.map +0 -0
  88. package/lib/header/styleMap.js +4 -3
  89. package/lib/header/styleMap.js.map +1 -1
  90. package/lib/iconBase.d.ts +0 -0
  91. package/lib/iconBase.d.ts.map +0 -0
  92. package/lib/iconBase.js +3 -4
  93. package/lib/iconBase.js.map +1 -1
  94. package/lib/icons/solid_logo.d.ts +0 -0
  95. package/lib/icons/solid_logo.d.ts.map +0 -0
  96. package/lib/icons/solid_logo.js +0 -0
  97. package/lib/icons/solid_logo.js.map +0 -0
  98. package/lib/index.d.ts +0 -0
  99. package/lib/index.d.ts.map +0 -0
  100. package/lib/index.js +5 -46
  101. package/lib/index.js.map +1 -1
  102. package/lib/jss/index.d.ts +0 -0
  103. package/lib/jss/index.d.ts.map +0 -0
  104. package/lib/jss/index.js +3 -9
  105. package/lib/jss/index.js.map +1 -1
  106. package/lib/log.d.ts +0 -0
  107. package/lib/log.d.ts.map +0 -0
  108. package/lib/log.js +15 -51
  109. package/lib/log.js.map +1 -1
  110. package/lib/login/login.d.ts +0 -0
  111. package/lib/login/login.d.ts.map +0 -0
  112. package/lib/login/login.js +74 -303
  113. package/lib/login/login.js.map +1 -1
  114. package/lib/matrix/index.d.ts +0 -0
  115. package/lib/matrix/index.d.ts.map +0 -0
  116. package/lib/matrix/index.js +0 -2
  117. package/lib/matrix/index.js.map +1 -1
  118. package/lib/matrix/matrix.d.ts +0 -0
  119. package/lib/matrix/matrix.d.ts.map +0 -0
  120. package/lib/matrix/matrix.js +7 -55
  121. package/lib/matrix/matrix.js.map +1 -1
  122. package/lib/matrix/types.d.ts +0 -0
  123. package/lib/matrix/types.d.ts.map +0 -0
  124. package/lib/matrix/types.js +0 -0
  125. package/lib/matrix/types.js.map +0 -0
  126. package/lib/media/index.d.ts +0 -0
  127. package/lib/media/index.d.ts.map +0 -0
  128. package/lib/media/index.js +0 -2
  129. package/lib/media/index.js.map +1 -1
  130. package/lib/media/media-capture.d.ts +0 -0
  131. package/lib/media/media-capture.d.ts.map +0 -0
  132. package/lib/media/media-capture.js +13 -33
  133. package/lib/media/media-capture.js.map +1 -1
  134. package/lib/messageArea.js +23 -64
  135. package/lib/messageArea.js.map +1 -1
  136. package/lib/noun_Camera_1618446_000000.js +0 -0
  137. package/lib/noun_Camera_1618446_000000.js.map +1 -1
  138. package/lib/ns.js +5 -7
  139. package/lib/ns.js.map +1 -1
  140. package/lib/pad.d.ts +0 -0
  141. package/lib/pad.d.ts.map +0 -0
  142. package/lib/pad.js +48 -234
  143. package/lib/pad.js.map +1 -1
  144. package/lib/participation.d.ts +0 -0
  145. package/lib/participation.d.ts.map +0 -0
  146. package/lib/participation.js +10 -65
  147. package/lib/participation.js.map +1 -1
  148. package/lib/preferences.js +21 -42
  149. package/lib/preferences.js.map +1 -1
  150. package/lib/signup/config-default.js +1 -8
  151. package/lib/signup/config-default.js.map +1 -1
  152. package/lib/signup/signup.js +6 -13
  153. package/lib/signup/signup.js.map +1 -1
  154. package/lib/stories/decorators.js +0 -2
  155. package/lib/stories/decorators.js.map +1 -1
  156. package/lib/style.js +8 -5
  157. package/lib/style.js.map +1 -1
  158. package/lib/style_multiSelect.js +1 -5
  159. package/lib/style_multiSelect.js.map +1 -1
  160. package/lib/table.js +309 -322
  161. package/lib/table.js.map +1 -1
  162. package/lib/tabs.d.ts +0 -0
  163. package/lib/tabs.d.ts.map +0 -0
  164. package/lib/tabs.js +20 -100
  165. package/lib/tabs.js.map +1 -1
  166. package/lib/typings.d.js +0 -0
  167. package/lib/typings.d.js.map +0 -0
  168. package/lib/utils/headerFooterHelpers.d.ts +0 -0
  169. package/lib/utils/headerFooterHelpers.d.ts.map +0 -0
  170. package/lib/utils/headerFooterHelpers.js +4 -52
  171. package/lib/utils/headerFooterHelpers.js.map +1 -1
  172. package/lib/utils/index.js +41 -135
  173. package/lib/utils/index.js.map +1 -1
  174. package/lib/utils/label.d.ts +0 -0
  175. package/lib/utils/label.d.ts.map +0 -0
  176. package/lib/utils/label.js +13 -34
  177. package/lib/utils/label.js.map +1 -1
  178. package/lib/versionInfo.d.ts +0 -0
  179. package/lib/versionInfo.d.ts.map +0 -0
  180. package/lib/versionInfo.js +14 -14
  181. package/lib/versionInfo.js.map +1 -1
  182. package/lib/widgets/buttons/iconLinks.d.ts +0 -0
  183. package/lib/widgets/buttons/iconLinks.d.ts.map +0 -0
  184. package/lib/widgets/buttons/iconLinks.js +0 -8
  185. package/lib/widgets/buttons/iconLinks.js.map +1 -1
  186. package/lib/widgets/buttons.d.ts +0 -0
  187. package/lib/widgets/buttons.d.ts.map +0 -0
  188. package/lib/widgets/buttons.js +115 -291
  189. package/lib/widgets/buttons.js.map +1 -1
  190. package/lib/widgets/dragAndDrop.js +12 -41
  191. package/lib/widgets/dragAndDrop.js.map +1 -1
  192. package/lib/widgets/error.d.ts +0 -0
  193. package/lib/widgets/error.d.ts.map +0 -0
  194. package/lib/widgets/error.js +3 -9
  195. package/lib/widgets/error.js.map +1 -1
  196. package/lib/widgets/forms/autocomplete/autocompleteBar.d.ts +0 -0
  197. package/lib/widgets/forms/autocomplete/autocompleteBar.d.ts.map +0 -0
  198. package/lib/widgets/forms/autocomplete/autocompleteBar.js +8 -71
  199. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
  200. package/lib/widgets/forms/autocomplete/autocompleteField.d.ts +0 -0
  201. package/lib/widgets/forms/autocomplete/autocompleteField.d.ts.map +0 -0
  202. package/lib/widgets/forms/autocomplete/autocompleteField.js +13 -65
  203. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
  204. package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts +0 -0
  205. package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts.map +0 -0
  206. package/lib/widgets/forms/autocomplete/autocompletePicker.js +15 -107
  207. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  208. package/lib/widgets/forms/autocomplete/language.d.ts +0 -0
  209. package/lib/widgets/forms/autocomplete/language.d.ts.map +0 -0
  210. package/lib/widgets/forms/autocomplete/language.js +6 -55
  211. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  212. package/lib/widgets/forms/autocomplete/publicData.d.ts +0 -0
  213. package/lib/widgets/forms/autocomplete/publicData.d.ts.map +0 -0
  214. package/lib/widgets/forms/autocomplete/publicData.js +12 -131
  215. package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
  216. package/lib/widgets/forms/basic.d.ts +0 -0
  217. package/lib/widgets/forms/basic.d.ts.map +0 -0
  218. package/lib/widgets/forms/basic.js +12 -55
  219. package/lib/widgets/forms/basic.js.map +1 -1
  220. package/lib/widgets/forms/comment.d.ts +0 -0
  221. package/lib/widgets/forms/comment.d.ts.map +0 -0
  222. package/lib/widgets/forms/comment.js +1 -15
  223. package/lib/widgets/forms/comment.js.map +1 -1
  224. package/lib/widgets/forms/fieldFunction.d.ts +0 -0
  225. package/lib/widgets/forms/fieldFunction.d.ts.map +0 -0
  226. package/lib/widgets/forms/fieldFunction.js +3 -16
  227. package/lib/widgets/forms/fieldFunction.js.map +1 -1
  228. package/lib/widgets/forms/fieldParams.d.ts +0 -0
  229. package/lib/widgets/forms/fieldParams.d.ts.map +0 -0
  230. package/lib/widgets/forms/fieldParams.js +0 -12
  231. package/lib/widgets/forms/fieldParams.js.map +1 -1
  232. package/lib/widgets/forms/formStyle.d.ts +0 -0
  233. package/lib/widgets/forms/formStyle.d.ts.map +0 -0
  234. package/lib/widgets/forms/formStyle.js +1 -14
  235. package/lib/widgets/forms/formStyle.js.map +1 -1
  236. package/lib/widgets/forms.js +70 -474
  237. package/lib/widgets/forms.js.map +1 -1
  238. package/lib/widgets/index.js +0 -21
  239. package/lib/widgets/index.js.map +1 -1
  240. package/lib/widgets/multiSelect.js +48 -171
  241. package/lib/widgets/multiSelect.js.map +1 -1
  242. package/lib/widgets/peoplePicker.js +20 -90
  243. package/lib/widgets/peoplePicker.js.map +1 -1
  244. package/lib/widgets/widgetHelpers.d.ts +0 -0
  245. package/lib/widgets/widgetHelpers.d.ts.map +0 -0
  246. package/lib/widgets/widgetHelpers.js +2 -9
  247. package/lib/widgets/widgetHelpers.js.map +1 -1
  248. package/package.json +30 -30
@@ -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,65 +65,52 @@ 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) {
91
71
  case 0:
92
72
  _previousPeriod = function _previousPeriod3() {
93
73
  _previousPeriod = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(file, level) {
94
- var younger, suitable, lastNonEmpty, _lastNonEmpty, parent, siblings, folder, uncle, cousins, result;
95
-
74
+ var younger, suitable, lastNonEmpty, _lastNonEmpty, parent, siblings, _folder, uncle, cousins, result;
96
75
  return _regenerator["default"].wrap(function _callee2$(_context2) {
97
76
  while (1) {
98
77
  switch (_context2.prev = _context2.next) {
99
78
  case 0:
100
79
  _lastNonEmpty = function _lastNonEmpty3() {
101
80
  _lastNonEmpty = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(siblings) {
102
- var _folder, leafDocument;
103
-
81
+ var _folder2, leafDocument;
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
- _folder = siblings.pop();
127
- leafDocument = _solidLogic.store.sym(_folder.uri + thisDateFolder.leafFileName);
99
+ _folder2 = siblings.pop();
100
+ leafDocument = _solidLogic.store.sym(_folder2.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
- return _context.abrupt("return", _folder);
138
-
108
+ return _context.abrupt("return", _folder2);
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,114 +120,106 @@ 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
- _context2.next = 7;
137
+ _context2.prev = 5;
138
+ _context2.next = 8;
176
139
  return _solidLogic.store.fetcher.load(parent);
177
-
178
- case 7:
140
+ case 8:
179
141
  siblings = _solidLogic.store.each(parent, ns.ldp('contains'));
180
142
  siblings = siblings.filter(younger);
181
- _context2.next = 11;
143
+ _context2.next = 12;
182
144
  return lastNonEmpty(siblings);
183
-
184
- case 11:
185
- folder = _context2.sent;
186
-
187
- if (!folder) {
188
- _context2.next = 14;
145
+ case 12:
146
+ _folder = _context2.sent;
147
+ if (!_folder) {
148
+ _context2.next = 15;
189
149
  break;
190
150
  }
191
-
192
- return _context2.abrupt("return", folder);
193
-
194
- case 14:
151
+ return _context2.abrupt("return", _folder);
152
+ case 15:
153
+ _context2.next = 26;
154
+ break;
155
+ case 17:
156
+ _context2.prev = 17;
157
+ _context2.t0 = _context2["catch"](5);
158
+ if (!(_context2.t0.response && _context2.t0.response.status && _context2.t0.response.status === 404)) {
159
+ _context2.next = 24;
160
+ break;
161
+ }
162
+ debug.log('Error 404 for chat parent file ' + parent);
163
+ delete _solidLogic.store.fetcher.requested[parent];
164
+ _context2.next = 26;
165
+ break;
166
+ case 24:
167
+ debug.log('*** Error NON 404 for chat parent file ' + parent);
168
+ // statusTR.appendChild(widgets.errorMessageBlock(dom, err, 'pink'))
169
+ throw new Error("*** ".concat(_context2.t0.message, " for chat folder ").concat(parent));
170
+ case 26:
195
171
  if (!(level === 0)) {
196
- _context2.next = 16;
172
+ _context2.next = 28;
197
173
  break;
198
174
  }
199
-
200
175
  return _context2.abrupt("return", null);
201
-
202
- case 16:
203
- _context2.next = 18;
176
+ case 28:
177
+ _context2.next = 30;
204
178
  return previousPeriod(parent, level - 1);
205
-
206
- case 18:
179
+ case 30:
207
180
  uncle = _context2.sent;
208
-
209
181
  if (uncle) {
210
- _context2.next = 21;
182
+ _context2.next = 33;
211
183
  break;
212
184
  }
213
-
214
185
  return _context2.abrupt("return", null);
215
-
216
- case 21:
217
- _context2.next = 23;
186
+ case 33:
187
+ _context2.next = 35;
218
188
  return _solidLogic.store.fetcher.load(uncle);
219
-
220
- case 23:
189
+ case 35:
221
190
  cousins = _solidLogic.store.each(uncle, ns.ldp('contains'));
222
- _context2.next = 26;
191
+ _context2.next = 38;
223
192
  return lastNonEmpty(cousins);
224
-
225
- case 26:
193
+ case 38:
226
194
  result = _context2.sent;
227
195
  return _context2.abrupt("return", result);
228
-
229
- case 28:
196
+ case 40:
230
197
  case "end":
231
198
  return _context2.stop();
232
199
  }
233
200
  }
234
- }, _callee2);
201
+ }, _callee2, null, [[5, 17]]);
235
202
  }));
236
203
  return _previousPeriod.apply(this, arguments);
237
204
  };
238
-
239
205
  previousPeriod = function _previousPeriod2(_x3, _x4) {
240
206
  return _previousPeriod.apply(this, arguments);
241
207
  };
242
-
243
208
  thisDateFolder = this;
244
209
  // previousPeriod
245
210
  folder = this.leafDocumentFromDate(date).dir();
246
211
  _context3.next = 6;
247
212
  return previousPeriod(folder, 3);
248
-
249
213
  case 6:
250
214
  found = _context3.sent;
251
-
252
215
  if (!found) {
253
216
  _context3.next = 10;
254
217
  break;
255
218
  }
256
-
257
219
  doc = _solidLogic.store.sym(found.uri + this.leafFileName);
258
220
  return _context3.abrupt("return", this.dateFromLeafDocument(doc));
259
-
260
221
  case 10:
261
222
  return _context3.abrupt("return", null);
262
-
263
223
  case 11:
264
224
  case "end":
265
225
  return _context3.stop();
@@ -267,20 +227,16 @@ var DateFolder = /*#__PURE__*/function () {
267
227
  }
268
228
  }, _callee3, this);
269
229
  }));
270
-
271
230
  function loadPrevious(_x, _x2) {
272
231
  return _loadPrevious.apply(this, arguments);
273
232
  }
274
-
275
233
  return loadPrevious;
276
234
  }() // loadPrevious
277
-
278
235
  }, {
279
236
  key: "firstLeaf",
280
237
  value: function () {
281
238
  var _firstLeaf = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(backwards) {
282
239
  var folderStore, folderFetcher, earliestSubfolder, _earliestSubfolder, y, month, d, leafDocument, leafObjects, msg, sortMe;
283
-
284
240
  return _regenerator["default"].wrap(function _callee5$(_context5) {
285
241
  while (1) {
286
242
  switch (_context5.prev = _context5.next) {
@@ -295,37 +251,30 @@ var DateFolder = /*#__PURE__*/function () {
295
251
  suitable = function _suitable2(x) {
296
252
  var tail = x.uri.slice(0, -1).split('/').slice(-1)[0];
297
253
  if (!'0123456789'.includes(tail[0])) return false; // not numeric
298
-
299
254
  return true;
300
255
  };
301
-
302
256
  debug.log(' parent ' + parent);
303
- delete folderFetcher.requested[parent.uri]; // try {
304
-
257
+ delete folderFetcher.requested[parent.uri];
258
+ // try {
305
259
  _context4.next = 5;
306
260
  return folderFetcher.load(parent, {
307
261
  force: true
308
262
  });
309
-
310
263
  case 5:
311
264
  // Force fetch as will have changed
312
265
  // }catch (err) {
313
266
  // }
314
267
  kids = folderStore.each(parent, ns.ldp('contains'));
315
268
  kids = kids.filter(suitable);
316
-
317
269
  if (!(kids.length === 0)) {
318
270
  _context4.next = 9;
319
271
  break;
320
272
  }
321
-
322
273
  throw new Error(' @@@ No children to parent2 ' + parent);
323
-
324
274
  case 9:
325
275
  kids.sort();
326
276
  if (backwards) kids.reverse();
327
277
  return _context4.abrupt("return", kids[0]);
328
-
329
278
  case 12:
330
279
  case "end":
331
280
  return _context4.stop();
@@ -335,45 +284,36 @@ var DateFolder = /*#__PURE__*/function () {
335
284
  }));
336
285
  return _earliestSubfolder.apply(this, arguments);
337
286
  };
338
-
339
287
  earliestSubfolder = function _earliestSubfolder2(_x7) {
340
288
  return _earliestSubfolder.apply(this, arguments);
341
289
  };
342
-
343
290
  // backwards -> last leafObject
344
291
  folderStore = $rdf.graph();
345
292
  folderFetcher = new $rdf.Fetcher(folderStore);
346
293
  _context5.next = 6;
347
294
  return earliestSubfolder(this.root.dir());
348
-
349
295
  case 6:
350
296
  y = _context5.sent;
351
297
  _context5.next = 9;
352
298
  return earliestSubfolder(y);
353
-
354
299
  case 9:
355
300
  month = _context5.sent;
356
301
  _context5.next = 12;
357
302
  return earliestSubfolder(month);
358
-
359
303
  case 12:
360
304
  d = _context5.sent;
361
305
  leafDocument = $rdf.sym(d.uri + 'chat.ttl');
362
306
  _context5.next = 16;
363
307
  return folderFetcher.load(leafDocument);
364
-
365
308
  case 16:
366
309
  leafObjects = folderStore.each(this.root, this.membershipProperty, null, leafDocument);
367
-
368
310
  if (!(leafObjects.length === 0)) {
369
311
  _context5.next = 21;
370
312
  break;
371
313
  }
372
-
373
314
  msg = ' INCONSISTENCY -- no chat leafObject in file ' + leafDocument;
374
315
  debug.trace(msg);
375
316
  throw new Error(msg);
376
-
377
317
  case 21:
378
318
  sortMe = leafObjects.map(function (leafObject) {
379
319
  return [folderStore.any(leafObject, ns.dct('created')), leafObject];
@@ -382,7 +322,6 @@ var DateFolder = /*#__PURE__*/function () {
382
322
  if (backwards) sortMe.reverse();
383
323
  debug.log((backwards ? 'Latest' : 'Earliest') + ' leafObject is ' + sortMe[0][1]);
384
324
  return _context5.abrupt("return", sortMe[0][1]);
385
-
386
325
  case 26:
387
326
  case "end":
388
327
  return _context5.stop();
@@ -390,18 +329,13 @@ var DateFolder = /*#__PURE__*/function () {
390
329
  }
391
330
  }, _callee5, this);
392
331
  }));
393
-
394
332
  function firstLeaf(_x6) {
395
333
  return _firstLeaf.apply(this, arguments);
396
334
  }
397
-
398
335
  return firstLeaf;
399
336
  }() // firstleafObject
400
-
401
337
  }]);
402
338
  return DateFolder;
403
339
  }(); // class
404
-
405
-
406
340
  exports.DateFolder = DateFolder;
407
341
  //# 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","response","status","requested","Error","message","uncle","cousins","result","leafDocumentFromDate","found","dateFromLeafDocument","earliestSubfolder","folderFetcher","force","kids","folderStore","$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 try {\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 } catch (err) {\n if (err.response && err.response.status && err.response.status === 404) {\n debug.log('Error 404 for chat parent file ' + parent)\n delete store.fetcher.requested[parent]\n } else {\n debug.log('*** Error NON 404 for chat parent file ' + parent)\n // statusTR.appendChild(widgets.errorMessageBlock(dom, err, 'pink'))\n throw (new Error(`*** ${err.message} for chat folder ${parent}`))\n }\n }\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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"}