Skip to content

Commit

Permalink
Bumped version to 8.1.1
Browse files Browse the repository at this point in the history
  • Loading branch information
fabiospampinato committed Feb 16, 2022
1 parent 3b462da commit 589529b
Show file tree
Hide file tree
Showing 8 changed files with 145 additions and 90 deletions.
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
### [v8.1.1](https://github.com/fabiospampinato/cash/releases/tag/8.1.1) (2022-02-16)

- Deleted repo-level github funding.yml
- Updated some dependencies
- Updated some dependencies
- Ensuring the proper types for iteration are provided
- Ensuring $.fn.find works with document fragments too
- Ensuring the "delegateProperty" is attached to events
- More reliably using "getElementById", only if the context node actually supports it
- Ensuring that before inserting a node before/after the html node the html node is removed from the DOM

### [v8.1.0](https://github.com/fabiospampinato/cash/releases/tag/8.1.0) (2020-09-12)

- Added `$.isPlainObject`
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ If you're migrating from jQuery be sure to read our [migration guide](https://gi

## Usage

Get Cash from [CloudFlare](https://cdnjs.cloudflare.com/ajax/libs/cash/8.1.0/cash.min.js) or [jsDelivr](https://cdn.jsdelivr.net/npm/[email protected].0/dist/cash.min.js) and use it like this:
Get Cash from [CloudFlare](https://cdnjs.cloudflare.com/ajax/libs/cash/8.1.1/cash.min.js) or [jsDelivr](https://cdn.jsdelivr.net/npm/[email protected].1/dist/cash.min.js) and use it like this:

```html
<script src="https://cdnjs.cloudflare.com/ajax/libs/cash/8.1.0/cash.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/cash/8.1.1/cash.min.js"></script>
<script>
$(function () {
$('html').addClass ( 'dom-loaded' );
Expand Down
2 changes: 1 addition & 1 deletion dist/cash.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ interface Event {
namespace: string;
data: any;
relatedTarget?: Node | null;
___cd?: boolean;
___ifocus?: boolean;
___iblur?: boolean;
___ot?: string;
___td?: boolean;
}
interface Cash {
[Symbol.iterator](): IterableIterator<EleLoose>;
[index: number]: EleLoose | undefined;
length: number;
splice(start: number, deleteCount?: number): EleLoose[];
Expand Down
40 changes: 26 additions & 14 deletions dist/cash.esm.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,12 @@ const doc = document, win = window, docEle = doc.documentElement, createElement
const idRe = /^#(?:[\w-]|\\.|[^\x00-\xa0])*$/, classRe = /^\.(?:[\w-]|\\.|[^\x00-\xa0])*$/, htmlRe = /<.+>/, tagRe = /^\w+$/;
// @require ./variables.ts
function find(selector, context) {
return !selector || (!isDocument(context) && !isElement(context))
const isFragment = isDocumentFragment(context);
return !selector || (!isFragment && !isDocument(context) && !isElement(context))
? []
: classRe.test(selector)
: !isFragment && classRe.test(selector)
? context.getElementsByClassName(selector.slice(1))
: tagRe.test(selector)
: !isFragment && tagRe.test(selector)
? context.getElementsByTagName(selector)
: context.querySelectorAll(selector);
}
Expand All @@ -46,7 +47,7 @@ class Cash {
let eles = selector;
if (isString(selector)) {
const ctx = (isCash(context) ? context[0] : context) || doc;
eles = idRe.test(selector)
eles = idRe.test(selector) && 'getElementById' in ctx
? ctx.getElementById(selector.slice(1))
: htmlRe.test(selector)
? parseHTML(selector)
Expand Down Expand Up @@ -101,6 +102,9 @@ function isWindow(x) {
function isDocument(x) {
return !!x && x.nodeType === 9;
}
function isDocumentFragment(x) {
return !!x && x.nodeType === 11;
}
function isElement(x) {
return !!x && x.nodeType === 1;
}
Expand Down Expand Up @@ -674,16 +678,19 @@ function on(eventFullName, selector, data, callback, _one) {
return;
}
thisArg = target;
event.___cd = true; // Delegate
}
if (event.___cd) {
Object.defineProperty(event, 'currentTarget', {
configurable: true,
get() {
return thisArg;
}
});
}
Object.defineProperty(event, 'currentTarget', {
configurable: true,
get() {
return thisArg;
}
});
Object.defineProperty(event, 'delegateTarget', {
configurable: true,
get() {
return ele;
}
});
Object.defineProperty(event, 'data', {
configurable: true,
get() {
Expand Down Expand Up @@ -950,7 +957,12 @@ function insertElement(anchor, target, left, inside, evaluate) {
anchor.insertBefore(target, left ? anchor.firstChild : null);
}
else { // before/after
anchor.parentNode.insertBefore(target, left ? anchor : anchor.nextSibling);
if (anchor.nodeName === 'HTML') {
anchor.parentNode.replaceChild(target, anchor);
}
else {
anchor.parentNode.insertBefore(target, left ? anchor : anchor.nextSibling);
}
}
if (evaluate) {
evalScripts(target, anchor.ownerDocument);
Expand Down
43 changes: 27 additions & 16 deletions dist/cash.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ var idRe = /^#(?:[\w-]|\\.|[^\x00-\xa0])*$/,
tagRe = /^\w+$/; // @require ./variables.ts

function find(selector, context) {
return !selector || !isDocument(context) && !isElement(context) ? [] : classRe.test(selector) ? context.getElementsByClassName(selector.slice(1)) : tagRe.test(selector) ? context.getElementsByTagName(selector) : context.querySelectorAll(selector);
var isFragment = isDocumentFragment(context);
return !selector || !isFragment && !isDocument(context) && !isElement(context) ? [] : !isFragment && classRe.test(selector) ? context.getElementsByClassName(selector.slice(1)) : !isFragment && tagRe.test(selector) ? context.getElementsByTagName(selector) : context.querySelectorAll(selector);
} // @require ./find.ts
// @require ./variables.ts

Expand All @@ -70,7 +71,7 @@ function () {

if (isString(selector)) {
var ctx = (isCash(context) ? context[0] : context) || doc;
eles = idRe.test(selector) ? ctx.getElementById(selector.slice(1)) : htmlRe.test(selector) ? parseHTML(selector) : find(selector, ctx);
eles = idRe.test(selector) && 'getElementById' in ctx ? ctx.getElementById(selector.slice(1)) : htmlRe.test(selector) ? parseHTML(selector) : find(selector, ctx);
if (!eles) return;
} else if (isFunction(selector)) {
return this.ready(selector); //FIXME: `fn.ready` is not included in `core`, but it's actually a core functionality
Expand Down Expand Up @@ -141,6 +142,10 @@ function isDocument(x) {
return !!x && x.nodeType === 9;
}

function isDocumentFragment(x) {
return !!x && x.nodeType === 11;
}

function isElement(x) {
return !!x && x.nodeType === 1;
}
Expand Down Expand Up @@ -802,8 +807,8 @@ function on(eventFullName, selector, data, callback, _one) {
nameOriginal = _a[0],
namespaces = _a[1],
name = getEventNameBubbling(nameOriginal),
isEventHover = nameOriginal in eventsHover,
isEventFocus = nameOriginal in eventsFocus;
isEventHover = (nameOriginal in eventsHover),
isEventFocus = (nameOriginal in eventsFocus);

if (!name) return;

Expand All @@ -827,18 +832,20 @@ function on(eventFullName, selector, data, callback, _one) {
}

thisArg = target;
event.___cd = true; // Delegate
}

if (event.___cd) {
Object.defineProperty(event, 'currentTarget', {
configurable: true,
get: function get() {
return thisArg;
}
});
}

Object.defineProperty(event, 'currentTarget', {
configurable: true,
get: function get() {
return thisArg;
}
});
Object.defineProperty(event, 'delegateTarget', {
configurable: true,
get: function get() {
return ele;
}
});
Object.defineProperty(event, 'data', {
configurable: true,
get: function get() {
Expand Down Expand Up @@ -903,7 +910,7 @@ fn.trigger = function (event, data) {
}

event.___td = data;
var isEventFocus = event.___ot in eventsFocus;
var isEventFocus = (event.___ot in eventsFocus);
return this.each(function (i, ele) {
if (isEventFocus && isFunction(ele[event.___ot])) {
ele["___i" + event.type] = true; // Ensuring the native event is ignored
Expand Down Expand Up @@ -1162,7 +1169,11 @@ function insertElement(anchor, target, left, inside, evaluate) {
anchor.insertBefore(target, left ? anchor.firstChild : null);
} else {
// before/after
anchor.parentNode.insertBefore(target, left ? anchor : anchor.nextSibling);
if (anchor.nodeName === 'HTML') {
anchor.parentNode.replaceChild(target, anchor);
} else {
anchor.parentNode.insertBefore(target, left ? anchor : anchor.nextSibling);
}
}

if (evaluate) {
Expand Down
Loading

0 comments on commit 589529b

Please sign in to comment.