import {
__commonJS
} from "./chunk-2LSFTFF7.js";
// node_modules/.pnpm/tinymce@5.10.7/node_modules/tinymce/plugins/emoticons/plugin.js
var require_plugin = __commonJS({
"node_modules/.pnpm/tinymce@5.10.7/node_modules/tinymce/plugins/emoticons/plugin.js"() {
(function() {
"use strict";
var global$3 = tinymce.util.Tools.resolve("tinymce.PluginManager");
var eq = function(t) {
return function(a) {
return t === a;
};
};
var isNull = eq(null);
var noop = function() {
};
var constant = function(value2) {
return function() {
return value2;
};
};
var identity = function(x) {
return x;
};
var never = constant(false);
var always = constant(true);
var none = function() {
return NONE;
};
var NONE = function() {
var call = function(thunk) {
return thunk();
};
var id = identity;
var me = {
fold: function(n, _s) {
return n();
},
isSome: never,
isNone: always,
getOr: id,
getOrThunk: call,
getOrDie: function(msg) {
throw new Error(msg || "error: getOrDie called on none.");
},
getOrNull: constant(null),
getOrUndefined: constant(void 0),
or: id,
orThunk: call,
map: none,
each: noop,
bind: none,
exists: never,
forall: always,
filter: function() {
return none();
},
toArray: function() {
return [];
},
toString: constant("none()")
};
return me;
}();
var some = function(a) {
var constant_a = constant(a);
var self = function() {
return me;
};
var bind = function(f) {
return f(a);
};
var me = {
fold: function(n, s) {
return s(a);
},
isSome: always,
isNone: never,
getOr: constant_a,
getOrThunk: constant_a,
getOrDie: constant_a,
getOrNull: constant_a,
getOrUndefined: constant_a,
or: self,
orThunk: self,
map: function(f) {
return some(f(a));
},
each: function(f) {
f(a);
},
bind,
exists: bind,
forall: bind,
filter: function(f) {
return f(a) ? me : NONE;
},
toArray: function() {
return [a];
},
toString: function() {
return "some(" + a + ")";
}
};
return me;
};
var from = function(value2) {
return value2 === null || value2 === void 0 ? NONE : some(value2);
};
var Optional = {
some,
none,
from
};
var exists = function(xs, pred) {
for (var i = 0, len = xs.length; i < len; i++) {
var x = xs[i];
if (pred(x, i)) {
return true;
}
}
return false;
};
var map$1 = function(xs, f) {
var len = xs.length;
var r = new Array(len);
for (var i = 0; i < len; i++) {
var x = xs[i];
r[i] = f(x, i);
}
return r;
};
var each$1 = function(xs, f) {
for (var i = 0, len = xs.length; i < len; i++) {
var x = xs[i];
f(x, i);
}
};
var Cell = function(initial) {
var value2 = initial;
var get = function() {
return value2;
};
var set = function(v) {
value2 = v;
};
return {
get,
set
};
};
var last = function(fn, rate) {
var timer = null;
var cancel = function() {
if (!isNull(timer)) {
clearTimeout(timer);
timer = null;
}
};
var throttle = function() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
cancel();
timer = setTimeout(function() {
timer = null;
fn.apply(null, args);
}, rate);
};
return {
cancel,
throttle
};
};
var insertEmoticon = function(editor, ch) {
editor.insertContent(ch);
};
var __assign = function() {
__assign = Object.assign || function __assign2(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s)
if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var keys = Object.keys;
var hasOwnProperty = Object.hasOwnProperty;
var each = function(obj, f) {
var props = keys(obj);
for (var k = 0, len = props.length; k < len; k++) {
var i = props[k];
var x = obj[i];
f(x, i);
}
};
var map = function(obj, f) {
return tupleMap(obj, function(x, i) {
return {
k: i,
v: f(x, i)
};
});
};
var tupleMap = function(obj, f) {
var r = {};
each(obj, function(x, i) {
var tuple = f(x, i);
r[tuple.k] = tuple.v;
});
return r;
};
var has = function(obj, key) {
return hasOwnProperty.call(obj, key);
};
var shallow = function(old, nu) {
return nu;
};
var baseMerge = function(merger) {
return function() {
var objects = [];
for (var _i = 0; _i < arguments.length; _i++) {
objects[_i] = arguments[_i];
}
if (objects.length === 0) {
throw new Error("Can't merge zero objects");
}
var ret = {};
for (var j = 0; j < objects.length; j++) {
var curObject = objects[j];
for (var key in curObject) {
if (has(curObject, key)) {
ret[key] = merger(ret[key], curObject[key]);
}
}
}
return ret;
};
};
var merge = baseMerge(shallow);
var singleton = function(doRevoke) {
var subject = Cell(Optional.none());
var revoke = function() {
return subject.get().each(doRevoke);
};
var clear = function() {
revoke();
subject.set(Optional.none());
};
var isSet = function() {
return subject.get().isSome();
};
var get = function() {
return subject.get();
};
var set = function(s) {
revoke();
subject.set(Optional.some(s));
};
return {
clear,
isSet,
get,
set
};
};
var value = function() {
var subject = singleton(noop);
var on = function(f) {
return subject.get().each(f);
};
return __assign(__assign({}, subject), { on });
};
var checkRange = function(str, substr, start) {
return substr === "" || str.length >= substr.length && str.substr(start, start + substr.length) === substr;
};
var contains = function(str, substr) {
return str.indexOf(substr) !== -1;
};
var startsWith = function(str, prefix) {
return checkRange(str, prefix, 0);
};
var global$2 = tinymce.util.Tools.resolve("tinymce.Resource");
var global$1 = tinymce.util.Tools.resolve("tinymce.util.Delay");
var global = tinymce.util.Tools.resolve("tinymce.util.Promise");
var DEFAULT_ID = "tinymce.plugins.emoticons";
var getEmoticonDatabase = function(editor) {
return editor.getParam("emoticons_database", "emojis", "string");
};
var getEmoticonDatabaseUrl = function(editor, pluginUrl) {
var database = getEmoticonDatabase(editor);
return editor.getParam("emoticons_database_url", pluginUrl + "/js/" + database + editor.suffix + ".js", "string");
};
var getEmoticonDatabaseId = function(editor) {
return editor.getParam("emoticons_database_id", DEFAULT_ID, "string");
};
var getAppendedEmoticons = function(editor) {
return editor.getParam("emoticons_append", {}, "object");
};
var getEmotionsImageUrl = function(editor) {
return editor.getParam("emoticons_images_url", "https://twemoji.maxcdn.com/v/13.0.1/72x72/", "string");
};
var ALL_CATEGORY = "All";
var categoryNameMap = {
symbols: "Symbols",
people: "People",
animals_and_nature: "Animals and Nature",
food_and_drink: "Food and Drink",
activity: "Activity",
travel_and_places: "Travel and Places",
objects: "Objects",
flags: "Flags",
user: "User Defined"
};
var translateCategory = function(categories, name) {
return has(categories, name) ? categories[name] : name;
};
var getUserDefinedEmoticons = function(editor) {
var userDefinedEmoticons = getAppendedEmoticons(editor);
return map(userDefinedEmoticons, function(value2) {
return __assign({
keywords: [],
category: "user"
}, value2);
});
};
var initDatabase = function(editor, databaseUrl, databaseId) {
var categories = value();
var all = value();
var emojiImagesUrl = getEmotionsImageUrl(editor);
var getEmoji = function(lib) {
if (startsWith(lib.char, "= max;
};
});
for (var i = 0; i < list.length; i++) {
if (pattern.length === 0 || emojiMatches(list[i], lowerCasePattern)) {
matches.push({
value: list[i].char,
text: list[i].title,
icon: list[i].char
});
if (reachedLimit(matches.length)) {
break;
}
}
}
return matches;
};
var patternName = "pattern";
var open = function(editor, database) {
var initialState = {
pattern: "",
results: emojisFrom(database.listAll(), "", Optional.some(300))
};
var currentTab = Cell(ALL_CATEGORY);
var scan = function(dialogApi2) {
var dialogData = dialogApi2.getData();
var category = currentTab.get();
var candidates = database.listCategory(category);
var results = emojisFrom(candidates, dialogData[patternName], category === ALL_CATEGORY ? Optional.some(300) : Optional.none());
dialogApi2.setData({ results });
};
var updateFilter = last(function(dialogApi2) {
scan(dialogApi2);
}, 200);
var searchField = {
label: "Search",
type: "input",
name: patternName
};
var resultsField = {
type: "collection",
name: "results"
};
var getInitialState = function() {
var body = {
type: "tabpanel",
tabs: map$1(database.listCategories(), function(cat) {
return {
title: cat,
name: cat,
items: [
searchField,
resultsField
]
};
})
};
return {
title: "Emoticons",
size: "normal",
body,
initialData: initialState,
onTabChange: function(dialogApi2, details) {
currentTab.set(details.newTabName);
updateFilter.throttle(dialogApi2);
},
onChange: updateFilter.throttle,
onAction: function(dialogApi2, actionData) {
if (actionData.name === "results") {
insertEmoticon(editor, actionData.value);
dialogApi2.close();
}
},
buttons: [{
type: "cancel",
text: "Close",
primary: true
}]
};
};
var dialogApi = editor.windowManager.open(getInitialState());
dialogApi.focus(patternName);
if (!database.hasLoaded()) {
dialogApi.block("Loading emoticons...");
database.waitForLoad().then(function() {
dialogApi.redial(getInitialState());
updateFilter.throttle(dialogApi);
dialogApi.focus(patternName);
dialogApi.unblock();
}).catch(function(_err) {
dialogApi.redial({
title: "Emoticons",
body: {
type: "panel",
items: [{
type: "alertbanner",
level: "error",
icon: "warning",
text: "
Could not load emoticons
" }] }, buttons: [{ type: "cancel", text: "Close", primary: true }], initialData: { pattern: "", results: [] } }); dialogApi.focus(patternName); dialogApi.unblock(); }); } }; var register$1 = function(editor, database) { editor.addCommand("mceEmoticons", function() { return open(editor, database); }); }; var setup = function(editor) { editor.on("PreInit", function() { editor.parser.addAttributeFilter("data-emoticon", function(nodes) { each$1(nodes, function(node) { node.attr("data-mce-resize", "false"); node.attr("data-mce-placeholder", "1"); }); }); }); }; var init = function(editor, database) { editor.ui.registry.addAutocompleter("emoticons", { ch: ":", columns: "auto", minChars: 2, fetch: function(pattern, maxResults) { return database.waitForLoad().then(function() { var candidates = database.listAll(); return emojisFrom(candidates, pattern, Optional.some(maxResults)); }); }, onAction: function(autocompleteApi, rng, value2) { editor.selection.setRng(rng); editor.insertContent(value2); autocompleteApi.hide(); } }); }; var register = function(editor) { var onAction = function() { return editor.execCommand("mceEmoticons"); }; editor.ui.registry.addButton("emoticons", { tooltip: "Emoticons", icon: "emoji", onAction }); editor.ui.registry.addMenuItem("emoticons", { text: "Emoticons...", icon: "emoji", onAction }); }; function Plugin() { global$3.add("emoticons", function(editor, pluginUrl) { var databaseUrl = getEmoticonDatabaseUrl(editor, pluginUrl); var databaseId = getEmoticonDatabaseId(editor); var database = initDatabase(editor, databaseUrl, databaseId); register$1(editor, database); register(editor); init(editor, database); setup(editor); }); } Plugin(); })(); } }); // node_modules/.pnpm/tinymce@5.10.7/node_modules/tinymce/plugins/emoticons/index.js require_plugin(); //# sourceMappingURL=tinymce_plugins_emoticons.js.map