28.2.9 release

This commit is contained in:
David Benson 2025-11-03 11:25:08 +00:00
parent 5425584784
commit a4dffbda2d
39 changed files with 4391 additions and 4306 deletions

View File

@ -1,4 +1,11 @@
23-OCT-2025 28.2.8
03-NOV-2025: 28.2.9
- Updates DOMPurify from 3.2.5 to 3.3.0
- Adds handling of light-dark grid settings [jgraph/drawio#5285]
- Fixes cursor state in freehand mode [jgraph/drawio#4936]
- [conf forge] Changes to allow plantUml
23-OCT-2025: 28.2.8
- Hides inactive virtual bends for entity relations
- Fixes preview button in smart template section

View File

@ -1 +1 @@
28.2.8
28.2.9

View File

@ -15,7 +15,7 @@
"mermaid": "11.12.0",
"pako": "2.1.0",
"crypto-js": "3.1.2",
"dompurify": "3.2.5",
"dompurify": "3.3.0",
"spin.js": "2.0.0",
"roughjs": "4.6.6",
"mathjax": "3.2.2"

File diff suppressed because one or more lines are too long

View File

@ -3708,7 +3708,7 @@ App.prototype.openTemplateDialog = function(generatePrompt)
if (xml != null)
{
var insertPoint = this.editor.graph.getFreeInsertPoint();
var insertPoint = this.editor.graph.getFreeInsertPoint(true);
graph.setSelectionCells(this.importXml(xml,
Math.max(insertPoint.x, 20),
Math.max(insertPoint.y, 20),

View File

@ -2513,6 +2513,9 @@ var NewDialog = function(editorUi, compact, showName, callback, createOnly, canc
rightHighlightBorder = (rightHighlightBorder != null) ? rightHighlightBorder :
'2px dashed light-dark(#29b6f2, #00a8ff)';
templateFile = (templateFile != null) ? templateFile : EditorUi.templateFile;
// Handles click on insert while entering generate prompt
var insertWasPressed = false;
var outer = document.createElement('div');
outer.style.userSelect = 'none';
@ -3176,58 +3179,82 @@ var NewDialog = function(editorUi, compact, showName, callback, createOnly, canc
function create()
{
if (templateExtUrl && openExtDocCallback != null)
if (selectedElt == generateElt && templateXml == null &&
generateButton != null && generateInput != null)
{
if (!showName)
{
editorUi.hideDialog();
}
openExtDocCallback(templateExtUrl, templateInfoObj, nameInput.value);
}
else if (callback)
{
if (!showName)
if (callback && editorUi.spinner.spin(document.body,
mxResources.get('generate') + ' \''+
generateInput.value + '\''))
{
insertWasPressed = true;
editorUi.hideDialog();
}
callback(templateXml, nameInput.value, templateRealUrl, templateLibs);
generateButton.click();
}
else
{
var title = nameInput.value;
if (title != null && title.length > 0)
if (insertWasPressed)
{
function doSave(mode, folderId, filename)
{
editorUi.createFile(filename, templateXml, (templateLibs != null &&
templateLibs.length > 0) ? templateLibs : null, mode, function()
{
editorUi.hideDialog();
}, null, folderId, null, (templateClibs != null &&
templateClibs.length > 0) ? templateClibs : null);
};
editorUi.spinner.stop();
}
if (editorUi.mode == App.MODE_GOOGLE || editorUi.mode == App.MODE_ONEDRIVE)
if (templateExtUrl && openExtDocCallback != null)
{
if (!showName && !insertWasPressed)
{
var dlg = new SaveDialog(editorUi, title, mxUtils.bind(this, function(input, mode, folderId)
{
doSave(mode, folderId, input.value);
}), null, null, null, null, editorUi.mode);
editorUi.showDialog(dlg.container, 420, 150, true, false);
dlg.init();
editorUi.hideDialog();
}
else
openExtDocCallback(templateExtUrl, templateInfoObj, nameInput.value);
}
else if (callback)
{
if (!showName && !insertWasPressed)
{
editorUi.pickFolder(editorUi.mode, function(folderId)
editorUi.hideDialog();
}
callback(templateXml, nameInput.value, templateRealUrl, templateLibs);
}
else
{
var title = nameInput.value;
if (title != null && title.length > 0)
{
function doSave(mode, folderId, filename)
{
doSave(editorUi.mode, folderId, title);
}, editorUi.mode != App.MODE_GOOGLE ||
editorUi.stateArg == null ||
editorUi.stateArg.folderId == null);
editorUi.createFile(filename, templateXml, (templateLibs != null &&
templateLibs.length > 0) ? templateLibs : null, mode, function()
{
if (!insertWasPressed)
{
editorUi.hideDialog();
}
}, null, folderId, null, (templateClibs != null &&
templateClibs.length > 0) ? templateClibs : null);
};
if (editorUi.mode == App.MODE_GOOGLE || editorUi.mode == App.MODE_ONEDRIVE)
{
var dlg = new SaveDialog(editorUi, title, mxUtils.bind(this, function(input, mode, folderId)
{
doSave(mode, folderId, input.value);
}), null, null, null, null, editorUi.mode);
editorUi.showDialog(dlg.container, 420, 150, true, false);
dlg.init();
}
else
{
editorUi.pickFolder(editorUi.mode, function(folderId)
{
doSave(editorUi.mode, folderId, title);
}, editorUi.mode != App.MODE_GOOGLE ||
editorUi.stateArg == null ||
editorUi.stateArg.folderId == null);
}
}
}
}
@ -3486,8 +3513,16 @@ var NewDialog = function(editorUi, compact, showName, callback, createOnly, canc
magnifyGenerate.style.visibility = 'visible';
};
var generatingDiagram = false;
function generateDiagram(cancel)
{
if (generatingDiagram)
{
return;
}
generatingDiagram = true;
var desc = mxUtils.trim(generateInput.value);
if (!cancel && desc != '')
@ -3499,6 +3534,8 @@ var NewDialog = function(editorUi, compact, showName, callback, createOnly, canc
editorUi.generateDiagram(desc, mxUtils.bind(this, function(xml, imageData)
{
generatingDiagram = false;
if (selectedElt == generateElt && generateForm.style.display == 'none')
{
generateBackground = 'url(' + 'data:image/svg+xml;base64,' +
@ -3510,17 +3547,24 @@ var NewDialog = function(editorUi, compact, showName, callback, createOnly, canc
lastAiTitle = desc;
stopInput();
if (insertWasPressed)
{
create();
}
}
}), mxUtils.bind(this, function(e)
{
if (selectedElt == generateElt)
{
generateForm.style.display = '';
generatePreview.style.display = 'none';
editGenerate.style.visibility = 'hidden';
magnifyGenerate.style.visibility = 'hidden';
editorUi.handleError(e);
}
generatingDiagram = false;
if (selectedElt == generateElt)
{
generateForm.style.display = '';
generatePreview.style.display = 'none';
editGenerate.style.visibility = 'hidden';
magnifyGenerate.style.visibility = 'hidden';
editorUi.handleError(e);
}
}));
}
else if (lastAiTitle != null)

View File

@ -6593,9 +6593,9 @@
var getInsertPoint = this.getInsertPoint;
this.getInsertPoint = function()
this.getInsertPoint = function(ignoreMouseEvent)
{
if (mouseEvent != null)
if (mouseEvent != null && !ignoreMouseEvent)
{
return this.getPointForEvent(mouseEvent);
}

View File

@ -27,7 +27,8 @@
*/
EditorUi.enableLogging = urlParams['stealth'] != '1' && urlParams['lockdown'] != '1' &&
(/.*\.draw\.io$/.test(window.location.hostname) ||
/.*\.diagrams\.net$/.test(window.location.hostname)) &&
/.*\.diagrams\.net$/.test(window.location.hostname) ||
/.*\.cdn\.prod\.atlassian-dev\.net$/.test(window.location.hostname)) && // Forge app
window.location.hostname != 'https://preprod.diagrams.net/' &&
window.location.hostname != 'support.draw.io' &&
window.location.hostname != 'test.draw.io';

View File

@ -3705,7 +3705,14 @@
this.put('insertAdvanced', new Menu(mxUtils.bind(this, function(menu, parent)
{
this.addMenuItems(menu, ['fromText', 'plantUml', 'formatSql', 'csv'], parent);
var insertMenuItems = ['fromText', 'plantUml', 'formatSql', 'csv'];
if (!EditorUi.enablePlantUml)
{
insertMenuItems.splice(1, 1);
}
this.addMenuItems(menu, insertMenuItems, parent);
if (Editor.currentTheme == 'simple' || Editor.currentTheme == 'min')
{

View File

@ -75,7 +75,16 @@ var mxSettings =
},
getGridColor: function(darkMode)
{
return (darkMode) ? mxSettings.settings.darkGridColor : mxSettings.settings.gridColor;
var result = (darkMode) ? mxSettings.settings.darkGridColor :
mxSettings.settings.gridColor;
if (mxUtils.isLightDarkColor(result))
{
var ld = mxUtils.getLightDarkColor(result);
result = (darkMode) ? ld.dark : ld.light;
}
return result;
},
setGridColor: function(gridColor, darkMode)
{

View File

@ -126,7 +126,16 @@ function mxFreehand(graph)
graph.getRubberband().setEnabled(!isEnabled);
graph.graphHandler.setSelectEnabled(!isEnabled);
graph.graphHandler.setMoveEnabled(!isEnabled);
graph.container.style.cursor = (isEnabled) ? 'crosshair' : '';
if (isEnabled)
{
graph.container.classList.add('geFreehandMode');
}
else
{
graph.container.classList.remove('geFreehandMode');
}
graph.fireEvent(new mxEventObject('freehandStateChanged'));
};
@ -351,20 +360,12 @@ function mxFreehand(graph)
setEnabled(false);
};
// Stops all interactions if freehand is enabled
// Stops all shape interactions if freehand is enabled
graph.addListener(mxEvent.FIRE_MOUSE_EVENT, mxUtils.bind(this, function(sender, evt)
{
var evtName = evt.getProperty('eventName');
var me = evt.getProperty('event');
if (evtName == mxEvent.MOUSE_MOVE && enabled)
if (enabled)
{
if (me.sourceState != null)
{
me.sourceState.setCursor('crosshair');
}
me.consume();
evt.getProperty('event').consume();
}
}));

View File

@ -1274,6 +1274,7 @@ EditorUi.prototype.findCommonProperties = function(cell, properties, addAll, sst
state.shape.stencil.desc != null)
{
var stencil = state.shape.stencil
var handledKeys = [];
var getStencilColors = mxUtils.bind(this, function(nodeName)
{
@ -1284,8 +1285,9 @@ EditorUi.prototype.findCommonProperties = function(cell, properties, addAll, sst
{
var name = nodes[i].getAttribute('color');
if (!mxUtils.isValidColor(name))
if (!mxUtils.isValidColor(name) && !handledKeys[name])
{
handledKeys[name] = true;
var label = nodes[i].getAttribute('name');
label = (label != null) ? label :
Editor.getLabelForStylename(name);
@ -1303,9 +1305,11 @@ EditorUi.prototype.findCommonProperties = function(cell, properties, addAll, sst
});
Array.prototype.push.apply(state.shape.customProperties,
getStencilColors('fillcolor'))
getStencilColors('fillcolor'));
Array.prototype.push.apply(state.shape.customProperties,
getStencilColors('strokecolor'))
getStencilColors('strokecolor'));
Array.prototype.push.apply(state.shape.customProperties,
getStencilColors('fontcolor'));
}
// Adds common vertex/edge properties

View File

@ -11461,7 +11461,7 @@ if (typeof mxVertexHandler !== 'undefined')
/**
* Returns a point that specifies the location for inserting cells.
*/
Graph.prototype.getInsertPoint = function()
Graph.prototype.getInsertPoint = function(ignoreMouseEvent)
{
var gs = this.getGridSize();
var dx = this.container.scrollLeft / this.view.scale - this.view.translate.x;
@ -11481,11 +11481,11 @@ if (typeof mxVertexHandler !== 'undefined')
/**
*
*/
Graph.prototype.getFreeInsertPoint = function()
Graph.prototype.getFreeInsertPoint = function(ignoreMouseEvent)
{
var view = this.view;
var bds = this.getGraphBounds();
var pt = this.getInsertPoint();
var pt = this.getInsertPoint(ignoreMouseEvent);
// Places at same x-coord and 2 grid sizes below existing graph
var x = this.snap(Math.round(Math.max(pt.x, bds.x / view.scale - view.translate.x +

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
var mxClient={VERSION:"28.2.8",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
var mxClient={VERSION:"28.2.9",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
IS_OP:null!=navigator.userAgent&&(0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/")),IS_OT:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Presto/")&&0>navigator.userAgent.indexOf("Presto/2.4.")&&0>navigator.userAgent.indexOf("Presto/2.3.")&&0>navigator.userAgent.indexOf("Presto/2.2.")&&0>navigator.userAgent.indexOf("Presto/2.1.")&&0>navigator.userAgent.indexOf("Presto/2.0.")&&0>navigator.userAgent.indexOf("Presto/1."),IS_SF:/Apple Computer, Inc/.test(navigator.vendor),
IS_ANDROID:0<=navigator.appVersion.indexOf("Android"),IS_IOS:/iP(hone|od|ad)/.test(navigator.platform)||navigator.userAgent.match(/Mac/)&&navigator.maxTouchPoints&&2<navigator.maxTouchPoints,IS_WEBVIEW:/((iPhone|iPod|iPad).*AppleWebKit(?!.*Version)|; wv)/i.test(navigator.userAgent),IS_GC:/Google Inc/.test(navigator.vendor),IS_CHROMEAPP:null!=window.chrome&&null!=chrome.app&&null!=chrome.app.runtime,IS_FF:-1<navigator.userAgent.toLowerCase().indexOf("firefox"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&
0>navigator.userAgent.indexOf("Firefox/1.")&&0>navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/")&&0>navigator.userAgent.indexOf("Iceweasel/1.")&&0>navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/")&&0>navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/")&&0>navigator.userAgent.indexOf("Iceape/1."),IS_SVG:"MICROSOFT INTERNET EXPLORER"!=navigator.appName.toUpperCase(),NO_FO:!document.createElementNS||

View File

@ -203,7 +203,7 @@ diamondThin=Diamond (thin)
didYouKnow=Did you know...
direction=Direction
discard=Discard
discardChangesAndReconnect=Discard Changes and Reconnect
discardChangesAndReconnect=Был обнаружен черновик '{1}'. Загрузите черновик в редактор или сбросьте его, чтобы продолжить.
googleDriveMissingClickHere=Google Drive missing? Click here!
discardChanges=Discard Changes
disconnected=Disconnected

View File

@ -203,7 +203,7 @@ diamondThin=Diamond (thin)
didYouKnow=Did you know...
direction=Direction
discard=Discard
discardChangesAndReconnect=Discard Changes and Reconnect
discardChangesAndReconnect=Был обнаружен черновик '{1}'. Загрузите черновик в редактор или сбросьте его, чтобы продолжить.
googleDriveMissingClickHere=Google Drive missing? Click here!
discardChanges=Discard Changes
disconnected=Disconnected

View File

@ -203,7 +203,7 @@ diamondThin=Diamond (thin)
didYouKnow=Did you know...
direction=Direction
discard=Discard
discardChangesAndReconnect=Discard Changes and Reconnect
discardChangesAndReconnect=Был обнаружен черновик '{1}'. Загрузите черновик в редактор или сбросьте его, чтобы продолжить.
googleDriveMissingClickHere=Google Drive missing? Click here!
discardChanges=Discard Changes
disconnected=Disconnected

View File

@ -203,7 +203,7 @@ diamondThin=Diamond (thin)
didYouKnow=Ĉu vi sciis...
direction=Direction
discard=Forĵeti
discardChangesAndReconnect=Discard Changes and Reconnect
discardChangesAndReconnect=Был обнаружен черновик '{1}'. Загрузите черновик в редактор или сбросьте его, чтобы продолжить.
googleDriveMissingClickHere=Google Drive missing? Click here!
discardChanges=Discard Changes
disconnected=Disconnected

View File

@ -40,7 +40,7 @@ allChangesSavedInDrive=Toutes les modifications ont été enregistrées dans Dri
allowPopups=Autoriser les pop-ups pour ne pas voir cette boite de dialogue.
allowRelativeUrl=Autoriser une URL relative
alreadyConnected=Nœuds déjà connectés
appearance=apparence
appearance=Apparence
apply=Appliquer
archiMate21=ArchiMate 2.1
arrange=Organiser

View File

@ -203,7 +203,7 @@ diamondThin=Diamond (thin)
didYouKnow=Did you know...
direction=Direction
discard=Discard
discardChangesAndReconnect=Discard Changes and Reconnect
discardChangesAndReconnect=Был обнаружен черновик '{1}'. Загрузите черновик в редактор или сбросьте его, чтобы продолжить.
googleDriveMissingClickHere=Google Drive missing? Click here!
discardChanges=Discard Changes
disconnected=Disconnected

View File

@ -203,7 +203,7 @@ diamondThin=Diamond (thin)
didYouKnow=Did you know...
direction=Direction
discard=Discard
discardChangesAndReconnect=Discard Changes and Reconnect
discardChangesAndReconnect=Был обнаружен черновик '{1}'. Загрузите черновик в редактор или сбросьте его, чтобы продолжить.
googleDriveMissingClickHere=Google Drive missing? Click here!
discardChanges=Discard Changes
disconnected=Disconnected

View File

@ -203,7 +203,7 @@ diamondThin=Diamond (thin)
didYouKnow=Did you know...
direction=Direction
discard=Discard
discardChangesAndReconnect=Discard Changes and Reconnect
discardChangesAndReconnect=Был обнаружен черновик '{1}'. Загрузите черновик в редактор или сбросьте его, чтобы продолжить.
googleDriveMissingClickHere=Google Drive missing? Click here!
discardChanges=Discard Changes
disconnected=Disconnected

View File

@ -203,7 +203,7 @@ diamondThin=Diamond (thin)
didYouKnow=Did you know...
direction=Direction
discard=Discard
discardChangesAndReconnect=Discard Changes and Reconnect
discardChangesAndReconnect=Был обнаружен черновик '{1}'. Загрузите черновик в редактор или сбросьте его, чтобы продолжить.
googleDriveMissingClickHere=Google Drive missing? Click here!
discardChanges=Discard Changes
disconnected=Disconnected

View File

@ -203,7 +203,7 @@ diamondThin=Diamond (thin)
didYouKnow=Did you know...
direction=Direction
discard=Discard
discardChangesAndReconnect=Discard Changes and Reconnect
discardChangesAndReconnect=Был обнаружен черновик '{1}'. Загрузите черновик в редактор или сбросьте его, чтобы продолжить.
googleDriveMissingClickHere=Google Drive missing? Click here!
discardChanges=Discard Changes
disconnected=Disconnected

View File

@ -203,7 +203,7 @@ diamondThin=Diamond (thin)
didYouKnow=Did you know...
direction=Direction
discard=Discard
discardChangesAndReconnect=Discard Changes and Reconnect
discardChangesAndReconnect=Был обнаружен черновик '{1}'. Загрузите черновик в редактор или сбросьте его, чтобы продолжить.
googleDriveMissingClickHere=Google Drive missing? Click here!
discardChanges=Discard Changes
disconnected=Disconnected

View File

@ -203,7 +203,7 @@ diamondThin=Diamond (thin)
didYouKnow=Did you know...
direction=Direction
discard=Discard
discardChangesAndReconnect=Discard Changes and Reconnect
discardChangesAndReconnect=Был обнаружен черновик '{1}'. Загрузите черновик в редактор или сбросьте его, чтобы продолжить.
googleDriveMissingClickHere=Google Drive missing? Click here!
discardChanges=Discard Changes
disconnected=Disconnected

View File

@ -34,7 +34,7 @@ angle=Угол
animations=Анимации
arc=Дуга
areYouSure=Вы уверены?
ensureDataSaved=Пожалуйста, перед закрытием убедитесь, что ваши данные сохранены.
ensureDataSaved=Перед закрытием убедитесь пожалуйста, что ваши данные сохранены.
allChangesSaved=Все изменения сохранены
allChangesSavedInDrive=Все изменения сохранены на диске
allowPopups=Разрешите всплывающие окна, чтобы убрать этот диалог.
@ -67,7 +67,7 @@ backgroundColor=Цвет фона
backgroundImage=Фоновое изображение
basic=Базовые
beta=бета
blankDrawing=Новый документ
blankDrawing=Пустой документ
blankDiagram=Пустая диаграмма
block=Блок
blockquote=Цитата
@ -77,7 +77,7 @@ bootstrap=Bootstrap
border=Граница
borderColor=Цвет границы
borderWidth=Толщина границы
bottom=Снизу
bottom=Внизу
bottomAlign=По нижнему краю
bottomLeft=Внизу слева
bottomRight=Внизу справа
@ -109,11 +109,11 @@ compare=Сравнить
compressed=Сжато
commitMessage=Сообщение при коммите
configLinkWarn=Эта ссылка настраивает draw.io. Нажмите «ОК» только, если вы доверяете тому, кто её вам дал!
configLinkConfirm=Нажмите ОК, чтобы настроить и перезапустить draw.io.
configLinkConfirm=Нажмите «ОК», чтобы настроить и перезапустить draw.io.
container=Контейнер
csv=CSV
dark=Тёмная
diagramLanguage=Язык Диаграммы
diagramLanguage=Язык диаграммы
diagramType=Тип диаграммы
diagramXmlDesc=XML файл
diagramHtmlDesc=HTML файл
@ -121,13 +121,13 @@ diagramPngDesc=Редактируемое растровое изображен
diagramSvgDesc=Редактируемое векторное изображение
didYouMeanToExportToPdf=Вы хотите экспортировать в PDF?
disabled=Отключено
draftFound=Был обнаружен черновик '{1}'. Загрузите его в редактор или откажитесь, чтобы продолжить.
draftFound=Был обнаружен черновик '{1}'. Загрузите черновик в редактор или сбросьте его, чтобы продолжить.
draftRevisionMismatch=Существует другая версия этой диаграммы на общем черновике этой страницы. Отредактируйте диаграмму проекта, для работы с последней версией.
selectDraft=Выберите черновик, чтобы продолжить редактирование:
dragAndDropNotSupported=Перетаскивание изображений не поддерживается. Хотите импортировать изображение?
dropboxCharsNotAllowed=Следующие символы не допускаются: \ / : ? * " |
check=Проверить
checksum=Проверочная сумма
checksum=Контрольная сумма
circle=Круговая структура
cisco=Cisco
classic=Классический
@ -161,7 +161,7 @@ copiedToClipboard=Скопировано в буфер обмена
copy=Копировать
copyConnect=Копировать при соединении
copyCreated=Копия файла была создана.
copyData=Скопировать информацию
copyData=Копировать информацию
copyOf=Копия {1}
copyOfDrawing=Копия документа
copySize=Копировать размер
@ -197,23 +197,23 @@ diagramLocked=Диаграмма была заблокирована для пр
diagramLockedBySince=Диаграмма заблокирована {1} {2} назад
diagramName=Название диаграммы
diagramIsPublic=Диаграмма является публичной
diagramIsNotPublic=Диаграмма не является публичной
diagramIsNotPublic=Диаграмма является не публичной
diamond=Алмаз
diamondThin=Алмаз (тонкий)
didYouKnow=Знаете ли вы…
direction=Направление
discard=Отказаться
discardChangesAndReconnect=Отказаться от изменений и подключиться заново
discard=Сбросить
discardChangesAndReconnect=Сбросить изменения и подключиться заново
googleDriveMissingClickHere=Нет Google Drive? Нажмите сюда!
discardChanges=Отказаться от изменений
discardChanges=Сбросить изменения
disconnected=Отсоединено
distribute=Распределить
done=Готово
doNotShowAgain=Не показывать снова
dotted=Точки
doubleClickOrientation=Дважды нажмите, чтобы изменить ориентацию
doubleClickTooltip=Дважды нажмите, чтобы вставить текст
doubleClickChangeProperty=Дважды нажмите, чтобы изменить название свойства
doubleClickOrientation=Нажмите дважды, чтобы изменить ориентацию
doubleClickTooltip=Нажмите дважды, чтобы вставить текст
doubleClickChangeProperty=Нажмите дважды, чтобы изменить название свойства
download=Загрузить
downloadDesktop=Загрузить Desktop
downloadAs=Загрузить как
@ -221,13 +221,13 @@ clickHereToSave=Нажмите здесь, чтобы сохранить.
dpi=DPI
draftDiscarded=Черновик удалён
draftSaved=Черновик сохранён
dragElementsHere=Перетащите элементы из диаграммы сюда
dragElementsHere=Перетащите сюда элементы из диаграммы
dragImagesHere=Перетащите сюда изображения или вставьте на них ссылки
dragUrlsHere=Перетащите сюда ссылки
draw.io=draw.io
drawing=Рисунок{1}
drawingEmpty=Документ пуст
drawingTooLarge=Документ слишком большой
drawingEmpty=Рисунок пуст
drawingTooLarge=Рисунок слишком большой
drawioForWork=Draw.io для GSuite
dropbox=Dropbox
duplicate=Дублировать
@ -252,12 +252,12 @@ googleImages=Изображения Google
imageSearch=Поиск изображений
eip=EIP
embed=Встроить
embedFonts=Вставить шрифты
embedImages=Встроить изображения
embedFonts=Встроенные шрифты
embedImages=Встроенные изображения
mainEmbedNotice=Вставьте это на страницу
electrical=Электрические схемы
ellipse=Эллипс
embedNotice=Вставьте один раз в конец страницы
embedNotice=Вставьте это один раз в конец страницы
enterGroup=Введите группу
enterName=Введите название
enterPropertyName=Введите название свойства
@ -277,7 +277,7 @@ errorSavingFileForbidden=Ошибка сохранения файла. Не хв
errorSavingFileNameConflict=Невозможно сохранить диаграмму. Страница уже содержит файл с названием '{1}'.
errorSavingFileNotFound=Ошибка при сохранении файла. Файл не найден.
errorSavingFileReadOnlyMode=Невозможно сохранить диаграмму пока вы находитесь в режиме «только для чтения».
errorSavingFileSessionTimeout=Ваша сессия истекла. Для сохранения, пожалуйста, <a target='_blank' href='{1}'>{2}</a> и вернитесь на эту вкладку.
errorSavingFileSessionTimeout=Ваша сессия истекла. Для сохранения, пожалуйста, <a target='_blank' href='{1}'>{2}</a> и вернитесь на эту вкладку, чтобы попробовать сохранить снова.
errorSendingFeedback=Ошибка при отправке сообщения для обратной связи.
errorUpdatingPreview=Ошибка при обновлении предварительного просмотра.
exit=Выйти
@ -315,7 +315,7 @@ fileOpenLocation=Как вы хотите открыть эти файл(ы)?
filetypeHtml=Расширение «.html» — сохранить файл в формате HTML с перенаправлением на адрес в «облачном» хранилище
filetypePng=Расширение «.png» — сохранить файл в формате PNG, внедрив в него встроенные данные
filetypeSvg=Расширение «.svg» — сохранить файл в формате SVG, внедрив в него встроенные данные
fileWillBeSavedInAppFolder={1} будет сохранён в папке программы.
fileWillBeSavedInAppFolder={1} будет сохранён в папке приложения.
fill=Заливка
fillColor=Цвет заливки
filterCards=Фильтровать карточки
@ -394,19 +394,19 @@ hateApp=Терпеть не могу draw.io
heading=Заголовок
height=Высота
help=Помощь
helpTranslate=Помогите нам перевести draw.io
helpTranslate=Помогите перевести draw.io
hide=Скрыть
hideIt=Скрыть {1}
hidden=Скрытый
highContrast=Высокая контрастность
home=На верхний уровень
home=Домой
horizontal=Горизонтально
horizontalFlow=Горизонтальный поток
horizontalTree=Горизонтальное дерево
howTranslate=Насколько хорошо приложение переведено на ваш язык?
howTranslate=Насколько хорошо приложение переведено на русский язык?
html=HTML
htmlText=HTML текст
id=Идентификатор
id=Идентификатор (ID)
iframe=IFrame
ignore=Игнорировать
image=Изображение

View File

@ -203,7 +203,7 @@ diamondThin=Diamond (thin)
didYouKnow=Did you know...
direction=Direction
discard=Discard
discardChangesAndReconnect=Discard Changes and Reconnect
discardChangesAndReconnect=Был обнаружен черновик '{1}'. Загрузите черновик в редактор или сбросьте его, чтобы продолжить.
googleDriveMissingClickHere=Google Drive missing? Click here!
discardChanges=Discard Changes
disconnected=Disconnected

View File

@ -203,7 +203,7 @@ diamondThin=Diamond (thin)
didYouKnow=Did you know...
direction=Direction
discard=Discard
discardChangesAndReconnect=Discard Changes and Reconnect
discardChangesAndReconnect=Был обнаружен черновик '{1}'. Загрузите черновик в редактор или сбросьте его, чтобы продолжить.
googleDriveMissingClickHere=Google Drive missing? Click here!
discardChanges=Discard Changes
disconnected=Disconnected

View File

@ -203,7 +203,7 @@ diamondThin=Diamond (thin)
didYouKnow=Did you know...
direction=Direction
discard=Discard
discardChangesAndReconnect=Discard Changes and Reconnect
discardChangesAndReconnect=Был обнаружен черновик '{1}'. Загрузите черновик в редактор или сбросьте его, чтобы продолжить.
googleDriveMissingClickHere=Google Drive missing? Click here!
discardChanges=Discard Changes
disconnected=Disconnected

View File

@ -203,7 +203,7 @@ diamondThin=Diamond (thin)
didYouKnow=Did you know...
direction=Direction
discard=Discard
discardChangesAndReconnect=Discard Changes and Reconnect
discardChangesAndReconnect=Был обнаружен черновик '{1}'. Загрузите черновик в редактор или сбросьте его, чтобы продолжить.
googleDriveMissingClickHere=Google Drive missing? Click here!
discardChanges=Discard Changes
disconnected=Disconnected

View File

@ -203,7 +203,7 @@ diamondThin=Diamond (thin)
didYouKnow=Did you know...
direction=Direction
discard=Discard
discardChangesAndReconnect=Discard Changes and Reconnect
discardChangesAndReconnect=Был обнаружен черновик '{1}'. Загрузите черновик в редактор или сбросьте его, чтобы продолжить.
googleDriveMissingClickHere=Google Drive missing? Click here!
discardChanges=Discard Changes
disconnected=Disconnected

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -313,6 +313,11 @@ div[id*="dgeMermaidOutput-"] {
position: relative;
}
.geFreehandMode,
.geFreehandMode * {
cursor: crosshair !important;
}
.geDarkMode .geButton,
.geDarkMode .geHelpIcon:not(.geTitle *),
.geDarkMode .mxPopupMenuItem>div:not(:has(img)),