@emailmaker/filemanager 0.10.96 → 0.10.98

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/file-manager.js CHANGED
@@ -356,13 +356,14 @@ const FolderTree = ({ selectedFolder, onSelect, onExpand, generateMenuItems, fet
356
356
  }
357
357
  }
358
358
  }, [defaultExpandAll, mode, generateMenuItems, getAllFolderKeys, controlledExpandedKeys]);
359
- const handleTreeSelect = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(async (selectedKeys) => {
359
+ const handleTreeSelect = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)((selectedKeys) => {
360
360
  const key = selectedKeys[0];
361
361
  if (!key || key === 'empty' || key.endsWith('_input'))
362
362
  return;
363
+ // onSelect (FolderSidebar.handleTreeSelect) сам вызывает fetchChildFolders(key)
364
+ // внутри — здесь его вызывать повторно не нужно.
363
365
  onSelect === null || onSelect === void 0 ? void 0 : onSelect(selectedKeys);
364
- await (fetchChildFolders === null || fetchChildFolders === void 0 ? void 0 : fetchChildFolders(key === 'folders' ? null : key));
365
- }, [onSelect, fetchChildFolders]);
366
+ }, [onSelect]);
366
367
  const handleTreeExpand = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(async (keys, info) => {
367
368
  var _a;
368
369
  setExpandedKeys(keys);
@@ -422,7 +423,13 @@ const FolderTree = ({ selectedFolder, onSelect, onExpand, generateMenuItems, fet
422
423
  return (0,jsx_runtime.jsx)(ExpandFolderIcon, { size: 20, strokeWidth: config === null || config === void 0 ? void 0 : config.iconStrokeWidth });
423
424
  };
424
425
  const currentFolderIcon = renderCurrentFolderIcon();
425
- const title = ((0,jsx_runtime.jsxs)("div", { className: `${FolderTree_FolderTree_module.folderItemContainer} folder-item-container`, onClick: () => !isDisabled && onClickHandle(item.key), style: {
426
+ const title = ((0,jsx_runtime.jsxs)("div", { className: `${FolderTree_FolderTree_module.folderItemContainer} folder-item-container`, onClick: event => {
427
+ // Гасим всплытие: иначе клик по заголовку узла долетает и до нативного
428
+ // onSelect antd Tree, и handleTreeSelect срабатывает дважды на один клик.
429
+ event.stopPropagation();
430
+ if (!isDisabled)
431
+ onClickHandle(item.key);
432
+ }, style: {
426
433
  opacity: isDisabled ? 0.5 : 1,
427
434
  cursor: isDisabled ? 'not-allowed' : 'pointer',
428
435
  }, children: [(0,jsx_runtime.jsxs)("div", { className: FolderTree_FolderTree_module.folderLabel, children: [item.icon !== undefined ? item.icon : currentFolderIcon, (0,jsx_runtime.jsx)("span", { className: FolderTree_FolderTree_module.folderLabelItem, children: item.label })] }), showFileCounts && ((0,jsx_runtime.jsx)("div", { className: FolderTree_FolderTree_module.fileCount, title: filesCount === null
@@ -436,10 +443,16 @@ const FolderTree = ({ selectedFolder, onSelect, onExpand, generateMenuItems, fet
436
443
  };
437
444
  };
438
445
  const isRootExpanded = expandedKeys.includes('folders');
439
- const rootTitle = ((0,jsx_runtime.jsx)("div", { className: FolderTree_FolderTree_module.foldersTitle, onClick: () => onClickHandle('folders'), children: (0,jsx_runtime.jsxs)("div", { className: FolderTree_FolderTree_module.foldersTitleItem, children: [isRootExpanded ? ((0,jsx_runtime.jsx)(CollapseFolderIcon, { size: 20, strokeWidth: config === null || config === void 0 ? void 0 : config.iconStrokeWidth })) : ((0,jsx_runtime.jsx)(ExpandFolderIcon, { size: 20, strokeWidth: config === null || config === void 0 ? void 0 : config.iconStrokeWidth })), (0,jsx_runtime.jsx)("span", { className: `${FolderTree_FolderTree_module.folderLabelItem} folder-label-item`, children: ((_a = sanitizedMenuItems[0]) === null || _a === void 0 ? void 0 : _a.key) === 'folders' ? sanitizedMenuItems[0].label : t('Folders') })] }) }));
446
+ const rootTitle = ((0,jsx_runtime.jsx)("div", { className: FolderTree_FolderTree_module.foldersTitle, onClick: event => {
447
+ event.stopPropagation();
448
+ onClickHandle('folders');
449
+ }, children: (0,jsx_runtime.jsxs)("div", { className: FolderTree_FolderTree_module.foldersTitleItem, children: [isRootExpanded ? ((0,jsx_runtime.jsx)(CollapseFolderIcon, { size: 20, strokeWidth: config === null || config === void 0 ? void 0 : config.iconStrokeWidth })) : ((0,jsx_runtime.jsx)(ExpandFolderIcon, { size: 20, strokeWidth: config === null || config === void 0 ? void 0 : config.iconStrokeWidth })), (0,jsx_runtime.jsx)("span", { className: `${FolderTree_FolderTree_module.folderLabelItem} folder-label-item`, children: ((_a = sanitizedMenuItems[0]) === null || _a === void 0 ? void 0 : _a.key) === 'folders' ? sanitizedMenuItems[0].label : t('Folders') })] }) }));
440
450
  const buildTrashNode = () => ({
441
451
  key: 'Trash',
442
- title: ((0,jsx_runtime.jsx)("div", { className: FolderTree_FolderTree_module.foldersTitle, onClick: () => onClickHandle('Trash'), children: (0,jsx_runtime.jsxs)("div", { className: FolderTree_FolderTree_module.foldersTitleItem, children: [(0,jsx_runtime.jsx)(icons_.Trash03, { size: 20, strokeWidth: config === null || config === void 0 ? void 0 : config.iconStrokeWidth }), (0,jsx_runtime.jsx)("span", { className: FolderTree_FolderTree_module.folderLabelItem, children: t('Trash') })] }) })),
452
+ title: ((0,jsx_runtime.jsx)("div", { className: FolderTree_FolderTree_module.foldersTitle, onClick: event => {
453
+ event.stopPropagation();
454
+ onClickHandle('Trash');
455
+ }, children: (0,jsx_runtime.jsxs)("div", { className: FolderTree_FolderTree_module.foldersTitleItem, children: [(0,jsx_runtime.jsx)(icons_.Trash03, { size: 20, strokeWidth: config === null || config === void 0 ? void 0 : config.iconStrokeWidth }), (0,jsx_runtime.jsx)("span", { className: FolderTree_FolderTree_module.folderLabelItem, children: t('Trash') })] }) })),
443
456
  children: undefined,
444
457
  });
445
458
  if (isEmpty) {
@@ -17092,7 +17105,7 @@ var ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = __webpack_require__(1354);
17092
17105
  var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(6314);
17093
17106
  var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);
17094
17107
  // Module
17095
- ___CSS_LOADER_EXPORT___.push([module.id, `.ImageStock-module__stockTab__nLVOT{height:100%;min-height:0}.ImageStock-module__stockTab__nLVOT .img{max-width:none;max-height:none;border-radius:0}.ImageStock-module__stockTab__nLVOT .ant-divider-horizontal.ant-divider-with-text::before .ant-divider-horizontal.ant-divider-with-text::after{transform:none}.ImageStock-module__stockSearchInput__KpIug{padding:0;width:640px;transition:all 200ms ease;margin:auto auto 24px}.ImageStock-module__searchOutputWrapper__W7BMj{height:100%;min-height:0;overflow:hidden}.ImageStock-module__divider__BbtaV{margin-bottom:calc(var(--marginLG)*1px);border-color:var(--colorBorder)}.ImageStock-module__search__DKxrP{max-width:100%}.ImageStock-module__searchResults__ZGOZf{width:100%}.ImageStock-module__searchResults__ZGOZf .ImageStock-module__stockSearchInput__KpIug{width:100%}.ImageStock-module__searchResults__ZGOZf label{height:calc(var(--formControlHeight)*1px);line-height:calc(var(--formControlHeight)*1px)}.ImageStock-module__virtualCanvas__WmymP{position:relative;width:100%}.ImageStock-module__blocksSearchDividerWrapper__Jopqt{margin:0}.ImageStock-module__scrollableDiv__LrQPg{width:100%;height:100%;overflow:auto;overflow-x:hidden;box-sizing:border-box;line-height:0;display:flex;flex-direction:column;align-items:center;padding:24px}.ImageStock-module__myMasonryGrid__iYrl6{display:flex;width:auto;text-align:center;gap:calc(var(--marginLG)*1px)}.ImageStock-module__myMasonryGridColumn__Tjc1a{background-clip:padding-box}.ImageStock-module__listItem__Zi1py{cursor:pointer;position:relative;transition:all .3s ease;border:1px solid #f0f2f5;margin-bottom:20px;display:inline-block;border-radius:6px;min-height:100px;max-height:100px;max-width:inherit;overflow:hidden;background:#f0f2f5}.ImageStock-module__listItem__Zi1py .ImageStock-module__overlayImage__rdVIc{position:absolute;bottom:10px;right:10px;width:110px;height:40px;background-size:cover;opacity:0;transition:opacity .5s ease}.ImageStock-module__listItem__Zi1py .ant-spin{font-size:20px;color:#f0f2f5;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.ImageStock-module__listItem__Zi1py img{display:block;border-radius:6px;height:auto;object-fit:contain;opacity:0;transition:opacity .5s ease-in-out}.ImageStock-module__listItem__Zi1py.ImageStock-module__loaded__U4oz8{max-height:1000px;border:1px solid #d9d9d9}.ImageStock-module__listItem__Zi1py.ImageStock-module__loaded__U4oz8 img{opacity:1;height:100%;width:100%;margin:auto}.ImageStock-module__listItem__Zi1py.ImageStock-module__loaded__U4oz8 .ImageStock-module__loadedImage__heBOD{opacity:.5}.ImageStock-module__listItem__Zi1py:hover{box-shadow:0 1px 2px -2px rgba(0,0,0,.16),0 3px 6px 0 rgba(0,0,0,.12),0 5px 12px 4px rgba(0,0,0,.09)}.ImageStock-module__listItem__Zi1py:hover p.ImageStock-module__creatorInfo__xFXkA{opacity:1}.ImageStock-module__listItem__Zi1py:hover .ImageStock-module__overlayImage__rdVIc{opacity:1}.ImageStock-module__listItem__Zi1py p.ImageStock-module__creatorInfo__xFXkA{position:absolute;border-radius:0 0 6px 0;bottom:0;right:0;margin:0;background-color:rgba(0,0,0,.5);color:#fff;padding:5px;font-size:10px;opacity:0;line-height:1.2}.ImageStock-module__listItem__Zi1py p.ImageStock-module__creatorInfo__xFXkA:hover a{color:#fff;text-decoration:underline}.ImageStock-module__listItem__Zi1py p.ImageStock-module__creatorInfo__xFXkA a{color:#fff;text-decoration:none}.ImageStock-module__stockColorFilter__YNDk1{display:flex}.ImageStock-module__stockColorFilter__YNDk1 label,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio]{border-radius:6px !important;width:24px;height:24px;margin:4px 4px;padding:0;font-size:0;border-width:1px}.ImageStock-module__stockColorFilter__YNDk1 label::before,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio]::before{display:none}.ImageStock-module__stockColorFilter__YNDk1 label.ImageStock-module__allColors__qJDDJ,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio].ImageStock-module__allColors__qJDDJ{background-image:linear-gradient(135deg, #ff0000, #ff7f00, #ffff00, #00ff00, #0000ff, #8b00ff)}.ImageStock-module__stockColorFilter__YNDk1 label.ImageStock-module__blackColor__OphMv,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio].ImageStock-module__blackColor__OphMv{background:#222}.ImageStock-module__stockColorFilter__YNDk1 label.ImageStock-module__bwColor__fbYsd,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio].ImageStock-module__bwColor__fbYsd{background-image:linear-gradient(135deg, #222222 50%, white 50%)}.ImageStock-module__stockColorFilter__YNDk1 label.ImageStock-module__whiteColor__E8EXb,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio].ImageStock-module__whiteColor__E8EXb{background:#fff}.ImageStock-module__stockColorFilter__YNDk1 label.ImageStock-module__orangeColor__FA62Q,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio].ImageStock-module__orangeColor__FA62Q{background:#fa8c16}.ImageStock-module__stockColorFilter__YNDk1 label.ImageStock-module__redColor__QqLbj,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio].ImageStock-module__redColor__QqLbj{background:#f5222d}.ImageStock-module__stockColorFilter__YNDk1 label.ImageStock-module__purpleColor__ZYxsy,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio].ImageStock-module__purpleColor__ZYxsy{background:#722ed1}.ImageStock-module__stockColorFilter__YNDk1 label.ImageStock-module__magentaColor__OIcvp,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio].ImageStock-module__magentaColor__OIcvp{background:#eb2f96}.ImageStock-module__stockColorFilter__YNDk1 label.ImageStock-module__greenColor__xkcIL,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio].ImageStock-module__greenColor__xkcIL{background:#52c41a}.ImageStock-module__stockColorFilter__YNDk1 label.ImageStock-module__tealColor__LiqDE,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio].ImageStock-module__tealColor__LiqDE{background:#43c3c3}.ImageStock-module__stockColorFilter__YNDk1 label.ImageStock-module__blueColor__AiCDS,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio].ImageStock-module__blueColor__AiCDS{background:#1677ff}.ImageStock-module__stockColorFilter__YNDk1 label.ant-radio-button-wrapper:not(:first-child)::before{display:none}.ImageStock-module__resultsContainer__cGxRN{width:640px;max-width:100%;overflow:auto;box-sizing:border-box;padding:60px 16px;border-radius:12px;background-color:var(--colorBgContainer);display:flex;align-items:center;justify-content:center;flex-direction:column}.ImageStock-module__playButton__zUoU6{color:var(--colorPrimary);margin-bottom:16px}.ImageStock-module__title___XSIh{font-size:16px;font-weight:600;line-height:1.2;margin-bottom:4px}.ImageStock-module__subtitle__zZgjf{font-size:14px;color:var(--colorSecondary);line-height:1.2}.ImageStock-module__dark__bPNKl .ImageStock-module__stockTab__nLVOT .ImageStock-module__listItem__Zi1py{border:1px solid #2b2b2b;background:#2b2b2b}`, "",{"version":3,"sources":["webpack://./src/components/ImageStock/ImageStock.module.scss"],"names":[],"mappings":"AAAA,oCACI,WAAA,CACA,YAAA,CAEA,yCACI,cAAA,CACA,eAAA,CACA,eAAA,CAGJ,+IACI,cAAA,CAIR,4CACI,SAAA,CACA,WAAA,CAEA,yBAAA,CACA,qBAAA,CAGJ,+CACI,WAAA,CACA,YAAA,CACA,eAAA,CAGJ,mCACI,uCAAA,CACA,+BAAA,CAGJ,kCACI,cAAA,CAGJ,yCACI,UAAA,CAEA,qFACI,UAAA,CAGJ,+CACI,yCAAA,CACA,8CAAA,CAMR,yCACI,iBAAA,CACA,UAAA,CAGJ,sDACI,QAAA,CAGJ,yCACI,UAAA,CACA,WAAA,CACA,aAAA,CACA,iBAAA,CACA,qBAAA,CACA,aAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CAGJ,yCACI,YAAA,CACA,UAAA,CACA,iBAAA,CACA,6BAAA,CAGJ,+CACI,2BAAA,CAGJ,oCACI,cAAA,CACA,iBAAA,CACA,uBAAA,CACA,wBAAA,CACA,kBAAA,CACA,oBAAA,CACA,iBAAA,CACA,gBAAA,CACA,gBAAA,CACA,iBAAA,CACA,eAAA,CACA,kBAAA,CAEA,4EACI,iBAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,WAAA,CACA,qBAAA,CACA,SAAA,CACA,2BAAA,CAGJ,8CACI,cAAA,CACA,aAAA,CACA,iBAAA,CACA,OAAA,CACA,QAAA,CACA,+BAAA,CAGJ,wCACI,aAAA,CACA,iBAAA,CACA,WAAA,CACA,kBAAA,CACA,SAAA,CACA,kCAAA,CAGJ,qEACI,iBAAA,CACA,wBAAA,CAEA,yEACI,SAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CAGJ,4GACI,UAAA,CAIR,0CACI,oGAAA,CAGA,kFACI,SAAA,CAGJ,kFACI,SAAA,CAIR,4EACI,iBAAA,CACA,uBAAA,CACA,QAAA,CACA,OAAA,CACA,QAAA,CACA,+BAAA,CACA,UAAA,CACA,WAAA,CACA,cAAA,CACA,SAAA,CACA,eAAA,CAGI,oFACI,UAAA,CACA,yBAAA,CAIR,8EACI,UAAA,CACA,oBAAA,CAKZ,4CACI,YAAA,CAEA,iHAEI,4BAAA,CACA,UAAA,CACA,WAAA,CACA,cAAA,CACA,SAAA,CACA,WAAA,CACA,gBAAA,CAEA,iIACI,YAAA,CAGJ,yLACI,8FAAA,CASJ,2LACI,eAAA,CAGJ,qLACI,gEAAA,CAGJ,2LACI,eAAA,CAGJ,6LACI,kBAAA,CAGJ,uLACI,kBAAA,CAGJ,6LACI,kBAAA,CAGJ,+LACI,kBAAA,CAGJ,2LACI,kBAAA,CAGJ,yLACI,kBAAA,CAGJ,yLACI,kBAAA,CAIR,qGACI,YAAA,CAIR,4CACI,WAAA,CACA,cAAA,CACA,aAAA,CACA,qBAAA,CACA,iBAAA,CACA,kBAAA,CACA,wCAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,qBAAA,CAGJ,sCACI,yBAAA,CACA,kBAAA,CAGJ,iCACI,cAAA,CACA,eAAA,CACA,eAAA,CACA,iBAAA,CAGJ,oCACI,cAAA,CACA,2BAAA,CACA,eAAA,CAKI,wGACI,wBAAA,CACA,kBAAA","sourcesContent":[".stockTab {\r\n height: 100%;\r\n min-height: 0;\r\n\r\n :global(.img) {\r\n max-width: none;\r\n max-height: none;\r\n border-radius: 0;\r\n }\r\n\r\n :global(.ant-divider-horizontal.ant-divider-with-text::before, .ant-divider-horizontal.ant-divider-with-text::after) {\r\n transform: none;\r\n }\r\n}\r\n\r\n.stockSearchInput {\r\n padding: 0;\r\n width: 640px;\r\n //max-width: 100%;\r\n transition: all 200ms ease;\r\n margin: auto auto 24px;\r\n}\r\n\r\n.searchOutputWrapper {\r\n height: 100%;\r\n min-height: 0;\r\n overflow: hidden;\r\n}\r\n\r\n.divider {\r\n margin-bottom: calc(var(--marginLG) * 1px);\r\n border-color: var(--colorBorder);\r\n}\r\n\r\n.search {\r\n max-width: 100%;\r\n}\r\n\r\n.searchResults {\r\n width: 100%;\r\n\r\n .stockSearchInput {\r\n width: 100%;\r\n }\r\n\r\n label {\r\n height: calc(var(--formControlHeight) * 1px);\r\n line-height: calc(var(--formControlHeight) * 1px);\r\n }\r\n\r\n\r\n}\r\n\r\n.virtualCanvas {\r\n position: relative;\r\n width: 100%;\r\n}\r\n\r\n.blocksSearchDividerWrapper {\r\n margin: 0;\r\n}\r\n\r\n.scrollableDiv {\r\n width: 100%;\r\n height: 100%;\r\n overflow: auto;\r\n overflow-x: hidden;\r\n box-sizing: border-box;\r\n line-height: 0;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n padding: 24px;\r\n}\r\n\r\n.myMasonryGrid {\r\n display: flex;\r\n width: auto;\r\n text-align: center;\r\n gap: calc(var(--marginLG) * 1px);\r\n}\r\n\r\n.myMasonryGridColumn {\r\n background-clip: padding-box;\r\n}\r\n\r\n.listItem {\r\n cursor: pointer;\r\n position: relative;\r\n transition: all 0.3s ease;\r\n border: 1px solid #f0f2f5;\r\n margin-bottom: 20px;\r\n display: inline-block;\r\n border-radius: 6px;\r\n min-height: 100px;\r\n max-height: 100px;\r\n max-width: inherit;\r\n overflow: hidden;\r\n background: #f0f2f5;\r\n\r\n .overlayImage {\r\n position: absolute;\r\n bottom: 10px;\r\n right: 10px;\r\n width: 110px;\r\n height: 40px;\r\n background-size: cover;\r\n opacity: 0;\r\n transition: opacity 0.5s ease;\r\n }\r\n\r\n :global(.ant-spin) {\r\n font-size: 20px;\r\n color: #f0f2f5;\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n }\r\n\r\n & img {\r\n display: block;\r\n border-radius: 6px;\r\n height: auto;\r\n object-fit: contain;\r\n opacity: 0;\r\n transition: opacity 0.5s ease-in-out;\r\n }\r\n\r\n &.loaded {\r\n max-height: 1000px;\r\n border: 1px solid #d9d9d9;\r\n\r\n & img {\r\n opacity: 1;\r\n height: 100%;\r\n width: 100%;\r\n margin: auto;\r\n }\r\n\r\n & .loadedImage {\r\n opacity: 0.5;\r\n }\r\n }\r\n\r\n &:hover {\r\n box-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12),\r\n 0 5px 12px 4px rgba(0, 0, 0, 0.09);\r\n\r\n & p.creatorInfo {\r\n opacity: 1;\r\n }\r\n\r\n .overlayImage {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n p.creatorInfo {\r\n position: absolute;\r\n border-radius: 0 0 6px 0;\r\n bottom: 0;\r\n right: 0;\r\n margin: 0;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n color: #fff;\r\n padding: 5px;\r\n font-size: 10px;\r\n opacity: 0;\r\n line-height: 1.2;\r\n\r\n &:hover {\r\n a {\r\n color: #fff;\r\n text-decoration: underline;\r\n }\r\n }\r\n\r\n & a {\r\n color: #fff;\r\n text-decoration: none;\r\n }\r\n }\r\n}\r\n\r\n.stockColorFilter {\r\n display: flex;\r\n\r\n label,\r\n [class^=\"ant-radio\"] {\r\n border-radius: 6px !important;\r\n width: 24px;\r\n height: 24px;\r\n margin: 4px 4px;\r\n padding: 0;\r\n font-size: 0;\r\n border-width: 1px;\r\n\r\n &::before {\r\n display: none;\r\n }\r\n\r\n &.allColors {\r\n background-image: linear-gradient(135deg,\r\n #ff0000,\r\n #ff7f00,\r\n #ffff00,\r\n #00ff00,\r\n #0000ff,\r\n #8b00ff);\r\n }\r\n\r\n &.blackColor {\r\n background: #222222;\r\n }\r\n\r\n &.bwColor {\r\n background-image: linear-gradient(135deg, #222222 50%, white 50%);\r\n }\r\n\r\n &.whiteColor {\r\n background: #ffffff;\r\n }\r\n\r\n &.orangeColor {\r\n background: #fa8c16;\r\n }\r\n\r\n &.redColor {\r\n background: #f5222d;\r\n }\r\n\r\n &.purpleColor {\r\n background: #722ed1;\r\n }\r\n\r\n &.magentaColor {\r\n background: #eb2f96;\r\n }\r\n\r\n &.greenColor {\r\n background: #52c41a;\r\n }\r\n\r\n &.tealColor {\r\n background: #43c3c3;\r\n }\r\n\r\n &.blueColor {\r\n background: #1677ff;\r\n }\r\n }\r\n\r\n label:global(.ant-radio-button-wrapper:not(:first-child))::before {\r\n display: none;\r\n }\r\n}\r\n\r\n.resultsContainer {\r\n width: 640px;\r\n max-width: 100%;\r\n overflow: auto;\r\n box-sizing: border-box;\r\n padding: 60px 16px;\r\n border-radius: 12px;\r\n background-color: var(--colorBgContainer);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-direction: column;\r\n}\r\n\r\n.playButton {\r\n color: var(--colorPrimary);\r\n margin-bottom: 16px;\r\n}\r\n\r\n.title {\r\n font-size: 16px;\r\n font-weight: 600;\r\n line-height: 1.2;\r\n margin-bottom: 4px;\r\n}\r\n\r\n.subtitle {\r\n font-size: 14px;\r\n color: var(--colorSecondary);\r\n line-height: 1.2;\r\n}\r\n\r\n.dark {\r\n .stockTab {\r\n & .listItem {\r\n border: 1px solid #2b2b2b;\r\n background: #2b2b2b;\r\n }\r\n }\r\n}"],"sourceRoot":""}]);
17108
+ ___CSS_LOADER_EXPORT___.push([module.id, `.ImageStock-module__stockTab__nLVOT{height:100%;min-height:0}.ImageStock-module__stockTab__nLVOT .img{max-width:none;max-height:none;border-radius:0}.ImageStock-module__stockTab__nLVOT .ant-divider-horizontal.ant-divider-with-text::before .ant-divider-horizontal.ant-divider-with-text::after{transform:none}.ImageStock-module__stockSearchInput__KpIug{padding:0;width:640px;transition:all 200ms ease;margin:auto auto 24px}.ImageStock-module__searchOutputWrapper__W7BMj{height:100%;min-height:0;overflow:hidden}.ImageStock-module__divider__BbtaV{margin-bottom:calc(var(--marginLG)*1px);border-color:var(--colorBorder)}.ImageStock-module__search__DKxrP{max-width:100%}.ImageStock-module__searchResults__ZGOZf{width:100%}.ImageStock-module__searchResults__ZGOZf .ImageStock-module__stockSearchInput__KpIug{width:100%}.ImageStock-module__searchResults__ZGOZf label{height:calc(var(--formControlHeight)*1px);line-height:calc(var(--formControlHeight)*1px)}.ImageStock-module__virtualCanvas__WmymP{position:relative;width:100%}.ImageStock-module__blocksSearchDividerWrapper__Jopqt{margin:0}.ImageStock-module__scrollableDiv__LrQPg{width:100%;height:100%;overflow:auto;overflow-x:hidden;box-sizing:border-box;line-height:0;display:flex;flex-direction:column;align-items:center;padding:24px}.ImageStock-module__myMasonryGrid__iYrl6{display:flex;width:auto;text-align:center;gap:calc(var(--marginLG)*1px)}.ImageStock-module__myMasonryGridColumn__Tjc1a{background-clip:padding-box}.ImageStock-module__listItem__Zi1py{cursor:pointer;position:relative;transition:all .3s ease;border:1px solid #f0f2f5;margin-bottom:20px;display:inline-block;border-radius:6px;min-height:100px;max-height:100px;max-width:inherit;overflow:hidden;background:#f0f2f5}.ImageStock-module__listItem__Zi1py .ImageStock-module__overlayImage__rdVIc{position:absolute;bottom:10px;right:10px;width:110px;height:40px;background-size:cover;opacity:0;transition:opacity .5s ease}.ImageStock-module__listItem__Zi1py .ant-spin{font-size:20px;color:#f0f2f5;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.ImageStock-module__listItem__Zi1py img{display:block;border-radius:6px;height:auto;object-fit:contain;opacity:0;transition:opacity .5s ease-in-out}.ImageStock-module__listItem__Zi1py.ImageStock-module__loaded__U4oz8{max-height:1000px;border:1px solid #d9d9d9}.ImageStock-module__listItem__Zi1py.ImageStock-module__loaded__U4oz8 img{opacity:1;height:100%;width:100%;margin:auto}.ImageStock-module__listItem__Zi1py.ImageStock-module__loaded__U4oz8 .ImageStock-module__loadedImage__heBOD{opacity:.5}.ImageStock-module__listItem__Zi1py:hover{box-shadow:0 1px 2px -2px rgba(0,0,0,.16),0 3px 6px 0 rgba(0,0,0,.12),0 5px 12px 4px rgba(0,0,0,.09)}.ImageStock-module__listItem__Zi1py:hover p.ImageStock-module__creatorInfo__xFXkA{opacity:1}.ImageStock-module__listItem__Zi1py:hover .ImageStock-module__overlayImage__rdVIc{opacity:1}.ImageStock-module__listItem__Zi1py p.ImageStock-module__creatorInfo__xFXkA{position:absolute;border-radius:0 0 6px 0;bottom:0;right:0;margin:0;background-color:rgba(0,0,0,.5);color:#fff;padding:5px;font-size:10px;opacity:0;line-height:1.2}.ImageStock-module__listItem__Zi1py p.ImageStock-module__creatorInfo__xFXkA:hover a{color:#fff;text-decoration:underline}.ImageStock-module__listItem__Zi1py p.ImageStock-module__creatorInfo__xFXkA a{color:#fff;text-decoration:none}.ImageStock-module__stockColorFilter__YNDk1{display:flex}.ImageStock-module__stockColorFilter__YNDk1 label,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio]{border-radius:6px !important;width:24px;height:24px;margin:4px 4px;padding:0;font-size:0;border-width:1px}.ImageStock-module__stockColorFilter__YNDk1 label::before,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio]::before{display:none}.ImageStock-module__stockColorFilter__YNDk1 label.ImageStock-module__allColors__qJDDJ,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio].ImageStock-module__allColors__qJDDJ{background-image:linear-gradient(135deg, #ff0000, #ff7f00, #ffff00, #00ff00, #0000ff, #8b00ff)}.ImageStock-module__stockColorFilter__YNDk1 label.ImageStock-module__blackColor__OphMv,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio].ImageStock-module__blackColor__OphMv{background:#222}.ImageStock-module__stockColorFilter__YNDk1 label.ImageStock-module__bwColor__fbYsd,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio].ImageStock-module__bwColor__fbYsd{background-image:linear-gradient(135deg, #222222 50%, white 50%)}.ImageStock-module__stockColorFilter__YNDk1 label.ImageStock-module__whiteColor__E8EXb,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio].ImageStock-module__whiteColor__E8EXb{background:#fff}.ImageStock-module__stockColorFilter__YNDk1 label.ImageStock-module__orangeColor__FA62Q,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio].ImageStock-module__orangeColor__FA62Q{background:#fa8c16}.ImageStock-module__stockColorFilter__YNDk1 label.ImageStock-module__redColor__QqLbj,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio].ImageStock-module__redColor__QqLbj{background:#f5222d}.ImageStock-module__stockColorFilter__YNDk1 label.ImageStock-module__purpleColor__ZYxsy,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio].ImageStock-module__purpleColor__ZYxsy{background:#722ed1}.ImageStock-module__stockColorFilter__YNDk1 label.ImageStock-module__magentaColor__OIcvp,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio].ImageStock-module__magentaColor__OIcvp{background:#eb2f96}.ImageStock-module__stockColorFilter__YNDk1 label.ImageStock-module__greenColor__xkcIL,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio].ImageStock-module__greenColor__xkcIL{background:#52c41a}.ImageStock-module__stockColorFilter__YNDk1 label.ImageStock-module__tealColor__LiqDE,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio].ImageStock-module__tealColor__LiqDE{background:#43c3c3}.ImageStock-module__stockColorFilter__YNDk1 label.ImageStock-module__blueColor__AiCDS,.ImageStock-module__stockColorFilter__YNDk1 [class^=ant-radio].ImageStock-module__blueColor__AiCDS{background:#1677ff}.ImageStock-module__stockColorFilter__YNDk1 label.ant-radio-button-wrapper:not(:first-child)::before{display:none}.ImageStock-module__resultsContainer__cGxRN{width:640px;max-width:100%;overflow:auto;box-sizing:border-box;padding:60px 16px;border-radius:12px;background-color:var(--colorBgContainer);display:flex;align-items:center;justify-content:center;flex-direction:column}.ImageStock-module__playButton__zUoU6,.ImageStock-module__playButton__zUoU6.anticon svg{color:var(--colorPrimary)}.ImageStock-module__playButton__zUoU6{margin-bottom:16px}.ImageStock-module__title___XSIh{font-size:16px;font-weight:600;line-height:1.2;margin-bottom:4px}.ImageStock-module__subtitle__zZgjf{font-size:14px;color:var(--colorSecondary);line-height:1.2}.ImageStock-module__dark__bPNKl .ImageStock-module__stockTab__nLVOT .ImageStock-module__listItem__Zi1py{border:1px solid #2b2b2b;background:#2b2b2b}`, "",{"version":3,"sources":["webpack://./src/components/ImageStock/ImageStock.module.scss"],"names":[],"mappings":"AAAA,oCACI,WAAA,CACA,YAAA,CAEA,yCACI,cAAA,CACA,eAAA,CACA,eAAA,CAGJ,+IACI,cAAA,CAIR,4CACI,SAAA,CACA,WAAA,CAEA,yBAAA,CACA,qBAAA,CAGJ,+CACI,WAAA,CACA,YAAA,CACA,eAAA,CAGJ,mCACI,uCAAA,CACA,+BAAA,CAGJ,kCACI,cAAA,CAGJ,yCACI,UAAA,CAEA,qFACI,UAAA,CAGJ,+CACI,yCAAA,CACA,8CAAA,CAMR,yCACI,iBAAA,CACA,UAAA,CAGJ,sDACI,QAAA,CAGJ,yCACI,UAAA,CACA,WAAA,CACA,aAAA,CACA,iBAAA,CACA,qBAAA,CACA,aAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CAGJ,yCACI,YAAA,CACA,UAAA,CACA,iBAAA,CACA,6BAAA,CAGJ,+CACI,2BAAA,CAGJ,oCACI,cAAA,CACA,iBAAA,CACA,uBAAA,CACA,wBAAA,CACA,kBAAA,CACA,oBAAA,CACA,iBAAA,CACA,gBAAA,CACA,gBAAA,CACA,iBAAA,CACA,eAAA,CACA,kBAAA,CAEA,4EACI,iBAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,WAAA,CACA,qBAAA,CACA,SAAA,CACA,2BAAA,CAGJ,8CACI,cAAA,CACA,aAAA,CACA,iBAAA,CACA,OAAA,CACA,QAAA,CACA,+BAAA,CAGJ,wCACI,aAAA,CACA,iBAAA,CACA,WAAA,CACA,kBAAA,CACA,SAAA,CACA,kCAAA,CAGJ,qEACI,iBAAA,CACA,wBAAA,CAEA,yEACI,SAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CAGJ,4GACI,UAAA,CAIR,0CACI,oGAAA,CAGA,kFACI,SAAA,CAGJ,kFACI,SAAA,CAIR,4EACI,iBAAA,CACA,uBAAA,CACA,QAAA,CACA,OAAA,CACA,QAAA,CACA,+BAAA,CACA,UAAA,CACA,WAAA,CACA,cAAA,CACA,SAAA,CACA,eAAA,CAGI,oFACI,UAAA,CACA,yBAAA,CAIR,8EACI,UAAA,CACA,oBAAA,CAKZ,4CACI,YAAA,CAEA,iHAEI,4BAAA,CACA,UAAA,CACA,WAAA,CACA,cAAA,CACA,SAAA,CACA,WAAA,CACA,gBAAA,CAEA,iIACI,YAAA,CAGJ,yLACI,8FAAA,CASJ,2LACI,eAAA,CAGJ,qLACI,gEAAA,CAGJ,2LACI,eAAA,CAGJ,6LACI,kBAAA,CAGJ,uLACI,kBAAA,CAGJ,6LACI,kBAAA,CAGJ,+LACI,kBAAA,CAGJ,2LACI,kBAAA,CAGJ,yLACI,kBAAA,CAGJ,yLACI,kBAAA,CAIR,qGACI,YAAA,CAIR,4CACI,WAAA,CACA,cAAA,CACA,aAAA,CACA,qBAAA,CACA,iBAAA,CACA,kBAAA,CACA,wCAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,qBAAA,CAOJ,wFAEI,yBAAA,CAGJ,sCACI,kBAAA,CAGJ,iCACI,cAAA,CACA,eAAA,CACA,eAAA,CACA,iBAAA,CAGJ,oCACI,cAAA,CACA,2BAAA,CACA,eAAA,CAKI,wGACI,wBAAA,CACA,kBAAA","sourcesContent":[".stockTab {\r\n height: 100%;\r\n min-height: 0;\r\n\r\n :global(.img) {\r\n max-width: none;\r\n max-height: none;\r\n border-radius: 0;\r\n }\r\n\r\n :global(.ant-divider-horizontal.ant-divider-with-text::before, .ant-divider-horizontal.ant-divider-with-text::after) {\r\n transform: none;\r\n }\r\n}\r\n\r\n.stockSearchInput {\r\n padding: 0;\r\n width: 640px;\r\n //max-width: 100%;\r\n transition: all 200ms ease;\r\n margin: auto auto 24px;\r\n}\r\n\r\n.searchOutputWrapper {\r\n height: 100%;\r\n min-height: 0;\r\n overflow: hidden;\r\n}\r\n\r\n.divider {\r\n margin-bottom: calc(var(--marginLG) * 1px);\r\n border-color: var(--colorBorder);\r\n}\r\n\r\n.search {\r\n max-width: 100%;\r\n}\r\n\r\n.searchResults {\r\n width: 100%;\r\n\r\n .stockSearchInput {\r\n width: 100%;\r\n }\r\n\r\n label {\r\n height: calc(var(--formControlHeight) * 1px);\r\n line-height: calc(var(--formControlHeight) * 1px);\r\n }\r\n\r\n\r\n}\r\n\r\n.virtualCanvas {\r\n position: relative;\r\n width: 100%;\r\n}\r\n\r\n.blocksSearchDividerWrapper {\r\n margin: 0;\r\n}\r\n\r\n.scrollableDiv {\r\n width: 100%;\r\n height: 100%;\r\n overflow: auto;\r\n overflow-x: hidden;\r\n box-sizing: border-box;\r\n line-height: 0;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n padding: 24px;\r\n}\r\n\r\n.myMasonryGrid {\r\n display: flex;\r\n width: auto;\r\n text-align: center;\r\n gap: calc(var(--marginLG) * 1px);\r\n}\r\n\r\n.myMasonryGridColumn {\r\n background-clip: padding-box;\r\n}\r\n\r\n.listItem {\r\n cursor: pointer;\r\n position: relative;\r\n transition: all 0.3s ease;\r\n border: 1px solid #f0f2f5;\r\n margin-bottom: 20px;\r\n display: inline-block;\r\n border-radius: 6px;\r\n min-height: 100px;\r\n max-height: 100px;\r\n max-width: inherit;\r\n overflow: hidden;\r\n background: #f0f2f5;\r\n\r\n .overlayImage {\r\n position: absolute;\r\n bottom: 10px;\r\n right: 10px;\r\n width: 110px;\r\n height: 40px;\r\n background-size: cover;\r\n opacity: 0;\r\n transition: opacity 0.5s ease;\r\n }\r\n\r\n :global(.ant-spin) {\r\n font-size: 20px;\r\n color: #f0f2f5;\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n }\r\n\r\n & img {\r\n display: block;\r\n border-radius: 6px;\r\n height: auto;\r\n object-fit: contain;\r\n opacity: 0;\r\n transition: opacity 0.5s ease-in-out;\r\n }\r\n\r\n &.loaded {\r\n max-height: 1000px;\r\n border: 1px solid #d9d9d9;\r\n\r\n & img {\r\n opacity: 1;\r\n height: 100%;\r\n width: 100%;\r\n margin: auto;\r\n }\r\n\r\n & .loadedImage {\r\n opacity: 0.5;\r\n }\r\n }\r\n\r\n &:hover {\r\n box-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12),\r\n 0 5px 12px 4px rgba(0, 0, 0, 0.09);\r\n\r\n & p.creatorInfo {\r\n opacity: 1;\r\n }\r\n\r\n .overlayImage {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n p.creatorInfo {\r\n position: absolute;\r\n border-radius: 0 0 6px 0;\r\n bottom: 0;\r\n right: 0;\r\n margin: 0;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n color: #fff;\r\n padding: 5px;\r\n font-size: 10px;\r\n opacity: 0;\r\n line-height: 1.2;\r\n\r\n &:hover {\r\n a {\r\n color: #fff;\r\n text-decoration: underline;\r\n }\r\n }\r\n\r\n & a {\r\n color: #fff;\r\n text-decoration: none;\r\n }\r\n }\r\n}\r\n\r\n.stockColorFilter {\r\n display: flex;\r\n\r\n label,\r\n [class^=\"ant-radio\"] {\r\n border-radius: 6px !important;\r\n width: 24px;\r\n height: 24px;\r\n margin: 4px 4px;\r\n padding: 0;\r\n font-size: 0;\r\n border-width: 1px;\r\n\r\n &::before {\r\n display: none;\r\n }\r\n\r\n &.allColors {\r\n background-image: linear-gradient(135deg,\r\n #ff0000,\r\n #ff7f00,\r\n #ffff00,\r\n #00ff00,\r\n #0000ff,\r\n #8b00ff);\r\n }\r\n\r\n &.blackColor {\r\n background: #222222;\r\n }\r\n\r\n &.bwColor {\r\n background-image: linear-gradient(135deg, #222222 50%, white 50%);\r\n }\r\n\r\n &.whiteColor {\r\n background: #ffffff;\r\n }\r\n\r\n &.orangeColor {\r\n background: #fa8c16;\r\n }\r\n\r\n &.redColor {\r\n background: #f5222d;\r\n }\r\n\r\n &.purpleColor {\r\n background: #722ed1;\r\n }\r\n\r\n &.magentaColor {\r\n background: #eb2f96;\r\n }\r\n\r\n &.greenColor {\r\n background: #52c41a;\r\n }\r\n\r\n &.tealColor {\r\n background: #43c3c3;\r\n }\r\n\r\n &.blueColor {\r\n background: #1677ff;\r\n }\r\n }\r\n\r\n label:global(.ant-radio-button-wrapper:not(:first-child))::before {\r\n display: none;\r\n }\r\n}\r\n\r\n.resultsContainer {\r\n width: 640px;\r\n max-width: 100%;\r\n overflow: auto;\r\n box-sizing: border-box;\r\n padding: 60px 16px;\r\n border-radius: 12px;\r\n background-color: var(--colorBgContainer);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-direction: column;\r\n}\r\n\r\n/* Иконка приходит как antd <Icon> — это span.anticon, а SVG внутри рисуется\r\n через currentColor. Хост-приложение может задавать `.blocks-app .anticon { color: inherit }`\r\n (два класса), что перебивает одиночный `.playButton` и красит иконку в чёрный.\r\n Дублируем цвет на самом svg — там у хоста правил на color нет. */\r\n.playButton,\r\n.playButton:global(.anticon) svg {\r\n color: var(--colorPrimary);\r\n}\r\n\r\n.playButton {\r\n margin-bottom: 16px;\r\n}\r\n\r\n.title {\r\n font-size: 16px;\r\n font-weight: 600;\r\n line-height: 1.2;\r\n margin-bottom: 4px;\r\n}\r\n\r\n.subtitle {\r\n font-size: 14px;\r\n color: var(--colorSecondary);\r\n line-height: 1.2;\r\n}\r\n\r\n.dark {\r\n .stockTab {\r\n & .listItem {\r\n border: 1px solid #2b2b2b;\r\n background: #2b2b2b;\r\n }\r\n }\r\n}"],"sourceRoot":""}]);
17096
17109
  // Exports
17097
17110
  ___CSS_LOADER_EXPORT___.locals = {
17098
17111
  "stockTab": `ImageStock-module__stockTab__nLVOT`,
@@ -39123,7 +39136,7 @@ __webpack_require__.d(__webpack_exports__, {
39123
39136
  HO: () => (/* reexport */ useSortAndFilter/* useSortAndFilter */.H)
39124
39137
  });
39125
39138
 
39126
- // UNUSED EXPORTS: FileManagerContext, useModals
39139
+ // UNUSED EXPORTS: FileManagerContext, mergeLazyRootFolders, useModals
39127
39140
 
39128
39141
  // EXTERNAL MODULE: ./src/hooks/core/context.tsx
39129
39142
  var context = __webpack_require__(8361);
@@ -41176,6 +41189,7 @@ module.exports = PluralRules;
41176
41189
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
41177
41190
  /* harmony export */ n: () => (/* binding */ useFolders)
41178
41191
  /* harmony export */ });
41192
+ /* unused harmony export mergeLazyRootFolders */
41179
41193
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5442);
41180
41194
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
41181
41195
  /* harmony import */ var _ant_design_icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7892);
@@ -41197,6 +41211,18 @@ module.exports = PluralRules;
41197
41211
 
41198
41212
 
41199
41213
 
41214
+ /**
41215
+ * Ленивый режим дерева (`folderTreeLoading: 'lazy'`) не обходит поддеревья — свежий
41216
+ * root-фетч содержит только корневые папки. Старые вложенные записи (с `parentId`)
41217
+ * сохраняются как есть, НО если тот же `id` уже есть в свежем корневом ответе
41218
+ * (сервер теперь считает папку корневой), старая копия вытесняется, а не дублируется
41219
+ * рядом с новой (см. DEV-дубликаты в дереве после загрузки файла в подпапку).
41220
+ */
41221
+ function mergeLazyRootFolders(prev, rootFolders) {
41222
+ const freshIds = new Set(rootFolders.map(f => f.id));
41223
+ const withoutOldRoots = prev.filter(f => f.parentId && !freshIds.has(f.id));
41224
+ return [...withoutOldRoots, ...rootFolders];
41225
+ }
41200
41226
  const useFolders = () => {
41201
41227
  var _a, _b;
41202
41228
  const { state, actions, options } = (0,_context__WEBPACK_IMPORTED_MODULE_2__/* .useFileManagerContext */ .wh)();
@@ -41244,8 +41270,7 @@ const useFolders = () => {
41244
41270
  }
41245
41271
  return fullTree;
41246
41272
  }
41247
- const withoutOldRoots = safePrev.filter(f => f.parentId);
41248
- const merged = [...withoutOldRoots, ...rootFolders];
41273
+ const merged = mergeLazyRootFolders(safePrev, rootFolders);
41249
41274
  const problematicFolders = merged.filter((folder) => folder.id === folder.parentId);
41250
41275
  if (problematicFolders.length > 0) {
41251
41276
  console.warn('Folders with cyclic dependencies detected:', problematicFolders);
@@ -42072,7 +42097,7 @@ var ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = __webpack_require__(1354);
42072
42097
  var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(6314);
42073
42098
  var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);
42074
42099
  // Module
42075
- ___CSS_LOADER_EXPORT___.push([module.id, `.ImageGif-module__gifTab__Bgaq5{height:100%;min-height:0}.ImageGif-module__gifTab__Bgaq5 .img{max-width:none;max-height:none;border-radius:0}.ImageGif-module__gifTab__Bgaq5 .ant-divider-horizontal.ant-divider-with-text::before .ant-divider-horizontal.ant-divider-with-text::after{transform:none}.ImageGif-module__scrollableDiv__wN1PE{width:100%;height:100%;overflow:auto;overflow-x:hidden;box-sizing:border-box;line-height:0;display:flex;flex-direction:column;align-items:center;padding:24px}.ImageGif-module__gifSearchInput__qab_Q{padding:0;width:640px;max-width:100%;transition:width 1s ease;margin:auto auto 24px}.ImageGif-module__search__esYE7{max-width:100%}.ImageGif-module__searchResults__VhEpX{width:100%}.ImageGif-module__searchResults__VhEpX .ImageGif-module__gifSearchInput__qab_Q{width:100%}.ImageGif-module__virtualCanvas__GMK6e{position:relative;width:100%}.ImageGif-module__myMasonryGrid__a8NMG{display:flex;width:auto;text-align:center}.ImageGif-module__myMasonryGridColumn__H4F4v{background-clip:padding-box}.ImageGif-module__listItem__VxRuu{cursor:pointer;position:relative;transition:all .3s ease;border:1px solid #f0f2f5;margin-bottom:20px;display:inline-block;border-radius:6px;min-height:100px;max-height:100px;max-width:inherit;overflow:hidden;background:#f0f2f5}.ImageGif-module__listItem__VxRuu .ImageGif-module__overlayImage__rJAoA{position:absolute;bottom:10px;right:10px;width:110px;height:40px;background-size:cover;opacity:0;transition:opacity .5s ease}.ImageGif-module__listItem__VxRuu .ant-spin{font-size:20px;color:#f0f2f5;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.ImageGif-module__listItem__VxRuu img{display:block;border-radius:6px;height:auto;object-fit:contain;opacity:0;transition:opacity .5s ease-in-out}.ImageGif-module__listItem__VxRuu.ImageGif-module__loaded__W4Nzr{max-height:1000px;border:1px solid #d9d9d9}.ImageGif-module__listItem__VxRuu.ImageGif-module__loaded__W4Nzr img{opacity:1;height:100%;width:100%;margin:auto}.ImageGif-module__listItem__VxRuu.ImageGif-module__loaded__W4Nzr .ImageGif-module__loadedImage__dcH_S{opacity:.5}.ImageGif-module__listItem__VxRuu:hover{box-shadow:0 1px 2px -2px rgba(0,0,0,.16),0 3px 6px 0 rgba(0,0,0,.12),0 5px 12px 4px rgba(0,0,0,.09)}.ImageGif-module__listItem__VxRuu:hover p.ImageGif-module__creatorInfo__blRRh{opacity:1}.ImageGif-module__listItem__VxRuu:hover .ImageGif-module__overlayImage__rJAoA{opacity:1}.ImageGif-module__listItem__VxRuu p.ImageGif-module__creatorInfo__blRRh{position:absolute;border-radius:0 0 6px 0;bottom:0;right:0;margin:0;background-color:rgba(0,0,0,.5);color:#fff;padding:5px;font-size:10px;opacity:0;line-height:1.2}.ImageGif-module__listItem__VxRuu p.ImageGif-module__creatorInfo__blRRh:hover a{color:#fff;text-decoration:underline}.ImageGif-module__listItem__VxRuu p.ImageGif-module__creatorInfo__blRRh a{color:#fff;text-decoration:none}.ImageGif-module__searchOutputWrapper___jVQa{height:100%;min-height:0;overflow:hidden}.ImageGif-module__divider__KsfKq{margin-bottom:calc(var(--marginLG)*1px);border-color:var(--colorBorder)}.ImageGif-module__myMasonryGrid__a8NMG{display:flex;width:auto;text-align:center;gap:calc(var(--marginLG)*1px)}.ImageGif-module__myMasonryGridColumn__H4F4v{background-clip:padding-box}.ImageGif-module__resultsContainer__mad2S{width:640px;max-width:100%;overflow:auto;box-sizing:border-box;padding:60px 16px;border-radius:12px;background-color:var(--colorBgContainer);display:flex;align-items:center;justify-content:center;flex-direction:column}.ImageGif-module__playButton__s2fCB{color:var(--colorPrimary);margin-bottom:16px}.ImageGif-module__title__gLwXB{font-size:16px;font-weight:600;line-height:1.2;margin-bottom:4px}.ImageGif-module__subtitle__xOJbD{font-size:14px;color:var(--colorSecondary);line-height:1.2}.ImageGif-module__dark__oJX1A .ImageGif-module__gifTab__Bgaq5 .listItem{border:1px solid #2b2b2b;background:#2b2b2b}`, "",{"version":3,"sources":["webpack://./src/components/ImageGif/ImageGif.module.scss"],"names":[],"mappings":"AAAA,gCACI,WAAA,CACA,YAAA,CAEA,qCACI,cAAA,CACA,eAAA,CACA,eAAA,CAGJ,2IACI,cAAA,CAIR,uCACI,UAAA,CACA,WAAA,CACA,aAAA,CACA,iBAAA,CACA,qBAAA,CACA,aAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CAGJ,wCACI,SAAA,CACA,WAAA,CACA,cAAA,CACA,wBAAA,CACA,qBAAA,CAGJ,gCACI,cAAA,CAGJ,uCACI,UAAA,CAEA,+EACI,UAAA,CAIR,uCACI,iBAAA,CACA,UAAA,CAGJ,uCACI,YAAA,CACA,UAAA,CACA,iBAAA,CAGJ,6CACI,2BAAA,CAGJ,kCACI,cAAA,CACA,iBAAA,CACA,uBAAA,CACA,wBAAA,CACA,kBAAA,CACA,oBAAA,CACA,iBAAA,CACA,gBAAA,CACA,gBAAA,CACA,iBAAA,CACA,eAAA,CACA,kBAAA,CAEA,wEACI,iBAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,WAAA,CACA,qBAAA,CACA,SAAA,CACA,2BAAA,CAGJ,4CACI,cAAA,CACA,aAAA,CACA,iBAAA,CACA,OAAA,CACA,QAAA,CACA,+BAAA,CAGJ,sCACI,aAAA,CACA,iBAAA,CACA,WAAA,CACA,kBAAA,CACA,SAAA,CACA,kCAAA,CAGJ,iEACI,iBAAA,CACA,wBAAA,CAEA,qEACI,SAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CAGJ,sGACI,UAAA,CAIR,wCACI,oGAAA,CAGA,8EACI,SAAA,CAGJ,8EACI,SAAA,CAIR,wEACI,iBAAA,CACA,uBAAA,CACA,QAAA,CACA,OAAA,CACA,QAAA,CACA,+BAAA,CACA,UAAA,CACA,WAAA,CACA,cAAA,CACA,SAAA,CACA,eAAA,CAGI,gFACI,UAAA,CACA,yBAAA,CAIR,0EACI,UAAA,CACA,oBAAA,CAKZ,6CACI,WAAA,CACA,YAAA,CACA,eAAA,CAGJ,iCACI,uCAAA,CACA,+BAAA,CAGJ,uCACI,YAAA,CACA,UAAA,CACA,iBAAA,CACA,6BAAA,CAGJ,6CACI,2BAAA,CAGJ,0CACI,WAAA,CACA,cAAA,CACA,aAAA,CACA,qBAAA,CACA,iBAAA,CACA,kBAAA,CACA,wCAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,qBAAA,CAGJ,oCACI,yBAAA,CACA,kBAAA,CAGJ,+BACI,cAAA,CACA,eAAA,CACA,eAAA,CACA,iBAAA,CAGJ,kCACI,cAAA,CACA,2BAAA,CACA,eAAA,CAKI,wEACI,wBAAA,CACA,kBAAA","sourcesContent":[".gifTab {\r\n height: 100%;\r\n min-height: 0;\r\n\r\n :global(.img) {\r\n max-width: none;\r\n max-height: none;\r\n border-radius: 0;\r\n }\r\n\r\n :global(.ant-divider-horizontal.ant-divider-with-text::before, .ant-divider-horizontal.ant-divider-with-text::after) {\r\n transform: none;\r\n }\r\n}\r\n\r\n.scrollableDiv {\r\n width: 100%;\r\n height: 100%;\r\n overflow: auto;\r\n overflow-x: hidden;\r\n box-sizing: border-box;\r\n line-height: 0;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n padding: 24px;\r\n}\r\n\r\n.gifSearchInput {\r\n padding: 0;\r\n width: 640px;\r\n max-width: 100%;\r\n transition: width 1s ease;\r\n margin: auto auto 24px;\r\n}\r\n\r\n.search {\r\n max-width: 100%;\r\n}\r\n\r\n.searchResults {\r\n width: 100%;\r\n\r\n .gifSearchInput {\r\n width: 100%;\r\n }\r\n}\r\n\r\n.virtualCanvas {\r\n position: relative;\r\n width: 100%;\r\n}\r\n\r\n.myMasonryGrid {\r\n display: flex;\r\n width: auto;\r\n text-align: center;\r\n}\r\n\r\n.myMasonryGridColumn {\r\n background-clip: padding-box;\r\n}\r\n\r\n.listItem {\r\n cursor: pointer;\r\n position: relative;\r\n transition: all 0.3s ease;\r\n border: 1px solid #f0f2f5;\r\n margin-bottom: 20px;\r\n display: inline-block;\r\n border-radius: 6px;\r\n min-height: 100px;\r\n max-height: 100px;\r\n max-width: inherit;\r\n overflow: hidden;\r\n background: #f0f2f5;\r\n\r\n .overlayImage {\r\n position: absolute;\r\n bottom: 10px;\r\n right: 10px;\r\n width: 110px;\r\n height: 40px;\r\n background-size: cover;\r\n opacity: 0;\r\n transition: opacity 0.5s ease;\r\n }\r\n\r\n :global(.ant-spin) {\r\n font-size: 20px;\r\n color: #f0f2f5;\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n }\r\n\r\n & img {\r\n display: block;\r\n border-radius: 6px;\r\n height: auto;\r\n object-fit: contain;\r\n opacity: 0;\r\n transition: opacity 0.5s ease-in-out;\r\n }\r\n\r\n &.loaded {\r\n max-height: 1000px;\r\n border: 1px solid #d9d9d9;\r\n\r\n & img {\r\n opacity: 1;\r\n height: 100%;\r\n width: 100%;\r\n margin: auto;\r\n }\r\n\r\n & .loadedImage {\r\n opacity: 0.5;\r\n }\r\n }\r\n\r\n &:hover {\r\n box-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12),\r\n 0 5px 12px 4px rgba(0, 0, 0, 0.09);\r\n\r\n & p.creatorInfo {\r\n opacity: 1;\r\n }\r\n\r\n .overlayImage {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n p.creatorInfo {\r\n position: absolute;\r\n border-radius: 0 0 6px 0;\r\n bottom: 0;\r\n right: 0;\r\n margin: 0;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n color: #fff;\r\n padding: 5px;\r\n font-size: 10px;\r\n opacity: 0;\r\n line-height: 1.2;\r\n\r\n &:hover {\r\n a {\r\n color: #fff;\r\n text-decoration: underline;\r\n }\r\n }\r\n\r\n & a {\r\n color: #fff;\r\n text-decoration: none;\r\n }\r\n }\r\n}\r\n\r\n.searchOutputWrapper {\r\n height: 100%;\r\n min-height: 0;\r\n overflow: hidden;\r\n}\r\n\r\n.divider {\r\n margin-bottom: calc(var(--marginLG) * 1px);\r\n border-color: var(--colorBorder);\r\n}\r\n\r\n.myMasonryGrid {\r\n display: flex;\r\n width: auto;\r\n text-align: center;\r\n gap: calc(var(--marginLG) * 1px);\r\n}\r\n\r\n.myMasonryGridColumn {\r\n background-clip: padding-box;\r\n}\r\n\r\n.resultsContainer {\r\n width: 640px;\r\n max-width: 100%;\r\n overflow: auto;\r\n box-sizing: border-box;\r\n padding: 60px 16px;\r\n border-radius: 12px;\r\n background-color: var(--colorBgContainer);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-direction: column;\r\n}\r\n\r\n.playButton {\r\n color: var(--colorPrimary);\r\n margin-bottom: 16px;\r\n}\r\n\r\n.title {\r\n font-size: 16px;\r\n font-weight: 600;\r\n line-height: 1.2;\r\n margin-bottom: 4px;\r\n}\r\n\r\n.subtitle {\r\n font-size: 14px;\r\n color: var(--colorSecondary);\r\n line-height: 1.2;\r\n}\r\n\r\n.dark {\r\n .gifTab {\r\n & :global(.listItem) {\r\n border: 1px solid #2b2b2b;\r\n background: #2b2b2b;\r\n }\r\n }\r\n}"],"sourceRoot":""}]);
42100
+ ___CSS_LOADER_EXPORT___.push([module.id, `.ImageGif-module__gifTab__Bgaq5{height:100%;min-height:0}.ImageGif-module__gifTab__Bgaq5 .img{max-width:none;max-height:none;border-radius:0}.ImageGif-module__gifTab__Bgaq5 .ant-divider-horizontal.ant-divider-with-text::before .ant-divider-horizontal.ant-divider-with-text::after{transform:none}.ImageGif-module__scrollableDiv__wN1PE{width:100%;height:100%;overflow:auto;overflow-x:hidden;box-sizing:border-box;line-height:0;display:flex;flex-direction:column;align-items:center;padding:24px}.ImageGif-module__gifSearchInput__qab_Q{padding:0;width:640px;max-width:100%;transition:width 1s ease;margin:auto auto 24px}.ImageGif-module__search__esYE7{max-width:100%}.ImageGif-module__searchResults__VhEpX{width:100%}.ImageGif-module__searchResults__VhEpX .ImageGif-module__gifSearchInput__qab_Q{width:100%}.ImageGif-module__virtualCanvas__GMK6e{position:relative;width:100%}.ImageGif-module__myMasonryGrid__a8NMG{display:flex;width:auto;text-align:center}.ImageGif-module__myMasonryGridColumn__H4F4v{background-clip:padding-box}.ImageGif-module__listItem__VxRuu{cursor:pointer;position:relative;transition:all .3s ease;border:1px solid #f0f2f5;margin-bottom:20px;display:inline-block;border-radius:6px;min-height:100px;max-height:100px;max-width:inherit;overflow:hidden;background:#f0f2f5}.ImageGif-module__listItem__VxRuu .ImageGif-module__overlayImage__rJAoA{position:absolute;bottom:10px;right:10px;width:110px;height:40px;background-size:cover;opacity:0;transition:opacity .5s ease}.ImageGif-module__listItem__VxRuu .ant-spin{font-size:20px;color:#f0f2f5;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.ImageGif-module__listItem__VxRuu img{display:block;border-radius:6px;height:auto;object-fit:contain;opacity:0;transition:opacity .5s ease-in-out}.ImageGif-module__listItem__VxRuu.ImageGif-module__loaded__W4Nzr{max-height:1000px;border:1px solid #d9d9d9}.ImageGif-module__listItem__VxRuu.ImageGif-module__loaded__W4Nzr img{opacity:1;height:100%;width:100%;margin:auto}.ImageGif-module__listItem__VxRuu.ImageGif-module__loaded__W4Nzr .ImageGif-module__loadedImage__dcH_S{opacity:.5}.ImageGif-module__listItem__VxRuu:hover{box-shadow:0 1px 2px -2px rgba(0,0,0,.16),0 3px 6px 0 rgba(0,0,0,.12),0 5px 12px 4px rgba(0,0,0,.09)}.ImageGif-module__listItem__VxRuu:hover p.ImageGif-module__creatorInfo__blRRh{opacity:1}.ImageGif-module__listItem__VxRuu:hover .ImageGif-module__overlayImage__rJAoA{opacity:1}.ImageGif-module__listItem__VxRuu p.ImageGif-module__creatorInfo__blRRh{position:absolute;border-radius:0 0 6px 0;bottom:0;right:0;margin:0;background-color:rgba(0,0,0,.5);color:#fff;padding:5px;font-size:10px;opacity:0;line-height:1.2}.ImageGif-module__listItem__VxRuu p.ImageGif-module__creatorInfo__blRRh:hover a{color:#fff;text-decoration:underline}.ImageGif-module__listItem__VxRuu p.ImageGif-module__creatorInfo__blRRh a{color:#fff;text-decoration:none}.ImageGif-module__searchOutputWrapper___jVQa{height:100%;min-height:0;overflow:hidden}.ImageGif-module__divider__KsfKq{margin-bottom:calc(var(--marginLG)*1px);border-color:var(--colorBorder)}.ImageGif-module__myMasonryGrid__a8NMG{display:flex;width:auto;text-align:center;gap:calc(var(--marginLG)*1px)}.ImageGif-module__myMasonryGridColumn__H4F4v{background-clip:padding-box}.ImageGif-module__resultsContainer__mad2S{width:640px;max-width:100%;overflow:auto;box-sizing:border-box;padding:60px 16px;border-radius:12px;background-color:var(--colorBgContainer);display:flex;align-items:center;justify-content:center;flex-direction:column}.ImageGif-module__playButton__s2fCB,.ImageGif-module__playButton__s2fCB.anticon svg{color:var(--colorPrimary)}.ImageGif-module__playButton__s2fCB{margin-bottom:16px}.ImageGif-module__title__gLwXB{font-size:16px;font-weight:600;line-height:1.2;margin-bottom:4px}.ImageGif-module__subtitle__xOJbD{font-size:14px;color:var(--colorSecondary);line-height:1.2}.ImageGif-module__dark__oJX1A .ImageGif-module__gifTab__Bgaq5 .listItem{border:1px solid #2b2b2b;background:#2b2b2b}`, "",{"version":3,"sources":["webpack://./src/components/ImageGif/ImageGif.module.scss"],"names":[],"mappings":"AAAA,gCACI,WAAA,CACA,YAAA,CAEA,qCACI,cAAA,CACA,eAAA,CACA,eAAA,CAGJ,2IACI,cAAA,CAIR,uCACI,UAAA,CACA,WAAA,CACA,aAAA,CACA,iBAAA,CACA,qBAAA,CACA,aAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CAGJ,wCACI,SAAA,CACA,WAAA,CACA,cAAA,CACA,wBAAA,CACA,qBAAA,CAGJ,gCACI,cAAA,CAGJ,uCACI,UAAA,CAEA,+EACI,UAAA,CAIR,uCACI,iBAAA,CACA,UAAA,CAGJ,uCACI,YAAA,CACA,UAAA,CACA,iBAAA,CAGJ,6CACI,2BAAA,CAGJ,kCACI,cAAA,CACA,iBAAA,CACA,uBAAA,CACA,wBAAA,CACA,kBAAA,CACA,oBAAA,CACA,iBAAA,CACA,gBAAA,CACA,gBAAA,CACA,iBAAA,CACA,eAAA,CACA,kBAAA,CAEA,wEACI,iBAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,WAAA,CACA,qBAAA,CACA,SAAA,CACA,2BAAA,CAGJ,4CACI,cAAA,CACA,aAAA,CACA,iBAAA,CACA,OAAA,CACA,QAAA,CACA,+BAAA,CAGJ,sCACI,aAAA,CACA,iBAAA,CACA,WAAA,CACA,kBAAA,CACA,SAAA,CACA,kCAAA,CAGJ,iEACI,iBAAA,CACA,wBAAA,CAEA,qEACI,SAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CAGJ,sGACI,UAAA,CAIR,wCACI,oGAAA,CAGA,8EACI,SAAA,CAGJ,8EACI,SAAA,CAIR,wEACI,iBAAA,CACA,uBAAA,CACA,QAAA,CACA,OAAA,CACA,QAAA,CACA,+BAAA,CACA,UAAA,CACA,WAAA,CACA,cAAA,CACA,SAAA,CACA,eAAA,CAGI,gFACI,UAAA,CACA,yBAAA,CAIR,0EACI,UAAA,CACA,oBAAA,CAKZ,6CACI,WAAA,CACA,YAAA,CACA,eAAA,CAGJ,iCACI,uCAAA,CACA,+BAAA,CAGJ,uCACI,YAAA,CACA,UAAA,CACA,iBAAA,CACA,6BAAA,CAGJ,6CACI,2BAAA,CAGJ,0CACI,WAAA,CACA,cAAA,CACA,aAAA,CACA,qBAAA,CACA,iBAAA,CACA,kBAAA,CACA,wCAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,qBAAA,CAOJ,oFAEI,yBAAA,CAGJ,oCACI,kBAAA,CAGJ,+BACI,cAAA,CACA,eAAA,CACA,eAAA,CACA,iBAAA,CAGJ,kCACI,cAAA,CACA,2BAAA,CACA,eAAA,CAKI,wEACI,wBAAA,CACA,kBAAA","sourcesContent":[".gifTab {\r\n height: 100%;\r\n min-height: 0;\r\n\r\n :global(.img) {\r\n max-width: none;\r\n max-height: none;\r\n border-radius: 0;\r\n }\r\n\r\n :global(.ant-divider-horizontal.ant-divider-with-text::before, .ant-divider-horizontal.ant-divider-with-text::after) {\r\n transform: none;\r\n }\r\n}\r\n\r\n.scrollableDiv {\r\n width: 100%;\r\n height: 100%;\r\n overflow: auto;\r\n overflow-x: hidden;\r\n box-sizing: border-box;\r\n line-height: 0;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n padding: 24px;\r\n}\r\n\r\n.gifSearchInput {\r\n padding: 0;\r\n width: 640px;\r\n max-width: 100%;\r\n transition: width 1s ease;\r\n margin: auto auto 24px;\r\n}\r\n\r\n.search {\r\n max-width: 100%;\r\n}\r\n\r\n.searchResults {\r\n width: 100%;\r\n\r\n .gifSearchInput {\r\n width: 100%;\r\n }\r\n}\r\n\r\n.virtualCanvas {\r\n position: relative;\r\n width: 100%;\r\n}\r\n\r\n.myMasonryGrid {\r\n display: flex;\r\n width: auto;\r\n text-align: center;\r\n}\r\n\r\n.myMasonryGridColumn {\r\n background-clip: padding-box;\r\n}\r\n\r\n.listItem {\r\n cursor: pointer;\r\n position: relative;\r\n transition: all 0.3s ease;\r\n border: 1px solid #f0f2f5;\r\n margin-bottom: 20px;\r\n display: inline-block;\r\n border-radius: 6px;\r\n min-height: 100px;\r\n max-height: 100px;\r\n max-width: inherit;\r\n overflow: hidden;\r\n background: #f0f2f5;\r\n\r\n .overlayImage {\r\n position: absolute;\r\n bottom: 10px;\r\n right: 10px;\r\n width: 110px;\r\n height: 40px;\r\n background-size: cover;\r\n opacity: 0;\r\n transition: opacity 0.5s ease;\r\n }\r\n\r\n :global(.ant-spin) {\r\n font-size: 20px;\r\n color: #f0f2f5;\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n }\r\n\r\n & img {\r\n display: block;\r\n border-radius: 6px;\r\n height: auto;\r\n object-fit: contain;\r\n opacity: 0;\r\n transition: opacity 0.5s ease-in-out;\r\n }\r\n\r\n &.loaded {\r\n max-height: 1000px;\r\n border: 1px solid #d9d9d9;\r\n\r\n & img {\r\n opacity: 1;\r\n height: 100%;\r\n width: 100%;\r\n margin: auto;\r\n }\r\n\r\n & .loadedImage {\r\n opacity: 0.5;\r\n }\r\n }\r\n\r\n &:hover {\r\n box-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12),\r\n 0 5px 12px 4px rgba(0, 0, 0, 0.09);\r\n\r\n & p.creatorInfo {\r\n opacity: 1;\r\n }\r\n\r\n .overlayImage {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n p.creatorInfo {\r\n position: absolute;\r\n border-radius: 0 0 6px 0;\r\n bottom: 0;\r\n right: 0;\r\n margin: 0;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n color: #fff;\r\n padding: 5px;\r\n font-size: 10px;\r\n opacity: 0;\r\n line-height: 1.2;\r\n\r\n &:hover {\r\n a {\r\n color: #fff;\r\n text-decoration: underline;\r\n }\r\n }\r\n\r\n & a {\r\n color: #fff;\r\n text-decoration: none;\r\n }\r\n }\r\n}\r\n\r\n.searchOutputWrapper {\r\n height: 100%;\r\n min-height: 0;\r\n overflow: hidden;\r\n}\r\n\r\n.divider {\r\n margin-bottom: calc(var(--marginLG) * 1px);\r\n border-color: var(--colorBorder);\r\n}\r\n\r\n.myMasonryGrid {\r\n display: flex;\r\n width: auto;\r\n text-align: center;\r\n gap: calc(var(--marginLG) * 1px);\r\n}\r\n\r\n.myMasonryGridColumn {\r\n background-clip: padding-box;\r\n}\r\n\r\n.resultsContainer {\r\n width: 640px;\r\n max-width: 100%;\r\n overflow: auto;\r\n box-sizing: border-box;\r\n padding: 60px 16px;\r\n border-radius: 12px;\r\n background-color: var(--colorBgContainer);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-direction: column;\r\n}\r\n\r\n/* Иконка приходит как antd <Icon> — это span.anticon, а SVG внутри рисуется\r\n через currentColor. Хост-приложение может задавать `.blocks-app .anticon { color: inherit }`\r\n (два класса), что перебивает одиночный `.playButton` и красит иконку в чёрный.\r\n Дублируем цвет на самом svg — там у хоста правил на color нет. */\r\n.playButton,\r\n.playButton:global(.anticon) svg {\r\n color: var(--colorPrimary);\r\n}\r\n\r\n.playButton {\r\n margin-bottom: 16px;\r\n}\r\n\r\n.title {\r\n font-size: 16px;\r\n font-weight: 600;\r\n line-height: 1.2;\r\n margin-bottom: 4px;\r\n}\r\n\r\n.subtitle {\r\n font-size: 14px;\r\n color: var(--colorSecondary);\r\n line-height: 1.2;\r\n}\r\n\r\n.dark {\r\n .gifTab {\r\n & :global(.listItem) {\r\n border: 1px solid #2b2b2b;\r\n background: #2b2b2b;\r\n }\r\n }\r\n}"],"sourceRoot":""}]);
42076
42101
  // Exports
42077
42102
  ___CSS_LOADER_EXPORT___.locals = {
42078
42103
  "gifTab": `ImageGif-module__gifTab__Bgaq5`,
@@ -43443,7 +43468,7 @@ __webpack_require__.d(__webpack_exports__, {
43443
43468
  _O: () => (/* reexport */ useViewportMetricsSync)
43444
43469
  });
43445
43470
 
43446
- // UNUSED EXPORTS: FileManagerContext, useLastDirectory, useModals
43471
+ // UNUSED EXPORTS: FileManagerContext, mergeLazyRootFolders, useLastDirectory, useModals
43447
43472
 
43448
43473
  // EXTERNAL MODULE: ./src/hooks/core/index.ts + 4 modules
43449
43474
  var core = __webpack_require__(4002);
@@ -48431,7 +48456,7 @@ var ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = __webpack_require__(1354);
48431
48456
  var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(6314);
48432
48457
  var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);
48433
48458
  // Module
48434
- ___CSS_LOADER_EXPORT___.push([module.id, `.FolderSidebar-module__button__Yf2rX.ant-btn.ant-btn-icon-only{padding:calc(var(--paddingXXS)*1px) calc(var(--paddingSM)*1px);cursor:pointer;color:var(--colorTextSecondary);display:flex;gap:calc(var(--marginXS)*1px);align-items:center;justify-content:center;border-radius:calc(var(--borderRadiusSM)*1px);transition:all var(--motionDurationFast);box-shadow:none;border:none;width:32px;height:32px}.FolderSidebar-module__button__Yf2rX.ant-btn.ant-btn-icon-only:hover{background-color:var(--colorBgLayout);color:inherit}.FolderSidebar-module__button__Yf2rX:hover{background-color:var(--colorBgContainer);color:var(--colorPrimary)}.FolderSidebar-module__foldersTitle__Uh6u7{display:flex;align-items:center;flex:1;cursor:pointer}.FolderSidebar-module__folderActions__qA2Bk{position:absolute;top:4px;right:4px;display:flex;align-items:center;gap:4px;z-index:10}.FolderSidebar-module__folderActions__qA2Bk .FolderSidebar-module__button__Yf2rX.FolderSidebar-module__ant-btn__LXAXm.FolderSidebar-module__ant-btn-icon-only__j_wVF{padding:calc(var(--paddingXXS)*1px) calc(var(--paddingSM)*1px);cursor:pointer;color:var(--colorTextSecondary);display:flex;gap:calc(var(--marginXS)*1px);align-items:center;justify-content:center;border-radius:calc(var(--borderRadiusSM)*1px);transition:all var(--motionDurationFast);box-shadow:none;border:none;width:32px;height:32px}.FolderSidebar-module__folderActions__qA2Bk .FolderSidebar-module__button__Yf2rX.FolderSidebar-module__ant-btn__LXAXm.FolderSidebar-module__ant-btn-icon-only__j_wVF:hover{background-color:var(--colorBgLayout);color:inherit}.FolderSidebar-module__customExpandIcon__IhZJl{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:8px;cursor:pointer;color:#666;font-size:10px;transition:transform .2s ease}.FolderSidebar-module__customExpandIcon__IhZJl:hover{color:var(--colorPrimary)}.FolderSidebar-module__fileCount__bD9DD{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:100%;padding:0 6px;margin-left:8px;color:#8d8d8d;font-size:14px;font-weight:500;transition:all .2s ease;white-space:nowrap;cursor:default;flex-shrink:0;margin-right:10px}.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected{background-color:rgba(0,0,0,0) !important}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode-selected .folder-label span,.FolderSidebar-module__folderMenu__JCzLF .ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected .folderLabelItem,.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode-selected .folderLabelItem,.FolderSidebar-module__folderMenu__JCzLF .ant-tree-node-selected .folderLabelItem{font-weight:600 !important}.FolderSidebar-module__uploadButton__QQUid{width:100%;justify-content:flex-start}.FolderSidebar-module__uploadButton__QQUid button:hover{background-color:var(--colorPrimaryHover) !important}.FolderSidebar-module__folderMenu__JCzLF{padding-left:0;padding-right:0}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode{display:flex;align-items:center;justify-content:space-between;padding:4px 0;border-radius:4px;transition:background-color .2s ease;width:100%;margin-bottom:0}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-node-content-wrapper{flex:1;align-items:center;padding:0;transition:background-color .2s ease}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-node-content-wrapper:hover{background-color:rgba(0,0,0,0)}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-switcher{height:24px;width:24px;margin-top:5px;display:flex !important;align-items:center;justify-content:center;transition:color .2s ease;flex-shrink:0}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-switcher-noop{width:24px}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-switcher-line-icon{color:#d9d9d9}.FolderSidebar-module__folderMenu__JCzLF .FolderSidebar-module__folderItemContainer__byl5b{width:100%;display:flex;align-items:center;justify-content:space-between;padding:2px 0;min-width:0}.FolderSidebar-module__folderMenu__JCzLF .folder-label{display:flex;align-items:center;flex:1;color:#595959;font-size:14px;min-width:0;overflow:hidden}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode[data-key="folders"]{border-bottom:1px solid var(--colorBorderSecondary);margin-bottom:8px;padding-bottom:8px}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode[data-key="folders"].ant-tree-treenode-selected{background-color:rgba(0,0,0,0) !important}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode[data-key="folders"] .ant-tree-node-content-wrapper{padding:0}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode[data-key="folders"] .ant-tree-node-content-wrapper:hover{background-color:rgba(0,0,0,0) !important}.FolderSidebar-module__folderMenu__JCzLF .ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.FolderSidebar-module__folderMenu__JCzLF .FolderSidebar-module__emptyFolderContainer__WK6tx{padding:20px;text-align:center}.FolderSidebar-module__folderMenu__JCzLF .ant-tree > .ant-tree-treenode{padding-left:0 !important}.FolderSidebar-module__folderIcon__UoZzH{margin-right:8px;font-size:18px;flex-shrink:0}.FolderSidebar-module__folderLabelItem__uJ062{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;user-select:none}.FolderSidebar-module__foldersTitleItem__gapOI{display:flex;align-items:center;flex:1;cursor:pointer;min-width:0;overflow:hidden}.FolderSidebar-module__folderLabel__fHWMp{display:flex;align-items:center;flex:1;min-width:0;overflow:hidden}.FolderSidebar-module__foldersContainer__zdBVU{position:relative;width:100%}.FolderSidebar-module__uploadButton__QQUid .FolderSidebar-module__ant-btn__LXAXm,.FolderSidebar-module__uploadButton__QQUid .ant-btn{display:flex;align-items:center;justify-content:center;gap:3px}.FolderSidebar-module__buttonWrapper__a9Qi5{margin-bottom:24px;display:flex;gap:4px}.FolderSidebar-module__buttonWrapper__a9Qi5>:first-child{flex:1;height:40px;padding-left:10px}.FolderSidebar-module__buttonWrapper__a9Qi5>:last-child{width:40px;height:40px;flex-shrink:0}.FolderSidebar-module__uploadButtonIcon__mWQmq{font-size:20px}.FolderSidebar-module__uploadButtonTitle__wk_o6{line-height:1em}.FolderSidebar-module__emptyFolderContainer__WK6tx{user-select:none;cursor:default;color:var(--colorTextTertiary)}.FolderSidebar-module__folderItemContainer__byl5b{width:100%;display:flex;align-items:center;justify-content:space-between;padding:2px 0;min-width:0}`, "",{"version":3,"sources":["webpack://./src/components/FolderSidebar/FolderSidebar.module.scss"],"names":[],"mappings":"AAAA,+DACI,8DAAA,CACA,cAAA,CACA,+BAAA,CACA,YAAA,CACA,6BAAA,CACA,kBAAA,CACA,sBAAA,CACA,6CAAA,CACA,wCAAA,CACA,eAAA,CAEA,WAAA,CACA,UAAA,CACA,WAAA,CAEA,qEACI,qCAAA,CACA,aAAA,CAIR,2CACI,wCAAA,CACA,yBAAA,CAGJ,2CACE,YAAA,CACA,kBAAA,CACA,MAAA,CACA,cAAA,CAGF,4CACI,iBAAA,CACA,OAAA,CACA,SAAA,CACA,YAAA,CACA,kBAAA,CACA,OAAA,CACA,UAAA,CAEA,qKACE,8DAAA,CACA,cAAA,CACA,+BAAA,CACA,YAAA,CACA,6BAAA,CACA,kBAAA,CACA,sBAAA,CACA,6CAAA,CACA,wCAAA,CACA,eAAA,CAEA,WAAA,CACA,UAAA,CACA,WAAA,CAEA,2KACI,qCAAA,CACA,aAAA,CAKV,+CACE,mBAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,UAAA,CACA,cAAA,CACA,6BAAA,CAGF,qDACI,yBAAA,CAGJ,wCACE,mBAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CACE,WAAA,CACF,aAAA,CACA,eAAA,CACE,aAAA,CACA,cAAA,CACF,eAAA,CACA,uBAAA,CACA,kBAAA,CACA,cAAA,CACA,aAAA,CACA,iBAAA,CAQF,gEACE,yCAAA,CAQF,0XAIE,0BAAA,CAWF,2CACI,UAAA,CACA,0BAAA,CAEA,wDACE,oDAAA,CAIN,yCACE,cAAA,CACA,eAAA,CAGF,4DACE,YAAA,CACA,kBAAA,CACA,6BAAA,CACA,aAAA,CACA,iBAAA,CACA,oCAAA,CACA,UAAA,CACA,eAAA,CAGF,wEACE,MAAA,CAEA,kBAAA,CACA,SAAA,CAEA,oCAAA,CAGF,8EACE,8BAAA,CAGF,4DACE,WAAA,CACA,UAAA,CACA,cAAA,CACA,uBAAA,CACA,kBAAA,CACA,sBAAA,CACA,yBAAA,CACA,aAAA,CAGF,iEACE,UAAA,CAIF,sEACE,aAAA,CAIF,2FACE,UAAA,CACA,YAAA,CACA,kBAAA,CACA,6BAAA,CACA,aAAA,CACA,WAAA,CAGF,uDACE,YAAA,CACA,kBAAA,CACA,MAAA,CACA,aAAA,CACA,cAAA,CACA,WAAA,CACA,eAAA,CAIF,gFACI,mDAAA,CACF,iBAAA,CACA,kBAAA,CAGF,2GACE,yCAAA,CAGF,+GACE,SAAA,CAGF,qHACE,yCAAA,CAIF,mDACE,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,MAAA,CACA,WAAA,CAIF,4FACE,YAAA,CACA,iBAAA,CAIF,wEACE,yBAAA,CAEF,yCACE,gBAAA,CACE,cAAA,CACF,aAAA,CAGF,8CACE,cAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,MAAA,CACA,WAAA,CACA,gBAAA,CAGF,+CACE,YAAA,CACA,kBAAA,CACA,MAAA,CACA,cAAA,CACA,WAAA,CACA,eAAA,CASF,0CACE,YAAA,CACA,kBAAA,CACA,MAAA,CACA,WAAA,CACA,eAAA,CAGF,+CACE,iBAAA,CACA,UAAA,CAWF,qIAEE,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,OAAA,CAaF,4CAEI,kBAAA,CACA,YAAA,CACA,OAAA,CAIA,yDACI,MAAA,CACA,WAAA,CACA,iBAAA,CAIJ,wDACI,UAAA,CACA,WAAA,CACA,aAAA,CAIR,+CACI,cAAA,CAGJ,gDACI,eAAA,CAGJ,mDACI,gBAAA,CACA,cAAA,CACA,8BAAA,CAGJ,kDACI,UAAA,CACA,YAAA,CACA,kBAAA,CACA,6BAAA,CACA,aAAA,CACA,WAAA","sourcesContent":[".button:global(.ant-btn.ant-btn-icon-only) {\r\n padding: calc(var(--paddingXXS) * 1px) calc(var(--paddingSM) * 1px);\r\n cursor: pointer;\r\n color: var(--colorTextSecondary);\r\n display: flex;\r\n gap: calc(var(--marginXS) * 1px);\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: calc(var(--borderRadiusSM) * 1px);\r\n transition: all var(--motionDurationFast);\r\n box-shadow: none;\r\n\r\n border: none;\r\n width: 32px;\r\n height: 32px;\r\n\r\n &:hover {\r\n background-color: var(--colorBgLayout);\r\n color: inherit;\r\n }\r\n}\r\n\r\n.button:hover {\r\n background-color: var(--colorBgContainer);\r\n color: var(--colorPrimary);\r\n}\r\n\r\n.foldersTitle {\r\n display: flex;\r\n align-items: center;\r\n flex: 1;\r\n cursor: pointer;\r\n}\r\n\r\n.folderActions {\r\n position: absolute;\r\n top: 4px; /* Выравниваем по заголовку Folders */\r\n right: 4px;\r\n display: flex;\r\n align-items: center;\r\n gap: 4px;\r\n z-index: 10;\r\n\r\n .button.ant-btn.ant-btn-icon-only {\r\n padding: calc(var(--paddingXXS) * 1px) calc(var(--paddingSM) * 1px);\r\n cursor: pointer;\r\n color: var(--colorTextSecondary);\r\n display: flex;\r\n gap: calc(var(--marginXS) * 1px);\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: calc(var(--borderRadiusSM) * 1px);\r\n transition: all var(--motionDurationFast);\r\n box-shadow: none;\r\n\r\n border: none;\r\n width: 32px;\r\n height: 32px;\r\n\r\n &:hover {\r\n background-color: var(--colorBgLayout);\r\n color: inherit;\r\n }\r\n }\r\n}\r\n\r\n.customExpandIcon {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 16px;\r\n height: 16px;\r\n margin-right: 8px;\r\n cursor: pointer;\r\n color: #666;\r\n font-size: 10px;\r\n transition: transform 0.2s ease;\r\n}\r\n\r\n.customExpandIcon:hover {\r\n color: var(--colorPrimary);\r\n}\r\n\r\n.fileCount {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n min-width: 20px;\r\n height: 100%;\r\n padding: 0 6px;\r\n margin-left: 8px;\r\n color: #8D8D8D;\r\n font-size: 14px;\r\n font-weight: 500;\r\n transition: all 0.2s ease;\r\n white-space: nowrap;\r\n cursor: default;\r\n flex-shrink: 0; /* Запрещаем сжатие счетчика */\r\n margin-right: 10px;\r\n}\r\n\r\n// .fileCount:hover {\r\n// border-color: var(--colorPrimary);\r\n// color: var(--colorPrimary);\r\n// }\r\n\r\n:global(.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected) {\r\n background-color: transparent !important;\r\n}\r\n\r\n/* :global(.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected):hover {\r\n color: red !important;\r\n} */\r\n\r\n/* Стили для выделения текста в выбранной папке */\r\n.folderMenu :global(.ant-tree-treenode-selected .folder-label span),\r\n.folderMenu :global(.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected .folderLabelItem),\r\n.folderMenu :global(.ant-tree-treenode-selected .folderLabelItem),\r\n.folderMenu :global(.ant-tree-node-selected .folderLabelItem) {\r\n font-weight: 600 !important;\r\n}\r\n\r\n/* Стили для иконки в выбранной папке */\r\n/* .folderMenu :global(.ant-tree-treenode-selected .folderIcon),\r\n.folderMenu :global(.ant-tree-node-selected .folderIcon) {\r\n color: red !important;\r\n} */\r\n\r\n/* CSS переменные для упрощения расчетов */\r\n\r\n.uploadButton {\r\n width: 100%;\r\n justify-content: flex-start;\r\n\r\n & button:hover {\r\n background-color: var(--colorPrimaryHover) !important;\r\n }\r\n}\r\n\r\n.folderMenu {\r\n padding-left: 0;\r\n padding-right: 0; /* Место для кнопки справа */\r\n}\r\n\r\n.folderMenu :global(.ant-tree-treenode) {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 4px 0;\r\n border-radius: 4px;\r\n transition: background-color 0.2s ease;\r\n width: 100%;\r\n margin-bottom: 0;\r\n}\r\n\r\n.folderMenu :global(.ant-tree-node-content-wrapper) {\r\n flex: 1;\r\n /* display: flex; */\r\n align-items: center;\r\n padding: 0;\r\n /* border-radius: 4px; */\r\n transition: background-color 0.2s ease;\r\n}\r\n\r\n.folderMenu :global(.ant-tree-node-content-wrapper:hover) {\r\n background-color: transparent;\r\n}\r\n\r\n.folderMenu :global(.ant-tree-switcher) {\r\n height: 24px;\r\n width: 24px;\r\n margin-top: 5px;\r\n display: flex !important;\r\n align-items: center;\r\n justify-content: center;\r\n transition: color 0.2s ease;\r\n flex-shrink: 0; /* Запрещаем сжатие переключателя */\r\n}\r\n\r\n.folderMenu :global(.ant-tree-switcher-noop) {\r\n width: 24px;\r\n}\r\n\r\n/* Стили для линий дерева */\r\n.folderMenu :global(.ant-tree-switcher-line-icon) {\r\n color: #d9d9d9;\r\n}\r\n\r\n/* Улучшение отображения folder-item-container */\r\n.folderMenu .folderItemContainer {\r\n width: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 2px 0;\r\n min-width: 0; /* Позволяет flex-элементам сжиматься */\r\n}\r\n\r\n.folderMenu :global(.folder-label) {\r\n display: flex;\r\n align-items: center;\r\n flex: 1;\r\n color: #595959;\r\n font-size: 14px;\r\n min-width: 0;\r\n overflow: hidden;\r\n}\r\n\r\n/* Стили для корневого элемента Folders */\r\n.folderMenu :global(.ant-tree-treenode[data-key='folders']) {\r\n border-bottom: 1px solid var(--colorBorderSecondary);\r\n margin-bottom: 8px;\r\n padding-bottom: 8px;\r\n}\r\n\r\n.folderMenu :global(.ant-tree-treenode[data-key='folders'].ant-tree-treenode-selected) {\r\n background-color: transparent !important;\r\n}\r\n\r\n.folderMenu :global(.ant-tree-treenode[data-key='folders'] .ant-tree-node-content-wrapper) {\r\n padding: 0;\r\n}\r\n\r\n.folderMenu :global(.ant-tree-treenode[data-key='folders'] .ant-tree-node-content-wrapper:hover) {\r\n background-color: transparent !important;\r\n}\r\n\r\n/* Стили для ellipsis - удаляем max-width для гибкости */\r\n.folderMenu :global(.ellipsis) {\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n flex: 1;\r\n min-width: 0;\r\n}\r\n\r\n/* Стили для пустого состояния */\r\n.folderMenu .emptyFolderContainer {\r\n padding: 20px;\r\n text-align: center;\r\n}\r\n\r\n/* Убираем отступы у корневого узла */\r\n.folderMenu :global(.ant-tree > .ant-tree-treenode) {\r\n padding-left: 0 !important;\r\n}\r\n.folderIcon {\r\n margin-right: 8px;\r\n font-size: 18px;\r\n flex-shrink: 0; /* Запрещаем сжатие иконки */\r\n}\r\n\r\n.folderLabelItem {\r\n font-size: 14px;\r\n white-space: nowrap; /* Запрещаем перенос строк */\r\n overflow: hidden; /* Скрываем переполнение */\r\n text-overflow: ellipsis; /* Показываем троеточие */\r\n flex: 1; /* Занимает доступное место */\r\n min-width: 0; /* Позволяет сжиматься */\r\n user-select: none;\r\n}\r\n\r\n.foldersTitleItem {\r\n display: flex;\r\n align-items: center;\r\n flex: 1;\r\n cursor: pointer;\r\n min-width: 0; /* Позволяет сжиматься */\r\n overflow: hidden; /* Скрываем переполнение */\r\n}\r\n\r\n/* .foldersTitleItem .folderLabelItem {\r\n font-weight: 500;\r\n color: #262626;\r\n} */\r\n\r\n/* Класс для заголовка папок */\r\n.folderLabel {\r\n display: flex;\r\n align-items: center;\r\n flex: 1;\r\n min-width: 0;\r\n overflow: hidden;\r\n}\r\n\r\n.foldersContainer {\r\n position: relative;\r\n width: 100%;\r\n}\r\n\r\n/* Дополнительные стили для улучшения визуала */\r\n/* .folderMenu :global(.ant-tree-treenode:hover .folder-label span) {\r\n color: #1890ff;\r\n} */\r\n\r\n/* Стили для дивайдера между папками */\r\n\r\n\r\n.uploadButton .ant-btn,\r\n.uploadButton :global(.ant-btn) {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n gap: 3px;\r\n}\r\n/* .folderMenu :global(.ant-tree-treenode-selected) .folderLabelItem {\r\n color: #1890ff !important;\r\n} */\r\n\r\n// .folderMenu :global(.ant-tree-treenode-selected) .folderLabel .folderLabelItem,\r\n// .folderMenu :global(.ant-tree-treenode-selected) .folderLabel .folderIcon,\r\n// .folderMenu :global(.ant-tree-treenode-selected) .folderLabelItem {\r\n// color: var(--colorLink);\r\n// }\r\n\r\n\r\n.buttonWrapper {\r\n // overflow: hidden;\r\n margin-bottom: 24px;\r\n display: flex;\r\n gap: 4px;\r\n // border-radius: calc(var(--borderRadius) * 1px);\r\n \r\n // Левая кнопка занимает всю доступную ширину\r\n > :first-child {\r\n flex: 1;\r\n height: 40px;\r\n padding-left: 10px;\r\n }\r\n \r\n // Правая кнопка строго 40px\r\n > :last-child {\r\n width: 40px;\r\n height: 40px;\r\n flex-shrink: 0;\r\n }\r\n}\r\n\r\n.uploadButtonIcon {\r\n font-size: 20px;\r\n}\r\n\r\n.uploadButtonTitle {\r\n line-height: 1em;\r\n}\r\n\r\n.emptyFolderContainer {\r\n user-select: none;\r\n cursor: default;\r\n color: var(--colorTextTertiary);\r\n}\r\n\r\n.folderItemContainer {\r\n width: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 2px 0;\r\n min-width: 0; /* Позволяет flex-элементам сжиматься */\r\n}\r\n"],"sourceRoot":""}]);
48459
+ ___CSS_LOADER_EXPORT___.push([module.id, `.FolderSidebar-module__button__Yf2rX.ant-btn.ant-btn-icon-only{padding:calc(var(--paddingXXS)*1px) calc(var(--paddingSM)*1px);cursor:pointer;color:var(--colorTextSecondary);display:flex;gap:calc(var(--marginXS)*1px);align-items:center;justify-content:center;border-radius:calc(var(--borderRadiusSM)*1px);transition:all var(--motionDurationFast);box-shadow:none;border:none;width:32px;height:32px}.FolderSidebar-module__button__Yf2rX.ant-btn.ant-btn-icon-only:hover{background-color:var(--colorBgLayout);color:inherit}.FolderSidebar-module__button__Yf2rX:hover{background-color:var(--colorBgContainer);color:var(--colorPrimary)}.FolderSidebar-module__foldersTitle__Uh6u7{display:flex;align-items:center;flex:1;cursor:pointer}.FolderSidebar-module__folderActions__qA2Bk{position:absolute;top:4px;right:4px;display:flex;align-items:center;gap:4px;z-index:10}.FolderSidebar-module__folderActions__qA2Bk .FolderSidebar-module__button__Yf2rX.FolderSidebar-module__ant-btn__LXAXm.FolderSidebar-module__ant-btn-icon-only__j_wVF{padding:calc(var(--paddingXXS)*1px) calc(var(--paddingSM)*1px);cursor:pointer;color:var(--colorTextSecondary);display:flex;gap:calc(var(--marginXS)*1px);align-items:center;justify-content:center;border-radius:calc(var(--borderRadiusSM)*1px);transition:all var(--motionDurationFast);box-shadow:none;border:none;width:32px;height:32px}.FolderSidebar-module__folderActions__qA2Bk .FolderSidebar-module__button__Yf2rX.FolderSidebar-module__ant-btn__LXAXm.FolderSidebar-module__ant-btn-icon-only__j_wVF:hover{background-color:var(--colorBgLayout);color:inherit}.FolderSidebar-module__customExpandIcon__IhZJl{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:8px;cursor:pointer;color:#666;font-size:10px;transition:transform .2s ease}.FolderSidebar-module__customExpandIcon__IhZJl:hover{color:var(--colorPrimary)}.FolderSidebar-module__fileCount__bD9DD{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:100%;padding:0 6px;margin-left:8px;color:#8d8d8d;font-size:14px;font-weight:500;transition:all .2s ease;white-space:nowrap;cursor:default;flex-shrink:0;margin-right:10px}.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected{background-color:rgba(0,0,0,0) !important}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode-selected .folder-label span,.FolderSidebar-module__folderMenu__JCzLF .ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected .folderLabelItem,.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode-selected .folderLabelItem,.FolderSidebar-module__folderMenu__JCzLF .ant-tree-node-selected .folderLabelItem{font-weight:600 !important}.FolderSidebar-module__uploadButton__QQUid{width:100%;justify-content:flex-start}.FolderSidebar-module__uploadButton__QQUid button:hover{background-color:var(--colorPrimaryHover) !important}.FolderSidebar-module__folderMenu__JCzLF{padding-left:0;padding-right:0}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode{display:flex;align-items:center;justify-content:space-between;padding:4px 0;border-radius:4px;transition:background-color .2s ease;width:100%;margin-bottom:0}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-node-content-wrapper{flex:1;align-items:center;padding:0;transition:background-color .2s ease}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-node-content-wrapper:hover{background-color:rgba(0,0,0,0)}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-switcher{height:24px;width:24px;margin-top:5px;display:flex !important;align-items:center;justify-content:center;transition:color .2s ease;flex-shrink:0}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-switcher-noop{width:24px}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-switcher-line-icon{color:#d9d9d9}.FolderSidebar-module__folderMenu__JCzLF .FolderSidebar-module__folderItemContainer__byl5b{width:100%;display:flex;align-items:center;justify-content:space-between;padding:2px 0;min-width:0}.FolderSidebar-module__folderMenu__JCzLF .folder-label{display:flex;align-items:center;flex:1;color:#595959;font-size:14px;min-width:0;overflow:hidden}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode[data-key="folders"]{border-bottom:1px solid var(--colorBorderSecondary);margin-bottom:8px;padding-bottom:8px}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode[data-key="folders"].ant-tree-treenode-selected{background-color:rgba(0,0,0,0) !important}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode[data-key="folders"] .ant-tree-node-content-wrapper{padding:0}.FolderSidebar-module__folderMenu__JCzLF .ant-tree-treenode[data-key="folders"] .ant-tree-node-content-wrapper:hover{background-color:rgba(0,0,0,0) !important}.FolderSidebar-module__folderMenu__JCzLF .ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.FolderSidebar-module__folderMenu__JCzLF .FolderSidebar-module__emptyFolderContainer__WK6tx{padding:20px;text-align:center}.FolderSidebar-module__folderMenu__JCzLF .ant-tree > .ant-tree-treenode{padding-left:0 !important}.FolderSidebar-module__folderIcon__UoZzH{margin-right:8px;font-size:18px;flex-shrink:0}.FolderSidebar-module__folderLabelItem__uJ062{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;user-select:none}.FolderSidebar-module__foldersTitleItem__gapOI{display:flex;align-items:center;flex:1;cursor:pointer;min-width:0;overflow:hidden}.FolderSidebar-module__folderLabel__fHWMp{display:flex;align-items:center;flex:1;min-width:0;overflow:hidden}.FolderSidebar-module__foldersContainer__zdBVU{position:relative;width:100%}.FolderSidebar-module__uploadButton__QQUid .FolderSidebar-module__ant-btn__LXAXm,.FolderSidebar-module__uploadButton__QQUid .ant-btn{display:flex;align-items:center;justify-content:center;gap:3px}.FolderSidebar-module__buttonWrapper__a9Qi5{margin-bottom:24px;display:flex;gap:4px}.FolderSidebar-module__buttonWrapper__a9Qi5>:first-child{flex:1;height:40px;padding-left:10px}.FolderSidebar-module__buttonWrapper__a9Qi5>:last-child{width:40px;height:40px;flex-shrink:0}.FolderSidebar-module__uploadByURLButton__epMiC.ant-btn.ant-btn-icon-only{width:40px;min-width:40px;height:40px;padding:0;flex-shrink:0}.FolderSidebar-module__uploadButtonIcon__mWQmq{font-size:20px}.FolderSidebar-module__uploadButtonTitle__wk_o6{line-height:1em}.FolderSidebar-module__emptyFolderContainer__WK6tx{user-select:none;cursor:default;color:var(--colorTextTertiary)}.FolderSidebar-module__folderItemContainer__byl5b{width:100%;display:flex;align-items:center;justify-content:space-between;padding:2px 0;min-width:0}`, "",{"version":3,"sources":["webpack://./src/components/FolderSidebar/FolderSidebar.module.scss"],"names":[],"mappings":"AAAA,+DACI,8DAAA,CACA,cAAA,CACA,+BAAA,CACA,YAAA,CACA,6BAAA,CACA,kBAAA,CACA,sBAAA,CACA,6CAAA,CACA,wCAAA,CACA,eAAA,CAEA,WAAA,CACA,UAAA,CACA,WAAA,CAEA,qEACI,qCAAA,CACA,aAAA,CAIR,2CACI,wCAAA,CACA,yBAAA,CAGJ,2CACE,YAAA,CACA,kBAAA,CACA,MAAA,CACA,cAAA,CAGF,4CACI,iBAAA,CACA,OAAA,CACA,SAAA,CACA,YAAA,CACA,kBAAA,CACA,OAAA,CACA,UAAA,CAEA,qKACE,8DAAA,CACA,cAAA,CACA,+BAAA,CACA,YAAA,CACA,6BAAA,CACA,kBAAA,CACA,sBAAA,CACA,6CAAA,CACA,wCAAA,CACA,eAAA,CAEA,WAAA,CACA,UAAA,CACA,WAAA,CAEA,2KACI,qCAAA,CACA,aAAA,CAKV,+CACE,mBAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,UAAA,CACA,cAAA,CACA,6BAAA,CAGF,qDACI,yBAAA,CAGJ,wCACE,mBAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CACE,WAAA,CACF,aAAA,CACA,eAAA,CACE,aAAA,CACA,cAAA,CACF,eAAA,CACA,uBAAA,CACA,kBAAA,CACA,cAAA,CACA,aAAA,CACA,iBAAA,CAQF,gEACE,yCAAA,CAQF,0XAIE,0BAAA,CAWF,2CACI,UAAA,CACA,0BAAA,CAEA,wDACE,oDAAA,CAIN,yCACE,cAAA,CACA,eAAA,CAGF,4DACE,YAAA,CACA,kBAAA,CACA,6BAAA,CACA,aAAA,CACA,iBAAA,CACA,oCAAA,CACA,UAAA,CACA,eAAA,CAGF,wEACE,MAAA,CAEA,kBAAA,CACA,SAAA,CAEA,oCAAA,CAGF,8EACE,8BAAA,CAGF,4DACE,WAAA,CACA,UAAA,CACA,cAAA,CACA,uBAAA,CACA,kBAAA,CACA,sBAAA,CACA,yBAAA,CACA,aAAA,CAGF,iEACE,UAAA,CAIF,sEACE,aAAA,CAIF,2FACE,UAAA,CACA,YAAA,CACA,kBAAA,CACA,6BAAA,CACA,aAAA,CACA,WAAA,CAGF,uDACE,YAAA,CACA,kBAAA,CACA,MAAA,CACA,aAAA,CACA,cAAA,CACA,WAAA,CACA,eAAA,CAIF,gFACI,mDAAA,CACF,iBAAA,CACA,kBAAA,CAGF,2GACE,yCAAA,CAGF,+GACE,SAAA,CAGF,qHACE,yCAAA,CAIF,mDACE,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,MAAA,CACA,WAAA,CAIF,4FACE,YAAA,CACA,iBAAA,CAIF,wEACE,yBAAA,CAEF,yCACE,gBAAA,CACE,cAAA,CACF,aAAA,CAGF,8CACE,cAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,MAAA,CACA,WAAA,CACA,gBAAA,CAGF,+CACE,YAAA,CACA,kBAAA,CACA,MAAA,CACA,cAAA,CACA,WAAA,CACA,eAAA,CASF,0CACE,YAAA,CACA,kBAAA,CACA,MAAA,CACA,WAAA,CACA,eAAA,CAGF,+CACE,iBAAA,CACA,UAAA,CAWF,qIAEE,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,OAAA,CAaF,4CAEI,kBAAA,CACA,YAAA,CACA,OAAA,CAIA,yDACI,MAAA,CACA,WAAA,CACA,iBAAA,CAIJ,wDACI,UAAA,CACA,WAAA,CACA,aAAA,CAQR,0EACI,UAAA,CACA,cAAA,CACA,WAAA,CACA,SAAA,CACA,aAAA,CAGJ,+CACI,cAAA,CAGJ,gDACI,eAAA,CAGJ,mDACI,gBAAA,CACA,cAAA,CACA,8BAAA,CAGJ,kDACI,UAAA,CACA,YAAA,CACA,kBAAA,CACA,6BAAA,CACA,aAAA,CACA,WAAA","sourcesContent":[".button:global(.ant-btn.ant-btn-icon-only) {\r\n padding: calc(var(--paddingXXS) * 1px) calc(var(--paddingSM) * 1px);\r\n cursor: pointer;\r\n color: var(--colorTextSecondary);\r\n display: flex;\r\n gap: calc(var(--marginXS) * 1px);\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: calc(var(--borderRadiusSM) * 1px);\r\n transition: all var(--motionDurationFast);\r\n box-shadow: none;\r\n\r\n border: none;\r\n width: 32px;\r\n height: 32px;\r\n\r\n &:hover {\r\n background-color: var(--colorBgLayout);\r\n color: inherit;\r\n }\r\n}\r\n\r\n.button:hover {\r\n background-color: var(--colorBgContainer);\r\n color: var(--colorPrimary);\r\n}\r\n\r\n.foldersTitle {\r\n display: flex;\r\n align-items: center;\r\n flex: 1;\r\n cursor: pointer;\r\n}\r\n\r\n.folderActions {\r\n position: absolute;\r\n top: 4px; /* Выравниваем по заголовку Folders */\r\n right: 4px;\r\n display: flex;\r\n align-items: center;\r\n gap: 4px;\r\n z-index: 10;\r\n\r\n .button.ant-btn.ant-btn-icon-only {\r\n padding: calc(var(--paddingXXS) * 1px) calc(var(--paddingSM) * 1px);\r\n cursor: pointer;\r\n color: var(--colorTextSecondary);\r\n display: flex;\r\n gap: calc(var(--marginXS) * 1px);\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: calc(var(--borderRadiusSM) * 1px);\r\n transition: all var(--motionDurationFast);\r\n box-shadow: none;\r\n\r\n border: none;\r\n width: 32px;\r\n height: 32px;\r\n\r\n &:hover {\r\n background-color: var(--colorBgLayout);\r\n color: inherit;\r\n }\r\n }\r\n}\r\n\r\n.customExpandIcon {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 16px;\r\n height: 16px;\r\n margin-right: 8px;\r\n cursor: pointer;\r\n color: #666;\r\n font-size: 10px;\r\n transition: transform 0.2s ease;\r\n}\r\n\r\n.customExpandIcon:hover {\r\n color: var(--colorPrimary);\r\n}\r\n\r\n.fileCount {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n min-width: 20px;\r\n height: 100%;\r\n padding: 0 6px;\r\n margin-left: 8px;\r\n color: #8D8D8D;\r\n font-size: 14px;\r\n font-weight: 500;\r\n transition: all 0.2s ease;\r\n white-space: nowrap;\r\n cursor: default;\r\n flex-shrink: 0; /* Запрещаем сжатие счетчика */\r\n margin-right: 10px;\r\n}\r\n\r\n// .fileCount:hover {\r\n// border-color: var(--colorPrimary);\r\n// color: var(--colorPrimary);\r\n// }\r\n\r\n:global(.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected) {\r\n background-color: transparent !important;\r\n}\r\n\r\n/* :global(.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected):hover {\r\n color: red !important;\r\n} */\r\n\r\n/* Стили для выделения текста в выбранной папке */\r\n.folderMenu :global(.ant-tree-treenode-selected .folder-label span),\r\n.folderMenu :global(.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected .folderLabelItem),\r\n.folderMenu :global(.ant-tree-treenode-selected .folderLabelItem),\r\n.folderMenu :global(.ant-tree-node-selected .folderLabelItem) {\r\n font-weight: 600 !important;\r\n}\r\n\r\n/* Стили для иконки в выбранной папке */\r\n/* .folderMenu :global(.ant-tree-treenode-selected .folderIcon),\r\n.folderMenu :global(.ant-tree-node-selected .folderIcon) {\r\n color: red !important;\r\n} */\r\n\r\n/* CSS переменные для упрощения расчетов */\r\n\r\n.uploadButton {\r\n width: 100%;\r\n justify-content: flex-start;\r\n\r\n & button:hover {\r\n background-color: var(--colorPrimaryHover) !important;\r\n }\r\n}\r\n\r\n.folderMenu {\r\n padding-left: 0;\r\n padding-right: 0; /* Место для кнопки справа */\r\n}\r\n\r\n.folderMenu :global(.ant-tree-treenode) {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 4px 0;\r\n border-radius: 4px;\r\n transition: background-color 0.2s ease;\r\n width: 100%;\r\n margin-bottom: 0;\r\n}\r\n\r\n.folderMenu :global(.ant-tree-node-content-wrapper) {\r\n flex: 1;\r\n /* display: flex; */\r\n align-items: center;\r\n padding: 0;\r\n /* border-radius: 4px; */\r\n transition: background-color 0.2s ease;\r\n}\r\n\r\n.folderMenu :global(.ant-tree-node-content-wrapper:hover) {\r\n background-color: transparent;\r\n}\r\n\r\n.folderMenu :global(.ant-tree-switcher) {\r\n height: 24px;\r\n width: 24px;\r\n margin-top: 5px;\r\n display: flex !important;\r\n align-items: center;\r\n justify-content: center;\r\n transition: color 0.2s ease;\r\n flex-shrink: 0; /* Запрещаем сжатие переключателя */\r\n}\r\n\r\n.folderMenu :global(.ant-tree-switcher-noop) {\r\n width: 24px;\r\n}\r\n\r\n/* Стили для линий дерева */\r\n.folderMenu :global(.ant-tree-switcher-line-icon) {\r\n color: #d9d9d9;\r\n}\r\n\r\n/* Улучшение отображения folder-item-container */\r\n.folderMenu .folderItemContainer {\r\n width: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 2px 0;\r\n min-width: 0; /* Позволяет flex-элементам сжиматься */\r\n}\r\n\r\n.folderMenu :global(.folder-label) {\r\n display: flex;\r\n align-items: center;\r\n flex: 1;\r\n color: #595959;\r\n font-size: 14px;\r\n min-width: 0;\r\n overflow: hidden;\r\n}\r\n\r\n/* Стили для корневого элемента Folders */\r\n.folderMenu :global(.ant-tree-treenode[data-key='folders']) {\r\n border-bottom: 1px solid var(--colorBorderSecondary);\r\n margin-bottom: 8px;\r\n padding-bottom: 8px;\r\n}\r\n\r\n.folderMenu :global(.ant-tree-treenode[data-key='folders'].ant-tree-treenode-selected) {\r\n background-color: transparent !important;\r\n}\r\n\r\n.folderMenu :global(.ant-tree-treenode[data-key='folders'] .ant-tree-node-content-wrapper) {\r\n padding: 0;\r\n}\r\n\r\n.folderMenu :global(.ant-tree-treenode[data-key='folders'] .ant-tree-node-content-wrapper:hover) {\r\n background-color: transparent !important;\r\n}\r\n\r\n/* Стили для ellipsis - удаляем max-width для гибкости */\r\n.folderMenu :global(.ellipsis) {\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n flex: 1;\r\n min-width: 0;\r\n}\r\n\r\n/* Стили для пустого состояния */\r\n.folderMenu .emptyFolderContainer {\r\n padding: 20px;\r\n text-align: center;\r\n}\r\n\r\n/* Убираем отступы у корневого узла */\r\n.folderMenu :global(.ant-tree > .ant-tree-treenode) {\r\n padding-left: 0 !important;\r\n}\r\n.folderIcon {\r\n margin-right: 8px;\r\n font-size: 18px;\r\n flex-shrink: 0; /* Запрещаем сжатие иконки */\r\n}\r\n\r\n.folderLabelItem {\r\n font-size: 14px;\r\n white-space: nowrap; /* Запрещаем перенос строк */\r\n overflow: hidden; /* Скрываем переполнение */\r\n text-overflow: ellipsis; /* Показываем троеточие */\r\n flex: 1; /* Занимает доступное место */\r\n min-width: 0; /* Позволяет сжиматься */\r\n user-select: none;\r\n}\r\n\r\n.foldersTitleItem {\r\n display: flex;\r\n align-items: center;\r\n flex: 1;\r\n cursor: pointer;\r\n min-width: 0; /* Позволяет сжиматься */\r\n overflow: hidden; /* Скрываем переполнение */\r\n}\r\n\r\n/* .foldersTitleItem .folderLabelItem {\r\n font-weight: 500;\r\n color: #262626;\r\n} */\r\n\r\n/* Класс для заголовка папок */\r\n.folderLabel {\r\n display: flex;\r\n align-items: center;\r\n flex: 1;\r\n min-width: 0;\r\n overflow: hidden;\r\n}\r\n\r\n.foldersContainer {\r\n position: relative;\r\n width: 100%;\r\n}\r\n\r\n/* Дополнительные стили для улучшения визуала */\r\n/* .folderMenu :global(.ant-tree-treenode:hover .folder-label span) {\r\n color: #1890ff;\r\n} */\r\n\r\n/* Стили для дивайдера между папками */\r\n\r\n\r\n.uploadButton .ant-btn,\r\n.uploadButton :global(.ant-btn) {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n gap: 3px;\r\n}\r\n/* .folderMenu :global(.ant-tree-treenode-selected) .folderLabelItem {\r\n color: #1890ff !important;\r\n} */\r\n\r\n// .folderMenu :global(.ant-tree-treenode-selected) .folderLabel .folderLabelItem,\r\n// .folderMenu :global(.ant-tree-treenode-selected) .folderLabel .folderIcon,\r\n// .folderMenu :global(.ant-tree-treenode-selected) .folderLabelItem {\r\n// color: var(--colorLink);\r\n// }\r\n\r\n\r\n.buttonWrapper {\r\n // overflow: hidden;\r\n margin-bottom: 24px;\r\n display: flex;\r\n gap: 4px;\r\n // border-radius: calc(var(--borderRadius) * 1px);\r\n \r\n // Левая кнопка занимает всю доступную ширину\r\n > :first-child {\r\n flex: 1;\r\n height: 40px;\r\n padding-left: 10px;\r\n }\r\n \r\n // Правая кнопка строго 40px\r\n > :last-child {\r\n width: 40px;\r\n height: 40px;\r\n flex-shrink: 0;\r\n }\r\n}\r\n\r\n/* Кнопка «Загрузить по URL» — icon-only, поэтому хост-приложение может задать ей\r\n свои размеры глобальным правилом `.ant-btn.ant-btn-icon-only` (в emailmaker это\r\n --formControlHeight: 34) и она становится ниже кнопки «Загрузить файл».\r\n Три класса в селекторе перебивают такие правила без !important. */\r\n.uploadByURLButton:global(.ant-btn.ant-btn-icon-only) {\r\n width: 40px;\r\n min-width: 40px;\r\n height: 40px;\r\n padding: 0;\r\n flex-shrink: 0;\r\n}\r\n\r\n.uploadButtonIcon {\r\n font-size: 20px;\r\n}\r\n\r\n.uploadButtonTitle {\r\n line-height: 1em;\r\n}\r\n\r\n.emptyFolderContainer {\r\n user-select: none;\r\n cursor: default;\r\n color: var(--colorTextTertiary);\r\n}\r\n\r\n.folderItemContainer {\r\n width: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 2px 0;\r\n min-width: 0; /* Позволяет flex-элементам сжиматься */\r\n}\r\n"],"sourceRoot":""}]);
48435
48460
  // Exports
48436
48461
  ___CSS_LOADER_EXPORT___.locals = {
48437
48462
  "button": `FolderSidebar-module__button__Yf2rX`,
@@ -48453,6 +48478,8 @@ ___CSS_LOADER_EXPORT___.locals = {
48453
48478
  "folderLabel": `FolderSidebar-module__folderLabel__fHWMp`,
48454
48479
  "foldersContainer": `FolderSidebar-module__foldersContainer__zdBVU`,
48455
48480
  "buttonWrapper": `FolderSidebar-module__buttonWrapper__a9Qi5`,
48481
+ "uploadByURLButton": `FolderSidebar-module__uploadByURLButton__epMiC`,
48482
+ "uploadByUrlButton": `FolderSidebar-module__uploadByURLButton__epMiC`,
48456
48483
  "uploadButtonIcon": `FolderSidebar-module__uploadButtonIcon__mWQmq`,
48457
48484
  "uploadButtonTitle": `FolderSidebar-module__uploadButtonTitle__wk_o6`
48458
48485
  };
@@ -48689,7 +48716,7 @@ exports.jsxs = jsxProd;
48689
48716
  /******/ // This function allow to reference async chunks
48690
48717
  /******/ __webpack_require__.u = (chunkId) => {
48691
48718
  /******/ // return url for filenames based on template
48692
- /******/ return "" + ({"379":"fm-icons-tab","410":"fm-image-code-generator"}[chunkId] || chunkId) + "." + {"129":"1f7048a0e93daec2ca44","276":"c0a535f6d0c018f0ff32","379":"9fb59ff579663a515590","410":"50fded261e49f2abdf2b","583":"177f1aa2edb14f5f073e"}[chunkId] + ".js";
48719
+ /******/ return "" + ({"379":"fm-icons-tab","410":"fm-image-code-generator"}[chunkId] || chunkId) + "." + {"129":"1f7048a0e93daec2ca44","276":"c0a535f6d0c018f0ff32","379":"dbc6aea218d2ab6b3de5","410":"50fded261e49f2abdf2b","583":"177f1aa2edb14f5f073e"}[chunkId] + ".js";
48693
48720
  /******/ };
48694
48721
  /******/ })();
48695
48722
  /******/
@@ -48914,7 +48941,7 @@ __webpack_require__.d(__webpack_exports__, {
48914
48941
  "default": () => (/* binding */ src)
48915
48942
  });
48916
48943
 
48917
- // UNUSED EXPORTS: DEFAULT_FILE_MANAGER_CACHE_TTL_MS, DataSourceProxyBase, FailedRequestCache, FileContent, FileManagerApiError, FileManagerApp, FileManagerAppWithContext, FileModals, FolderSidebar, MutationRegistry, PathAwareStorageAdapter, PixieOnlyApp, TRASH_FOLDER_ID, TreeCache, ViewCacheManager, buildAssetsPath, compareFileSystemItems, createSystemFolderByPathResolver, defaultChildrenViewFilterMatch, defaultFileSystemItemComparator, defaultIsFolderNotFoundError, fetchRemoteImageBlobByUrl, getAssetsBase, getTrashFolderLookupCandidates, init, initFileManager, initPixieEditor, installResizeObserverErrorHandler, joinUrls, mapHttpStatusToErrorCode, matchesChildrenViewFilter, normalizeSystemFolderPath, resolveSortParams, resolveViewStrategyOptions, uninstallResizeObserverErrorHandler, unmount, unmountPixieEditor
48944
+ // UNUSED EXPORTS: DEFAULT_FILE_MANAGER_CACHE_TTL_MS, DataSourceProxyBase, FailedRequestCache, FileContent, FileManagerApiError, FileManagerApp, FileManagerAppWithContext, FileModals, FolderSidebar, MutationRegistry, PathAwareStorageAdapter, PixieOnlyApp, TRASH_FOLDER_ID, TreeCache, ViewCacheManager, buildAssetsPath, compareFileSystemItems, createSystemFolderByPathResolver, defaultChildrenViewFilterMatch, defaultFileSystemItemComparator, defaultHasSortValue, defaultIsFolderNotFoundError, fetchRemoteImageBlobByUrl, getAssetsBase, getTrashFolderLookupCandidates, hasComparableSortValue, init, initFileManager, initPixieEditor, installResizeObserverErrorHandler, joinUrls, mapHttpStatusToErrorCode, matchesChildrenViewFilter, normalizeSystemFolderPath, resolveSortParams, resolveViewStrategyOptions, uninstallResizeObserverErrorHandler, unmount, unmountPixieEditor
48918
48945
 
48919
48946
  // EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
48920
48947
  var jsx_runtime = __webpack_require__(4848);
@@ -50534,6 +50561,16 @@ function isImageItem(file) {
50534
50561
  (((_a = file.type) === null || _a === void 0 ? void 0 : _a.startsWith('image/')) ? (_c = (_b = file.type.split('/')[1]) === null || _b === void 0 ? void 0 : _b.split(';')[0]) === null || _c === void 0 ? void 0 : _c.trim() : undefined);
50535
50562
  return Boolean(extension && constants/* IMAGE_EXTENSIONS */.f9.includes(extension.toLowerCase()));
50536
50563
  }
50564
+ /**
50565
+ * Полноразмерный файл как источник превью, пока миниатюры нет.
50566
+ * Свежезагруженный файл получает её не сразу, а без источника превью не рендерится вовсе.
50567
+ */
50568
+ function resolvePreviewFallbackUrl(file, context) {
50569
+ if (context.previewFallbackToFileUrl === false) {
50570
+ return undefined;
50571
+ }
50572
+ return file.url && isImageItem(file) ? file.url : undefined;
50573
+ }
50537
50574
  function formatDateText(dateString, t) {
50538
50575
  if (!dateString) {
50539
50576
  return '';
@@ -50562,7 +50599,7 @@ function formatDateText(dateString, t) {
50562
50599
  return t('Added', { date: `${day} ${month} ${year}` });
50563
50600
  }
50564
50601
  function buildSignature(file, context) {
50565
- var _a, _b, _c, _d, _e, _f, _g, _h;
50602
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
50566
50603
  const isFolder = Boolean(file.isFolder);
50567
50604
  const folderResolved = isFolder ? resolveFolderItemCount(file, context.folderFileCounts) : null;
50568
50605
  const folderCountSig = isFolder ? (folderResolved === null ? 'u' : String(folderResolved)) : '0';
@@ -50570,16 +50607,16 @@ function buildSignature(file, context) {
50570
50607
  const sizeText = !isFolder && file.size ? String(file.size) : '';
50571
50608
  const thumb = file.thumbnailUrl || file.thumbnail;
50572
50609
  const imageFileUrl = file.url && isImageItem(file) ? file.url : '';
50573
- const previewFallbackSrc = context.previewFallbackToFileUrl ? imageFileUrl : '';
50610
+ const previewFallbackSrc = (_a = resolvePreviewFallbackUrl(file, context)) !== null && _a !== void 0 ? _a : '';
50574
50611
  const featureFlags = [
50575
- ((_a = context.features) === null || _a === void 0 ? void 0 : _a.enableEdit) !== false,
50576
- ((_b = context.features) === null || _b === void 0 ? void 0 : _b.enableMoveFolder) !== false,
50577
- ((_c = context.features) === null || _c === void 0 ? void 0 : _c.enableMoveItem) !== false,
50578
- ((_d = context.features) === null || _d === void 0 ? void 0 : _d.enableCopyFolder) !== false,
50579
- ((_e = context.features) === null || _e === void 0 ? void 0 : _e.enableCopyItem) !== false,
50580
- ((_f = context.features) === null || _f === void 0 ? void 0 : _f.enableRenameFolder) !== false,
50581
- ((_g = context.features) === null || _g === void 0 ? void 0 : _g.enableRenameFile) !== false,
50582
- ((_h = context.features) === null || _h === void 0 ? void 0 : _h.enableDelete) !== false,
50612
+ ((_b = context.features) === null || _b === void 0 ? void 0 : _b.enableEdit) !== false,
50613
+ ((_c = context.features) === null || _c === void 0 ? void 0 : _c.enableMoveFolder) !== false,
50614
+ ((_d = context.features) === null || _d === void 0 ? void 0 : _d.enableMoveItem) !== false,
50615
+ ((_e = context.features) === null || _e === void 0 ? void 0 : _e.enableCopyFolder) !== false,
50616
+ ((_f = context.features) === null || _f === void 0 ? void 0 : _f.enableCopyItem) !== false,
50617
+ ((_g = context.features) === null || _g === void 0 ? void 0 : _g.enableRenameFolder) !== false,
50618
+ ((_h = context.features) === null || _h === void 0 ? void 0 : _h.enableRenameFile) !== false,
50619
+ ((_j = context.features) === null || _j === void 0 ? void 0 : _j.enableDelete) !== false,
50583
50620
  ].join('|');
50584
50621
  const previewKey = [
50585
50622
  thumb || '',
@@ -50621,7 +50658,7 @@ const fileListAdapter = {
50621
50658
  const gridInfoText = isFolder ? folderItemsText : [dimensionsText, sizeText, typeText].filter(Boolean).join(' • ');
50622
50659
  const thumb = file.thumbnailUrl || file.thumbnail;
50623
50660
  const imageFileUrl = file.url && isImageItem(file) ? file.url : undefined;
50624
- const previewFallbackSrc = context.previewFallbackToFileUrl ? imageFileUrl : undefined;
50661
+ const previewFallbackSrc = resolvePreviewFallbackUrl(file, context);
50625
50662
  return {
50626
50663
  id: meta.id,
50627
50664
  signature: meta.signature,
@@ -51503,7 +51540,6 @@ var FolderSidebar_module_update = injectStylesIntoStyleTag_default()((FolderSide
51503
51540
 
51504
51541
 
51505
51542
 
51506
-
51507
51543
  const FolderSidebar = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.memo)((0,external_root_React_commonjs2_react_commonjs_react_amd_react_.forwardRef)(({ selectedFolder, generateMenuItems, onFolderSelect, folders,
51508
51544
  // fetchFolders,
51509
51545
  fetchChildFolders, handleAddFile, setIsUrlModalVisible, handleCreateFolder, activeLibraryItem, setActiveLibraryItem, }, ref) => {
@@ -51748,7 +51784,7 @@ fetchChildFolders, handleAddFile, setIsUrlModalVisible, handleCreateFolder, acti
51748
51784
  {
51749
51785
  key: constants/* ICONS */.Ze,
51750
51786
  label: t('Icons'),
51751
- icon: (0,jsx_runtime.jsx)(icons_.LikeOutlined, { size: 20 }),
51787
+ icon: (0,jsx_runtime.jsx)(icons_amd_untitledui_icons_.ThumbsUp, { size: 20, strokeWidth: config === null || config === void 0 ? void 0 : config.iconStrokeWidth }),
51752
51788
  disabled: !isIconStockEnabled,
51753
51789
  },
51754
51790
  {
@@ -51774,7 +51810,9 @@ fetchChildFolders, handleAddFile, setIsUrlModalVisible, handleCreateFolder, acti
51774
51810
  setActiveLibraryItem(constants/* MY_FILES */.Zz);
51775
51811
  }
51776
51812
  onFolderSelect === null || onFolderSelect === void 0 ? void 0 : onFolderSelect(key);
51777
- await (fetchChildFolders === null || fetchChildFolders === void 0 ? void 0 : fetchChildFolders(key));
51813
+ // 'folders' — синтетический ключ корневого узла дерева, а не id папки;
51814
+ // fetchChildFolders(null) — тот же смысл, что и для остальных вызовов в дереве.
51815
+ await (fetchChildFolders === null || fetchChildFolders === void 0 ? void 0 : fetchChildFolders(key === 'folders' ? null : key));
51778
51816
  }, [onFolderSelect, activeLibraryItem, setActiveLibraryItem, fetchChildFolders]);
51779
51817
  const handleOpenLibraryChange = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(({ key }) => {
51780
51818
  setActiveLibraryItem(key);
@@ -56844,6 +56882,7 @@ class ViewCacheManager {
56844
56882
  preloadPagesAfter: (_e = resolved.preloadPagesAfter) !== null && _e !== void 0 ? _e : 1,
56845
56883
  comparator: resolved.comparator,
56846
56884
  filterMatch: resolved.filterMatch,
56885
+ hasSortValue: resolved.hasSortValue,
56847
56886
  };
56848
56887
  this.ttl = ttl;
56849
56888
  this.errorTtl = errorTtl !== null && errorTtl !== void 0 ? errorTtl : ttl;
@@ -57287,6 +57326,16 @@ class ViewCacheManager {
57287
57326
  }
57288
57327
  return wasNewPageCreated;
57289
57328
  }
57329
+ /** Whether the entity carries the field this sorted view is ordered by. */
57330
+ canCompareInSortedView(rec, entity) {
57331
+ var _a;
57332
+ const params = (_a = rec.params) !== null && _a !== void 0 ? _a : {};
57333
+ if (!params.sortBy && !params.sortOrder)
57334
+ return true;
57335
+ if (!this.strategy.hasSortValue)
57336
+ return true;
57337
+ return this.strategy.hasSortValue(entity, rec.params);
57338
+ }
57290
57339
  tryInsertSorted(rec, entity, entitiesManager) {
57291
57340
  var _a, _b;
57292
57341
  const comparator = this.strategy.comparator;
@@ -57297,6 +57346,10 @@ class ViewCacheManager {
57297
57346
  const itemType = ((_a = rec.params) === null || _a === void 0 ? void 0 : _a.itemType) || 'all';
57298
57347
  if (!this.isEntityTypeCompatible(entity, itemType))
57299
57348
  return false;
57349
+ // Без значения поля сортировки позиция неизвестна: отказ здесь приводит
57350
+ // к markViewStaleForReload, то есть к перечитыванию листинга с сервера.
57351
+ if (!this.canCompareInSortedView(rec, entity))
57352
+ return false;
57300
57353
  const currentEntities = rec.view.value.map((id) => entitiesManager.getEntity(id));
57301
57354
  if (currentEntities.some((e) => !e))
57302
57355
  return false;
@@ -57958,8 +58011,12 @@ class TreeCache_TreeCache {
57958
58011
  forceInvalidate(id) {
57959
58012
  var _a;
57960
58013
  const ent = this.entities.getEntity(id);
57961
- if (!ent)
58014
+ if (!ent) {
58015
+ // Папки может не быть в графе (корень, синтетические папки) — листинги всё равно сбрасываем.
58016
+ this.views.forceInvalidateChildrenViews(id !== null && id !== void 0 ? id : null);
58017
+ this.invalidateChildrenCountCache(id);
57962
58018
  return;
58019
+ }
57963
58020
  const visited = new Set();
57964
58021
  if (isFolderEntity(ent)) {
57965
58022
  const stack = [id];
@@ -58855,7 +58912,7 @@ class DataSourceProxyBase {
58855
58912
  return result;
58856
58913
  }
58857
58914
  async uploadFiles(request) {
58858
- var _a, _b, _c, _d, _e;
58915
+ var _a, _b, _c, _d, _e, _f, _g;
58859
58916
  const tempFolder = request.items.some(item => item.noFolder) ? await this.getTempFolder() : null;
58860
58917
  request = Object.assign(Object.assign({}, request), { items: (_a = request.items) === null || _a === void 0 ? void 0 : _a.map((f) => (Object.assign(Object.assign({}, f), { folderId: f.noFolder ? tempFolder === null || tempFolder === void 0 ? void 0 : tempFolder.id : f.folderId }))) });
58861
58918
  for (const item of request.items) {
@@ -58880,7 +58937,6 @@ class DataSourceProxyBase {
58880
58937
  }
58881
58938
  }
58882
58939
  }
58883
- const cachedFolder = this._cache.getEntity(folderIdNormalized);
58884
58940
  let batchResult = { detailed: new Array(filesToUpload.length), success: true };
58885
58941
  if (typeof this._dataProvider.uploadFiles === 'function') {
58886
58942
  const providerFiles = filesToUpload.map((f) => {
@@ -58904,13 +58960,19 @@ class DataSourceProxyBase {
58904
58960
  thumbnail: data.thumbnail,
58905
58961
  };
58906
58962
  });
58963
+ // Ответ провайдера до обрезки до публичного UploadFileResultData: индексы
58964
+ // совпадают с batchResult.detailed, оба собраны из одного массива.
58965
+ const providerDetailed = providerResult === null || providerResult === void 0 ? void 0 : providerResult.detailed;
58907
58966
  if (batchResult.detailed && batchResult.detailed.length) {
58908
58967
  for (let i = 0; i < batchResult.detailed.length; i++) {
58909
58968
  const current = batchResult.detailed[i];
58910
58969
  if (current && current.success) {
58911
58970
  const uploaded = current.data;
58912
58971
  const id = (_d = uploaded === null || uploaded === void 0 ? void 0 : uploaded.id) !== null && _d !== void 0 ? _d : current.requestId;
58913
- const entity = normalizeFileSystemItem(Object.assign(Object.assign(Object.assign({}, cachedFolder), uploaded), { folderId: (_e = uploaded === null || uploaded === void 0 ? void 0 : uploaded.folderId) !== null && _e !== void 0 ? _e : folderIdNormalized }));
58972
+ // В кэш кладём полный ответ провайдера: без date/size/type сущность
58973
+ // встаёт в отсортированный листинг наугад (по дате — в самый конец).
58974
+ const providerItem = (_e = providerDetailed === null || providerDetailed === void 0 ? void 0 : providerDetailed[i]) === null || _e === void 0 ? void 0 : _e.data;
58975
+ const entity = normalizeFileSystemItem(Object.assign(Object.assign(Object.assign({}, providerItem), uploaded), { id, folderId: (_g = (_f = uploaded === null || uploaded === void 0 ? void 0 : uploaded.folderId) !== null && _f !== void 0 ? _f : providerItem === null || providerItem === void 0 ? void 0 : providerItem.folderId) !== null && _g !== void 0 ? _g : folderIdNormalized, isFolder: false }));
58914
58976
  // Если провайдер вернул только id/data, всё равно апдейтим кэш
58915
58977
  this._cache.upsertEntity(entity);
58916
58978
  // Нормализуем id в detailed (на случай, если провайдер пропустил)