@difizen/libro-core 0.3.13 → 0.3.14

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.
@@ -100,11 +100,11 @@ export var LibroCellView = (_dec = view('libro-cell-view'), _dec2 = prop(), _dec
100
100
  value: function onViewMount() {
101
101
  var id = this.options.id + this.parent.id + 'add';
102
102
  if (this.cellService.libroViewTracker.isEnabledSpmReporter && this.options.id && this.cellService.libroViewTracker.hasTracker(id)) {
103
- var cellTracker = this.cellService.libroViewTracker.getOrCreateSpmTracker({
103
+ var cellTracker = this.cellService.libroViewTracker.getOrCreateTrackers({
104
104
  id: id
105
105
  });
106
- cellTracker.endTime = Date.now();
107
- cellTracker.extra.cellType = this.model.type;
106
+ cellTracker['endTime'] = Date.now();
107
+ cellTracker['extra'].cellType = this.model.type;
108
108
  this.cellService.libroViewTracker.tracker(cellTracker);
109
109
  }
110
110
  }
@@ -113,11 +113,11 @@ export var LibroCellView = (_dec = view('libro-cell-view'), _dec2 = prop(), _dec
113
113
  value: function onViewUnmount() {
114
114
  var id = this.model.id + this.parent.id + 'delete';
115
115
  if (this.cellService.libroViewTracker.isEnabledSpmReporter && this.cellService.libroViewTracker.hasTracker(id)) {
116
- var cellTracker = this.cellService.libroViewTracker.getOrCreateSpmTracker({
116
+ var cellTracker = this.cellService.libroViewTracker.getOrCreateTrackers({
117
117
  id: id
118
118
  });
119
- cellTracker.endTime = Date.now();
120
- cellTracker.extra.cellType = this.model.type;
119
+ cellTracker['endTime'] = Date.now();
120
+ cellTracker['extra'].cellType = this.model.type;
121
121
  this.cellService.libroViewTracker.tracker(cellTracker);
122
122
  }
123
123
  }
@@ -1 +1 @@
1
- {"version":3,"file":"libro-edit-cell-view.d.ts","sourceRoot":"","sources":["../../src/cell/libro-edit-cell-view.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,OAAO,EACR,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,EAEL,oBAAoB,EAOrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,WAAW,cAAe,SAAQ,QAAQ;IAC9C,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IAE5B,IAAI,EAAE,MAAM,IAAI,CAAC;IAEjB,IAAI,EAAE,MAAM,IAAI,CAAC;IAEjB,YAAY,EAAE,MAAM,SAAS,CAAC;CAC/B;AAED,eAAO,MAAM,cAAc;cACf,OAAO,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS;CAWvC,CAAC;AAEF;;;GAGG;AACH,8BAAsB,mBACpB,SAAQ,aACR,YAAW,cAAc;IAEzB,SAAS,CAAC,iBAAiB,uBAA8B;IAEzD,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IAEH,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAClD,iBAAiB,EAAE,iBAAiB,CAAC;IAGhE,UAAU,CAAC,EAAE,cAAc,CAAC;gBAGN,OAAO,EAAE,eAAe,EACvB,WAAW,EAAE,WAAW;IAK/C,SAAS,CAAC,eAAe,IAAI,qBAAqB;cAalC,gBAAgB;IAoB1B,YAAY;IA2BlB,YAAY,EAAE,YAAY,CAA0B;IAEpD,YAAY,uDAKV;IAEO,WAAW;IASX,qBAAqB,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC;IAQ/D,SAAS,CAAC,WAAW;IAgBZ,KAAK,WAAY,OAAO,UAS/B;IAEO,IAAI,aAGX;IAEF,IAAI,UAAU,WAEb;IAED,IAAI,IAAI,IAAI;IAIZ,IAAI,IAAI,IAAI;CAGb"}
1
+ {"version":3,"file":"libro-edit-cell-view.d.ts","sourceRoot":"","sources":["../../src/cell/libro-edit-cell-view.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,OAAO,EACR,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,EAEL,oBAAoB,EAOrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,WAAW,cAAe,SAAQ,QAAQ;IAC9C,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IAE5B,IAAI,EAAE,MAAM,IAAI,CAAC;IAEjB,IAAI,EAAE,MAAM,IAAI,CAAC;IAEjB,YAAY,EAAE,MAAM,SAAS,CAAC;CAC/B;AAED,eAAO,MAAM,cAAc;cACf,OAAO,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS;CAWvC,CAAC;AAEF;;;GAGG;AACH,8BAAsB,mBACpB,SAAQ,aACR,YAAW,cAAc;IAEzB,SAAS,CAAC,iBAAiB,uBAA8B;IAEzD,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IAEH,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAClD,iBAAiB,EAAE,iBAAiB,CAAC;IAGhE,UAAU,CAAC,EAAE,cAAc,CAAC;gBAGN,OAAO,EAAE,eAAe,EACvB,WAAW,EAAE,WAAW;IAK/C,SAAS,CAAC,eAAe,IAAI,qBAAqB;cAalC,gBAAgB;IAoB1B,YAAY;IAmDlB,YAAY,EAAE,YAAY,CAA0B;IAEpD,YAAY,uDAKV;IAEO,WAAW;IASX,qBAAqB,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC;IAQ/D,SAAS,CAAC,WAAW;IAgBZ,KAAK,WAAY,OAAO,UAS/B;IAEO,IAAI,aAGX;IAEF,IAAI,UAAU,WAEb;IAED,IAAI,IAAI,IAAI;IAIZ,IAAI,IAAI,IAAI;CAGb"}
@@ -164,6 +164,25 @@ export var LibroEditorCellView = (_dec = prop(), _dec2 = inject(LibroContextKey)
164
164
  if (e.status === 'ready') {
165
165
  _this3.editor = _this3.editorView.editor;
166
166
  _this3.afterEditorReady();
167
+ if (_this3.parent.libroViewTracker.isEnabledSpmReporter) {
168
+ if (_this3.parent.libroViewTracker.hasTracker(_this3.parent.model.options['modelId'] || _this3.parent.model.options['id'])) {
169
+ var libroTracker = _this3.parent.libroViewTracker.getOrCreateTrackers({
170
+ id: _this3.parent.model.options['modelId'] || _this3.parent.model.options['id']
171
+ });
172
+ libroTracker['endTime'] = Date.now();
173
+ libroTracker['extra'].cellsCount = _this3.parent.model.cells.length;
174
+ _this3.parent.libroViewTracker.tracker(libroTracker);
175
+ }
176
+ var id = _this3.options.id + _this3.parent.id + 'add';
177
+ if (_this3.options.id && _this3.parent.libroViewTracker.hasTracker(id)) {
178
+ var cellTracker = _this3.parent.libroViewTracker.getOrCreateTrackers({
179
+ id: id
180
+ });
181
+ cellTracker['endTime'] = Date.now();
182
+ cellTracker['extra'].cellType = _this3.model.type;
183
+ _this3.parent.libroViewTracker.tracker(cellTracker);
184
+ }
185
+ }
167
186
  } else if (e.status === 'disposed') {
168
187
  _this3.toDisposeOnEditor.dispose();
169
188
  }
@@ -400,11 +400,11 @@ export var LibroCommandContribution = (_dec = singleton({
400
400
  libro.addCell(newCell, insertIndex);
401
401
  if (_this.libroViewTracker.isEnabledSpmReporter) {
402
402
  id = newCell.id + libro.id;
403
- libroTracker = _this.libroViewTracker.getOrCreateSpmTracker({
403
+ libroTracker = _this.libroViewTracker.getOrCreateTrackers({
404
404
  id: id
405
405
  });
406
- libroTracker.extra.cellsCount = libro.model.cells.length;
407
- libroTracker.extra.cellOperation = 'add';
406
+ libroTracker['extra'].cellsCount = libro.model.cells.length;
407
+ libroTracker['extra'].cellOperation = 'add';
408
408
  }
409
409
  case 7:
410
410
  case "end":
@@ -44,8 +44,7 @@ export type Options = {
44
44
  export interface ITracker {
45
45
  id: string;
46
46
  [key: string]: any;
47
- startTime?: number;
48
- endTime?: number;
47
+ log: () => Record<string, any>;
49
48
  }
50
49
  export interface ScrollParams {
51
50
  cellIndex: number;
@@ -1 +1 @@
1
- {"version":3,"file":"libro-protocol.d.ts","sourceRoot":"","sources":["../src/libro-protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"libro-protocol.d.ts","sourceRoot":"","sources":["../src/libro-protocol.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"libro-service.d.ts","sourceRoot":"","sources":["../src/libro-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"libro-service.d.ts","sourceRoot":"","sources":["../src/libro-service.ts"],"names":[],"mappings":"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"}
@@ -157,29 +157,28 @@ export var LibroService = (_dec = singleton({
157
157
  key: "getOrCreateView",
158
158
  value: function () {
159
159
  var _getOrCreateView = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(options) {
160
- var model, notebookViewPromise, notebookView;
160
+ var notebookViewPromise, notebookView;
161
161
  return _regeneratorRuntime().wrap(function _callee$(_context) {
162
162
  while (1) switch (_context.prev = _context.next) {
163
163
  case 0:
164
164
  if (this.libroViewTracker.isEnabledSpmReporter) {
165
- this.libroViewTracker.getOrCreateSpmTracker({
166
- id: options.modelId
165
+ this.libroViewTracker.getOrCreateTrackers({
166
+ id: options.modelId || options.id
167
167
  });
168
168
  }
169
- model = this.getOrCreateModel(options);
170
169
  notebookViewPromise = this.viewManager.getOrCreateView(notebookViewFactoryId, _objectSpread(_objectSpread({}, options || {}), {}, {
171
- modelId: model.id
170
+ modelId: options.modelId || options.id
172
171
  }));
173
- _context.next = 5;
172
+ _context.next = 4;
174
173
  return notebookViewPromise;
175
- case 5:
174
+ case 4:
176
175
  notebookView = _context.sent;
177
176
  if (!this.libroViewTracker.viewCache.has(notebookView.id)) {
178
177
  this.watchNotebookView(notebookView);
179
178
  }
180
179
  this.libroViewTracker.viewCache.set(notebookView.id, notebookView);
181
180
  return _context.abrupt("return", notebookViewPromise);
182
- case 9:
181
+ case 8:
183
182
  case "end":
184
183
  return _context.stop();
185
184
  }
@@ -17,15 +17,31 @@ export declare class Tracker implements ITracker {
17
17
  extra: any;
18
18
  };
19
19
  }
20
+ export declare class FpsTracker implements ITracker {
21
+ [key: string]: any;
22
+ extra?: any;
23
+ id: string;
24
+ avgFPS: number;
25
+ maxFrameTime: number;
26
+ totalDropped: number;
27
+ constructor(id?: string, extra?: any);
28
+ log(): {
29
+ id: string;
30
+ avgFPS: number;
31
+ maxFrameTime: number;
32
+ totalDropped: number;
33
+ extra: any;
34
+ };
35
+ }
20
36
  export declare class LibroViewTracker {
21
37
  viewCache: Map<string, NotebookView>;
22
38
  modelCache: Map<string, NotebookModel>;
23
- spmTracker: Map<string, Tracker>;
39
+ trackers: Map<string, ITracker>;
24
40
  isEnabledSpmReporter: boolean;
25
- protected onTrackerEmitter: Emitter<ITracker>;
26
- get onTracker(): import("@difizen/mana-app").Event<ITracker>;
27
- getOrCreateSpmTracker(options: Options): Tracker;
28
- tracker(tracker: Tracker): void;
41
+ protected onTrackerEmitter: Emitter<Record<string, any>>;
42
+ get onTracker(): import("@difizen/mana-app").Event<Record<string, any>>;
43
+ getOrCreateTrackers(options: Options): ITracker | Tracker | FpsTracker;
44
+ tracker(tracker: ITracker): void;
29
45
  hasTracker(id: string): boolean;
30
46
  }
31
47
  //# sourceMappingURL=libro-view-tracker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"libro-view-tracker.d.ts","sourceRoot":"","sources":["../src/libro-view-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGvD,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,OAAO,EACR,MAAM,qBAAqB,CAAC;AAE7B,qBAAa,OAAQ,YAAW,QAAQ;IACtC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;gBAEC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG;IAMpC,QAAQ;IAKR,WAAW;IAOX,GAAG;;;;;;;CAWJ;AAED,qBACa,gBAAgB;IAC3B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAa;IACjD,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAa;IACnD,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAa;IAC7C,oBAAoB,EAAE,OAAO,CAAC;IAE9B,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAiB;IAC9D,IAAI,SAAS,gDAEZ;IAED,qBAAqB,CAAC,OAAO,EAAE,OAAO;IActC,OAAO,CAAC,OAAO,EAAE,OAAO;IAKxB,UAAU,CAAC,EAAE,EAAE,MAAM;CAGtB"}
1
+ {"version":3,"file":"libro-view-tracker.d.ts","sourceRoot":"","sources":["../src/libro-view-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGvD,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,OAAO,EACR,MAAM,qBAAqB,CAAC;AAE7B,qBAAa,OAAQ,YAAW,QAAQ;IACtC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;gBAEC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG;IAMpC,QAAQ;IAKR,WAAW;IAOX,GAAG;;;;;;;CAWJ;AAED,qBAAa,UAAW,YAAW,QAAQ;IACzC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;gBAET,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG;IAKpC,GAAG;;;;;;;CAUJ;AAED,qBACa,gBAAgB;IAC3B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAa;IACjD,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAa;IACnD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAa;IAC5C,oBAAoB,EAAE,OAAO,CAAC;IAE9B,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAiB;IACzE,IAAI,SAAS,2DAEZ;IAED,mBAAmB,CAAC,OAAO,EAAE,OAAO;IAepC,OAAO,CAAC,OAAO,EAAE,QAAQ;IAMzB,UAAU,CAAC,EAAE,EAAE,MAAM;CAGtB"}
@@ -48,12 +48,38 @@ export var Tracker = /*#__PURE__*/function () {
48
48
  }]);
49
49
  return Tracker;
50
50
  }();
51
+ export var FpsTracker = /*#__PURE__*/function () {
52
+ function FpsTracker(id, extra) {
53
+ _classCallCheck(this, FpsTracker);
54
+ this.extra = void 0;
55
+ this.id = void 0;
56
+ this.avgFPS = void 0;
57
+ this.maxFrameTime = void 0;
58
+ this.totalDropped = void 0;
59
+ this.id = id || v4();
60
+ this.extra = extra || {};
61
+ }
62
+ _createClass(FpsTracker, [{
63
+ key: "log",
64
+ value: function log() {
65
+ var result = {
66
+ id: this.id,
67
+ avgFPS: this.avgFPS,
68
+ maxFrameTime: this.maxFrameTime,
69
+ totalDropped: this.totalDropped,
70
+ extra: this.extra
71
+ };
72
+ return result;
73
+ }
74
+ }]);
75
+ return FpsTracker;
76
+ }();
51
77
  export var LibroViewTracker = (_dec = singleton(), _dec(_class = /*#__PURE__*/function () {
52
78
  function LibroViewTracker() {
53
79
  _classCallCheck(this, LibroViewTracker);
54
80
  this.viewCache = new Map();
55
81
  this.modelCache = new Map();
56
- this.spmTracker = new Map();
82
+ this.trackers = new Map();
57
83
  this.isEnabledSpmReporter = void 0;
58
84
  this.onTrackerEmitter = new Emitter();
59
85
  }
@@ -63,30 +89,31 @@ export var LibroViewTracker = (_dec = singleton(), _dec(_class = /*#__PURE__*/fu
63
89
  return this.onTrackerEmitter.event;
64
90
  }
65
91
  }, {
66
- key: "getOrCreateSpmTracker",
67
- value: function getOrCreateSpmTracker(options) {
92
+ key: "getOrCreateTrackers",
93
+ value: function getOrCreateTrackers(options) {
68
94
  var id = options.id || v4();
69
- var exist = this.spmTracker.get(id);
95
+ var exist = this.trackers.get(id);
70
96
  if (exist) {
71
- if (!exist.startTime) {
72
- exist.startTime = Date.now();
97
+ if (options['type'] !== 'fps' && !exist['startTime']) {
98
+ exist['startTime'] = Date.now();
73
99
  }
74
100
  return exist;
75
101
  }
76
- var tracker = new Tracker(id);
77
- this.spmTracker.set(id, tracker);
102
+ var tracker = options['type'] === 'fps' ? new FpsTracker(id) : new Tracker(id);
103
+ this.trackers.set(id, tracker);
78
104
  return tracker;
79
105
  }
80
106
  }, {
81
107
  key: "tracker",
82
108
  value: function tracker(_tracker) {
83
109
  var trackerLog = _tracker.log();
110
+ this.trackers.delete(_tracker.id);
84
111
  this.onTrackerEmitter.fire(trackerLog);
85
112
  }
86
113
  }, {
87
114
  key: "hasTracker",
88
115
  value: function hasTracker(id) {
89
- return this.spmTracker.has(id);
116
+ return this.trackers.has(id);
90
117
  }
91
118
  }]);
92
119
  return LibroViewTracker;
@@ -39,7 +39,7 @@ export declare class LibroView extends BaseView implements NotebookView {
39
39
  libroService: LibroService;
40
40
  libroSlotManager: LibroSlotManager;
41
41
  contextKey: LibroContextKey;
42
- protected libroViewTracker: LibroViewTracker;
42
+ libroViewTracker: LibroViewTracker;
43
43
  protected viewManager: ViewManager;
44
44
  protected configurationService: ConfigurationService;
45
45
  protected virtualizedManager: VirtualizedManager;
@@ -1 +1 @@
1
- {"version":3,"file":"libro-view.d.ts","sourceRoot":"","sources":["../src/libro-view.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"libro-view.d.ts","sourceRoot":"","sources":["../src/libro-view.tsx"],"names":[],"mappings":"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"}
package/es/libro-view.js CHANGED
@@ -47,7 +47,7 @@ import { LibroService } from "./libro-service.js";
47
47
  import { AutoInsertWhenNoCell, EnterEditModeWhenAddCell, HeaderToolbarVisible, RightContentFixed } from "./libro-setting.js";
48
48
  import { LibroViewTracker } from "./libro-view-tracker.js";
49
49
  import { LibroSlotManager, LibroSlotView } from "./slot/index.js";
50
- import { useSize } from "./utils/index.js";
50
+ import { useFrameMonitor, useSize } from "./utils/index.js";
51
51
  import { VirtualizedManagerHelper } from "./virtualized-manager-helper.js";
52
52
  import "./index.less";
53
53
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -67,6 +67,16 @@ export var LibroContentComponent = /*#__PURE__*/memo(function LibroContentCompon
67
67
  var _useConfigurationValu3 = useConfigurationValue(RightContentFixed),
68
68
  _useConfigurationValu4 = _slicedToArray(_useConfigurationValu3, 1),
69
69
  rightContentFixed = _useConfigurationValu4[0];
70
+ useFrameMonitor(libroViewContentRef, instance.libroViewTracker.isEnabledSpmReporter, function (payload) {
71
+ var fpsTracker = instance.libroViewTracker.getOrCreateTrackers({
72
+ type: 'fps'
73
+ });
74
+ fpsTracker['avgFPS'] = payload.summary.avgFPS;
75
+ fpsTracker['maxFrameTime'] = payload.summary.maxFrameTime;
76
+ fpsTracker['totalDropped'] = payload.summary.totalDropped;
77
+ fpsTracker['extra'] = payload.frames;
78
+ instance.libroViewTracker.tracker(fpsTracker);
79
+ });
70
80
  var handleScroll = useCallback(function () {
71
81
  var _instance$container, _instance$activeCell, _instance$activeCell2, _instance$activeCell3, _activeOutput$outputs, _instance$activeCell4, _libroViewTopRef$curr;
72
82
  instance.cellScrollEmitter.fire();
@@ -328,11 +338,11 @@ export var LibroView = (_dec = transient(), _dec2 = view(notebookViewFactoryId),
328
338
  case 0:
329
339
  if (_this.libroViewTracker.isEnabledSpmReporter && option.id) {
330
340
  id = option.id + _this.id;
331
- libroTracker = _this.libroViewTracker.getOrCreateSpmTracker({
341
+ libroTracker = _this.libroViewTracker.getOrCreateTrackers({
332
342
  id: id + 'add'
333
343
  });
334
- libroTracker.extra.cellsCount = _this.model.cells.length;
335
- libroTracker.extra.cellOperation = 'add';
344
+ libroTracker['extra'].cellsCount = _this.model.cells.length;
345
+ libroTracker['extra'].cellOperation = 'add';
336
346
  }
337
347
  _context3.next = 3;
338
348
  return _this.getCellViewByOption(option);
@@ -357,11 +367,11 @@ export var LibroView = (_dec = transient(), _dec2 = view(notebookViewFactoryId),
357
367
  case 0:
358
368
  if (_this.libroViewTracker.isEnabledSpmReporter && option.id) {
359
369
  id = option.id + _this.id;
360
- libroTracker = _this.libroViewTracker.getOrCreateSpmTracker({
370
+ libroTracker = _this.libroViewTracker.getOrCreateTrackers({
361
371
  id: id + 'add'
362
372
  });
363
- libroTracker.extra.cellsCount = _this.model.cells.length;
364
- libroTracker.extra.cellOperation = 'add';
373
+ libroTracker['extra'].cellsCount = _this.model.cells.length;
374
+ libroTracker['extra'].cellOperation = 'add';
365
375
  }
366
376
  _context4.next = 3;
367
377
  return _this.getCellViewByOption(option);
@@ -391,11 +401,11 @@ export var LibroView = (_dec = transient(), _dec2 = view(notebookViewFactoryId),
391
401
  _this.deleteCell = function (cell) {
392
402
  if (_this.libroViewTracker.isEnabledSpmReporter && cell.model.id) {
393
403
  var id = cell.model.id + _this.id;
394
- var libroTracker = _this.libroViewTracker.getOrCreateSpmTracker({
404
+ var libroTracker = _this.libroViewTracker.getOrCreateTrackers({
395
405
  id: id + 'delete'
396
406
  });
397
- libroTracker.extra.cellsCount = _this.model.cells.length;
398
- libroTracker.extra.cellOperation = 'delete';
407
+ libroTracker['extra'].cellsCount = _this.model.cells.length;
408
+ libroTracker['extra'].cellOperation = 'delete';
399
409
  }
400
410
  var deleteIndex = _this.model.getCells().findIndex(function (item) {
401
411
  return equals(item, cell);
@@ -1826,14 +1836,6 @@ export var LibroView = (_dec = transient(), _dec2 = view(notebookViewFactoryId),
1826
1836
  var _this2$model$onChange, _this2$model;
1827
1837
  (_this2$model$onChange = (_this2$model = _this2.model).onChange) === null || _this2$model$onChange === void 0 || _this2$model$onChange.call(_this2$model);
1828
1838
  }));
1829
- if (_this2.libroViewTracker.isEnabledSpmReporter) {
1830
- var libroTracker = _this2.libroViewTracker.getOrCreateSpmTracker({
1831
- id: _this2.model.id
1832
- });
1833
- libroTracker.endTime = Date.now();
1834
- libroTracker.extra.cellsCount = _this2.model.cells.length;
1835
- _this2.libroViewTracker.tracker(libroTracker);
1836
- }
1837
1839
  _this2.initializedDefer.resolve();
1838
1840
  }, 0);
1839
1841
  case 8:
@@ -4,5 +4,18 @@ type Size = {
4
4
  height: number;
5
5
  };
6
6
  export declare function useSize(ref: RefObject<HTMLDivElement>): Size | undefined;
7
+ interface FrameMetrics {
8
+ timestamp: number;
9
+ fps: number;
10
+ frameTime: number;
11
+ droppedFrames: number;
12
+ }
13
+ export declare const useFrameMonitor: (scrollContainerRef: React.RefObject<HTMLElement>, isEnabledSpmReporter: boolean, onReport?: ((payload: {
14
+ frames: FrameMetrics[];
15
+ summary: any;
16
+ }) => void) | undefined) => {
17
+ frameData: import("react").MutableRefObject<FrameMetrics[]>;
18
+ reportFrames: () => void;
19
+ };
7
20
  export {};
8
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAsBvC,KAAK,IAAI,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAC9C,wBAAgB,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,cAAc,CAAC,GAAG,IAAI,GAAG,SAAS,CAuBxE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAuBvC,KAAK,IAAI,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAC9C,wBAAgB,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,cAAc,CAAC,GAAG,IAAI,GAAG,SAAS,CAuBxE;AAED,UAAU,YAAY;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,eAAe,uBACN,eAAe,CAAC,WAAW,CAAC,wBAC1B,OAAO,wBACR;IAAE,QAAQ,YAAY,EAAE,CAAC;IAAC,OAAO,EAAE,GAAG,CAAA;CAAE,KAAK,IAAI;;;CAiIvE,CAAC"}
package/es/utils/index.js CHANGED
@@ -1,3 +1,7 @@
1
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
2
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
4
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
1
5
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
6
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
7
  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); }
@@ -5,6 +9,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
5
9
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
10
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
11
  import { useUnmount } from '@difizen/mana-app';
12
+ import { useEffect } from 'react';
8
13
  import { useCallback, useLayoutEffect, useRef, useState } from 'react';
9
14
  function useRafState(initialState) {
10
15
  var ref = useRef(0);
@@ -50,4 +55,123 @@ export function useSize(ref) {
50
55
  };
51
56
  }, [ref, setSize]);
52
57
  return size;
53
- }
58
+ }
59
+ export var useFrameMonitor = function useFrameMonitor(scrollContainerRef, isEnabledSpmReporter, onReport) {
60
+ var frameData = useRef([]);
61
+ var lastFrameTime = useRef(performance.now());
62
+ var frameCount = useRef(0);
63
+ var lastScrollPos = useRef(0);
64
+ var rafId = useRef();
65
+ var isMonitoring = useRef(false);
66
+ // const reportTimeout = useRef<NodeJS.Timeout>();
67
+ var intervalId = useRef();
68
+ var scrollDebounceTimer = useRef();
69
+ var stopFrameCapture = useCallback(function () {
70
+ if (rafId.current) {
71
+ cancelAnimationFrame(rafId.current);
72
+ }
73
+ if (intervalId.current) {
74
+ clearInterval(intervalId.current);
75
+ }
76
+ isMonitoring.current = false;
77
+ frameCount.current = 0;
78
+ lastFrameTime.current = performance.now();
79
+ }, []);
80
+ var startFrameCapture = useCallback(function () {
81
+ if (isMonitoring.current) {
82
+ return;
83
+ }
84
+ var calculateFPS = function calculateFPS() {
85
+ if (!isMonitoring.current) {
86
+ return;
87
+ }
88
+ var now = performance.now();
89
+ var delta = now - lastFrameTime.current;
90
+ frameData.current.push({
91
+ timestamp: now,
92
+ fps: Math.round(frameCount.current * 1000 / delta),
93
+ frameTime: delta / frameCount.current,
94
+ droppedFrames: Math.max(0, Math.floor(delta / 16.67) - frameCount.current)
95
+ });
96
+ lastFrameTime.current = now;
97
+ frameCount.current = 0;
98
+ };
99
+ var loop = function loop() {
100
+ if (isMonitoring.current) {
101
+ frameCount.current++;
102
+ rafId.current = requestAnimationFrame(loop);
103
+ }
104
+ };
105
+ isMonitoring.current = true;
106
+ frameCount.current = 0;
107
+ lastFrameTime.current = performance.now();
108
+ if (intervalId.current) {
109
+ clearInterval(intervalId.current);
110
+ }
111
+ intervalId.current = setInterval(calculateFPS, 1500); // 每秒生成一个数据点
112
+ rafId.current = requestAnimationFrame(loop);
113
+ }, []);
114
+ var reportFrames = useCallback(function () {
115
+ if (frameData.current.length === 0) {
116
+ return;
117
+ }
118
+ var send = function send() {
119
+ var payload = {
120
+ frames: frameData.current,
121
+ summary: {
122
+ avgFPS: frameData.current.reduce(function (a, b) {
123
+ return a + b.fps;
124
+ }, 0) / frameData.current.length,
125
+ maxFrameTime: Math.max.apply(Math, _toConsumableArray(frameData.current.map(function (f) {
126
+ return f.frameTime;
127
+ }))),
128
+ totalDropped: frameData.current.reduce(function (a, b) {
129
+ return a + b.droppedFrames;
130
+ }, 0)
131
+ }
132
+ };
133
+ if (onReport) {
134
+ onReport(payload); // 触发外部回调
135
+ }
136
+ frameData.current = [];
137
+ };
138
+ requestIdleCallback(send, {
139
+ timeout: 1000
140
+ }) || setTimeout(send, 0);
141
+ }, [onReport]); // 添加 onReport 依赖
142
+
143
+ useEffect(function () {
144
+ if (!isEnabledSpmReporter) {
145
+ return;
146
+ }
147
+ var container = scrollContainerRef.current || window;
148
+ var handleScroll = function handleScroll() {
149
+ // const currentScroll =
150
+ // (container as Window).scrollY || (container as HTMLElement).scrollTop;
151
+ var currentScroll = container instanceof Window ? container.scrollY : container.scrollTop;
152
+ var scrollDelta = Math.abs(currentScroll - lastScrollPos.current);
153
+ if (scrollDelta > 10) {
154
+ if (!isMonitoring.current) {
155
+ startFrameCapture();
156
+ }
157
+ clearTimeout(scrollDebounceTimer.current);
158
+ scrollDebounceTimer.current = setTimeout(function () {
159
+ stopFrameCapture();
160
+ reportFrames();
161
+ }, 2000);
162
+ }
163
+ lastScrollPos.current = currentScroll;
164
+ };
165
+ container.addEventListener('scroll', handleScroll, {
166
+ passive: true
167
+ });
168
+ return function () {
169
+ container.removeEventListener('scroll', handleScroll);
170
+ stopFrameCapture();
171
+ };
172
+ }, [scrollContainerRef, startFrameCapture, stopFrameCapture, reportFrames, isEnabledSpmReporter]);
173
+ return {
174
+ frameData: frameData,
175
+ reportFrames: reportFrames
176
+ };
177
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@difizen/libro-core",
3
- "version": "0.3.13",
3
+ "version": "0.3.14",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "libro",
@@ -34,10 +34,10 @@
34
34
  ],
35
35
  "dependencies": {
36
36
  "@ant-design/icons": "^5.1.0",
37
- "@difizen/libro-code-editor": "^0.3.13",
38
- "@difizen/libro-common": "^0.3.13",
39
- "@difizen/libro-shared-model": "^0.3.13",
40
- "@difizen/libro-virtualized": "^0.3.13",
37
+ "@difizen/libro-code-editor": "^0.3.14",
38
+ "@difizen/libro-common": "^0.3.14",
39
+ "@difizen/libro-shared-model": "^0.3.14",
40
+ "@difizen/libro-virtualized": "^0.3.14",
41
41
  "@difizen/mana-app": "latest",
42
42
  "@difizen/mana-l10n": "latest",
43
43
  "@difizen/mana-react": "latest",
@@ -93,11 +93,11 @@ export class LibroCellView extends BaseView implements CellView {
93
93
  ) {
94
94
  const cellTracker = (
95
95
  this.cellService as LibroCellService
96
- ).libroViewTracker.getOrCreateSpmTracker({
96
+ ).libroViewTracker.getOrCreateTrackers({
97
97
  id,
98
98
  });
99
- cellTracker.endTime = Date.now();
100
- cellTracker.extra.cellType = this.model.type;
99
+ cellTracker['endTime'] = Date.now();
100
+ cellTracker['extra'].cellType = this.model.type;
101
101
  (this.cellService as LibroCellService).libroViewTracker.tracker(cellTracker);
102
102
  }
103
103
  }
@@ -110,11 +110,11 @@ export class LibroCellView extends BaseView implements CellView {
110
110
  ) {
111
111
  const cellTracker = (
112
112
  this.cellService as LibroCellService
113
- ).libroViewTracker.getOrCreateSpmTracker({
113
+ ).libroViewTracker.getOrCreateTrackers({
114
114
  id,
115
115
  });
116
- cellTracker.endTime = Date.now();
117
- cellTracker.extra.cellType = this.model.type;
116
+ cellTracker['endTime'] = Date.now();
117
+ cellTracker['extra'].cellType = this.model.type;
118
118
  (this.cellService as LibroCellService).libroViewTracker.tracker(cellTracker);
119
119
  }
120
120
  }
@@ -127,6 +127,30 @@ export abstract class LibroEditorCellView
127
127
  if (e.status === 'ready') {
128
128
  this.editor = this.editorView!.editor;
129
129
  this.afterEditorReady();
130
+ if (this.parent.libroViewTracker.isEnabledSpmReporter) {
131
+ if (
132
+ this.parent.libroViewTracker.hasTracker(
133
+ this.parent.model.options['modelId'] || this.parent.model.options['id'],
134
+ )
135
+ ) {
136
+ const libroTracker = this.parent.libroViewTracker.getOrCreateTrackers({
137
+ id:
138
+ this.parent.model.options['modelId'] || this.parent.model.options['id'],
139
+ });
140
+ libroTracker['endTime'] = Date.now();
141
+ libroTracker['extra'].cellsCount = this.parent.model.cells.length;
142
+ this.parent.libroViewTracker.tracker(libroTracker);
143
+ }
144
+ const id = this.options.id + this.parent.id + 'add';
145
+ if (this.options.id && this.parent.libroViewTracker.hasTracker(id)) {
146
+ const cellTracker = this.parent.libroViewTracker.getOrCreateTrackers({
147
+ id,
148
+ });
149
+ cellTracker['endTime'] = Date.now();
150
+ cellTracker['extra'].cellType = this.model.type;
151
+ this.parent.libroViewTracker.tracker(cellTracker);
152
+ }
153
+ }
130
154
  } else if (e.status === 'disposed') {
131
155
  this.toDisposeOnEditor.dispose();
132
156
  }
@@ -276,11 +276,11 @@ export class LibroCommandContribution implements CommandContribution {
276
276
  libro.addCell(newCell, insertIndex);
277
277
  if (this.libroViewTracker.isEnabledSpmReporter) {
278
278
  const id = newCell.id + libro.id;
279
- const libroTracker = this.libroViewTracker.getOrCreateSpmTracker({
279
+ const libroTracker = this.libroViewTracker.getOrCreateTrackers({
280
280
  id,
281
281
  });
282
- libroTracker.extra.cellsCount = libro.model.cells.length;
283
- libroTracker.extra.cellOperation = 'add';
282
+ libroTracker['extra'].cellsCount = libro.model.cells.length;
283
+ libroTracker['extra'].cellOperation = 'add';
284
284
  }
285
285
  },
286
286
  isVisible: (cell, libro, path) => {
@@ -58,8 +58,7 @@ export type Options = {
58
58
  export interface ITracker {
59
59
  id: string;
60
60
  [key: string]: any;
61
- startTime?: number;
62
- endTime?: number;
61
+ log: () => Record<string, any>;
63
62
  }
64
63
 
65
64
  export interface ScrollParams {
@@ -145,16 +145,15 @@ export class LibroService implements NotebookService, Disposable {
145
145
  }
146
146
  async getOrCreateView(options: NotebookOption): Promise<NotebookView> {
147
147
  if (this.libroViewTracker.isEnabledSpmReporter) {
148
- this.libroViewTracker.getOrCreateSpmTracker({
149
- id: options.modelId,
148
+ this.libroViewTracker.getOrCreateTrackers({
149
+ id: options.modelId || options.id,
150
150
  });
151
151
  }
152
- const model = this.getOrCreateModel(options);
153
152
  const notebookViewPromise = this.viewManager.getOrCreateView<NotebookView>(
154
153
  notebookViewFactoryId,
155
154
  {
156
155
  ...(options || {}),
157
- modelId: model.id,
156
+ modelId: options.modelId || options.id,
158
157
  },
159
158
  );
160
159
  const notebookView = await notebookViewPromise;
@@ -46,38 +46,65 @@ export class Tracker implements ITracker {
46
46
  }
47
47
  }
48
48
 
49
+ export class FpsTracker implements ITracker {
50
+ [key: string]: any;
51
+ extra?: any;
52
+ id: string;
53
+ avgFPS: number;
54
+ maxFrameTime: number;
55
+ totalDropped: number;
56
+
57
+ constructor(id?: string, extra?: any) {
58
+ this.id = id || v4();
59
+ this.extra = extra || {};
60
+ }
61
+
62
+ log() {
63
+ const result = {
64
+ id: this.id,
65
+ avgFPS: this.avgFPS,
66
+ maxFrameTime: this.maxFrameTime,
67
+ totalDropped: this.totalDropped,
68
+ extra: this.extra,
69
+ };
70
+ return result;
71
+ }
72
+ }
73
+
49
74
  @singleton()
50
75
  export class LibroViewTracker {
51
76
  viewCache: Map<string, NotebookView> = new Map();
52
77
  modelCache: Map<string, NotebookModel> = new Map();
53
- spmTracker: Map<string, Tracker> = new Map();
78
+ trackers: Map<string, ITracker> = new Map();
54
79
  isEnabledSpmReporter: boolean;
55
80
 
56
- protected onTrackerEmitter: Emitter<ITracker> = new Emitter();
81
+ protected onTrackerEmitter: Emitter<Record<string, any>> = new Emitter();
57
82
  get onTracker() {
58
83
  return this.onTrackerEmitter.event;
59
84
  }
60
85
 
61
- getOrCreateSpmTracker(options: Options) {
86
+ getOrCreateTrackers(options: Options) {
62
87
  const id = options.id || v4();
63
- const exist = this.spmTracker.get(id);
88
+ const exist = this.trackers.get(id);
64
89
  if (exist) {
65
- if (!exist.startTime) {
66
- exist.startTime = Date.now();
90
+ if (options['type'] !== 'fps' && !exist['startTime']) {
91
+ exist['startTime'] = Date.now();
67
92
  }
68
93
  return exist;
69
94
  }
70
- const tracker = new Tracker(id);
71
- this.spmTracker.set(id, tracker);
95
+
96
+ const tracker = options['type'] === 'fps' ? new FpsTracker(id) : new Tracker(id);
97
+ this.trackers.set(id, tracker);
72
98
  return tracker;
73
99
  }
74
100
 
75
- tracker(tracker: Tracker) {
101
+ tracker(tracker: ITracker) {
76
102
  const trackerLog = tracker.log();
103
+ this.trackers.delete(tracker.id);
77
104
  this.onTrackerEmitter.fire(trackerLog);
78
105
  }
79
106
 
80
107
  hasTracker(id: string) {
81
- return this.spmTracker.has(id);
108
+ return this.trackers.has(id);
82
109
  }
83
110
  }
@@ -64,7 +64,7 @@ import {
64
64
  } from './libro-setting.js';
65
65
  import { LibroViewTracker } from './libro-view-tracker.js';
66
66
  import { LibroSlotManager, LibroSlotView } from './slot/index.js';
67
- import { useSize } from './utils/index.js';
67
+ import { useFrameMonitor, useSize } from './utils/index.js';
68
68
  import { VirtualizedManagerHelper } from './virtualized-manager-helper.js';
69
69
  import type { VirtualizedManager } from './virtualized-manager.js';
70
70
  import './index.less';
@@ -84,6 +84,18 @@ export const LibroContentComponent = memo(function LibroContentComponent() {
84
84
  const HeaderRender = getOrigin(instance.headerRender);
85
85
  const [headerVisible] = useConfigurationValue(HeaderToolbarVisible);
86
86
  const [rightContentFixed] = useConfigurationValue(RightContentFixed);
87
+ useFrameMonitor(
88
+ libroViewContentRef,
89
+ instance.libroViewTracker.isEnabledSpmReporter,
90
+ (payload) => {
91
+ const fpsTracker = instance.libroViewTracker.getOrCreateTrackers({ type: 'fps' });
92
+ fpsTracker['avgFPS'] = payload.summary.avgFPS;
93
+ fpsTracker['maxFrameTime'] = payload.summary.maxFrameTime;
94
+ fpsTracker['totalDropped'] = payload.summary.totalDropped;
95
+ fpsTracker['extra'] = payload.frames;
96
+ instance.libroViewTracker.tracker(fpsTracker);
97
+ },
98
+ );
87
99
 
88
100
  const handleScroll = useCallback(() => {
89
101
  instance.cellScrollEmitter.fire();
@@ -326,7 +338,7 @@ export class LibroView extends BaseView implements NotebookView {
326
338
  @inject(LibroService) libroService: LibroService;
327
339
  @inject(LibroSlotManager) libroSlotManager: LibroSlotManager;
328
340
  @inject(LibroContextKey) contextKey: LibroContextKey;
329
- @inject(LibroViewTracker) protected libroViewTracker: LibroViewTracker;
341
+ @inject(LibroViewTracker) libroViewTracker: LibroViewTracker;
330
342
  @inject(ViewManager) protected viewManager: ViewManager;
331
343
  @inject(ConfigurationService) protected configurationService: ConfigurationService;
332
344
 
@@ -454,14 +466,6 @@ export class LibroView extends BaseView implements NotebookView {
454
466
  this.model.onChange?.();
455
467
  }),
456
468
  );
457
- if (this.libroViewTracker.isEnabledSpmReporter) {
458
- const libroTracker = this.libroViewTracker.getOrCreateSpmTracker({
459
- id: this.model.id,
460
- });
461
- libroTracker.endTime = Date.now();
462
- libroTracker.extra.cellsCount = this.model.cells.length;
463
- this.libroViewTracker.tracker(libroTracker);
464
- }
465
469
  this.initializedDefer.resolve();
466
470
  }, 0);
467
471
  }
@@ -530,11 +534,11 @@ export class LibroView extends BaseView implements NotebookView {
530
534
  addCell = async (option: CellOptions, position?: number) => {
531
535
  if (this.libroViewTracker.isEnabledSpmReporter && option.id) {
532
536
  const id = option.id + this.id;
533
- const libroTracker = this.libroViewTracker.getOrCreateSpmTracker({
537
+ const libroTracker = this.libroViewTracker.getOrCreateTrackers({
534
538
  id: id + 'add',
535
539
  });
536
- libroTracker.extra.cellsCount = this.model.cells.length;
537
- libroTracker.extra.cellOperation = 'add';
540
+ libroTracker['extra'].cellsCount = this.model.cells.length;
541
+ libroTracker['extra'].cellOperation = 'add';
538
542
  }
539
543
  const cellView = await this.getCellViewByOption(option);
540
544
  this.model.addCell(cellView, position);
@@ -543,11 +547,11 @@ export class LibroView extends BaseView implements NotebookView {
543
547
  addCellAbove = async (option: CellOptions, position?: number) => {
544
548
  if (this.libroViewTracker.isEnabledSpmReporter && option.id) {
545
549
  const id = option.id + this.id;
546
- const libroTracker = this.libroViewTracker.getOrCreateSpmTracker({
550
+ const libroTracker = this.libroViewTracker.getOrCreateTrackers({
547
551
  id: id + 'add',
548
552
  });
549
- libroTracker.extra.cellsCount = this.model.cells.length;
550
- libroTracker.extra.cellOperation = 'add';
553
+ libroTracker['extra'].cellsCount = this.model.cells.length;
554
+ libroTracker['extra'].cellOperation = 'add';
551
555
  }
552
556
  const cellView = await this.getCellViewByOption(option);
553
557
  this.model.addCell(cellView, position, 'above');
@@ -575,11 +579,11 @@ export class LibroView extends BaseView implements NotebookView {
575
579
  deleteCell = (cell: CellView) => {
576
580
  if (this.libroViewTracker.isEnabledSpmReporter && cell.model.id) {
577
581
  const id = cell.model.id + this.id;
578
- const libroTracker = this.libroViewTracker.getOrCreateSpmTracker({
582
+ const libroTracker = this.libroViewTracker.getOrCreateTrackers({
579
583
  id: id + 'delete',
580
584
  });
581
- libroTracker.extra.cellsCount = this.model.cells.length;
582
- libroTracker.extra.cellOperation = 'delete';
585
+ libroTracker['extra'].cellsCount = this.model.cells.length;
586
+ libroTracker['extra'].cellOperation = 'delete';
583
587
  }
584
588
  const deleteIndex = this.model.getCells().findIndex((item) => {
585
589
  return equals(item, cell);
@@ -1,5 +1,6 @@
1
1
  import { useUnmount } from '@difizen/mana-app';
2
2
  import type { RefObject } from 'react';
3
+ import { useEffect } from 'react';
3
4
  import { useCallback, useLayoutEffect, useRef, useState } from 'react';
4
5
 
5
6
  function useRafState<S>(initialState?: S) {
@@ -46,3 +47,144 @@ export function useSize(ref: RefObject<HTMLDivElement>): Size | undefined {
46
47
  }, [ref, setSize]);
47
48
  return size;
48
49
  }
50
+
51
+ interface FrameMetrics {
52
+ timestamp: number;
53
+ fps: number;
54
+ frameTime: number;
55
+ droppedFrames: number;
56
+ }
57
+
58
+ export const useFrameMonitor = (
59
+ scrollContainerRef: React.RefObject<HTMLElement>,
60
+ isEnabledSpmReporter: boolean,
61
+ onReport?: (payload: { frames: FrameMetrics[]; summary: any }) => void,
62
+ ) => {
63
+ const frameData = useRef<FrameMetrics[]>([]);
64
+ const lastFrameTime = useRef(performance.now());
65
+ const frameCount = useRef(0);
66
+ const lastScrollPos = useRef(0);
67
+ const rafId = useRef<number>();
68
+ const isMonitoring = useRef(false);
69
+ // const reportTimeout = useRef<NodeJS.Timeout>();
70
+ const intervalId = useRef<NodeJS.Timeout>();
71
+ const scrollDebounceTimer = useRef<NodeJS.Timeout>();
72
+
73
+ const stopFrameCapture = useCallback(() => {
74
+ if (rafId.current) {
75
+ cancelAnimationFrame(rafId.current);
76
+ }
77
+ if (intervalId.current) {
78
+ clearInterval(intervalId.current);
79
+ }
80
+ isMonitoring.current = false;
81
+ frameCount.current = 0;
82
+ lastFrameTime.current = performance.now();
83
+ }, []);
84
+
85
+ const startFrameCapture = useCallback(() => {
86
+ if (isMonitoring.current) {
87
+ return;
88
+ }
89
+
90
+ const calculateFPS = () => {
91
+ if (!isMonitoring.current) {
92
+ return;
93
+ }
94
+ const now = performance.now();
95
+ const delta = now - lastFrameTime.current;
96
+ frameData.current.push({
97
+ timestamp: now,
98
+ fps: Math.round((frameCount.current * 1000) / delta),
99
+ frameTime: delta / frameCount.current,
100
+ droppedFrames: Math.max(0, Math.floor(delta / 16.67) - frameCount.current),
101
+ });
102
+ lastFrameTime.current = now;
103
+ frameCount.current = 0;
104
+ };
105
+
106
+ const loop = () => {
107
+ if (isMonitoring.current) {
108
+ frameCount.current++;
109
+ rafId.current = requestAnimationFrame(loop);
110
+ }
111
+ };
112
+
113
+ isMonitoring.current = true;
114
+ frameCount.current = 0;
115
+ lastFrameTime.current = performance.now();
116
+
117
+ if (intervalId.current) {
118
+ clearInterval(intervalId.current);
119
+ }
120
+ intervalId.current = setInterval(calculateFPS, 1500); // 每秒生成一个数据点
121
+ rafId.current = requestAnimationFrame(loop);
122
+ }, []);
123
+
124
+ const reportFrames = useCallback(() => {
125
+ if (frameData.current.length === 0) {
126
+ return;
127
+ }
128
+
129
+ const send = () => {
130
+ const payload = {
131
+ frames: frameData.current,
132
+ summary: {
133
+ avgFPS:
134
+ frameData.current.reduce((a, b) => a + b.fps, 0) / frameData.current.length,
135
+ maxFrameTime: Math.max(...frameData.current.map((f) => f.frameTime)),
136
+ totalDropped: frameData.current.reduce((a, b) => a + b.droppedFrames, 0),
137
+ },
138
+ };
139
+ if (onReport) {
140
+ onReport(payload); // 触发外部回调
141
+ }
142
+ frameData.current = [];
143
+ };
144
+
145
+ requestIdleCallback(send, { timeout: 1000 }) || setTimeout(send, 0);
146
+ }, [onReport]); // 添加 onReport 依赖
147
+
148
+ useEffect(() => {
149
+ if (!isEnabledSpmReporter) {
150
+ return;
151
+ }
152
+ const container = scrollContainerRef.current || (window as unknown as HTMLElement);
153
+
154
+ const handleScroll = () => {
155
+ // const currentScroll =
156
+ // (container as Window).scrollY || (container as HTMLElement).scrollTop;
157
+ const currentScroll =
158
+ container instanceof Window ? container.scrollY : container.scrollTop;
159
+ const scrollDelta = Math.abs(currentScroll - lastScrollPos.current);
160
+
161
+ if (scrollDelta > 10) {
162
+ if (!isMonitoring.current) {
163
+ startFrameCapture();
164
+ }
165
+
166
+ clearTimeout(scrollDebounceTimer.current);
167
+ scrollDebounceTimer.current = setTimeout(() => {
168
+ stopFrameCapture();
169
+ reportFrames();
170
+ }, 2000);
171
+ }
172
+
173
+ lastScrollPos.current = currentScroll;
174
+ };
175
+
176
+ container.addEventListener('scroll', handleScroll, { passive: true });
177
+ return () => {
178
+ container.removeEventListener('scroll', handleScroll);
179
+ stopFrameCapture();
180
+ };
181
+ }, [
182
+ scrollContainerRef,
183
+ startFrameCapture,
184
+ stopFrameCapture,
185
+ reportFrames,
186
+ isEnabledSpmReporter,
187
+ ]);
188
+
189
+ return { frameData, reportFrames };
190
+ };