@elementor/editor-global-classes 4.2.0-870 → 4.2.0-872

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/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { StyleDefinitionID } from '@elementor/editor-styles';
2
+ import { StyleDefinitionID, StyleDefinition } from '@elementor/editor-styles';
3
3
 
4
4
  type ClassManagerPanelEmbeddedProps = {
5
5
  onRequestClose: () => void | Promise<void>;
@@ -20,6 +20,6 @@ type GlobalClassIndexEntry = {
20
20
 
21
21
  declare function addDocumentClasses(documentId: number): Promise<void>;
22
22
 
23
- declare function createLabelsForClasses(entries: GlobalClassIndexEntry[]): Record<StyleDefinitionID, string>;
23
+ declare function createLabelsForClasses(entries: Array<GlobalClassIndexEntry | StyleDefinition>): Record<StyleDefinitionID, string>;
24
24
 
25
25
  export { ClassManagerPanelEmbedded, type ClassManagerPanelEmbeddedProps, GLOBAL_CLASSES_URI, type GlobalClassIndexEntry, addDocumentClasses, createLabelsForClasses, init, loadExistingClasses };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { StyleDefinitionID } from '@elementor/editor-styles';
2
+ import { StyleDefinitionID, StyleDefinition } from '@elementor/editor-styles';
3
3
 
4
4
  type ClassManagerPanelEmbeddedProps = {
5
5
  onRequestClose: () => void | Promise<void>;
@@ -20,6 +20,6 @@ type GlobalClassIndexEntry = {
20
20
 
21
21
  declare function addDocumentClasses(documentId: number): Promise<void>;
22
22
 
23
- declare function createLabelsForClasses(entries: GlobalClassIndexEntry[]): Record<StyleDefinitionID, string>;
23
+ declare function createLabelsForClasses(entries: Array<GlobalClassIndexEntry | StyleDefinition>): Record<StyleDefinitionID, string>;
24
24
 
25
25
  export { ClassManagerPanelEmbedded, type ClassManagerPanelEmbeddedProps, GLOBAL_CLASSES_URI, type GlobalClassIndexEntry, addDocumentClasses, createLabelsForClasses, init, loadExistingClasses };
package/dist/index.js CHANGED
@@ -282,6 +282,20 @@ var slice = (0, import_store.__createSlice)({
282
282
  state.classLabels[id2] = previewClassData.label;
283
283
  }
284
284
  });
285
+ },
286
+ setOrderWithoutHistory(state, { payload }) {
287
+ state.data.order = payload;
288
+ },
289
+ updateAfterTemplateImport(state, {
290
+ payload
291
+ }) {
292
+ state.initialData.frontend.items = { ...state.initialData.frontend.items, ...payload.addedItems };
293
+ state.initialData.frontend.order = [...state.initialData.frontend.order, ...payload.addedIdsOrder];
294
+ state.initialData.preview.items = { ...state.initialData.preview.items, ...payload.addedItems };
295
+ state.initialData.preview.order = [...state.initialData.preview.order, ...payload.addedIdsOrder];
296
+ state.data.items = { ...state.data.items, ...payload.addedItems };
297
+ state.data.order = [...state.data.order, ...payload.addedIdsOrder];
298
+ state.classLabels = { ...state.classLabels, ...payload.addedClassLabels };
285
299
  }
286
300
  }
287
301
  });
@@ -2030,8 +2044,9 @@ var useFilteredCssClasses = () => {
2030
2044
  [cssClasses]
2031
2045
  );
2032
2046
  const filteredClasses = (0, import_react8.useMemo)(() => {
2033
- if (searchValue.length > 1) {
2034
- return lowercaseLabels.filter((cssClass) => cssClass.lowerLabel.includes(searchValue.toLowerCase()));
2047
+ const normalizedSearch = searchValue.replace(/[^a-zA-Z0-9_-]/g, "").toLowerCase();
2048
+ if (normalizedSearch.length > 1) {
2049
+ return lowercaseLabels.filter((cssClass) => cssClass.lowerLabel.includes(normalizedSearch));
2035
2050
  }
2036
2051
  return cssClasses;
2037
2052
  }, [searchValue, cssClasses, lowercaseLabels]);
@@ -2529,7 +2544,7 @@ async function fetchAndMergeClasses() {
2529
2544
  }
2530
2545
 
2531
2546
  // src/global-classes-styles-provider.ts
2532
- var MAX_CLASSES = 5e3;
2547
+ var MAX_CLASSES = 1e3;
2533
2548
  var GLOBAL_CLASSES_PROVIDER_KEY = "global-classes";
2534
2549
  var PREGENERATED_LINK_PATTERN = /^global-([0-9]+-)?(preview|frontend)-[a-zA-Z_-]+-css$/;
2535
2550
  var globalClassesStylesProvider = (0, import_editor_styles_repository2.createStylesProvider)({
@@ -2672,7 +2687,7 @@ var import_editor_mcp2 = require("@elementor/editor-mcp");
2672
2687
  var import_editor_panels2 = require("@elementor/editor-panels");
2673
2688
  var import_editor_styles_repository5 = require("@elementor/editor-styles-repository");
2674
2689
  var import_editor_v1_adapters8 = require("@elementor/editor-v1-adapters");
2675
- var import_store31 = require("@elementor/store");
2690
+ var import_store32 = require("@elementor/store");
2676
2691
 
2677
2692
  // src/components/class-manager/class-manager-button.tsx
2678
2693
  var React20 = __toESM(require("react"));
@@ -2820,8 +2835,20 @@ var import_store28 = require("@elementor/store");
2820
2835
  function GlobalStylesImportListener() {
2821
2836
  const dispatch7 = (0, import_store28.__useDispatch)();
2822
2837
  (0, import_react11.useEffect)(() => {
2823
- const handleGlobalStylesImported = () => {
2824
- loadCurrentDocumentClasses();
2838
+ const handleGlobalStylesImported = async (event) => {
2839
+ const customEvent = event;
2840
+ const globalClasses = customEvent.detail?.global_classes;
2841
+ if (!globalClasses?.added_items_order || !globalClasses?.added_items || globalClasses?.added_items_order?.length === 0) {
2842
+ loadCurrentDocumentClasses();
2843
+ return;
2844
+ }
2845
+ dispatch7(
2846
+ slice.actions.updateAfterTemplateImport({
2847
+ addedItems: globalClasses.added_items,
2848
+ addedIdsOrder: globalClasses.added_items_order,
2849
+ addedClassLabels: createLabelsForClasses(Object.values(globalClasses.added_items))
2850
+ })
2851
+ );
2825
2852
  };
2826
2853
  window.addEventListener(import_editor_canvas.GLOBAL_STYLES_IMPORTED_EVENT, handleGlobalStylesImported);
2827
2854
  return () => {
@@ -2831,16 +2858,29 @@ function GlobalStylesImportListener() {
2831
2858
  return null;
2832
2859
  }
2833
2860
 
2834
- // src/components/open-panel-from-url.tsx
2861
+ // src/components/open-panel-from-event.tsx
2835
2862
  var import_react12 = require("react");
2863
+ var EVENT_OPEN_GLOBAL_CLASSES_MANAGER = "elementor/open-global-classes-manager";
2864
+ function OpenPanelFromEvent() {
2865
+ const { open } = usePanelActions();
2866
+ (0, import_react12.useEffect)(() => {
2867
+ const handler2 = () => open();
2868
+ window.addEventListener(EVENT_OPEN_GLOBAL_CLASSES_MANAGER, handler2);
2869
+ return () => window.removeEventListener(EVENT_OPEN_GLOBAL_CLASSES_MANAGER, handler2);
2870
+ }, [open]);
2871
+ return null;
2872
+ }
2873
+
2874
+ // src/components/open-panel-from-url.tsx
2875
+ var import_react13 = require("react");
2836
2876
  var import_editor_v1_adapters4 = require("@elementor/editor-v1-adapters");
2837
2877
  var ACTIVE_PANEL_PARAM = "active-panel";
2838
2878
  var PANEL_ID = "global-classes-manager";
2839
2879
  var DEFAULT_PANEL_ROUTE = "panel/elements";
2840
2880
  function OpenPanelFromUrl() {
2841
2881
  const { open } = usePanelActions();
2842
- const hasOpened = (0, import_react12.useRef)(false);
2843
- (0, import_react12.useEffect)(() => {
2882
+ const hasOpened = (0, import_react13.useRef)(false);
2883
+ (0, import_react13.useEffect)(() => {
2844
2884
  const urlParams = new URLSearchParams(window.location.search);
2845
2885
  const activePanel = urlParams.get(ACTIVE_PANEL_PARAM);
2846
2886
  if (activePanel !== PANEL_ID) {
@@ -2861,10 +2901,10 @@ function OpenPanelFromUrl() {
2861
2901
  }
2862
2902
 
2863
2903
  // src/components/populate-store.tsx
2864
- var import_react13 = require("react");
2904
+ var import_react14 = require("react");
2865
2905
  var import_editor_v1_adapters5 = require("@elementor/editor-v1-adapters");
2866
2906
  function PopulateStore() {
2867
- (0, import_react13.useEffect)(() => {
2907
+ (0, import_react14.useEffect)(() => {
2868
2908
  loadCurrentDocumentClasses();
2869
2909
  (0, import_editor_v1_adapters5.registerDataHook)("after", "editor/documents/attach-preview", async () => {
2870
2910
  await loadCurrentDocumentClasses();
@@ -3300,14 +3340,14 @@ var initMcpIntegration = (reg, canvasMcpEntry) => {
3300
3340
  };
3301
3341
 
3302
3342
  // src/sync-with-document.tsx
3303
- var import_react14 = require("react");
3343
+ var import_react15 = require("react");
3304
3344
  var import_editor_v1_adapters7 = require("@elementor/editor-v1-adapters");
3305
3345
 
3306
3346
  // src/sync-with-document-save.ts
3307
3347
  var import_editor_current_user3 = require("@elementor/editor-current-user");
3308
3348
  var import_editor_documents6 = require("@elementor/editor-documents");
3309
3349
  var import_editor_v1_adapters6 = require("@elementor/editor-v1-adapters");
3310
- var import_store29 = require("@elementor/store");
3350
+ var import_store30 = require("@elementor/store");
3311
3351
  var pendingSave = null;
3312
3352
  function syncWithDocumentSave(panelActions) {
3313
3353
  const unsubscribe = syncDirtyState();
@@ -3316,7 +3356,7 @@ function syncWithDocumentSave(panelActions) {
3316
3356
  return unsubscribe;
3317
3357
  }
3318
3358
  function syncDirtyState() {
3319
- return (0, import_store29.__subscribeWithSelector)(selectIsDirty, () => {
3359
+ return (0, import_store30.__subscribeWithSelector)(selectIsDirty, () => {
3320
3360
  if (!isDirty()) {
3321
3361
  return;
3322
3362
  }
@@ -3359,13 +3399,13 @@ function bindBeforeSaveTemplateAction() {
3359
3399
  }));
3360
3400
  }
3361
3401
  function isDirty() {
3362
- return selectIsDirty((0, import_store29.__getState)());
3402
+ return selectIsDirty((0, import_store30.__getState)());
3363
3403
  }
3364
3404
 
3365
3405
  // src/sync-with-document.tsx
3366
3406
  function SyncWithDocumentSave() {
3367
3407
  const { open: openClassPanel } = usePanelActions();
3368
- (0, import_react14.useEffect)(() => {
3408
+ (0, import_react15.useEffect)(() => {
3369
3409
  const unsubscribe = (0, import_editor_v1_adapters7.__privateListenTo)((0, import_editor_v1_adapters7.v1ReadyEvent)(), () => {
3370
3410
  const open = (0, import_editor_v1_adapters7.isExperimentActive)("e_editor_design_system_panel") ? () => {
3371
3411
  window.dispatchEvent(new CustomEvent("elementor/open-global-classes-manager"));
@@ -3379,7 +3419,7 @@ function SyncWithDocumentSave() {
3379
3419
 
3380
3420
  // src/init.ts
3381
3421
  function init() {
3382
- (0, import_store31.__registerSlice)(slice);
3422
+ (0, import_store32.__registerSlice)(slice);
3383
3423
  if (!(0, import_editor_v1_adapters8.isExperimentActive)("e_editor_design_system_panel")) {
3384
3424
  (0, import_editor_panels2.__registerPanel)(panel);
3385
3425
  }
@@ -3405,6 +3445,10 @@ function init() {
3405
3445
  id: "global-classes-open-panel-from-url",
3406
3446
  component: OpenPanelFromUrl
3407
3447
  });
3448
+ (0, import_editor.injectIntoLogic)({
3449
+ id: "global-classes-open-panel-from-event",
3450
+ component: OpenPanelFromEvent
3451
+ });
3408
3452
  }
3409
3453
  (0, import_editor_editing_panel2.injectIntoCssClassConvert)({
3410
3454
  id: "global-classes-convert-from-local-class",