sanity-plugin-graph-view 1.0.7 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/main.yml +133 -0
- package/.releaserc.json +4 -0
- package/.semantic-release/sanity-plugin-graph-view-1.0.8.tgz +0 -0
- package/CHANGELOG.md +13 -0
- package/LICENSE +1 -1
- package/README.md +14 -5
- package/lib/tool/GraphView.js +37 -146
- package/lib/tool/GraphViewIcon.js +0 -4
- package/lib/tool/hooks.js +1 -7
- package/lib/tool/index.js +0 -4
- package/lib/tool/utils.js +3 -19
- package/package.json +14 -11
- package/lib/tool/GraphTool.css +0 -56
- package/lib/tool/GraphTool.js +0 -980
- package/lib/tool/GraphToolIcon.js +0 -37
package/lib/tool/GraphView.js
CHANGED
|
@@ -1,86 +1,55 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
|
-
|
|
5
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
6
|
-
|
|
4
|
+
var _typeof3 = require("@babel/runtime/helpers/typeof");
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
8
|
exports.GraphView = GraphView;
|
|
11
|
-
|
|
12
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
|
-
|
|
14
9
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
15
|
-
|
|
10
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
16
11
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
17
|
-
|
|
18
12
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
19
|
-
|
|
20
13
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
21
|
-
|
|
22
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
23
|
-
|
|
24
15
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
25
|
-
|
|
26
16
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
27
|
-
|
|
28
17
|
var _userColor = require("@sanity/base/user-color");
|
|
29
|
-
|
|
30
18
|
var _color = require("@sanity/color");
|
|
31
|
-
|
|
32
19
|
var _polished = require("polished");
|
|
33
|
-
|
|
34
20
|
var _deepEqual = _interopRequireDefault(require("deep-equal"));
|
|
35
|
-
|
|
36
21
|
var _react = _interopRequireWildcard(require("react"));
|
|
37
|
-
|
|
38
22
|
var _client = _interopRequireDefault(require("part:@sanity/base/client"));
|
|
39
|
-
|
|
40
23
|
var _reactForceGraph = require("react-force-graph");
|
|
41
|
-
|
|
42
24
|
var _uuid = require("uuid");
|
|
43
|
-
|
|
44
25
|
var _bezierEasing = _interopRequireDefault(require("bezier-easing"));
|
|
45
|
-
|
|
46
26
|
var _router = require("part:@sanity/base/router");
|
|
47
|
-
|
|
48
27
|
var _configGraphView = _interopRequireDefault(require("config:graph-view"));
|
|
49
|
-
|
|
50
28
|
var _hooks = require("./hooks");
|
|
51
|
-
|
|
52
29
|
var _GraphView = _interopRequireDefault(require("./GraphView.css"));
|
|
53
|
-
|
|
54
30
|
var _utils = require("./utils");
|
|
55
|
-
|
|
56
|
-
function
|
|
57
|
-
|
|
31
|
+
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); }
|
|
32
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(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; }
|
|
33
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
58
34
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
59
|
-
|
|
60
35
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
61
|
-
|
|
62
36
|
var DEFAULT_QUERY = "\n *[\n !(_id in path(\"_.*\")) &&\n !(_type match \"system.*\") &&\n !(_type match \"sanity.*\")\n ]\n";
|
|
63
37
|
var fadeEasing = (0, _bezierEasing["default"])(0, 0.9, 1, 1);
|
|
64
38
|
var softEasing = (0, _bezierEasing["default"])(0.25, 0.1, 0.0, 1.0);
|
|
65
39
|
var idleTimeout = 10000;
|
|
66
40
|
var imageSize = 40;
|
|
67
|
-
|
|
68
41
|
function getTopDocTypes(counts) {
|
|
69
42
|
return (0, _utils.sortBy)(Object.keys(counts), function (docType) {
|
|
70
43
|
return counts[docType] || 0;
|
|
71
44
|
}).reverse().slice(0, 10);
|
|
72
45
|
}
|
|
73
|
-
|
|
74
46
|
function formatDocType(docType) {
|
|
75
47
|
return (docType.substring(0, 1).toUpperCase() + docType.substring(1)).replace(/\./g, ' ').replace(/[A-Z]/g, ' $&').trim();
|
|
76
48
|
}
|
|
77
|
-
|
|
78
49
|
function getDocTypeCounts(docs) {
|
|
79
50
|
var types = {};
|
|
80
|
-
|
|
81
51
|
var _iterator = _createForOfIteratorHelper(docs),
|
|
82
|
-
|
|
83
|
-
|
|
52
|
+
_step;
|
|
84
53
|
try {
|
|
85
54
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
86
55
|
var doc = _step.value;
|
|
@@ -91,38 +60,30 @@ function getDocTypeCounts(docs) {
|
|
|
91
60
|
} finally {
|
|
92
61
|
_iterator.f();
|
|
93
62
|
}
|
|
94
|
-
|
|
95
63
|
return types;
|
|
96
64
|
}
|
|
97
|
-
|
|
98
65
|
function labelFor(doc) {
|
|
99
66
|
return "".concat(doc.title || doc.name || doc._id).trim();
|
|
100
67
|
}
|
|
101
|
-
|
|
102
68
|
function valueFor(doc, maxSize) {
|
|
103
69
|
return 5 + 100 * ((0, _utils.sizeOf)(doc) / maxSize);
|
|
104
70
|
}
|
|
105
|
-
|
|
106
71
|
function findRefs(obj) {
|
|
107
72
|
var dest = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
108
|
-
|
|
109
73
|
if (obj != null) {
|
|
110
74
|
if ((0, _typeof2["default"])(obj) === 'object') {
|
|
111
75
|
for (var _i = 0, _Object$entries = Object.entries(obj); _i < _Object$entries.length; _i++) {
|
|
112
76
|
var _Object$entries$_i = (0, _slicedToArray2["default"])(_Object$entries[_i], 2),
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
77
|
+
k = _Object$entries$_i[0],
|
|
78
|
+
v = _Object$entries$_i[1];
|
|
116
79
|
if (k === '_ref' && typeof v === 'string' && v.length > 0) {
|
|
117
80
|
dest.push(stripDraftId(v));
|
|
118
81
|
}
|
|
119
|
-
|
|
120
82
|
findRefs(v, dest);
|
|
121
83
|
}
|
|
122
84
|
} else if (Array.isArray(obj)) {
|
|
123
85
|
var _iterator2 = _createForOfIteratorHelper(obj),
|
|
124
|
-
|
|
125
|
-
|
|
86
|
+
_step2;
|
|
126
87
|
try {
|
|
127
88
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
128
89
|
var _v = _step2.value;
|
|
@@ -135,24 +96,18 @@ function findRefs(obj) {
|
|
|
135
96
|
}
|
|
136
97
|
}
|
|
137
98
|
}
|
|
138
|
-
|
|
139
99
|
return dest;
|
|
140
100
|
}
|
|
141
|
-
|
|
142
101
|
function stripDraftId(id) {
|
|
143
102
|
return id.replace(/^drafts\./, '');
|
|
144
103
|
}
|
|
145
|
-
|
|
146
104
|
function deduplicateDrafts(docs) {
|
|
147
105
|
var deduped = {};
|
|
148
|
-
|
|
149
106
|
var _iterator3 = _createForOfIteratorHelper(docs),
|
|
150
|
-
|
|
151
|
-
|
|
107
|
+
_step3;
|
|
152
108
|
try {
|
|
153
109
|
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
154
110
|
var doc = _step3.value;
|
|
155
|
-
|
|
156
111
|
if (!/^drafts\./.test(doc._id)) {
|
|
157
112
|
deduped[doc._id] = doc;
|
|
158
113
|
}
|
|
@@ -162,14 +117,11 @@ function deduplicateDrafts(docs) {
|
|
|
162
117
|
} finally {
|
|
163
118
|
_iterator3.f();
|
|
164
119
|
}
|
|
165
|
-
|
|
166
120
|
var _iterator4 = _createForOfIteratorHelper(docs),
|
|
167
|
-
|
|
168
|
-
|
|
121
|
+
_step4;
|
|
169
122
|
try {
|
|
170
123
|
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
171
124
|
var _doc = _step4.value;
|
|
172
|
-
|
|
173
125
|
if (/^drafts\./.test(_doc._id)) {
|
|
174
126
|
var id = stripDraftId(_doc._id);
|
|
175
127
|
deduped[id] = Object.assign(_doc, {
|
|
@@ -182,16 +134,13 @@ function deduplicateDrafts(docs) {
|
|
|
182
134
|
} finally {
|
|
183
135
|
_iterator4.f();
|
|
184
136
|
}
|
|
185
|
-
|
|
186
137
|
return Object.values(deduped);
|
|
187
138
|
}
|
|
188
|
-
|
|
189
139
|
var Users = /*#__PURE__*/function () {
|
|
190
140
|
function Users() {
|
|
191
141
|
(0, _classCallCheck2["default"])(this, Users);
|
|
192
142
|
(0, _defineProperty2["default"])(this, "_users", []);
|
|
193
143
|
}
|
|
194
|
-
|
|
195
144
|
(0, _createClass2["default"])(Users, [{
|
|
196
145
|
key: "getById",
|
|
197
146
|
value: function () {
|
|
@@ -204,29 +153,21 @@ var Users = /*#__PURE__*/function () {
|
|
|
204
153
|
user = this._users.find(function (u) {
|
|
205
154
|
return u._id === id;
|
|
206
155
|
});
|
|
207
|
-
|
|
208
156
|
if (user) {
|
|
209
157
|
_context.next = 9;
|
|
210
158
|
break;
|
|
211
159
|
}
|
|
212
|
-
|
|
213
160
|
_context.next = 4;
|
|
214
161
|
return _client["default"].users.getById(id);
|
|
215
|
-
|
|
216
162
|
case 4:
|
|
217
163
|
user = _context.sent;
|
|
218
|
-
|
|
219
164
|
this._users.push(user);
|
|
220
|
-
|
|
221
165
|
_context.next = 8;
|
|
222
166
|
return (0, _utils.loadImage)(user.imageUrl || 'https://raw.githubusercontent.com/sanity-io/sanity-plugin-graph-view/main/assets/head-silhouette.jpg', imageSize, imageSize);
|
|
223
|
-
|
|
224
167
|
case 8:
|
|
225
168
|
user.image = _context.sent;
|
|
226
|
-
|
|
227
169
|
case 9:
|
|
228
170
|
return _context.abrupt("return", user);
|
|
229
|
-
|
|
230
171
|
case 10:
|
|
231
172
|
case "end":
|
|
232
173
|
return _context.stop();
|
|
@@ -234,34 +175,28 @@ var Users = /*#__PURE__*/function () {
|
|
|
234
175
|
}
|
|
235
176
|
}, _callee, this);
|
|
236
177
|
}));
|
|
237
|
-
|
|
238
178
|
function getById(_x) {
|
|
239
179
|
return _getById.apply(this, arguments);
|
|
240
180
|
}
|
|
241
|
-
|
|
242
181
|
return getById;
|
|
243
182
|
}()
|
|
244
183
|
}]);
|
|
245
184
|
return Users;
|
|
246
185
|
}();
|
|
247
|
-
|
|
248
|
-
var Session = function Session() {
|
|
186
|
+
var Session = /*#__PURE__*/(0, _createClass2["default"])(function Session() {
|
|
249
187
|
(0, _classCallCheck2["default"])(this, Session);
|
|
250
188
|
(0, _defineProperty2["default"])(this, "user", null);
|
|
251
189
|
(0, _defineProperty2["default"])(this, "doc", null);
|
|
252
190
|
(0, _defineProperty2["default"])(this, "lastActive", null);
|
|
253
|
-
};
|
|
254
|
-
|
|
191
|
+
});
|
|
255
192
|
var GraphData = /*#__PURE__*/function () {
|
|
256
193
|
function GraphData() {
|
|
257
194
|
var docs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
258
195
|
(0, _classCallCheck2["default"])(this, GraphData);
|
|
259
196
|
(0, _defineProperty2["default"])(this, "sessions", []);
|
|
260
197
|
var docsById = {};
|
|
261
|
-
|
|
262
198
|
var _iterator5 = _createForOfIteratorHelper(docs),
|
|
263
|
-
|
|
264
|
-
|
|
199
|
+
_step5;
|
|
265
200
|
try {
|
|
266
201
|
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
267
202
|
var doc = _step5.value;
|
|
@@ -272,7 +207,6 @@ var GraphData = /*#__PURE__*/function () {
|
|
|
272
207
|
} finally {
|
|
273
208
|
_iterator5.f();
|
|
274
209
|
}
|
|
275
|
-
|
|
276
210
|
this.data = {
|
|
277
211
|
nodes: docs.map(function (d) {
|
|
278
212
|
return Object.assign({
|
|
@@ -293,14 +227,12 @@ var GraphData = /*#__PURE__*/function () {
|
|
|
293
227
|
})
|
|
294
228
|
};
|
|
295
229
|
}
|
|
296
|
-
|
|
297
230
|
(0, _createClass2["default"])(GraphData, [{
|
|
298
231
|
key: "setSession",
|
|
299
232
|
value: function setSession(user, docNode) {
|
|
300
233
|
var session = this.sessions.find(function (s) {
|
|
301
234
|
return s.user.id === user.id && s.doc._id === docNode.doc._id;
|
|
302
235
|
});
|
|
303
|
-
|
|
304
236
|
if (!session) {
|
|
305
237
|
session = new Session();
|
|
306
238
|
session.id = (0, _uuid.v4)();
|
|
@@ -310,7 +242,6 @@ var GraphData = /*#__PURE__*/function () {
|
|
|
310
242
|
session.angle = Math.random() * 2 * Math.PI;
|
|
311
243
|
this.sessions.push(session);
|
|
312
244
|
}
|
|
313
|
-
|
|
314
245
|
session.lastActive = Date.now();
|
|
315
246
|
}
|
|
316
247
|
}, {
|
|
@@ -318,7 +249,6 @@ var GraphData = /*#__PURE__*/function () {
|
|
|
318
249
|
value: function reapSessions() {
|
|
319
250
|
for (var i = 0; i < this.sessions.length; i++) {
|
|
320
251
|
var session = this.sessions[i];
|
|
321
|
-
|
|
322
252
|
if (Date.now() - session.lastActive > idleTimeout) {
|
|
323
253
|
this.sessions = [].concat((0, _toConsumableArray2["default"])(this.sessions.slice(0, i)), (0, _toConsumableArray2["default"])(this.sessions.slice(i + 1)));
|
|
324
254
|
i--;
|
|
@@ -339,40 +269,32 @@ var GraphData = /*#__PURE__*/function () {
|
|
|
339
269
|
}]);
|
|
340
270
|
return GraphData;
|
|
341
271
|
}();
|
|
342
|
-
|
|
343
272
|
var users = new Users();
|
|
344
|
-
|
|
345
273
|
function GraphView() {
|
|
346
274
|
var query = _configGraphView["default"].query || DEFAULT_QUERY;
|
|
347
275
|
var userColorManager = (0, _userColor.useUserColorManager)();
|
|
348
|
-
|
|
349
276
|
var _useState = (0, _react.useState)(0),
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
277
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
278
|
+
maxSize = _useState2[0],
|
|
279
|
+
setMaxSize = _useState2[1];
|
|
354
280
|
var _useState3 = (0, _react.useState)(null),
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
281
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
282
|
+
hoverNode = _useState4[0],
|
|
283
|
+
setHoverNode = _useState4[1];
|
|
359
284
|
var _useState5 = (0, _react.useState)([]),
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
285
|
+
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
286
|
+
documents = _useState6[0],
|
|
287
|
+
setDocuments = _useState6[1];
|
|
364
288
|
var _useState7 = (0, _react.useState)([]),
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
289
|
+
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
290
|
+
docTypes = _useState8[0],
|
|
291
|
+
setDocTypes = _useState8[1];
|
|
369
292
|
var _useState9 = (0, _react.useState)(function () {
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
293
|
+
return new GraphData();
|
|
294
|
+
}),
|
|
295
|
+
_useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
296
|
+
graph = _useState10[0],
|
|
297
|
+
setGraph = _useState10[1];
|
|
376
298
|
var router = (0, _router.useRouter)();
|
|
377
299
|
var fetchCallback = (0, _react.useCallback)(function (docs) {
|
|
378
300
|
docs = deduplicateDrafts(docs);
|
|
@@ -383,58 +305,50 @@ function GraphView() {
|
|
|
383
305
|
}, []);
|
|
384
306
|
var listenCallback = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
385
307
|
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(update) {
|
|
386
|
-
var doc,
|
|
387
|
-
|
|
308
|
+
var doc, docsById, _iterator6, _step6, _doc2, oldDoc, docs, idx, newGraph, oldRefs, newRefs, graphChanged, docNode, nodeIdx, user, docId, _docs, _newGraph;
|
|
388
309
|
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
389
310
|
while (1) {
|
|
390
311
|
switch (_context2.prev = _context2.next) {
|
|
391
312
|
case 0:
|
|
392
313
|
doc = update.result;
|
|
393
|
-
|
|
394
314
|
if (!doc) {
|
|
395
315
|
_context2.next = 26;
|
|
396
316
|
break;
|
|
397
317
|
}
|
|
398
|
-
|
|
399
318
|
doc._id = stripDraftId(doc._id);
|
|
400
|
-
|
|
319
|
+
docsById = {};
|
|
401
320
|
_iterator6 = _createForOfIteratorHelper(documents);
|
|
402
|
-
|
|
403
321
|
try {
|
|
404
322
|
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
405
323
|
_doc2 = _step6.value;
|
|
406
|
-
|
|
324
|
+
docsById[_doc2._id] = _doc2;
|
|
407
325
|
}
|
|
408
326
|
} catch (err) {
|
|
409
327
|
_iterator6.e(err);
|
|
410
328
|
} finally {
|
|
411
329
|
_iterator6.f();
|
|
412
330
|
}
|
|
413
|
-
|
|
414
331
|
docs = (0, _toConsumableArray2["default"])(documents);
|
|
415
332
|
idx = documents.findIndex(function (d) {
|
|
416
333
|
return d._id === doc._id;
|
|
417
334
|
});
|
|
418
|
-
|
|
419
335
|
if (idx >= 0) {
|
|
420
336
|
oldDoc = docs[idx];
|
|
421
337
|
docs[idx] = doc;
|
|
422
338
|
} else {
|
|
423
339
|
docs.push(doc);
|
|
424
340
|
}
|
|
425
|
-
|
|
426
341
|
setDocuments(docs);
|
|
427
342
|
setDocTypes(getDocTypeCounts(docs));
|
|
428
343
|
setMaxSize(Math.max.apply(Math, (0, _toConsumableArray2["default"])(docs.map(_utils.sizeOf))));
|
|
429
344
|
newGraph = graph.clone();
|
|
430
345
|
oldRefs = findRefs(oldDoc || {}).filter(function (id) {
|
|
431
|
-
return id === doc._id ||
|
|
346
|
+
return id === doc._id || docsById[id] != null;
|
|
432
347
|
});
|
|
433
348
|
newRefs = findRefs(doc).filter(function (id) {
|
|
434
|
-
return id === doc._id ||
|
|
349
|
+
return id === doc._id || docsById[id] != null;
|
|
435
350
|
});
|
|
436
351
|
graphChanged = !(0, _deepEqual["default"])(oldRefs, newRefs);
|
|
437
|
-
|
|
438
352
|
if (graphChanged) {
|
|
439
353
|
newGraph.data.links = newGraph.data.links.filter(function (l) {
|
|
440
354
|
return l.source.id !== doc._id;
|
|
@@ -445,11 +359,9 @@ function GraphView() {
|
|
|
445
359
|
};
|
|
446
360
|
}));
|
|
447
361
|
}
|
|
448
|
-
|
|
449
362
|
nodeIdx = graph.data.nodes.findIndex(function (n) {
|
|
450
363
|
return n.doc && n.doc._id === doc._id;
|
|
451
364
|
});
|
|
452
|
-
|
|
453
365
|
if (nodeIdx >= 0) {
|
|
454
366
|
docNode = graph.data.nodes[nodeIdx];
|
|
455
367
|
docNode.doc = doc;
|
|
@@ -462,20 +374,16 @@ function GraphView() {
|
|
|
462
374
|
newGraph.data.nodes.push(docNode);
|
|
463
375
|
graphChanged = true;
|
|
464
376
|
}
|
|
465
|
-
|
|
466
377
|
if (graphChanged) {
|
|
467
378
|
setGraph(newGraph);
|
|
468
379
|
}
|
|
469
|
-
|
|
470
380
|
_context2.next = 22;
|
|
471
381
|
return users.getById(update.identity);
|
|
472
|
-
|
|
473
382
|
case 22:
|
|
474
383
|
user = _context2.sent;
|
|
475
384
|
graph.setSession(user, docNode);
|
|
476
385
|
_context2.next = 27;
|
|
477
386
|
break;
|
|
478
|
-
|
|
479
387
|
case 26:
|
|
480
388
|
if (update.transition === 'disappear') {
|
|
481
389
|
docId = stripDraftId(update.documentId);
|
|
@@ -494,7 +402,6 @@ function GraphView() {
|
|
|
494
402
|
});
|
|
495
403
|
setGraph(_newGraph);
|
|
496
404
|
}
|
|
497
|
-
|
|
498
405
|
case 27:
|
|
499
406
|
case "end":
|
|
500
407
|
return _context2.stop();
|
|
@@ -502,7 +409,6 @@ function GraphView() {
|
|
|
502
409
|
}
|
|
503
410
|
}, _callee2);
|
|
504
411
|
}));
|
|
505
|
-
|
|
506
412
|
return function (_x2) {
|
|
507
413
|
return _ref.apply(this, arguments);
|
|
508
414
|
};
|
|
@@ -564,15 +470,13 @@ function GraphView() {
|
|
|
564
470
|
},
|
|
565
471
|
onRenderFramePost: function onRenderFramePost(ctx, globalScale) {
|
|
566
472
|
var _iterator7 = _createForOfIteratorHelper(graph.sessions),
|
|
567
|
-
|
|
568
|
-
|
|
473
|
+
_step7;
|
|
569
474
|
try {
|
|
570
475
|
var _loop = function _loop() {
|
|
571
476
|
var session = _step7.value;
|
|
572
477
|
var node = graph.data.nodes.find(function (n) {
|
|
573
478
|
return n.doc && n.doc._id === session.doc._id;
|
|
574
479
|
});
|
|
575
|
-
|
|
576
480
|
if (node) {
|
|
577
481
|
var idleFactorRange = idleTimeout;
|
|
578
482
|
var angle = session.angle;
|
|
@@ -585,7 +489,6 @@ function GraphView() {
|
|
|
585
489
|
var x = node.x + Math.sin(angle) * distance / globalScale;
|
|
586
490
|
var y = node.y + Math.cos(angle) * distance / globalScale;
|
|
587
491
|
ctx.save();
|
|
588
|
-
|
|
589
492
|
try {
|
|
590
493
|
ctx.globalAlpha = fadeEasing(1 - Math.min(idleFactorRange, Date.now() - session.lastActive) / idleFactorRange);
|
|
591
494
|
ctx.font = "bold ".concat(Math.round(12 / globalScale), "px sans-serif");
|
|
@@ -600,21 +503,17 @@ function GraphView() {
|
|
|
600
503
|
ctx.lineWidth = 2 / globalScale;
|
|
601
504
|
ctx.arc(node.x, node.y, radius, 0, 2 * Math.PI, false);
|
|
602
505
|
ctx.stroke();
|
|
603
|
-
|
|
604
506
|
if (image) {
|
|
605
507
|
ctx.save();
|
|
606
|
-
|
|
607
508
|
try {
|
|
608
509
|
var dur = 700;
|
|
609
510
|
var f = softEasing(Math.max(0, (dur - (Date.now() - session.startTime)) / dur));
|
|
610
|
-
|
|
611
511
|
if (f > 0) {
|
|
612
512
|
ctx.beginPath();
|
|
613
513
|
ctx.fillStyle = (0, _polished.rgba)(userColor, f);
|
|
614
514
|
ctx.arc(x, y, (imgW / 2 + 10) / globalScale, 0, 2 * Math.PI, false);
|
|
615
515
|
ctx.fill();
|
|
616
516
|
}
|
|
617
|
-
|
|
618
517
|
ctx.beginPath();
|
|
619
518
|
ctx.fillStyle = (0, _polished.rgba)(_color.color.white.hex, 1.0);
|
|
620
519
|
ctx.arc(x, y, imgW / globalScale / 2, 0, 2 * Math.PI, false);
|
|
@@ -630,7 +529,6 @@ function GraphView() {
|
|
|
630
529
|
ctx.restore();
|
|
631
530
|
}
|
|
632
531
|
}
|
|
633
|
-
|
|
634
532
|
ctx.beginPath();
|
|
635
533
|
ctx.strokeStyle = (0, _polished.rgba)(_color.color.black.hex, 1);
|
|
636
534
|
ctx.lineWidth = 0.5 / globalScale;
|
|
@@ -647,7 +545,6 @@ function GraphView() {
|
|
|
647
545
|
}
|
|
648
546
|
}
|
|
649
547
|
};
|
|
650
|
-
|
|
651
548
|
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
652
549
|
_loop();
|
|
653
550
|
}
|
|
@@ -671,15 +568,12 @@ function GraphView() {
|
|
|
671
568
|
ctx.arc(node.x, node.y, radius, 0, 2 * Math.PI, false);
|
|
672
569
|
ctx.stroke();
|
|
673
570
|
ctx.fill();
|
|
674
|
-
|
|
675
571
|
if (radius * globalScale > 10) {
|
|
676
572
|
ctx.font = "".concat(fontSize, "px sans-serif");
|
|
677
573
|
var w = radius * 2 + 30 / globalScale;
|
|
678
|
-
|
|
679
574
|
for (var len = 50; len >= 5; len /= 1.2) {
|
|
680
575
|
var label = (0, _utils.truncate)(labelFor(node.doc), Math.round(len));
|
|
681
576
|
var textMetrics = ctx.measureText(label);
|
|
682
|
-
|
|
683
577
|
if (textMetrics.width < w) {
|
|
684
578
|
// ctx.fillStyle = rgba(color.white.hex, 1.0)
|
|
685
579
|
ctx.textAlign = 'center';
|
|
@@ -705,15 +599,12 @@ function GraphView() {
|
|
|
705
599
|
}
|
|
706
600
|
}));
|
|
707
601
|
}
|
|
708
|
-
|
|
709
602
|
var colorCache = {};
|
|
710
603
|
var typeColorNum = 0;
|
|
711
|
-
|
|
712
604
|
function getDocTypeColor(docType) {
|
|
713
605
|
if (colorCache[docType]) {
|
|
714
606
|
return colorCache[docType];
|
|
715
607
|
}
|
|
716
|
-
|
|
717
608
|
var hue = _color.COLOR_HUES[typeColorNum % _color.COLOR_HUES.length];
|
|
718
609
|
typeColorNum += 1;
|
|
719
610
|
colorCache[docType] = {
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.GraphViewIcon = void 0;
|
|
9
|
-
|
|
10
8
|
var _react = _interopRequireDefault(require("react"));
|
|
11
|
-
|
|
12
9
|
/**
|
|
13
10
|
* Couple of things to note:
|
|
14
11
|
* - width and height is set to 1em
|
|
@@ -28,5 +25,4 @@ var GraphViewIcon = function GraphViewIcon() {
|
|
|
28
25
|
d: "M18.022 38.676v2.813h-1.21q-4.864 0-6.525-1.447-1.64-1.445-1.64-5.762v-4.666q0-2.95-1.055-4.083-1.055-1.13-3.828-1.13h-1.19v-2.794h1.19q2.793 0 3.828-1.114 1.055-1.132 1.055-4.043V11.76q0-4.316 1.64-5.742 1.66-1.446 6.524-1.446h1.212v2.793h-1.328q-2.754 0-3.594.86-.84.86-.84 3.613v4.844q0 3.066-.898 4.453-.88 1.387-3.028 1.875 2.168.527 3.047 1.914.88 1.387.88 4.434v4.843q0 2.754.84 3.614.84.86 3.594.86h1.328zM28.04 38.676h1.368q2.735 0 3.555-.84.84-.84.84-3.633V29.36q0-3.047.88-4.434.878-1.387 3.046-1.914-2.17-.488-3.048-1.875-.88-1.387-.88-4.453V11.84q0-2.773-.84-3.613-.82-.86-3.554-.86H28.04V4.574h1.232q4.863 0 6.484 1.446 1.64 1.426 1.64 5.742v4.687q0 2.91 1.055 4.042 1.056 1.114 3.83 1.114h1.21V24.4h-1.21q-2.774 0-3.83 1.13-1.053 1.134-1.053 4.084v4.667q0 4.318-1.64 5.763-1.622 1.446-6.485 1.446h-1.23v-2.814z"
|
|
29
26
|
}));
|
|
30
27
|
};
|
|
31
|
-
|
|
32
28
|
exports.GraphViewIcon = GraphViewIcon;
|
package/lib/tool/hooks.js
CHANGED
|
@@ -1,29 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
|
-
exports.useListen = useListen;
|
|
9
7
|
exports.useFetchDocuments = useFetchDocuments;
|
|
10
|
-
|
|
8
|
+
exports.useListen = useListen;
|
|
11
9
|
var _react = require("react");
|
|
12
|
-
|
|
13
10
|
var _client = _interopRequireDefault(require("part:@sanity/base/client"));
|
|
14
|
-
|
|
15
11
|
function useListen(query, params, options, onUpdate, dependencies) {
|
|
16
12
|
(0, _react.useEffect)(function () {
|
|
17
13
|
var subscription = _client["default"].listen(query, params, options).subscribe(function (update) {
|
|
18
14
|
onUpdate(update);
|
|
19
15
|
});
|
|
20
|
-
|
|
21
16
|
return function () {
|
|
22
17
|
subscription.unsubscribe();
|
|
23
18
|
};
|
|
24
19
|
}, dependencies);
|
|
25
20
|
}
|
|
26
|
-
|
|
27
21
|
function useFetchDocuments(query, onFetch, dependencies) {
|
|
28
22
|
(0, _react.useEffect)(function () {
|
|
29
23
|
_client["default"].fetch(query).then(function (result) {
|
package/lib/tool/index.js
CHANGED
|
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports["default"] = void 0;
|
|
7
|
-
|
|
8
7
|
var _router = require("part:@sanity/base/router");
|
|
9
|
-
|
|
10
8
|
var _GraphView = require("./GraphView");
|
|
11
|
-
|
|
12
9
|
var _GraphViewIcon = require("./GraphViewIcon");
|
|
13
|
-
|
|
14
10
|
var _default = {
|
|
15
11
|
title: 'Graph',
|
|
16
12
|
name: 'graph-your-content',
|