@@ -6,7 +6,12 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
66 import IconButton from " ../components/IconButton.svelte" ;
77 import { mdiEye , mdiFormatAlignCenter } from " ./icons" ;
88 import { makeMaskTransparent } from " ./tools/lib" ;
9- import { alignTools , cursorTools , zoomTools } from " ./tools/more-tools" ;
9+ import {
10+ alignTools ,
11+ deleteDuplicateTools ,
12+ groupUngroupTools ,
13+ zoomTools ,
14+ } from " ./tools/more-tools" ;
1015 import { undoRedoTools } from " ./tools/tool-undo-redo" ;
1116
1217 export let canvas;
@@ -27,69 +32,94 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
2732<div class =" top-tool-bar-container" >
2833 <!-- undo & redo tools -->
2934 <div class =" undo-redo-button" >
30- {#each undoRedoTools as undoRedoTool }
35+ {#each undoRedoTools as tool }
3136 <IconButton
32- class =" top-tool-icon-button"
37+ class ="top-tool-icon-button {tool .name === ' undo'
38+ ? ' left-border-radius'
39+ : ' right-border-radius' }"
3340 {iconSize }
3441 on:click ={() => {
35- undoRedoTool .action (canvas );
42+ tool .action (canvas );
3643 }}
3744 >
38- {@html undoRedoTool .icon }
45+ {@html tool .icon }
3946 </IconButton >
4047 {/each }
4148 </div >
4249
4350 <!-- zoom tools -->
44- {#each zoomTools as zoomBottomTool }
51+ <div class =" tool-button-container" >
52+ {#each zoomTools as tool }
53+ <IconButton
54+ class ="top-tool-icon-button {tool .name === ' zoomOut'
55+ ? ' left-border-radius'
56+ : ' ' } {tool .name === ' zoomReset' ? ' right-border-radius' : ' ' }"
57+ {iconSize }
58+ on:click ={() => {
59+ tool .action (instance );
60+ }}
61+ >
62+ {@html tool .icon }
63+ </IconButton >
64+ {/each }
65+ </div >
66+
67+ <div class =" tool-button-container" >
68+ <!-- opacity tools -->
4569 <IconButton
46- class =" top-tool-icon-button"
70+ class =" top-tool-icon-button left-border-radius "
4771 {iconSize }
4872 on:click ={() => {
49- zoomBottomTool .action (instance );
73+ maksOpacity = ! maksOpacity ;
74+ makeMaskTransparent (canvas , maksOpacity );
5075 }}
5176 >
52- {@html zoomBottomTool . icon }
77+ {@html mdiEye }
5378 </IconButton >
54- {/each }
5579
56- <!-- opacity tools -->
57- <IconButton
58- class =" top-tool-icon-button"
59- {iconSize }
60- on:click ={() => {
61- maksOpacity = ! maksOpacity ;
62- makeMaskTransparent (canvas , maksOpacity );
63- }}
64- >
65- {@html mdiEye }
66- </IconButton >
67-
68- <!-- cursor tools -->
69- {#each cursorTools as cursorBottomTool }
70- {#if cursorBottomTool .name === " align" }
80+ <!-- cursor tools -->
81+ {#each deleteDuplicateTools as tool }
7182 <IconButton
72- class =" top-tool-icon-button dropdown-tool"
83+ class ="top-tool-icon-button {tool .name === ' duplicate'
84+ ? ' right-border-radius'
85+ : ' ' }"
7386 {iconSize }
74- on:click ={(e ) => {
75- showAlignTools = ! showAlignTools ;
76- leftPos = e .pageX - 100 ;
87+ on:click ={() => {
88+ tool .action (canvas );
7789 }}
7890 >
79- {@html mdiFormatAlignCenter }
91+ {@html tool . icon }
8092 </IconButton >
81- {:else }
93+ {/each }
94+ </div >
95+
96+ <div class =" tool-button-container" >
97+ <!-- group & ungroup tools -->
98+ {#each groupUngroupTools as tool }
8299 <IconButton
83- class =" top-tool-icon-button"
100+ class ="top-tool-icon-button {tool .name === ' group'
101+ ? ' left-border-radius'
102+ : ' ' }"
84103 {iconSize }
85104 on:click ={() => {
86- cursorBottomTool .action (canvas );
105+ tool .action (canvas );
87106 }}
88107 >
89- {@html cursorBottomTool .icon }
108+ {@html tool .icon }
90109 </IconButton >
91- {/if }
92- {/each }
110+ {/each }
111+
112+ <IconButton
113+ class =" top-tool-icon-button dropdown-tool right-border-radius"
114+ {iconSize }
115+ on:click ={(e ) => {
116+ showAlignTools = ! showAlignTools ;
117+ leftPos = e .pageX - 100 ;
118+ }}
119+ >
120+ {@html mdiFormatAlignCenter }
121+ </IconButton >
122+ </div >
93123</div >
94124
95125<div class:show ={showAlignTools } class ="dropdown-content" style ="left: {leftPos }px;" >
@@ -118,9 +148,24 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
118148
119149 .undo-redo-button {
120150 margin-left : 28px ;
151+ margin-right : 2px ;
121152 display : flex ;
122153 }
123154
155+ .tool-button-container {
156+ margin-left : 2px ;
157+ margin-right : 2px ;
158+ display : flex ;
159+ }
160+
161+ :global(.left-border-radius ) {
162+ border-radius : 5px 0 0 5px !important ;
163+ }
164+
165+ :global(.right-border-radius ) {
166+ border-radius : 0 5px 5px 0 !important ;
167+ }
168+
124169 :global(.top-tool-icon-button ) {
125170 border : unset ;
126171 display : inline ;
@@ -133,7 +178,6 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
133178 .dropdown-content {
134179 display : none ;
135180 position : absolute ;
136- background-color : var (--canvas );
137181 z-index : 100 ;
138182 top : 82px ;
139183 margin-top : 1px ;
0 commit comments