@angular-wave/angular.ts 0.7.4 → 0.7.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/@types/core/scope/scope.d.ts +0 -2
  2. package/@types/directive/setter/setter.d.ts +2 -2
  3. package/@types/shared/utils.d.ts +8 -0
  4. package/Makefile +1 -1
  5. package/dist/angular-ts.esm.js +228 -199
  6. package/dist/angular-ts.umd.js +228 -199
  7. package/dist/angular-ts.umd.min.js +1 -1
  8. package/docs/assets/scss/index.scss +12 -0
  9. package/docs/content/_index.md +15 -4
  10. package/docs/content/docs/_index.md +7 -6
  11. package/docs/content/docs/directive/bind.md +70 -0
  12. package/docs/content/docs/directive/blur.md +38 -0
  13. package/docs/content/docs/directive/channel.md +1 -3
  14. package/docs/content/docs/directive/class-even.md +3 -3
  15. package/docs/content/docs/directive/class-odd.md +4 -4
  16. package/docs/content/docs/directive/class.md +7 -7
  17. package/docs/content/docs/directive/click.md +41 -0
  18. package/docs/content/docs/directive/cloak.md +4 -8
  19. package/docs/content/docs/directive/copy.md +38 -0
  20. package/docs/content/docs/directive/cut.md +40 -0
  21. package/docs/content/docs/directive/dblclick.md +41 -0
  22. package/docs/content/docs/directive/focus.md +38 -0
  23. package/docs/content/docs/directive/keydown.md +38 -0
  24. package/docs/content/docs/directive/keyup.md +38 -0
  25. package/docs/content/docs/directive/load.md +43 -0
  26. package/docs/content/docs/directive/mousedown.md +38 -0
  27. package/docs/content/docs/directive/mouseenter.md +38 -0
  28. package/docs/content/docs/directive/mouseleave.md +38 -0
  29. package/docs/content/docs/directive/mousemove.md +38 -0
  30. package/docs/content/docs/directive/mouseout.md +38 -0
  31. package/docs/content/docs/directive/mouseover.md +38 -0
  32. package/docs/content/docs/directive/mouseup.md +38 -0
  33. package/docs/layouts/404.html +1 -1
  34. package/docs/static/examples/eventbus/eventbus.js +1 -1
  35. package/docs/static/examples/ng-bind/ng-bind.html +9 -0
  36. package/docs/static/examples/ng-blur/ng-blur.html +9 -0
  37. package/docs/static/examples/ng-click/ng-click.html +6 -0
  38. package/docs/static/examples/ng-copy/ng-copy.html +6 -0
  39. package/docs/static/examples/ng-cut/ng-cut.html +6 -0
  40. package/docs/static/examples/ng-dblclick/ng-dblclick.html +10 -0
  41. package/docs/static/examples/ng-focus/ng-focus.html +9 -0
  42. package/docs/static/examples/ng-keydown/ng-keydown.html +9 -0
  43. package/docs/static/examples/ng-keyup/ng-keyup.html +9 -0
  44. package/docs/static/examples/ng-load/ng-load.html +8 -0
  45. package/docs/static/examples/ng-mousedown/ng-mousedown.html +6 -0
  46. package/docs/static/examples/ng-mouseenter/ng-mouseenter.html +4 -0
  47. package/docs/static/examples/ng-mouseleave/ng-mouseleave.html +4 -0
  48. package/docs/static/examples/ng-mousemove/ng-mousemove.html +4 -0
  49. package/docs/static/examples/ng-mouseout/ng-mouseout.html +4 -0
  50. package/docs/static/examples/ng-mouseover/ng-mouseover.html +4 -0
  51. package/docs/static/examples/ng-mouseup/ng-mouseup.html +4 -0
  52. package/legacy.d.ts +0 -4
  53. package/package.json +1 -1
  54. package/src/core/location/location.js +1 -1
  55. package/src/core/scope/scope.js +0 -5
  56. package/src/directive/bind/bind.js +16 -4
  57. package/src/directive/bind/bind.spec.js +13 -0
  58. package/src/directive/events/events.js +21 -24
  59. package/src/directive/events/events.md +0 -41
  60. package/src/directive/messages/messages.js +1 -1
  61. package/src/directive/observe/{test.html → observe-demo.html} +0 -1
  62. package/src/directive/repeat/repeat.js +175 -153
  63. package/src/directive/setter/setter.js +1 -1
  64. package/src/directive/switch/switch.spec.js +1 -1
  65. package/src/router/directives/state-directives.js +4 -6
  66. package/src/services/anchor-scroll.js +1 -1
  67. package/src/shared/utils.js +19 -1
  68. package/docs/static/examples/ng-class/ng-class.js +0 -0
@@ -1,4 +1,4 @@
1
- /* Version: 0.7.4 - July 11, 2025 03:03:25 */
1
+ /* Version: 0.7.7 - July 13, 2025 16:59:16 */
2
2
  (function (global, factory) {
3
3
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
4
4
  typeof define === 'function' && define.amd ? define(['exports'], factory) :
@@ -247,7 +247,7 @@
247
247
  * @returns {boolean}
248
248
  */
249
249
  function isScope(obj) {
250
- return obj && obj.$evalAsync && obj.$watch;
250
+ return obj && obj.$watch;
251
251
  }
252
252
 
253
253
  /**
@@ -1136,6 +1136,24 @@
1136
1136
  return Object.prototype.hasOwnProperty.call(obj, key);
1137
1137
  }
1138
1138
 
1139
+ /**
1140
+ * Wraps a function so it can only be called once.
1141
+ * Subsequent calls do nothing and return undefined.
1142
+ *
1143
+ * @param {Function} fn - The function to wrap.
1144
+ * @returns {Function} A new function that will call `fn` only once.
1145
+ */
1146
+ function callBackOnce(fn) {
1147
+ let called = false;
1148
+
1149
+ return function (...args) {
1150
+ if (!called) {
1151
+ called = true;
1152
+ return fn.apply(this, args);
1153
+ }
1154
+ };
1155
+ }
1156
+
1139
1157
  /**
1140
1158
  * Expando cache for adding properties to DOM nodes with JavaScript.
1141
1159
  * This used to be an Object in JQLite decorator, but swapped out for a Map
@@ -3968,31 +3986,28 @@
3968
3986
  */
3969
3987
  const ngEventDirectives = {};
3970
3988
 
3971
- "click copy cut dblclick focus blur keydown keyup keypress load mouseover mousein mouseout mouseleave paste submit touchstart touchend touchmove"
3989
+ "click copy cut dblclick focus blur keydown keyup load mousedown mouseenter mouseleave mousemove mouseout mouseover mouseup paste submit touchstart touchend touchmove"
3972
3990
  .split(" ")
3973
- .forEach(
3974
- /** @param { string } eventName */
3975
- (eventName) => {
3976
- const directiveName = directiveNormalize(`ng-${eventName}`);
3977
- ngEventDirectives[directiveName] = [
3978
- "$parse",
3979
- "$exceptionHandler",
3980
- /**
3981
- * @param {import("../../core/parse/interface.ts").ParseService} $parse
3982
- * @param {import('../../core/exception-handler.js').ErrorHandler} $exceptionHandler
3983
- * @returns
3984
- */
3985
- ($parse, $exceptionHandler) => {
3986
- return createEventDirective(
3987
- $parse,
3988
- $exceptionHandler,
3989
- directiveName,
3990
- eventName,
3991
- );
3992
- },
3993
- ];
3994
- },
3995
- );
3991
+ .forEach((eventName) => {
3992
+ const directiveName = directiveNormalize(`ng-${eventName}`);
3993
+ ngEventDirectives[directiveName] = [
3994
+ "$parse",
3995
+ "$exceptionHandler",
3996
+ /**
3997
+ * @param {import("../../core/parse/interface.ts").ParseService} $parse
3998
+ * @param {import('../../core/exception-handler.js').ErrorHandler} $exceptionHandler
3999
+ * @returns
4000
+ */
4001
+ ($parse, $exceptionHandler) => {
4002
+ return createEventDirective(
4003
+ $parse,
4004
+ $exceptionHandler,
4005
+ directiveName,
4006
+ eventName,
4007
+ );
4008
+ },
4009
+ ];
4010
+ });
3996
4011
 
3997
4012
  /**
3998
4013
  *
@@ -11225,9 +11240,15 @@
11225
11240
  * @param {import('../../core/compile/attributes.js').Attributes} attr
11226
11241
  */
11227
11242
  link(scope, element, attr) {
11228
- scope.$watch(attr["ngBind"], (value) => {
11229
- element.textContent = stringify$1(isProxy(value) ? value.$target : value);
11230
- });
11243
+ scope.$watch(
11244
+ attr["ngBind"],
11245
+ (value) => {
11246
+ element.textContent = stringify$1(
11247
+ isProxy(value) ? value.$target : value,
11248
+ );
11249
+ },
11250
+ isDefined(attr["lazy"]),
11251
+ );
11231
11252
  },
11232
11253
  };
11233
11254
  }
@@ -11954,7 +11975,7 @@
11954
11975
  transclude: "element",
11955
11976
  priority: 1000,
11956
11977
  terminal: true,
11957
- compile: (_$element, $attr) => {
11978
+ compile: ($element, $attr) => {
11958
11979
  const expression = $attr["ngRepeat"];
11959
11980
  const hasAnimate = !!$attr["animate"];
11960
11981
 
@@ -12000,6 +12021,14 @@
12000
12021
  );
12001
12022
  }
12002
12023
 
12024
+ const swap = callBackOnce(() => {
12025
+ if (isDefined($attr["lazy"]) && isDefined($attr["swap"])) {
12026
+ document
12027
+ .querySelectorAll($attr["swap"])
12028
+ .forEach((x) => removeElement(x));
12029
+ }
12030
+ });
12031
+
12003
12032
  return function ngRepeatLink($scope, $element, $attr, ctrl, $transclude) {
12004
12033
  // Store a list of elements from previous run. This is a hash where key is the item from the
12005
12034
  // iterator, and the value is objects with following properties.
@@ -12011,174 +12040,181 @@
12011
12040
  // hasOwnProperty.
12012
12041
  let lastBlockMap = Object.create(null);
12013
12042
  // watch props
12014
- $scope.$watch(rhs, (collection) => {
12015
- let index,
12016
- length,
12017
- previousNode = $element, // node that cloned nodes should be inserted after
12018
- // initialized to the comment node anchor
12019
- nextNode;
12020
- const // Same as lastBlockMap but it has the current state. It will become the
12021
- // lastBlockMap on the next iteration.
12022
- nextBlockMap = Object.create(null);
12023
- let collectionLength,
12024
- key,
12025
- value, // key/value of iteration
12026
- trackById,
12027
- trackByIdFn,
12028
- collectionKeys,
12029
- block, // last object information {scope, element, id}
12030
- nextBlockOrder,
12031
- elementsToRemove;
12032
-
12033
- if (aliasAs) {
12034
- $scope[aliasAs] = collection;
12035
- }
12036
-
12037
- if (isArrayLike(collection)) {
12038
- collectionKeys = collection;
12039
- trackByIdFn = trackByIdArrayFn;
12040
- } else {
12041
- trackByIdFn = trackByIdObjFn;
12042
- // if object, extract keys, in enumeration order, unsorted
12043
- collectionKeys = [];
12044
- for (const itemKey in collection) {
12045
- if (hasOwn(collection, itemKey) && itemKey.charAt(0) !== "$") {
12046
- collectionKeys.push(itemKey);
12047
- }
12043
+ $scope.$watch(
12044
+ rhs,
12045
+ (collection) => {
12046
+ swap();
12047
+ let index,
12048
+ length,
12049
+ previousNode = $element, // node that cloned nodes should be inserted after
12050
+ // initialized to the comment node anchor
12051
+ nextNode;
12052
+ const // Same as lastBlockMap but it has the current state. It will become the
12053
+ // lastBlockMap on the next iteration.
12054
+ nextBlockMap = Object.create(null);
12055
+ let collectionLength,
12056
+ key,
12057
+ value, // key/value of iteration
12058
+ trackById,
12059
+ trackByIdFn,
12060
+ collectionKeys,
12061
+ block, // last object information {scope, element, id}
12062
+ nextBlockOrder,
12063
+ elementsToRemove;
12064
+
12065
+ if (aliasAs) {
12066
+ $scope[aliasAs] = collection;
12048
12067
  }
12049
- }
12050
12068
 
12051
- collectionLength = collectionKeys.length;
12052
- nextBlockOrder = new Array(collectionLength);
12053
-
12054
- // locate existing items
12055
- for (index = 0; index < collectionLength; index++) {
12056
- key = collection === collectionKeys ? index : collectionKeys[index];
12057
- value = collection[key];
12058
- trackById = trackByIdFn($scope, key, value);
12059
- if (lastBlockMap[trackById]) {
12060
- // found previously seen block
12061
- block = lastBlockMap[trackById];
12062
- delete lastBlockMap[trackById];
12063
- nextBlockMap[trackById] = block;
12064
- nextBlockOrder[index] = block;
12065
- } else if (nextBlockMap[trackById]) {
12066
- // if collision detected. restore lastBlockMap and throw an error
12067
- Object.values(nextBlockOrder).forEach((block) => {
12068
- if (block && block.scope) lastBlockMap[block.id] = block;
12069
- });
12070
- throw ngRepeatMinErr(
12071
- "dupes",
12072
- "Duplicates keys in a repeater are not allowed. Repeater: {0}, Duplicate key: {1} for value: {2}",
12073
- expression,
12074
- trackById,
12075
- value,
12076
- );
12069
+ if (isArrayLike(collection)) {
12070
+ collectionKeys = collection;
12071
+ trackByIdFn = trackByIdArrayFn;
12077
12072
  } else {
12078
- // new never before seen block
12079
- nextBlockOrder[index] = {
12080
- id: trackById,
12081
- scope: undefined,
12082
- clone: undefined,
12083
- };
12084
- nextBlockMap[trackById] = true;
12073
+ trackByIdFn = trackByIdObjFn;
12074
+ // if object, extract keys, in enumeration order, unsorted
12075
+ collectionKeys = [];
12076
+ for (const itemKey in collection) {
12077
+ if (hasOwn(collection, itemKey) && itemKey.charAt(0) !== "$") {
12078
+ collectionKeys.push(itemKey);
12079
+ }
12080
+ }
12085
12081
  }
12086
- }
12087
12082
 
12088
- // remove leftover items
12089
- for (let blockKey in lastBlockMap) {
12090
- block = lastBlockMap[blockKey];
12091
- elementsToRemove = block.clone;
12092
- if (hasAnimate) {
12093
- $animate.leave(elementsToRemove);
12094
- } else {
12095
- elementsToRemove.remove();
12083
+ collectionLength = collectionKeys.length;
12084
+ nextBlockOrder = new Array(collectionLength);
12085
+
12086
+ // locate existing items
12087
+ for (index = 0; index < collectionLength; index++) {
12088
+ key =
12089
+ collection === collectionKeys ? index : collectionKeys[index];
12090
+ value = collection[key];
12091
+ trackById = trackByIdFn($scope, key, value);
12092
+ if (lastBlockMap[trackById]) {
12093
+ // found previously seen block
12094
+ block = lastBlockMap[trackById];
12095
+ delete lastBlockMap[trackById];
12096
+ nextBlockMap[trackById] = block;
12097
+ nextBlockOrder[index] = block;
12098
+ } else if (nextBlockMap[trackById]) {
12099
+ // if collision detected. restore lastBlockMap and throw an error
12100
+ Object.values(nextBlockOrder).forEach((block) => {
12101
+ if (block && block.scope) lastBlockMap[block.id] = block;
12102
+ });
12103
+ throw ngRepeatMinErr(
12104
+ "dupes",
12105
+ "Duplicates keys in a repeater are not allowed. Repeater: {0}, Duplicate key: {1} for value: {2}",
12106
+ expression,
12107
+ trackById,
12108
+ value,
12109
+ );
12110
+ } else {
12111
+ // new never before seen block
12112
+ nextBlockOrder[index] = {
12113
+ id: trackById,
12114
+ scope: undefined,
12115
+ clone: undefined,
12116
+ };
12117
+ nextBlockMap[trackById] = true;
12118
+ }
12096
12119
  }
12097
- if (elementsToRemove.parentNode) {
12098
- // if the element was not removed yet because of pending animation, mark it as deleted
12099
- // so that we can ignore it later
12100
- for (
12101
- index = 0, length = elementsToRemove.length;
12102
- index < length;
12103
- index++
12104
- ) {
12105
- elementsToRemove[index][NG_REMOVED] = true;
12120
+
12121
+ // remove leftover items
12122
+ for (let blockKey in lastBlockMap) {
12123
+ block = lastBlockMap[blockKey];
12124
+ elementsToRemove = block.clone;
12125
+ if (hasAnimate) {
12126
+ $animate.leave(elementsToRemove);
12127
+ } else {
12128
+ elementsToRemove.remove();
12129
+ }
12130
+ if (elementsToRemove.parentNode) {
12131
+ // if the element was not removed yet because of pending animation, mark it as deleted
12132
+ // so that we can ignore it later
12133
+ for (
12134
+ index = 0, length = elementsToRemove.length;
12135
+ index < length;
12136
+ index++
12137
+ ) {
12138
+ elementsToRemove[index][NG_REMOVED] = true;
12139
+ }
12106
12140
  }
12141
+ block.scope.$destroy();
12107
12142
  }
12108
- block.scope.$destroy();
12109
- }
12110
12143
 
12111
- for (index = 0; index < collectionLength; index++) {
12112
- key = collection === collectionKeys ? index : collectionKeys[index];
12113
- value = collection[key];
12114
- block = nextBlockOrder[index];
12144
+ for (index = 0; index < collectionLength; index++) {
12145
+ key =
12146
+ collection === collectionKeys ? index : collectionKeys[index];
12147
+ value = collection[key];
12148
+ block = nextBlockOrder[index];
12115
12149
 
12116
- if (block.scope) {
12117
- // if we have already seen this object, then we need to reuse the
12118
- // associated scope/element
12150
+ if (block.scope) {
12151
+ // if we have already seen this object, then we need to reuse the
12152
+ // associated scope/element
12119
12153
 
12120
- nextNode = previousNode;
12154
+ nextNode = previousNode;
12121
12155
 
12122
- // skip nodes that are already pending removal via leave animation
12123
- do {
12124
- nextNode = nextNode.nextSibling;
12125
- } while (nextNode && nextNode[NG_REMOVED]);
12156
+ // skip nodes that are already pending removal via leave animation
12157
+ do {
12158
+ nextNode = nextNode.nextSibling;
12159
+ } while (nextNode && nextNode[NG_REMOVED]);
12126
12160
 
12127
- if (getBlockStart(block) !== nextNode) {
12128
- // existing item which got moved
12129
- $animate.move(getBlockNodes(block.clone), null, previousNode);
12130
- }
12131
- previousNode = getBlockEnd(block);
12132
- updateScope(
12133
- block.scope,
12134
- index,
12135
- valueIdentifier,
12136
- value,
12137
- keyIdentifier,
12138
- key,
12139
- collectionLength,
12140
- );
12141
- } else {
12142
- // new item which we don't know about
12143
- $transclude(
12144
- /**
12145
- * Clone attach function
12146
- * @param {Array<NodeList>} clone
12147
- * @param {import("../../core/scope/scope.js").Scope} scope
12148
- */
12149
-
12150
- (clone, scope) => {
12151
- block.scope = scope;
12152
- const endNode = clone;
12153
- if (hasAnimate) {
12154
- $animate.enter(clone, null, previousNode);
12155
- } else {
12156
- // @ts-ignore
12157
- previousNode.after(clone);
12158
- }
12161
+ if (getBlockStart(block) !== nextNode) {
12162
+ // existing item which got moved
12163
+ $animate.move(getBlockNodes(block.clone), null, previousNode);
12164
+ }
12165
+ previousNode = getBlockEnd(block);
12166
+ updateScope(
12167
+ block.scope,
12168
+ index,
12169
+ valueIdentifier,
12170
+ value,
12171
+ keyIdentifier,
12172
+ key,
12173
+ collectionLength,
12174
+ );
12175
+ } else {
12176
+ // new item which we don't know about
12177
+ $transclude(
12178
+ /**
12179
+ * Clone attach function
12180
+ * @param {Array<NodeList>} clone
12181
+ * @param {import("../../core/scope/scope.js").Scope} scope
12182
+ */
12159
12183
 
12160
- // @ts-ignore
12161
- previousNode = endNode;
12162
- // Note: We only need the first/last node of the cloned nodes.
12163
- // However, we need to keep the reference to the dom wrapper as it might be changed later
12164
- // by a directive with templateUrl when its template arrives.
12165
- block.clone = clone;
12166
- nextBlockMap[block.id] = block;
12167
- updateScope(
12168
- block.scope,
12169
- index,
12170
- valueIdentifier,
12171
- value,
12172
- keyIdentifier,
12173
- key,
12174
- collectionLength,
12175
- );
12176
- },
12177
- );
12184
+ (clone, scope) => {
12185
+ block.scope = scope;
12186
+ const endNode = clone;
12187
+ if (hasAnimate) {
12188
+ $animate.enter(clone, null, previousNode);
12189
+ } else {
12190
+ // @ts-ignore
12191
+ previousNode.after(clone);
12192
+ }
12193
+
12194
+ // @ts-ignore
12195
+ previousNode = endNode;
12196
+ // Note: We only need the first/last node of the cloned nodes.
12197
+ // However, we need to keep the reference to the dom wrapper as it might be changed later
12198
+ // by a directive with templateUrl when its template arrives.
12199
+ block.clone = clone;
12200
+ nextBlockMap[block.id] = block;
12201
+ updateScope(
12202
+ block.scope,
12203
+ index,
12204
+ valueIdentifier,
12205
+ value,
12206
+ keyIdentifier,
12207
+ key,
12208
+ collectionLength,
12209
+ );
12210
+ },
12211
+ );
12212
+ }
12178
12213
  }
12179
- }
12180
- lastBlockMap = nextBlockMap;
12181
- });
12214
+ lastBlockMap = nextBlockMap;
12215
+ },
12216
+ isDefined($attr["lazy"]),
12217
+ );
12182
12218
  };
12183
12219
  },
12184
12220
  };
@@ -13562,7 +13598,7 @@
13562
13598
  // skip the initial scroll if $location.hash is empty
13563
13599
  if (newVal === oldVal && newVal === "") return;
13564
13600
 
13565
- const action = () => $rootScope.$evalAsync(scroll);
13601
+ const action = () => Promise.resolve().then(scroll);
13566
13602
  if (document.readyState === "complete") {
13567
13603
  // Force the action to be run async for consistent behavior
13568
13604
  // from the action's point of view
@@ -20004,7 +20040,7 @@
20004
20040
  return;
20005
20041
  }
20006
20042
 
20007
- $rootScope.$evalAsync(() => {
20043
+ Promise.resolve().then(() => {
20008
20044
  const oldUrl = $location.absUrl();
20009
20045
  const oldState = $location.$$state;
20010
20046
  let defaultPrevented;
@@ -20732,7 +20768,6 @@
20732
20768
  $destroy: this.$destroy.bind(this),
20733
20769
  $eval: this.$eval.bind(this),
20734
20770
  $apply: this.$apply.bind(this),
20735
- $evalAsync: this.$evalAsync.bind(this),
20736
20771
  $postUpdate: this.$postUpdate.bind(this),
20737
20772
  $isRoot: this.#isRoot.bind(this),
20738
20773
  $target: target,
@@ -21238,10 +21273,6 @@
21238
21273
  return res;
21239
21274
  }
21240
21275
 
21241
- async $evalAsync(expr, locals) {
21242
- return await this.$eval(expr, locals);
21243
- }
21244
-
21245
21276
  /**
21246
21277
  * @param {Object} newTarget
21247
21278
  */
@@ -21984,7 +22015,7 @@
21984
22015
  reRender() {
21985
22016
  if (!this.renderLater) {
21986
22017
  this.renderLater = true;
21987
- this.$scope.$evalAsync(() => {
22018
+ Promise.resolve().then(() => {
21988
22019
  if (this.renderLater && this.cachedCollection) {
21989
22020
  this.render(this.cachedCollection);
21990
22021
  }
@@ -35099,12 +35130,10 @@
35099
35130
  const removeClasses = allClasses.filter(
35100
35131
  (cls) => !addClasses.includes(cls),
35101
35132
  );
35102
- $scope.$evalAsync(() => {
35103
- addClasses.forEach((className) => $element.classList.add(className));
35104
- removeClasses.forEach((className) =>
35105
- $element.classList.remove(className),
35106
- );
35107
- });
35133
+ addClasses.forEach((className) => $element.classList.add(className));
35134
+ removeClasses.forEach((className) =>
35135
+ $element.classList.remove(className),
35136
+ );
35108
35137
  }
35109
35138
  update();
35110
35139
  },
@@ -35612,7 +35641,7 @@
35612
35641
  /**
35613
35642
  * @param {import('../../core/parse/interface.ts').ParseService} $parse
35614
35643
  * @param {import('../../services/log/interface.ts').LogService} $log
35615
- * @returns {import('../../interface.ts').Directive}
35644
+ * @returns {import('interface.ts').Directive}
35616
35645
  */
35617
35646
  function ngSetterDirective($parse, $log) {
35618
35647
  return {
@@ -36097,7 +36126,7 @@
36097
36126
  /**
36098
36127
  * @type {string} `version` from `package.json`
36099
36128
  */
36100
- this.version = "0.7.4"; //inserted via rollup plugin
36129
+ this.version = "0.7.7"; //inserted via rollup plugin
36101
36130
 
36102
36131
  /** @type {!Array<string|any>} */
36103
36132
  this.bootsrappedModules = [];