MCPcopy Create free account
hub / github.com/angular-ui/ui-grid / resolveElementClasses

Function resolveElementClasses

lib/test/angular/1.4.3/angular-animate.js:197–253  ·  view source on GitHub ↗
(existing, toAdd, toRemove)

Source from the content-addressed store, hash-verified

195}
196
197function resolveElementClasses(existing, toAdd, toRemove) {
198 var ADD_CLASS = 1;
199 var REMOVE_CLASS = -1;
200
201 var flags = {};
202 existing = splitClassesToLookup(existing);
203
204 toAdd = splitClassesToLookup(toAdd);
205 forEach(toAdd, function(value, key) {
206 flags[key] = ADD_CLASS;
207 });
208
209 toRemove = splitClassesToLookup(toRemove);
210 forEach(toRemove, function(value, key) {
211 flags[key] = flags[key] === ADD_CLASS ? null : REMOVE_CLASS;
212 });
213
214 var classes = {
215 addClass: '',
216 removeClass: ''
217 };
218
219 forEach(flags, function(val, klass) {
220 var prop, allow;
221 if (val === ADD_CLASS) {
222 prop = 'addClass';
223 allow = !existing[klass];
224 } else if (val === REMOVE_CLASS) {
225 prop = 'removeClass';
226 allow = existing[klass];
227 }
228 if (allow) {
229 if (classes[prop].length) {
230 classes[prop] += ' ';
231 }
232 classes[prop] += klass;
233 }
234 });
235
236 function splitClassesToLookup(classes) {
237 if (isString(classes)) {
238 classes = classes.split(' ');
239 }
240
241 var obj = {};
242 forEach(classes, function(klass) {
243 // sometimes the split leaves empty string values
244 // incase extra spaces were applied to the options
245 if (klass.length) {
246 obj[klass] = true;
247 }
248 });
249 return obj;
250 }
251
252 return classes;
253}
254

Callers 1

mergeAnimationOptionsFunction · 0.70

Calls 2

splitClassesToLookupFunction · 0.70
forEachFunction · 0.70

Tested by

no test coverage detected