1
0
mirror of https://github.com/flarum/core.git synced 2025-08-06 08:27:42 +02:00

forum: add colorthief - NOT color-thief-browser (outdated, same package)

This commit is contained in:
David Sevilla Martin
2020-03-22 11:52:08 -04:00
parent 88aa9fc038
commit 39dc303b80
5 changed files with 816 additions and 47 deletions

417
js/dist/forum.js vendored
View File

@@ -2003,6 +2003,398 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/source-map-loader/index.js!./node_modules/colorthief/dist/color-thief.umd.js":
/*!**********************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib??ref--5!./node_modules/source-map-loader!./node_modules/colorthief/dist/color-thief.umd.js ***!
\**********************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
!function (t, r) {
true ? module.exports = r() : undefined;
}(this, function () {
if (!t) var t = {
map: function map(t, r) {
var n = {};
return r ? t.map(function (t, o) {
return n.index = o, r.call(n, t);
}) : t.slice();
},
naturalOrder: function naturalOrder(t, r) {
return t < r ? -1 : t > r ? 1 : 0;
},
sum: function sum(t, r) {
var n = {};
return t.reduce(r ? function (t, o, e) {
return n.index = e, t + r.call(n, o);
} : function (t, r) {
return t + r;
}, 0);
},
max: function max(r, n) {
return Math.max.apply(null, n ? t.map(r, n) : r);
}
};
var r = function () {
var r = 5,
n = 8 - r,
o = 1e3;
function e(t, n, o) {
return (t << 2 * r) + (n << r) + o;
}
function i(t) {
var r = [],
n = !1;
function o() {
r.sort(t), n = !0;
}
return {
push: function push(t) {
r.push(t), n = !1;
},
peek: function peek(t) {
return n || o(), void 0 === t && (t = r.length - 1), r[t];
},
pop: function pop() {
return n || o(), r.pop();
},
size: function size() {
return r.length;
},
map: function map(t) {
return r.map(t);
},
debug: function debug() {
return n || o(), r;
}
};
}
function u(t, r, n, o, e, i, u) {
this.r1 = t, this.r2 = r, this.g1 = n, this.g2 = o, this.b1 = e, this.b2 = i, this.histo = u;
}
function a() {
this.vboxes = new i(function (r, n) {
return t.naturalOrder(r.vbox.count() * r.vbox.volume(), n.vbox.count() * n.vbox.volume());
});
}
function s(r, n) {
if (n.count()) {
var o = n.r2 - n.r1 + 1,
i = n.g2 - n.g1 + 1,
u = t.max([o, i, n.b2 - n.b1 + 1]);
if (1 == n.count()) return [n.copy()];
var a,
s,
h,
c,
f = 0,
v = [],
l = [];
if (u == o) for (a = n.r1; a <= n.r2; a++) {
for (c = 0, s = n.g1; s <= n.g2; s++) {
for (h = n.b1; h <= n.b2; h++) {
c += r[e(a, s, h)] || 0;
}
}
v[a] = f += c;
} else if (u == i) for (a = n.g1; a <= n.g2; a++) {
for (c = 0, s = n.r1; s <= n.r2; s++) {
for (h = n.b1; h <= n.b2; h++) {
c += r[e(s, a, h)] || 0;
}
}
v[a] = f += c;
} else for (a = n.b1; a <= n.b2; a++) {
for (c = 0, s = n.r1; s <= n.r2; s++) {
for (h = n.g1; h <= n.g2; h++) {
c += r[e(s, h, a)] || 0;
}
}
v[a] = f += c;
}
return v.forEach(function (t, r) {
l[r] = f - t;
}), function (t) {
var r,
o,
e,
i,
u,
s = t + "1",
h = t + "2",
c = 0;
for (a = n[s]; a <= n[h]; a++) {
if (v[a] > f / 2) {
for (e = n.copy(), i = n.copy(), u = (r = a - n[s]) <= (o = n[h] - a) ? Math.min(n[h] - 1, ~~(a + o / 2)) : Math.max(n[s], ~~(a - 1 - r / 2)); !v[u];) {
u++;
}
for (c = l[u]; !c && v[u - 1];) {
c = l[--u];
}
return e[h] = u, i[s] = e[h] + 1, [e, i];
}
}
}(u == o ? "r" : u == i ? "g" : "b");
}
}
return u.prototype = {
volume: function volume(t) {
return this._volume && !t || (this._volume = (this.r2 - this.r1 + 1) * (this.g2 - this.g1 + 1) * (this.b2 - this.b1 + 1)), this._volume;
},
count: function count(t) {
var r = this.histo;
if (!this._count_set || t) {
var n,
o,
i,
u = 0;
for (n = this.r1; n <= this.r2; n++) {
for (o = this.g1; o <= this.g2; o++) {
for (i = this.b1; i <= this.b2; i++) {
u += r[e(n, o, i)] || 0;
}
}
}
this._count = u, this._count_set = !0;
}
return this._count;
},
copy: function copy() {
return new u(this.r1, this.r2, this.g1, this.g2, this.b1, this.b2, this.histo);
},
avg: function avg(t) {
var n = this.histo;
if (!this._avg || t) {
var o,
i,
u,
a,
s = 0,
h = 1 << 8 - r,
c = 0,
f = 0,
v = 0;
for (i = this.r1; i <= this.r2; i++) {
for (u = this.g1; u <= this.g2; u++) {
for (a = this.b1; a <= this.b2; a++) {
s += o = n[e(i, u, a)] || 0, c += o * (i + .5) * h, f += o * (u + .5) * h, v += o * (a + .5) * h;
}
}
}
this._avg = s ? [~~(c / s), ~~(f / s), ~~(v / s)] : [~~(h * (this.r1 + this.r2 + 1) / 2), ~~(h * (this.g1 + this.g2 + 1) / 2), ~~(h * (this.b1 + this.b2 + 1) / 2)];
}
return this._avg;
},
contains: function contains(t) {
var r = t[0] >> n;
return gval = t[1] >> n, bval = t[2] >> n, r >= this.r1 && r <= this.r2 && gval >= this.g1 && gval <= this.g2 && bval >= this.b1 && bval <= this.b2;
}
}, a.prototype = {
push: function push(t) {
this.vboxes.push({
vbox: t,
color: t.avg()
});
},
palette: function palette() {
return this.vboxes.map(function (t) {
return t.color;
});
},
size: function size() {
return this.vboxes.size();
},
map: function map(t) {
for (var r = this.vboxes, n = 0; n < r.size(); n++) {
if (r.peek(n).vbox.contains(t)) return r.peek(n).color;
}
return this.nearest(t);
},
nearest: function nearest(t) {
for (var r, n, o, e = this.vboxes, i = 0; i < e.size(); i++) {
((n = Math.sqrt(Math.pow(t[0] - e.peek(i).color[0], 2) + Math.pow(t[1] - e.peek(i).color[1], 2) + Math.pow(t[2] - e.peek(i).color[2], 2))) < r || void 0 === r) && (r = n, o = e.peek(i).color);
}
return o;
},
forcebw: function forcebw() {
var r = this.vboxes;
r.sort(function (r, n) {
return t.naturalOrder(t.sum(r.color), t.sum(n.color));
});
var n = r[0].color;
n[0] < 5 && n[1] < 5 && n[2] < 5 && (r[0].color = [0, 0, 0]);
var o = r.length - 1,
e = r[o].color;
e[0] > 251 && e[1] > 251 && e[2] > 251 && (r[o].color = [255, 255, 255]);
}
}, {
quantize: function quantize(h, c) {
if (!h.length || c < 2 || c > 256) return !1;
var f = function (t) {
var o,
i = new Array(1 << 3 * r);
return t.forEach(function (t) {
o = e(t[0] >> n, t[1] >> n, t[2] >> n), i[o] = (i[o] || 0) + 1;
}), i;
}(h);
f.forEach(function () {});
var v = function (t, r) {
var o,
e,
i,
a = 1e6,
s = 0,
h = 1e6,
c = 0,
f = 1e6,
v = 0;
return t.forEach(function (t) {
(o = t[0] >> n) < a ? a = o : o > s && (s = o), (e = t[1] >> n) < h ? h = e : e > c && (c = e), (i = t[2] >> n) < f ? f = i : i > v && (v = i);
}), new u(a, s, h, c, f, v, r);
}(h, f),
l = new i(function (r, n) {
return t.naturalOrder(r.count(), n.count());
});
function g(t, r) {
for (var n, e = t.size(), i = 0; i < o;) {
if (e >= r) return;
if (i++ > o) return;
if ((n = t.pop()).count()) {
var u = s(f, n),
a = u[0],
h = u[1];
if (!a) return;
t.push(a), h && (t.push(h), e++);
} else t.push(n), i++;
}
}
l.push(v), g(l, .75 * c);
for (var p = new i(function (r, n) {
return t.naturalOrder(r.count() * r.volume(), n.count() * n.volume());
}); l.size();) {
p.push(l.pop());
}
g(p, c);
for (var d = new a(); p.size();) {
d.push(p.pop());
}
return d;
}
};
}().quantize,
n = function n(t) {
this.canvas = document.createElement("canvas"), this.context = this.canvas.getContext("2d"), this.width = this.canvas.width = t.width, this.height = this.canvas.height = t.height, this.context.drawImage(t, 0, 0, this.width, this.height);
};
n.prototype.getImageData = function () {
return this.context.getImageData(0, 0, this.width, this.height);
};
var o = function o() {};
return o.prototype.getColor = function (t, r) {
return void 0 === r && (r = 10), this.getPalette(t, 5, r)[0];
}, o.prototype.getPalette = function (t, o, e) {
var i = function (t) {
var r = t.colorCount,
n = t.quality;
if (void 0 !== r && Number.isInteger(r)) {
if (1 === r) throw new Error("colorCount should be between 2 and 20. To get one color, call getColor() instead of getPalette()");
r = Math.max(r, 2), r = Math.min(r, 20);
} else r = 10;
return void 0 === n || Number.isInteger(n) ? n = 10 : n < 1 && (n = 10), {
colorCount: r,
quality: n
};
}({
colorCount: o,
quality: e
}),
u = new n(t),
a = function (t, r, n) {
for (var o = t, e = [], i = 0, u = void 0, a = void 0, s = void 0, h = void 0, c = void 0; i < r; i += n) {
a = o[0 + (u = 4 * i)], s = o[u + 1], h = o[u + 2], (void 0 === (c = o[u + 3]) || c >= 125) && (a > 250 && s > 250 && h > 250 || e.push([a, s, h]));
}
return e;
}(u.getImageData().data, u.width * u.height, i.quality),
s = r(a, i.colorCount);
return s ? s.palette() : null;
}, o.prototype.getColorFromUrl = function (t, r, n) {
var o = document.createElement("img"),
e = this;
o.addEventListener("load", function () {
var i = e.getPalette(o, 5, n);
r(i[0], t);
}), o.src = t;
}, o.prototype.getImageData = function (t, r) {
var n = new XMLHttpRequest();
n.open("GET", t, !0), n.responseType = "arraybuffer", n.onload = function () {
if (200 == this.status) {
var t = new Uint8Array(this.response);
o = t.length;
for (var n = new Array(o), o = 0; o < t.length; o++) {
n[o] = String.fromCharCode(t[o]);
}
var e = n.join(""),
i = window.btoa(e);
r("data:image/png;base64," + i);
}
}, n.send();
}, o.prototype.getColorAsync = function (t, r, n) {
var o = this;
this.getImageData(t, function (t) {
var e = document.createElement("img");
e.addEventListener("load", function () {
var t = o.getPalette(e, 5, n);
r(t[0], this);
}), e.src = t;
});
}, o;
});
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/source-map-loader/index.js!./node_modules/dayjs/dayjs.min.js":
/*!******************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib??ref--5!./node_modules/source-map-loader!./node_modules/dayjs/dayjs.min.js ***!
@@ -3894,6 +4286,18 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/*global define:false */
/***/ }),
/***/ "./node_modules/expose-loader/index.js?ColorThief!./node_modules/colorthief/dist/color-thief.umd.js-exposed":
/*!*********************************************************************************************************!*\
!*** ./node_modules/expose-loader?ColorThief!./node_modules/colorthief/dist/color-thief.umd.js-exposed ***!
\*********************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(global) {module.exports = global["ColorThief"] = __webpack_require__(/*! -!./node_modules/babel-loader/lib??ref--5!./node_modules/source-map-loader!./color-thief.umd.js */ "./node_modules/babel-loader/lib/index.js?!./node_modules/source-map-loader/index.js!./node_modules/colorthief/dist/color-thief.umd.js");
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
/***/ }),
/***/ "./node_modules/expose-loader/index.js?Mousetrap!./node_modules/mousetrap/mousetrap.js-exposed":
/*!********************************************************************************************!*\
!*** ./node_modules/expose-loader?Mousetrap!./node_modules/mousetrap/mousetrap.js-exposed ***!
@@ -23976,17 +24380,20 @@ var WelcomeHero = /*#__PURE__*/function (_Component) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./app */ "./src/forum/app.ts");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "app", function() { return _app__WEBPACK_IMPORTED_MODULE_0__["default"]; });
/* harmony import */ var expose_loader_ColorThief_colorthief_dist_color_thief_umd__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! expose-loader?ColorThief!colorthief/dist/color-thief.umd */ "./node_modules/expose-loader/index.js?ColorThief!./node_modules/colorthief/dist/color-thief.umd.js-exposed");
/* harmony import */ var expose_loader_ColorThief_colorthief_dist_color_thief_umd__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(expose_loader_ColorThief_colorthief_dist_color_thief_umd__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./app */ "./src/forum/app.ts");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "app", function() { return _app__WEBPACK_IMPORTED_MODULE_1__["default"]; });
/* harmony import */ var _compat__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./compat */ "./src/forum/compat.ts");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "compat", function() { return _compat__WEBPACK_IMPORTED_MODULE_2__["default"]; });
/* harmony import */ var _compat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./compat */ "./src/forum/compat.ts");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "compat", function() { return _compat__WEBPACK_IMPORTED_MODULE_1__["default"]; });
// Export compat API
_compat__WEBPACK_IMPORTED_MODULE_1__["default"].app = _app__WEBPACK_IMPORTED_MODULE_0__["default"];
_compat__WEBPACK_IMPORTED_MODULE_2__["default"].app = _app__WEBPACK_IMPORTED_MODULE_1__["default"];
/***/ }),

File diff suppressed because one or more lines are too long