Merge pull request 'feature/pdf-shape-annot' (#653) from feature/pdf-shape-annot into release/v9.1.0

This commit is contained in:
Julia Radzhabova
2025-08-29 12:19:42 +00:00
126 changed files with 299 additions and 10 deletions

View File

@ -125,7 +125,10 @@ define([
cls: 'color-menu ' + (options.eyeDropper ? 'shifted-right' : 'shifted-left'),
additionalAlign: options.additionalAlign,
items: (options.additionalItemsBefore ? options.additionalItemsBefore : []).concat(auto).concat([
{ template: _.template('<div id="' + id + '-color-menu" style="width: ' + width + '; height:' + height + '; display: inline-block;"></div>') }
{
template: _.template('<div id="' + id + '-color-menu" style="width: ' + width + '; height:' + height + '; display: inline-block;"></div>'),
stopPropagation: options.hidePaletteOnClick===false
}
]).concat(options.hideColorsSeparator ? [] : {caption: '--'}).concat(eyedropper).concat([
{
id: id + '-color-new',

View File

@ -901,7 +901,7 @@ define([], function () {
}
documentHolder.btnStrokeHighlightColor.setVisible(annotType === AscPDF.ANNOTATIONS_TYPES.Highlight);
documentHolder.btnStrokeColor.setVisible(annotType !== AscPDF.ANNOTATIONS_TYPES.Highlight);
var color = this.api.asc_GetStrokeColor(),
var color = this.api.GetAnnotStrokeColor(),
btn = annotType === AscPDF.ANNOTATIONS_TYPES.Highlight ? documentHolder.btnStrokeHighlightColor : documentHolder.btnStrokeColor;
color = Common.Utils.ThemeColor.getHexColor(color['r'], color['g'], color['b']);
btn.currentColor = color;
@ -2534,8 +2534,8 @@ define([], function () {
var r = color[0] + color[1],
g = color[2] + color[3],
b = color[4] + color[5];
if (!this.api.asc_SetStrokeColor(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16))) {
color = this.api.asc_GetStrokeColor();
if (!this.api.SetAnnotStrokeColor(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16))) {
color = this.api.GetAnnotStrokeColor();
color = Common.Utils.ThemeColor.getHexColor(color['r'], color['g'], color['b']);
}
btn.currentColor = color;
@ -2544,7 +2544,7 @@ define([], function () {
};
dh.onSetStrokeOpacity = function(sizePicker, direction) {
var val = this.api.asc_GetOpacity(),
var val = this.api.GetAnnotOpacity(),
oldval = val;
if (direction === 'up') {
if (val % 10 > 0.1) {
@ -2561,7 +2561,7 @@ define([], function () {
}
val = Math.max(0, val);
}
if (!this.api.asc_SetOpacity(val))
if (!this.api.SetAnnotOpacity(val))
val = oldval;
sizePicker.setValue(val + '%');
};
@ -2575,7 +2575,7 @@ define([], function () {
});
menu.sizePicker.on('click', _.bind(this.onSetStrokeOpacity, this, menu.sizePicker));
}
menu.sizePicker.setValue(this.api.asc_GetOpacity() + '%');
menu.sizePicker.setValue(this.api.GetAnnotOpacity() + '%');
};
dh.applySettings = function() {

View File

@ -83,14 +83,17 @@ define([
initEditing: true
};
this.editMode = true;
this.binding = {};
this.binding = {
checkInsertShapeComment: _.bind(this.checkInsertShapeComment, this)
};
this.addListeners({
'Toolbar': {
'change:compact' : this.onClickChangeCompact,
'home:open' : this.onHomeOpen,
'tab:active' : this.onActiveTab,
'tab:collapse' : this.onTabCollapse
'tab:collapse' : this.onTabCollapse,
'shapeannot:size' : this.onShapeCommentSizeClick
},
'FileMenu': {
'menu:hide': this.onFileMenu.bind(this, 'hide'),
@ -270,6 +273,9 @@ define([
toolbar.chShowComments.on('change', _.bind(this.onShowCommentsChange, this));
toolbar.btnTextComment.on('click', _.bind(this.onBtnTextCommentClick, this));
toolbar.btnTextComment.menu.on('item:click', _.bind(this.onMenuTextCommentClick, this));
toolbar.btnShapeComment.on('click', _.bind(this.onBtnShapeCommentClick, this));
toolbar.btnShapeComment.menu.on('item:click', _.bind(this.onMenuShapeCommentClick, this));
toolbar.btnShapeComment.on('color:select', _.bind(this.onSelectShapeCommentColor, this));
toolbar.btnStamp.on('click', _.bind(this.onBtnStampClick, this));
toolbar.btnStamp.menu.on('item:click', _.bind(this.onMenuStampClick, this));
toolbar.btnStamp.menu.on('show:after', _.bind(this.onStampShowAfter, this));
@ -424,6 +430,7 @@ define([
this.api.asc_registerCallback('asc_onStampsReady', _.bind(this.onApiStampsReady, this));
this.getApplication().getController('Common.Controllers.Fonts').setApi(this.api);
this.api.asc_registerCallback('asc_onCanPastePage', _.bind(this.onApiCanPastePage, this));
this.api.asc_registerCallback('asc_onStartAddShapeChanged', _.bind(this.onStartAddShapeChanged, this)); //for shape comments
if (this.mode.canPDFEdit) {
this.api.asc_registerCallback('asc_onMathTypes', _.bind(this.onApiMathTypes, this));
@ -602,6 +609,7 @@ define([
while (++i < selectedObjects.length) {
type = selectedObjects[i].get_ObjectType();
pr = selectedObjects[i].get_ObjectValue();
if (!pr) continue;
if (type === Asc.c_oAscTypeSelectElement.Paragraph) {
paragraph_locked = pr.get_Locked();
@ -638,8 +646,9 @@ define([
} else if (type === Asc.c_oAscTypeSelectElement.Math) {
in_equation = true;
} else if (type === Asc.c_oAscTypeSelectElement.Annot) {
var annotPr = pr.asc_getAnnotProps();
in_annot = true;
if (pr.asc_getCanEditText())
if (annotPr && annotPr.asc_getCanEditText && annotPr.asc_getCanEditText())
no_text = false;
} else if (type == Asc.c_oAscTypeSelectElement.PdfPage) {
page_deleted = pr.asc_getDeleteLock();
@ -1235,6 +1244,101 @@ define([
Common.component.Analytics.trackEvent('ToolBar', 'Add Text');
},
onBtnShapeCommentClick: function(btn, e) {
btn.menu.getItems(true).filter(function(item) {
return item.value == btn.options.shapeType
})[0].setChecked(true);
if(!btn.pressed) {
btn.menu.clearAll(true);
}
this.onInsertShapeComment(btn, e);
},
onMenuShapeCommentClick: function(menu, item, e) {
var newType = item.value;
if (newType===null || newType===undefined) return;
this.toolbar.btnShapeComment.toggle(true);
var oldType = this.toolbar.btnShapeComment.options.shapeType;
if(newType !== oldType){
this.toolbar.btnShapeComment.changeIcon({
next: item.options.iconClsForMainBtn,
curr: this.toolbar.btnShapeComment.menu.getItems(true).filter(function(mnu){return mnu.value == oldType})[0].options.iconClsForMainBtn
});
this.toolbar.btnShapeComment.updateHint(item.options.tipForMainBtn);
// this.toolbar.btnShapeComment.setCaption(item.options.captionForMainBtn);
this.toolbar.btnShapeComment.options.shapeType = newType;
}
this.onInsertShapeComment(this.toolbar.btnShapeComment, item);
},
onShapeCommentSizeClick: function (direction) {
var btn = this.toolbar.btnShapeComment;
if (!btn.pressed) {
btn.toggle(true, true);
}
var size = btn.options.currentSize;
size.idx = (direction==='up') ? Math.min(size.idx+1, size.arr.length-1) : Math.max(size.idx-1, 0);
btn.sizePicker.setValue(size.arr[size.idx] + ' ' + this.toolbar.txtMM);
this.onInsertShapeComment(btn);
},
onSelectShapeCommentColor: function(btn, color) {
if (!btn.pressed) {
btn.toggle(true, true);
}
btn.currentColor = color;
this.onInsertShapeComment(btn);
},
onInsertShapeComment: function(btn, item) {
if (btn.pressed) {
var stroke = new Asc.asc_CStroke();
stroke.put_type( Asc.c_oAscStrokeType.STROKE_COLOR);
stroke.put_color(Common.Utils.ThemeColor.getRgbColor(btn.currentColor));
stroke.asc_putPrstDash(Asc.c_oDashType.solid);
stroke.put_width(btn.options.currentSize.arr[btn.options.currentSize.idx]);
stroke.put_transparent(100 * 2.55);
this.api.StartAddAnnot(btn.options.shapeType, stroke, true);
$(document.body).on('mouseup', this.binding.checkInsertShapeComment);
} else {
this.api.StartAddAnnot('', undefined, false);
$(document.body).off('mouseup', this.binding.checkInsertShapeComment);
}
Common.NotificationCenter.trigger('edit:complete', this.toolbar, this.toolbar.btnShapeComment);
Common.component.Analytics.trackEvent('ToolBar', 'Add Shape Annotation');
},
onStartAddShapeChanged: function() {
if ( this.toolbar.btnShapeComment.pressed ) {
this.toolbar.btnShapeComment.toggle(false, true);
this.toolbar.btnShapeComment.menu.clearAll(true);
}
$(document.body).off('mouseup', this.binding.checkInsertShapeComment);
},
checkInsertShapeComment: function(e) {
var cmp = $(e.target),
cmp_sdk = cmp.closest('#editor_sdk'),
btn_id = cmp.closest('button').attr('id');
if (btn_id===undefined)
btn_id = cmp.closest('.btn-group').attr('id');
if (cmp.attr('id') != 'editor_sdk' && cmp_sdk.length<=0) {
if ( this.toolbar.btnShapeComment.pressed && this.toolbar.btnShapeComment.id !== btn_id ) {
this.api.StartAddAnnot('', undefined, false);
$(document.body).off('mouseup', this.binding.checkInsertShapeComment);
this.toolbar.btnShapeComment.toggle(false, true);
Common.NotificationCenter.trigger('edit:complete', this.toolbar);
}
}
},
onBtnStampClick: function(btn, e) {
this.onInsertStamp(btn.options.stampType, btn, e);
},

View File

@ -179,6 +179,7 @@
<div class="separator long"></div>
<div class="group">
<span class="btn-slot text x-huge" id="slot-btn-stamp"></span>
<span class="btn-slot text x-huge emptycaption" id="slot-btn-shape-comment"></span>
</div>
<div class="separator long"></div>
<div class="group small">

View File

@ -1042,6 +1042,92 @@ define([
this.btnsHighlight = [this.btnHighlight];
this.toolbarControls.push(this.btnHighlight);
this.btnShapeComment = new Common.UI.ButtonColored({
id: 'tlbtn-shapecomment',
cls: 'btn-toolbar x-huge icon-top',
iconCls: 'toolbar__icon btn-big-annotation-rectangle',
lock: [_set.pageDeleted, _set.lostConnect, _set.disableOnStart],
caption: ' ',
menu: true,
split: true,
enableToggle: true,
colors: colorsconfig.colors,
color: 'D43230',
dynamiccolors: colorsconfig.dynamiccolors,
themecolors: colorsconfig.themecolors,
effects: colorsconfig.effects,
columns: colorsconfig.columns,
paletteCls: colorsconfig.cls,
paletteWidth: colorsconfig.paletteWidth,
currentSize: {arr: [0.25, 0.5, 1, 2, 3.5], idx: 2},
hidePaletteOnClick: false,
additionalItemsBefore: [
{
cls: 'shifted-right',
tipForMainBtn: me.tipInsertRectComment,
caption: me.txtRectComment,
checkable: true,
checkmark: false,
toggleGroup: 'shapecomment',
iconCls : 'menu__icon btn-annotation-rectangle',
value: AscPDF.ANNOTATIONS_TYPES.Square,
iconClsForMainBtn: 'btn-big-annotation-rectangle',
captionForMainBtn: me.capBtnRectComment
},
{
cls: 'shifted-right',
tipForMainBtn: me.tipInsertCircleComment,
caption: me.txtCircleComment,
checkable: true,
checkmark: false,
toggleGroup: 'shapecomment',
iconCls : 'menu__icon btn-annotation-circle',
value: AscPDF.ANNOTATIONS_TYPES.Circle,
iconClsForMainBtn: 'btn-big-annotation-circle',
captionForMainBtn: me.capBtnCircleComment
},
{
cls: 'shifted-right',
tipForMainBtn: me.tipInsertArrowComment,
caption: me.txtArrowComment,
checkable: true,
checkmark: false,
toggleGroup: 'shapecomment',
iconCls : 'menu__icon btn-annotation-arrow',
value: AscPDF.ANNOTATIONS_TYPES.Line,
iconClsForMainBtn: 'btn-big-annotation-arrow',
captionForMainBtn: me.capBtnArrowComment
},
{
cls: 'shifted-right',
tipForMainBtn: me.tipInsertPolyLineComment,
caption: me.txtPolyLineComment,
checkable: true,
checkmark: false,
toggleGroup: 'shapecomment',
iconCls : 'menu__icon btn-annotation-connected-lines',
value: AscPDF.ANNOTATIONS_TYPES.PolyLine,
iconClsForMainBtn: 'btn-big-annotation-connected-lines',
captionForMainBtn: me.capBtnPolyLineComment
},
{caption: '--'},
],
additionalItemsAfter: [
{caption: '--'},
new Common.UI.MenuItem({
template: _.template('<div class="custom-scale" data-stopPropagation="true"></div>'),
stopPropagation: true
})
],
storageSuffix: '-shapecomment',
hideColorsSeparator: true,
action: 'insert-shape-comment',
dataHint: '1',
dataHintDirection: 'bottom',
dataHintOffset: 'small'
});
this.toolbarControls.push(this.btnShapeComment);
if (config.isPDFAnnotate && config.canPDFEdit || config.isPDFEdit) {
this.btnEditMode = new Common.UI.Button({
cls: 'btn-toolbar x-huge icon-top',
@ -1448,6 +1534,7 @@ define([
_injectComponent('#slot-btn-underline', this.btnUnderline);
_injectComponent('#slot-btn-highlight', this.btnHighlight);
_injectComponent('#slot-btn-text-comment', this.btnTextComment);
_injectComponent('#slot-btn-shape-comment', this.btnShapeComment);
_injectComponent('#slot-btn-stamp', this.btnStamp);
this.btnEditMode ? _injectComponent('#slot-btn-tb-edit-mode', this.btnEditMode) : $host.findById('#slot-btn-tb-edit-mode').parents('.group').hide().next('.separator').hide();
},
@ -1614,6 +1701,27 @@ define([
]
}));
}
if (me.btnShapeComment) {
var btn = me.btnShapeComment;
btn.options.shapeType = AscPDF.ANNOTATIONS_TYPES.Square;
btn.setMenu();
btn.currentColor = btn.color;
let onShowAfter = function(menu) {
var sizePicker = new Common.UI.UpDownPicker({
el: menu.cmpEl.find('.custom-scale'),
caption: me.txtSize,
minWidth: 50
});
sizePicker.setValue(btn.options.currentSize.arr[btn.options.currentSize.idx] + ' ' + me.txtMM);
sizePicker.on('click', function (direction) {
me.fireEvent('shapeannot:size', [direction]);
});
btn.sizePicker = sizePicker;
menu.off('show:after', onShowAfter);
};
btn.menu.on('show:after', onShowAfter);
me.mnuShapeCommentColorPicker = btn.getPicker();
}
if (me.btnStamp) {
me.btnStamp.setMenu(new Common.UI.Menu({
restoreHeight: 500
@ -1668,6 +1776,7 @@ define([
this.btnHighlight.updateHint(this.textHighlight);
// this.btnTextComment.updateHint([this.tipInsertTextComment, this.tipInsertText]);
this.btnTextComment.updateHint(this.tipInsertTextComment);
this.btnShapeComment.updateHint(this.tipInsertRectComment);
this.btnStamp.updateHint(this.tipInsertStamp);
this.btnEditMode && this.btnEditMode.updateHint(this.tipEditMode);
},

View File

@ -2231,6 +2231,20 @@
"PDFE.Views.Toolbar.txtRotatePageRight": "Rotate page right",
"PDFE.Views.Toolbar.txtRotateRight": "Rotate right",
"PDFE.Views.Toolbar.txtUngroup": "Ungroup",
"PDFE.Views.Toolbar.capBtnRectComment": "Rectangle",
"PDFE.Views.Toolbar.capBtnCircleComment": "Circle",
"PDFE.Views.Toolbar.capBtnArrowComment": "Arrow",
"PDFE.Views.Toolbar.capBtnPolyLineComment": "Connected Lines",
"PDFE.Views.Toolbar.txtRectComment": "Rectangle",
"PDFE.Views.Toolbar.txtCircleComment": "Circle",
"PDFE.Views.Toolbar.txtArrowComment": "Arrow",
"PDFE.Views.Toolbar.txtPolyLineComment": "Connected lines",
"PDFE.Views.Toolbar.tipInsertRectComment": "Draw a rectangle or square",
"PDFE.Views.Toolbar.tipInsertCircleComment": "Draw a circle or oval",
"PDFE.Views.Toolbar.tipInsertArrowComment": "Draw an arrow",
"PDFE.Views.Toolbar.tipInsertPolyLineComment": "Draw lines that connect to each other",
"PDFE.Views.Toolbar.txtMM": "mm",
"PDFE.Views.Toolbar.txtSize": "Size",
"PDFE.Views.ViewTab.textAlwaysShowToolbar": "Always Show Toolbar",
"PDFE.Views.ViewTab.textDarkDocument": "Dark Document",
"PDFE.Views.ViewTab.textFill": "Fill",

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 B

View File

@ -0,0 +1,3 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M21 16.5a.5.5 0 0 1-1 0V8.707L7.853 20.854a.5.5 0 1 1-.707-.707L19.293 8H11.5a.5.5 0 1 1 0-1h9a.5.5 0 0 1 .5.5z" fill="#000"/>
</svg>

After

Width:  |  Height:  |  Size: 243 B

View File

@ -0,0 +1,3 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M20 14a6 6 0 1 0-6 6v1a7 7 0 1 1 0-14 7 7 0 0 1 0 14v-1a6 6 0 0 0 6-6" fill="#000"/>
</svg>

After

Width:  |  Height:  |  Size: 201 B

View File

@ -0,0 +1,3 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.074 7.238a.5.5 0 0 1 .852.524L7.394 20h10.223l-2.546-4.243A.5.5 0 0 1 15.5 15h5a.5.5 0 1 1 0 1h-4.117l2.546 4.243a.5.5 0 0 1-.43.757h-12a.5.5 0 0 1-.425-.762z" fill="#000"/>
</svg>

After

Width:  |  Height:  |  Size: 294 B

View File

@ -0,0 +1,3 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19.646 7.646a.5.5 0 0 1 .707.707l-12 12a.5.5 0 0 1-.707-.707z" fill="#000"/>
</svg>

After

Width:  |  Height:  |  Size: 194 B

View File

@ -0,0 +1 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20.5 7a.5.5 0 0 1 .5.5v13a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5v-13a.5.5 0 0 1 .5-.5zM8 20h12V8H8z" fill="#000"/></svg>

After

Width:  |  Height:  |  Size: 223 B

View File

@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15 11.5a.5.5 0 0 1-1 0V6.707l-8.147 8.147a.5.5 0 1 1-.707-.707L13.293 6H8.5a.5.5 0 0 1 0-1h6a.5.5 0 0 1 .5.5z" fill="#000"/>
</svg>

After

Width:  |  Height:  |  Size: 242 B

View File

@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15 10.5a4.5 4.5 0 1 0-4.5 4.5v1a5.5 5.5 0 1 1 0-11 5.5 5.5 0 0 1 0 11v-1a4.5 4.5 0 0 0 4.5-4.5" fill="#000"/>
</svg>

After

Width:  |  Height:  |  Size: 227 B

View File

@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.071 4.243a.5.5 0 0 1 .858.514L5.383 14h7.308l-1.638-3.277A.5.5 0 0 1 11.5 10h4a.5.5 0 1 1 0 1h-3.191l1.638 3.276A.5.5 0 0 1 13.5 15h-9a.5.5 0 0 1-.429-.757z" fill="#000"/>
</svg>

After

Width:  |  Height:  |  Size: 292 B

View File

@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.146 5.146a.5.5 0 0 1 .707.707l-9 9a.5.5 0 0 1-.707-.707z" fill="#000"/>
</svg>

After

Width:  |  Height:  |  Size: 192 B

View File

@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15.5 4a.5.5 0 0 1 .5.5v11a.5.5 0 0 1-.5.5h-11a.5.5 0 0 1-.5-.5v-11a.5.5 0 0 1 .5-.5zM5 15h10V5H5z" fill="#000"/>
</svg>

After

Width:  |  Height:  |  Size: 230 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 543 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 322 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 411 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 468 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 287 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 491 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 303 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 B

Some files were not shown because too many files have changed in this diff Show More