@ngutil/layout 0.0.3-dev.7 → 0.0.3-dev.9

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.
@@ -2,7 +2,7 @@ import { inject, NgZone } from "@angular/core";
2
2
  import { distinctUntilChanged, Observable, shareReplay } from "rxjs";
3
3
  import { NumberWithUnit } from "@ngutil/common";
4
4
  const RESIZE_WATCHES = new Map();
5
- const SCROLL_CONTENT_WATCHES = new Map();
5
+ const SCROLL_WATCHES = new Map();
6
6
  export function watchDimension(el, box = "border-box") {
7
7
  const zone = inject(NgZone);
8
8
  return box === "scroll-box" ? _watchScroll(zone, el) : _watchResize(zone, el, box);
@@ -11,7 +11,7 @@ function _watchResize(zone, el, box) {
11
11
  return _watch(zone, el, RESIZE_WATCHES, () => _createResizeWatcher(zone, el, box));
12
12
  }
13
13
  function _watchScroll(zone, el) {
14
- return _watch(zone, el, SCROLL_CONTENT_WATCHES, () => _createScollWatcher(zone, el));
14
+ return _watch(zone, el, SCROLL_WATCHES, () => _createScollWatcher(zone, el));
15
15
  }
16
16
  function _watch(zone, el, watches, factory) {
17
17
  const existing = watches.get(el);
@@ -74,10 +74,11 @@ function _createScollWatcher(zone, el) {
74
74
  return () => {
75
75
  dimSum.unsubscribe();
76
76
  mutation.disconnect();
77
+ SCROLL_WATCHES.delete(el);
77
78
  };
78
79
  }).pipe(shareReplay(1)));
79
80
  }
80
81
  function _number(val) {
81
82
  return new NumberWithUnit(val, "pk");
82
83
  }
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGltZW5zaW9uLXdhdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL3V0aWwvZGltZW5zaW9uLXdhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFOUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQWMsTUFBTSxNQUFNLENBQUE7QUFFaEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBTy9DLE1BQU0sY0FBYyxHQUFZLElBQUksR0FBRyxFQUFFLENBQUE7QUFDekMsTUFBTSxzQkFBc0IsR0FBWSxJQUFJLEdBQUcsRUFBRSxDQUFBO0FBRWpELE1BQU0sVUFBVSxjQUFjLENBQUMsRUFBZSxFQUFFLE1BQWdCLFlBQVk7SUFDeEUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzNCLE9BQU8sR0FBRyxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUE7QUFDdEYsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLElBQVksRUFBRSxFQUFlLEVBQUUsR0FBYTtJQUM5RCxPQUFPLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7QUFDdEYsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLElBQVksRUFBRSxFQUFlO0lBQy9DLE9BQU8sTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsc0JBQXNCLEVBQUUsR0FBRyxF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LFlBQVksQ0FBQTtZQUMxQixJQUFJLE1BQU0sS0FBSyxFQUFFLElBQUksTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUNqQyxNQUFNLEdBQUcsRUFBRSxDQUFBO2dCQUNYLE1BQU0sR0FBRyxFQUFFLENBQUE7Z0JBQ1gsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDakUsQ0FBQztRQUNMLENBQUMsQ0FBQTtRQUVELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNuRSxNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzNDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQ2pCLE9BQU8sRUFBRSxJQUFJO1lBQ2IsU0FBUyxFQUFFLElBQUk7WUFDZixVQUFVLEVBQUUsSUFBSTtZQUNoQixhQUFhLEVBQUUsSUFBSTtTQUN0QixDQUFDLENBQUE7UUFFRixPQUFPLEdBQUcsRUFBRTtZQUNSLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUNwQixRQUFRLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDekIsQ0FBQyxDQUFBO0lBQ0wsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUMxQixDQUFBO0FBQ0wsQ0FBQztBQUVELFNBQVMsT0FBTyxDQUFDLEdBQVc7SUFDeEIsT0FBTyxJQUFJLGNBQWMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7QUFDeEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgTmdab25lIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIFN1YnNjcmliZXIgfSBmcm9tIFwicnhqc1wiXG5cbmltcG9ydCB7IE51bWJlcldpdGhVbml0IH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcblxuaW1wb3J0IHsgRGltZW5zaW9uIH0gZnJvbSBcIi4vZGltZW5zaW9uXCJcblxudHlwZSBXYXRjaGVzID0gTWFwPEhUTUxFbGVtZW50LCBPYnNlcnZhYmxlPERpbWVuc2lvbj4+XG5leHBvcnQgdHlwZSBXYXRjaEJveCA9IFJlc2l6ZU9ic2VydmVyQm94T3B0aW9ucyB8IFwic2Nyb2xsLWJveFwiXG5cbmNvbnN0IFJFU0laRV9XQVRDSEVTOiBXYXRjaGVzID0gbmV3IE1hcCgpXG5jb25zdCBTQ1JPTExfQ09OVEVOVF9XQVRDSEVTOiBXYXRjaGVzID0gbmV3IE1hcCgpXG5cbmV4cG9ydCBmdW5jdGlvbiB3YXRjaERpbWVuc2lvbihlbDogSFRNTEVsZW1lbnQsIGJveDogV2F0Y2hCb3ggPSBcImJvcmRlci1ib3hcIik6IE9ic2VydmFibGU8RGltZW5zaW9uPiB7XG4gICAgY29uc3Qgem9uZSA9IGluamVjdChOZ1pvbmUpXG4gICAgcmV0dXJuIGJveCA9PT0gXCJzY3JvbGwtYm94XCIgPyBfd2F0Y2hTY3JvbGwoem9uZSwgZWwpIDogX3dhdGNoUmVzaXplKHpvbmUsIGVsLCBib3gpXG59XG5cbmZ1bmN0aW9uIF93YXRjaFJlc2l6ZSh6b25lOiBOZ1pvbmUsIGVsOiBIVE1MRWxlbWVudCwgYm94OiBXYXRjaEJveCkge1xuICAgIHJldHVybiBfd2F0Y2goem9uZSwgZWwsIFJFU0laRV9XQVRDSEVTLCAoKSA9PiBfY3JlYXRlUmVzaXplV2F0Y2hlcih6b25lLCBlbCwgYm94KSlcbn1cblxuZnVuY3Rpb24gX3dhdGNoU2Nyb2xsKHpvbmU6IE5nWm9uZSwgZWw6IEhUTUxFbGVtZW50KSB7XG4gICAgcmV0dXJuIF93YXRjaCh6b25lLCBlbCwgU0NST0xMX0NPTlRFTlRfV0FUQ0hFUywgKCkgPT4gX2NyZWF0ZVNjb2xsV2F0Y2hlcih6b25lLCBlbCkpXG59XG5cbmZ1bmN0aW9uIF93YXRjaCh6b25lOiBOZ1pvbmUsIGVsOiBIVE1MRWxlbWVudCwgd2F0Y2hlczogV2F0Y2hlcywgZmFjdG9yeTogKCkgPT4gT2JzZXJ2YWJsZTxEaW1lbnNpb24+KSB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSB3YXRjaGVzLmdldChlbClcbiAgICBpZiAoZXhpc3RpbmcgPT0gbnVsbCkge1xuICAgICAgICBjb25zdCB3YXRjaGVyID0gZmFjdG9yeSgpXG4gICAgICAgIHdhdGNoZXMuc2V0KGVsLCB3YXRjaGVyKVxuICAgICAgICByZXR1cm4gd2F0Y2hlclxuICAgIH1cbiAgICByZXR1cm4gZXhpc3Rpbmdcbn1cblxuZnVuY3Rpb24gX2NyZWF0ZVJlc2l6ZVdhdGNoZXIoem9uZTogTmdab25lLCBlbDogSFRNTEVsZW1lbnQsIGJveDogV2F0Y2hCb3gpOiBPYnNlcnZhYmxlPERpbWVuc2lvbj4ge1xuICAgIGlmIChib3ggIT09IFwiYm9yZGVyLWJveFwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZCBib3ggbW9kZTogJHtib3h9YClcbiAgICB9XG5cbiAgICByZXR1cm4gem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgICBuZXcgT2JzZXJ2YWJsZSgoc3ViOiBTdWJzY3JpYmVyPERpbWVuc2lvbj4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnkuYm9yZGVyQm94U2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3ViLm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBfbnVtYmVyKGVudHJ5LmJvcmRlckJveFNpemVbMF0uaW5saW5lU2l6ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBfbnVtYmVyKGVudHJ5LmJvcmRlckJveFNpemVbMF0uYmxvY2tTaXplKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Yi5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogX251bWJlcihlbC5vZmZzZXRXaWR0aCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBfbnVtYmVyKGVsLm9mZnNldEhlaWdodClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShlbCwgeyBib3g6IGJveCBhcyBSZXNpemVPYnNlcnZlckJveE9wdGlvbnMgfSlcblxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KClcbiAgICAgICAgICAgICAgICBSRVNJWkVfV0FUQ0hFUy5kZWxldGUoZWwpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocCwgYykgPT4gcCAmJiBjICYmIHAud2lkdGggPT09IGMud2lkdGggJiYgcC5oZWlnaHQgPT09IGMuaGVpZ2h0KSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgIClcbiAgICApXG59XG5cbmZ1bmN0aW9uIF9jcmVhdGVTY29sbFdhdGNoZXIoem9uZTogTmdab25lLCBlbDogSFRNTEVsZW1lbnQpOiBPYnNlcnZhYmxlPERpbWVuc2lvbj4ge1xuICAgIHJldHVybiB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICAgIG5ldyBPYnNlcnZhYmxlKChzdWI6IFN1YnNjcmliZXI8RGltZW5zaW9uPikgPT4ge1xuICAgICAgICAgICAgbGV0IGxhc3RTdzogbnVtYmVyID0gMFxuICAgICAgICAgICAgbGV0IGxhc3RTaDogbnVtYmVyID0gMFxuXG4gICAgICAgICAgICBjb25zdCBlbWl0ID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN3ID0gZWwuc2Nyb2xsV2lkdGhcbiAgICAgICAgICAgICAgICBjb25zdCBzaCA9IGVsLnNjcm9sbEhlaWdodFxuICAgICAgICAgICAgICAgIGlmIChsYXN0U3cgIT09IHN3IHx8IGxhc3RTaCAhPT0gc2gpIHtcbiAgICAgICAgICAgICAgICAgICAgbGFzdFN3ID0gc3dcbiAgICAgICAgICAgICAgICAgICAgbGFzdFNoID0gc2hcbiAgICAgICAgICAgICAgICAgICAgc3ViLm5leHQoeyB3aWR0aDogX251bWJlcihsYXN0U3cpLCBoZWlnaHQ6IF9udW1iZXIobGFzdFNoKSB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZGltU3VtID0gX3dhdGNoUmVzaXplKHpvbmUsIGVsLCBcImJvcmRlci1ib3hcIikuc3Vic2NyaWJlKGVtaXQpXG4gICAgICAgICAgICBjb25zdCBtdXRhdGlvbiA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGVtaXQpXG4gICAgICAgICAgICBtdXRhdGlvbi5vYnNlcnZlKGVsLCB7XG4gICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGRpbVN1bS51bnN1YnNjcmliZSgpXG4gICAgICAgICAgICAgICAgbXV0YXRpb24uZGlzY29ubmVjdCgpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnBpcGUoc2hhcmVSZXBsYXkoMSkpXG4gICAgKVxufVxuXG5mdW5jdGlvbiBfbnVtYmVyKHZhbDogbnVtYmVyKTogTnVtYmVyV2l0aFVuaXQge1xuICAgIHJldHVybiBuZXcgTnVtYmVyV2l0aFVuaXQodmFsLCBcInBrXCIpXG59XG4iXX0=
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGltZW5zaW9uLXdhdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL3V0aWwvZGltZW5zaW9uLXdhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFOUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQWMsTUFBTSxNQUFNLENBQUE7QUFFaEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBTy9DLE1BQU0sY0FBYyxHQUFZLElBQUksR0FBRyxFQUFFLENBQUE7QUFDekMsTUFBTSxjQUFjLEdBQVksSUFBSSxHQUFHLEVBQUUsQ0FBQTtBQUV6QyxNQUFNLFVBQVUsY0FBYyxDQUFDLEVBQWUsRUFBRSxNQUFnQixZQUFZO0lBQ3hFLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMzQixPQUFPLEdBQUcsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBQ3RGLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxJQUFZLEVBQUUsRUFBZSxFQUFFLEdBQWE7SUFDOUQsT0FBTyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO0FBQ3RGLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxJQUFZLEVBQUUsRUFBZTtJQUMvQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUs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blxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5LCBTdWJzY3JpYmVyIH0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBOdW1iZXJXaXRoVW5pdCB9IGZyb20gXCJAbmd1dGlsL2NvbW1vblwiXG5cbmltcG9ydCB7IERpbWVuc2lvbiB9IGZyb20gXCIuL2RpbWVuc2lvblwiXG5cbnR5cGUgV2F0Y2hlcyA9IE1hcDxIVE1MRWxlbWVudCwgT2JzZXJ2YWJsZTxEaW1lbnNpb24+PlxuZXhwb3J0IHR5cGUgV2F0Y2hCb3ggPSBSZXNpemVPYnNlcnZlckJveE9wdGlvbnMgfCBcInNjcm9sbC1ib3hcIlxuXG5jb25zdCBSRVNJWkVfV0FUQ0hFUzogV2F0Y2hlcyA9IG5ldyBNYXAoKVxuY29uc3QgU0NST0xMX1dBVENIRVM6IFdhdGNoZXMgPSBuZXcgTWFwKClcblxuZXhwb3J0IGZ1bmN0aW9uIHdhdGNoRGltZW5zaW9uKGVsOiBIVE1MRWxlbWVudCwgYm94OiBXYXRjaEJveCA9IFwiYm9yZGVyLWJveFwiKTogT2JzZXJ2YWJsZTxEaW1lbnNpb24+IHtcbiAgICBjb25zdCB6b25lID0gaW5qZWN0KE5nWm9uZSlcbiAgICByZXR1cm4gYm94ID09PSBcInNjcm9sbC1ib3hcIiA/IF93YXRjaFNjcm9sbCh6b25lLCBlbCkgOiBfd2F0Y2hSZXNpemUoem9uZSwgZWwsIGJveClcbn1cblxuZnVuY3Rpb24gX3dhdGNoUmVzaXplKHpvbmU6IE5nWm9uZSwgZWw6IEhUTUxFbGVtZW50LCBib3g6IFdhdGNoQm94KSB7XG4gICAgcmV0dXJuIF93YXRjaCh6b25lLCBlbCwgUkVTSVpFX1dBVENIRVMsICgpID0+IF9jcmVhdGVSZXNpemVXYXRjaGVyKHpvbmUsIGVsLCBib3gpKVxufVxuXG5mdW5jdGlvbiBfd2F0Y2hTY3JvbGwoem9uZTogTmdab25lLCBlbDogSFRNTEVsZW1lbnQpIHtcbiAgICByZXR1cm4gX3dhdGNoKHpvbmUsIGVsLCBTQ1JPTExfV0FUQ0hFUywgKCkgPT4gX2NyZWF0ZVNjb2xsV2F0Y2hlcih6b25lLCBlbCkpXG59XG5cbmZ1bmN0aW9uIF93YXRjaCh6b25lOiBOZ1pvbmUsIGVsOiBIVE1MRWxlbWVudCwgd2F0Y2hlczogV2F0Y2hlcywgZmFjdG9yeTogKCkgPT4gT2JzZXJ2YWJsZTxEaW1lbnNpb24+KSB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSB3YXRjaGVzLmdldChlbClcbiAgICBpZiAoZXhpc3RpbmcgPT0gbnVsbCkge1xuICAgICAgICBjb25zdCB3YXRjaGVyID0gZmFjdG9yeSgpXG4gICAgICAgIHdhdGNoZXMuc2V0KGVsLCB3YXRjaGVyKVxuICAgICAgICByZXR1cm4gd2F0Y2hlclxuICAgIH1cbiAgICByZXR1cm4gZXhpc3Rpbmdcbn1cblxuZnVuY3Rpb24gX2NyZWF0ZVJlc2l6ZVdhdGNoZXIoem9uZTogTmdab25lLCBlbDogSFRNTEVsZW1lbnQsIGJveDogV2F0Y2hCb3gpOiBPYnNlcnZhYmxlPERpbWVuc2lvbj4ge1xuICAgIGlmIChib3ggIT09IFwiYm9yZGVyLWJveFwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZCBib3ggbW9kZTogJHtib3h9YClcbiAgICB9XG5cbiAgICByZXR1cm4gem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgICBuZXcgT2JzZXJ2YWJsZSgoc3ViOiBTdWJzY3JpYmVyPERpbWVuc2lvbj4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnkuYm9yZGVyQm94U2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3ViLm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBfbnVtYmVyKGVudHJ5LmJvcmRlckJveFNpemVbMF0uaW5saW5lU2l6ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBfbnVtYmVyKGVudHJ5LmJvcmRlckJveFNpemVbMF0uYmxvY2tTaXplKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Yi5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogX251bWJlcihlbC5vZmZzZXRXaWR0aCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBfbnVtYmVyKGVsLm9mZnNldEhlaWdodClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShlbCwgeyBib3g6IGJveCBhcyBSZXNpemVPYnNlcnZlckJveE9wdGlvbnMgfSlcblxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KClcbiAgICAgICAgICAgICAgICBSRVNJWkVfV0FUQ0hFUy5kZWxldGUoZWwpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocCwgYykgPT4gcCAmJiBjICYmIHAud2lkdGggPT09IGMud2lkdGggJiYgcC5oZWlnaHQgPT09IGMuaGVpZ2h0KSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgIClcbiAgICApXG59XG5cbmZ1bmN0aW9uIF9jcmVhdGVTY29sbFdhdGNoZXIoem9uZTogTmdab25lLCBlbDogSFRNTEVsZW1lbnQpOiBPYnNlcnZhYmxlPERpbWVuc2lvbj4ge1xuICAgIHJldHVybiB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICAgIG5ldyBPYnNlcnZhYmxlKChzdWI6IFN1YnNjcmliZXI8RGltZW5zaW9uPikgPT4ge1xuICAgICAgICAgICAgbGV0IGxhc3RTdzogbnVtYmVyID0gMFxuICAgICAgICAgICAgbGV0IGxhc3RTaDogbnVtYmVyID0gMFxuXG4gICAgICAgICAgICBjb25zdCBlbWl0ID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN3ID0gZWwuc2Nyb2xsV2lkdGhcbiAgICAgICAgICAgICAgICBjb25zdCBzaCA9IGVsLnNjcm9sbEhlaWdodFxuICAgICAgICAgICAgICAgIGlmIChsYXN0U3cgIT09IHN3IHx8IGxhc3RTaCAhPT0gc2gpIHtcbiAgICAgICAgICAgICAgICAgICAgbGFzdFN3ID0gc3dcbiAgICAgICAgICAgICAgICAgICAgbGFzdFNoID0gc2hcbiAgICAgICAgICAgICAgICAgICAgc3ViLm5leHQoeyB3aWR0aDogX251bWJlcihsYXN0U3cpLCBoZWlnaHQ6IF9udW1iZXIobGFzdFNoKSB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZGltU3VtID0gX3dhdGNoUmVzaXplKHpvbmUsIGVsLCBcImJvcmRlci1ib3hcIikuc3Vic2NyaWJlKGVtaXQpXG4gICAgICAgICAgICBjb25zdCBtdXRhdGlvbiA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGVtaXQpXG4gICAgICAgICAgICBtdXRhdGlvbi5vYnNlcnZlKGVsLCB7XG4gICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGRpbVN1bS51bnN1YnNjcmliZSgpXG4gICAgICAgICAgICAgICAgbXV0YXRpb24uZGlzY29ubmVjdCgpXG4gICAgICAgICAgICAgICAgU0NST0xMX1dBVENIRVMuZGVsZXRlKGVsKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KS5waXBlKHNoYXJlUmVwbGF5KDEpKVxuICAgIClcbn1cblxuZnVuY3Rpb24gX251bWJlcih2YWw6IG51bWJlcik6IE51bWJlcldpdGhVbml0IHtcbiAgICByZXR1cm4gbmV3IE51bWJlcldpdGhVbml0KHZhbCwgXCJwa1wiKVxufVxuIl19
@@ -1,4 +1,3 @@
1
1
  export { watchMedia } from "./media-watcher";
2
2
  export { watchDimension } from "./dimension-watcher";
3
- export { FastDOM } from "./dom";
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL3V0aWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgRGltZW5zaW9uIH0gZnJvbSBcIi4vZGltZW5zaW9uXCJcbmV4cG9ydCB7IFJlY3QgfSBmcm9tIFwiLi9yZWN0XCJcbmV4cG9ydCB7IHdhdGNoTWVkaWEgfSBmcm9tIFwiLi9tZWRpYS13YXRjaGVyXCJcbmV4cG9ydCB7IHdhdGNoRGltZW5zaW9uIH0gZnJvbSBcIi4vZGltZW5zaW9uLXdhdGNoZXJcIlxuZXhwb3J0IHsgRmFzdERPTSB9IGZyb20gXCIuL2RvbVwiXG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL3V0aWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IERpbWVuc2lvbiB9IGZyb20gXCIuL2RpbWVuc2lvblwiXG5leHBvcnQgeyBSZWN0IH0gZnJvbSBcIi4vcmVjdFwiXG5leHBvcnQgeyB3YXRjaE1lZGlhIH0gZnJvbSBcIi4vbWVkaWEtd2F0Y2hlclwiXG5leHBvcnQgeyB3YXRjaERpbWVuc2lvbiB9IGZyb20gXCIuL2RpbWVuc2lvbi13YXRjaGVyXCJcbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, NgZone, Component, ElementRef, Input, Output, ChangeDetectionStrategy, ContentChild, ContentChildren, NgModule } from '@angular/core';
3
- import { Observable, distinctUntilChanged, shareReplay, BehaviorSubject, map, combineLatest, switchMap, of, Subject, startWith } from 'rxjs';
4
- import { NumberWithUnit, rawRequestAnimationFrame, Destructible, coerceBoolAttr } from '@ngutil/common';
2
+ import { inject, NgZone, Component, ElementRef, Input, Output, ChangeDetectionStrategy, ContentChild, ContentChildren, NgModule, Injectable, TemplateRef, Directive, ViewContainerRef, Injector } from '@angular/core';
3
+ import { Observable, distinctUntilChanged, shareReplay, BehaviorSubject, map, combineLatest, switchMap, of, Subject, startWith, scan, tap, finalize } from 'rxjs';
4
+ import { NumberWithUnit, Destructible, coerceBoolAttr, FastDOM } from '@ngutil/common';
5
5
 
6
6
  const WATCHES = {};
7
7
  /**
@@ -31,7 +31,7 @@ function _createWatcher(expr) {
31
31
  }
32
32
 
33
33
  const RESIZE_WATCHES = new Map();
34
- const SCROLL_CONTENT_WATCHES = new Map();
34
+ const SCROLL_WATCHES = new Map();
35
35
  function watchDimension(el, box = "border-box") {
36
36
  const zone = inject(NgZone);
37
37
  return box === "scroll-box" ? _watchScroll(zone, el) : _watchResize(zone, el, box);
@@ -40,7 +40,7 @@ function _watchResize(zone, el, box) {
40
40
  return _watch(zone, el, RESIZE_WATCHES, () => _createResizeWatcher(zone, el, box));
41
41
  }
42
42
  function _watchScroll(zone, el) {
43
- return _watch(zone, el, SCROLL_CONTENT_WATCHES, () => _createScollWatcher(zone, el));
43
+ return _watch(zone, el, SCROLL_WATCHES, () => _createScollWatcher(zone, el));
44
44
  }
45
45
  function _watch(zone, el, watches, factory) {
46
46
  const existing = watches.get(el);
@@ -103,6 +103,7 @@ function _createScollWatcher(zone, el) {
103
103
  return () => {
104
104
  dimSum.unsubscribe();
105
105
  mutation.disconnect();
106
+ SCROLL_WATCHES.delete(el);
106
107
  };
107
108
  }).pipe(shareReplay(1)));
108
109
  }
@@ -110,76 +111,6 @@ function _number(val) {
110
111
  return new NumberWithUnit(val, "pk");
111
112
  }
112
113
 
113
- class _FastDOM {
114
- #rafId;
115
- #mutate = [];
116
- #measure = [];
117
- mutate(handler) {
118
- this.#mutate.push(handler);
119
- this._schedule();
120
- }
121
- mutateNext(handler) {
122
- this.#mutate.push(() => {
123
- this.#mutate.push(handler);
124
- });
125
- this._schedule();
126
- }
127
- measure(handler) {
128
- this.#measure.push(handler);
129
- this._schedule();
130
- }
131
- setStyle(el, style, chain) {
132
- this.mutate(() => {
133
- for (const [k, v] of Object.entries(style)) {
134
- if (v == null) {
135
- el.style.removeProperty(k);
136
- }
137
- else {
138
- el.style.setProperty(k, v);
139
- }
140
- }
141
- chain && chain();
142
- });
143
- }
144
- setAttributes(el, attrs, chain) {
145
- this.mutate(() => {
146
- for (const [k, v] of Object.entries(attrs)) {
147
- if (v == null) {
148
- el.removeAttribute(k);
149
- }
150
- else {
151
- el.setAttribute(k, v);
152
- }
153
- }
154
- chain && chain();
155
- });
156
- }
157
- _schedule() {
158
- if (!this.#rafId) {
159
- this.#rafId = rawRequestAnimationFrame(this._apply.bind(this));
160
- }
161
- }
162
- _apply() {
163
- this.#rafId = null;
164
- const measure = this.#measure.slice();
165
- const mutate = this.#mutate.slice();
166
- this.#measure.length = 0;
167
- this.#mutate.length = 0;
168
- runQ(measure);
169
- runQ(mutate);
170
- if (this.#measure.length || this.#mutate.length) {
171
- this._schedule();
172
- }
173
- }
174
- }
175
- function runQ(items) {
176
- let item;
177
- while ((item = items.shift())) {
178
- item();
179
- }
180
- }
181
- const FastDOM = new _FastDOM();
182
-
183
114
  /**
184
115
  * -----------------------------------------------
185
116
  * | TOP:LEFT | TOP:CENTER | TOP:RIGHT |
@@ -329,7 +260,6 @@ const DEFAULT_POSITION = L9Range.coerce("left");
329
260
  class DockingPanelComponent extends Destructible {
330
261
  set positionInput(val) {
331
262
  const coerced = L9Range.coerce(val);
332
- console.log("SET POSITION", coerced, this.position.value.isEq(coerced));
333
263
  if (coerced.orient === "rect") {
334
264
  throw new Error(`Invalid position value: ${val}`);
335
265
  }
@@ -523,7 +453,6 @@ class DockingLayoutComponent extends Destructible {
523
453
  }
524
454
  }
525
455
  #layout(entries) {
526
- console.log("layout", entries);
527
456
  let paddingTop = 0;
528
457
  let paddingRight = 0;
529
458
  let paddingBottom = 0;
@@ -600,7 +529,6 @@ class DockingLayoutComponent extends Destructible {
600
529
  "--docking-panel-real-h": isHorizontal ? `${panelSize}px` : null
601
530
  });
602
531
  }
603
- console.log({ paddingTop, paddingRight, paddingBottom, paddingLeft });
604
532
  FastDOM.setStyle(this.#el.nativeElement, {
605
533
  "--docking-layout-top": `${paddingTop}px`,
606
534
  "--docking-layout-right": `${paddingRight}px`,
@@ -609,84 +537,6 @@ class DockingLayoutComponent extends Destructible {
609
537
  });
610
538
  }
611
539
  }
612
- #layoutOld(entries) {
613
- // let paddingTop = 0
614
- // let paddingRight = 0
615
- // let paddingBottom = 0
616
- // let paddingLeft = 0
617
- // if (!this.contentOnly) {
618
- // let embeddedZIndex = EMBEDDED_ZINDEX
619
- // let overlayZIndex = OVERLAY_ZINDEX
620
- // const leftRight: PanelRefChanges[] = entries.filter(v =>
621
- // ["left", "right"].includes(v.changes.position.side)
622
- // )
623
- // const topBottom: PanelRefChanges[] = entries.filter(v =>
624
- // ["top", "bottom"].includes(v.changes.position.side)
625
- // )
626
- // for (const entry of entries) {
627
- // const changes = entry.changes
628
- // const ref = entry.ref
629
- // if (changes.mode === "embedded") {
630
- // ref.style.zIndex = `${embeddedZIndex++}`
631
- // } else if (changes.mode === "overlay") {
632
- // ref.style.zIndex = `${overlayZIndex++}`
633
- // }
634
- // }
635
- // for (const entry of leftRight) {
636
- // const changes = entry.changes
637
- // const ref = entry.ref
638
- // const padding =
639
- // changes.mode === "embedded"
640
- // ? changes.state === "full"
641
- // ? changes.fullSize
642
- // : changes.state === "mini"
643
- // ? changes.miniSize
644
- // : 0
645
- // : 0
646
- // ref.style.top = "0"
647
- // ref.style.bottom = "0"
648
- // if (changes.position.side === "left") {
649
- // paddingLeft = Math.max(paddingLeft, padding)
650
- // ref.style.left = "0"
651
- // ref.style.right = ""
652
- // } else {
653
- // paddingRight = Math.max(paddingRight, padding)
654
- // ref.style.right = "0"
655
- // ref.style.left = ""
656
- // }
657
- // }
658
- // for (const entry of topBottom) {
659
- // const changes = entry.changes
660
- // const ref = entry.ref
661
- // const padding =
662
- // changes.mode === "embedded"
663
- // ? changes.state === "full"
664
- // ? changes.fullSize
665
- // : changes.state === "mini"
666
- // ? changes.miniSize
667
- // : 0
668
- // : 0
669
- // if (changes.mode === "embedded") {
670
- // ref.style.left = `${paddingLeft}px`
671
- // ref.style.right = `${paddingRight}px`
672
- // } else {
673
- // ref.style.left = "0"
674
- // ref.style.right = "0"
675
- // }
676
- // if (changes.position?.cells[0].v === "top") {
677
- // paddingTop = Math.max(paddingTop, padding)
678
- // ref.style.top = "0"
679
- // ref.style.bottom = ""
680
- // } else {
681
- // paddingBottom = Math.max(paddingBottom, padding)
682
- // ref.style.bottom = `0`
683
- // ref.style.top = ""
684
- // }
685
- // }
686
- // }
687
- // const cel = this.contentEl.nativeElement
688
- // cel.style.padding = `${paddingTop}px ${paddingRight}px ${paddingBottom}px ${paddingLeft}px`
689
- }
690
540
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DockingLayoutComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
691
541
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: DockingLayoutComponent, isStandalone: true, selector: "nu-docking", inputs: { contentOnly: "contentOnly", positionMode: "positionMode" }, queries: [{ propertyName: "contentComponent", first: true, predicate: DockingContentComponent, descendants: true }, { propertyName: "dockingPanels", predicate: DockingPanelComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
692
542
  <ng-content select="nu-docking-panel"></ng-content>
@@ -739,9 +589,245 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
739
589
  }]
740
590
  }] });
741
591
 
592
+ const SLOT_REGEX = /^([^:\s]+)(?::(\d+))?(?:\s+as\s+(.*?))?$/i;
593
+ class SlotDef {
594
+ constructor(slot, tpl) {
595
+ this.tpl = tpl;
596
+ const match = slot.match(SLOT_REGEX);
597
+ if (!match) {
598
+ console.warn(`Invalid slot definition: ${slot}`);
599
+ }
600
+ else {
601
+ this.slot = match[1];
602
+ this.order = match[2] != null ? Number(match[2]) : Infinity;
603
+ this.id = match[3];
604
+ }
605
+ }
606
+ dispose() {
607
+ this.viewRef?.destroy();
608
+ this.viewRef = undefined;
609
+ }
610
+ }
611
+ /**
612
+ * @Directive({selector: "ng-template[xyzSlot]", inputs: [{name: "slot", alias: "xyzSlot"}]})
613
+ * class XYZSlotDirective extends SlotDirective<XYZComponentSlots> { }
614
+ *
615
+ * @Directive({selector: "ng-template[xyzSlotOutlet]", inputs: [{name: "slot", alias: "xyzSlotOutlet"}]})
616
+ * class XYZSlotOutletDirective extends SlotOutletDirective<XYZComponentSlots> { }
617
+ *
618
+ *
619
+ * @Component({provides: [SlotsService]})
620
+ * class XYZComponent {
621
+ * slots: inject(SlotsService<XYZComponentSlots>)
622
+ * }
623
+ *
624
+ *
625
+ */
626
+ class SlotsService extends Destructible {
627
+ #events = new Subject();
628
+ #entries = this.#events.pipe(scan((entries, event) => {
629
+ if (event.type === "add") {
630
+ const index = entries.findIndex(value => value === event.def);
631
+ if (index > -1) {
632
+ entries[index] = event.def;
633
+ }
634
+ else {
635
+ entries.push(event.def);
636
+ }
637
+ }
638
+ else if (event.type === "del") {
639
+ const index = entries.findIndex(value => value === event.def);
640
+ if (index > -1) {
641
+ entries.splice(index, 1);
642
+ }
643
+ }
644
+ return entries;
645
+ }, []), tap(entries => {
646
+ entries.sort((a, b) => {
647
+ if (a.slot === b.slot) {
648
+ return a.order - b.order;
649
+ }
650
+ else {
651
+ return a.slot.localeCompare(b.slot);
652
+ }
653
+ });
654
+ }), shareReplay(1));
655
+ constructor() {
656
+ super();
657
+ // XXX: need to collect entries from the beginning
658
+ this.d.sub(this.#entries).subscribe();
659
+ }
660
+ addTpl(def) {
661
+ this.#events.next({ type: "add", def });
662
+ }
663
+ delTpl(def) {
664
+ this.#events.next({ type: "del", def });
665
+ }
666
+ #watchers = {};
667
+ watch(slot) {
668
+ const existing = this.#watchers[slot];
669
+ if (existing == null) {
670
+ return (this.#watchers[slot] = this.#watch(slot));
671
+ }
672
+ else {
673
+ return existing;
674
+ }
675
+ }
676
+ #watch(slot) {
677
+ return this.#entries.pipe(map(entries => entries.filter(entry => entry.slot === slot)), distinctUntilChanged((prev, curr) => {
678
+ if (prev.length === curr.length) {
679
+ for (let i = 0; i < prev.length; i++) {
680
+ if (prev[i] !== curr[i]) {
681
+ return false;
682
+ }
683
+ }
684
+ return true;
685
+ }
686
+ else {
687
+ return false;
688
+ }
689
+ }), finalize(() => {
690
+ delete this.#watchers[slot];
691
+ }), shareReplay(1));
692
+ }
693
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SlotsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
694
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SlotsService }); }
695
+ }
696
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SlotsService, decorators: [{
697
+ type: Injectable
698
+ }], ctorParameters: () => [] });
699
+ class SlotDirective {
700
+ constructor() {
701
+ this.tpl = inject((TemplateRef));
702
+ }
703
+ set slot(slot) {
704
+ if (this.#slot !== slot) {
705
+ this.#slot = slot;
706
+ if (this.#slotDef) {
707
+ this.slotSvc.delTpl(this.#slotDef);
708
+ }
709
+ this.#slotDef = new SlotDef(slot, this.tpl);
710
+ this.slotSvc.addTpl(this.#slotDef);
711
+ }
712
+ }
713
+ get slot() {
714
+ return this.#slot;
715
+ }
716
+ #slot;
717
+ #slotDef;
718
+ ngOnDestroy() {
719
+ if (this.#slotDef) {
720
+ this.slotSvc.delTpl(this.#slotDef);
721
+ }
722
+ }
723
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SlotDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
724
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.3", type: SlotDirective, ngImport: i0 }); }
725
+ }
726
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SlotDirective, decorators: [{
727
+ type: Directive
728
+ }] });
729
+ class SlotOutletDirective extends Destructible {
730
+ set slot(slot) {
731
+ if (this.#slot.value !== slot) {
732
+ this.#slot.next(slot);
733
+ }
734
+ }
735
+ get slot() {
736
+ return this.#slot.value;
737
+ }
738
+ #slot;
739
+ #watch;
740
+ #views;
741
+ constructor() {
742
+ super();
743
+ this.vcr = inject(ViewContainerRef);
744
+ this.injector = inject(Injector);
745
+ this.#slot = new BehaviorSubject(null);
746
+ this.#watch = this.#slot.pipe(switchMap(slot => {
747
+ if (slot) {
748
+ return this.slotSvc.watch(slot);
749
+ }
750
+ else {
751
+ return of([]);
752
+ }
753
+ }));
754
+ this.#views = [];
755
+ this.#onEntriesChanged = (entries) => {
756
+ const { remove, undecided } = this.#determineActions(entries);
757
+ for (const r of remove) {
758
+ r.dispose();
759
+ const idx = this.#views.indexOf(r);
760
+ if (idx >= 0) {
761
+ this.#views.splice(idx, 1);
762
+ }
763
+ }
764
+ this.#views.length = 0;
765
+ for (const [pos, entry] of undecided.entries()) {
766
+ if (entry.viewRef && !entry.viewRef.destroyed) {
767
+ const currentPos = this.vcr.indexOf(entry.viewRef);
768
+ if (currentPos !== pos) {
769
+ this.vcr.insert(entry.viewRef, pos);
770
+ }
771
+ }
772
+ else {
773
+ ;
774
+ entry.viewRef = this.vcr.createEmbeddedView(entry.tpl, null, {
775
+ index: pos,
776
+ injector: this.injector
777
+ });
778
+ entry.viewRef.markForCheck();
779
+ }
780
+ this.#views.push(entry);
781
+ }
782
+ };
783
+ this.d.any(this.#clearViews.bind(this));
784
+ }
785
+ ngOnInit() {
786
+ this.d.sub(this.#watch).subscribe(this.#onEntriesChanged);
787
+ }
788
+ #onEntriesChanged;
789
+ #determineActions(entries) {
790
+ const byId = {};
791
+ let remove = [];
792
+ const undecided = [];
793
+ for (const entry of entries) {
794
+ if (entry.id != null) {
795
+ if (!byId[entry.id]) {
796
+ byId[entry.id] = [entry];
797
+ }
798
+ else {
799
+ byId[entry.id].push(entry);
800
+ }
801
+ }
802
+ else {
803
+ undecided.push(entry);
804
+ }
805
+ }
806
+ for (const values of Object.values(byId)) {
807
+ remove = remove.concat(values.slice(0, -1));
808
+ undecided.push(values[values.length - 1]);
809
+ }
810
+ for (const current of this.#views) {
811
+ if (!undecided.includes(current)) {
812
+ remove.push(current);
813
+ }
814
+ }
815
+ return { remove, undecided };
816
+ }
817
+ #clearViews() {
818
+ this.vcr.clear();
819
+ this.#views = [];
820
+ }
821
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SlotOutletDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
822
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.3", type: SlotOutletDirective, usesInheritance: true, ngImport: i0 }); }
823
+ }
824
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SlotOutletDirective, decorators: [{
825
+ type: Directive
826
+ }], ctorParameters: () => [] });
827
+
742
828
  /**
743
829
  * Generated bundle index. Do not edit.
744
830
  */
745
831
 
746
- export { DockingContentComponent, DockingLayoutComponent, DockingPanelComponent, FastDOM, L9Cell, L9Range, L9State, NuDockingLayout, watchDimension, watchMedia };
832
+ export { DockingContentComponent, DockingLayoutComponent, DockingPanelComponent, L9Cell, L9Range, L9State, NuDockingLayout, SlotDef, SlotDirective, SlotOutletDirective, SlotsService, watchDimension, watchMedia };
747
833
  //# sourceMappingURL=ngutil-layout.mjs.map