Improve Jqhtml_Integration.js documentation with hydration system explanation Add jqhtml-laravel integration packages for traditional Laravel projects 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
40 lines
817 B
JavaScript
40 lines
817 B
JavaScript
'use strict';
|
|
|
|
const { isArray, isObject, isFunction } = require('../helpers/is');
|
|
|
|
module.exports = function takeUntil(valueOrFunction) {
|
|
let previous = null;
|
|
let items;
|
|
|
|
let callback = value => value === valueOrFunction;
|
|
if (isFunction(valueOrFunction)) {
|
|
callback = valueOrFunction;
|
|
}
|
|
|
|
if (isArray(this.items)) {
|
|
items = this.items.filter((item) => {
|
|
if (previous !== false) {
|
|
previous = !callback(item);
|
|
}
|
|
|
|
return previous;
|
|
});
|
|
}
|
|
|
|
if (isObject(this.items)) {
|
|
items = Object.keys(this.items).reduce((acc, key) => {
|
|
if (previous !== false) {
|
|
previous = !callback(this.items[key]);
|
|
}
|
|
|
|
if (previous !== false) {
|
|
acc[key] = this.items[key];
|
|
}
|
|
|
|
return acc;
|
|
}, {});
|
|
}
|
|
|
|
return new this.constructor(items);
|
|
};
|