1
0
Fork 0
mirror of https://github.com/DanielnetoDotCom/YouPHPTube synced 2025-10-05 10:49:36 +02:00

Libs updates and new version with option to pin videos on channel

This commit is contained in:
Daniel Neto 2024-08-05 11:37:04 -03:00
parent e1f2188de0
commit 1beab3b1c0
8565 changed files with 149805 additions and 165674 deletions

View file

@ -1,8 +1,8 @@
export default function (owner, key, value) {
if (value === undefined) {
return owner.__data ? owner.__data[key] : null;
} else {
owner.__data = owner.__data || {};
owner.__data[key] = value;
}
}
if (value === undefined) {
return owner.__data ? owner.__data[key] : null;
} else {
owner.__data = owner.__data || {};
owner.__data[key] = value;
}
}

View file

@ -1,186 +1,230 @@
import extend from "./extend";
import window from "../global/window";
import DependencyLib from "./inputmask.dependencyLib";
import canUseDOM from "../canUseDOM";
export {on, off, trigger, Event};
import extend from "./extend";
import DependencyLib from "./inputmask.dependencyLib";
export { on, off, trigger, Evnt as Event };
const document = window.document;
function isValidElement(elem) {
return elem instanceof Element;
return elem instanceof Element;
}
let Event;
let Evnt;
if (typeof window.CustomEvent === "function") {
Event = window.CustomEvent;
} else {
if (canUseDOM) {
Event = function (event, params) {
params = params || {bubbles: false, cancelable: false, composed: true, detail: undefined};
var evt = document.createEvent("CustomEvent");
evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
return evt;
};
Event.prototype = window.Event.prototype;
}
Evnt = window.CustomEvent;
} else if (window.Event && document && document.createEvent) {
Evnt = function (event, params) {
params = params || {
bubbles: false,
cancelable: false,
composed: true,
detail: undefined
};
const evt = document.createEvent("CustomEvent");
evt.initCustomEvent(
event,
params.bubbles,
params.cancelable,
params.detail
);
return evt;
};
Evnt.prototype = window.Event.prototype;
} else if (typeof Event !== "undefined") {
// nodejs
Evnt = Event;
}
function on(events, handler) {
function addEvent(ev, namespace) {
//register domevent
if (elem.addEventListener) { // all browsers except IE before version 9
elem.addEventListener(ev, handler, false);
} else if (elem.attachEvent) { // IE before version 9
elem.attachEvent(`on${ev}`, handler);
}
eventRegistry[ev] = eventRegistry[ev] || {};
eventRegistry[ev][namespace] = eventRegistry[ev][namespace] || [];
eventRegistry[ev][namespace].push(handler);
}
function addEvent(ev, namespace) {
// register domevent
if (elem.addEventListener) {
// all browsers except IE before version 9
elem.addEventListener(ev, handler, false);
} else if (elem.attachEvent) {
// IE before version 9
elem.attachEvent(`on${ev}`, handler);
}
eventRegistry[ev] = eventRegistry[ev] || {};
eventRegistry[ev][namespace] = eventRegistry[ev][namespace] || [];
eventRegistry[ev][namespace].push(handler);
}
if (isValidElement(this[0])) {
var eventRegistry = this[0].eventRegistry,
elem = this[0];
if (isValidElement(this[0])) {
var eventRegistry = this[0].eventRegistry,
elem = this[0];
events.split(" ").forEach((event) => {
const [ev, namespace = "global"] = event.split(".");
addEvent(ev, namespace);
});
}
return this;
events.split(" ").forEach((event) => {
const [ev, namespace = "global"] = event.split(".");
addEvent(ev, namespace);
});
}
return this;
}
function off(events, handler) {
var eventRegistry, elem;
let eventRegistry, elem;
function removeEvent(ev, namespace, handler) {
if (ev in eventRegistry === true) {
//unbind to dom events
if (elem.removeEventListener) { // all browsers except IE before version 9
elem.removeEventListener(ev, handler, false);
} else if (elem.detachEvent) { // IE before version 9
elem.detachEvent(`on${ev}`, handler);
}
if (namespace === "global") {
for (var nmsp in eventRegistry[ev]) {
eventRegistry[ev][nmsp].splice(eventRegistry[ev][nmsp].indexOf(handler), 1);
}
} else {
eventRegistry[ev][namespace].splice(eventRegistry[ev][namespace].indexOf(handler), 1);
}
}
}
function removeEvent(ev, namespace, handler) {
if (ev in eventRegistry === true) {
// unbind to dom events
if (elem.removeEventListener) {
// all browsers except IE before version 9
elem.removeEventListener(ev, handler, false);
} else if (elem.detachEvent) {
// IE before version 9
elem.detachEvent(`on${ev}`, handler);
}
if (namespace === "global") {
for (const nmsp in eventRegistry[ev]) {
eventRegistry[ev][nmsp].splice(
eventRegistry[ev][nmsp].indexOf(handler),
1
);
}
} else {
eventRegistry[ev][namespace].splice(
eventRegistry[ev][namespace].indexOf(handler),
1
);
}
}
}
function resolveNamespace(ev, namespace) {
var evts = [],
hndx, hndL;
if (ev.length > 0) {
if (handler === undefined) {
for (hndx = 0, hndL = eventRegistry[ev][namespace].length; hndx < hndL; hndx++) {
evts.push({
ev: ev,
namespace: namespace && namespace.length > 0 ? namespace : "global",
handler: eventRegistry[ev][namespace][hndx]
});
}
} else {
evts.push({
ev: ev,
namespace: namespace && namespace.length > 0 ? namespace : "global",
handler: handler
});
}
} else if (namespace.length > 0) {
for (var evNdx in eventRegistry) {
for (var nmsp in eventRegistry[evNdx]) {
if (nmsp === namespace) {
if (handler === undefined) {
for (hndx = 0, hndL = eventRegistry[evNdx][nmsp].length; hndx < hndL; hndx++) {
evts.push({
ev: evNdx,
namespace: nmsp,
handler: eventRegistry[evNdx][nmsp][hndx]
});
}
} else {
evts.push({
ev: evNdx,
namespace: nmsp,
handler: handler
});
}
}
}
}
}
function resolveNamespace(ev, namespace) {
let evts = [],
hndx,
hndL;
if (ev.length > 0) {
if (handler === undefined) {
for (
hndx = 0, hndL = eventRegistry[ev][namespace].length;
hndx < hndL;
hndx++
) {
evts.push({
ev,
namespace: namespace && namespace.length > 0 ? namespace : "global",
handler: eventRegistry[ev][namespace][hndx]
});
}
} else {
evts.push({
ev,
namespace: namespace && namespace.length > 0 ? namespace : "global",
handler
});
}
} else if (namespace.length > 0) {
for (const evNdx in eventRegistry) {
for (const nmsp in eventRegistry[evNdx]) {
if (nmsp === namespace) {
if (handler === undefined) {
for (
hndx = 0, hndL = eventRegistry[evNdx][nmsp].length;
hndx < hndL;
hndx++
) {
evts.push({
ev: evNdx,
namespace: nmsp,
handler: eventRegistry[evNdx][nmsp][hndx]
});
}
} else {
evts.push({
ev: evNdx,
namespace: nmsp,
handler
});
}
}
}
}
}
return evts;
}
return evts;
}
if (isValidElement(this[0]) && events) {
eventRegistry = this[0].eventRegistry;
elem = this[0];
if (isValidElement(this[0]) && events) {
eventRegistry = this[0].eventRegistry;
elem = this[0];
events.split(" ").forEach((event) => {
const [ev, namespace] = event.split(".");
resolveNamespace(ev, namespace).forEach(({ev: ev1, handler: handler1, namespace: namespace1}) => {
removeEvent(ev1, namespace1, handler1);
});
});
}
return this;
events.split(" ").forEach((event) => {
const [ev, namespace] = event.split(".");
resolveNamespace(ev, namespace).forEach(
({ ev: ev1, handler: handler1, namespace: namespace1 }) => {
removeEvent(ev1, namespace1, handler1);
}
);
});
}
return this;
}
function trigger(events /* , args... */) {
if (isValidElement(this[0])) {
var eventRegistry = this[0].eventRegistry,
elem = this[0];
var _events = typeof events === "string" ? events.split(" ") : [events.type];
for (var endx = 0; endx < _events.length; endx++) {
var nsEvent = _events[endx].split("."),
ev = nsEvent[0],
namespace = nsEvent[1] || "global";
if (document !== undefined && namespace === "global") {
//trigger domevent
var evnt, i, params = {
bubbles: true,
cancelable: true,
composed: true,
detail: arguments[1]
};
// The custom event that will be created
if (document.createEvent) {
try {
switch (ev) {
case "input":
params.inputType = "insertText";
evnt = new InputEvent(ev, params);
break;
default:
evnt = new CustomEvent(ev, params);
}
} catch (e) {
evnt = document.createEvent("CustomEvent");
evnt.initCustomEvent(ev, params.bubbles, params.cancelable, params.detail);
}
if (events.type) extend(evnt, events);
elem.dispatchEvent(evnt);
} else {
evnt = document.createEventObject();
evnt.eventType = ev;
evnt.detail = arguments[1];
if (events.type) extend(evnt, events);
elem.fireEvent("on" + evnt.eventType, evnt);
}
} else if (eventRegistry[ev] !== undefined) {
arguments[0] = arguments[0].type ? arguments[0] : DependencyLib.Event(arguments[0]);
arguments[0].detail = arguments.slice(1);
if (isValidElement(this[0])) {
const eventRegistry = this[0].eventRegistry,
elem = this[0],
_events = typeof events === "string" ? events.split(" ") : [events.type];
for (let endx = 0; endx < _events.length; endx++) {
const nsEvent = _events[endx].split("."),
ev = nsEvent[0],
namespace = nsEvent[1] || "global";
if (document !== undefined && namespace === "global") {
// trigger domevent
var evnt,
params = {
bubbles: true,
cancelable: true,
composed: true,
detail: arguments[1]
};
// The custom event that will be created
if (document.createEvent) {
try {
switch (ev) {
case "input":
params.inputType = "insertText";
evnt = new InputEvent(ev, params);
break;
default:
evnt = new CustomEvent(ev, params);
}
} catch (e) {
evnt = document.createEvent("CustomEvent");
evnt.initCustomEvent(
ev,
params.bubbles,
params.cancelable,
params.detail
);
}
if (events.type) extend(evnt, events);
elem.dispatchEvent(evnt);
} else {
evnt = document.createEventObject();
evnt.eventType = ev;
evnt.detail = arguments[1];
if (events.type) extend(evnt, events);
elem.fireEvent("on" + evnt.eventType, evnt);
}
} else if (eventRegistry[ev] !== undefined) {
arguments[0] = arguments[0].type
? arguments[0]
: DependencyLib.Event(arguments[0]);
arguments[0].detail = arguments.slice(1);
const registry = eventRegistry[ev],
handlers = namespace === "global" ? Object.values(registry).flat() : registry[namespace];
handlers.forEach(handler => handler.apply(elem, arguments));
}
}
}
return this;
const registry = eventRegistry[ev],
handlers =
namespace === "global"
? Object.values(registry).flat()
: registry[namespace];
handlers.forEach((handler) => handler.apply(elem, arguments));
}
}
}
return this;
}

View file

@ -1,58 +1,70 @@
export default function extend() {
let options, name, src, copy, copyIsArray, clone,
target = arguments[0] || {},
i = 1,
length = arguments.length,
deep = false;
let options,
name,
src,
copy,
copyIsArray,
clone,
target = arguments[0] || {},
i = 1,
length = arguments.length,
deep = false;
// Handle a deep copy situation
if (typeof target === "boolean") {
deep = target;
// Handle a deep copy situation
if (typeof target === "boolean") {
deep = target;
// Skip the boolean and the target
target = arguments[i] || {};
i++;
}
// Skip the boolean and the target
target = arguments[i] || {};
i++;
}
// Handle case when target is a string or something (possible in deep copy)
if (typeof target !== "object" && typeof target !== "function") {
target = {};
}
// Handle case when target is a string or something (possible in deep copy)
if (typeof target !== "object" && typeof target !== "function") {
target = {};
}
for (; i < length; i++) {
// Only deal with non-null/undefined values
if ((options = arguments[i]) != null) {
// Extend the base object
for (name in options) {
src = target[name];
copy = options[name];
for (; i < length; i++) {
// Only deal with non-null/undefined values
if ((options = arguments[i]) != null) {
// Extend the base object
for (name in options) {
src = target[name];
copy = options[name];
// Prevent never-ending loop
if (target === copy) {
continue;
}
// Prevent never-ending loop
if (target === copy) {
continue;
}
// Recurse if we're merging plain objects or arrays
if (deep && copy && (Object.prototype.toString.call(copy) === "[object Object]" || (copyIsArray = Array.isArray(copy)))) {
if (copyIsArray) {
copyIsArray = false;
clone = src && Array.isArray(src) ? src : [];
// Recurse if we're merging plain objects or arrays
if (
deep &&
copy &&
(Object.prototype.toString.call(copy) === "[object Object]" ||
(copyIsArray = Array.isArray(copy)))
) {
if (copyIsArray) {
copyIsArray = false;
clone = src && Array.isArray(src) ? src : [];
} else {
clone =
src && Object.prototype.toString.call(src) === "[object Object]"
? src
: {};
}
} else {
clone = src && Object.prototype.toString.call(src) === "[object Object]" ? src : {};
}
// Never move original objects, clone them
target[name] = extend(deep, clone, copy);
// Never move original objects, clone them
target[name] = extend(deep, clone, copy);
// Don't bring in undefined values
} else if (copy !== undefined) {
target[name] = copy;
}
}
}
}
// Don't bring in undefined values
} else if (copy !== undefined) {
target[name] = copy;
}
}
}
}
// Return the modified object
return target;
}
// Return the modified object
return target;
}

View file

@ -8,6 +8,6 @@
import jQuery from "jquery";
if (jQuery === undefined) {
throw "jQuery not loaded!";
throw new Error("jQuery not loaded!");
}
export default jQuery;
export default jQuery;

View file

@ -5,35 +5,40 @@
Licensed under the MIT license
*/
import extend from "./extend";
import window from "../global/window";
import data from "./data";
import { on, off, trigger, Event} from "./events";
import { on, off, trigger, Event } from "./events";
import extend from "./extend";
const document = window.document;
function DependencyLib(elem) {
if (elem instanceof DependencyLib) {
return elem;
}
if (!(this instanceof DependencyLib)) {
return new DependencyLib(elem);
}
if (elem !== undefined && elem !== null && elem !== window) {
this[0] = elem.nodeName ? elem : (elem[0] !== undefined && elem[0].nodeName ? elem[0] : document.querySelector(elem));
if (this[0] !== undefined && this[0] !== null) {
this[0].eventRegistry = this[0].eventRegistry || {};
}
}
if (elem instanceof DependencyLib) {
return elem;
}
if (!(this instanceof DependencyLib)) {
return new DependencyLib(elem);
}
if (elem !== undefined && elem !== null && elem !== window) {
this[0] = elem.nodeName
? elem
: elem[0] !== undefined && elem[0].nodeName
? elem[0]
: document.querySelector(elem);
if (this[0] !== undefined && this[0] !== null) {
this[0].eventRegistry = this[0].eventRegistry || {};
}
}
}
DependencyLib.prototype = {
on: on,
off: off,
trigger: trigger
on,
off,
trigger
};
//static
// static
DependencyLib.extend = extend;
DependencyLib.data = data;
DependencyLib.Event = Event;