magic-editor-x 1.5.0 → 1.5.1
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.
- package/dist/_chunks/{App-3CjSGQyL.js → App-DImBvISP.js} +59 -59
- package/dist/_chunks/{App-CKlB5p92.mjs → App-iNfbV7cz.mjs} +32 -32
- package/dist/_chunks/{CustomBlocksPage-CnJxygIw.js → CustomBlocksPage-Cj-0TTUs.js} +12 -12
- package/dist/_chunks/{LicensePage-vJxKYZGQ.js → LicensePage-CmvILX9m.js} +43 -43
- package/dist/_chunks/{LicensePage-B2STSez2.mjs → LicensePage-gLRoo8WJ.mjs} +38 -38
- package/dist/_chunks/{LiveCollaborationPanel-D70o6EGf.js → LiveCollaborationPanel-BFybu8h0.js} +7 -7
- package/dist/_chunks/{LiveCollaborationPanel-uLIJs5z_.mjs → LiveCollaborationPanel-CVgl4IyR.mjs} +3 -3
- package/dist/_chunks/{Settings-CdGL1OCi.mjs → Settings-ButYcfrm.mjs} +82 -82
- package/dist/_chunks/Settings-BzGqgrxD.js +440 -0
- package/dist/_chunks/{getTranslation--JcqVOd5.js → getTranslation-BADoesEn.js} +19120 -12315
- package/dist/_chunks/{getTranslation-bLklCCaI.mjs → getTranslation-D3h3Z3gU.mjs} +18708 -11903
- package/dist/_chunks/index-BXBnwuRw.js +2158 -0
- package/dist/_chunks/index-BvEdg518.mjs +2159 -0
- package/dist/_chunks/{index-CRALSDLD.js → index-DDFAuQNT.js} +181 -181
- package/dist/_chunks/{index-CdFFlQdx.mjs → index-DEi6nwfM.mjs} +33 -33
- package/dist/_chunks/{tools-uudZx91W.mjs → tools-BXzd0lx5.mjs} +3 -3
- package/dist/_chunks/{tools-BSMn5LLQ.js → tools-Q0uwDS9E.js} +10 -10
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +2 -2
- package/dist/server/index.js +142 -135
- package/dist/server/index.mjs +142 -135
- package/package.json +7 -7
- package/dist/_chunks/Settings-CwSNO4_t.js +0 -440
- package/dist/_chunks/index-CAPc_Y1F.mjs +0 -2551
- package/dist/_chunks/index-CPs6WJDY.js +0 -2550
package/dist/server/index.mjs
CHANGED
|
@@ -10711,73 +10711,76 @@ function envFn(key, defaultValue) {
|
|
|
10711
10711
|
function getKey(key) {
|
|
10712
10712
|
return process.env[key] ?? "";
|
|
10713
10713
|
}
|
|
10714
|
-
|
|
10715
|
-
|
|
10716
|
-
|
|
10717
|
-
|
|
10718
|
-
|
|
10719
|
-
|
|
10720
|
-
|
|
10721
|
-
|
|
10722
|
-
|
|
10723
|
-
|
|
10724
|
-
|
|
10725
|
-
|
|
10726
|
-
|
|
10727
|
-
|
|
10728
|
-
|
|
10729
|
-
|
|
10730
|
-
|
|
10731
|
-
|
|
10732
|
-
|
|
10733
|
-
|
|
10734
|
-
|
|
10735
|
-
|
|
10736
|
-
|
|
10737
|
-
|
|
10738
|
-
|
|
10739
|
-
|
|
10740
|
-
|
|
10741
|
-
throw new Error(`Invalid json environment variable ${key}: ${error2.message}`);
|
|
10742
|
-
}
|
|
10743
|
-
throw error2;
|
|
10744
|
-
}
|
|
10745
|
-
},
|
|
10746
|
-
array(key, defaultValue) {
|
|
10747
|
-
if (!___default.has(process.env, key)) {
|
|
10748
|
-
return defaultValue;
|
|
10749
|
-
}
|
|
10750
|
-
let value = getKey(key);
|
|
10751
|
-
if (value.startsWith("[") && value.endsWith("]")) {
|
|
10752
|
-
value = value.substring(1, value.length - 1);
|
|
10753
|
-
}
|
|
10754
|
-
return value.split(",").map((v) => {
|
|
10755
|
-
return ___default.trim(___default.trim(v, " "), '"');
|
|
10756
|
-
});
|
|
10757
|
-
},
|
|
10758
|
-
date(key, defaultValue) {
|
|
10759
|
-
if (!___default.has(process.env, key)) {
|
|
10760
|
-
return defaultValue;
|
|
10761
|
-
}
|
|
10762
|
-
return new Date(getKey(key));
|
|
10763
|
-
},
|
|
10764
|
-
/**
|
|
10765
|
-
* Gets a value from env that matches oneOf provided values
|
|
10766
|
-
* @param {string} key
|
|
10767
|
-
* @param {string[]} expectedValues
|
|
10768
|
-
* @param {string|undefined} defaultValue
|
|
10769
|
-
* @returns {string|undefined}
|
|
10770
|
-
*/
|
|
10771
|
-
oneOf(key, expectedValues, defaultValue) {
|
|
10772
|
-
if (!expectedValues) {
|
|
10773
|
-
throw new Error(`env.oneOf requires expectedValues`);
|
|
10774
|
-
}
|
|
10775
|
-
if (defaultValue && !expectedValues.includes(defaultValue)) {
|
|
10776
|
-
throw new Error(`env.oneOf requires defaultValue to be included in expectedValues`);
|
|
10714
|
+
function int$2(key, defaultValue) {
|
|
10715
|
+
if (!___default.has(process.env, key)) {
|
|
10716
|
+
return defaultValue;
|
|
10717
|
+
}
|
|
10718
|
+
return parseInt(getKey(key), 10);
|
|
10719
|
+
}
|
|
10720
|
+
function float$1(key, defaultValue) {
|
|
10721
|
+
if (!___default.has(process.env, key)) {
|
|
10722
|
+
return defaultValue;
|
|
10723
|
+
}
|
|
10724
|
+
return parseFloat(getKey(key));
|
|
10725
|
+
}
|
|
10726
|
+
function bool$1(key, defaultValue) {
|
|
10727
|
+
if (!___default.has(process.env, key)) {
|
|
10728
|
+
return defaultValue;
|
|
10729
|
+
}
|
|
10730
|
+
return getKey(key) === "true";
|
|
10731
|
+
}
|
|
10732
|
+
function json$1(key, defaultValue) {
|
|
10733
|
+
if (!___default.has(process.env, key)) {
|
|
10734
|
+
return defaultValue;
|
|
10735
|
+
}
|
|
10736
|
+
try {
|
|
10737
|
+
return JSON.parse(getKey(key));
|
|
10738
|
+
} catch (error2) {
|
|
10739
|
+
if (error2 instanceof Error) {
|
|
10740
|
+
throw new Error(`Invalid json environment variable ${key}: ${error2.message}`);
|
|
10777
10741
|
}
|
|
10778
|
-
|
|
10779
|
-
|
|
10742
|
+
throw error2;
|
|
10743
|
+
}
|
|
10744
|
+
}
|
|
10745
|
+
function array$2(key, defaultValue) {
|
|
10746
|
+
if (!___default.has(process.env, key)) {
|
|
10747
|
+
return defaultValue;
|
|
10748
|
+
}
|
|
10749
|
+
let value = getKey(key);
|
|
10750
|
+
if (value.startsWith("[") && value.endsWith("]")) {
|
|
10751
|
+
value = value.substring(1, value.length - 1);
|
|
10780
10752
|
}
|
|
10753
|
+
return value.split(",").map((v) => {
|
|
10754
|
+
return ___default.trim(___default.trim(v, " "), '"');
|
|
10755
|
+
});
|
|
10756
|
+
}
|
|
10757
|
+
function date$3(key, defaultValue) {
|
|
10758
|
+
if (!___default.has(process.env, key)) {
|
|
10759
|
+
return defaultValue;
|
|
10760
|
+
}
|
|
10761
|
+
return new Date(getKey(key));
|
|
10762
|
+
}
|
|
10763
|
+
function oneOf(key, expectedValues, defaultValue) {
|
|
10764
|
+
if (!expectedValues) {
|
|
10765
|
+
throw new Error(`env.oneOf requires expectedValues`);
|
|
10766
|
+
}
|
|
10767
|
+
if (defaultValue && !expectedValues.includes(defaultValue)) {
|
|
10768
|
+
throw new Error(`env.oneOf requires defaultValue to be included in expectedValues`);
|
|
10769
|
+
}
|
|
10770
|
+
const rawValue = env(key, defaultValue);
|
|
10771
|
+
if (rawValue !== void 0 && expectedValues.includes(rawValue)) {
|
|
10772
|
+
return rawValue;
|
|
10773
|
+
}
|
|
10774
|
+
return defaultValue;
|
|
10775
|
+
}
|
|
10776
|
+
const utils$9 = {
|
|
10777
|
+
int: int$2,
|
|
10778
|
+
float: float$1,
|
|
10779
|
+
bool: bool$1,
|
|
10780
|
+
json: json$1,
|
|
10781
|
+
array: array$2,
|
|
10782
|
+
date: date$3,
|
|
10783
|
+
oneOf
|
|
10781
10784
|
};
|
|
10782
10785
|
const env = Object.assign(envFn, utils$9);
|
|
10783
10786
|
var lodash_min = { exports: {} };
|
|
@@ -14784,6 +14787,7 @@ const getNonVisibleAttributes = (model) => {
|
|
|
14784
14787
|
return ___default.uniq([
|
|
14785
14788
|
ID_ATTRIBUTE$4,
|
|
14786
14789
|
DOC_ID_ATTRIBUTE$4,
|
|
14790
|
+
PUBLISHED_AT_ATTRIBUTE$1,
|
|
14787
14791
|
...getTimestamps(model),
|
|
14788
14792
|
...nonVisibleAttributes
|
|
14789
14793
|
]);
|
|
@@ -14858,6 +14862,12 @@ const getComponentAttributes = (schema2) => {
|
|
|
14858
14862
|
return acc;
|
|
14859
14863
|
}, []);
|
|
14860
14864
|
};
|
|
14865
|
+
const getMediaAttributes = (schema2) => {
|
|
14866
|
+
return ___default.reduce(schema2.attributes, (acc, attr, attrName) => {
|
|
14867
|
+
if (isMediaAttribute(attr)) acc.push(attrName);
|
|
14868
|
+
return acc;
|
|
14869
|
+
}, []);
|
|
14870
|
+
};
|
|
14861
14871
|
const getScalarAttributes = (schema2) => {
|
|
14862
14872
|
return ___default.reduce(schema2.attributes, (acc, attr, attrName) => {
|
|
14863
14873
|
if (isScalarAttribute(attr)) acc.push(attrName);
|
|
@@ -14883,6 +14893,7 @@ const contentTypes$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defi
|
|
|
14883
14893
|
getContentTypeRoutePrefix,
|
|
14884
14894
|
getCreatorFields,
|
|
14885
14895
|
getDoesAttributeRequireValidation,
|
|
14896
|
+
getMediaAttributes,
|
|
14886
14897
|
getNonVisibleAttributes,
|
|
14887
14898
|
getNonWritableAttributes,
|
|
14888
14899
|
getOptions,
|
|
@@ -15062,6 +15073,16 @@ const providerFactory = (options = {}) => {
|
|
|
15062
15073
|
}
|
|
15063
15074
|
};
|
|
15064
15075
|
};
|
|
15076
|
+
const parallelWithOrderedErrors = async (promises) => {
|
|
15077
|
+
const results = await Promise.allSettled(promises);
|
|
15078
|
+
for (let i2 = 0; i2 < results.length; i2 += 1) {
|
|
15079
|
+
const result = results[i2];
|
|
15080
|
+
if (result.status === "rejected") {
|
|
15081
|
+
throw result.reason;
|
|
15082
|
+
}
|
|
15083
|
+
}
|
|
15084
|
+
return results.map((r) => r.value);
|
|
15085
|
+
};
|
|
15065
15086
|
const traverseEntity = async (visitor2, options, entity) => {
|
|
15066
15087
|
const { path: path2 = {
|
|
15067
15088
|
raw: null,
|
|
@@ -15162,15 +15183,13 @@ const traverseEntity = async (visitor2, options, entity) => {
|
|
|
15162
15183
|
const isMorphRelation = attribute.relation.toLowerCase().startsWith("morph");
|
|
15163
15184
|
const method = isMorphRelation ? traverseMorphRelationTarget : traverseRelationTarget(getModel(attribute.target));
|
|
15164
15185
|
if (fp.isArray(value)) {
|
|
15165
|
-
|
|
15166
|
-
for (let i3 = 0; i3 < value.length; i3 += 1) {
|
|
15186
|
+
copy[key] = await parallelWithOrderedErrors(value.map((item, i3) => {
|
|
15167
15187
|
const arrayPath = {
|
|
15168
15188
|
...newPath,
|
|
15169
15189
|
rawWithIndices: fp.isNil(newPath.rawWithIndices) ? `${i3}` : `${newPath.rawWithIndices}.${i3}`
|
|
15170
15190
|
};
|
|
15171
|
-
|
|
15172
|
-
}
|
|
15173
|
-
copy[key] = res;
|
|
15191
|
+
return method(visitor2, arrayPath, item);
|
|
15192
|
+
}));
|
|
15174
15193
|
} else {
|
|
15175
15194
|
copy[key] = await method(visitor2, newPath, value);
|
|
15176
15195
|
}
|
|
@@ -15184,15 +15203,13 @@ const traverseEntity = async (visitor2, options, entity) => {
|
|
|
15184
15203
|
path: newPath
|
|
15185
15204
|
};
|
|
15186
15205
|
if (fp.isArray(value)) {
|
|
15187
|
-
|
|
15188
|
-
for (let i3 = 0; i3 < value.length; i3 += 1) {
|
|
15206
|
+
copy[key] = await parallelWithOrderedErrors(value.map((item, i3) => {
|
|
15189
15207
|
const arrayPath = {
|
|
15190
15208
|
...newPath,
|
|
15191
15209
|
rawWithIndices: fp.isNil(newPath.rawWithIndices) ? `${i3}` : `${newPath.rawWithIndices}.${i3}`
|
|
15192
15210
|
};
|
|
15193
|
-
|
|
15194
|
-
}
|
|
15195
|
-
copy[key] = res;
|
|
15211
|
+
return traverseMediaTarget(visitor2, arrayPath, item);
|
|
15212
|
+
}));
|
|
15196
15213
|
} else {
|
|
15197
15214
|
copy[key] = await traverseMediaTarget(visitor2, newPath, value);
|
|
15198
15215
|
}
|
|
@@ -15207,15 +15224,13 @@ const traverseEntity = async (visitor2, options, entity) => {
|
|
|
15207
15224
|
};
|
|
15208
15225
|
const targetSchema = getModel(attribute.component);
|
|
15209
15226
|
if (fp.isArray(value)) {
|
|
15210
|
-
|
|
15211
|
-
for (let i3 = 0; i3 < value.length; i3 += 1) {
|
|
15227
|
+
copy[key] = await parallelWithOrderedErrors(value.map((item, i3) => {
|
|
15212
15228
|
const arrayPath = {
|
|
15213
15229
|
...newPath,
|
|
15214
15230
|
rawWithIndices: fp.isNil(newPath.rawWithIndices) ? `${i3}` : `${newPath.rawWithIndices}.${i3}`
|
|
15215
15231
|
};
|
|
15216
|
-
|
|
15217
|
-
}
|
|
15218
|
-
copy[key] = res;
|
|
15232
|
+
return traverseComponent(visitor2, arrayPath, targetSchema, item);
|
|
15233
|
+
}));
|
|
15219
15234
|
} else {
|
|
15220
15235
|
copy[key] = await traverseComponent(visitor2, newPath, targetSchema, value);
|
|
15221
15236
|
}
|
|
@@ -15228,15 +15243,13 @@ const traverseEntity = async (visitor2, options, entity) => {
|
|
|
15228
15243
|
attribute,
|
|
15229
15244
|
path: newPath
|
|
15230
15245
|
};
|
|
15231
|
-
|
|
15232
|
-
for (let i3 = 0; i3 < value.length; i3 += 1) {
|
|
15246
|
+
copy[key] = await parallelWithOrderedErrors(value.map((item, i3) => {
|
|
15233
15247
|
const arrayPath = {
|
|
15234
15248
|
...newPath,
|
|
15235
15249
|
rawWithIndices: fp.isNil(newPath.rawWithIndices) ? `${i3}` : `${newPath.rawWithIndices}.${i3}`
|
|
15236
15250
|
};
|
|
15237
|
-
|
|
15238
|
-
}
|
|
15239
|
-
copy[key] = res;
|
|
15251
|
+
return visitDynamicZoneEntry(visitor2, arrayPath, item);
|
|
15252
|
+
}));
|
|
15240
15253
|
continue;
|
|
15241
15254
|
}
|
|
15242
15255
|
}
|
|
@@ -15982,6 +15995,23 @@ const generateInstallId = (projectId, installId) => {
|
|
|
15982
15995
|
return require$$1.randomUUID();
|
|
15983
15996
|
}
|
|
15984
15997
|
};
|
|
15998
|
+
const createModelCache = (getModelFn) => {
|
|
15999
|
+
const cache = /* @__PURE__ */ new Map();
|
|
16000
|
+
return {
|
|
16001
|
+
getModel(uid) {
|
|
16002
|
+
const cached2 = cache.get(uid);
|
|
16003
|
+
if (cached2) {
|
|
16004
|
+
return cached2;
|
|
16005
|
+
}
|
|
16006
|
+
const model = getModelFn(uid);
|
|
16007
|
+
cache.set(uid, model);
|
|
16008
|
+
return model;
|
|
16009
|
+
},
|
|
16010
|
+
clear() {
|
|
16011
|
+
cache.clear();
|
|
16012
|
+
}
|
|
16013
|
+
};
|
|
16014
|
+
};
|
|
15985
16015
|
var map$2;
|
|
15986
16016
|
try {
|
|
15987
16017
|
map$2 = Map;
|
|
@@ -17481,27 +17511,11 @@ Cache.prototype.set = function(key, value) {
|
|
|
17481
17511
|
return this._values[key] = value;
|
|
17482
17512
|
};
|
|
17483
17513
|
var SPLIT_REGEX = /[^.^\]^[]+|(?=\[\]|\.\.)/g, DIGIT_REGEX = /^\d+$/, LEAD_DIGIT_REGEX = /^\d/, SPEC_CHAR_REGEX = /[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g, CLEAN_QUOTES_REGEX = /^\s*(['"]?)(.*?)(\1)\s*$/, MAX_CACHE_SIZE = 512;
|
|
17484
|
-
var pathCache = new Cache(MAX_CACHE_SIZE)
|
|
17514
|
+
var pathCache = new Cache(MAX_CACHE_SIZE);
|
|
17515
|
+
new Cache(MAX_CACHE_SIZE);
|
|
17516
|
+
var getCache = new Cache(MAX_CACHE_SIZE);
|
|
17485
17517
|
var propertyExpr = {
|
|
17486
|
-
Cache,
|
|
17487
17518
|
split,
|
|
17488
|
-
normalizePath,
|
|
17489
|
-
setter: function(path2) {
|
|
17490
|
-
var parts = normalizePath(path2);
|
|
17491
|
-
return setCache.get(path2) || setCache.set(path2, function setter(obj, value) {
|
|
17492
|
-
var index2 = 0;
|
|
17493
|
-
var len = parts.length;
|
|
17494
|
-
var data = obj;
|
|
17495
|
-
while (index2 < len - 1) {
|
|
17496
|
-
var part = parts[index2];
|
|
17497
|
-
if (part === "__proto__" || part === "constructor" || part === "prototype") {
|
|
17498
|
-
return obj;
|
|
17499
|
-
}
|
|
17500
|
-
data = data[parts[index2++]];
|
|
17501
|
-
}
|
|
17502
|
-
data[parts[index2]] = value;
|
|
17503
|
-
});
|
|
17504
|
-
},
|
|
17505
17519
|
getter: function(path2, safe) {
|
|
17506
17520
|
var parts = normalizePath(path2);
|
|
17507
17521
|
return getCache.get(path2) || getCache.set(path2, function getter(data) {
|
|
@@ -17513,11 +17527,6 @@ var propertyExpr = {
|
|
|
17513
17527
|
return data;
|
|
17514
17528
|
});
|
|
17515
17529
|
},
|
|
17516
|
-
join: function(segments) {
|
|
17517
|
-
return segments.reduce(function(path2, part) {
|
|
17518
|
-
return path2 + (isQuoted(part) || DIGIT_REGEX.test(part) ? "[" + part + "]" : (path2 ? "." : "") + part);
|
|
17519
|
-
}, "");
|
|
17520
|
-
},
|
|
17521
17530
|
forEach: function(path2, cb, thisArg) {
|
|
17522
17531
|
forEach(Array.isArray(path2) ? path2 : split(path2), cb, thisArg);
|
|
17523
17532
|
}
|
|
@@ -36691,6 +36700,7 @@ const dist = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty
|
|
|
36691
36700
|
augmentSchema,
|
|
36692
36701
|
contentTypes: contentTypes$1,
|
|
36693
36702
|
createContentApiRoutesFactory,
|
|
36703
|
+
createModelCache,
|
|
36694
36704
|
dates,
|
|
36695
36705
|
env,
|
|
36696
36706
|
errors: errors$1,
|
|
@@ -38201,7 +38211,7 @@ var accessService$1 = ({ strapi: strapi2 }) => {
|
|
|
38201
38211
|
try {
|
|
38202
38212
|
const permissions = await strapi2.documents("plugin::magic-editor-x.collab-permission").findMany({
|
|
38203
38213
|
filters: {
|
|
38204
|
-
user: {
|
|
38214
|
+
user: { documentId: user.documentId }
|
|
38205
38215
|
}
|
|
38206
38216
|
});
|
|
38207
38217
|
logger2.info("[Access Service] Found permissions:", permissions?.length || 0);
|
|
@@ -38251,7 +38261,9 @@ var accessService$1 = ({ strapi: strapi2 }) => {
|
|
|
38251
38261
|
return { allowed: false, reason: "permission-required", role: null };
|
|
38252
38262
|
},
|
|
38253
38263
|
/**
|
|
38254
|
-
*
|
|
38264
|
+
* Returns role level (higher = more permissions)
|
|
38265
|
+
* @param {string} role - Role name (viewer, editor, owner)
|
|
38266
|
+
* @returns {number} Role level (1-3)
|
|
38255
38267
|
*/
|
|
38256
38268
|
getRoleLevel(role) {
|
|
38257
38269
|
const levels = { viewer: 1, editor: 2, owner: 3 };
|
|
@@ -38302,7 +38314,7 @@ var accessService$1 = ({ strapi: strapi2 }) => {
|
|
|
38302
38314
|
}
|
|
38303
38315
|
const permissions = await strapi2.documents("plugin::magic-editor-x.collab-permission").findMany({
|
|
38304
38316
|
filters: {
|
|
38305
|
-
user: {
|
|
38317
|
+
user: { documentId: userId }
|
|
38306
38318
|
}
|
|
38307
38319
|
});
|
|
38308
38320
|
if (!permissions || permissions.length === 0) {
|
|
@@ -38476,7 +38488,7 @@ var snapshotService$1 = ({ strapi: strapi2 }) => {
|
|
|
38476
38488
|
};
|
|
38477
38489
|
};
|
|
38478
38490
|
const name = "magic-editor-x";
|
|
38479
|
-
const version = "1.
|
|
38491
|
+
const version = "1.5.0";
|
|
38480
38492
|
const description = "Advanced block-based editor for Strapi v5 with Editor.js, Media Library integration, and real-time collaboration support";
|
|
38481
38493
|
const keywords = [
|
|
38482
38494
|
"strapi",
|
|
@@ -38562,24 +38574,24 @@ const devDependencies = {
|
|
|
38562
38574
|
"@semantic-release/github": "^11.0.1",
|
|
38563
38575
|
"@semantic-release/npm": "^12.0.1",
|
|
38564
38576
|
"@semantic-release/release-notes-generator": "^14.0.1",
|
|
38565
|
-
"@strapi/design-system": "^2.0.
|
|
38566
|
-
"@strapi/icons": "^2.0.
|
|
38577
|
+
"@strapi/design-system": "^2.0.2",
|
|
38578
|
+
"@strapi/icons": "^2.0.2",
|
|
38567
38579
|
"@strapi/sdk-plugin": "^5.3.2",
|
|
38568
|
-
"@strapi/strapi": "^5.
|
|
38580
|
+
"@strapi/strapi": "^5.36.0",
|
|
38569
38581
|
prettier: "^3.7.3",
|
|
38570
38582
|
react: "^18.3.1",
|
|
38571
38583
|
"react-dom": "^18.3.1",
|
|
38572
38584
|
"react-router-dom": "^6.30.2",
|
|
38573
38585
|
"semantic-release": "^25.0.2",
|
|
38574
|
-
"styled-components": "^6.
|
|
38586
|
+
"styled-components": "^6.3.8"
|
|
38575
38587
|
};
|
|
38576
38588
|
const peerDependencies = {
|
|
38577
38589
|
"@strapi/sdk-plugin": "^5.3.2",
|
|
38578
|
-
"@strapi/strapi": "^5.
|
|
38590
|
+
"@strapi/strapi": "^5.36.0",
|
|
38579
38591
|
react: "^18.3.1",
|
|
38580
38592
|
"react-dom": "^18.3.1",
|
|
38581
38593
|
"react-router-dom": "^6.30.2",
|
|
38582
|
-
"styled-components": "^6.
|
|
38594
|
+
"styled-components": "^6.3.8"
|
|
38583
38595
|
};
|
|
38584
38596
|
const overrides = {
|
|
38585
38597
|
prismjs: "^1.30.0"
|
|
@@ -39122,27 +39134,22 @@ const { logger } = utils$a;
|
|
|
39122
39134
|
const getCustomBlockUID = () => "plugin::magic-editor-x.custom-block";
|
|
39123
39135
|
var customBlockService$1 = ({ strapi: strapi2 }) => ({
|
|
39124
39136
|
/**
|
|
39125
|
-
* Count blocks by type
|
|
39137
|
+
* Count blocks by type using native count() method
|
|
39126
39138
|
* @returns {Promise<object>} Block counts by type
|
|
39127
39139
|
*/
|
|
39128
39140
|
async countBlocks() {
|
|
39129
39141
|
try {
|
|
39130
|
-
const
|
|
39131
|
-
|
|
39132
|
-
|
|
39133
|
-
|
|
39134
|
-
|
|
39135
|
-
|
|
39136
|
-
|
|
39142
|
+
const [total, embedded] = await Promise.all([
|
|
39143
|
+
strapi2.documents(getCustomBlockUID()).count(),
|
|
39144
|
+
strapi2.documents(getCustomBlockUID()).count({
|
|
39145
|
+
filters: { blockType: "embedded-entry" }
|
|
39146
|
+
})
|
|
39147
|
+
]);
|
|
39148
|
+
return {
|
|
39149
|
+
simple: total - embedded,
|
|
39150
|
+
"embedded-entry": embedded,
|
|
39151
|
+
total
|
|
39137
39152
|
};
|
|
39138
|
-
allBlocks.forEach((block) => {
|
|
39139
|
-
if (block.blockType === "embedded-entry") {
|
|
39140
|
-
counts["embedded-entry"]++;
|
|
39141
|
-
} else {
|
|
39142
|
-
counts.simple++;
|
|
39143
|
-
}
|
|
39144
|
-
});
|
|
39145
|
-
return counts;
|
|
39146
39153
|
} catch (error2) {
|
|
39147
39154
|
logger.error("[CustomBlockService] Error counting blocks:", error2);
|
|
39148
39155
|
throw error2;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "magic-editor-x",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.1",
|
|
4
4
|
"description": "Advanced block-based editor for Strapi v5 with Editor.js, Media Library integration, and real-time collaboration support",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"strapi",
|
|
@@ -86,24 +86,24 @@
|
|
|
86
86
|
"@semantic-release/github": "^11.0.1",
|
|
87
87
|
"@semantic-release/npm": "^12.0.1",
|
|
88
88
|
"@semantic-release/release-notes-generator": "^14.0.1",
|
|
89
|
-
"@strapi/design-system": "^2.0.
|
|
90
|
-
"@strapi/icons": "^2.0.
|
|
89
|
+
"@strapi/design-system": "^2.0.2",
|
|
90
|
+
"@strapi/icons": "^2.0.2",
|
|
91
91
|
"@strapi/sdk-plugin": "^5.3.2",
|
|
92
|
-
"@strapi/strapi": "^5.
|
|
92
|
+
"@strapi/strapi": "^5.36.0",
|
|
93
93
|
"prettier": "^3.7.3",
|
|
94
94
|
"react": "^18.3.1",
|
|
95
95
|
"react-dom": "^18.3.1",
|
|
96
96
|
"react-router-dom": "^6.30.2",
|
|
97
97
|
"semantic-release": "^25.0.2",
|
|
98
|
-
"styled-components": "^6.
|
|
98
|
+
"styled-components": "^6.3.8"
|
|
99
99
|
},
|
|
100
100
|
"peerDependencies": {
|
|
101
101
|
"@strapi/sdk-plugin": "^5.3.2",
|
|
102
|
-
"@strapi/strapi": "^5.
|
|
102
|
+
"@strapi/strapi": "^5.36.0",
|
|
103
103
|
"react": "^18.3.1",
|
|
104
104
|
"react-dom": "^18.3.1",
|
|
105
105
|
"react-router-dom": "^6.30.2",
|
|
106
|
-
"styled-components": "^6.
|
|
106
|
+
"styled-components": "^6.3.8"
|
|
107
107
|
},
|
|
108
108
|
"overrides": {
|
|
109
109
|
"prismjs": "^1.30.0"
|