@bigbinary/neeto-editor 1.47.49 → 1.47.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,7 +16,7 @@ var jsxRuntime = require('react/jsx-runtime');
16
16
  var injectCss = require('./chunk-vQvjPR2x.cjs.js');
17
17
  var utils = require('./chunk-OJSm0BS5.cjs.js');
18
18
  var ReactDOM = require('react-dom/server');
19
- var common = require('./chunk-Bi1rI-2R.cjs.js');
19
+ var common = require('./chunk-OZAH-T0Z.cjs.js');
20
20
  var constants$1 = require('./chunk-0DRyiTvN.cjs.js');
21
21
  var Y = require('yjs');
22
22
  var Megaphone = require('@bigbinary/neeto-icons/misc/Megaphone');
@@ -14106,6 +14106,91 @@ var SelectionDecoration = Document.extend({
14106
14106
  }
14107
14107
  });
14108
14108
 
14109
+ var calculateScore = function calculateScore(input, target) {
14110
+ var inputLower = input.toLowerCase();
14111
+ var targetLower = target.toLowerCase();
14112
+ var substringIndex = targetLower.indexOf(inputLower);
14113
+ if (substringIndex !== -1) {
14114
+ return 1.0 - substringIndex / targetLower.length * 0.1;
14115
+ }
14116
+ var inputIndex = 0;
14117
+ var targetIndex = 0;
14118
+ var firstMatchIndex = -1;
14119
+ var consecutiveMatches = 0;
14120
+ var maxConsecutive = 0;
14121
+ while (inputIndex < inputLower.length && targetIndex < targetLower.length) {
14122
+ if (inputLower[inputIndex] === targetLower[targetIndex]) {
14123
+ if (firstMatchIndex === -1) {
14124
+ firstMatchIndex = targetIndex;
14125
+ }
14126
+ consecutiveMatches++;
14127
+ inputIndex++;
14128
+ } else {
14129
+ maxConsecutive = Math.max(maxConsecutive, consecutiveMatches);
14130
+ consecutiveMatches = 0;
14131
+ }
14132
+ targetIndex++;
14133
+ }
14134
+ maxConsecutive = Math.max(maxConsecutive, consecutiveMatches);
14135
+ if (inputIndex < inputLower.length) {
14136
+ return 0;
14137
+ }
14138
+ var positionScore = 1.0 - firstMatchIndex / targetLower.length;
14139
+ var consecutiveBonus = maxConsecutive / inputLower.length;
14140
+ var lengthRatio = inputLower.length / targetLower.length;
14141
+ var score = positionScore * 0.6 + consecutiveBonus * 0.2 + lengthRatio * 0.2;
14142
+ return Math.min(score, 0.89);
14143
+ };
14144
+ var fuzzySearch = function fuzzySearch(items, query) {
14145
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
14146
+ limit: common.FUZZY_SEARCH_DEFAULT_LIMIT
14147
+ };
14148
+ var _options$limit = options.limit,
14149
+ limit = _options$limit === void 0 ? common.FUZZY_SEARCH_DEFAULT_LIMIT : _options$limit,
14150
+ _options$keys = options.keys,
14151
+ keys = _options$keys === void 0 ? common.DEFAULT_SEARCH_KEYS : _options$keys;
14152
+ if (!query || typeof query !== "string" || !items || ramda.isEmpty(items)) {
14153
+ return items ? items.slice(0, limit) : [];
14154
+ }
14155
+ var trimmedQuery = query.trim();
14156
+ if (!trimmedQuery) {
14157
+ return items ? items.slice(0, limit) : [];
14158
+ }
14159
+ var fieldAccessors = keys.map(function (key) {
14160
+ return {
14161
+ getValue: typeof key === "string" ? ramda.prop(key) : ramda.prop(key.name),
14162
+ weight: typeof key === "string" ? 1 : key.weight || 1
14163
+ };
14164
+ });
14165
+ var results = items.reduce(function (acc, item) {
14166
+ var bestScore = fieldAccessors.reduce(function (maxScore, accessor) {
14167
+ var fieldValue = accessor.getValue(item);
14168
+ if (ramda.isNil(fieldValue)) return maxScore;
14169
+ var fieldString = String(fieldValue);
14170
+ var score = calculateScore(trimmedQuery, fieldString);
14171
+ if (score <= 0) return maxScore;
14172
+ var weightedScore = score * accessor.weight;
14173
+ return weightedScore > maxScore ? weightedScore : maxScore;
14174
+ }, 0);
14175
+ if (bestScore > 0) {
14176
+ acc.push({
14177
+ item: item,
14178
+ score: bestScore
14179
+ });
14180
+ }
14181
+ return acc;
14182
+ }, []);
14183
+ results.sort(function (a, b) {
14184
+ if (Math.abs(a.score - b.score) < 0.001) {
14185
+ var aTitle = a.item.title || a.item.name || "";
14186
+ var bTitle = b.item.title || b.item.name || "";
14187
+ return aTitle.localeCompare(bTitle);
14188
+ }
14189
+ return b.score - a.score;
14190
+ });
14191
+ return ramda.pluck("item", results.slice(0, limit));
14192
+ };
14193
+
14109
14194
  function ownKeys$a(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14110
14195
  function _objectSpread$a(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$a(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14111
14196
  function _callSuper$1(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$1() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
@@ -14737,10 +14822,10 @@ var SlashCommands = {
14737
14822
  },
14738
14823
  items: function items(_ref3) {
14739
14824
  var query = _ref3.query;
14740
- var filteredItems = commandItems.filter(function (_ref4) {
14741
- var title = _ref4.title;
14742
- return title.toLowerCase().includes(query.toLowerCase());
14743
- });
14825
+ if (!query) {
14826
+ return commandItems.slice(0, 10);
14827
+ }
14828
+ var filteredItems = fuzzySearch(commandItems, query);
14744
14829
  return ramda.isEmpty(filteredItems) ? [NO_RESULT_MENU_ITEM] : filteredItems;
14745
14830
  },
14746
14831
  render: function render() {