@searchspring/snap-toolbox 0.76.0 → 0.77.0

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.
@@ -11,7 +11,7 @@ export type Target = {
11
11
  clickRetarget?: boolean | string;
12
12
  [any: string]: unknown;
13
13
  };
14
- export type OnTarget = (target: Target, elem: Element, originalElem?: Element) => void | Promise<void>;
14
+ export type OnTarget = (target: Target, elem: Element, originalElem?: Element, targeter?: DomTargeter) => void | Promise<void>;
15
15
  export declare class DomTargeter {
16
16
  private targets;
17
17
  private onTarget;
@@ -20,6 +20,7 @@ export declare class DomTargeter {
20
20
  private targetedElems;
21
21
  constructor(targets: Array<Target>, onTarget: OnTarget, document?: Document);
22
22
  getTargets(): Array<Target>;
23
+ getTargetedElems(): ReadonlyArray<Element>;
23
24
  retarget(): void;
24
25
  unhideTarget: (selector: string) => void;
25
26
  hideTarget: (selector: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"DomTargeter.d.ts","sourceRoot":"","sources":["../../../src/DomTargeter/DomTargeter.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE;QACR,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;QAC9D,OAAO,EAAE,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC;KACnE,CAAC;IACF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAGvG,qBAAa,WAAW;IACvB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,aAAa,CAAsB;gBAE/B,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ;IA0D3E,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC;IAI3B,QAAQ,IAAI,IAAI;IAiEhB,YAAY,aAAc,MAAM,KAAG,IAAI,CASrC;IAEF,UAAU,aAAc,MAAM,KAAG,IAAI,CASnC;IAEF,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,MAAM;CA2Cd"}
1
+ {"version":3,"file":"DomTargeter.d.ts","sourceRoot":"","sources":["../../../src/DomTargeter/DomTargeter.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE;QACR,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;QAC9D,OAAO,EAAE,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC;KACnE,CAAC;IACF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAG/H,qBAAa,WAAW;IACvB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,aAAa,CAAsB;gBAE/B,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ;IA0D3E,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC;IAI3B,gBAAgB,IAAI,aAAa,CAAC,OAAO,CAAC;IAK1C,QAAQ,IAAI,IAAI;IAuEhB,YAAY,aAAc,MAAM,KAAG,IAAI,CASrC;IAEF,UAAU,aAAc,MAAM,KAAG,IAAI,CASnC;IAEF,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,MAAM;CA2Cd"}
@@ -1,4 +1,13 @@
1
1
  "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.DomTargeter = void 0;
4
13
  var globallyTargetedElems = [];
@@ -84,9 +93,16 @@ var DomTargeter = /** @class */ (function () {
84
93
  DomTargeter.prototype.getTargets = function () {
85
94
  return this.targets;
86
95
  };
96
+ DomTargeter.prototype.getTargetedElems = function () {
97
+ this.targetedElems = this.targetedElems.filter(function (elem) { return elem.isConnected; });
98
+ return __spreadArray([], this.targetedElems, true);
99
+ };
87
100
  DomTargeter.prototype.retarget = function () {
88
101
  var _this = this;
89
102
  var _a, _b;
103
+ // prune references to elements no longer in the DOM
104
+ globallyTargetedElems = globallyTargetedElems.filter(function (elem) { return elem.isConnected; });
105
+ this.targetedElems = this.targetedElems.filter(function (elem) { return elem.isConnected; });
90
106
  var targetElemPairs = this.targets.flatMap(function (target) {
91
107
  var _a;
92
108
  // hide targets before found
@@ -112,7 +128,7 @@ var DomTargeter = /** @class */ (function () {
112
128
  var injectedElem = this.inject(elem, target);
113
129
  this.targetedElems = this.targetedElems.concat(elem);
114
130
  // handle both sync and async onTarget functions
115
- var result = this.onTarget(target, injectedElem, elem);
131
+ var result = this.onTarget(target, injectedElem, elem, this);
116
132
  if (result && typeof result.then === 'function') {
117
133
  // async function - handle promise
118
134
  result.catch(function (error) {
@@ -121,13 +137,14 @@ var DomTargeter = /** @class */ (function () {
121
137
  }
122
138
  }
123
139
  else {
140
+ this.targetedElems = this.targetedElems.concat(elem);
124
141
  // empty target selector by default
125
142
  target.emptyTarget = (_a = target.emptyTarget) !== null && _a !== void 0 ? _a : true;
126
143
  if (target.emptyTarget)
127
144
  while (elem.firstChild && elem.removeChild(elem.firstChild))
128
145
  ;
129
146
  // handle both sync and async onTarget functions
130
- var result = this.onTarget(target, elem);
147
+ var result = this.onTarget(target, elem, undefined, this);
131
148
  if (result && typeof result.then === 'function') {
132
149
  // async function - handle promise
133
150
  result.catch(function (error) {
@@ -11,7 +11,7 @@ export type Target = {
11
11
  clickRetarget?: boolean | string;
12
12
  [any: string]: unknown;
13
13
  };
14
- export type OnTarget = (target: Target, elem: Element, originalElem?: Element) => void | Promise<void>;
14
+ export type OnTarget = (target: Target, elem: Element, originalElem?: Element, targeter?: DomTargeter) => void | Promise<void>;
15
15
  export declare class DomTargeter {
16
16
  private targets;
17
17
  private onTarget;
@@ -20,6 +20,7 @@ export declare class DomTargeter {
20
20
  private targetedElems;
21
21
  constructor(targets: Array<Target>, onTarget: OnTarget, document?: Document);
22
22
  getTargets(): Array<Target>;
23
+ getTargetedElems(): ReadonlyArray<Element>;
23
24
  retarget(): void;
24
25
  unhideTarget: (selector: string) => void;
25
26
  hideTarget: (selector: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"DomTargeter.d.ts","sourceRoot":"","sources":["../../../src/DomTargeter/DomTargeter.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE;QACR,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;QAC9D,OAAO,EAAE,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC;KACnE,CAAC;IACF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAGvG,qBAAa,WAAW;IACvB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,aAAa,CAAsB;gBAE/B,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ;IA0D3E,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC;IAI3B,QAAQ,IAAI,IAAI;IAiEhB,YAAY,aAAc,MAAM,KAAG,IAAI,CASrC;IAEF,UAAU,aAAc,MAAM,KAAG,IAAI,CASnC;IAEF,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,MAAM;CA2Cd"}
1
+ {"version":3,"file":"DomTargeter.d.ts","sourceRoot":"","sources":["../../../src/DomTargeter/DomTargeter.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE;QACR,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;QAC9D,OAAO,EAAE,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC;KACnE,CAAC;IACF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAG/H,qBAAa,WAAW;IACvB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,aAAa,CAAsB;gBAE/B,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ;IA0D3E,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC;IAI3B,gBAAgB,IAAI,aAAa,CAAC,OAAO,CAAC;IAK1C,QAAQ,IAAI,IAAI;IAuEhB,YAAY,aAAc,MAAM,KAAG,IAAI,CASrC;IAEF,UAAU,aAAc,MAAM,KAAG,IAAI,CASnC;IAEF,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,MAAM;CA2Cd"}
@@ -80,7 +80,14 @@ export class DomTargeter {
80
80
  getTargets() {
81
81
  return this.targets;
82
82
  }
83
+ getTargetedElems() {
84
+ this.targetedElems = this.targetedElems.filter((elem) => elem.isConnected);
85
+ return [...this.targetedElems];
86
+ }
83
87
  retarget() {
88
+ // prune references to elements no longer in the DOM
89
+ globallyTargetedElems = globallyTargetedElems.filter((elem) => elem.isConnected);
90
+ this.targetedElems = this.targetedElems.filter((elem) => elem.isConnected);
84
91
  const targetElemPairs = this.targets.flatMap((target) => {
85
92
  // hide targets before found
86
93
  target.hideTarget && this.hideTarget(target.selector);
@@ -104,7 +111,7 @@ export class DomTargeter {
104
111
  const injectedElem = this.inject(elem, target);
105
112
  this.targetedElems = this.targetedElems.concat(elem);
106
113
  // handle both sync and async onTarget functions
107
- const result = this.onTarget(target, injectedElem, elem);
114
+ const result = this.onTarget(target, injectedElem, elem, this);
108
115
  if (result && typeof result.then === 'function') {
109
116
  // async function - handle promise
110
117
  result.catch((error) => {
@@ -113,13 +120,14 @@ export class DomTargeter {
113
120
  }
114
121
  }
115
122
  else {
123
+ this.targetedElems = this.targetedElems.concat(elem);
116
124
  // empty target selector by default
117
125
  target.emptyTarget = target.emptyTarget ?? true;
118
126
  if (target.emptyTarget)
119
127
  while (elem.firstChild && elem.removeChild(elem.firstChild))
120
128
  ;
121
129
  // handle both sync and async onTarget functions
122
- const result = this.onTarget(target, elem);
130
+ const result = this.onTarget(target, elem, undefined, this);
123
131
  if (result && typeof result.then === 'function') {
124
132
  // async function - handle promise
125
133
  result.catch((error) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@searchspring/snap-toolbox",
3
- "version": "0.76.0",
3
+ "version": "0.77.0",
4
4
  "description": "Snap Toolbox",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -23,5 +23,5 @@
23
23
  "files": [
24
24
  "dist/**/*"
25
25
  ],
26
- "gitHead": "479d4bdbd85d4734d58898dcdf18b3e14319574b"
26
+ "gitHead": "d7a25a5ade47e4561f49af70f6f929b7331cd15e"
27
27
  }