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:
417
js/dist/forum.js
vendored
417
js/dist/forum.js
vendored
@@ -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"];
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
2
js/dist/forum.js.map
vendored
2
js/dist/forum.js.map
vendored
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user