Showing
64 changed files
with
4788 additions
and
0 deletions
Too many changes to show.
To preserve performance only 64 of 389 files are displayed.
.gitignore
0 → 100644
1 | +# Intellij | |
2 | +*.iml | |
3 | +.idea/ | |
4 | + | |
5 | +# JAVA | |
6 | +*.class | |
7 | +*.log | |
8 | +/logs/ | |
9 | +target | |
10 | +application-dev.properties | |
11 | +ucsp-service/libs | |
12 | +ucsp-service/gateway | |
13 | +ucsp-service/target | |
14 | + | |
15 | +# node | |
16 | +node_modules/ | |
17 | +ucsp-ui/admin/node_modules/ | |
18 | +*-lock.json | |
19 | + | |
20 | +# some local files | |
21 | +.settings/ | |
22 | +.DS_Store | |
23 | + | |
24 | +.history/* | |
25 | +.vscode/* | |
26 | +.svn/* | ... | ... |
pom.xml
0 → 100644
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | +<project xmlns="http://maven.apache.org/POM/4.0.0" | |
3 | + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
4 | + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |
5 | + <modelVersion>4.0.0</modelVersion> | |
6 | + | |
7 | + <groupId>qgyun.example</groupId> | |
8 | + <artifactId>demo_book</artifactId> | |
9 | + <version>1.0-SNAPSHOT</version> | |
10 | + <modules> | |
11 | + <module>qgyun-zxm</module> | |
12 | + </modules> | |
13 | + | |
14 | + <parent> | |
15 | + <artifactId>qgyun-dev</artifactId> | |
16 | + <groupId>com.qgutech.qgyun.parent</groupId> | |
17 | + <version>1.0.0-SNAPSHOT</version> | |
18 | + </parent> | |
19 | + | |
20 | +</project> | |
\ No newline at end of file | ... | ... |
qgyun-zxm/pom.xml
0 → 100644
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | +<project xmlns="http://maven.apache.org/POM/4.0.0" | |
3 | + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
4 | + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |
5 | + <modelVersion>4.0.0</modelVersion> | |
6 | + | |
7 | + <parent> | |
8 | + <groupId>qgyun.example</groupId> | |
9 | + <artifactId>demo_book</artifactId> | |
10 | + <version>1.0-SNAPSHOT</version> | |
11 | + </parent> | |
12 | + | |
13 | + <artifactId>qgyun-zxm</artifactId> | |
14 | + <version>1.0-SNAPSHOT</version> | |
15 | + | |
16 | + <properties> | |
17 | + <jdk.version>1.8</jdk.version> | |
18 | + </properties> | |
19 | + <dependencies> | |
20 | + <dependency> | |
21 | + <groupId>com.qgutech.qgyun.framework</groupId> | |
22 | + <artifactId>qgyun-cloud-nacos</artifactId> | |
23 | + <version>2.1.0-SNAPSHOT</version> | |
24 | + </dependency> | |
25 | + | |
26 | + <dependency> | |
27 | + <groupId>com.qgutech.qgyun.framework</groupId> | |
28 | + <artifactId>qgyun-core-mybatis</artifactId> | |
29 | + <version>2.1.0-SNAPSHOT</version> | |
30 | + </dependency> | |
31 | + | |
32 | + <dependency> | |
33 | + <groupId>com.qgutech.qgyun.framework</groupId> | |
34 | + <artifactId>qgyun-core-starter-web</artifactId> | |
35 | + <version>2.1.0-SNAPSHOT</version> | |
36 | + </dependency> | |
37 | + <dependency> | |
38 | + <groupId>com.qgutech.qgyun.framework</groupId> | |
39 | + <artifactId>qgyun-core-starter-redis</artifactId> | |
40 | + <version>2.1.0-SNAPSHOT</version> | |
41 | + </dependency> | |
42 | + <dependency> | |
43 | + <groupId>mysql</groupId> | |
44 | + <artifactId>mysql-connector-java</artifactId> | |
45 | + <version>5.1.43</version> | |
46 | + </dependency> | |
47 | + <dependency> | |
48 | + <groupId>com.alibaba</groupId> | |
49 | + <artifactId>druid-spring-boot-starter</artifactId> | |
50 | + <version>1.1.10</version> | |
51 | + </dependency> | |
52 | + <dependency> | |
53 | + <groupId>redis.clients</groupId> | |
54 | + <artifactId>jedis</artifactId> | |
55 | + <version>2.9.0</version> | |
56 | + </dependency> | |
57 | + <dependency> | |
58 | + <groupId>com.alibaba</groupId> | |
59 | + <artifactId>fastjson</artifactId> | |
60 | + <version>1.2.7</version> | |
61 | + </dependency> | |
62 | + <dependency> | |
63 | + <groupId>com.alibaba</groupId> | |
64 | + <artifactId>easyexcel</artifactId> | |
65 | + <version>1.1.2-beta5</version> | |
66 | + </dependency> | |
67 | + <dependency> | |
68 | + <groupId>org.apache.httpcomponents</groupId> | |
69 | + <artifactId>httpclient</artifactId> | |
70 | + <version>4.5.6</version> | |
71 | + </dependency> | |
72 | + <dependency> | |
73 | + <groupId>com.google.code.gson</groupId> | |
74 | + <artifactId>gson</artifactId> | |
75 | + </dependency> | |
76 | + <dependency> | |
77 | + <groupId>com.itextpdf</groupId> | |
78 | + <artifactId>itextpdf</artifactId> | |
79 | + <version>5.5.6</version> | |
80 | + </dependency> | |
81 | + <dependency> | |
82 | + <groupId>com.itextpdf.tool</groupId> | |
83 | + <artifactId>xmlworker</artifactId> | |
84 | + <version>5.5.6</version> | |
85 | + </dependency> | |
86 | + <dependency> | |
87 | + <artifactId>dev-client</artifactId> | |
88 | + <groupId>com.qgutech.qgyun.parent</groupId> | |
89 | + <version>1.0.0-SNAPSHOT</version> | |
90 | + </dependency> | |
91 | + <dependency> | |
92 | + <groupId>com.qgutech.qgyun.service</groupId> | |
93 | + <artifactId>qgyun-service-fs-client</artifactId> | |
94 | + <version>2.0.0-SNAPSHOT</version> | |
95 | + </dependency> | |
96 | + <dependency> | |
97 | + <groupId>com.qgutech.qgyun.saas</groupId> | |
98 | + <artifactId>saas-app-api</artifactId> | |
99 | + <version>1.0.0-SNAPSHOT</version> | |
100 | + <scope>compile</scope> | |
101 | + </dependency> | |
102 | + </dependencies> | |
103 | + <build> | |
104 | + <plugins> | |
105 | + <plugin> | |
106 | + <groupId>org.springframework.boot</groupId> | |
107 | + <artifactId>spring-boot-maven-plugin</artifactId> | |
108 | + </plugin> | |
109 | + </plugins> | |
110 | + </build> | |
111 | +</project> | |
\ No newline at end of file | ... | ... |
1 | +package com.qgutech.qgyun.zxm; | |
2 | + | |
3 | +import org.springframework.boot.SpringApplication; | |
4 | +import org.springframework.cloud.client.SpringCloudApplication; | |
5 | +import org.springframework.cloud.openfeign.EnableFeignClients; | |
6 | +import org.springframework.context.annotation.ComponentScan; | |
7 | +import tk.mybatis.spring.annotation.MapperScan; | |
8 | + | |
9 | +/** | |
10 | + * zxm 项目启动类文件 | |
11 | + * | |
12 | + * @author auto | |
13 | + * @version 1.0 | |
14 | + * @since 2021-01-29 17:23:09 | |
15 | + */ | |
16 | +@EnableFeignClients({"com.qgutech.qgyun.zxm.**","com.qgutech.qgyun.dev.client.**","com.qgutech.qgyun.fs.client"}) | |
17 | +@SpringCloudApplication | |
18 | +@ComponentScan({"com.qgutech.qgyun.dev.client.**","com.qgutech.qgyun.zxm.**"}) | |
19 | +@MapperScan({"com.qgutech.qgyun.zxm.**.mapper"}) | |
20 | +public class ZxmApplication { | |
21 | + public static void main(String[] args) { | |
22 | + SpringApplication.run(ZxmApplication.class, args); | |
23 | + } | |
24 | +} | ... | ... |
1 | +package com.qgutech.qgyun.zxm.controller; | |
2 | + | |
3 | +import com.qgutech.qgyun.framework.common.result.JsonResult; | |
4 | +import com.qgutech.qgyun.framework.database.mybatis.model.Page; | |
5 | +import com.qgutech.qgyun.framework.starter.web.swagger.annotations.ParamHide; | |
6 | +import com.qgutech.qgyun.framework.starter.web.validator.annotations.Check; | |
7 | +import com.qgutech.qgyun.zxm.exportmodel.BookExportData; | |
8 | +import com.qgutech.qgyun.zxm.model.Book; | |
9 | +import com.qgutech.qgyun.zxm.service.BookService; | |
10 | +import com.qgutech.qgyun.zxm.utils.DownloadUtils; | |
11 | +import javax.annotation.Resource; | |
12 | +import io.swagger.annotations.*; | |
13 | +import org.springframework.web.bind.annotation.*; | |
14 | +import javax.servlet.http.HttpServletRequest; | |
15 | +import javax.servlet.http.HttpServletResponse; | |
16 | +import java.util.List; | |
17 | + | |
18 | + | |
19 | +/** | |
20 | + * BookController 服务提供类 | |
21 | + * | |
22 | + * @author auto | |
23 | + * @version 1.0 | |
24 | + * @since 2021-01-29 17:23:09 | |
25 | + */ | |
26 | +@RestController | |
27 | +@RequestMapping(value = "/book") | |
28 | +@Api(value = "BookController" , tags = {"BookController 服务提供类"}) | |
29 | +public class BookController { | |
30 | + | |
31 | + @Resource | |
32 | + private BookService bookService; | |
33 | + | |
34 | + @GetMapping(value = "/page") | |
35 | + @ApiOperation(value = "获取分页") | |
36 | + @ApiImplicitParams({ | |
37 | + @ApiImplicitParam(name = "code", value = "编号", dataType = "String", paramType = "query"), | |
38 | + @ApiImplicitParam(name = "name", value = "书名", dataType = "String", paramType = "query"), | |
39 | + @ApiImplicitParam(name = "category", value = "类别", dataType = "String", paramType = "query"), | |
40 | + @ApiImplicitParam(name = "description", value = "简介", dataType = "String", paramType = "query"), | |
41 | + @ApiImplicitParam(name = "picture", value = "封面", dataType = "String", paramType = "query"), | |
42 | + @ApiImplicitParam(name = "createdOrg", value = "所属部门", dataType = "String", paramType = "query"), | |
43 | + @ApiImplicitParam(name = "pageNum", value = "页码", dataType = "Integer", paramType = "query"), | |
44 | + @ApiImplicitParam(name = "pageSize", value = "页大小", dataType = "Integer", paramType = "query") | |
45 | + }) | |
46 | + public JsonResult<Page<Book>> search(@ParamHide Book book, @ParamHide Page<Book> page) { | |
47 | + page = bookService.search(book, page); | |
48 | + return new JsonResult<>(true, "查询成功", page); | |
49 | + } | |
50 | + | |
51 | + @GetMapping(value = "/listAll") | |
52 | + @ApiOperation(value = "获取所有数据") | |
53 | + public JsonResult<List<Book>> listAll() { | |
54 | + return new JsonResult<>(true, "查询成功", bookService.listAll()); | |
55 | + } | |
56 | + | |
57 | + @PostMapping("/add") | |
58 | + @ApiOperation(value = "新增接口") | |
59 | + @ApiImplicitParams({ | |
60 | + @ApiImplicitParam(name = "code", value = "编号", dataType = "String", paramType = "query"), | |
61 | + @ApiImplicitParam(name = "name", value = "书名", dataType = "String", paramType = "query"), | |
62 | + @ApiImplicitParam(name = "category", value = "类别", dataType = "String", paramType = "query"), | |
63 | + @ApiImplicitParam(name = "description", value = "简介", dataType = "String", paramType = "query"), | |
64 | + }) | |
65 | + public JsonResult<String> addBook(@RequestBody Book book) { | |
66 | + String id = bookService.add(book); | |
67 | + return new JsonResult<>(true, "添加成功", id); | |
68 | + } | |
69 | + | |
70 | + @PutMapping("/edit") | |
71 | + @ApiOperation(value = "编辑接口") | |
72 | + @ApiImplicitParams({ | |
73 | + @ApiImplicitParam(name = "code", value = "编号", dataType = "String", paramType = "query"), | |
74 | + @ApiImplicitParam(name = "name", value = "书名", dataType = "String", paramType = "query"), | |
75 | + @ApiImplicitParam(name = "category", value = "类别", dataType = "String", paramType = "query"), | |
76 | + @ApiImplicitParam(name = "description", value = "简介", dataType = "String", paramType = "query"), | |
77 | + @ApiImplicitParam(name = "id", value = "主键id", required = true, paramType = "query") | |
78 | + }) | |
79 | + public JsonResult editBook(@RequestBody @Check(field = {"id"}) Book book) { | |
80 | + bookService.edit(book); | |
81 | + return new JsonResult(true, "编辑成功"); | |
82 | + } | |
83 | + | |
84 | + @GetMapping(value = "/{id}") | |
85 | + @ApiOperation(value = "根据id获取数据") | |
86 | + @ApiImplicitParams(@ApiImplicitParam(name = "id", value = "主键id", paramType = "path", required = true)) | |
87 | + public JsonResult<Book> getBook(@PathVariable(value = "id") String id) { | |
88 | + Book book = bookService.get(id); | |
89 | + return new JsonResult<>(true, "查询成功", book); | |
90 | + } | |
91 | + | |
92 | + @DeleteMapping(value = "/delete") | |
93 | + @ApiOperation(value = "根据传入的Id,删除数据") | |
94 | + public JsonResult<String> batchDelete(@RequestBody List<String> ids) { | |
95 | + bookService.deleteByIds(ids); | |
96 | + return new JsonResult<>(true, "删除成功"); | |
97 | + } | |
98 | + | |
99 | + @GetMapping(value = "/export") | |
100 | + @ApiOperation(value = "图书导出") | |
101 | + public void exportData(Book book, HttpServletRequest request, HttpServletResponse response) { | |
102 | + String filePath = bookService.exportData(book, BookExportData.class); | |
103 | + DownloadUtils.download(filePath, "图书.xlsx", response); | |
104 | + } | |
105 | +} | |
\ No newline at end of file | ... | ... |
1 | +package com.qgutech.qgyun.zxm.controller; | |
2 | + | |
3 | +import com.qgutech.qgyun.framework.common.result.JsonResult; | |
4 | +import com.qgutech.qgyun.framework.database.mybatis.model.Page; | |
5 | +import com.qgutech.qgyun.framework.starter.web.swagger.annotations.ParamHide; | |
6 | +import com.qgutech.qgyun.framework.starter.web.validator.annotations.Check; | |
7 | +import com.qgutech.qgyun.zxm.exportmodel.BookRelExportData; | |
8 | +import com.qgutech.qgyun.zxm.model.BookRel; | |
9 | +import com.qgutech.qgyun.zxm.service.BookRelService; | |
10 | +import com.qgutech.qgyun.zxm.utils.DownloadUtils; | |
11 | +import javax.annotation.Resource; | |
12 | +import io.swagger.annotations.*; | |
13 | +import org.springframework.web.bind.annotation.*; | |
14 | +import javax.servlet.http.HttpServletRequest; | |
15 | +import javax.servlet.http.HttpServletResponse; | |
16 | +import java.util.List; | |
17 | + | |
18 | + | |
19 | +/** | |
20 | + * BookRelController 服务提供类 | |
21 | + * | |
22 | + * @author auto | |
23 | + * @version 1.0 | |
24 | + * @since 2021-01-29 17:23:09 | |
25 | + */ | |
26 | +@RestController | |
27 | +@RequestMapping(value = "/bookRel") | |
28 | +@Api(value = "BookRelController" , tags = {"BookRelController 服务提供类"}) | |
29 | +public class BookRelController { | |
30 | + | |
31 | + @Resource | |
32 | + private BookRelService bookRelService; | |
33 | + | |
34 | + @GetMapping(value = "/page") | |
35 | + @ApiOperation(value = "获取分页") | |
36 | + @ApiImplicitParams({ | |
37 | + @ApiImplicitParam(name = "id", value = "ID", dataType = "String", paramType = "query"), | |
38 | + @ApiImplicitParam(name = "referId", value = "refer_id", dataType = "String", paramType = "query"), | |
39 | + @ApiImplicitParam(name = "funCode", value = "fun_code", dataType = "String", paramType = "query"), | |
40 | + @ApiImplicitParam(name = "fieldName", value = "field_name", dataType = "String", paramType = "query"), | |
41 | + @ApiImplicitParam(name = "bookId", value = "book_id", dataType = "String", paramType = "query"), | |
42 | + @ApiImplicitParam(name = "corpCode", value = "corpCode", dataType = "String", paramType = "query"), | |
43 | + @ApiImplicitParam(name = "createdAt", value = "createdAt", dataType = "Date", paramType = "query"), | |
44 | + @ApiImplicitParam(name = "updatedAt", value = "updatedAt", dataType = "Date", paramType = "query"), | |
45 | + @ApiImplicitParam(name = "createdBy", value = "createdBy", dataType = "String", paramType = "query"), | |
46 | + @ApiImplicitParam(name = "updatedBy", value = "updatedBy", dataType = "String", paramType = "query"), | |
47 | + @ApiImplicitParam(name = "pageNum", value = "页码", dataType = "Integer", paramType = "query"), | |
48 | + @ApiImplicitParam(name = "pageSize", value = "页大小", dataType = "Integer", paramType = "query") | |
49 | + }) | |
50 | + public JsonResult<Page<BookRel>> search(@ParamHide BookRel bookRel, @ParamHide Page<BookRel> page) { | |
51 | + page = bookRelService.search(bookRel, page); | |
52 | + return new JsonResult<>(true, "查询成功", page); | |
53 | + } | |
54 | + | |
55 | + @GetMapping(value = "/listAll") | |
56 | + @ApiOperation(value = "获取所有数据") | |
57 | + public JsonResult<List<BookRel>> listAll() { | |
58 | + return new JsonResult<>(true, "查询成功", bookRelService.listAll()); | |
59 | + } | |
60 | + | |
61 | + @PostMapping("/add") | |
62 | + @ApiOperation(value = "新增接口") | |
63 | + @ApiImplicitParams({ | |
64 | + @ApiImplicitParam(name = "id", value = "ID", dataType = "String", paramType = "query"), | |
65 | + @ApiImplicitParam(name = "referId", value = "refer_id", dataType = "String", paramType = "query"), | |
66 | + @ApiImplicitParam(name = "funCode", value = "fun_code", dataType = "String", paramType = "query"), | |
67 | + @ApiImplicitParam(name = "fieldName", value = "field_name", dataType = "String", paramType = "query"), | |
68 | + @ApiImplicitParam(name = "bookId", value = "book_id", dataType = "String", paramType = "query"), | |
69 | + @ApiImplicitParam(name = "corpCode", value = "corpCode", dataType = "String", paramType = "query"), | |
70 | + @ApiImplicitParam(name = "createdAt", value = "createdAt", dataType = "Date", paramType = "query"), | |
71 | + @ApiImplicitParam(name = "updatedAt", value = "updatedAt", dataType = "Date", paramType = "query"), | |
72 | + @ApiImplicitParam(name = "createdBy", value = "createdBy", dataType = "String", paramType = "query"), | |
73 | + @ApiImplicitParam(name = "updatedBy", value = "updatedBy", dataType = "String", paramType = "query"), | |
74 | + }) | |
75 | + public JsonResult<String> addBookRel(@RequestBody BookRel bookRel) { | |
76 | + String id = bookRelService.add(bookRel); | |
77 | + return new JsonResult<>(true, "添加成功", id); | |
78 | + } | |
79 | + | |
80 | + @PutMapping("/edit") | |
81 | + @ApiOperation(value = "编辑接口") | |
82 | + @ApiImplicitParams({ | |
83 | + @ApiImplicitParam(name = "id", value = "ID", dataType = "String", paramType = "query"), | |
84 | + @ApiImplicitParam(name = "referId", value = "refer_id", dataType = "String", paramType = "query"), | |
85 | + @ApiImplicitParam(name = "funCode", value = "fun_code", dataType = "String", paramType = "query"), | |
86 | + @ApiImplicitParam(name = "fieldName", value = "field_name", dataType = "String", paramType = "query"), | |
87 | + @ApiImplicitParam(name = "bookId", value = "book_id", dataType = "String", paramType = "query"), | |
88 | + @ApiImplicitParam(name = "corpCode", value = "corpCode", dataType = "String", paramType = "query"), | |
89 | + @ApiImplicitParam(name = "createdAt", value = "createdAt", dataType = "Date", paramType = "query"), | |
90 | + @ApiImplicitParam(name = "updatedAt", value = "updatedAt", dataType = "Date", paramType = "query"), | |
91 | + @ApiImplicitParam(name = "createdBy", value = "createdBy", dataType = "String", paramType = "query"), | |
92 | + @ApiImplicitParam(name = "updatedBy", value = "updatedBy", dataType = "String", paramType = "query"), | |
93 | + @ApiImplicitParam(name = "id", value = "主键id", required = true, paramType = "query") | |
94 | + }) | |
95 | + public JsonResult editBookRel(@RequestBody @Check(field = {"id"}) BookRel bookRel) { | |
96 | + bookRelService.edit(bookRel); | |
97 | + return new JsonResult(true, "编辑成功"); | |
98 | + } | |
99 | + | |
100 | + @GetMapping(value = "/{id}") | |
101 | + @ApiOperation(value = "根据id获取数据") | |
102 | + @ApiImplicitParams(@ApiImplicitParam(name = "id", value = "主键id", paramType = "path", required = true)) | |
103 | + public JsonResult<BookRel> getBookRel(@PathVariable(value = "id") String id) { | |
104 | + BookRel bookRel = bookRelService.get(id); | |
105 | + return new JsonResult<>(true, "查询成功", bookRel); | |
106 | + } | |
107 | + | |
108 | + @DeleteMapping(value = "/delete") | |
109 | + @ApiOperation(value = "根据传入的Id,删除数据") | |
110 | + public JsonResult<String> batchDelete(@RequestBody List<String> ids) { | |
111 | + bookRelService.deleteByIds(ids); | |
112 | + return new JsonResult<>(true, "删除成功"); | |
113 | + } | |
114 | + | |
115 | + @GetMapping(value = "/export") | |
116 | + @ApiOperation(value = "导出") | |
117 | + public void exportData(BookRel bookRel, HttpServletRequest request, HttpServletResponse response) { | |
118 | + String filePath = bookRelService.exportData(bookRel, BookRelExportData.class); | |
119 | + DownloadUtils.download(filePath, ".xlsx", response); | |
120 | + } | |
121 | +} | |
\ No newline at end of file | ... | ... |
1 | +package com.qgutech.qgyun.zxm.controller; | |
2 | + | |
3 | +import com.qgutech.qgyun.framework.common.result.JsonResult; | |
4 | +import com.qgutech.qgyun.framework.database.mybatis.model.Page; | |
5 | +import com.qgutech.qgyun.framework.starter.web.swagger.annotations.ParamHide; | |
6 | +import com.qgutech.qgyun.framework.starter.web.validator.annotations.Check; | |
7 | +import com.qgutech.qgyun.zxm.exportmodel.FileRelExportData; | |
8 | +import com.qgutech.qgyun.zxm.model.FileRel; | |
9 | +import com.qgutech.qgyun.zxm.service.FileRelService; | |
10 | +import com.qgutech.qgyun.zxm.utils.DownloadUtils; | |
11 | +import javax.annotation.Resource; | |
12 | +import io.swagger.annotations.*; | |
13 | +import org.springframework.web.bind.annotation.*; | |
14 | +import javax.servlet.http.HttpServletRequest; | |
15 | +import javax.servlet.http.HttpServletResponse; | |
16 | +import java.util.List; | |
17 | + | |
18 | + | |
19 | +/** | |
20 | + * FileRelController 服务提供类 | |
21 | + * | |
22 | + * @author auto | |
23 | + * @version 1.0 | |
24 | + * @since 2021-01-29 17:23:09 | |
25 | + */ | |
26 | +@RestController | |
27 | +@RequestMapping(value = "/fileRel") | |
28 | +@Api(value = "FileRelController" , tags = {"FileRelController 服务提供类"}) | |
29 | +public class FileRelController { | |
30 | + | |
31 | + @Resource | |
32 | + private FileRelService fileRelService; | |
33 | + | |
34 | + @GetMapping(value = "/page") | |
35 | + @ApiOperation(value = "获取分页") | |
36 | + @ApiImplicitParams({ | |
37 | + @ApiImplicitParam(name = "id", value = "ID", dataType = "String", paramType = "query"), | |
38 | + @ApiImplicitParam(name = "referId", value = "关联ID", dataType = "String", paramType = "query"), | |
39 | + @ApiImplicitParam(name = "funCode", value = "关联应用编号", dataType = "String", paramType = "query"), | |
40 | + @ApiImplicitParam(name = "fieldName", value = "关联对应字段列名", dataType = "String", paramType = "query"), | |
41 | + @ApiImplicitParam(name = "corpCode", value = "corpCode", dataType = "String", paramType = "query"), | |
42 | + @ApiImplicitParam(name = "createdAt", value = "createdAt", dataType = "Date", paramType = "query"), | |
43 | + @ApiImplicitParam(name = "updatedAt", value = "updatedAt", dataType = "Date", paramType = "query"), | |
44 | + @ApiImplicitParam(name = "createdBy", value = "createdBy", dataType = "String", paramType = "query"), | |
45 | + @ApiImplicitParam(name = "updatedBy", value = "updatedBy", dataType = "String", paramType = "query"), | |
46 | + @ApiImplicitParam(name = "fileId", value = "文件ID", dataType = "String", paramType = "query"), | |
47 | + @ApiImplicitParam(name = "pageNum", value = "页码", dataType = "Integer", paramType = "query"), | |
48 | + @ApiImplicitParam(name = "pageSize", value = "页大小", dataType = "Integer", paramType = "query") | |
49 | + }) | |
50 | + public JsonResult<Page<FileRel>> search(@ParamHide FileRel fileRel, @ParamHide Page<FileRel> page) { | |
51 | + page = fileRelService.search(fileRel, page); | |
52 | + return new JsonResult<>(true, "查询成功", page); | |
53 | + } | |
54 | + | |
55 | + @GetMapping(value = "/listAll") | |
56 | + @ApiOperation(value = "获取所有数据") | |
57 | + public JsonResult<List<FileRel>> listAll() { | |
58 | + return new JsonResult<>(true, "查询成功", fileRelService.listAll()); | |
59 | + } | |
60 | + | |
61 | + @PostMapping("/add") | |
62 | + @ApiOperation(value = "新增接口") | |
63 | + @ApiImplicitParams({ | |
64 | + @ApiImplicitParam(name = "id", value = "ID", dataType = "String", paramType = "query"), | |
65 | + @ApiImplicitParam(name = "referId", value = "关联ID", dataType = "String", paramType = "query"), | |
66 | + @ApiImplicitParam(name = "funCode", value = "关联应用编号", dataType = "String", paramType = "query"), | |
67 | + @ApiImplicitParam(name = "fieldName", value = "关联对应字段列名", dataType = "String", paramType = "query"), | |
68 | + @ApiImplicitParam(name = "corpCode", value = "corpCode", dataType = "String", paramType = "query"), | |
69 | + @ApiImplicitParam(name = "createdAt", value = "createdAt", dataType = "Date", paramType = "query"), | |
70 | + @ApiImplicitParam(name = "updatedAt", value = "updatedAt", dataType = "Date", paramType = "query"), | |
71 | + @ApiImplicitParam(name = "createdBy", value = "createdBy", dataType = "String", paramType = "query"), | |
72 | + @ApiImplicitParam(name = "updatedBy", value = "updatedBy", dataType = "String", paramType = "query"), | |
73 | + @ApiImplicitParam(name = "fileId", value = "文件ID", dataType = "String", paramType = "query"), | |
74 | + }) | |
75 | + public JsonResult<String> addFileRel(@RequestBody FileRel fileRel) { | |
76 | + String id = fileRelService.add(fileRel); | |
77 | + return new JsonResult<>(true, "添加成功", id); | |
78 | + } | |
79 | + | |
80 | + @PutMapping("/edit") | |
81 | + @ApiOperation(value = "编辑接口") | |
82 | + @ApiImplicitParams({ | |
83 | + @ApiImplicitParam(name = "id", value = "ID", dataType = "String", paramType = "query"), | |
84 | + @ApiImplicitParam(name = "referId", value = "关联ID", dataType = "String", paramType = "query"), | |
85 | + @ApiImplicitParam(name = "funCode", value = "关联应用编号", dataType = "String", paramType = "query"), | |
86 | + @ApiImplicitParam(name = "fieldName", value = "关联对应字段列名", dataType = "String", paramType = "query"), | |
87 | + @ApiImplicitParam(name = "corpCode", value = "corpCode", dataType = "String", paramType = "query"), | |
88 | + @ApiImplicitParam(name = "createdAt", value = "createdAt", dataType = "Date", paramType = "query"), | |
89 | + @ApiImplicitParam(name = "updatedAt", value = "updatedAt", dataType = "Date", paramType = "query"), | |
90 | + @ApiImplicitParam(name = "createdBy", value = "createdBy", dataType = "String", paramType = "query"), | |
91 | + @ApiImplicitParam(name = "updatedBy", value = "updatedBy", dataType = "String", paramType = "query"), | |
92 | + @ApiImplicitParam(name = "fileId", value = "文件ID", dataType = "String", paramType = "query"), | |
93 | + @ApiImplicitParam(name = "id", value = "主键id", required = true, paramType = "query") | |
94 | + }) | |
95 | + public JsonResult editFileRel(@RequestBody @Check(field = {"id"}) FileRel fileRel) { | |
96 | + fileRelService.edit(fileRel); | |
97 | + return new JsonResult(true, "编辑成功"); | |
98 | + } | |
99 | + | |
100 | + @GetMapping(value = "/{id}") | |
101 | + @ApiOperation(value = "根据id获取数据") | |
102 | + @ApiImplicitParams(@ApiImplicitParam(name = "id", value = "主键id", paramType = "path", required = true)) | |
103 | + public JsonResult<FileRel> getFileRel(@PathVariable(value = "id") String id) { | |
104 | + FileRel fileRel = fileRelService.get(id); | |
105 | + return new JsonResult<>(true, "查询成功", fileRel); | |
106 | + } | |
107 | + | |
108 | + @DeleteMapping(value = "/delete") | |
109 | + @ApiOperation(value = "根据传入的Id,删除数据") | |
110 | + public JsonResult<String> batchDelete(@RequestBody List<String> ids) { | |
111 | + fileRelService.deleteByIds(ids); | |
112 | + return new JsonResult<>(true, "删除成功"); | |
113 | + } | |
114 | + | |
115 | + @GetMapping(value = "/export") | |
116 | + @ApiOperation(value = "导出") | |
117 | + public void exportData(FileRel fileRel, HttpServletRequest request, HttpServletResponse response) { | |
118 | + String filePath = fileRelService.exportData(fileRel, FileRelExportData.class); | |
119 | + DownloadUtils.download(filePath, ".xlsx", response); | |
120 | + } | |
121 | +} | |
\ No newline at end of file | ... | ... |
1 | +package com.qgutech.qgyun.zxm.controller; | |
2 | + | |
3 | +import com.qgutech.qgyun.framework.common.result.JsonResult; | |
4 | +import com.qgutech.qgyun.framework.database.mybatis.model.Page; | |
5 | +import com.qgutech.qgyun.framework.starter.web.swagger.annotations.ParamHide; | |
6 | +import com.qgutech.qgyun.framework.starter.web.validator.annotations.Check; | |
7 | +import com.qgutech.qgyun.zxm.exportmodel.OrgRelExportData; | |
8 | +import com.qgutech.qgyun.zxm.model.OrgRel; | |
9 | +import com.qgutech.qgyun.zxm.service.OrgRelService; | |
10 | +import com.qgutech.qgyun.zxm.utils.DownloadUtils; | |
11 | +import javax.annotation.Resource; | |
12 | +import io.swagger.annotations.*; | |
13 | +import org.springframework.web.bind.annotation.*; | |
14 | +import javax.servlet.http.HttpServletRequest; | |
15 | +import javax.servlet.http.HttpServletResponse; | |
16 | +import java.util.List; | |
17 | + | |
18 | + | |
19 | +/** | |
20 | + * OrgRelController 服务提供类 | |
21 | + * | |
22 | + * @author auto | |
23 | + * @version 1.0 | |
24 | + * @since 2021-01-29 17:23:09 | |
25 | + */ | |
26 | +@RestController | |
27 | +@RequestMapping(value = "/orgRel") | |
28 | +@Api(value = "OrgRelController" , tags = {"OrgRelController 服务提供类"}) | |
29 | +public class OrgRelController { | |
30 | + | |
31 | + @Resource | |
32 | + private OrgRelService orgRelService; | |
33 | + | |
34 | + @GetMapping(value = "/page") | |
35 | + @ApiOperation(value = "获取分页") | |
36 | + @ApiImplicitParams({ | |
37 | + @ApiImplicitParam(name = "id", value = "ID", dataType = "String", paramType = "query"), | |
38 | + @ApiImplicitParam(name = "referId", value = "关联ID", dataType = "String", paramType = "query"), | |
39 | + @ApiImplicitParam(name = "funCode", value = "关联应用编号", dataType = "String", paramType = "query"), | |
40 | + @ApiImplicitParam(name = "fieldName", value = "关联对应字段列名", dataType = "String", paramType = "query"), | |
41 | + @ApiImplicitParam(name = "corpCode", value = "corpCode", dataType = "String", paramType = "query"), | |
42 | + @ApiImplicitParam(name = "createdAt", value = "createdAt", dataType = "Date", paramType = "query"), | |
43 | + @ApiImplicitParam(name = "updatedAt", value = "updatedAt", dataType = "Date", paramType = "query"), | |
44 | + @ApiImplicitParam(name = "createdBy", value = "createdBy", dataType = "String", paramType = "query"), | |
45 | + @ApiImplicitParam(name = "updatedBy", value = "updatedBy", dataType = "String", paramType = "query"), | |
46 | + @ApiImplicitParam(name = "orgId", value = "部门ID", dataType = "String", paramType = "query"), | |
47 | + @ApiImplicitParam(name = "pageNum", value = "页码", dataType = "Integer", paramType = "query"), | |
48 | + @ApiImplicitParam(name = "pageSize", value = "页大小", dataType = "Integer", paramType = "query") | |
49 | + }) | |
50 | + public JsonResult<Page<OrgRel>> search(@ParamHide OrgRel orgRel, @ParamHide Page<OrgRel> page) { | |
51 | + page = orgRelService.search(orgRel, page); | |
52 | + return new JsonResult<>(true, "查询成功", page); | |
53 | + } | |
54 | + | |
55 | + @GetMapping(value = "/listAll") | |
56 | + @ApiOperation(value = "获取所有数据") | |
57 | + public JsonResult<List<OrgRel>> listAll() { | |
58 | + return new JsonResult<>(true, "查询成功", orgRelService.listAll()); | |
59 | + } | |
60 | + | |
61 | + @PostMapping("/add") | |
62 | + @ApiOperation(value = "新增接口") | |
63 | + @ApiImplicitParams({ | |
64 | + @ApiImplicitParam(name = "id", value = "ID", dataType = "String", paramType = "query"), | |
65 | + @ApiImplicitParam(name = "referId", value = "关联ID", dataType = "String", paramType = "query"), | |
66 | + @ApiImplicitParam(name = "funCode", value = "关联应用编号", dataType = "String", paramType = "query"), | |
67 | + @ApiImplicitParam(name = "fieldName", value = "关联对应字段列名", dataType = "String", paramType = "query"), | |
68 | + @ApiImplicitParam(name = "corpCode", value = "corpCode", dataType = "String", paramType = "query"), | |
69 | + @ApiImplicitParam(name = "createdAt", value = "createdAt", dataType = "Date", paramType = "query"), | |
70 | + @ApiImplicitParam(name = "updatedAt", value = "updatedAt", dataType = "Date", paramType = "query"), | |
71 | + @ApiImplicitParam(name = "createdBy", value = "createdBy", dataType = "String", paramType = "query"), | |
72 | + @ApiImplicitParam(name = "updatedBy", value = "updatedBy", dataType = "String", paramType = "query"), | |
73 | + @ApiImplicitParam(name = "orgId", value = "部门ID", dataType = "String", paramType = "query"), | |
74 | + }) | |
75 | + public JsonResult<String> addOrgRel(@RequestBody OrgRel orgRel) { | |
76 | + String id = orgRelService.add(orgRel); | |
77 | + return new JsonResult<>(true, "添加成功", id); | |
78 | + } | |
79 | + | |
80 | + @PutMapping("/edit") | |
81 | + @ApiOperation(value = "编辑接口") | |
82 | + @ApiImplicitParams({ | |
83 | + @ApiImplicitParam(name = "id", value = "ID", dataType = "String", paramType = "query"), | |
84 | + @ApiImplicitParam(name = "referId", value = "关联ID", dataType = "String", paramType = "query"), | |
85 | + @ApiImplicitParam(name = "funCode", value = "关联应用编号", dataType = "String", paramType = "query"), | |
86 | + @ApiImplicitParam(name = "fieldName", value = "关联对应字段列名", dataType = "String", paramType = "query"), | |
87 | + @ApiImplicitParam(name = "corpCode", value = "corpCode", dataType = "String", paramType = "query"), | |
88 | + @ApiImplicitParam(name = "createdAt", value = "createdAt", dataType = "Date", paramType = "query"), | |
89 | + @ApiImplicitParam(name = "updatedAt", value = "updatedAt", dataType = "Date", paramType = "query"), | |
90 | + @ApiImplicitParam(name = "createdBy", value = "createdBy", dataType = "String", paramType = "query"), | |
91 | + @ApiImplicitParam(name = "updatedBy", value = "updatedBy", dataType = "String", paramType = "query"), | |
92 | + @ApiImplicitParam(name = "orgId", value = "部门ID", dataType = "String", paramType = "query"), | |
93 | + @ApiImplicitParam(name = "id", value = "主键id", required = true, paramType = "query") | |
94 | + }) | |
95 | + public JsonResult editOrgRel(@RequestBody @Check(field = {"id"}) OrgRel orgRel) { | |
96 | + orgRelService.edit(orgRel); | |
97 | + return new JsonResult(true, "编辑成功"); | |
98 | + } | |
99 | + | |
100 | + @GetMapping(value = "/{id}") | |
101 | + @ApiOperation(value = "根据id获取数据") | |
102 | + @ApiImplicitParams(@ApiImplicitParam(name = "id", value = "主键id", paramType = "path", required = true)) | |
103 | + public JsonResult<OrgRel> getOrgRel(@PathVariable(value = "id") String id) { | |
104 | + OrgRel orgRel = orgRelService.get(id); | |
105 | + return new JsonResult<>(true, "查询成功", orgRel); | |
106 | + } | |
107 | + | |
108 | + @DeleteMapping(value = "/delete") | |
109 | + @ApiOperation(value = "根据传入的Id,删除数据") | |
110 | + public JsonResult<String> batchDelete(@RequestBody List<String> ids) { | |
111 | + orgRelService.deleteByIds(ids); | |
112 | + return new JsonResult<>(true, "删除成功"); | |
113 | + } | |
114 | + | |
115 | + @GetMapping(value = "/export") | |
116 | + @ApiOperation(value = "导出") | |
117 | + public void exportData(OrgRel orgRel, HttpServletRequest request, HttpServletResponse response) { | |
118 | + String filePath = orgRelService.exportData(orgRel, OrgRelExportData.class); | |
119 | + DownloadUtils.download(filePath, ".xlsx", response); | |
120 | + } | |
121 | +} | |
\ No newline at end of file | ... | ... |
1 | +package com.qgutech.qgyun.zxm.controller; | |
2 | + | |
3 | +import com.qgutech.qgyun.framework.common.result.JsonResult; | |
4 | +import com.qgutech.qgyun.framework.database.mybatis.model.Page; | |
5 | +import com.qgutech.qgyun.framework.starter.web.swagger.annotations.ParamHide; | |
6 | +import com.qgutech.qgyun.framework.starter.web.validator.annotations.Check; | |
7 | +import com.qgutech.qgyun.zxm.exportmodel.TshjExportData; | |
8 | +import com.qgutech.qgyun.zxm.model.Tshj; | |
9 | +import com.qgutech.qgyun.zxm.service.TshjService; | |
10 | +import com.qgutech.qgyun.zxm.utils.DownloadUtils; | |
11 | +import javax.annotation.Resource; | |
12 | +import io.swagger.annotations.*; | |
13 | +import org.springframework.web.bind.annotation.*; | |
14 | +import javax.servlet.http.HttpServletRequest; | |
15 | +import javax.servlet.http.HttpServletResponse; | |
16 | +import java.util.List; | |
17 | + | |
18 | + | |
19 | +/** | |
20 | + * TshjController 服务提供类 | |
21 | + * | |
22 | + * @author auto | |
23 | + * @version 1.0 | |
24 | + * @since 2021-01-29 17:23:09 | |
25 | + */ | |
26 | +@RestController | |
27 | +@RequestMapping(value = "/tshj") | |
28 | +@Api(value = "TshjController" , tags = {"TshjController 服务提供类"}) | |
29 | +public class TshjController { | |
30 | + | |
31 | + @Resource | |
32 | + private TshjService tshjService; | |
33 | + | |
34 | + @GetMapping(value = "/page") | |
35 | + @ApiOperation(value = "获取分页") | |
36 | + @ApiImplicitParams({ | |
37 | + @ApiImplicitParam(name = "bookId", value = "图书", dataType = "String", paramType = "query"), | |
38 | + @ApiImplicitParam(name = "returnTime", value = "归还时间", dataType = "Date", paramType = "query"), | |
39 | + @ApiImplicitParam(name = "createdOrg", value = "所属部门", dataType = "String", paramType = "query"), | |
40 | + @ApiImplicitParam(name = "createdBy", value = "createdBy", dataType = "String", paramType = "query"), | |
41 | + @ApiImplicitParam(name = "pageNum", value = "页码", dataType = "Integer", paramType = "query"), | |
42 | + @ApiImplicitParam(name = "pageSize", value = "页大小", dataType = "Integer", paramType = "query") | |
43 | + }) | |
44 | + public JsonResult<Page<Tshj>> search(@ParamHide Tshj tshj, @ParamHide Page<Tshj> page) { | |
45 | + page = tshjService.search(tshj, page); | |
46 | + return new JsonResult<>(true, "查询成功", page); | |
47 | + } | |
48 | + | |
49 | + @GetMapping(value = "/listAll") | |
50 | + @ApiOperation(value = "获取所有数据") | |
51 | + public JsonResult<List<Tshj>> listAll() { | |
52 | + return new JsonResult<>(true, "查询成功", tshjService.listAll()); | |
53 | + } | |
54 | + | |
55 | + @PostMapping("/add") | |
56 | + @ApiOperation(value = "新增接口") | |
57 | + @ApiImplicitParams({ | |
58 | + @ApiImplicitParam(name = "bookId", value = "图书", dataType = "String", paramType = "query"), | |
59 | + @ApiImplicitParam(name = "returnTime", value = "归还时间", dataType = "Date", paramType = "query"), | |
60 | + }) | |
61 | + public JsonResult<String> addTshj(@RequestBody Tshj tshj) { | |
62 | + String id = tshjService.add(tshj); | |
63 | + return new JsonResult<>(true, "添加成功", id); | |
64 | + } | |
65 | + | |
66 | + @PutMapping("/edit") | |
67 | + @ApiOperation(value = "编辑接口") | |
68 | + @ApiImplicitParams({ | |
69 | + @ApiImplicitParam(name = "bookId", value = "图书", dataType = "String", paramType = "query"), | |
70 | + @ApiImplicitParam(name = "returnTime", value = "归还时间", dataType = "Date", paramType = "query"), | |
71 | + @ApiImplicitParam(name = "id", value = "主键id", required = true, paramType = "query") | |
72 | + }) | |
73 | + public JsonResult editTshj(@RequestBody @Check(field = {"id"}) Tshj tshj) { | |
74 | + tshjService.edit(tshj); | |
75 | + return new JsonResult(true, "编辑成功"); | |
76 | + } | |
77 | + | |
78 | + @GetMapping(value = "/{id}") | |
79 | + @ApiOperation(value = "根据id获取数据") | |
80 | + @ApiImplicitParams(@ApiImplicitParam(name = "id", value = "主键id", paramType = "path", required = true)) | |
81 | + public JsonResult<Tshj> getTshj(@PathVariable(value = "id") String id) { | |
82 | + Tshj tshj = tshjService.get(id); | |
83 | + return new JsonResult<>(true, "查询成功", tshj); | |
84 | + } | |
85 | + | |
86 | + @DeleteMapping(value = "/delete") | |
87 | + @ApiOperation(value = "根据传入的Id,删除数据") | |
88 | + public JsonResult<String> batchDelete(@RequestBody List<String> ids) { | |
89 | + tshjService.deleteByIds(ids); | |
90 | + return new JsonResult<>(true, "删除成功"); | |
91 | + } | |
92 | + | |
93 | + @GetMapping(value = "/export") | |
94 | + @ApiOperation(value = "图书借阅导出") | |
95 | + public void exportData(Tshj tshj, HttpServletRequest request, HttpServletResponse response) { | |
96 | + String filePath = tshjService.exportData(tshj, TshjExportData.class); | |
97 | + DownloadUtils.download(filePath, "图书借阅.xlsx", response); | |
98 | + } | |
99 | +} | |
\ No newline at end of file | ... | ... |
1 | +package com.qgutech.qgyun.zxm.controller; | |
2 | + | |
3 | +import com.qgutech.qgyun.framework.common.result.JsonResult; | |
4 | +import com.qgutech.qgyun.framework.database.mybatis.model.Page; | |
5 | +import com.qgutech.qgyun.framework.starter.web.swagger.annotations.ParamHide; | |
6 | +import com.qgutech.qgyun.framework.starter.web.validator.annotations.Check; | |
7 | +import com.qgutech.qgyun.zxm.exportmodel.UserRelExportData; | |
8 | +import com.qgutech.qgyun.zxm.model.UserRel; | |
9 | +import com.qgutech.qgyun.zxm.service.UserRelService; | |
10 | +import com.qgutech.qgyun.zxm.utils.DownloadUtils; | |
11 | +import javax.annotation.Resource; | |
12 | +import io.swagger.annotations.*; | |
13 | +import org.springframework.web.bind.annotation.*; | |
14 | +import javax.servlet.http.HttpServletRequest; | |
15 | +import javax.servlet.http.HttpServletResponse; | |
16 | +import java.util.List; | |
17 | + | |
18 | + | |
19 | +/** | |
20 | + * UserRelController 服务提供类 | |
21 | + * | |
22 | + * @author auto | |
23 | + * @version 1.0 | |
24 | + * @since 2021-01-29 17:23:09 | |
25 | + */ | |
26 | +@RestController | |
27 | +@RequestMapping(value = "/userRel") | |
28 | +@Api(value = "UserRelController" , tags = {"UserRelController 服务提供类"}) | |
29 | +public class UserRelController { | |
30 | + | |
31 | + @Resource | |
32 | + private UserRelService userRelService; | |
33 | + | |
34 | + @GetMapping(value = "/page") | |
35 | + @ApiOperation(value = "获取分页") | |
36 | + @ApiImplicitParams({ | |
37 | + @ApiImplicitParam(name = "id", value = "ID", dataType = "String", paramType = "query"), | |
38 | + @ApiImplicitParam(name = "referId", value = "关联ID", dataType = "String", paramType = "query"), | |
39 | + @ApiImplicitParam(name = "funCode", value = "关联应用编号", dataType = "String", paramType = "query"), | |
40 | + @ApiImplicitParam(name = "fieldName", value = "关联对应字段列名", dataType = "String", paramType = "query"), | |
41 | + @ApiImplicitParam(name = "corpCode", value = "corpCode", dataType = "String", paramType = "query"), | |
42 | + @ApiImplicitParam(name = "createdAt", value = "createdAt", dataType = "Date", paramType = "query"), | |
43 | + @ApiImplicitParam(name = "updatedAt", value = "updatedAt", dataType = "Date", paramType = "query"), | |
44 | + @ApiImplicitParam(name = "createdBy", value = "createdBy", dataType = "String", paramType = "query"), | |
45 | + @ApiImplicitParam(name = "updatedBy", value = "updatedBy", dataType = "String", paramType = "query"), | |
46 | + @ApiImplicitParam(name = "userId", value = "用户ID", dataType = "String", paramType = "query"), | |
47 | + @ApiImplicitParam(name = "pageNum", value = "页码", dataType = "Integer", paramType = "query"), | |
48 | + @ApiImplicitParam(name = "pageSize", value = "页大小", dataType = "Integer", paramType = "query") | |
49 | + }) | |
50 | + public JsonResult<Page<UserRel>> search(@ParamHide UserRel userRel, @ParamHide Page<UserRel> page) { | |
51 | + page = userRelService.search(userRel, page); | |
52 | + return new JsonResult<>(true, "查询成功", page); | |
53 | + } | |
54 | + | |
55 | + @GetMapping(value = "/listAll") | |
56 | + @ApiOperation(value = "获取所有数据") | |
57 | + public JsonResult<List<UserRel>> listAll() { | |
58 | + return new JsonResult<>(true, "查询成功", userRelService.listAll()); | |
59 | + } | |
60 | + | |
61 | + @PostMapping("/add") | |
62 | + @ApiOperation(value = "新增接口") | |
63 | + @ApiImplicitParams({ | |
64 | + @ApiImplicitParam(name = "id", value = "ID", dataType = "String", paramType = "query"), | |
65 | + @ApiImplicitParam(name = "referId", value = "关联ID", dataType = "String", paramType = "query"), | |
66 | + @ApiImplicitParam(name = "funCode", value = "关联应用编号", dataType = "String", paramType = "query"), | |
67 | + @ApiImplicitParam(name = "fieldName", value = "关联对应字段列名", dataType = "String", paramType = "query"), | |
68 | + @ApiImplicitParam(name = "corpCode", value = "corpCode", dataType = "String", paramType = "query"), | |
69 | + @ApiImplicitParam(name = "createdAt", value = "createdAt", dataType = "Date", paramType = "query"), | |
70 | + @ApiImplicitParam(name = "updatedAt", value = "updatedAt", dataType = "Date", paramType = "query"), | |
71 | + @ApiImplicitParam(name = "createdBy", value = "createdBy", dataType = "String", paramType = "query"), | |
72 | + @ApiImplicitParam(name = "updatedBy", value = "updatedBy", dataType = "String", paramType = "query"), | |
73 | + @ApiImplicitParam(name = "userId", value = "用户ID", dataType = "String", paramType = "query"), | |
74 | + }) | |
75 | + public JsonResult<String> addUserRel(@RequestBody UserRel userRel) { | |
76 | + String id = userRelService.add(userRel); | |
77 | + return new JsonResult<>(true, "添加成功", id); | |
78 | + } | |
79 | + | |
80 | + @PutMapping("/edit") | |
81 | + @ApiOperation(value = "编辑接口") | |
82 | + @ApiImplicitParams({ | |
83 | + @ApiImplicitParam(name = "id", value = "ID", dataType = "String", paramType = "query"), | |
84 | + @ApiImplicitParam(name = "referId", value = "关联ID", dataType = "String", paramType = "query"), | |
85 | + @ApiImplicitParam(name = "funCode", value = "关联应用编号", dataType = "String", paramType = "query"), | |
86 | + @ApiImplicitParam(name = "fieldName", value = "关联对应字段列名", dataType = "String", paramType = "query"), | |
87 | + @ApiImplicitParam(name = "corpCode", value = "corpCode", dataType = "String", paramType = "query"), | |
88 | + @ApiImplicitParam(name = "createdAt", value = "createdAt", dataType = "Date", paramType = "query"), | |
89 | + @ApiImplicitParam(name = "updatedAt", value = "updatedAt", dataType = "Date", paramType = "query"), | |
90 | + @ApiImplicitParam(name = "createdBy", value = "createdBy", dataType = "String", paramType = "query"), | |
91 | + @ApiImplicitParam(name = "updatedBy", value = "updatedBy", dataType = "String", paramType = "query"), | |
92 | + @ApiImplicitParam(name = "userId", value = "用户ID", dataType = "String", paramType = "query"), | |
93 | + @ApiImplicitParam(name = "id", value = "主键id", required = true, paramType = "query") | |
94 | + }) | |
95 | + public JsonResult editUserRel(@RequestBody @Check(field = {"id"}) UserRel userRel) { | |
96 | + userRelService.edit(userRel); | |
97 | + return new JsonResult(true, "编辑成功"); | |
98 | + } | |
99 | + | |
100 | + @GetMapping(value = "/{id}") | |
101 | + @ApiOperation(value = "根据id获取数据") | |
102 | + @ApiImplicitParams(@ApiImplicitParam(name = "id", value = "主键id", paramType = "path", required = true)) | |
103 | + public JsonResult<UserRel> getUserRel(@PathVariable(value = "id") String id) { | |
104 | + UserRel userRel = userRelService.get(id); | |
105 | + return new JsonResult<>(true, "查询成功", userRel); | |
106 | + } | |
107 | + | |
108 | + @DeleteMapping(value = "/delete") | |
109 | + @ApiOperation(value = "根据传入的Id,删除数据") | |
110 | + public JsonResult<String> batchDelete(@RequestBody List<String> ids) { | |
111 | + userRelService.deleteByIds(ids); | |
112 | + return new JsonResult<>(true, "删除成功"); | |
113 | + } | |
114 | + | |
115 | + @GetMapping(value = "/export") | |
116 | + @ApiOperation(value = "导出") | |
117 | + public void exportData(UserRel userRel, HttpServletRequest request, HttpServletResponse response) { | |
118 | + String filePath = userRelService.exportData(userRel, UserRelExportData.class); | |
119 | + DownloadUtils.download(filePath, ".xlsx", response); | |
120 | + } | |
121 | +} | |
\ No newline at end of file | ... | ... |
1 | +package com.qgutech.qgyun.zxm.exportmodel; | |
2 | + | |
3 | +import com.qgutech.qgyun.framework.database.model.BaseCorpModel; | |
4 | +import com.alibaba.excel.metadata.BaseRowModel; | |
5 | +import com.alibaba.excel.annotation.ExcelProperty; | |
6 | +import java.util.Date; | |
7 | +import lombok.Getter; | |
8 | +import lombok.Setter; | |
9 | +import lombok.ToString; | |
10 | +import io.swagger.annotations.ApiModel; | |
11 | +import io.swagger.annotations.ApiModelProperty; | |
12 | + | |
13 | +/** | |
14 | + * 图书 导出实体类 | |
15 | + * | |
16 | + * @author auto | |
17 | + * @version 1.0 | |
18 | + * @since 2021-01-29 17:23:10 | |
19 | + */ | |
20 | +@Getter | |
21 | +@Setter | |
22 | +@ToString | |
23 | +@ApiModel(value = "BookExportData", description = "图书导出实体类") | |
24 | +public class BookExportData extends BaseRowModel { | |
25 | + | |
26 | + /** | |
27 | + * 编号 | |
28 | + */ | |
29 | + @ExcelProperty(value = {"编号"}, index = 0) | |
30 | + private String code; | |
31 | + | |
32 | + /** | |
33 | + * 书名 | |
34 | + */ | |
35 | + @ExcelProperty(value = {"书名"}, index = 1) | |
36 | + private String name; | |
37 | + | |
38 | + /** | |
39 | + * 类别 | |
40 | + */ | |
41 | + @ExcelProperty(value = {"类别"}, index = 2) | |
42 | + private String category; | |
43 | + | |
44 | + /** | |
45 | + * 简介 | |
46 | + */ | |
47 | + @ExcelProperty(value = {"简介"}, index = 3) | |
48 | + private String description; | |
49 | + | |
50 | + /** | |
51 | + * 封面 | |
52 | + */ | |
53 | + @ExcelProperty(value = {"封面"}, index = 4) | |
54 | + private String picture; | |
55 | + | |
56 | + /** | |
57 | + * 所属部门 | |
58 | + */ | |
59 | + @ExcelProperty(value = {"所属部门"}, index = 5) | |
60 | + private String createdOrg; | |
61 | + | |
62 | +} | |
\ No newline at end of file | ... | ... |
1 | +package com.qgutech.qgyun.zxm.exportmodel; | |
2 | + | |
3 | +import com.qgutech.qgyun.framework.database.model.BaseCorpModel; | |
4 | +import com.alibaba.excel.metadata.BaseRowModel; | |
5 | +import com.alibaba.excel.annotation.ExcelProperty; | |
6 | +import java.util.Date; | |
7 | +import lombok.Getter; | |
8 | +import lombok.Setter; | |
9 | +import lombok.ToString; | |
10 | +import io.swagger.annotations.ApiModel; | |
11 | +import io.swagger.annotations.ApiModelProperty; | |
12 | + | |
13 | +/** | |
14 | + * 导出实体类 | |
15 | + * | |
16 | + * @author auto | |
17 | + * @version 1.0 | |
18 | + * @since 2021-01-29 17:23:10 | |
19 | + */ | |
20 | +@Getter | |
21 | +@Setter | |
22 | +@ToString | |
23 | +@ApiModel(value = "BookRelExportData", description = "导出实体类") | |
24 | +public class BookRelExportData extends BaseRowModel { | |
25 | + | |
26 | + /** | |
27 | + * refer_id | |
28 | + */ | |
29 | + @ExcelProperty(value = {"refer_id"}, index = 0) | |
30 | + private String referId; | |
31 | + | |
32 | + /** | |
33 | + * fun_code | |
34 | + */ | |
35 | + @ExcelProperty(value = {"fun_code"}, index = 1) | |
36 | + private String funCode; | |
37 | + | |
38 | + /** | |
39 | + * field_name | |
40 | + */ | |
41 | + @ExcelProperty(value = {"field_name"}, index = 2) | |
42 | + private String fieldName; | |
43 | + | |
44 | + /** | |
45 | + * book_id | |
46 | + */ | |
47 | + @ExcelProperty(value = {"book_id"}, index = 3) | |
48 | + private String bookId; | |
49 | + | |
50 | +} | |
\ No newline at end of file | ... | ... |
1 | +package com.qgutech.qgyun.zxm.exportmodel; | |
2 | + | |
3 | +import com.qgutech.qgyun.framework.database.model.BaseCorpModel; | |
4 | +import com.alibaba.excel.metadata.BaseRowModel; | |
5 | +import com.alibaba.excel.annotation.ExcelProperty; | |
6 | +import java.util.Date; | |
7 | +import lombok.Getter; | |
8 | +import lombok.Setter; | |
9 | +import lombok.ToString; | |
10 | +import io.swagger.annotations.ApiModel; | |
11 | +import io.swagger.annotations.ApiModelProperty; | |
12 | + | |
13 | +/** | |
14 | + * 导出实体类 | |
15 | + * | |
16 | + * @author auto | |
17 | + * @version 1.0 | |
18 | + * @since 2021-01-29 17:23:10 | |
19 | + */ | |
20 | +@Getter | |
21 | +@Setter | |
22 | +@ToString | |
23 | +@ApiModel(value = "FileRelExportData", description = "导出实体类") | |
24 | +public class FileRelExportData extends BaseRowModel { | |
25 | + | |
26 | + /** | |
27 | + * 关联ID | |
28 | + */ | |
29 | + @ExcelProperty(value = {"关联ID"}, index = 0) | |
30 | + private String referId; | |
31 | + | |
32 | + /** | |
33 | + * 关联应用编号 | |
34 | + */ | |
35 | + @ExcelProperty(value = {"关联应用编号"}, index = 1) | |
36 | + private String funCode; | |
37 | + | |
38 | + /** | |
39 | + * 关联对应字段列名 | |
40 | + */ | |
41 | + @ExcelProperty(value = {"关联对应字段列名"}, index = 2) | |
42 | + private String fieldName; | |
43 | + | |
44 | + /** | |
45 | + * 文件ID | |
46 | + */ | |
47 | + @ExcelProperty(value = {"文件ID"}, index = 3) | |
48 | + private String fileId; | |
49 | + | |
50 | +} | |
\ No newline at end of file | ... | ... |
1 | +package com.qgutech.qgyun.zxm.exportmodel; | |
2 | + | |
3 | +import com.qgutech.qgyun.framework.database.model.BaseCorpModel; | |
4 | +import com.alibaba.excel.metadata.BaseRowModel; | |
5 | +import com.alibaba.excel.annotation.ExcelProperty; | |
6 | +import java.util.Date; | |
7 | +import lombok.Getter; | |
8 | +import lombok.Setter; | |
9 | +import lombok.ToString; | |
10 | +import io.swagger.annotations.ApiModel; | |
11 | +import io.swagger.annotations.ApiModelProperty; | |
12 | + | |
13 | +/** | |
14 | + * 导出实体类 | |
15 | + * | |
16 | + * @author auto | |
17 | + * @version 1.0 | |
18 | + * @since 2021-01-29 17:23:10 | |
19 | + */ | |
20 | +@Getter | |
21 | +@Setter | |
22 | +@ToString | |
23 | +@ApiModel(value = "OrgRelExportData", description = "导出实体类") | |
24 | +public class OrgRelExportData extends BaseRowModel { | |
25 | + | |
26 | + /** | |
27 | + * 关联ID | |
28 | + */ | |
29 | + @ExcelProperty(value = {"关联ID"}, index = 0) | |
30 | + private String referId; | |
31 | + | |
32 | + /** | |
33 | + * 关联应用编号 | |
34 | + */ | |
35 | + @ExcelProperty(value = {"关联应用编号"}, index = 1) | |
36 | + private String funCode; | |
37 | + | |
38 | + /** | |
39 | + * 关联对应字段列名 | |
40 | + */ | |
41 | + @ExcelProperty(value = {"关联对应字段列名"}, index = 2) | |
42 | + private String fieldName; | |
43 | + | |
44 | + /** | |
45 | + * 部门ID | |
46 | + */ | |
47 | + @ExcelProperty(value = {"部门ID"}, index = 3) | |
48 | + private String orgId; | |
49 | + | |
50 | +} | |
\ No newline at end of file | ... | ... |
1 | +package com.qgutech.qgyun.zxm.exportmodel; | |
2 | + | |
3 | +import com.qgutech.qgyun.framework.database.model.BaseCorpModel; | |
4 | +import com.alibaba.excel.metadata.BaseRowModel; | |
5 | +import com.alibaba.excel.annotation.ExcelProperty; | |
6 | +import java.util.Date; | |
7 | +import lombok.Getter; | |
8 | +import lombok.Setter; | |
9 | +import lombok.ToString; | |
10 | +import io.swagger.annotations.ApiModel; | |
11 | +import io.swagger.annotations.ApiModelProperty; | |
12 | +import com.fasterxml.jackson.annotation.JsonFormat; | |
13 | +import org.springframework.format.annotation.DateTimeFormat; | |
14 | +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; | |
15 | +import com.fasterxml.jackson.databind.annotation.JsonSerialize; | |
16 | +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; | |
17 | +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; | |
18 | +import java.time.LocalDateTime; | |
19 | + | |
20 | +/** | |
21 | + * 图书借阅 导出实体类 | |
22 | + * | |
23 | + * @author auto | |
24 | + * @version 1.0 | |
25 | + * @since 2021-01-29 17:23:11 | |
26 | + */ | |
27 | +@Getter | |
28 | +@Setter | |
29 | +@ToString | |
30 | +@ApiModel(value = "TshjExportData", description = "图书借阅导出实体类") | |
31 | +public class TshjExportData extends BaseRowModel { | |
32 | + | |
33 | + /** | |
34 | + * 图书 | |
35 | + */ | |
36 | + @ExcelProperty(value = {"图书"}, index = 0) | |
37 | + private String bookId; | |
38 | + | |
39 | + /** | |
40 | + * 归还时间 | |
41 | + */ | |
42 | + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") | |
43 | + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") | |
44 | + @ApiModelProperty(value = "归还时间") | |
45 | + @JsonSerialize(using = LocalDateTimeSerializer.class) | |
46 | + @JsonDeserialize(using = LocalDateTimeDeserializer.class, as = LocalDateTime.class) | |
47 | + @ExcelProperty(value = {"归还时间"}, index = 1) | |
48 | + private LocalDateTime returnTime; | |
49 | + | |
50 | + /** | |
51 | + * 所属部门 | |
52 | + */ | |
53 | + @ExcelProperty(value = {"所属部门"}, index = 2) | |
54 | + private String createdOrg; | |
55 | + | |
56 | +} | |
\ No newline at end of file | ... | ... |
1 | +package com.qgutech.qgyun.zxm.exportmodel; | |
2 | + | |
3 | +import com.qgutech.qgyun.framework.database.model.BaseCorpModel; | |
4 | +import com.alibaba.excel.metadata.BaseRowModel; | |
5 | +import com.alibaba.excel.annotation.ExcelProperty; | |
6 | +import java.util.Date; | |
7 | +import lombok.Getter; | |
8 | +import lombok.Setter; | |
9 | +import lombok.ToString; | |
10 | +import io.swagger.annotations.ApiModel; | |
11 | +import io.swagger.annotations.ApiModelProperty; | |
12 | + | |
13 | +/** | |
14 | + * 导出实体类 | |
15 | + * | |
16 | + * @author auto | |
17 | + * @version 1.0 | |
18 | + * @since 2021-01-29 17:23:11 | |
19 | + */ | |
20 | +@Getter | |
21 | +@Setter | |
22 | +@ToString | |
23 | +@ApiModel(value = "UserRelExportData", description = "导出实体类") | |
24 | +public class UserRelExportData extends BaseRowModel { | |
25 | + | |
26 | + /** | |
27 | + * 关联ID | |
28 | + */ | |
29 | + @ExcelProperty(value = {"关联ID"}, index = 0) | |
30 | + private String referId; | |
31 | + | |
32 | + /** | |
33 | + * 关联应用编号 | |
34 | + */ | |
35 | + @ExcelProperty(value = {"关联应用编号"}, index = 1) | |
36 | + private String funCode; | |
37 | + | |
38 | + /** | |
39 | + * 关联对应字段列名 | |
40 | + */ | |
41 | + @ExcelProperty(value = {"关联对应字段列名"}, index = 2) | |
42 | + private String fieldName; | |
43 | + | |
44 | + /** | |
45 | + * 用户ID | |
46 | + */ | |
47 | + @ExcelProperty(value = {"用户ID"}, index = 3) | |
48 | + private String userId; | |
49 | + | |
50 | +} | |
\ No newline at end of file | ... | ... |
1 | +package com.qgutech.qgyun.zxm.mapper; | |
2 | + | |
3 | +import com.qgutech.qgyun.framework.database.mybatis.registermapper.QguBaseMapper; | |
4 | +import com.qgutech.qgyun.zxm.model.Book; | |
5 | +import org.apache.ibatis.annotations.Param; | |
6 | + | |
7 | +import java.util.List; | |
8 | + | |
9 | +/** | |
10 | + * @author auto | |
11 | + * @version 1.0 | |
12 | + * @since 2021-01-29 17:23:09 | |
13 | + */ | |
14 | +public interface BookMapper extends QguBaseMapper<Book> { | |
15 | + | |
16 | + /** | |
17 | + * 根据实体字段条件获取对应实体集合--分页公用(分页由PageHelper实现-解耦合) | |
18 | + * | |
19 | + * @param book 实体对象 | |
20 | + * @return 对象集合 | |
21 | + */ | |
22 | + List<Book> search(@Param("con") Book book); | |
23 | +} | ... | ... |
1 | +package com.qgutech.qgyun.zxm.mapper; | |
2 | + | |
3 | +import com.qgutech.qgyun.framework.database.mybatis.registermapper.QguBaseMapper; | |
4 | +import com.qgutech.qgyun.zxm.model.BookRel; | |
5 | +import org.apache.ibatis.annotations.Param; | |
6 | + | |
7 | +import java.util.List; | |
8 | + | |
9 | +/** | |
10 | + * @author auto | |
11 | + * @version 1.0 | |
12 | + * @since 2021-01-29 17:23:09 | |
13 | + */ | |
14 | +public interface BookRelMapper extends QguBaseMapper<BookRel> { | |
15 | + | |
16 | + /** | |
17 | + * 根据实体字段条件获取对应实体集合--分页公用(分页由PageHelper实现-解耦合) | |
18 | + * | |
19 | + * @param bookRel 实体对象 | |
20 | + * @return 对象集合 | |
21 | + */ | |
22 | + List<BookRel> search(@Param("con") BookRel bookRel); | |
23 | +} | ... | ... |
1 | +package com.qgutech.qgyun.zxm.mapper; | |
2 | + | |
3 | +import com.qgutech.qgyun.framework.database.mybatis.registermapper.QguBaseMapper; | |
4 | +import com.qgutech.qgyun.zxm.model.FileRel; | |
5 | +import org.apache.ibatis.annotations.Param; | |
6 | + | |
7 | +import java.util.List; | |
8 | + | |
9 | +/** | |
10 | + * @author auto | |
11 | + * @version 1.0 | |
12 | + * @since 2021-01-29 17:23:09 | |
13 | + */ | |
14 | +public interface FileRelMapper extends QguBaseMapper<FileRel> { | |
15 | + | |
16 | + /** | |
17 | + * 根据实体字段条件获取对应实体集合--分页公用(分页由PageHelper实现-解耦合) | |
18 | + * | |
19 | + * @param fileRel 实体对象 | |
20 | + * @return 对象集合 | |
21 | + */ | |
22 | + List<FileRel> search(@Param("con") FileRel fileRel); | |
23 | +} | ... | ... |
1 | +package com.qgutech.qgyun.zxm.mapper; | |
2 | + | |
3 | +import com.qgutech.qgyun.framework.database.mybatis.registermapper.QguBaseMapper; | |
4 | +import com.qgutech.qgyun.zxm.model.OrgRel; | |
5 | +import org.apache.ibatis.annotations.Param; | |
6 | + | |
7 | +import java.util.List; | |
8 | + | |
9 | +/** | |
10 | + * @author auto | |
11 | + * @version 1.0 | |
12 | + * @since 2021-01-29 17:23:09 | |
13 | + */ | |
14 | +public interface OrgRelMapper extends QguBaseMapper<OrgRel> { | |
15 | + | |
16 | + /** | |
17 | + * 根据实体字段条件获取对应实体集合--分页公用(分页由PageHelper实现-解耦合) | |
18 | + * | |
19 | + * @param orgRel 实体对象 | |
20 | + * @return 对象集合 | |
21 | + */ | |
22 | + List<OrgRel> search(@Param("con") OrgRel orgRel); | |
23 | +} | ... | ... |
1 | +package com.qgutech.qgyun.zxm.mapper; | |
2 | + | |
3 | +import com.qgutech.qgyun.framework.database.mybatis.registermapper.QguBaseMapper; | |
4 | +import com.qgutech.qgyun.zxm.model.Tshj; | |
5 | +import org.apache.ibatis.annotations.Param; | |
6 | + | |
7 | +import java.util.List; | |
8 | + | |
9 | +/** | |
10 | + * @author auto | |
11 | + * @version 1.0 | |
12 | + * @since 2021-01-29 17:23:09 | |
13 | + */ | |
14 | +public interface TshjMapper extends QguBaseMapper<Tshj> { | |
15 | + | |
16 | + /** | |
17 | + * 根据实体字段条件获取对应实体集合--分页公用(分页由PageHelper实现-解耦合) | |
18 | + * | |
19 | + * @param tshj 实体对象 | |
20 | + * @return 对象集合 | |
21 | + */ | |
22 | + List<Tshj> search(@Param("con") Tshj tshj); | |
23 | +} | ... | ... |
1 | +package com.qgutech.qgyun.zxm.mapper; | |
2 | + | |
3 | +import com.qgutech.qgyun.framework.database.mybatis.registermapper.QguBaseMapper; | |
4 | +import com.qgutech.qgyun.zxm.model.UserRel; | |
5 | +import org.apache.ibatis.annotations.Param; | |
6 | + | |
7 | +import java.util.List; | |
8 | + | |
9 | +/** | |
10 | + * @author auto | |
11 | + * @version 1.0 | |
12 | + * @since 2021-01-29 17:23:09 | |
13 | + */ | |
14 | +public interface UserRelMapper extends QguBaseMapper<UserRel> { | |
15 | + | |
16 | + /** | |
17 | + * 根据实体字段条件获取对应实体集合--分页公用(分页由PageHelper实现-解耦合) | |
18 | + * | |
19 | + * @param userRel 实体对象 | |
20 | + * @return 对象集合 | |
21 | + */ | |
22 | + List<UserRel> search(@Param("con") UserRel userRel); | |
23 | +} | ... | ... |
1 | +package com.qgutech.qgyun.zxm.model; | |
2 | +import com.qgutech.qgyun.framework.database.model.BaseCorpModel; | |
3 | +import com.qgutech.qgyun.fs.api.model.QgFile; | |
4 | +import java.util.Date; | |
5 | +import lombok.Getter; | |
6 | +import lombok.Setter; | |
7 | +import lombok.ToString; | |
8 | +import javax.persistence.Table; | |
9 | +import io.swagger.annotations.ApiModel; | |
10 | +import io.swagger.annotations.ApiModelProperty; | |
11 | +import javax.persistence.Transient; | |
12 | +import java.util.List; | |
13 | +/** | |
14 | + * 图书 model | |
15 | + * | |
16 | + * @author auto | |
17 | + * @version 1.0 | |
18 | + * @since 2021-01-29 17:23:11 | |
19 | + */ | |
20 | +@Getter | |
21 | +@Setter | |
22 | +@ToString | |
23 | +@ApiModel(value = "Book", description = "图书") | |
24 | +@Table(name = "t_auto_zxm_book") | |
25 | +public class Book extends BaseCorpModel { | |
26 | + public static final String ENTITY_FUN_CODE = "book"; | |
27 | + public static final String CODE = "code"; | |
28 | + public static final String NAME = "name"; | |
29 | + public static final String CATEGORY = "category"; | |
30 | + public static final String DESCRIPTION = "description"; | |
31 | + public static final String PICTURE = "picture"; | |
32 | + public static final String CREATED_ORG = "createdOrg"; | |
33 | + | |
34 | + /** | |
35 | + * 编号 | |
36 | + */ | |
37 | + @ApiModelProperty(value = "编号") | |
38 | + private String code; | |
39 | + | |
40 | + /** | |
41 | + * 书名 | |
42 | + */ | |
43 | + @ApiModelProperty(value = "书名") | |
44 | + private String name; | |
45 | + | |
46 | + /** | |
47 | + * 类别 | |
48 | + */ | |
49 | + @ApiModelProperty(value = "类别") | |
50 | + private String category; | |
51 | + | |
52 | + /** | |
53 | + * 简介 | |
54 | + */ | |
55 | + @ApiModelProperty(value = "简介") | |
56 | + private String description; | |
57 | + | |
58 | + /** | |
59 | + * 封面 | |
60 | + */ | |
61 | + @ApiModelProperty(value = "封面") | |
62 | + private String picture; | |
63 | + | |
64 | + /** | |
65 | + * 所属部门 | |
66 | + */ | |
67 | + @ApiModelProperty(value = "所属部门") | |
68 | + private String createdOrg; | |
69 | + | |
70 | + @Transient | |
71 | + private QgFile pictureEntity; | |
72 | + | |
73 | + @Transient | |
74 | + private List<String> createdOrgList; | |
75 | + | |
76 | + @Transient | |
77 | + private String createdByName; | |
78 | + | |
79 | + @Transient | |
80 | + private String updatedByName; | |
81 | +} | ... | ... |
1 | +package com.qgutech.qgyun.zxm.model; | |
2 | +import com.qgutech.qgyun.framework.database.model.BaseCorpModel; | |
3 | +import java.util.Date; | |
4 | +import lombok.Getter; | |
5 | +import lombok.Setter; | |
6 | +import lombok.ToString; | |
7 | +import javax.persistence.Table; | |
8 | +import io.swagger.annotations.ApiModel; | |
9 | +import io.swagger.annotations.ApiModelProperty; | |
10 | +import javax.persistence.Transient; | |
11 | +/** | |
12 | + * model | |
13 | + * | |
14 | + * @author auto | |
15 | + * @version 1.0 | |
16 | + * @since 2021-01-29 17:23:11 | |
17 | + */ | |
18 | +@Getter | |
19 | +@Setter | |
20 | +@ToString | |
21 | +@ApiModel(value = "BookRel", description = "") | |
22 | +@Table(name = "t_auto_zxm_book_rel") | |
23 | +public class BookRel extends BaseCorpModel { | |
24 | + public static final String ENTITY_FUN_CODE = "bookRel"; | |
25 | + public static final String REFER_ID = "referId"; | |
26 | + public static final String FUN_CODE = "funCode"; | |
27 | + public static final String FIELD_NAME = "fieldName"; | |
28 | + public static final String BOOK_ID = "bookId"; | |
29 | + | |
30 | + /** | |
31 | + * refer_id | |
32 | + */ | |
33 | + @ApiModelProperty(value = "refer_id") | |
34 | + private String referId; | |
35 | + | |
36 | + /** | |
37 | + * fun_code | |
38 | + */ | |
39 | + @ApiModelProperty(value = "fun_code") | |
40 | + private String funCode; | |
41 | + | |
42 | + /** | |
43 | + * field_name | |
44 | + */ | |
45 | + @ApiModelProperty(value = "field_name") | |
46 | + private String fieldName; | |
47 | + | |
48 | + /** | |
49 | + * book_id | |
50 | + */ | |
51 | + @ApiModelProperty(value = "book_id") | |
52 | + private String bookId; | |
53 | + | |
54 | + @Transient | |
55 | + private String createdByName; | |
56 | + | |
57 | + @Transient | |
58 | + private String updatedByName; | |
59 | +} | ... | ... |
1 | +package com.qgutech.qgyun.zxm.model; | |
2 | +import com.qgutech.qgyun.framework.database.model.BaseCorpModel; | |
3 | +import java.util.Date; | |
4 | +import lombok.Getter; | |
5 | +import lombok.Setter; | |
6 | +import lombok.ToString; | |
7 | +import javax.persistence.Table; | |
8 | +import io.swagger.annotations.ApiModel; | |
9 | +import io.swagger.annotations.ApiModelProperty; | |
10 | +import javax.persistence.Transient; | |
11 | +import java.util.List; | |
12 | +/** | |
13 | + * model | |
14 | + * | |
15 | + * @author auto | |
16 | + * @version 1.0 | |
17 | + * @since 2021-01-29 17:23:11 | |
18 | + */ | |
19 | +@Getter | |
20 | +@Setter | |
21 | +@ToString | |
22 | +@ApiModel(value = "FileRel", description = "") | |
23 | +@Table(name = "t_auto_zxm_file_rel") | |
24 | +public class FileRel extends BaseCorpModel { | |
25 | + public static final String ENTITY_FUN_CODE = "fileRel"; | |
26 | + public static final String REFER_ID = "referId"; | |
27 | + public static final String FUN_CODE = "funCode"; | |
28 | + public static final String FIELD_NAME = "fieldName"; | |
29 | + public static final String FILE_ID = "fileId"; | |
30 | + | |
31 | + /** | |
32 | + * 关联ID | |
33 | + */ | |
34 | + @ApiModelProperty(value = "关联ID") | |
35 | + private String referId; | |
36 | + | |
37 | + /** | |
38 | + * 关联应用编号 | |
39 | + */ | |
40 | + @ApiModelProperty(value = "关联应用编号") | |
41 | + private String funCode; | |
42 | + | |
43 | + /** | |
44 | + * 关联对应字段列名 | |
45 | + */ | |
46 | + @ApiModelProperty(value = "关联对应字段列名") | |
47 | + private String fieldName; | |
48 | + | |
49 | + /** | |
50 | + * 文件ID | |
51 | + */ | |
52 | + @ApiModelProperty(value = "文件ID") | |
53 | + private String fileId; | |
54 | + | |
55 | + @Transient | |
56 | + private String createdByName; | |
57 | + | |
58 | + @Transient | |
59 | + private String updatedByName; | |
60 | + | |
61 | + @Transient | |
62 | + private List<String> referIds; | |
63 | +} | ... | ... |
1 | +package com.qgutech.qgyun.zxm.model; | |
2 | +import com.qgutech.qgyun.framework.database.model.BaseCorpModel; | |
3 | +import java.util.Date; | |
4 | +import lombok.Getter; | |
5 | +import lombok.Setter; | |
6 | +import lombok.ToString; | |
7 | +import javax.persistence.Table; | |
8 | +import io.swagger.annotations.ApiModel; | |
9 | +import io.swagger.annotations.ApiModelProperty; | |
10 | +import javax.persistence.Transient; | |
11 | +import java.util.List; | |
12 | +/** | |
13 | + * model | |
14 | + * | |
15 | + * @author auto | |
16 | + * @version 1.0 | |
17 | + * @since 2021-01-29 17:23:11 | |
18 | + */ | |
19 | +@Getter | |
20 | +@Setter | |
21 | +@ToString | |
22 | +@ApiModel(value = "OrgRel", description = "") | |
23 | +@Table(name = "t_auto_zxm_org_rel") | |
24 | +public class OrgRel extends BaseCorpModel { | |
25 | + public static final String ENTITY_FUN_CODE = "orgRel"; | |
26 | + public static final String REFER_ID = "referId"; | |
27 | + public static final String FUN_CODE = "funCode"; | |
28 | + public static final String FIELD_NAME = "fieldName"; | |
29 | + public static final String ORG_ID = "orgId"; | |
30 | + | |
31 | + /** | |
32 | + * 关联ID | |
33 | + */ | |
34 | + @ApiModelProperty(value = "关联ID") | |
35 | + private String referId; | |
36 | + | |
37 | + /** | |
38 | + * 关联应用编号 | |
39 | + */ | |
40 | + @ApiModelProperty(value = "关联应用编号") | |
41 | + private String funCode; | |
42 | + | |
43 | + /** | |
44 | + * 关联对应字段列名 | |
45 | + */ | |
46 | + @ApiModelProperty(value = "关联对应字段列名") | |
47 | + private String fieldName; | |
48 | + | |
49 | + /** | |
50 | + * 部门ID | |
51 | + */ | |
52 | + @ApiModelProperty(value = "部门ID") | |
53 | + private String orgId; | |
54 | + | |
55 | + @Transient | |
56 | + private String createdByName; | |
57 | + | |
58 | + @Transient | |
59 | + private String updatedByName; | |
60 | + | |
61 | + @Transient | |
62 | + private List<String> referIds; | |
63 | +} | ... | ... |
1 | +package com.qgutech.qgyun.zxm.model; | |
2 | +import com.qgutech.qgyun.framework.database.model.BaseCorpModel; | |
3 | +import java.util.Date; | |
4 | +import lombok.Getter; | |
5 | +import lombok.Setter; | |
6 | +import lombok.ToString; | |
7 | +import javax.persistence.Table; | |
8 | +import io.swagger.annotations.ApiModel; | |
9 | +import io.swagger.annotations.ApiModelProperty; | |
10 | +import com.fasterxml.jackson.annotation.JsonFormat; | |
11 | +import org.springframework.format.annotation.DateTimeFormat; | |
12 | +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; | |
13 | +import com.fasterxml.jackson.databind.annotation.JsonSerialize; | |
14 | +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; | |
15 | +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; | |
16 | +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer; | |
17 | +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer; | |
18 | + | |
19 | +import java.time.LocalDate; | |
20 | +import java.time.LocalDateTime; | |
21 | +import javax.persistence.Transient; | |
22 | +import java.util.List; | |
23 | +/** | |
24 | + * 图书借阅 model | |
25 | + * | |
26 | + * @author auto | |
27 | + * @version 1.0 | |
28 | + * @since 2021-01-29 17:23:11 | |
29 | + */ | |
30 | +@Getter | |
31 | +@Setter | |
32 | +@ToString | |
33 | +@ApiModel(value = "Tshj", description = "图书借阅") | |
34 | +@Table(name = "t_auto_zxm_tshj") | |
35 | +public class Tshj extends BaseCorpModel { | |
36 | + public static final String ENTITY_FUN_CODE = "tshj"; | |
37 | + public static final String BOOK_ID = "bookId"; | |
38 | + public static final String RETURN_TIME = "returnTime"; | |
39 | + public static final String CREATED_ORG = "createdOrg"; | |
40 | + | |
41 | + /** | |
42 | + * 图书 | |
43 | + */ | |
44 | + @ApiModelProperty(value = "图书") | |
45 | + private String bookId; | |
46 | + | |
47 | + /** | |
48 | + * 归还时间 | |
49 | + */ | |
50 | + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") | |
51 | + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") | |
52 | + @ApiModelProperty(value = "归还时间") | |
53 | + @JsonSerialize(using = LocalDateTimeSerializer.class) | |
54 | + @JsonDeserialize(using = LocalDateTimeDeserializer.class, as = LocalDateTime.class) | |
55 | + private LocalDateTime returnTime; | |
56 | + | |
57 | + /** | |
58 | + * 所属部门 | |
59 | + */ | |
60 | + @ApiModelProperty(value = "所属部门") | |
61 | + private String createdOrg; | |
62 | + | |
63 | + @Transient | |
64 | + private Book bookIdEntity; | |
65 | + | |
66 | + @Transient | |
67 | + private List<String> bookIdList; | |
68 | + | |
69 | + @Transient | |
70 | + @DateTimeFormat(pattern = "yyyy-MM-dd") | |
71 | + @JsonFormat(pattern = "yyyy-MM-dd") | |
72 | + @JsonSerialize(using = LocalDateSerializer.class) | |
73 | + @JsonDeserialize(using = LocalDateDeserializer.class, as = LocalDate.class) | |
74 | + private LocalDate returnTimeLeft; | |
75 | + | |
76 | + @Transient | |
77 | + @DateTimeFormat(pattern = "yyyy-MM-dd") | |
78 | + @JsonFormat(pattern = "yyyy-MM-dd") | |
79 | + @JsonSerialize(using = LocalDateSerializer.class) | |
80 | + @JsonDeserialize(using = LocalDateDeserializer.class, as = LocalDate.class) | |
81 | + private LocalDate returnTimeRight; | |
82 | + | |
83 | + @Transient | |
84 | + private List<String> createdOrgList; | |
85 | + | |
86 | + @Transient | |
87 | + private String createdByName; | |
88 | + | |
89 | + @Transient | |
90 | + private String updatedByName; | |
91 | +} | ... | ... |
1 | +package com.qgutech.qgyun.zxm.model; | |
2 | +import com.qgutech.qgyun.framework.database.model.BaseCorpModel; | |
3 | +import java.util.Date; | |
4 | +import lombok.Getter; | |
5 | +import lombok.Setter; | |
6 | +import lombok.ToString; | |
7 | +import javax.persistence.Table; | |
8 | +import io.swagger.annotations.ApiModel; | |
9 | +import io.swagger.annotations.ApiModelProperty; | |
10 | +import javax.persistence.Transient; | |
11 | +import java.util.List; | |
12 | +/** | |
13 | + * model | |
14 | + * | |
15 | + * @author auto | |
16 | + * @version 1.0 | |
17 | + * @since 2021-01-29 17:23:11 | |
18 | + */ | |
19 | +@Getter | |
20 | +@Setter | |
21 | +@ToString | |
22 | +@ApiModel(value = "UserRel", description = "") | |
23 | +@Table(name = "t_auto_zxm_user_rel") | |
24 | +public class UserRel extends BaseCorpModel { | |
25 | + public static final String ENTITY_FUN_CODE = "userRel"; | |
26 | + public static final String REFER_ID = "referId"; | |
27 | + public static final String FUN_CODE = "funCode"; | |
28 | + public static final String FIELD_NAME = "fieldName"; | |
29 | + public static final String USER_ID = "userId"; | |
30 | + | |
31 | + /** | |
32 | + * 关联ID | |
33 | + */ | |
34 | + @ApiModelProperty(value = "关联ID") | |
35 | + private String referId; | |
36 | + | |
37 | + /** | |
38 | + * 关联应用编号 | |
39 | + */ | |
40 | + @ApiModelProperty(value = "关联应用编号") | |
41 | + private String funCode; | |
42 | + | |
43 | + /** | |
44 | + * 关联对应字段列名 | |
45 | + */ | |
46 | + @ApiModelProperty(value = "关联对应字段列名") | |
47 | + private String fieldName; | |
48 | + | |
49 | + /** | |
50 | + * 用户ID | |
51 | + */ | |
52 | + @ApiModelProperty(value = "用户ID") | |
53 | + private String userId; | |
54 | + | |
55 | + @Transient | |
56 | + private String createdByName; | |
57 | + | |
58 | + @Transient | |
59 | + private String updatedByName; | |
60 | + | |
61 | + @Transient | |
62 | + private List<String> referIds; | |
63 | +} | ... | ... |
1 | +package com.qgutech.qgyun.zxm.service; | |
2 | +import com.alibaba.excel.metadata.BaseRowModel; | |
3 | +import com.google.gson.reflect.TypeToken; | |
4 | +import com.qgutech.qgyun.zxm.model.*; | |
5 | +import com.qgutech.qgyun.dev.client.uc.UcFeignClient; | |
6 | +import com.qgutech.qgyun.framework.common.utils.SqlUtil; | |
7 | +import com.qgutech.qgyun.framework.database.model.BaseModel; | |
8 | +import com.qgutech.qgyun.framework.database.mybatis.model.Page; | |
9 | +import com.qgutech.qgyun.zxm.exportmodel.BookRelExportData; | |
10 | +import com.qgutech.qgyun.zxm.service.impl.base.AbstractExportBaseServiceImpl; | |
11 | +import com.qgutech.qgyun.zxm.mapper.BookRelMapper; | |
12 | +import org.apache.commons.collections4.MapUtils; | |
13 | +import org.apache.commons.lang.StringUtils; | |
14 | +import org.apache.commons.collections4.CollectionUtils; | |
15 | +import org.springframework.stereotype.Service; | |
16 | +import org.springframework.transaction.annotation.Isolation; | |
17 | +import org.springframework.transaction.annotation.Transactional; | |
18 | +import tk.mybatis.mapper.entity.Example; | |
19 | +import tk.mybatis.mapper.util.Assert; | |
20 | + | |
21 | +import javax.annotation.Resource; | |
22 | +import java.time.LocalDate; | |
23 | +import java.time.LocalDateTime; | |
24 | +import java.util.*; | |
25 | +import java.util.stream.Collectors; | |
26 | + | |
27 | +/** | |
28 | + * BookRelService 服务提供类 | |
29 | + * | |
30 | + * @author auto | |
31 | + * @version 1.0 | |
32 | + * @since 2021-01-29 17:23:10 | |
33 | + */ | |
34 | +@Service | |
35 | +public class BookRelService extends AbstractExportBaseServiceImpl<BookRel> { | |
36 | + @Resource | |
37 | + private BookRelMapper bookRelMapper; | |
38 | + @Resource | |
39 | + private UcFeignClient ucFeignClient; | |
40 | + | |
41 | + public List<BookRel> listAll() { | |
42 | + return bookRelMapper.selectAll(); | |
43 | + } | |
44 | + | |
45 | + @Transactional(readOnly = true, isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class) | |
46 | + public Page<BookRel> search(BookRel bookRel, Page<BookRel> page) { | |
47 | + Assert.notNull(bookRel, "bookRel can not be null!"); | |
48 | + Example example = genConditionExample(bookRel); | |
49 | + BaseModel.Sort sort = bookRel.getSort(); | |
50 | + if (sort != null) { | |
51 | + String orderBy = sort.getOrderBy(); | |
52 | + if (sort.isAsc()) { | |
53 | + example.orderBy(orderBy).asc(); | |
54 | + } else { | |
55 | + example.orderBy(orderBy).desc(); | |
56 | + } | |
57 | + } else { | |
58 | + example.orderBy(BookRel.UPDATED_AT).desc(); | |
59 | + } | |
60 | + | |
61 | + page = search(example, page); | |
62 | + List<BookRel> list = page.getList(); | |
63 | + if (CollectionUtils.isEmpty(list)) { | |
64 | + return page; | |
65 | + } | |
66 | + | |
67 | + page = new Page<>(list); | |
68 | + packBookRelData(list); | |
69 | + return page; | |
70 | + } | |
71 | + | |
72 | + private Example genConditionExample(BookRel model) { | |
73 | + Example example = new Example(entityClass); | |
74 | + Example.Criteria criteria = example.createCriteria(); | |
75 | + String id = model.getId(); | |
76 | + if (StringUtils.isNotBlank(id)) { | |
77 | + criteria.andEqualTo(BookRel.ID, id); | |
78 | + } | |
79 | + | |
80 | + String referId = model.getReferId(); | |
81 | + if (StringUtils.isNotBlank(referId)) { | |
82 | + criteria.andEqualTo(BookRel.REFER_ID, referId); | |
83 | + } | |
84 | + | |
85 | + String funCode = model.getFunCode(); | |
86 | + if (StringUtils.isNotBlank(funCode)) { | |
87 | + criteria.andEqualTo(BookRel.FUN_CODE, funCode); | |
88 | + } | |
89 | + | |
90 | + String fieldName = model.getFieldName(); | |
91 | + if (StringUtils.isNotBlank(fieldName)) { | |
92 | + criteria.andEqualTo(BookRel.FIELD_NAME, fieldName); | |
93 | + } | |
94 | + | |
95 | + String bookId = model.getBookId(); | |
96 | + if (StringUtils.isNotBlank(bookId)) { | |
97 | + criteria.andEqualTo(BookRel.BOOK_ID, bookId); | |
98 | + } | |
99 | + | |
100 | + String corpCode = model.getCorpCode(); | |
101 | + if (StringUtils.isNotBlank(corpCode)) { | |
102 | + criteria.andEqualTo(BookRel.CORP_CODE, corpCode); | |
103 | + } | |
104 | + | |
105 | + LocalDateTime createdAt = model.getCreatedAt(); | |
106 | + if (null != createdAt) { | |
107 | + criteria.andEqualTo(BookRel.CREATED_AT, createdAt); | |
108 | + } | |
109 | + | |
110 | + LocalDateTime updatedAt = model.getUpdatedAt(); | |
111 | + if (null != updatedAt) { | |
112 | + criteria.andEqualTo(BookRel.UPDATED_AT, updatedAt); | |
113 | + } | |
114 | + | |
115 | + String createdBy = model.getCreatedBy(); | |
116 | + if (StringUtils.isNotBlank(createdBy)) { | |
117 | + criteria.andEqualTo(BookRel.CREATED_BY, createdBy); | |
118 | + } | |
119 | + | |
120 | + String updatedBy = model.getUpdatedBy(); | |
121 | + if (StringUtils.isNotBlank(updatedBy)) { | |
122 | + criteria.andEqualTo(BookRel.UPDATED_BY, updatedBy); | |
123 | + } | |
124 | + | |
125 | + | |
126 | + return example; | |
127 | + } | |
128 | + | |
129 | + /** | |
130 | + * 分页数据处理 | |
131 | + */ | |
132 | + private void packBookRelData(List<BookRel> bookRelList) { | |
133 | + if (CollectionUtils.isEmpty(bookRelList)) { | |
134 | + return; | |
135 | + } | |
136 | + | |
137 | + dealReferInfo(bookRelList); | |
138 | + } | |
139 | + | |
140 | + private void dealReferInfo(BookRel bookRel) { | |
141 | + List<BookRel> bookRelList = Collections.singletonList(bookRel); | |
142 | + dealReferInfo(bookRelList); | |
143 | + } | |
144 | + | |
145 | + private void dealReferInfo(List<BookRel> bookRelList) { | |
146 | + dealUserRel(bookRelList); | |
147 | + } | |
148 | + | |
149 | + private void dealUserRel(List<BookRel> bookRelList) { | |
150 | + //处理人员 | |
151 | + List<String> userIds = bookRelList.stream().map(BookRel::getUpdatedBy).collect(Collectors.toList()); | |
152 | + userIds.addAll(bookRelList.stream().map(BookRel::getCreatedBy).collect(Collectors.toList())); | |
153 | + Map<String, String> userMap = ucFeignClient.getUserIdAndNameMap(userIds); | |
154 | + for (BookRel bookRel : bookRelList) { | |
155 | + //处理人员 | |
156 | + if (MapUtils.isNotEmpty(userMap)) { | |
157 | + bookRel.setCreatedByName(userMap.get(bookRel.getCreatedBy())); | |
158 | + bookRel.setUpdatedByName(userMap.get(bookRel.getUpdatedBy())); | |
159 | + } | |
160 | + } | |
161 | + } | |
162 | + | |
163 | + | |
164 | + @Override | |
165 | + public BookRel get(String id) { | |
166 | + BookRel bookRel = super.get(id); | |
167 | + dealReferInfo(bookRel); | |
168 | + return bookRel; | |
169 | + } | |
170 | + | |
171 | + @Transactional(readOnly = true, isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class) | |
172 | + public List<String> listIdsByExample(BookRel bookRel) { | |
173 | + Assert.notNull(bookRel, "bookRel can not be null"); | |
174 | + Example example = genConditionExample(bookRel); | |
175 | + example.selectProperties(BookRel.ID); | |
176 | + List<BookRel> bookRelList = bookRelMapper.selectByExample(example); | |
177 | + return CollectionUtils.isEmpty(bookRelList) ? new ArrayList<>(0) : | |
178 | + bookRelList.stream().map(BookRel::getId).collect(Collectors.toList()); | |
179 | + } | |
180 | + | |
181 | + /** | |
182 | + * 新增 | |
183 | + */ | |
184 | + public String add(BookRel bookRel) { | |
185 | + return super.insert(bookRel); | |
186 | + } | |
187 | + | |
188 | + /** | |
189 | + * 修改 | |
190 | + */ | |
191 | + public void edit(BookRel bookRel) { | |
192 | + super.update(bookRel); | |
193 | + } | |
194 | + | |
195 | + /** | |
196 | + * 批量删除 | |
197 | + */ | |
198 | + public void deleteByIds(List<String> ids) { | |
199 | + super.batchDelete(ids); | |
200 | + } | |
201 | + | |
202 | + @Override | |
203 | + protected List<? extends BaseRowModel> getExcelDataList(List<BookRel> sourceList) { | |
204 | + return gson.fromJson(gson.toJson(sourceList), new TypeToken<ArrayList<BookRelExportData>>() { | |
205 | + }.getType()); | |
206 | + } | |
207 | + | |
208 | + @Override | |
209 | + protected Page<BookRel> searchForExport(BookRel sourceCondition, Page<BookRel> page) { | |
210 | + return search(sourceCondition,page); | |
211 | + } | |
212 | +} | ... | ... |
1 | +package com.qgutech.qgyun.zxm.service; | |
2 | +import com.alibaba.excel.metadata.BaseRowModel; | |
3 | +import com.google.gson.reflect.TypeToken; | |
4 | +import com.qgutech.qgyun.fs.api.model.QgFile; | |
5 | +import com.qgutech.qgyun.fs.client.service.FileService; | |
6 | +import com.qgutech.qgyun.zxm.model.*; | |
7 | +import com.qgutech.qgyun.dev.client.uc.UcFeignClient; | |
8 | +import com.qgutech.qgyun.framework.common.utils.SqlUtil; | |
9 | +import com.qgutech.qgyun.framework.database.model.BaseModel; | |
10 | +import com.qgutech.qgyun.framework.database.mybatis.model.Page; | |
11 | +import com.qgutech.qgyun.zxm.exportmodel.BookExportData; | |
12 | +import com.qgutech.qgyun.zxm.service.impl.base.AbstractExportBaseServiceImpl; | |
13 | +import com.qgutech.qgyun.zxm.mapper.BookMapper; | |
14 | +import org.apache.commons.collections4.MapUtils; | |
15 | +import org.apache.commons.lang.StringUtils; | |
16 | +import org.apache.commons.collections4.CollectionUtils; | |
17 | +import org.springframework.stereotype.Service; | |
18 | +import org.springframework.transaction.annotation.Isolation; | |
19 | +import org.springframework.transaction.annotation.Transactional; | |
20 | +import tk.mybatis.mapper.entity.Example; | |
21 | +import tk.mybatis.mapper.util.Assert; | |
22 | + | |
23 | +import javax.annotation.Resource; | |
24 | +import java.time.LocalDate; | |
25 | +import java.time.LocalDateTime; | |
26 | +import java.util.*; | |
27 | +import java.util.stream.Collectors; | |
28 | + | |
29 | +/** | |
30 | + * BookService 服务提供类 | |
31 | + * | |
32 | + * @author auto | |
33 | + * @version 1.0 | |
34 | + * @since 2021-01-29 17:23:10 | |
35 | + */ | |
36 | +@Service | |
37 | +public class BookService extends AbstractExportBaseServiceImpl<Book> { | |
38 | + @Resource | |
39 | + private BookMapper bookMapper; | |
40 | + @Resource | |
41 | + private FileService fileService; | |
42 | + @Resource | |
43 | + private UcFeignClient ucFeignClient; | |
44 | + | |
45 | + public List<Book> listAll() { | |
46 | + return bookMapper.selectAll(); | |
47 | + } | |
48 | + | |
49 | + @Transactional(readOnly = true, isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class) | |
50 | + public Page<Book> search(Book book, Page<Book> page) { | |
51 | + Assert.notNull(book, "book can not be null!"); | |
52 | + Example example = genConditionExample(book); | |
53 | + BaseModel.Sort sort = book.getSort(); | |
54 | + if (sort != null) { | |
55 | + String orderBy = sort.getOrderBy(); | |
56 | + if (sort.isAsc()) { | |
57 | + example.orderBy(orderBy).asc(); | |
58 | + } else { | |
59 | + example.orderBy(orderBy).desc(); | |
60 | + } | |
61 | + } else { | |
62 | + example.orderBy(Book.UPDATED_AT).desc(); | |
63 | + } | |
64 | + | |
65 | + page = search(example, page); | |
66 | + List<Book> list = page.getList(); | |
67 | + if (CollectionUtils.isEmpty(list)) { | |
68 | + return page; | |
69 | + } | |
70 | + | |
71 | + page = new Page<>(list); | |
72 | + packBookData(list); | |
73 | + return page; | |
74 | + } | |
75 | + | |
76 | + private Example genConditionExample(Book model) { | |
77 | + Example example = new Example(entityClass); | |
78 | + Example.Criteria criteria = example.createCriteria(); | |
79 | + String code = model.getCode(); | |
80 | + if (StringUtils.isNotBlank(code)) { | |
81 | + criteria.andLike(Book.CODE, SqlUtil.asLike(code)); | |
82 | + } | |
83 | + | |
84 | + String name = model.getName(); | |
85 | + if (StringUtils.isNotBlank(name)) { | |
86 | + criteria.andLike(Book.NAME, SqlUtil.asLike(name)); | |
87 | + } | |
88 | + | |
89 | + String category = model.getCategory(); | |
90 | + if (StringUtils.isNotBlank(category)) { | |
91 | + criteria.andEqualTo(Book.CATEGORY, category); | |
92 | + } | |
93 | + | |
94 | + String description = model.getDescription(); | |
95 | + if (StringUtils.isNotBlank(description)) { | |
96 | + criteria.andLike(Book.DESCRIPTION, SqlUtil.asLike(description)); | |
97 | + } | |
98 | + | |
99 | + String picture = model.getPicture(); | |
100 | + if (StringUtils.isNotBlank(picture)) { | |
101 | + criteria.andEqualTo(Book.PICTURE, picture); | |
102 | + } | |
103 | + | |
104 | + List<String> createdOrgList = model.getCreatedOrgList(); | |
105 | + if (null != createdOrgList) { | |
106 | + criteria.andIn(Book.CREATED_ORG, createdOrgList); | |
107 | + } | |
108 | + | |
109 | + LocalDateTime createdAt = model.getCreatedAt(); | |
110 | + if (null != createdAt) { | |
111 | + criteria.andEqualTo(Book.CREATED_AT, createdAt); | |
112 | + } | |
113 | + | |
114 | + String createdBy = model.getCreatedBy(); | |
115 | + if (StringUtils.isNotBlank(createdBy)) { | |
116 | + criteria.andEqualTo(Book.CREATED_BY, createdBy); | |
117 | + } | |
118 | + | |
119 | + | |
120 | + return example; | |
121 | + } | |
122 | + | |
123 | + /** | |
124 | + * 分页数据处理 | |
125 | + */ | |
126 | + private void packBookData(List<Book> bookList) { | |
127 | + if (CollectionUtils.isEmpty(bookList)) { | |
128 | + return; | |
129 | + } | |
130 | + | |
131 | + dealReferInfo(bookList); | |
132 | + } | |
133 | + | |
134 | + private void dealReferInfo(Book book) { | |
135 | + List<Book> bookList = Collections.singletonList(book); | |
136 | + dealReferInfo(bookList); | |
137 | + } | |
138 | + | |
139 | + private void dealReferInfo(List<Book> bookList) { | |
140 | + dealUserRel(bookList); | |
141 | + dealFileRel(bookList); | |
142 | + } | |
143 | + | |
144 | + private void dealUserRel(List<Book> bookList) { | |
145 | + //处理人员 | |
146 | + List<String> userIds = bookList.stream().map(Book::getUpdatedBy).collect(Collectors.toList()); | |
147 | + userIds.addAll(bookList.stream().map(Book::getCreatedBy).collect(Collectors.toList())); | |
148 | + Map<String, String> userMap = ucFeignClient.getUserIdAndNameMap(userIds); | |
149 | + for (Book book : bookList) { | |
150 | + //处理人员 | |
151 | + if (MapUtils.isNotEmpty(userMap)) { | |
152 | + book.setCreatedByName(userMap.get(book.getCreatedBy())); | |
153 | + book.setUpdatedByName(userMap.get(book.getUpdatedBy())); | |
154 | + } | |
155 | + } | |
156 | + } | |
157 | + | |
158 | + private void dealFileRel(List<Book> bookList) { | |
159 | + List<String> fileIds = new ArrayList<>();; | |
160 | + List<String> pictureIds = bookList.stream().map(Book::getPicture).filter(StringUtils::isNotEmpty).collect(Collectors.toList()); | |
161 | + fileIds.addAll(pictureIds); | |
162 | + Map<String, QgFile> fileMap = fileService.getNginxUrl(fileIds); | |
163 | + for (Book book : bookList) { | |
164 | + if (MapUtils.isNotEmpty(fileMap)) { | |
165 | + book.setPictureEntity(fileMap.get(book.getPicture())); | |
166 | + } | |
167 | + } | |
168 | + } | |
169 | + | |
170 | + | |
171 | + @Override | |
172 | + public Book get(String id) { | |
173 | + Book book = super.get(id); | |
174 | + dealReferInfo(book); | |
175 | + return book; | |
176 | + } | |
177 | + | |
178 | + @Transactional(readOnly = true, isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class) | |
179 | + public List<String> listIdsByExample(Book book) { | |
180 | + Assert.notNull(book, "book can not be null"); | |
181 | + Example example = genConditionExample(book); | |
182 | + example.selectProperties(Book.ID); | |
183 | + List<Book> bookList = bookMapper.selectByExample(example); | |
184 | + return CollectionUtils.isEmpty(bookList) ? new ArrayList<>(0) : | |
185 | + bookList.stream().map(Book::getId).collect(Collectors.toList()); | |
186 | + } | |
187 | + | |
188 | + /** | |
189 | + * 新增 | |
190 | + */ | |
191 | + public String add(Book book) { | |
192 | + return super.insert(book); | |
193 | + } | |
194 | + | |
195 | + /** | |
196 | + * 修改 | |
197 | + */ | |
198 | + public void edit(Book book) { | |
199 | + super.update(book); | |
200 | + } | |
201 | + | |
202 | + /** | |
203 | + * 批量删除 | |
204 | + */ | |
205 | + public void deleteByIds(List<String> ids) { | |
206 | + super.batchDelete(ids); | |
207 | + } | |
208 | + | |
209 | + @Override | |
210 | + protected List<? extends BaseRowModel> getExcelDataList(List<Book> sourceList) { | |
211 | + return gson.fromJson(gson.toJson(sourceList), new TypeToken<ArrayList<BookExportData>>() { | |
212 | + }.getType()); | |
213 | + } | |
214 | + | |
215 | + @Override | |
216 | + protected Page<Book> searchForExport(Book sourceCondition, Page<Book> page) { | |
217 | + return search(sourceCondition,page); | |
218 | + } | |
219 | +} | ... | ... |
1 | +package com.qgutech.qgyun.zxm.service; | |
2 | +import com.alibaba.excel.metadata.BaseRowModel; | |
3 | +import com.google.gson.reflect.TypeToken; | |
4 | +import com.qgutech.qgyun.zxm.model.*; | |
5 | +import com.qgutech.qgyun.dev.client.uc.UcFeignClient; | |
6 | +import com.qgutech.qgyun.framework.common.utils.SqlUtil; | |
7 | +import com.qgutech.qgyun.framework.database.model.BaseModel; | |
8 | +import com.qgutech.qgyun.framework.database.mybatis.model.Page; | |
9 | +import com.qgutech.qgyun.zxm.exportmodel.FileRelExportData; | |
10 | +import com.qgutech.qgyun.zxm.service.impl.base.AbstractExportBaseServiceImpl; | |
11 | +import com.qgutech.qgyun.zxm.mapper.FileRelMapper; | |
12 | +import org.apache.commons.collections4.MapUtils; | |
13 | +import org.apache.commons.lang.StringUtils; | |
14 | +import org.apache.commons.collections4.CollectionUtils; | |
15 | +import org.springframework.stereotype.Service; | |
16 | +import org.springframework.transaction.annotation.Isolation; | |
17 | +import org.springframework.transaction.annotation.Transactional; | |
18 | +import tk.mybatis.mapper.entity.Example; | |
19 | +import tk.mybatis.mapper.util.Assert; | |
20 | + | |
21 | +import javax.annotation.Resource; | |
22 | +import java.time.LocalDate; | |
23 | +import java.time.LocalDateTime; | |
24 | +import java.util.*; | |
25 | +import java.util.stream.Collectors; | |
26 | + | |
27 | +/** | |
28 | + * FileRelService 服务提供类 | |
29 | + * | |
30 | + * @author auto | |
31 | + * @version 1.0 | |
32 | + * @since 2021-01-29 17:23:10 | |
33 | + */ | |
34 | +@Service | |
35 | +public class FileRelService extends AbstractExportBaseServiceImpl<FileRel> { | |
36 | + @Resource | |
37 | + private FileRelMapper fileRelMapper; | |
38 | + @Resource | |
39 | + private UcFeignClient ucFeignClient; | |
40 | + | |
41 | + public List<FileRel> listAll() { | |
42 | + return fileRelMapper.selectAll(); | |
43 | + } | |
44 | + | |
45 | + @Transactional(readOnly = true, isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class) | |
46 | + public Page<FileRel> search(FileRel fileRel, Page<FileRel> page) { | |
47 | + Assert.notNull(fileRel, "fileRel can not be null!"); | |
48 | + Example example = genConditionExample(fileRel); | |
49 | + BaseModel.Sort sort = fileRel.getSort(); | |
50 | + if (sort != null) { | |
51 | + String orderBy = sort.getOrderBy(); | |
52 | + if (sort.isAsc()) { | |
53 | + example.orderBy(orderBy).asc(); | |
54 | + } else { | |
55 | + example.orderBy(orderBy).desc(); | |
56 | + } | |
57 | + } else { | |
58 | + example.orderBy(FileRel.UPDATED_AT).desc(); | |
59 | + } | |
60 | + | |
61 | + page = search(example, page); | |
62 | + List<FileRel> list = page.getList(); | |
63 | + if (CollectionUtils.isEmpty(list)) { | |
64 | + return page; | |
65 | + } | |
66 | + | |
67 | + page = new Page<>(list); | |
68 | + packFileRelData(list); | |
69 | + return page; | |
70 | + } | |
71 | + | |
72 | + private Example genConditionExample(FileRel model) { | |
73 | + Example example = new Example(entityClass); | |
74 | + Example.Criteria criteria = example.createCriteria(); | |
75 | + List<String> referIds = model.getReferIds(); | |
76 | + if (CollectionUtils.isNotEmpty(referIds)) { | |
77 | + criteria.andIn(FileRel.REFER_ID, referIds); | |
78 | + } | |
79 | + | |
80 | + String id = model.getId(); | |
81 | + if (StringUtils.isNotBlank(id)) { | |
82 | + criteria.andEqualTo(FileRel.ID, id); | |
83 | + } | |
84 | + | |
85 | + String referId = model.getReferId(); | |
86 | + if (StringUtils.isNotBlank(referId)) { | |
87 | + criteria.andEqualTo(FileRel.REFER_ID, referId); | |
88 | + } | |
89 | + | |
90 | + String funCode = model.getFunCode(); | |
91 | + if (StringUtils.isNotBlank(funCode)) { | |
92 | + criteria.andEqualTo(FileRel.FUN_CODE, funCode); | |
93 | + } | |
94 | + | |
95 | + String fieldName = model.getFieldName(); | |
96 | + if (StringUtils.isNotBlank(fieldName)) { | |
97 | + criteria.andEqualTo(FileRel.FIELD_NAME, fieldName); | |
98 | + } | |
99 | + | |
100 | + String corpCode = model.getCorpCode(); | |
101 | + if (StringUtils.isNotBlank(corpCode)) { | |
102 | + criteria.andEqualTo(FileRel.CORP_CODE, corpCode); | |
103 | + } | |
104 | + | |
105 | + LocalDateTime createdAt = model.getCreatedAt(); | |
106 | + if (null != createdAt) { | |
107 | + criteria.andEqualTo(FileRel.CREATED_AT, createdAt); | |
108 | + } | |
109 | + | |
110 | + LocalDateTime updatedAt = model.getUpdatedAt(); | |
111 | + if (null != updatedAt) { | |
112 | + criteria.andEqualTo(FileRel.UPDATED_AT, updatedAt); | |
113 | + } | |
114 | + | |
115 | + String createdBy = model.getCreatedBy(); | |
116 | + if (StringUtils.isNotBlank(createdBy)) { | |
117 | + criteria.andEqualTo(FileRel.CREATED_BY, createdBy); | |
118 | + } | |
119 | + | |
120 | + String updatedBy = model.getUpdatedBy(); | |
121 | + if (StringUtils.isNotBlank(updatedBy)) { | |
122 | + criteria.andEqualTo(FileRel.UPDATED_BY, updatedBy); | |
123 | + } | |
124 | + | |
125 | + String fileId = model.getFileId(); | |
126 | + if (StringUtils.isNotBlank(fileId)) { | |
127 | + criteria.andEqualTo(FileRel.FILE_ID, fileId); | |
128 | + } | |
129 | + | |
130 | + | |
131 | + return example; | |
132 | + } | |
133 | + | |
134 | + /** | |
135 | + * 分页数据处理 | |
136 | + */ | |
137 | + private void packFileRelData(List<FileRel> fileRelList) { | |
138 | + if (CollectionUtils.isEmpty(fileRelList)) { | |
139 | + return; | |
140 | + } | |
141 | + | |
142 | + dealReferInfo(fileRelList); | |
143 | + } | |
144 | + | |
145 | + private void dealReferInfo(FileRel fileRel) { | |
146 | + List<FileRel> fileRelList = Collections.singletonList(fileRel); | |
147 | + dealReferInfo(fileRelList); | |
148 | + } | |
149 | + | |
150 | + private void dealReferInfo(List<FileRel> fileRelList) { | |
151 | + dealUserRel(fileRelList); | |
152 | + } | |
153 | + | |
154 | + private void dealUserRel(List<FileRel> fileRelList) { | |
155 | + //处理人员 | |
156 | + List<String> userIds = fileRelList.stream().map(FileRel::getUpdatedBy).collect(Collectors.toList()); | |
157 | + userIds.addAll(fileRelList.stream().map(FileRel::getCreatedBy).collect(Collectors.toList())); | |
158 | + Map<String, String> userMap = ucFeignClient.getUserIdAndNameMap(userIds); | |
159 | + for (FileRel fileRel : fileRelList) { | |
160 | + //处理人员 | |
161 | + if (MapUtils.isNotEmpty(userMap)) { | |
162 | + fileRel.setCreatedByName(userMap.get(fileRel.getCreatedBy())); | |
163 | + fileRel.setUpdatedByName(userMap.get(fileRel.getUpdatedBy())); | |
164 | + } | |
165 | + } | |
166 | + } | |
167 | + | |
168 | + | |
169 | + @Override | |
170 | + public FileRel get(String id) { | |
171 | + FileRel fileRel = super.get(id); | |
172 | + dealReferInfo(fileRel); | |
173 | + return fileRel; | |
174 | + } | |
175 | + | |
176 | + @Transactional(readOnly = true, isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class) | |
177 | + public List<String> listIdsByExample(FileRel fileRel) { | |
178 | + Assert.notNull(fileRel, "fileRel can not be null"); | |
179 | + Example example = genConditionExample(fileRel); | |
180 | + example.selectProperties(FileRel.ID); | |
181 | + List<FileRel> fileRelList = fileRelMapper.selectByExample(example); | |
182 | + return CollectionUtils.isEmpty(fileRelList) ? new ArrayList<>(0) : | |
183 | + fileRelList.stream().map(FileRel::getId).collect(Collectors.toList()); | |
184 | + } | |
185 | + | |
186 | + @Transactional(readOnly = true, isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class) | |
187 | + public Map<String, List<FileRel>> listReferIdMap(FileRel fileRel) { | |
188 | + Assert.notNull(fileRel, "fileRel can not be null"); | |
189 | + Example example = genConditionExample(fileRel); | |
190 | + example.selectProperties(FileRel.REFER_ID, FileRel.FIELD_NAME, FileRel.FILE_ID); | |
191 | + List<FileRel> fileRelList = fileRelMapper.selectByExample(example); | |
192 | + return CollectionUtils.isEmpty(fileRelList) ? Collections.emptyMap(): | |
193 | + fileRelList.stream().collect(Collectors.groupingBy(FileRel::getReferId)); | |
194 | + } | |
195 | + | |
196 | + /** | |
197 | + * 新增 | |
198 | + */ | |
199 | + public String add(FileRel fileRel) { | |
200 | + return super.insert(fileRel); | |
201 | + } | |
202 | + | |
203 | + /** | |
204 | + * 修改 | |
205 | + */ | |
206 | + public void edit(FileRel fileRel) { | |
207 | + super.update(fileRel); | |
208 | + } | |
209 | + | |
210 | + /** | |
211 | + * 批量删除 | |
212 | + */ | |
213 | + public void deleteByIds(List<String> ids) { | |
214 | + super.batchDelete(ids); | |
215 | + } | |
216 | + | |
217 | + @Override | |
218 | + protected List<? extends BaseRowModel> getExcelDataList(List<FileRel> sourceList) { | |
219 | + return gson.fromJson(gson.toJson(sourceList), new TypeToken<ArrayList<FileRelExportData>>() { | |
220 | + }.getType()); | |
221 | + } | |
222 | + | |
223 | + @Override | |
224 | + protected Page<FileRel> searchForExport(FileRel sourceCondition, Page<FileRel> page) { | |
225 | + return search(sourceCondition,page); | |
226 | + } | |
227 | +} | ... | ... |
1 | +package com.qgutech.qgyun.zxm.service; | |
2 | +import com.alibaba.excel.metadata.BaseRowModel; | |
3 | +import com.google.gson.reflect.TypeToken; | |
4 | +import com.qgutech.qgyun.zxm.model.*; | |
5 | +import com.qgutech.qgyun.dev.client.uc.UcFeignClient; | |
6 | +import com.qgutech.qgyun.framework.common.utils.SqlUtil; | |
7 | +import com.qgutech.qgyun.framework.database.model.BaseModel; | |
8 | +import com.qgutech.qgyun.framework.database.mybatis.model.Page; | |
9 | +import com.qgutech.qgyun.zxm.exportmodel.OrgRelExportData; | |
10 | +import com.qgutech.qgyun.zxm.service.impl.base.AbstractExportBaseServiceImpl; | |
11 | +import com.qgutech.qgyun.zxm.mapper.OrgRelMapper; | |
12 | +import org.apache.commons.collections4.MapUtils; | |
13 | +import org.apache.commons.lang.StringUtils; | |
14 | +import org.apache.commons.collections4.CollectionUtils; | |
15 | +import org.springframework.stereotype.Service; | |
16 | +import org.springframework.transaction.annotation.Isolation; | |
17 | +import org.springframework.transaction.annotation.Transactional; | |
18 | +import tk.mybatis.mapper.entity.Example; | |
19 | +import tk.mybatis.mapper.util.Assert; | |
20 | + | |
21 | +import javax.annotation.Resource; | |
22 | +import java.time.LocalDate; | |
23 | +import java.time.LocalDateTime; | |
24 | +import java.util.*; | |
25 | +import java.util.stream.Collectors; | |
26 | + | |
27 | +/** | |
28 | + * OrgRelService 服务提供类 | |
29 | + * | |
30 | + * @author auto | |
31 | + * @version 1.0 | |
32 | + * @since 2021-01-29 17:23:10 | |
33 | + */ | |
34 | +@Service | |
35 | +public class OrgRelService extends AbstractExportBaseServiceImpl<OrgRel> { | |
36 | + @Resource | |
37 | + private OrgRelMapper orgRelMapper; | |
38 | + @Resource | |
39 | + private UcFeignClient ucFeignClient; | |
40 | + | |
41 | + public List<OrgRel> listAll() { | |
42 | + return orgRelMapper.selectAll(); | |
43 | + } | |
44 | + | |
45 | + @Transactional(readOnly = true, isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class) | |
46 | + public Page<OrgRel> search(OrgRel orgRel, Page<OrgRel> page) { | |
47 | + Assert.notNull(orgRel, "orgRel can not be null!"); | |
48 | + Example example = genConditionExample(orgRel); | |
49 | + BaseModel.Sort sort = orgRel.getSort(); | |
50 | + if (sort != null) { | |
51 | + String orderBy = sort.getOrderBy(); | |
52 | + if (sort.isAsc()) { | |
53 | + example.orderBy(orderBy).asc(); | |
54 | + } else { | |
55 | + example.orderBy(orderBy).desc(); | |
56 | + } | |
57 | + } else { | |
58 | + example.orderBy(OrgRel.UPDATED_AT).desc(); | |
59 | + } | |
60 | + | |
61 | + page = search(example, page); | |
62 | + List<OrgRel> list = page.getList(); | |
63 | + if (CollectionUtils.isEmpty(list)) { | |
64 | + return page; | |
65 | + } | |
66 | + | |
67 | + page = new Page<>(list); | |
68 | + packOrgRelData(list); | |
69 | + return page; | |
70 | + } | |
71 | + | |
72 | + private Example genConditionExample(OrgRel model) { | |
73 | + Example example = new Example(entityClass); | |
74 | + Example.Criteria criteria = example.createCriteria(); | |
75 | + List<String> referIds = model.getReferIds(); | |
76 | + if (CollectionUtils.isNotEmpty(referIds)) { | |
77 | + criteria.andIn(OrgRel.REFER_ID, referIds); | |
78 | + } | |
79 | + | |
80 | + String id = model.getId(); | |
81 | + if (StringUtils.isNotBlank(id)) { | |
82 | + criteria.andEqualTo(OrgRel.ID, id); | |
83 | + } | |
84 | + | |
85 | + String referId = model.getReferId(); | |
86 | + if (StringUtils.isNotBlank(referId)) { | |
87 | + criteria.andEqualTo(OrgRel.REFER_ID, referId); | |
88 | + } | |
89 | + | |
90 | + String funCode = model.getFunCode(); | |
91 | + if (StringUtils.isNotBlank(funCode)) { | |
92 | + criteria.andEqualTo(OrgRel.FUN_CODE, funCode); | |
93 | + } | |
94 | + | |
95 | + String fieldName = model.getFieldName(); | |
96 | + if (StringUtils.isNotBlank(fieldName)) { | |
97 | + criteria.andEqualTo(OrgRel.FIELD_NAME, fieldName); | |
98 | + } | |
99 | + | |
100 | + String corpCode = model.getCorpCode(); | |
101 | + if (StringUtils.isNotBlank(corpCode)) { | |
102 | + criteria.andEqualTo(OrgRel.CORP_CODE, corpCode); | |
103 | + } | |
104 | + | |
105 | + LocalDateTime createdAt = model.getCreatedAt(); | |
106 | + if (null != createdAt) { | |
107 | + criteria.andEqualTo(OrgRel.CREATED_AT, createdAt); | |
108 | + } | |
109 | + | |
110 | + LocalDateTime updatedAt = model.getUpdatedAt(); | |
111 | + if (null != updatedAt) { | |
112 | + criteria.andEqualTo(OrgRel.UPDATED_AT, updatedAt); | |
113 | + } | |
114 | + | |
115 | + String createdBy = model.getCreatedBy(); | |
116 | + if (StringUtils.isNotBlank(createdBy)) { | |
117 | + criteria.andEqualTo(OrgRel.CREATED_BY, createdBy); | |
118 | + } | |
119 | + | |
120 | + String updatedBy = model.getUpdatedBy(); | |
121 | + if (StringUtils.isNotBlank(updatedBy)) { | |
122 | + criteria.andEqualTo(OrgRel.UPDATED_BY, updatedBy); | |
123 | + } | |
124 | + | |
125 | + String orgId = model.getOrgId(); | |
126 | + if (StringUtils.isNotBlank(orgId)) { | |
127 | + criteria.andEqualTo(OrgRel.ORG_ID, orgId); | |
128 | + } | |
129 | + | |
130 | + | |
131 | + return example; | |
132 | + } | |
133 | + | |
134 | + /** | |
135 | + * 分页数据处理 | |
136 | + */ | |
137 | + private void packOrgRelData(List<OrgRel> orgRelList) { | |
138 | + if (CollectionUtils.isEmpty(orgRelList)) { | |
139 | + return; | |
140 | + } | |
141 | + | |
142 | + dealReferInfo(orgRelList); | |
143 | + } | |
144 | + | |
145 | + private void dealReferInfo(OrgRel orgRel) { | |
146 | + List<OrgRel> orgRelList = Collections.singletonList(orgRel); | |
147 | + dealReferInfo(orgRelList); | |
148 | + } | |
149 | + | |
150 | + private void dealReferInfo(List<OrgRel> orgRelList) { | |
151 | + dealUserRel(orgRelList); | |
152 | + } | |
153 | + | |
154 | + private void dealUserRel(List<OrgRel> orgRelList) { | |
155 | + //处理人员 | |
156 | + List<String> userIds = orgRelList.stream().map(OrgRel::getUpdatedBy).collect(Collectors.toList()); | |
157 | + userIds.addAll(orgRelList.stream().map(OrgRel::getCreatedBy).collect(Collectors.toList())); | |
158 | + Map<String, String> userMap = ucFeignClient.getUserIdAndNameMap(userIds); | |
159 | + for (OrgRel orgRel : orgRelList) { | |
160 | + //处理人员 | |
161 | + if (MapUtils.isNotEmpty(userMap)) { | |
162 | + orgRel.setCreatedByName(userMap.get(orgRel.getCreatedBy())); | |
163 | + orgRel.setUpdatedByName(userMap.get(orgRel.getUpdatedBy())); | |
164 | + } | |
165 | + } | |
166 | + } | |
167 | + | |
168 | + | |
169 | + @Override | |
170 | + public OrgRel get(String id) { | |
171 | + OrgRel orgRel = super.get(id); | |
172 | + dealReferInfo(orgRel); | |
173 | + return orgRel; | |
174 | + } | |
175 | + | |
176 | + @Transactional(readOnly = true, isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class) | |
177 | + public List<String> listIdsByExample(OrgRel orgRel) { | |
178 | + Assert.notNull(orgRel, "orgRel can not be null"); | |
179 | + Example example = genConditionExample(orgRel); | |
180 | + example.selectProperties(OrgRel.ID); | |
181 | + List<OrgRel> orgRelList = orgRelMapper.selectByExample(example); | |
182 | + return CollectionUtils.isEmpty(orgRelList) ? new ArrayList<>(0) : | |
183 | + orgRelList.stream().map(OrgRel::getId).collect(Collectors.toList()); | |
184 | + } | |
185 | + | |
186 | + @Transactional(readOnly = true, isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class) | |
187 | + public Map<String, List<OrgRel>> listReferIdMap(OrgRel orgRel) { | |
188 | + Assert.notNull(orgRel, "orgRel can not be null"); | |
189 | + Example example = genConditionExample(orgRel); | |
190 | + example.selectProperties(OrgRel.REFER_ID, OrgRel.FIELD_NAME, OrgRel.ORG_ID); | |
191 | + List<OrgRel> orgRelList = orgRelMapper.selectByExample(example); | |
192 | + return CollectionUtils.isEmpty(orgRelList) ? Collections.emptyMap(): | |
193 | + orgRelList.stream().collect(Collectors.groupingBy(OrgRel::getReferId)); | |
194 | + } | |
195 | + | |
196 | + /** | |
197 | + * 新增 | |
198 | + */ | |
199 | + public String add(OrgRel orgRel) { | |
200 | + return super.insert(orgRel); | |
201 | + } | |
202 | + | |
203 | + /** | |
204 | + * 修改 | |
205 | + */ | |
206 | + public void edit(OrgRel orgRel) { | |
207 | + super.update(orgRel); | |
208 | + } | |
209 | + | |
210 | + /** | |
211 | + * 批量删除 | |
212 | + */ | |
213 | + public void deleteByIds(List<String> ids) { | |
214 | + super.batchDelete(ids); | |
215 | + } | |
216 | + | |
217 | + @Override | |
218 | + protected List<? extends BaseRowModel> getExcelDataList(List<OrgRel> sourceList) { | |
219 | + return gson.fromJson(gson.toJson(sourceList), new TypeToken<ArrayList<OrgRelExportData>>() { | |
220 | + }.getType()); | |
221 | + } | |
222 | + | |
223 | + @Override | |
224 | + protected Page<OrgRel> searchForExport(OrgRel sourceCondition, Page<OrgRel> page) { | |
225 | + return search(sourceCondition,page); | |
226 | + } | |
227 | +} | ... | ... |
1 | +package com.qgutech.qgyun.zxm.service; | |
2 | +import com.alibaba.excel.metadata.BaseRowModel; | |
3 | +import com.google.gson.reflect.TypeToken; | |
4 | +import com.qgutech.qgyun.zxm.model.*; | |
5 | +import com.qgutech.qgyun.dev.client.uc.UcFeignClient; | |
6 | +import com.qgutech.qgyun.zxm.model.Book; | |
7 | +import com.qgutech.qgyun.framework.common.utils.ReflectUtil; | |
8 | +import com.qgutech.qgyun.framework.common.utils.SqlUtil; | |
9 | +import com.qgutech.qgyun.framework.database.model.BaseModel; | |
10 | +import com.qgutech.qgyun.framework.database.mybatis.model.Page; | |
11 | +import com.qgutech.qgyun.zxm.exportmodel.TshjExportData; | |
12 | +import com.qgutech.qgyun.zxm.service.impl.base.AbstractExportBaseServiceImpl; | |
13 | +import com.qgutech.qgyun.zxm.mapper.TshjMapper; | |
14 | +import org.apache.commons.collections4.MapUtils; | |
15 | +import org.apache.commons.lang.StringUtils; | |
16 | +import org.apache.commons.collections4.CollectionUtils; | |
17 | +import org.springframework.stereotype.Service; | |
18 | +import org.springframework.transaction.annotation.Isolation; | |
19 | +import org.springframework.transaction.annotation.Transactional; | |
20 | +import tk.mybatis.mapper.entity.Example; | |
21 | +import tk.mybatis.mapper.util.Assert; | |
22 | + | |
23 | +import javax.annotation.Resource; | |
24 | +import java.time.LocalDate; | |
25 | +import java.time.LocalDateTime; | |
26 | +import java.util.*; | |
27 | +import java.util.stream.Collectors; | |
28 | + | |
29 | +/** | |
30 | + * TshjService 服务提供类 | |
31 | + * | |
32 | + * @author auto | |
33 | + * @version 1.0 | |
34 | + * @since 2021-01-29 17:23:10 | |
35 | + */ | |
36 | +@Service | |
37 | +public class TshjService extends AbstractExportBaseServiceImpl<Tshj> { | |
38 | + @Resource | |
39 | + private TshjMapper tshjMapper; | |
40 | + @Resource | |
41 | + private BookService bookService; | |
42 | + @Resource | |
43 | + private UcFeignClient ucFeignClient; | |
44 | + | |
45 | + public List<Tshj> listAll() { | |
46 | + return tshjMapper.selectAll(); | |
47 | + } | |
48 | + | |
49 | + @Transactional(readOnly = true, isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class) | |
50 | + public Page<Tshj> search(Tshj tshj, Page<Tshj> page) { | |
51 | + Assert.notNull(tshj, "tshj can not be null!"); | |
52 | + Example example = genConditionExample(tshj); | |
53 | + BaseModel.Sort sort = tshj.getSort(); | |
54 | + if (sort != null) { | |
55 | + String orderBy = sort.getOrderBy(); | |
56 | + if (sort.isAsc()) { | |
57 | + example.orderBy(orderBy).asc(); | |
58 | + } else { | |
59 | + example.orderBy(orderBy).desc(); | |
60 | + } | |
61 | + } else { | |
62 | + example.orderBy(Tshj.UPDATED_AT).desc(); | |
63 | + } | |
64 | + | |
65 | + page = search(example, page); | |
66 | + List<Tshj> list = page.getList(); | |
67 | + if (CollectionUtils.isEmpty(list)) { | |
68 | + return page; | |
69 | + } | |
70 | + | |
71 | + page = new Page<>(list); | |
72 | + packTshjData(list); | |
73 | + return page; | |
74 | + } | |
75 | + | |
76 | + private Example genConditionExample(Tshj model) { | |
77 | + Example example = new Example(entityClass); | |
78 | + Example.Criteria criteria = example.createCriteria(); | |
79 | + Book book = model.getBookIdEntity(); | |
80 | + if (book != null && !ReflectUtil.checkAllFileIsNull(book)) { | |
81 | + List<String> ids = bookService.listIdsByExample(book); | |
82 | + if (CollectionUtils.isNotEmpty(ids)) { | |
83 | + criteria.andIn(Tshj.BOOK_ID, ids); | |
84 | + } | |
85 | + } | |
86 | + | |
87 | + List<String> bookIdList = model.getBookIdList(); | |
88 | + if (null != bookIdList) { | |
89 | + criteria.andIn(Tshj.BOOK_ID, bookIdList); | |
90 | + } | |
91 | + | |
92 | + LocalDate returnTimeLeft = model.getReturnTimeLeft(); | |
93 | + LocalDate returnTimeRight = model.getReturnTimeRight(); | |
94 | + if (null != returnTimeLeft || null != returnTimeRight) { | |
95 | + if (null != returnTimeLeft){ | |
96 | + criteria.andGreaterThanOrEqualTo(Tshj.RETURN_TIME, returnTimeLeft); | |
97 | + } | |
98 | + | |
99 | + if (null != returnTimeRight){ | |
100 | + criteria.andLessThan(Tshj.RETURN_TIME, returnTimeRight.plusDays(1)); | |
101 | + } | |
102 | + } | |
103 | + | |
104 | + List<String> createdOrgList = model.getCreatedOrgList(); | |
105 | + if (null != createdOrgList) { | |
106 | + criteria.andIn(Tshj.CREATED_ORG, createdOrgList); | |
107 | + } | |
108 | + | |
109 | + LocalDateTime createdAt = model.getCreatedAt(); | |
110 | + if (null != createdAt) { | |
111 | + criteria.andEqualTo(Tshj.CREATED_AT, createdAt); | |
112 | + } | |
113 | + | |
114 | + String createdBy = model.getCreatedBy(); | |
115 | + if (StringUtils.isNotBlank(createdBy)) { | |
116 | + criteria.andEqualTo(Tshj.CREATED_BY, createdBy); | |
117 | + } | |
118 | + | |
119 | + | |
120 | + return example; | |
121 | + } | |
122 | + | |
123 | + /** | |
124 | + * 分页数据处理 | |
125 | + */ | |
126 | + private void packTshjData(List<Tshj> tshjList) { | |
127 | + if (CollectionUtils.isEmpty(tshjList)) { | |
128 | + return; | |
129 | + } | |
130 | + | |
131 | + for (Tshj tshj : tshjList) { | |
132 | + Book bookIdEntity = getBook(tshj.getBookId()); | |
133 | + tshj.setBookIdEntity(bookIdEntity); | |
134 | + } | |
135 | + | |
136 | + dealReferInfo(tshjList); | |
137 | + } | |
138 | + | |
139 | + private void dealReferInfo(Tshj tshj) { | |
140 | + List<Tshj> tshjList = Collections.singletonList(tshj); | |
141 | + dealReferInfo(tshjList); | |
142 | + } | |
143 | + | |
144 | + private void dealReferInfo(List<Tshj> tshjList) { | |
145 | + dealUserRel(tshjList); | |
146 | + } | |
147 | + | |
148 | + private void dealUserRel(List<Tshj> tshjList) { | |
149 | + //处理人员 | |
150 | + List<String> userIds = tshjList.stream().map(Tshj::getUpdatedBy).collect(Collectors.toList()); | |
151 | + userIds.addAll(tshjList.stream().map(Tshj::getCreatedBy).collect(Collectors.toList())); | |
152 | + Map<String, String> userMap = ucFeignClient.getUserIdAndNameMap(userIds); | |
153 | + for (Tshj tshj : tshjList) { | |
154 | + //处理人员 | |
155 | + if (MapUtils.isNotEmpty(userMap)) { | |
156 | + tshj.setCreatedByName(userMap.get(tshj.getCreatedBy())); | |
157 | + tshj.setUpdatedByName(userMap.get(tshj.getUpdatedBy())); | |
158 | + } | |
159 | + } | |
160 | + } | |
161 | + | |
162 | + | |
163 | + @Override | |
164 | + public Tshj get(String id) { | |
165 | + Tshj tshj = super.get(id); | |
166 | + if (tshj != null) { | |
167 | + Book bookIdEntity = getBook(tshj.getBookId()); | |
168 | + tshj.setBookIdEntity(bookIdEntity); | |
169 | + } | |
170 | + | |
171 | + dealReferInfo(tshj); | |
172 | + return tshj; | |
173 | + } | |
174 | + | |
175 | + private Book getBook(String id){ | |
176 | + return bookService.getByProperty( | |
177 | + Book.ID, id, | |
178 | + Book.ID, | |
179 | + Book.CODE | |
180 | + ); | |
181 | + } | |
182 | + | |
183 | + @Transactional(readOnly = true, isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class) | |
184 | + public List<String> listIdsByExample(Tshj tshj) { | |
185 | + Assert.notNull(tshj, "tshj can not be null"); | |
186 | + Example example = genConditionExample(tshj); | |
187 | + example.selectProperties(Tshj.ID); | |
188 | + List<Tshj> tshjList = tshjMapper.selectByExample(example); | |
189 | + return CollectionUtils.isEmpty(tshjList) ? new ArrayList<>(0) : | |
190 | + tshjList.stream().map(Tshj::getId).collect(Collectors.toList()); | |
191 | + } | |
192 | + | |
193 | + /** | |
194 | + * 新增 | |
195 | + */ | |
196 | + public String add(Tshj tshj) { | |
197 | + return super.insert(tshj); | |
198 | + } | |
199 | + | |
200 | + /** | |
201 | + * 修改 | |
202 | + */ | |
203 | + public void edit(Tshj tshj) { | |
204 | + super.update(tshj); | |
205 | + } | |
206 | + | |
207 | + /** | |
208 | + * 批量删除 | |
209 | + */ | |
210 | + public void deleteByIds(List<String> ids) { | |
211 | + super.batchDelete(ids); | |
212 | + } | |
213 | + | |
214 | + @Override | |
215 | + protected List<? extends BaseRowModel> getExcelDataList(List<Tshj> sourceList) { | |
216 | + return gson.fromJson(gson.toJson(sourceList), new TypeToken<ArrayList<TshjExportData>>() { | |
217 | + }.getType()); | |
218 | + } | |
219 | + | |
220 | + @Override | |
221 | + protected Page<Tshj> searchForExport(Tshj sourceCondition, Page<Tshj> page) { | |
222 | + return search(sourceCondition,page); | |
223 | + } | |
224 | +} | ... | ... |
1 | +package com.qgutech.qgyun.zxm.service; | |
2 | +import com.alibaba.excel.metadata.BaseRowModel; | |
3 | +import com.google.gson.reflect.TypeToken; | |
4 | +import com.qgutech.qgyun.zxm.model.*; | |
5 | +import com.qgutech.qgyun.dev.client.uc.UcFeignClient; | |
6 | +import com.qgutech.qgyun.framework.common.utils.SqlUtil; | |
7 | +import com.qgutech.qgyun.framework.database.model.BaseModel; | |
8 | +import com.qgutech.qgyun.framework.database.mybatis.model.Page; | |
9 | +import com.qgutech.qgyun.zxm.exportmodel.UserRelExportData; | |
10 | +import com.qgutech.qgyun.zxm.service.impl.base.AbstractExportBaseServiceImpl; | |
11 | +import com.qgutech.qgyun.zxm.mapper.UserRelMapper; | |
12 | +import org.apache.commons.collections4.MapUtils; | |
13 | +import org.apache.commons.lang.StringUtils; | |
14 | +import org.apache.commons.collections4.CollectionUtils; | |
15 | +import org.springframework.stereotype.Service; | |
16 | +import org.springframework.transaction.annotation.Isolation; | |
17 | +import org.springframework.transaction.annotation.Transactional; | |
18 | +import tk.mybatis.mapper.entity.Example; | |
19 | +import tk.mybatis.mapper.util.Assert; | |
20 | + | |
21 | +import javax.annotation.Resource; | |
22 | +import java.time.LocalDate; | |
23 | +import java.time.LocalDateTime; | |
24 | +import java.util.*; | |
25 | +import java.util.stream.Collectors; | |
26 | + | |
27 | +/** | |
28 | + * UserRelService 服务提供类 | |
29 | + * | |
30 | + * @author auto | |
31 | + * @version 1.0 | |
32 | + * @since 2021-01-29 17:23:10 | |
33 | + */ | |
34 | +@Service | |
35 | +public class UserRelService extends AbstractExportBaseServiceImpl<UserRel> { | |
36 | + @Resource | |
37 | + private UserRelMapper userRelMapper; | |
38 | + @Resource | |
39 | + private UcFeignClient ucFeignClient; | |
40 | + | |
41 | + public List<UserRel> listAll() { | |
42 | + return userRelMapper.selectAll(); | |
43 | + } | |
44 | + | |
45 | + @Transactional(readOnly = true, isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class) | |
46 | + public Page<UserRel> search(UserRel userRel, Page<UserRel> page) { | |
47 | + Assert.notNull(userRel, "userRel can not be null!"); | |
48 | + Example example = genConditionExample(userRel); | |
49 | + BaseModel.Sort sort = userRel.getSort(); | |
50 | + if (sort != null) { | |
51 | + String orderBy = sort.getOrderBy(); | |
52 | + if (sort.isAsc()) { | |
53 | + example.orderBy(orderBy).asc(); | |
54 | + } else { | |
55 | + example.orderBy(orderBy).desc(); | |
56 | + } | |
57 | + } else { | |
58 | + example.orderBy(UserRel.UPDATED_AT).desc(); | |
59 | + } | |
60 | + | |
61 | + page = search(example, page); | |
62 | + List<UserRel> list = page.getList(); | |
63 | + if (CollectionUtils.isEmpty(list)) { | |
64 | + return page; | |
65 | + } | |
66 | + | |
67 | + page = new Page<>(list); | |
68 | + packUserRelData(list); | |
69 | + return page; | |
70 | + } | |
71 | + | |
72 | + private Example genConditionExample(UserRel model) { | |
73 | + Example example = new Example(entityClass); | |
74 | + Example.Criteria criteria = example.createCriteria(); | |
75 | + List<String> referIds = model.getReferIds(); | |
76 | + if (CollectionUtils.isNotEmpty(referIds)) { | |
77 | + criteria.andIn(UserRel.REFER_ID, referIds); | |
78 | + } | |
79 | + | |
80 | + String id = model.getId(); | |
81 | + if (StringUtils.isNotBlank(id)) { | |
82 | + criteria.andEqualTo(UserRel.ID, id); | |
83 | + } | |
84 | + | |
85 | + String referId = model.getReferId(); | |
86 | + if (StringUtils.isNotBlank(referId)) { | |
87 | + criteria.andEqualTo(UserRel.REFER_ID, referId); | |
88 | + } | |
89 | + | |
90 | + String funCode = model.getFunCode(); | |
91 | + if (StringUtils.isNotBlank(funCode)) { | |
92 | + criteria.andEqualTo(UserRel.FUN_CODE, funCode); | |
93 | + } | |
94 | + | |
95 | + String fieldName = model.getFieldName(); | |
96 | + if (StringUtils.isNotBlank(fieldName)) { | |
97 | + criteria.andEqualTo(UserRel.FIELD_NAME, fieldName); | |
98 | + } | |
99 | + | |
100 | + String corpCode = model.getCorpCode(); | |
101 | + if (StringUtils.isNotBlank(corpCode)) { | |
102 | + criteria.andEqualTo(UserRel.CORP_CODE, corpCode); | |
103 | + } | |
104 | + | |
105 | + LocalDateTime createdAt = model.getCreatedAt(); | |
106 | + if (null != createdAt) { | |
107 | + criteria.andEqualTo(UserRel.CREATED_AT, createdAt); | |
108 | + } | |
109 | + | |
110 | + LocalDateTime updatedAt = model.getUpdatedAt(); | |
111 | + if (null != updatedAt) { | |
112 | + criteria.andEqualTo(UserRel.UPDATED_AT, updatedAt); | |
113 | + } | |
114 | + | |
115 | + String createdBy = model.getCreatedBy(); | |
116 | + if (StringUtils.isNotBlank(createdBy)) { | |
117 | + criteria.andEqualTo(UserRel.CREATED_BY, createdBy); | |
118 | + } | |
119 | + | |
120 | + String updatedBy = model.getUpdatedBy(); | |
121 | + if (StringUtils.isNotBlank(updatedBy)) { | |
122 | + criteria.andEqualTo(UserRel.UPDATED_BY, updatedBy); | |
123 | + } | |
124 | + | |
125 | + String userId = model.getUserId(); | |
126 | + if (StringUtils.isNotBlank(userId)) { | |
127 | + criteria.andEqualTo(UserRel.USER_ID, userId); | |
128 | + } | |
129 | + | |
130 | + | |
131 | + return example; | |
132 | + } | |
133 | + | |
134 | + /** | |
135 | + * 分页数据处理 | |
136 | + */ | |
137 | + private void packUserRelData(List<UserRel> userRelList) { | |
138 | + if (CollectionUtils.isEmpty(userRelList)) { | |
139 | + return; | |
140 | + } | |
141 | + | |
142 | + dealReferInfo(userRelList); | |
143 | + } | |
144 | + | |
145 | + private void dealReferInfo(UserRel userRel) { | |
146 | + List<UserRel> userRelList = Collections.singletonList(userRel); | |
147 | + dealReferInfo(userRelList); | |
148 | + } | |
149 | + | |
150 | + private void dealReferInfo(List<UserRel> userRelList) { | |
151 | + dealUserRel(userRelList); | |
152 | + } | |
153 | + | |
154 | + private void dealUserRel(List<UserRel> userRelList) { | |
155 | + //处理人员 | |
156 | + List<String> userIds = userRelList.stream().map(UserRel::getUpdatedBy).collect(Collectors.toList()); | |
157 | + userIds.addAll(userRelList.stream().map(UserRel::getCreatedBy).collect(Collectors.toList())); | |
158 | + Map<String, String> userMap = ucFeignClient.getUserIdAndNameMap(userIds); | |
159 | + for (UserRel userRel : userRelList) { | |
160 | + //处理人员 | |
161 | + if (MapUtils.isNotEmpty(userMap)) { | |
162 | + userRel.setCreatedByName(userMap.get(userRel.getCreatedBy())); | |
163 | + userRel.setUpdatedByName(userMap.get(userRel.getUpdatedBy())); | |
164 | + } | |
165 | + } | |
166 | + } | |
167 | + | |
168 | + | |
169 | + @Override | |
170 | + public UserRel get(String id) { | |
171 | + UserRel userRel = super.get(id); | |
172 | + dealReferInfo(userRel); | |
173 | + return userRel; | |
174 | + } | |
175 | + | |
176 | + @Transactional(readOnly = true, isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class) | |
177 | + public List<String> listIdsByExample(UserRel userRel) { | |
178 | + Assert.notNull(userRel, "userRel can not be null"); | |
179 | + Example example = genConditionExample(userRel); | |
180 | + example.selectProperties(UserRel.ID); | |
181 | + List<UserRel> userRelList = userRelMapper.selectByExample(example); | |
182 | + return CollectionUtils.isEmpty(userRelList) ? new ArrayList<>(0) : | |
183 | + userRelList.stream().map(UserRel::getId).collect(Collectors.toList()); | |
184 | + } | |
185 | + | |
186 | + @Transactional(readOnly = true, isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class) | |
187 | + public Map<String, List<UserRel>> listReferIdMap(UserRel userRel) { | |
188 | + Assert.notNull(userRel, "userRel can not be null"); | |
189 | + Example example = genConditionExample(userRel); | |
190 | + example.selectProperties(UserRel.REFER_ID, UserRel.FIELD_NAME, UserRel.USER_ID); | |
191 | + List<UserRel> userRelList = userRelMapper.selectByExample(example); | |
192 | + return CollectionUtils.isEmpty(userRelList) ? Collections.emptyMap(): | |
193 | + userRelList.stream().collect(Collectors.groupingBy(UserRel::getReferId)); | |
194 | + } | |
195 | + | |
196 | + /** | |
197 | + * 新增 | |
198 | + */ | |
199 | + public String add(UserRel userRel) { | |
200 | + return super.insert(userRel); | |
201 | + } | |
202 | + | |
203 | + /** | |
204 | + * 修改 | |
205 | + */ | |
206 | + public void edit(UserRel userRel) { | |
207 | + super.update(userRel); | |
208 | + } | |
209 | + | |
210 | + /** | |
211 | + * 批量删除 | |
212 | + */ | |
213 | + public void deleteByIds(List<String> ids) { | |
214 | + super.batchDelete(ids); | |
215 | + } | |
216 | + | |
217 | + @Override | |
218 | + protected List<? extends BaseRowModel> getExcelDataList(List<UserRel> sourceList) { | |
219 | + return gson.fromJson(gson.toJson(sourceList), new TypeToken<ArrayList<UserRelExportData>>() { | |
220 | + }.getType()); | |
221 | + } | |
222 | + | |
223 | + @Override | |
224 | + protected Page<UserRel> searchForExport(UserRel sourceCondition, Page<UserRel> page) { | |
225 | + return search(sourceCondition,page); | |
226 | + } | |
227 | +} | ... | ... |
qgyun-zxm/src/main/java/com/qgutech/qgyun/zxm/service/impl/base/AbstractExportBaseServiceImpl.java
0 → 100644
1 | +package com.qgutech.qgyun.zxm.service.impl.base; | |
2 | + | |
3 | +import com.alibaba.excel.metadata.BaseRowModel; | |
4 | +import com.google.gson.Gson; | |
5 | +import com.google.gson.GsonBuilder; | |
6 | +import com.qgutech.qgyun.framework.common.utils.excel.ExcelWriterFactory; | |
7 | +import com.qgutech.qgyun.framework.common.utils.excel.ExportExcelUtil; | |
8 | +import com.qgutech.qgyun.framework.database.model.BaseModel; | |
9 | +import com.qgutech.qgyun.framework.database.mybatis.model.Page; | |
10 | +import com.qgutech.qgyun.framework.database.mybatis.service.BaseServiceImpl; | |
11 | +import lombok.extern.slf4j.Slf4j; | |
12 | +import org.springframework.beans.factory.annotation.Value; | |
13 | + | |
14 | +import java.util.ArrayList; | |
15 | +import java.util.List; | |
16 | + | |
17 | +/** | |
18 | +* 导出基本服务抽象实现类 | |
19 | +* | |
20 | +* @author auto | |
21 | +* @version 1.0 | |
22 | +* @since 2021-01-29 17:23:09 | |
23 | +*/ | |
24 | +@Slf4j | |
25 | +public abstract class AbstractExportBaseServiceImpl<T extends BaseModel> extends BaseServiceImpl<T> { | |
26 | + | |
27 | + @Value("${export.system.path:/tmp/download/}") | |
28 | + private String exportPath; | |
29 | + | |
30 | + protected Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create(); | |
31 | + | |
32 | + /** | |
33 | + * 获取下载路径 | |
34 | + * | |
35 | + * @return | |
36 | + */ | |
37 | + protected String getDownLoadPath() { | |
38 | + return exportPath; | |
39 | + } | |
40 | + | |
41 | + /** | |
42 | + * 获取分页的大小 | |
43 | + * | |
44 | + * @return | |
45 | + */ | |
46 | + protected int getPageSize() { | |
47 | + return 5000; | |
48 | + } | |
49 | + | |
50 | + protected Page<T> searchForExport(T sourceCondition, Page<T> page) { | |
51 | + return search(sourceCondition, page); | |
52 | + } | |
53 | + | |
54 | + public String exportData(T sourceCondition, Class<? extends BaseRowModel> targetClass) { | |
55 | + String downloadPath = getDownLoadPath(); | |
56 | + ExcelWriterFactory excelWriterFactory = ExportExcelUtil.start(downloadPath); | |
57 | + String filePath = excelWriterFactory.getPath(); | |
58 | + Page<T> page = new Page<>(); | |
59 | + page.setPageSize(getPageSize()); | |
60 | + Page<T> resultPage = searchForExport(sourceCondition, page); | |
61 | + if (0 == resultPage.getTotal()) { | |
62 | + excelWriterFactory.newSheet(targetClass).write(new ArrayList<>(0)); | |
63 | + excelWriterFactory.finish(); | |
64 | + return filePath; | |
65 | + } | |
66 | + | |
67 | + List<? extends BaseRowModel> dataList = getExcelDataList(resultPage.getList()); | |
68 | + excelWriterFactory.newSheet(targetClass).write(dataList); | |
69 | + if (1 == resultPage.getPages()) { | |
70 | + excelWriterFactory.finish(); | |
71 | + return filePath; | |
72 | + } | |
73 | + | |
74 | + for (int i = 1; i < page.getPages(); i++) { | |
75 | + page.setPageNum(i + 1); | |
76 | + resultPage = searchForExport(sourceCondition, page); | |
77 | + dataList = getExcelDataList(resultPage.getList()); | |
78 | + excelWriterFactory.newSheet(targetClass).write(dataList); | |
79 | + } | |
80 | + | |
81 | + excelWriterFactory.finish(); | |
82 | + return filePath; | |
83 | + } | |
84 | + | |
85 | + /** | |
86 | + * ali 导出数据元数据转换成导出数据必须要实现的方法 | |
87 | + * @param sourceList 元数据 | |
88 | + * @return 导出数据 | |
89 | + */ | |
90 | + protected abstract List<? extends BaseRowModel> getExcelDataList(List<T> sourceList); | |
91 | +} | ... | ... |
1 | +package com.qgutech.qgyun.zxm.utils; | |
2 | + | |
3 | +import com.itextpdf.text.Document; | |
4 | +import com.itextpdf.text.Image; | |
5 | +import com.itextpdf.text.Rectangle; | |
6 | +import com.itextpdf.text.Utilities; | |
7 | +import com.itextpdf.text.pdf.PdfWriter; | |
8 | +import org.apache.commons.io.FileUtils; | |
9 | +import org.apache.commons.io.IOUtils; | |
10 | + | |
11 | +import javax.imageio.ImageIO; | |
12 | +import javax.servlet.http.HttpServletResponse; | |
13 | +import java.awt.image.BufferedImage; | |
14 | +import java.io.File; | |
15 | +import java.io.IOException; | |
16 | +import java.io.InputStream; | |
17 | +import java.io.OutputStream; | |
18 | +import java.net.URL; | |
19 | +import java.net.URLEncoder; | |
20 | +import java.util.Collections; | |
21 | +import java.util.List; | |
22 | + | |
23 | +/** | |
24 | + * 下载文件工具类 | |
25 | + * | |
26 | + * @author auto | |
27 | + * @version 1.0 | |
28 | + * @since 2021-01-29 17:23:09 | |
29 | + */ | |
30 | +public class DownloadUtils { | |
31 | + | |
32 | + /** | |
33 | + * 下载excel | |
34 | + * | |
35 | + * @param filePath 文件路径 | |
36 | + * @param downloadFileName 下载文件名称 | |
37 | + */ | |
38 | + public static void download(String filePath, String downloadFileName, HttpServletResponse response) { | |
39 | + try (OutputStream output = response.getOutputStream(); | |
40 | + InputStream in = Utilities.toURL(filePath).openStream()) { | |
41 | + response.setContentType("application/force-download"); | |
42 | + response.setHeader("Content-Transfer-Encoding", "binary"); | |
43 | + response.setHeader("Content-Disposition", "attachment; filename=\"" + | |
44 | + URLEncoder.encode(downloadFileName, "UTF-8") + "\""); | |
45 | + IOUtils.copy(in, output); | |
46 | + response.flushBuffer(); | |
47 | + } catch (IOException e) { | |
48 | + e.printStackTrace(); | |
49 | + }finally { | |
50 | + try { | |
51 | + FileUtils.forceDelete(new File(filePath)); | |
52 | + } catch (IOException e) { | |
53 | + // | |
54 | + } | |
55 | + } | |
56 | + } | |
57 | + | |
58 | + /** | |
59 | + * 下载图片为pdf | |
60 | + * | |
61 | + * @param imagePath 图片路径 | |
62 | + * @param downloadFileName 下载文件名称 | |
63 | + */ | |
64 | + public static void downloadPdf(String imagePath, String downloadFileName, HttpServletResponse response) { | |
65 | + downloadPdf(Collections.singletonList(imagePath), downloadFileName, response); | |
66 | + } | |
67 | + | |
68 | + /** | |
69 | + * 批量下载图片为pdf | |
70 | + * | |
71 | + * @param imagePaths 图片路径列表 | |
72 | + * @param downloadFileName 下载文件名称 | |
73 | + */ | |
74 | + public static void downloadPdf(List<String> imagePaths, String downloadFileName, HttpServletResponse response) { | |
75 | + float margin = 0; | |
76 | + Document doc = null; | |
77 | + OutputStream os = null; | |
78 | + try { | |
79 | + response.setContentType("application/pdf"); | |
80 | + response.setContentType("application/x-download"); | |
81 | + response.addHeader("Content-Disposition", "attachment;fileName=" + | |
82 | + URLEncoder.encode(downloadFileName, "UTF-8") + ".pdf"); | |
83 | + doc = new Document(null, margin, margin, margin, margin); | |
84 | + URL url = Utilities.toURL(imagePaths.get(0)); | |
85 | + BufferedImage img = ImageIO.read(url); | |
86 | + doc.setPageSize(new Rectangle(img.getWidth(), img.getHeight())); | |
87 | + os = response.getOutputStream(); | |
88 | + PdfWriter.getInstance(doc, os); | |
89 | + doc.open(); | |
90 | + for (String imagePath : imagePaths) { | |
91 | + Image image = Image.getInstance(imagePath); | |
92 | + doc.add(image); | |
93 | + os.flush(); | |
94 | + } | |
95 | + | |
96 | + os.flush(); | |
97 | + } catch (Exception e) { | |
98 | + e.printStackTrace(); | |
99 | + } finally { | |
100 | + if (doc != null) { | |
101 | + doc.close(); | |
102 | + } | |
103 | + | |
104 | + IOUtils.closeQuietly(os); | |
105 | + } | |
106 | + } | |
107 | + | |
108 | +} | ... | ... |
qgyun-zxm/src/main/resources/application.yml
0 → 100644
1 | +server: | |
2 | + #配置服务器启动端口 | |
3 | + port: 8085 | |
4 | + | |
5 | +spring: | |
6 | + application: | |
7 | + name: qgyun-zxm | |
8 | + datasource: | |
9 | + url: jdbc:mysql://192.168.0.35:3306/qgyun-online?characterEncoding=utf-8&useSSL=false | |
10 | + username: root | |
11 | + password: qgutech.com | |
12 | + type: com.alibaba.druid.pool.DruidDataSource | |
13 | + driver-class-name: com.mysql.jdbc.Driver | |
14 | + druid: | |
15 | + initialSize: 5 | |
16 | + minIdle: 5 | |
17 | + maxActive: 20 | |
18 | + maxWait: 60000 | |
19 | + timeBetweenEvictionRunsMillis: 60000 | |
20 | + minEvictableIdleTimeMillis: 30000 | |
21 | + validationQuery: SELECT 1 | |
22 | + testWhileIdle: true | |
23 | + testOnBorrow: false | |
24 | + testOnReturn: false | |
25 | + poolPreparedStatements: true | |
26 | + maxPoolPreparedStatementPerConnectionSize: 20 | |
27 | + filters: stat,wall | |
28 | + connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 | |
29 | + useGlobalDataSourceStat: true | |
30 | + redis: | |
31 | + port: 6379 | |
32 | + host: qgyun.server.redis | |
33 | +swagger: | |
34 | + enable: true | |
35 | + | |
36 | +#mybatis配置别名 | |
37 | +#mapper资源地址必须为mapper文件夹下,eg:mapper/user | |
38 | +mybatis: | |
39 | + type-aliases-package: com.qgutech.zxm.qgyun.**.model | |
40 | + | |
41 | +# 打印sql | |
42 | +logging: | |
43 | + level: | |
44 | + com.qgutech.zxm.qgyun: DEBUG | |
45 | + | |
46 | +#mybatis初始配置,是读取枚举类型字段 | |
47 | +mapper: | |
48 | + enumAsSimpleType: true | |
49 | + | |
50 | +context: | |
51 | + keys: | |
52 | + - userId | |
53 | + - username | |
54 | + - corpCode | |
55 | + - superAdmin | |
56 | + - sessionId | |
57 | +qgyun: | |
58 | + dynamicDataSource: | |
59 | + enabled: false | |
60 | + | |
61 | +export: | |
62 | + system: | |
63 | + path: /tmp/download/ | |
\ No newline at end of file | ... | ... |
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |
3 | +<mapper namespace="com.qgutech.qgyun.zxm.mapper.BookMapper"> | |
4 | + <resultMap id="bookMap" type="com.qgutech.qgyun.zxm.model.Book"> | |
5 | + <result column="id" property="id"/> | |
6 | + <result column="code" property="code"/> | |
7 | + <result column="name" property="name"/> | |
8 | + <result column="category" property="category"/> | |
9 | + <result column="description" property="description"/> | |
10 | + <result column="picture" property="picture"/> | |
11 | + <result column="created_org" property="createdOrg"/> | |
12 | + <result column="corp_code" property="corpCode"/> | |
13 | + <result column="created_at" property="createdAt"/> | |
14 | + <result column="updated_at" property="updatedAt"/> | |
15 | + <result column="created_by" property="createdBy"/> | |
16 | + <result column="updated_by" property="updatedBy"/> | |
17 | + </resultMap> | |
18 | + <sql id="tableName">t_auto_zxm_book book</sql> | |
19 | + <sql id="condition"> | |
20 | + <if test="con.id != null and con.id != ''"> | |
21 | + and book.id = #{con.id} | |
22 | + </if> | |
23 | + <if test="con.code != null and con.code != ''"> | |
24 | + and book.code like concat(concat('%',#{con.code}),'%') | |
25 | + </if> | |
26 | + <if test="con.name != null and con.name != ''"> | |
27 | + and book.name like concat(concat('%',#{con.name}),'%') | |
28 | + </if> | |
29 | + <if test="con.category != null and con.category != ''"> | |
30 | + and book.category = #{con.category} | |
31 | + </if> | |
32 | + <if test="con.description != null and con.description != ''"> | |
33 | + and book.description like concat(concat('%',#{con.description}),'%') | |
34 | + </if> | |
35 | + <if test="con.picture != null and con.picture != ''"> | |
36 | + and book.picture = #{con.picture} | |
37 | + </if> | |
38 | + <if test="con.createdOrgList != null and con.createdOrgList.size() != 0"> | |
39 | + and book.created_org in | |
40 | + <foreach collection="con.createdOrgList" item="id" index="index" open="(" close=")" separator=","> | |
41 | + #{id} | |
42 | + </foreach> | |
43 | + </if> | |
44 | + <if test="con.corpCode != null and con.corpCode != ''"> | |
45 | + and book.corp_code = #{con.corpCode} | |
46 | + </if> | |
47 | + <if test="con.createdAt != null"> | |
48 | + and book.created_at = #{con.createdAt} | |
49 | + </if> | |
50 | + <if test="con.updatedAt != null"> | |
51 | + and book.updated_at = #{con.updatedAt} | |
52 | + </if> | |
53 | + <if test="con.createdBy != null and con.createdBy != ''"> | |
54 | + and book.created_by = #{con.createdBy} | |
55 | + </if> | |
56 | + <if test="con.updatedBy != null and con.updatedBy != ''"> | |
57 | + and book.updated_by = #{con.updatedBy} | |
58 | + </if> | |
59 | + </sql> | |
60 | + | |
61 | + <select id="search" resultMap="bookMap"> | |
62 | + select book.* | |
63 | + from <include refid="tableName"/> | |
64 | + WHERE 1=1 <include refid="condition"/> | |
65 | + order by book.created_at DESC | |
66 | + </select> | |
67 | +</mapper> | |
\ No newline at end of file | ... | ... |
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |
3 | +<mapper namespace="com.qgutech.qgyun.zxm.mapper.BookRelMapper"> | |
4 | + <resultMap id="bookRelMap" type="com.qgutech.qgyun.zxm.model.BookRel"> | |
5 | + <result column="id" property="id"/> | |
6 | + <result column="refer_id" property="referId"/> | |
7 | + <result column="fun_code" property="funCode"/> | |
8 | + <result column="field_name" property="fieldName"/> | |
9 | + <result column="book_id" property="bookId"/> | |
10 | + <result column="corp_code" property="corpCode"/> | |
11 | + <result column="created_at" property="createdAt"/> | |
12 | + <result column="updated_at" property="updatedAt"/> | |
13 | + <result column="created_by" property="createdBy"/> | |
14 | + <result column="updated_by" property="updatedBy"/> | |
15 | + </resultMap> | |
16 | + <sql id="tableName">t_auto_zxm_book_rel bookRel</sql> | |
17 | + <sql id="condition"> | |
18 | + <if test="con.id != null and con.id != ''"> | |
19 | + and bookRel.id = #{con.id} | |
20 | + </if> | |
21 | + <if test="con.referId != null and con.referId != ''"> | |
22 | + and bookRel.refer_id = #{con.referId} | |
23 | + </if> | |
24 | + <if test="con.funCode != null and con.funCode != ''"> | |
25 | + and bookRel.fun_code = #{con.funCode} | |
26 | + </if> | |
27 | + <if test="con.fieldName != null and con.fieldName != ''"> | |
28 | + and bookRel.field_name = #{con.fieldName} | |
29 | + </if> | |
30 | + <if test="con.bookId != null and con.bookId != ''"> | |
31 | + and bookRel.book_id = #{con.bookId} | |
32 | + </if> | |
33 | + <if test="con.corpCode != null and con.corpCode != ''"> | |
34 | + and bookRel.corp_code = #{con.corpCode} | |
35 | + </if> | |
36 | + <if test="con.createdAt != null"> | |
37 | + and bookRel.created_at = #{con.createdAt} | |
38 | + </if> | |
39 | + <if test="con.updatedAt != null"> | |
40 | + and bookRel.updated_at = #{con.updatedAt} | |
41 | + </if> | |
42 | + <if test="con.createdBy != null and con.createdBy != ''"> | |
43 | + and bookRel.created_by = #{con.createdBy} | |
44 | + </if> | |
45 | + <if test="con.updatedBy != null and con.updatedBy != ''"> | |
46 | + and bookRel.updated_by = #{con.updatedBy} | |
47 | + </if> | |
48 | + </sql> | |
49 | + | |
50 | + <select id="search" resultMap="bookRelMap"> | |
51 | + select bookRel.* | |
52 | + from <include refid="tableName"/> | |
53 | + WHERE 1=1 <include refid="condition"/> | |
54 | + order by bookRel.created_at DESC | |
55 | + </select> | |
56 | +</mapper> | |
\ No newline at end of file | ... | ... |
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |
3 | +<mapper namespace="com.qgutech.qgyun.zxm.mapper.FileRelMapper"> | |
4 | + <resultMap id="fileRelMap" type="com.qgutech.qgyun.zxm.model.FileRel"> | |
5 | + <result column="id" property="id"/> | |
6 | + <result column="refer_id" property="referId"/> | |
7 | + <result column="fun_code" property="funCode"/> | |
8 | + <result column="field_name" property="fieldName"/> | |
9 | + <result column="corp_code" property="corpCode"/> | |
10 | + <result column="created_at" property="createdAt"/> | |
11 | + <result column="updated_at" property="updatedAt"/> | |
12 | + <result column="created_by" property="createdBy"/> | |
13 | + <result column="updated_by" property="updatedBy"/> | |
14 | + <result column="file_id" property="fileId"/> | |
15 | + </resultMap> | |
16 | + <sql id="tableName">t_auto_zxm_file_rel fileRel</sql> | |
17 | + <sql id="condition"> | |
18 | + <if test="con.id != null and con.id != ''"> | |
19 | + and fileRel.id = #{con.id} | |
20 | + </if> | |
21 | + <if test="con.referId != null and con.referId != ''"> | |
22 | + and fileRel.refer_id = #{con.referId} | |
23 | + </if> | |
24 | + <if test="con.funCode != null and con.funCode != ''"> | |
25 | + and fileRel.fun_code = #{con.funCode} | |
26 | + </if> | |
27 | + <if test="con.fieldName != null and con.fieldName != ''"> | |
28 | + and fileRel.field_name = #{con.fieldName} | |
29 | + </if> | |
30 | + <if test="con.corpCode != null and con.corpCode != ''"> | |
31 | + and fileRel.corp_code = #{con.corpCode} | |
32 | + </if> | |
33 | + <if test="con.createdAt != null"> | |
34 | + and fileRel.created_at = #{con.createdAt} | |
35 | + </if> | |
36 | + <if test="con.updatedAt != null"> | |
37 | + and fileRel.updated_at = #{con.updatedAt} | |
38 | + </if> | |
39 | + <if test="con.createdBy != null and con.createdBy != ''"> | |
40 | + and fileRel.created_by = #{con.createdBy} | |
41 | + </if> | |
42 | + <if test="con.updatedBy != null and con.updatedBy != ''"> | |
43 | + and fileRel.updated_by = #{con.updatedBy} | |
44 | + </if> | |
45 | + <if test="con.fileId != null and con.fileId != ''"> | |
46 | + and fileRel.file_id = #{con.fileId} | |
47 | + </if> | |
48 | + </sql> | |
49 | + | |
50 | + <select id="search" resultMap="fileRelMap"> | |
51 | + select fileRel.* | |
52 | + from <include refid="tableName"/> | |
53 | + WHERE 1=1 <include refid="condition"/> | |
54 | + order by fileRel.created_at DESC | |
55 | + </select> | |
56 | +</mapper> | |
\ No newline at end of file | ... | ... |
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |
3 | +<mapper namespace="com.qgutech.qgyun.zxm.mapper.OrgRelMapper"> | |
4 | + <resultMap id="orgRelMap" type="com.qgutech.qgyun.zxm.model.OrgRel"> | |
5 | + <result column="id" property="id"/> | |
6 | + <result column="refer_id" property="referId"/> | |
7 | + <result column="fun_code" property="funCode"/> | |
8 | + <result column="field_name" property="fieldName"/> | |
9 | + <result column="corp_code" property="corpCode"/> | |
10 | + <result column="created_at" property="createdAt"/> | |
11 | + <result column="updated_at" property="updatedAt"/> | |
12 | + <result column="created_by" property="createdBy"/> | |
13 | + <result column="updated_by" property="updatedBy"/> | |
14 | + <result column="org_id" property="orgId"/> | |
15 | + </resultMap> | |
16 | + <sql id="tableName">t_auto_zxm_org_rel orgRel</sql> | |
17 | + <sql id="condition"> | |
18 | + <if test="con.id != null and con.id != ''"> | |
19 | + and orgRel.id = #{con.id} | |
20 | + </if> | |
21 | + <if test="con.referId != null and con.referId != ''"> | |
22 | + and orgRel.refer_id = #{con.referId} | |
23 | + </if> | |
24 | + <if test="con.funCode != null and con.funCode != ''"> | |
25 | + and orgRel.fun_code = #{con.funCode} | |
26 | + </if> | |
27 | + <if test="con.fieldName != null and con.fieldName != ''"> | |
28 | + and orgRel.field_name = #{con.fieldName} | |
29 | + </if> | |
30 | + <if test="con.corpCode != null and con.corpCode != ''"> | |
31 | + and orgRel.corp_code = #{con.corpCode} | |
32 | + </if> | |
33 | + <if test="con.createdAt != null"> | |
34 | + and orgRel.created_at = #{con.createdAt} | |
35 | + </if> | |
36 | + <if test="con.updatedAt != null"> | |
37 | + and orgRel.updated_at = #{con.updatedAt} | |
38 | + </if> | |
39 | + <if test="con.createdBy != null and con.createdBy != ''"> | |
40 | + and orgRel.created_by = #{con.createdBy} | |
41 | + </if> | |
42 | + <if test="con.updatedBy != null and con.updatedBy != ''"> | |
43 | + and orgRel.updated_by = #{con.updatedBy} | |
44 | + </if> | |
45 | + <if test="con.orgId != null and con.orgId != ''"> | |
46 | + and orgRel.org_id = #{con.orgId} | |
47 | + </if> | |
48 | + </sql> | |
49 | + | |
50 | + <select id="search" resultMap="orgRelMap"> | |
51 | + select orgRel.* | |
52 | + from <include refid="tableName"/> | |
53 | + WHERE 1=1 <include refid="condition"/> | |
54 | + order by orgRel.created_at DESC | |
55 | + </select> | |
56 | +</mapper> | |
\ No newline at end of file | ... | ... |
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |
3 | +<mapper namespace="com.qgutech.qgyun.zxm.mapper.TshjMapper"> | |
4 | + <resultMap id="tshjMap" type="com.qgutech.qgyun.zxm.model.Tshj"> | |
5 | + <result column="id" property="id"/> | |
6 | + <result column="book_id" property="bookId"/> | |
7 | + <result column="return_time" property="returnTime"/> | |
8 | + <result column="created_org" property="createdOrg"/> | |
9 | + <result column="corp_code" property="corpCode"/> | |
10 | + <result column="created_at" property="createdAt"/> | |
11 | + <result column="updated_at" property="updatedAt"/> | |
12 | + <result column="created_by" property="createdBy"/> | |
13 | + <result column="updated_by" property="updatedBy"/> | |
14 | + </resultMap> | |
15 | + <sql id="tableName">t_auto_zxm_tshj tshj</sql> | |
16 | + <sql id="condition"> | |
17 | + <if test="con.id != null and con.id != ''"> | |
18 | + and tshj.id = #{con.id} | |
19 | + </if> | |
20 | + <if test="con.bookIdList != null and con.bookIdList.size() != 0"> | |
21 | + and tshj.book_id in | |
22 | + <foreach collection="con.bookIdList" item="id" index="index" open="(" close=")" separator=","> | |
23 | + #{id} | |
24 | + </foreach> | |
25 | + </if> | |
26 | + <if test="con.returnTimeLeft != null and con.returnTimeRight != null"> | |
27 | + and tshj.return_time <![CDATA[ >= ]]> #{con.returnTimeLeft} | |
28 | + and tshj.return_time <![CDATA[ <= ]]> #{con.returnTimeRight} | |
29 | + </if> | |
30 | + <if test="con.createdOrgList != null and con.createdOrgList.size() != 0"> | |
31 | + and tshj.created_org in | |
32 | + <foreach collection="con.createdOrgList" item="id" index="index" open="(" close=")" separator=","> | |
33 | + #{id} | |
34 | + </foreach> | |
35 | + </if> | |
36 | + <if test="con.corpCode != null and con.corpCode != ''"> | |
37 | + and tshj.corp_code = #{con.corpCode} | |
38 | + </if> | |
39 | + <if test="con.createdAt != null"> | |
40 | + and tshj.created_at = #{con.createdAt} | |
41 | + </if> | |
42 | + <if test="con.updatedAt != null"> | |
43 | + and tshj.updated_at = #{con.updatedAt} | |
44 | + </if> | |
45 | + <if test="con.createdBy != null and con.createdBy != ''"> | |
46 | + and tshj.created_by = #{con.createdBy} | |
47 | + </if> | |
48 | + <if test="con.updatedBy != null and con.updatedBy != ''"> | |
49 | + and tshj.updated_by = #{con.updatedBy} | |
50 | + </if> | |
51 | + </sql> | |
52 | + | |
53 | + <select id="search" resultMap="tshjMap"> | |
54 | + select tshj.* | |
55 | + from <include refid="tableName"/> | |
56 | + WHERE 1=1 <include refid="condition"/> | |
57 | + order by tshj.created_at DESC | |
58 | + </select> | |
59 | +</mapper> | |
\ No newline at end of file | ... | ... |
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |
3 | +<mapper namespace="com.qgutech.qgyun.zxm.mapper.UserRelMapper"> | |
4 | + <resultMap id="userRelMap" type="com.qgutech.qgyun.zxm.model.UserRel"> | |
5 | + <result column="id" property="id"/> | |
6 | + <result column="refer_id" property="referId"/> | |
7 | + <result column="fun_code" property="funCode"/> | |
8 | + <result column="field_name" property="fieldName"/> | |
9 | + <result column="corp_code" property="corpCode"/> | |
10 | + <result column="created_at" property="createdAt"/> | |
11 | + <result column="updated_at" property="updatedAt"/> | |
12 | + <result column="created_by" property="createdBy"/> | |
13 | + <result column="updated_by" property="updatedBy"/> | |
14 | + <result column="user_id" property="userId"/> | |
15 | + </resultMap> | |
16 | + <sql id="tableName">t_auto_zxm_user_rel userRel</sql> | |
17 | + <sql id="condition"> | |
18 | + <if test="con.id != null and con.id != ''"> | |
19 | + and userRel.id = #{con.id} | |
20 | + </if> | |
21 | + <if test="con.referId != null and con.referId != ''"> | |
22 | + and userRel.refer_id = #{con.referId} | |
23 | + </if> | |
24 | + <if test="con.funCode != null and con.funCode != ''"> | |
25 | + and userRel.fun_code = #{con.funCode} | |
26 | + </if> | |
27 | + <if test="con.fieldName != null and con.fieldName != ''"> | |
28 | + and userRel.field_name = #{con.fieldName} | |
29 | + </if> | |
30 | + <if test="con.corpCode != null and con.corpCode != ''"> | |
31 | + and userRel.corp_code = #{con.corpCode} | |
32 | + </if> | |
33 | + <if test="con.createdAt != null"> | |
34 | + and userRel.created_at = #{con.createdAt} | |
35 | + </if> | |
36 | + <if test="con.updatedAt != null"> | |
37 | + and userRel.updated_at = #{con.updatedAt} | |
38 | + </if> | |
39 | + <if test="con.createdBy != null and con.createdBy != ''"> | |
40 | + and userRel.created_by = #{con.createdBy} | |
41 | + </if> | |
42 | + <if test="con.updatedBy != null and con.updatedBy != ''"> | |
43 | + and userRel.updated_by = #{con.updatedBy} | |
44 | + </if> | |
45 | + <if test="con.userId != null and con.userId != ''"> | |
46 | + and userRel.user_id = #{con.userId} | |
47 | + </if> | |
48 | + </sql> | |
49 | + | |
50 | + <select id="search" resultMap="userRelMap"> | |
51 | + select userRel.* | |
52 | + from <include refid="tableName"/> | |
53 | + WHERE 1=1 <include refid="condition"/> | |
54 | + order by userRel.created_at DESC | |
55 | + </select> | |
56 | +</mapper> | |
\ No newline at end of file | ... | ... |
zxm-ui/admin/.editorconfig
0 → 100644
zxm-ui/admin/.env.dev
0 → 100644
1 | +#环境标识,在vue.config.js中用到 | |
2 | +NODE_ENV = 'development' | |
3 | + | |
4 | +# api请求前缀,如果连公司无线网,无法访问可配置hosts:192.168.0.56 yapi.qgutech.com | |
5 | +#VUE_APP_BASE_API = http://qgyun.qgutech.com/qgyun-api | |
6 | +VUE_APP_BASE_API= http://192.168.0.36/qgyun-api | |
7 | + | |
8 | +VUE_APP_SOCKET_API = '192.168.0.36:9092/' | |
9 | + | |
10 | +# 控制babel-plugin-dynamic-import-node插件是否启用,将所有import()转换为require(),可以显著提高热更新的速度 | |
11 | +VUE_CLI_BABEL_TRANSPILE_MODULES = true | ... | ... |
zxm-ui/admin/.env.prod
0 → 100644
1 | +#环境标识,在vue.config.js中用到 | |
2 | +NODE_ENV = 'production' | |
3 | + | |
4 | +# api请求前缀 | |
5 | +VUE_APP_BASE_API = '/qgyun-api' | |
6 | + | |
7 | +VUE_APP_SOCKET_API = '/qsocket/' | |
8 | + | |
9 | + | |
10 | +#远程代码地址和账户 | |
11 | +HOST = '192.168.0.35' | |
12 | +PORT = '22' | |
13 | +USERNAME = 'root' | |
14 | +PASSWORD = 'qixiao.123' | |
15 | + | |
16 | +#待推动代码目录(命名规则:前端模块名_DIST_PATH),目录地址为相对此文件的地址 | |
17 | +ADMIN_DIST_PATH = './dist' | |
18 | + | |
19 | +#推动代码到达服务器目录 | |
20 | +ADMIN_REMOTE_PATH = '/service/qgyun/ui/admin' | ... | ... |
zxm-ui/admin/.env.test
0 → 100644
1 | +#环境标识,在vue.config.js中用到 | |
2 | +NODE_ENV = 'production' | |
3 | + | |
4 | +# api请求前缀 | |
5 | +VUE_APP_BASE_API = '/qgyun-api' | |
6 | + | |
7 | + | |
8 | + | |
9 | +#远程代码地址和账户 | |
10 | +HOST = '192.168.0.36' | |
11 | +PORT = '22' | |
12 | +USERNAME = 'root' | |
13 | +PASSWORD = 'qixiao.123' | |
14 | + | |
15 | +#待推动代码目录(命名规则:前端模块名_DIST_PATH),目录地址为相对此文件的地址 | |
16 | +ADMIN_DIST_PATH = './dist' | |
17 | + | |
18 | +#推动代码到达服务器目录 | |
19 | +ADMIN_REMOTE_PATH = '/service/qgyun/ui/admin' | ... | ... |
zxm-ui/admin/.eslintrc.js
0 → 100644
1 | +module.exports = { | |
2 | + root: true, | |
3 | + parserOptions: { | |
4 | + parser: 'babel-eslint', | |
5 | + sourceType: 'module' | |
6 | + }, | |
7 | + env: { | |
8 | + browser: true, | |
9 | + node: true, | |
10 | + es6: true | |
11 | + }, | |
12 | + extends: ['plugin:vue/recommended', 'eslint:recommended'], | |
13 | + | |
14 | + // add your custom rules here | |
15 | + //it is base on https://github.com/vuejs/eslint-config-vue | |
16 | + | |
17 | + // 等级分为三级: 0-不显示;1-显示警告warning; 2-显示错误error | |
18 | + rules: { | |
19 | + // 多个特性的元素应该分多行撰写,每个特性一行 | |
20 | + 'vue/max-attributes-per-line': [ | |
21 | + 2, | |
22 | + { | |
23 | + singleline: 10, | |
24 | + multiline: { | |
25 | + max: 1, | |
26 | + allowFirstLine: false | |
27 | + } | |
28 | + } | |
29 | + ], | |
30 | + | |
31 | + // vue template 缩进 4空格 | |
32 | + 'vue/html-indent': [2, 4], | |
33 | + | |
34 | + // js 缩进 4空格 | |
35 | + 'vue/script-indent': [ | |
36 | + 'error', | |
37 | + 4, | |
38 | + { | |
39 | + baseIndent: 1, | |
40 | + switchCase: 1 | |
41 | + } | |
42 | + ], | |
43 | + /** | |
44 | + * 模版中开始标签的反尖括号前禁止有空格,自闭和标签前必须有空格 | |
45 | + * @category Improving Readability | |
46 | + * @fixable | |
47 | + */ | |
48 | + 'vue/html-closing-bracket-spacing': [ | |
49 | + 'error', | |
50 | + { | |
51 | + selfClosingTag: 'never' | |
52 | + } | |
53 | + ], | |
54 | + // 在单行元素的内容前后需要换行符 (关闭) | |
55 | + 'vue/singleline-html-element-content-newline': 'off', | |
56 | + | |
57 | + // 在多行元素的内容之前和之后需要换行符 (关闭) | |
58 | + 'vue/multiline-html-element-content-newline': 'off', | |
59 | + | |
60 | + // JS/JSX中的组件名应该始终是帕斯卡命名法 | |
61 | + 'vue/name-property-casing': ['error', 'PascalCase'], | |
62 | + | |
63 | + // 禁止使用 v-html (关闭) | |
64 | + 'vue/no-v-html': 'off', | |
65 | + | |
66 | + // 强制箭头函数的箭头前后使用一致的空格 | |
67 | + 'arrow-spacing': [ | |
68 | + 2, | |
69 | + { | |
70 | + before: true, | |
71 | + after: true | |
72 | + } | |
73 | + ], | |
74 | + | |
75 | + // 强制在代码块中开括号前和闭括号后有空格 | |
76 | + 'block-spacing': [2, 'always'], | |
77 | + | |
78 | + // 强制在代码块中使用一致的大括号风格 | |
79 | + 'brace-style': [ | |
80 | + 2, | |
81 | + '1tbs', | |
82 | + { | |
83 | + allowSingleLine: true // 允许单行大括号 | |
84 | + } | |
85 | + ], | |
86 | + | |
87 | + // 强制驼峰命名法 | |
88 | + camelcase: [ | |
89 | + 2, | |
90 | + { | |
91 | + properties: 'always', | |
92 | + allow: [ | |
93 | + '^\\$_' | |
94 | + // use $_ for mixins properties | |
95 | + // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential | |
96 | + ] | |
97 | + } | |
98 | + ], | |
99 | + | |
100 | + // 禁止末尾逗号 | |
101 | + 'comma-dangle': [2, 'never'], | |
102 | + | |
103 | + // 逗号前无需空格,逗号后要求空格 | |
104 | + 'comma-spacing': [ | |
105 | + 2, | |
106 | + { | |
107 | + before: false, | |
108 | + after: true | |
109 | + } | |
110 | + ], | |
111 | + | |
112 | + // 逗号风格,在每行最后 | |
113 | + 'comma-style': [2, 'last'], | |
114 | + | |
115 | + // 构造函数中必须有 super | |
116 | + 'constructor-super': 2, | |
117 | + | |
118 | + // 大括号不能省略 | |
119 | + curly: [2, 'all'], | |
120 | + | |
121 | + // 禁止文件末尾保留一行空行 https://eslint.bootcss.com/docs/4.0.0/rules/eol-last/ | |
122 | + 'eol-last': [2, 'always'], | |
123 | + | |
124 | + // 强制使用 === | !== | |
125 | + eqeqeq: [ | |
126 | + 'error', | |
127 | + 'always', | |
128 | + { | |
129 | + null: 'ignore' // 除了与 null 字面量进行比较时,总是强制使用绝对相等 | |
130 | + } | |
131 | + ], | |
132 | + | |
133 | + // 代码缩进 | |
134 | + indent: 'off', | |
135 | + | |
136 | + // 强制在对象字面量的键和值之间使用一致的空格 | |
137 | + 'key-spacing': [ | |
138 | + 2, | |
139 | + { | |
140 | + beforeColon: false, | |
141 | + afterColon: true | |
142 | + } | |
143 | + ], | |
144 | + | |
145 | + // 强制在关键字前后使用一致的空格 | |
146 | + 'keyword-spacing': [ | |
147 | + 2, | |
148 | + { | |
149 | + before: true, | |
150 | + after: true | |
151 | + } | |
152 | + ], | |
153 | + | |
154 | + // 要求构造函数首字母大写 | |
155 | + 'new-cap': [ | |
156 | + 2, | |
157 | + { | |
158 | + newIsCap: true, | |
159 | + capIsNew: false | |
160 | + } | |
161 | + ], | |
162 | + | |
163 | + // 禁止使用 Array 构造函数 | |
164 | + 'no-array-constructor': 2, | |
165 | + | |
166 | + // 禁用 console(关闭) | |
167 | + 'no-console': 'off', | |
168 | + | |
169 | + // 不允许修改类声明的变量 | |
170 | + 'no-class-assign': 2, | |
171 | + | |
172 | + // 禁止条件表达式中出现赋值操作符 | |
173 | + 'no-cond-assign': 2, | |
174 | + | |
175 | + // 禁止修改 const 声明的变量 | |
176 | + 'no-const-assign': 2, | |
177 | + | |
178 | + // 禁止在正则表达式中使用控制字符 | |
179 | + 'no-control-regex': 0, | |
180 | + | |
181 | + // 禁止删除变量 | |
182 | + 'no-delete-var': 2, | |
183 | + | |
184 | + // 禁止 function 定义中出现重名参数 | |
185 | + 'no-dupe-args': 2, | |
186 | + | |
187 | + // 禁止类成员中出现重复的名称 | |
188 | + 'no-dupe-class-members': 2, | |
189 | + | |
190 | + // 禁止对象字面量中出现重复的 key | |
191 | + 'no-dupe-keys': 2, | |
192 | + | |
193 | + // 禁止出现重复的 case 标签 | |
194 | + 'no-duplicate-case': 2, | |
195 | + | |
196 | + // 禁止在正则表达式中使用空字符集 | |
197 | + 'no-empty-character-class': 2, | |
198 | + | |
199 | + // 禁止使用空解构模式 | |
200 | + 'no-empty-pattern': 2, | |
201 | + | |
202 | + // 禁止对 catch 子句的参数重新赋值 | |
203 | + 'no-ex-assign': 2, | |
204 | + | |
205 | + // 禁止扩展原生类型 | |
206 | + 'no-extend-native': 2, | |
207 | + | |
208 | + // 禁止不必要的函数绑定 | |
209 | + 'no-extra-bind': 2, | |
210 | + | |
211 | + // 禁止不必要的布尔转换 | |
212 | + 'no-extra-boolean-cast': 2, | |
213 | + | |
214 | + // 禁止不必要的括号 | |
215 | + 'no-extra-parens': [2, 'functions'], | |
216 | + | |
217 | + // 禁止 case 语句落空 | |
218 | + 'no-fallthrough': 2, | |
219 | + | |
220 | + // 禁止数字字面量中使用前导和末尾小数点(.5 -> 0.5) | |
221 | + 'no-floating-decimal': 2, | |
222 | + | |
223 | + // 禁止对 function 声明重新赋值 | |
224 | + 'no-func-assign': 2, | |
225 | + | |
226 | + // 禁止在嵌套的块中出现变量声明或 function 声明 | |
227 | + 'no-inner-declarations': [2, 'functions'], | |
228 | + | |
229 | + // 禁止 RegExp 构造函数中存在无效的正则表达式字符串 | |
230 | + 'no-invalid-regexp': 2, | |
231 | + | |
232 | + // 禁止不规则的空白 | |
233 | + 'no-irregular-whitespace': 2, | |
234 | + | |
235 | + // 不允许标签与变量同名 | |
236 | + 'no-label-var': 2, | |
237 | + | |
238 | + // 禁用标签语句 | |
239 | + 'no-labels': [ | |
240 | + 2, | |
241 | + { | |
242 | + allowLoop: false, | |
243 | + allowSwitch: false | |
244 | + } | |
245 | + ], | |
246 | + | |
247 | + // 禁用不必要的嵌套块 | |
248 | + 'no-lone-blocks': 2, | |
249 | + | |
250 | + // 禁止空格和 tab 的混合缩进 | |
251 | + 'no-mixed-spaces-and-tabs': 2, | |
252 | + | |
253 | + // 禁止使用多个空格 | |
254 | + 'no-multi-spaces': 2, | |
255 | + | |
256 | + // 禁止使用多行字符串 | |
257 | + 'no-multi-str': 2, | |
258 | + | |
259 | + // 禁止出现多行空行 | |
260 | + 'no-multiple-empty-lines': [ | |
261 | + 2, | |
262 | + { | |
263 | + max: 1 | |
264 | + } | |
265 | + ], | |
266 | + | |
267 | + // 禁止对原生对象或只读的全局对象进行赋值 | |
268 | + 'no-global-assign': 2, | |
269 | + | |
270 | + // 禁止对关系运算符的左操作数使用否定操作符 | |
271 | + 'no-unsafe-negation': 2, | |
272 | + | |
273 | + // 禁用 Object 的构造函数 | |
274 | + 'no-new-object': 2, | |
275 | + | |
276 | + // 禁止调用 require 时使用 new 操作符 | |
277 | + 'no-new-require': 2, | |
278 | + | |
279 | + // 禁止 Symbolnew 操作符和 new 一起使用 | |
280 | + 'no-new-symbol': 2, | |
281 | + | |
282 | + // 禁止对 String,Number 和 Boolean 使用 new 操作符 | |
283 | + 'no-new-wrappers': 2, | |
284 | + | |
285 | + // 禁止把全局对象作为函数调用 | |
286 | + 'no-obj-calls': 2, | |
287 | + | |
288 | + // 禁止多次声明同一变量 | |
289 | + 'no-redeclare': 2, | |
290 | + | |
291 | + // 禁止正则表达式字面量中出现多个空格 | |
292 | + 'no-regex-spaces': 2, | |
293 | + | |
294 | + // 禁止在 return 语句中使用赋值语句 | |
295 | + 'no-return-assign': [2, 'except-parens'], | |
296 | + | |
297 | + // 禁止自我赋值 | |
298 | + 'no-self-assign': 2, | |
299 | + | |
300 | + // 禁止自身比较 | |
301 | + 'no-self-compare': 2, | |
302 | + | |
303 | + // 禁用逗号操作符 | |
304 | + 'no-sequences': 2, | |
305 | + | |
306 | + // 禁止将标识符定义为受限的名字 | |
307 | + 'no-shadow-restricted-names': 2, | |
308 | + | |
309 | + // 要求或禁止在函数标识符和其调用之间有空格 | |
310 | + 'func-call-spacing': 2, | |
311 | + | |
312 | + // 禁用稀疏数组 | |
313 | + 'no-sparse-arrays': 2, | |
314 | + | |
315 | + // 禁止在构造函数中,在调用 super() 之前使用 this 或 super | |
316 | + 'no-this-before-super': 2, | |
317 | + | |
318 | + // 禁止抛出异常字面量 | |
319 | + 'no-throw-literal': 2, | |
320 | + | |
321 | + // 禁用行尾空格 | |
322 | + 'no-trailing-spaces': 2, | |
323 | + | |
324 | + // 禁用未声明的变量,除非它们在 /*global */ 注释中被提到 | |
325 | + 'no-undef': 2, | |
326 | + | |
327 | + // 禁止将变量初始化为 undefined | |
328 | + 'no-undef-init': 2, | |
329 | + | |
330 | + // 禁止出现令人困惑的多行表达式 | |
331 | + 'no-unexpected-multiline': 2, | |
332 | + | |
333 | + // 禁用一成不变的循环条件 | |
334 | + 'no-unmodified-loop-condition': 2, | |
335 | + | |
336 | + // 禁止可以在有更简单的可替代的表达式时使用三元操作符 | |
337 | + 'no-unneeded-ternary': [ | |
338 | + 2, | |
339 | + { | |
340 | + defaultAssignment: false // 禁止条件表达式作为默认的赋值模式 | |
341 | + } | |
342 | + ], | |
343 | + | |
344 | + // 禁止在 return、throw、continue 和 break 语句之后出现不可达代码 | |
345 | + 'no-unreachable': 2, | |
346 | + | |
347 | + // 禁止在 finally 语句块中出现控制流语句 | |
348 | + 'no-unsafe-finally': 2, | |
349 | + | |
350 | + // 禁止出现未使用过的变量 | |
351 | + 'no-unused-vars': [ | |
352 | + 2, | |
353 | + { | |
354 | + vars: 'all', | |
355 | + args: 'none' | |
356 | + } | |
357 | + ], | |
358 | + | |
359 | + // 禁止不必要的 .call() 和 .apply() | |
360 | + 'no-useless-call': 2, | |
361 | + | |
362 | + // 禁止在对象中使用不必要的计算属性 | |
363 | + 'no-useless-computed-key': 2, | |
364 | + | |
365 | + // 禁用不必要的构造函数 | |
366 | + 'no-useless-constructor': 2, | |
367 | + | |
368 | + // 禁用不必要的转义字符 | |
369 | + 'no-useless-escape': 0, | |
370 | + | |
371 | + // 禁止属性前有空白 | |
372 | + 'no-whitespace-before-property': 2, | |
373 | + | |
374 | + // 强制函数中的变量要么一起声明要么分开声明 | |
375 | + 'one-var': [ | |
376 | + 2, | |
377 | + { | |
378 | + initialized: 'never' // 要求每个作用域的初始化的变量有多个变量声明 | |
379 | + } | |
380 | + ], | |
381 | + | |
382 | + // 强制操作符使用一致的换行符 | |
383 | + 'operator-linebreak': [ | |
384 | + 2, | |
385 | + 'after', | |
386 | + { | |
387 | + overrides: { | |
388 | + '?': 'before', | |
389 | + ':': 'before' | |
390 | + } | |
391 | + } | |
392 | + ], | |
393 | + | |
394 | + // 禁止块语句和类的开始或末尾有空行 | |
395 | + 'padded-blocks': [2, 'never'], | |
396 | + | |
397 | + // 要求尽可能地使用单引号 | |
398 | + quotes: [ | |
399 | + 2, | |
400 | + 'single', | |
401 | + { | |
402 | + avoidEscape: true, // 允许字符串使用单引号或双引号 | |
403 | + allowTemplateLiterals: true // 允许字符串使用反勾号 | |
404 | + } | |
405 | + ], | |
406 | + | |
407 | + // 要求在语句末尾使用分号 | |
408 | + semi: ['error', 'always'], | |
409 | + | |
410 | + // 强制分号之前和之后使用一致的空格 | |
411 | + 'semi-spacing': [ | |
412 | + 2, | |
413 | + { | |
414 | + before: false, | |
415 | + after: true | |
416 | + } | |
417 | + ], | |
418 | + | |
419 | + // 强制在块之前使用一致的空格 | |
420 | + 'space-before-blocks': [2, 'always'], | |
421 | + | |
422 | + // 禁止在参数的 ( 前面有空格 | |
423 | + 'space-before-function-paren': [2, 'never'], | |
424 | + | |
425 | + // 强制圆括号内没有空格 | |
426 | + 'space-in-parens': [2, 'never'], | |
427 | + | |
428 | + // 要求操作符周围有空格 | |
429 | + 'space-infix-ops': 2, | |
430 | + | |
431 | + // 强制在一元操作符前后使用一致的空格 | |
432 | + 'space-unary-ops': [ | |
433 | + 2, | |
434 | + { | |
435 | + words: true, | |
436 | + nonwords: false | |
437 | + } | |
438 | + ], | |
439 | + | |
440 | + // 强制在注释中 // 或 /* 使用一致的空格 | |
441 | + 'spaced-comment': [ | |
442 | + 2, | |
443 | + 'always', | |
444 | + { | |
445 | + markers: [ | |
446 | + 'global', | |
447 | + 'globals', | |
448 | + 'eslint', | |
449 | + 'eslint-disable', | |
450 | + '*package', | |
451 | + '!', | |
452 | + ',' | |
453 | + ] | |
454 | + } | |
455 | + ], | |
456 | + | |
457 | + // 禁止花括号内出现空格 TODO 开启会导致 import(`@/views${ file }.vue`) 报错 | |
458 | + 'template-curly-spacing': 'off', | |
459 | + | |
460 | + // 要求使用 isNaN() 检查 NaN | |
461 | + 'use-isnan': 2, | |
462 | + | |
463 | + // 强制 typeof 表达式与有效的字符串进行比较 | |
464 | + 'valid-typeof': 2, | |
465 | + | |
466 | + // 需要把立即执行的函数包裹起来 | |
467 | + 'wrap-iife': [2, 'any'], | |
468 | + | |
469 | + // 要求使用 const 声明那些声明后不再被修改的变量 | |
470 | + 'prefer-const': 2, | |
471 | + | |
472 | + // 禁用 debugger(生产环境) | |
473 | + 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, | |
474 | + | |
475 | + // TODO idea如果满足,需要修改js配置 | |
476 | + // 要求以对象元素开始或结尾的对象的花括号中有空格 | |
477 | + // "object-curly-spacing": [ | |
478 | + // 2, | |
479 | + // "always", | |
480 | + // { | |
481 | + // objectsInObjects: false | |
482 | + // } | |
483 | + // ], | |
484 | + 'object-curly-spacing': [2, 'never'], | |
485 | + | |
486 | + // 禁止在括号内使用空格 | |
487 | + 'array-bracket-spacing': [2, 'never'] | |
488 | + } | |
489 | +}; | ... | ... |
zxm-ui/admin/README.md
0 → 100644
1 | +#管理端模板 | |
2 | + | |
3 | +> 注意:本模板配置自带git提交钩子,如无法通过eslint校验,则无法提交。 | |
4 | + | |
5 | + | |
6 | +#### 准备 | |
7 | + | |
8 | +- 安装[node](http://nodejs.cn/) | |
9 | + | |
10 | +- 切换青谷前端私服 [参考资料](http://npm.qgutech.com/) | |
11 | + | |
12 | +#####开发框架 | |
13 | + | |
14 | +- Vue.js | |
15 | + | |
16 | + > 学习参考资料 [https://cn.vuejs.org/](https://cn.vuejs.org/): | |
17 | + | |
18 | +- ElementUI | |
19 | + > 学习参考资料 [https://element.eleme.cn/2.0/#/zh-CN/component/installation](hhttps://element.eleme.cn/2.0/#/zh-CN/component/installation): | |
20 | + | |
21 | + | |
22 | + | |
23 | +####已含第三方组件 | |
24 | + | |
25 | +- 二维码:`qrcode.vue` | |
26 | +- 复制:`vue-clipboard2` | |
27 | + | |
28 | +#### issue | |
29 | +- 如果windows第一次运行前端项目会遇到安装node-sass的问题,请使用管理员权限运行 `npm install --global --production windows-build-tools`后,再安装依赖 | |
30 | +具体参考链接:[https://www.npmjs.com/package/node-gyp] | |
31 | + | |
32 | +#### | |
\ No newline at end of file | ... | ... |
zxm-ui/admin/babel.config.js
0 → 100644
zxm-ui/admin/gulpfile.js
0 → 100644
1 | +const gulp = require('gulp'); | |
2 | +const { | |
3 | + series | |
4 | +} = require('gulp'); | |
5 | +const GulpSSH = require('gulp-ssh'); | |
6 | +var through = require('through2'); | |
7 | + | |
8 | +/** | |
9 | + * 获取参数,目前支持--env和--moudle | |
10 | + * @param {Array} argv | |
11 | + */ | |
12 | +const params = (argv) => { | |
13 | + console.log(argv); | |
14 | + const obj = {}; | |
15 | + if (!argv && argv.length < 3) { | |
16 | + return obj; | |
17 | + } | |
18 | + for (let i = 2; i < argv.length; i++) { | |
19 | + console.log(argv[i]); | |
20 | + if (argv[i].indexOf('--') === 0 && argv[i + 1].indexOf('--') === -1) { | |
21 | + obj[argv[i].substring(2)] = argv[i + 1]; | |
22 | + } | |
23 | + } | |
24 | + return obj; | |
25 | +}; | |
26 | +/** | |
27 | + * 读取配置文件信息 .env.dev 、.env.pro、.env.test | |
28 | + * @param {String} content | |
29 | + */ | |
30 | +const filesToConfig = (content) => { | |
31 | + const lines = content.split('\n'); | |
32 | + const obj = {}; | |
33 | + for (let i = 0; i < lines.length; i++) { | |
34 | + const item = lines[i]; | |
35 | + if (item.indexOf('#') === 0 || !item) { | |
36 | + continue; | |
37 | + } | |
38 | + const KeyValue = item.split('='); | |
39 | + if (KeyValue !== 2 && !KeyValue[0].trim() && !KeyValue[1].trim()) { | |
40 | + continue; | |
41 | + } | |
42 | + const value = KeyValue[1].trim(); | |
43 | + const key = KeyValue[0].trim().toLocaleLowerCase(); | |
44 | + console.log(value.indexOf('\''), value.lastIndexOf('\''), value.length - 1); | |
45 | + if (value.indexOf('\'') === 0 && value.lastIndexOf('\'') === value.length - 1) { | |
46 | + obj[key] = value.substring(1, value.length - 1); | |
47 | + continue; | |
48 | + } | |
49 | + obj[key] = ''; | |
50 | + } | |
51 | + console.log(obj); | |
52 | + return obj; | |
53 | +}; | |
54 | + | |
55 | +let gulpSSH = null; | |
56 | +let staticPath = ''; | |
57 | +let distPath = ''; | |
58 | + | |
59 | +function getGupSSH(cb) { | |
60 | + const PARAMS = params(process.argv); | |
61 | + const ENV = PARAMS.env; | |
62 | + const QGMODULE = PARAMS.qgModule; | |
63 | + return gulp.src(`./.env.${ENV}`).pipe(through.obj(function(file, encode, callback) { | |
64 | + const obj = filesToConfig(file.contents.toString()); | |
65 | + gulpSSH = new GulpSSH({ | |
66 | + ignoreErrors: false, | |
67 | + sshConfig: obj | |
68 | + }); | |
69 | + staticPath = obj[QGMODULE + '_remote_path']; | |
70 | + distPath = obj[QGMODULE + '_dist_path']; | |
71 | + | |
72 | + callback(); | |
73 | + })).on('data', (data) => { | |
74 | + }).on('end', () => { | |
75 | + if (!distPath || !staticPath) { | |
76 | + // TODO | |
77 | + console.log('获取路径失败', distPath, staticPath); | |
78 | + return new Error('获取路径失败'); | |
79 | + } | |
80 | + console.log('获取路径成功', distPath, staticPath); | |
81 | + }); | |
82 | +} | |
83 | + | |
84 | +/** | |
85 | + * 将远程服务器代码清除 | |
86 | + */ | |
87 | +function clean(cb) { | |
88 | + return gulpSSH.shell(`rm -rf ${staticPath}`); | |
89 | +} | |
90 | + | |
91 | +/** | |
92 | + * 根据环境和模块获取相应配置文件后,将打包后的代码部署到服务器上 | |
93 | + * @param {*} cb | |
94 | + */ | |
95 | +function deploy(cb) { | |
96 | + return gulp | |
97 | + .src([`${distPath}/**`]) | |
98 | + .pipe(gulpSSH.dest(staticPath)); | |
99 | +} | |
100 | + | |
101 | +exports.default = series(getGupSSH, clean, deploy); | |
102 | + | ... | ... |
zxm-ui/admin/jsconfig.json
0 → 100644
zxm-ui/admin/package.json
0 → 100644
1 | +{ | |
2 | + "name": "qgutech-admin", | |
3 | + "version": "2.1.0", | |
4 | + "description": "", | |
5 | + "author": "xinqgingqing <xingqingqing@qgutech.com>", | |
6 | + "scripts": { | |
7 | + "dev": "vue-cli-service serve --mode dev", | |
8 | + "build:test": "vue-cli-service build --mode test && gulp --env test --qgModule admin", | |
9 | + "build:prod": "vue-cli-service build --mode prod && gulp --env prod --qgModule admin", | |
10 | + "publish:test": "gulp --env test --qgModule admin", | |
11 | + "publish:prod": "gulp --env prod --qgModule admin", | |
12 | + "lint": "eslint --ext .js,.vue src", | |
13 | + "svgo": "svgo -f src/assets/icons/svg --config=src/assets/icons/svgo.yml && svgo -f src/assets/icons/svg/menu --config=src/assets/icons/svgo.yml" | |
14 | + }, | |
15 | + "husky": { | |
16 | + "hooks": { | |
17 | + "pre-commit": "lint-staged" | |
18 | + } | |
19 | + }, | |
20 | + "lint-staged": { | |
21 | + "src/**/*.{js,vue}": [ | |
22 | + "eslint --fix", | |
23 | + "git add" | |
24 | + ] | |
25 | + }, | |
26 | + "keywords": [ | |
27 | + "vue", | |
28 | + "admin", | |
29 | + "dashboard", | |
30 | + "element-ui", | |
31 | + "admin-template", | |
32 | + "management-system" | |
33 | + ], | |
34 | + "dependencies": { | |
35 | + "@qg/qgv-ui": "0.3.46", | |
36 | + "axios": "0.18.1", | |
37 | + "browser-md5-file": "^1.1.1", | |
38 | + "crypto-js": "^4.0.0", | |
39 | + "element-ui": "^2.13.0", | |
40 | + "js-cookie": "2.2.0", | |
41 | + "md5": "^2.3.0", | |
42 | + "moment": "^2.27.0", | |
43 | + "normalize.css": "7.0.0", | |
44 | + "nprogress": "0.2.0", | |
45 | + "path-to-regexp": "2.4.0", | |
46 | + "qrcode.vue": "^1.7.0", | |
47 | + "vue": "2.6.10", | |
48 | + "vue-clipboard2": "^0.3.1", | |
49 | + "vue-count-to": "^1.0.13", | |
50 | + "vue-router": "3.0.2", | |
51 | + "vuedraggable": "^2.24.0", | |
52 | + "vuescroll": "^4.16.1", | |
53 | + "vuex": "3.1.0" | |
54 | + }, | |
55 | + "devDependencies": { | |
56 | + "@babel/core": "7.0.0", | |
57 | + "@babel/register": "7.0.0", | |
58 | + "@vue/cli-plugin-babel": "3.5.3", | |
59 | + "@vue/cli-plugin-eslint": "^3.9.1", | |
60 | + "@vue/cli-plugin-unit-jest": "3.5.3", | |
61 | + "@vue/cli-service": "^4.0.5", | |
62 | + "@vue/test-utils": "1.0.0-beta.29", | |
63 | + "autoprefixer": "^9.5.1", | |
64 | + "babel-core": "7.0.0-bridge.0", | |
65 | + "babel-eslint": "10.0.1", | |
66 | + "babel-jest": "23.6.0", | |
67 | + "chalk": "2.4.2", | |
68 | + "chokidar": "2.1.5", | |
69 | + "connect": "3.6.6", | |
70 | + "eslint": "5.15.3", | |
71 | + "eslint-plugin-vue": "5.2.2", | |
72 | + "gulp": "^4.0.2", | |
73 | + "gulp-ssh": "^0.7.0", | |
74 | + "html-webpack-plugin": "3.2.0", | |
75 | + "husky": "1.3.1", | |
76 | + "lint-staged": "8.1.5", | |
77 | + "node-sass": "^4.9.0", | |
78 | + "runjs": "^4.3.2", | |
79 | + "sass-loader": "^7.1.0", | |
80 | + "script-ext-html-webpack-plugin": "2.1.3", | |
81 | + "script-loader": "0.7.2", | |
82 | + "serve-static": "^1.13.2", | |
83 | + "svg-sprite-loader": "4.1.3", | |
84 | + "svgo": "1.2.0", | |
85 | + "through2": "^3.0.1", | |
86 | + "vue-template-compiler": "2.6.10" | |
87 | + }, | |
88 | + "engines": { | |
89 | + "node": ">=8.9", | |
90 | + "npm": ">= 3.0.0" | |
91 | + }, | |
92 | + "browserslist": [ | |
93 | + "> 1%", | |
94 | + "last 2 versions" | |
95 | + ] | |
96 | +} | ... | ... |
zxm-ui/admin/postcss.config.js
0 → 100644
zxm-ui/admin/public/favicon.ico
0 → 100644
No preview for this file type
zxm-ui/admin/public/img/logo/logo.png
0 → 100644
67.1 KB
zxm-ui/admin/public/img/logo/logo_full.png
0 → 100644
26.1 KB
zxm-ui/admin/public/img/logo/logo_white.png
0 → 100644
24.9 KB
zxm-ui/admin/public/index.html
0 → 100644
1 | +<!DOCTYPE html> | |
2 | +<html> | |
3 | + | |
4 | +<head> | |
5 | + <meta charset="utf-8"> | |
6 | + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> | |
7 | + <meta name="renderer" content="webkit"> | |
8 | + <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> | |
9 | + <link rel="icon" href="<%= BASE_URL %>favicon.ico"> | |
10 | + <title><%= webpackConfig.name %></title> | |
11 | +</head> | |
12 | + | |
13 | +<body> | |
14 | +<div id="app"></div> | |
15 | + | |
16 | +<!-- built files will be auto injected --> | |
17 | +</body> | |
18 | + | |
19 | +</html> | ... | ... |
1 | +tinymce.IconManager.add('default', { | |
2 | + icons: { | |
3 | + 'accessibility-check': '<svg width="24" height="24"><path d="M12 2a2 2 0 012 2 2 2 0 01-2 2 2 2 0 01-2-2c0-1.1.9-2 2-2zm8 7h-5v12c0 .6-.4 1-1 1a1 1 0 01-1-1v-5c0-.6-.4-1-1-1a1 1 0 00-1 1v5c0 .6-.4 1-1 1a1 1 0 01-1-1V9H4a1 1 0 110-2h16c.6 0 1 .4 1 1s-.4 1-1 1z" fill-rule="nonzero"/></svg>', | |
4 | + 'action-next': '<svg width="24" height="24"><path fill-rule="nonzero" d="M5.7 7.3a1 1 0 00-1.4 1.4l7.7 7.7 7.7-7.7a1 1 0 10-1.4-1.4L12 13.6 5.7 7.3z"/></svg>', | |
5 | + 'action-prev': '<svg width="24" height="24"><path fill-rule="nonzero" d="M18.3 15.7a1 1 0 001.4-1.4L12 6.6l-7.7 7.7a1 1 0 001.4 1.4L12 9.4l6.3 6.3z"/></svg>', | |
6 | + 'align-center': '<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm3 4h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 110-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2zm-3-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>', | |
7 | + 'align-justify': '<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>', | |
8 | + 'align-left': '<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 4h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>', | |
9 | + 'align-none': '<svg width="24" height="24"><path d="M14.2 5L13 7H5a1 1 0 110-2h9.2zm4 0h.8a1 1 0 010 2h-2l1.2-2zm-6.4 4l-1.2 2H5a1 1 0 010-2h6.8zm4 0H19a1 1 0 010 2h-4.4l1.2-2zm-6.4 4l-1.2 2H5a1 1 0 010-2h4.4zm4 0H19a1 1 0 010 2h-6.8l1.2-2zM7 17l-1.2 2H5a1 1 0 010-2h2zm4 0h8a1 1 0 010 2H9.8l1.2-2zm5.2-13.5l1.3.7-9.7 16.3-1.3-.7 9.7-16.3z" fill-rule="evenodd"/></svg>', | |
10 | + 'align-right': '<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm6 4h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm-6-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>', | |
11 | + 'arrow-left': '<svg width="24" height="24"><path d="M5.6 13l12 6a1 1 0 001.4-1V6a1 1 0 00-1.4-.9l-12 6a1 1 0 000 1.8z" fill-rule="evenodd"/></svg>', | |
12 | + 'arrow-right': '<svg width="24" height="24"><path d="M18.5 13l-12 6A1 1 0 015 18V6a1 1 0 011.4-.9l12 6a1 1 0 010 1.8z" fill-rule="evenodd"/></svg>', | |
13 | + 'bold': '<svg width="24" height="24"><path d="M7.8 19c-.3 0-.5 0-.6-.2l-.2-.5V5.7c0-.2 0-.4.2-.5l.6-.2h5c1.5 0 2.7.3 3.5 1 .7.6 1.1 1.4 1.1 2.5a3 3 0 01-.6 1.9c-.4.6-1 1-1.6 1.2.4.1.9.3 1.3.6s.8.7 1 1.2c.4.4.5 1 .5 1.6 0 1.3-.4 2.3-1.3 3-.8.7-2.1 1-3.8 1H7.8zm5-8.3c.6 0 1.2-.1 1.6-.5.4-.3.6-.7.6-1.3 0-1.1-.8-1.7-2.3-1.7H9.3v3.5h3.4zm.5 6c.7 0 1.3-.1 1.7-.4.4-.4.6-.9.6-1.5s-.2-1-.7-1.4c-.4-.3-1-.4-2-.4H9.4v3.8h4z" fill-rule="evenodd"/></svg>', | |
14 | + 'bookmark': '<svg width="24" height="24"><path d="M6 4v17l6-4 6 4V4c0-.6-.4-1-1-1H7a1 1 0 00-1 1z" fill-rule="nonzero"/></svg>', | |
15 | + 'border-width': '<svg width="24" height="24"><path d="M5 14.8h14a1 1 0 010 2H5a1 1 0 010-2zm-.5 3.7h15c.3 0 .5.2.5.5s-.2.5-.5.5h-15a.5.5 0 110-1zm.5-8.3h14c.6 0 1 .4 1 1v1c0 .5-.4 1-1 1H5a1 1 0 01-1-1v-1c0-.6.4-1 1-1zm0-5.7h14c.6 0 1 .4 1 1v2c0 .6-.4 1-1 1H5a1 1 0 01-1-1v-2c0-.6.4-1 1-1z" fill-rule="evenodd"/></svg>', | |
16 | + 'brightness': '<svg width="24" height="24"><path d="M12 17c.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 01-.7.3 1 1 0 01-.7-.3 1 1 0 01-.3-.7v-1c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3zm0-10a1 1 0 01-.7-.3A1 1 0 0111 6V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 01-.7.3zm7 4c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 01-.7.3h-1a1 1 0 01-.7-.3 1 1 0 01-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1zM7 12c0 .3-.1.5-.3.7a1 1 0 01-.7.3H5a1 1 0 01-.7-.3A1 1 0 014 12c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1c.3 0 .5.1.7.3.2.2.3.4.3.7zm10 3.5l.7.8c.2.1.3.4.3.6 0 .3-.1.6-.3.8a1 1 0 01-.8.3 1 1 0 01-.6-.3l-.8-.7a1 1 0 01-.3-.8c0-.2.1-.5.3-.7a1 1 0 011.4 0zm-10-7l-.7-.8a1 1 0 01-.3-.6c0-.3.1-.6.3-.8.2-.2.5-.3.8-.3.2 0 .5.1.7.3l.7.7c.2.2.3.5.3.8 0 .2-.1.5-.3.7a1 1 0 01-.7.3 1 1 0 01-.8-.3zm10 0a1 1 0 01-.8.3 1 1 0 01-.7-.3 1 1 0 01-.3-.7c0-.3.1-.6.3-.8l.8-.7c.1-.2.4-.3.6-.3.3 0 .6.1.8.3.2.2.3.5.3.8 0 .2-.1.5-.3.7l-.7.7zm-10 7c.2-.2.5-.3.8-.3.2 0 .5.1.7.3a1 1 0 010 1.4l-.8.8a1 1 0 01-.6.3 1 1 0 01-.8-.3 1 1 0 01-.3-.8c0-.2.1-.5.3-.6l.7-.8zM12 8a4 4 0 013.7 2.4 4 4 0 010 3.2A4 4 0 0112 16a4 4 0 01-3.7-2.4 4 4 0 010-3.2A4 4 0 0112 8zm0 6.5c.7 0 1.3-.2 1.8-.7.5-.5.7-1.1.7-1.8s-.2-1.3-.7-1.8c-.5-.5-1.1-.7-1.8-.7s-1.3.2-1.8.7c-.5.5-.7 1.1-.7 1.8s.2 1.3.7 1.8c.5.5 1.1.7 1.8.7z" fill-rule="evenodd"/></svg>', | |
17 | + 'browse': '<svg width="24" height="24"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2h-4v-2h4V8H5v10h4v2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-8 9.4l-2.3 2.3a1 1 0 11-1.4-1.4l4-4a1 1 0 011.4 0l4 4a1 1 0 01-1.4 1.4L13 13.4V20a1 1 0 01-2 0v-6.6z" fill-rule="nonzero"/></svg>', | |
18 | + 'cancel': '<svg width="24" height="24"><path d="M12 4.6a7.4 7.4 0 110 14.8 7.4 7.4 0 010-14.8zM12 3a9 9 0 100 18 9 9 0 000-18zm0 8L14.8 8l1 1.1-2.7 2.8 2.7 2.7-1.1 1.1-2.7-2.7-2.7 2.7-1-1.1 2.6-2.7-2.7-2.7 1-1.1 2.8 2.7z" fill-rule="nonzero"/></svg>', | |
19 | + 'change-case': '<svg width="24" height="24"><path d="M18.4 18.2v-.6c-.5.8-1.3 1.2-2.4 1.2-2.2 0-3.3-1.6-3.3-4.8 0-3.1 1-4.7 3.3-4.7 1.1 0 1.8.3 2.4 1.1v-.6c0-.5.4-.8.8-.8s.8.3.8.8v8.4c0 .5-.4.8-.8.8a.8.8 0 01-.8-.8zm-2-7.4c-1.3 0-1.8.9-1.8 3.2 0 2.4.5 3.3 1.7 3.3 1.3 0 1.8-.9 1.8-3.2 0-2.4-.5-3.3-1.7-3.3zM10 15.7H5.5l-.8 2.6a1 1 0 01-1 .7h-.2a.7.7 0 01-.7-1l4-12a1 1 0 012 0l4 12a.7.7 0 01-.8 1h-.2a1 1 0 01-1-.7l-.8-2.6zm-.3-1.5l-2-6.5-1.9 6.5h3.9z" fill-rule="evenodd"/></svg>', | |
20 | + 'character-count': '<svg width="24" height="24"><path d="M4 11.5h16v1H4v-1zm4.8-6.8V10H7.7V5.8h-1v-1h2zM11 8.3V9h2v1h-3V7.7l2-1v-.9h-2v-1h3v2.4l-2 1zm6.3-3.4V10h-3.1V9h2.1V8h-2.1V6.8h2.1v-1h-2.1v-1h3.1zM5.8 16.4c0-.5.2-.8.5-1 .2-.2.6-.3 1.2-.3l.8.1c.2 0 .4.2.5.3l.4.4v2.8l.2.3H8.2v-.1-.2l-.6.3H7c-.4 0-.7 0-1-.2a1 1 0 01-.3-.9c0-.3 0-.6.3-.8.3-.2.7-.4 1.2-.4l.6-.2h.3v-.2l-.1-.2a.8.8 0 00-.5-.1 1 1 0 00-.4 0l-.3.4h-1zm2.3.8h-.2l-.2.1-.4.1a1 1 0 00-.4.2l-.2.2.1.3.5.1h.4l.4-.4v-.6zm2-3.4h1.2v1.7l.5-.3h.5c.5 0 .9.1 1.2.5.3.4.5.8.5 1.4 0 .6-.2 1.1-.5 1.5-.3.4-.7.6-1.3.6l-.6-.1-.4-.4v.4h-1.1v-5.4zm1.1 3.3c0 .3 0 .6.2.8a.7.7 0 001.2 0l.2-.8c0-.4 0-.6-.2-.8a.7.7 0 00-.6-.3l-.6.3-.2.8zm6.1-.5c0-.2 0-.3-.2-.4a.8.8 0 00-.5-.2c-.3 0-.5.1-.6.3l-.2.9c0 .3 0 .6.2.8.1.2.3.3.6.3.2 0 .4 0 .5-.2l.2-.4h1.1c0 .5-.3.8-.6 1.1a2 2 0 01-1.3.4c-.5 0-1-.2-1.3-.6a2 2 0 01-.5-1.4c0-.6.1-1.1.5-1.5.3-.4.8-.5 1.4-.5.5 0 1 0 1.2.3.4.3.5.7.5 1.2h-1v-.1z" fill-rule="evenodd"/></svg>', | |
21 | + 'checklist-rtl': '<svg width="24" height="24"><path d="M5 17h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm14.2 11c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 8c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8z" fill-rule="evenodd"/></svg>', | |
22 | + 'checklist': '<svg width="24" height="24"><path d="M11 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8a1 1 0 010 2h-8a1 1 0 010-2zM7.2 16c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 8c-.2.3-.7.4-1 0L3.8 6.9a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8z" fill-rule="evenodd"/></svg>', | |
23 | + 'checkmark': '<svg width="24" height="24"><path d="M18.2 5.4a1 1 0 011.6 1.2l-8 12a1 1 0 01-1.5.1l-5-5a1 1 0 111.4-1.4l4.1 4.1 7.4-11z" fill-rule="nonzero"/></svg>', | |
24 | + 'chevron-down': '<svg width="10" height="10"><path d="M8.7 2.2c.3-.3.8-.3 1 0 .4.4.4.9 0 1.2L5.7 7.8c-.3.3-.9.3-1.2 0L.2 3.4a.8.8 0 010-1.2c.3-.3.8-.3 1.1 0L5 6l3.7-3.8z" fill-rule="nonzero"/></svg>', | |
25 | + 'chevron-left': '<svg width="10" height="10"><path d="M7.8 1.3L4 5l3.8 3.7c.3.3.3.8 0 1-.4.4-.9.4-1.2 0L2.2 5.7a.8.8 0 010-1.2L6.6.2C7 0 7.4 0 7.8.2c.3.3.3.8 0 1.1z" fill-rule="nonzero"/></svg>', | |
26 | + 'chevron-right': '<svg width="10" height="10"><path d="M2.2 1.3a.8.8 0 010-1c.4-.4.9-.4 1.2 0l4.4 4.1c.3.4.3.9 0 1.2L3.4 9.8c-.3.3-.8.3-1.2 0a.8.8 0 010-1.1L6 5 2.2 1.3z" fill-rule="nonzero"/></svg>', | |
27 | + 'chevron-up': '<svg width="10" height="10"><path d="M8.7 7.8L5 4 1.3 7.8c-.3.3-.8.3-1 0a.8.8 0 010-1.2l4.1-4.4c.3-.3.9-.3 1.2 0l4.2 4.4c.3.3.3.9 0 1.2-.3.3-.8.3-1.1 0z" fill-rule="nonzero"/></svg>', | |
28 | + 'close': '<svg width="24" height="24"><path d="M17.3 8.2L13.4 12l3.9 3.8a1 1 0 01-1.5 1.5L12 13.4l-3.8 3.9a1 1 0 01-1.5-1.5l3.9-3.8-3.9-3.8a1 1 0 011.5-1.5l3.8 3.9 3.8-3.9a1 1 0 011.5 1.5z" fill-rule="evenodd"/></svg>', | |
29 | + 'code-sample': '<svg width="24" height="26"><path d="M7.1 11a2.8 2.8 0 01-.8 2 2.8 2.8 0 01.8 2v1.7c0 .3.1.6.4.8.2.3.5.4.8.4.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.7 0-1.4-.3-2-.8-.5-.6-.8-1.3-.8-2V15c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 01-.4-.4v-.8c0-.2.2-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V9.3c0-.7.3-1.4.8-2 .6-.5 1.3-.8 2-.8.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8V11zm9.8 0V9.3c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 01-.4-.4V7c0-.2.1-.4.4-.4.7 0 1.4.3 2 .8.5.6.8 1.3.8 2V11c0 .3.1.6.4.8.2.3.5.4.8.4.2 0 .4.2.4.4v.8c0 .2-.2.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8v1.7c0 .7-.3 1.4-.8 2-.6.5-1.3.8-2 .8a.4.4 0 01-.4-.4v-.8c0-.2.1-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V15a2.8 2.8 0 01.8-2 2.8 2.8 0 01-.8-2zm-3.3-.4c0 .4-.1.8-.5 1.1-.3.3-.7.5-1.1.5-.4 0-.8-.2-1.1-.5-.4-.3-.5-.7-.5-1.1 0-.5.1-.9.5-1.2.3-.3.7-.4 1.1-.4.4 0 .8.1 1.1.4.4.3.5.7.5 1.2zM12 13c.4 0 .8.1 1.1.5.4.3.5.7.5 1.1 0 1-.1 1.6-.5 2a3 3 0 01-1.1 1c-.4.3-.8.4-1.1.4a.5.5 0 01-.5-.5V17a3 3 0 001-.2l.6-.6c-.6 0-1-.2-1.3-.5-.2-.3-.3-.7-.3-1 0-.5.1-1 .5-1.2.3-.4.7-.5 1.1-.5z" fill-rule="evenodd"/></svg>', | |
30 | + 'color-levels': '<svg width="24" height="24"><path d="M17.5 11.4A9 9 0 0118 14c0 .5 0 1-.2 1.4 0 .4-.3.9-.5 1.3a6.2 6.2 0 01-3.7 3 5.7 5.7 0 01-3.2 0A5.9 5.9 0 017.6 18a6.2 6.2 0 01-1.4-2.6 6.7 6.7 0 010-2.8c0-.4.1-.9.3-1.3a13.6 13.6 0 012.3-4A20 20 0 0112 4a26.4 26.4 0 013.2 3.4 18.2 18.2 0 012.3 4zm-2 4.5c.4-.7.5-1.4.5-2a7.3 7.3 0 00-1-3.2c.2.6.2 1.2.2 1.9a4.5 4.5 0 01-1.3 3 5.3 5.3 0 01-2.3 1.5 4.9 4.9 0 01-2 .1 4.3 4.3 0 002.4.8 4 4 0 002-.6 4 4 0 001.5-1.5z" fill-rule="evenodd"/></svg>', | |
31 | + 'color-picker': '<svg width="24" height="24"><path d="M12 3a9 9 0 000 18 1.5 1.5 0 001.1-2.5c-.2-.3-.4-.6-.4-1 0-.8.7-1.5 1.5-1.5H16a5 5 0 005-5c0-4.4-4-8-9-8zm-5.5 9a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm3-4a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm5 0a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm3 4a1.5 1.5 0 110-3 1.5 1.5 0 010 3z" fill-rule="nonzero"/></svg>', | |
32 | + 'color-swatch-remove-color': '<svg width="24" height="24"><path stroke="#000" stroke-width="2" d="M21 3L3 21" fill-rule="evenodd"/></svg>', | |
33 | + 'color-swatch': '<svg width="24" height="24"><rect x="3" y="3" width="18" height="18" rx="1" fill-rule="evenodd"/></svg>', | |
34 | + 'comment-add': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M9 19l3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 00-1 1v10c0 .6.4 1 1 1h4v2zm-2 4v-4H5a3 3 0 01-3-3V6a3 3 0 013-3h14a3 3 0 013 3v10a3 3 0 01-3 3h-6.4L7 23z"/><path d="M13 10h2a1 1 0 010 2h-2v2a1 1 0 01-2 0v-2H9a1 1 0 010-2h2V8a1 1 0 012 0v2z"/></g></svg>', | |
35 | + 'comment': '<svg width="24" height="24"><path fill-rule="nonzero" d="M9 19l3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 00-1 1v10c0 .6.4 1 1 1h4v2zm-2 4v-4H5a3 3 0 01-3-3V6a3 3 0 013-3h14a3 3 0 013 3v10a3 3 0 01-3 3h-6.4L7 23z"/></svg>', | |
36 | + 'contrast': '<svg width="24" height="24"><path d="M12 4a7.8 7.8 0 015.7 2.3A8 8 0 1112 4zm-6 8a6 6 0 006 6V6a6 6 0 00-6 6z" fill-rule="evenodd"/></svg>', | |
37 | + 'copy': '<svg width="24" height="24"><path d="M16 3H6a2 2 0 00-2 2v11h2V5h10V3zm1 4a2 2 0 012 2v10a2 2 0 01-2 2h-7a2 2 0 01-2-2V9c0-1.2.9-2 2-2h7zm0 12V9h-7v10h7z" fill-rule="nonzero"/></svg>', | |
38 | + 'crop': '<svg width="24" height="24"><path d="M17 8v7h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v2c0 .6-.4 1-1 1a1 1 0 01-1-1v-2H7V9H5a1 1 0 110-2h2V5c0-.6.4-1 1-1s1 .4 1 1v2h7l3-3 1 1-3 3zM9 9v5l5-5H9zm1 6h5v-5l-5 5z" fill-rule="evenodd"/></svg>', | |
39 | + 'cut-column': '<svg width="24" height="24"><path fill-rule="evenodd" d="M7.2 4.5c.9 0 1.6.4 2.2 1A3.7 3.7 0 0110.5 8v.5l1 1 4-4 1-.5a3.3 3.3 0 012 0c.4 0 .7.3 1 .5L17 8h4v13h-6V10l-1.5 1.5.5.5v4l-2.5-2.5-1 1v.5c0 .4 0 .8-.3 1.2-.2.5-.4.9-.8 1.2-.6.7-1.3 1-2.2 1-.8.2-1.5 0-2-.6l-.5-.8-.2-1c0-.4 0-.8.3-1.2A3.9 3.9 0 017 12.7c.5-.2 1-.3 1.5-.2l1-1-1-1c-.5 0-1 0-1.5-.2-.5-.1-1-.4-1.4-.9-.4-.3-.6-.7-.8-1.2L4.5 7c0-.4 0-.7.2-1 0-.3.3-.6.5-.8.5-.5 1.2-.8 2-.7zm12.3 5h-3v10h3v-10zM8 13.8h-.3l-.4.2a2.8 2.8 0 00-.7.4v.1a2.8 2.8 0 00-.6.8l-.1.4v.7l.2.5.5.2h.7a2.6 2.6 0 00.8-.3 2.4 2.4 0 00.7-.7 2.5 2.5 0 00.3-.8 1.5 1.5 0 000-.8 1 1 0 00-.2-.4 1 1 0 00-.5-.2H8zm3.5-3.7c-.4 0-.7.1-1 .4-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4s.7-.1 1-.4c.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4zM7 5.8h-.4a1 1 0 00-.5.3 1 1 0 00-.2.5v.7a2.5 2.5 0 00.3.8l.2.3h.1l.4.4.4.2.4.1h.7L9 9l.2-.4a1.6 1.6 0 000-.8 2.6 2.6 0 00-.3-.8A2.5 2.5 0 007.7 6l-.4-.1H7z"/></svg>', | |
40 | + 'cut-row': '<svg width="24" height="24"><path fill-rule="evenodd" d="M22 3v5H9l3 3 2-2h4l-4 4 1 1h.5c.4 0 .8 0 1.2.3.5.2.9.4 1.2.8.7.6 1 1.3 1 2.2.2.8 0 1.5-.6 2l-.8.5-1 .2c-.4 0-.8 0-1.2-.3a3.9 3.9 0 01-2.1-2.2c-.2-.5-.3-1-.2-1.5l-1-1-1 1c0 .5 0 1-.2 1.5-.1.5-.4 1-.9 1.4-.3.4-.7.6-1.2.8l-1.2.3c-.4 0-.7 0-1-.2-.3 0-.6-.3-.8-.5-.5-.5-.8-1.2-.7-2 0-.9.4-1.6 1-2.2A3.7 3.7 0 018.6 14H9l1-1-4-4-.5-1a3.3 3.3 0 010-2c0-.4.3-.7.5-1l2 2V3h14zM8.5 15.3h-.3a2.6 2.6 0 00-.8.4 2.5 2.5 0 00-.9 1.1l-.1.4v.7l.2.5.5.2h.7a2.5 2.5 0 00.8-.3L9 18V18l.4-.4.2-.4.1-.4v-.3-.4a1 1 0 00-.2-.5 1 1 0 00-.4-.2h-.5zm7 0H15a1 1 0 00-.4.3 1 1 0 00-.2.5 1.5 1.5 0 000 .7v.4a2.8 2.8 0 00.5.7h.1a2.8 2.8 0 00.8.6l.4.1h.7l.5-.2.2-.5v-.4-.3a2.6 2.6 0 00-.3-.8 2.4 2.4 0 00-.7-.7 2.5 2.5 0 00-.8-.3h-.3zM12 11.6c-.4 0-.7.1-1 .4-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4s.7-.1 1-.4c.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4zm8.5-7.1h-11v2h11v-2z"/></svg>', | |
41 | + 'cut': '<svg width="24" height="24"><path d="M18 15c.6.7 1 1.4 1 2.3 0 .8-.2 1.5-.7 2l-.8.5-1 .2c-.4 0-.8 0-1.2-.3a3.9 3.9 0 01-2.1-2.2c-.2-.5-.3-1-.2-1.5l-1-1-1 1c0 .5 0 1-.2 1.5-.1.5-.4 1-.9 1.4-.3.4-.7.6-1.2.8l-1.2.3c-.4 0-.7 0-1-.2-.3 0-.6-.3-.8-.5-.5-.5-.8-1.2-.7-2 0-.9.4-1.6 1-2.2A3.7 3.7 0 018.6 14H9l1-1-4-4-.5-1a3.3 3.3 0 010-2c0-.4.3-.7.5-1l6 6 6-6 .5 1a3.3 3.3 0 010 2c0 .4-.3.7-.5 1l-4 4 1 1h.5c.4 0 .8 0 1.2.3.5.2.9.4 1.2.8zm-8.5 2.2l.1-.4v-.3-.4a1 1 0 00-.2-.5 1 1 0 00-.4-.2 1.6 1.6 0 00-.8 0 2.6 2.6 0 00-.8.3 2.5 2.5 0 00-.9 1.1l-.1.4v.7l.2.5.5.2h.7a2.5 2.5 0 00.8-.3 2.8 2.8 0 001-1zm2.5-2.8c.4 0 .7-.1 1-.4.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4s-.7.1-1 .4c-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4zm5.4 4l.2-.5v-.4-.3a2.6 2.6 0 00-.3-.8 2.4 2.4 0 00-.7-.7 2.5 2.5 0 00-.8-.3 1.5 1.5 0 00-.8 0 1 1 0 00-.4.2 1 1 0 00-.2.5 1.5 1.5 0 000 .7v.4l.3.4.3.4a2.8 2.8 0 00.8.5l.4.1h.7l.5-.2z" fill-rule="evenodd"/></svg>', | |
42 | + 'document-properties': '<svg width="24" height="24"><path d="M14.4 3H7a2 2 0 00-2 2v14c0 1.1.9 2 2 2h10a2 2 0 002-2V7.6L14.4 3zM17 19H7V5h6v4h4v10z" fill-rule="nonzero"/></svg>', | |
43 | + 'drag': '<svg width="24" height="24"><path d="M13 5h2v2h-2V5zm0 4h2v2h-2V9zM9 9h2v2H9V9zm4 4h2v2h-2v-2zm-4 0h2v2H9v-2zm0 4h2v2H9v-2zm4 0h2v2h-2v-2zM9 5h2v2H9V5z" fill-rule="evenodd"/></svg>', | |
44 | + 'duplicate-column': '<svg width="24" height="24"><path d="M17 6v16h-7V6h7zm-2 2h-3v12h3V8zm-2-6v2H8v15H6V2h7z"/></svg>', | |
45 | + 'duplicate-row': '<svg width="24" height="24"><path d="M22 11v7H6v-7h16zm-2 2H8v3h12v-3zm-1-6v2H4v5H2V7h17z"/></svg>', | |
46 | + 'duplicate': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M16 3v2H6v11H4V5c0-1.1.9-2 2-2h10zm3 8h-2V9h-7v10h9a2 2 0 01-2 2h-7a2 2 0 01-2-2V9c0-1.2.9-2 2-2h7a2 2 0 012 2v2z"/><path d="M17 14h1a1 1 0 010 2h-1v1a1 1 0 01-2 0v-1h-1a1 1 0 010-2h1v-1a1 1 0 012 0v1z"/></g></svg>', | |
47 | + 'edit-block': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19.8 8.8l-9.4 9.4c-.2.2-.5.4-.9.4l-5.4 1.2 1.2-5.4.5-.8 9.4-9.4c.7-.7 1.8-.7 2.5 0l2.1 2.1c.7.7.7 1.8 0 2.5zm-2-.2l1-.9v-.3l-2.2-2.2a.3.3 0 00-.3 0l-1 1L18 8.5zm-1 1l-2.5-2.4-6 6 2.5 2.5 6-6zm-7 7.1l-2.6-2.4-.3.3-.1.2-.7 3 3.1-.6h.1l.4-.5z"/></svg>', | |
48 | + 'edit-image': '<svg width="24" height="24"><path d="M18 16h2V7a2 2 0 00-2-2H7v2h11v9zM6 17h15a1 1 0 010 2h-1v1a1 1 0 01-2 0v-1H6a2 2 0 01-2-2V7H3a1 1 0 110-2h1V4a1 1 0 112 0v13zm3-5.3l1.3 2 3-4.7 3.7 6H7l2-3.3z" fill-rule="nonzero"/></svg>', | |
49 | + 'embed-page': '<svg width="24" height="24"><path d="M19 6V5H5v14h2A13 13 0 0119 6zm0 1.4c-.8.8-1.6 2.4-2.2 4.6H19V7.4zm0 5.6h-2.4c-.4 1.8-.6 3.8-.6 6h3v-6zm-4 6c0-2.2.2-4.2.6-6H13c-.7 1.8-1.1 3.8-1.1 6h3zm-4 0c0-2.2.4-4.2 1-6H9.6A12 12 0 008 19h3zM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm11.8 9c.4-1.9 1-3.4 1.8-4.5a9.2 9.2 0 00-4 4.5h2.2zm-3.4 0a12 12 0 012.8-4 12 12 0 00-5 4h2.2z" fill-rule="nonzero"/></svg>', | |
50 | + 'embed': '<svg width="24" height="24"><path d="M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm1 2v14h14V5H5zm4.8 2.6l5.6 4a.5.5 0 010 .8l-5.6 4A.5.5 0 019 16V8a.5.5 0 01.8-.4z" fill-rule="nonzero"/></svg>', | |
51 | + 'emoji': '<svg width="24" height="24"><path d="M9 11c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 00-1 1c0 .6.4 1 1 1zm6 0c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 00-1 1c0 .6.4 1 1 1zm-3 5.5c2.1 0 4-1.5 4.4-3.5H7.6c.5 2 2.3 3.5 4.4 3.5zM12 4a8 8 0 100 16 8 8 0 000-16zm0 14.5a6.5 6.5 0 110-13 6.5 6.5 0 010 13z" fill-rule="nonzero"/></svg>', | |
52 | + 'export': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M14.4 3L18 7v1h-5V5H7v14h9a1 1 0 012 0c0 1-.8 2-1.9 2H7c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2h7.5z"/><path d="M18.1 12c.5 0 .9.4.9 1 0 .5-.3 1-.8 1h-7.3c-.5 0-.9-.4-.9-1 0-.5.3-1 .8-1h7.3z"/><path d="M16.4 9.2a1 1 0 011.4.2l2.4 3.6-2.4 3.6a1 1 0 01-1.7-1v-.2l1.7-2.4-1.6-2.4a1 1 0 01.2-1.4z"/></g></svg>', | |
53 | + 'fill': '<svg width="24" height="26"><path d="M16.6 12l-9-9-1.4 1.4 2.4 2.4-5.2 5.1c-.5.6-.5 1.6 0 2.2L9 19.6a1.5 1.5 0 002.2 0l5.5-5.5c.5-.6.5-1.6 0-2.2zM5.2 13L10 8.2l4.8 4.8H5.2zM19 14.5s-2 2.2-2 3.5c0 1.1.9 2 2 2a2 2 0 002-2c0-1.3-2-3.5-2-3.5z" fill-rule="nonzero"/></svg>', | |
54 | + 'flip-horizontally': '<svg width="24" height="24"><path d="M14 19h2v-2h-2v2zm4-8h2V9h-2v2zM4 7v10c0 1.1.9 2 2 2h3v-2H6V7h3V5H6a2 2 0 00-2 2zm14-2v2h2a2 2 0 00-2-2zm-7 16h2V3h-2v18zm7-6h2v-2h-2v2zm-4-8h2V5h-2v2zm4 12a2 2 0 002-2h-2v2z" fill-rule="nonzero"/></svg>', | |
55 | + 'flip-vertically': '<svg width="24" height="24"><path d="M5 14v2h2v-2H5zm8 4v2h2v-2h-2zm4-14H7a2 2 0 00-2 2v3h2V6h10v3h2V6a2 2 0 00-2-2zm2 14h-2v2a2 2 0 002-2zM3 11v2h18v-2H3zm6 7v2h2v-2H9zm8-4v2h2v-2h-2zM5 18c0 1.1.9 2 2 2v-2H5z" fill-rule="nonzero"/></svg>', | |
56 | + 'format-painter': '<svg width="24" height="24"><path d="M18 5V4c0-.5-.4-1-1-1H5a1 1 0 00-1 1v4c0 .6.5 1 1 1h12c.6 0 1-.4 1-1V7h1v4H9v9c0 .6.4 1 1 1h2c.6 0 1-.4 1-1v-7h8V5h-3z" fill-rule="nonzero"/></svg>', | |
57 | + 'format': '<svg width="24" height="24"><path fill-rule="evenodd" d="M17 5a1 1 0 010 2h-4v11a1 1 0 01-2 0V7H7a1 1 0 110-2h10z"/></svg>', | |
58 | + 'fullscreen': '<svg width="24" height="24"><path d="M15.3 10l-1.2-1.3 2.9-3h-2.3a.9.9 0 110-1.7H19c.5 0 .9.4.9.9v4.4a.9.9 0 11-1.8 0V7l-2.9 3zm0 4l3 3v-2.3a.9.9 0 111.7 0V19c0 .5-.4.9-.9.9h-4.4a.9.9 0 110-1.8H17l-3-2.9 1.3-1.2zM10 15.4l-2.9 3h2.3a.9.9 0 110 1.7H5a.9.9 0 01-.9-.9v-4.4a.9.9 0 111.8 0V17l2.9-3 1.2 1.3zM8.7 10L5.7 7v2.3a.9.9 0 01-1.7 0V5c0-.5.4-.9.9-.9h4.4a.9.9 0 010 1.8H7l3 2.9-1.3 1.2z" fill-rule="nonzero"/></svg>', | |
59 | + 'gallery': '<svg width="24" height="24"><path fill-rule="nonzero" d="M5 15.7l2.3-2.2c.3-.3.7-.3 1 0L11 16l5.1-5c.3-.4.8-.4 1 0l2 1.9V8H5v7.7zM5 18V19h3l1.8-1.9-2-2L5 17.9zm14-3l-2.5-2.4-6.4 6.5H19v-4zM4 6h16c.6 0 1 .4 1 1v13c0 .6-.4 1-1 1H4a1 1 0 01-1-1V7c0-.6.4-1 1-1zm6 7a2 2 0 110-4 2 2 0 010 4zM4.5 4h15a.5.5 0 110 1h-15a.5.5 0 010-1zm2-2h11a.5.5 0 110 1h-11a.5.5 0 010-1z"/></svg>', | |
60 | + 'gamma': '<svg width="24" height="24"><path d="M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm1 2v14h14V5H5zm6.5 11.8V14L9.2 8.7a5.1 5.1 0 00-.4-.8l-.1-.2H8 8v-1l.3-.1.3-.1h.7a1 1 0 01.6.5l.1.3a8.5 8.5 0 01.3.6l1.9 4.6 2-5.2a1 1 0 011-.6.5.5 0 01.5.6L13 14v2.8a.7.7 0 01-1.4 0z" fill-rule="nonzero"/></svg>', | |
61 | + 'help': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M12 5.5a6.5 6.5 0 00-6 9 6.3 6.3 0 001.4 2l1 1a6.3 6.3 0 003.6 1 6.5 6.5 0 006-9 6.3 6.3 0 00-1.4-2l-1-1a6.3 6.3 0 00-3.6-1zM12 4a7.8 7.8 0 015.7 2.3A8 8 0 1112 4z"/><path d="M9.6 9.7a.7.7 0 01-.7-.8c0-1.1 1.5-1.8 3.2-1.8 1.8 0 3.2.8 3.2 2.4 0 1.4-.4 2.1-1.5 2.8-.2 0-.3.1-.3.2a2 2 0 00-.8.8.8.8 0 01-1.4-.6c.3-.7.8-1 1.3-1.5l.4-.2c.7-.4.8-.6.8-1.5 0-.5-.6-.9-1.7-.9-.5 0-1 .1-1.4.3-.2 0-.3.1-.3.2v-.2c0 .4-.4.8-.8.8z" fill-rule="nonzero"/><circle cx="12" cy="16" r="1"/></g></svg>', | |
62 | + 'highlight-bg-color': '<svg width="24" height="24"><g fill-rule="evenodd"><path id="tox-icon-highlight-bg-color__color" d="M3 18h18v3H3z"/><path fill-rule="nonzero" d="M7.7 16.7H3l3.3-3.3-.7-.8L10.2 8l4 4.1-4 4.2c-.2.2-.6.2-.8 0l-.6-.7-1.1 1.1zm5-7.5L11 7.4l3-2.9a2 2 0 012.6 0L18 6c.7.7.7 2 0 2.7l-2.9 2.9-1.8-1.8-.5-.6"/></g></svg>', | |
63 | + 'home': '<svg width="24" height="24"><path fill-rule="nonzero" d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"/></svg>', | |
64 | + 'horizontal-rule': '<svg width="24" height="24"><path d="M4 11h16v2H4z" fill-rule="evenodd"/></svg>', | |
65 | + 'image-options': '<svg width="24" height="24"><path d="M6 10a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm12 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm-6 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2z" fill-rule="nonzero"/></svg>', | |
66 | + 'image': '<svg width="24" height="24"><path d="M5 15.7l3.3-3.2c.3-.3.7-.3 1 0L12 15l4.1-4c.3-.4.8-.4 1 0l2 1.9V5H5v10.7zM5 18V19h3l2.8-2.9-2-2L5 17.9zm14-3l-2.5-2.4-6.4 6.5H19v-4zM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm6 8a2 2 0 100-4 2 2 0 000 4z" fill-rule="nonzero"/></svg>', | |
67 | + 'indent': '<svg width="24" height="24"><path d="M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 110-2zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm-5 4h12a1 1 0 010 2H7a1 1 0 010-2zm-2.6-3.8L6.2 12l-1.8-1.2a1 1 0 011.2-1.6l3 2a1 1 0 010 1.6l-3 2a1 1 0 11-1.2-1.6z" fill-rule="evenodd"/></svg>', | |
68 | + 'info': '<svg width="24" height="24"><path d="M12 4a7.8 7.8 0 015.7 2.3A8 8 0 1112 4zm-1 3v2h2V7h-2zm3 10v-1h-1v-5h-3v1h1v4h-1v1h4z" fill-rule="evenodd"/></svg>', | |
69 | + 'insert-character': '<svg width="24" height="24"><path d="M15 18h4l1-2v4h-6v-3.3l1.4-1a6 6 0 001.8-2.9 6.3 6.3 0 00-.1-4.1 5.8 5.8 0 00-3-3.2c-.6-.3-1.3-.5-2.1-.5a5.1 5.1 0 00-3.9 1.8 6.3 6.3 0 00-1.3 6 6.2 6.2 0 001.8 3l1.4.9V20H4v-4l1 2h4v-.5l-2-1L5.4 15A6.5 6.5 0 014 11c0-1 .2-1.9.6-2.7A7 7 0 016.3 6C7.1 5.4 8 5 9 4.5c1-.3 2-.5 3.1-.5a8.8 8.8 0 015.7 2 7 7 0 011.7 2.3 6 6 0 01.2 4.8c-.2.7-.6 1.3-1 1.9a7.6 7.6 0 01-3.6 2.5v.5z" fill-rule="evenodd"/></svg>', | |
70 | + 'insert-time': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M12 19a7 7 0 100-14 7 7 0 000 14zm0 2a9 9 0 110-18 9 9 0 010 18z"/><path d="M16 12h-3V7c0-.6-.4-1-1-1a1 1 0 00-1 1v7h5c.6 0 1-.4 1-1s-.4-1-1-1z"/></g></svg>', | |
71 | + 'invert': '<svg width="24" height="24"><path d="M18 19.3L16.5 18a5.8 5.8 0 01-3.1 1.9 6.1 6.1 0 01-5.5-1.6A5.8 5.8 0 016 14v-.3l.1-1.2A13.9 13.9 0 017.7 9l-3-3 .7-.8 2.8 2.9 9 8.9 1.5 1.6-.7.6zm0-5.5v.3l-.1 1.1-.4 1-1.2-1.2a4.3 4.3 0 00.2-1v-.2c0-.4 0-.8-.2-1.3l-.5-1.4a14.8 14.8 0 00-3-4.2L12 6a26.1 26.1 0 00-2.2 2.5l-1-1a20.9 20.9 0 012.9-3.3L12 4l1 .8a22.2 22.2 0 014 5.4c.6 1.2 1 2.4 1 3.6z" fill-rule="evenodd"/></svg>', | |
72 | + 'italic': '<svg width="24" height="24"><path d="M16.7 4.7l-.1.9h-.3c-.6 0-1 0-1.4.3-.3.3-.4.6-.5 1.1l-2.1 9.8v.6c0 .5.4.8 1.4.8h.2l-.2.8H8l.2-.8h.2c1.1 0 1.8-.5 2-1.5l2-9.8.1-.5c0-.6-.4-.8-1.4-.8h-.3l.2-.9h5.8z" fill-rule="evenodd"/></svg>', | |
73 | + 'line-height': '<svg width="24" height="24"><path d="M21 5a1 1 0 01.1 2H13a1 1 0 01-.1-2H21zm0 4a1 1 0 01.1 2H13a1 1 0 01-.1-2H21zm0 4a1 1 0 01.1 2H13a1 1 0 01-.1-2H21zm0 4a1 1 0 01.1 2H13a1 1 0 01-.1-2H21zM7 3.6l3.7 3.7a1 1 0 01-1.3 1.5h-.1L8 7.3v9.2l1.3-1.3a1 1 0 011.3 0h.1c.4.4.4 1 0 1.3v.1L7 20.4l-3.7-3.7a1 1 0 011.3-1.5h.1L6 16.7V7.4L4.7 8.7a1 1 0 01-1.3 0h-.1a1 1 0 010-1.3v-.1L7 3.6z"/></svg>', | |
74 | + 'line': '<svg width="24" height="24"><path d="M15 9l-8 8H4v-3l8-8 3 3zm1-1l-3-3 1-1h1c-.2 0 0 0 0 0l2 2s0 .2 0 0v1l-1 1zM4 18h16v2H4v-2z" fill-rule="evenodd"/></svg>', | |
75 | + 'link': '<svg width="24" height="24"><path d="M6.2 12.3a1 1 0 011.4 1.4l-2.1 2a2 2 0 102.7 2.8l4.8-4.8a1 1 0 000-1.4 1 1 0 111.4-1.3 2.9 2.9 0 010 4L9.6 20a3.9 3.9 0 01-5.5-5.5l2-2zm11.6-.6a1 1 0 01-1.4-1.4l2-2a2 2 0 10-2.6-2.8L11 10.3a1 1 0 000 1.4A1 1 0 119.6 13a2.9 2.9 0 010-4L14.4 4a3.9 3.9 0 015.5 5.5l-2 2z" fill-rule="nonzero"/></svg>', | |
76 | + 'list-bull-circle': '<svg width="48" height="48"><g fill-rule="evenodd"><path d="M11 16a2 2 0 100-4 2 2 0 000 4zm0 1a3 3 0 110-6 3 3 0 010 6zM11 26a2 2 0 100-4 2 2 0 000 4zm0 1a3 3 0 110-6 3 3 0 010 6zM11 36a2 2 0 100-4 2 2 0 000 4zm0 1a3 3 0 110-6 3 3 0 010 6z" fill-rule="nonzero"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>', | |
77 | + 'list-bull-default': '<svg width="48" height="48"><g fill-rule="evenodd"><circle cx="11" cy="14" r="3"/><circle cx="11" cy="24" r="3"/><circle cx="11" cy="34" r="3"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>', | |
78 | + 'list-bull-square': '<svg width="48" height="48"><g fill-rule="evenodd"><path d="M8 11h6v6H8zM8 21h6v6H8zM8 31h6v6H8z"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>', | |
79 | + 'list-num-default-rtl': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M37.4 17v-4.8l-1.6 1v-1.1l1.6-1h1.2V17zM33.3 17.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm1.7 5.7c0-1.2 1-2 2.2-2 1.3 0 2.1.8 2.1 1.8 0 .7-.3 1.2-1.3 2.2l-1.2 1v.2h2.6v1h-4.3v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H35zm-1.7 4.3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm3.2 7.3v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H35c0-1.1 1-1.8 2.2-1.8 1.2 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.7.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .6 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7zm-3.3 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7z"/></g></svg>', | |
80 | + 'list-num-default': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10 17v-4.8l-1.5 1v-1.1l1.6-1h1.2V17h-1.2zm3.6.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm-5 5.7c0-1.2.8-2 2.1-2s2.1.8 2.1 1.8c0 .7-.3 1.2-1.4 2.2l-1.1 1v.2h2.6v1H8.6v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H8.5zm6.3 4.3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM10 34.4v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H8.6c0-1.1 1-1.8 2.2-1.8 1.3 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.8.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .7 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7zm4.7 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7z"/></g></svg>', | |
81 | + 'list-num-lower-alpha-rtl': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M36.5 16c-.9 0-1.5-.5-1.5-1.3s.6-1.3 1.8-1.4h1v-.4c0-.4-.2-.6-.7-.6-.4 0-.7.1-.8.4h-1.1c0-.8.8-1.4 2-1.4S39 12 39 13V16h-1.2v-.6c-.3.4-.8.7-1.4.7zm.4-.8c.6 0 1-.4 1-.9V14h-1c-.5.1-.7.3-.7.6 0 .4.3.6.7.6zM33.1 16.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zM37.7 26c-.7 0-1.2-.2-1.5-.7v.7H35v-6.3h1.2v2.5c.3-.5.8-.9 1.5-.9 1.1 0 1.8 1 1.8 2.4 0 1.5-.7 2.4-1.8 2.4zm-.5-3.6c-.6 0-1 .5-1 1.3s.4 1.4 1 1.4c.7 0 1-.6 1-1.4 0-.8-.3-1.3-1-1.3zM33.2 26.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zm6 7h-1c-.1-.5-.4-.8-1-.8s-1 .5-1 1.4c0 1 .4 1.4 1 1.4.5 0 .9-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7zm-6.1 3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>', | |
82 | + 'list-num-lower-alpha': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10.3 15.2c.5 0 1-.4 1-.9V14h-1c-.5.1-.8.3-.8.6 0 .4.3.6.8.6zm-.4.9c-1 0-1.5-.6-1.5-1.4 0-.8.6-1.3 1.7-1.4h1.1v-.4c0-.4-.2-.6-.7-.6-.5 0-.8.1-.9.4h-1c0-.8.8-1.4 2-1.4 1.1 0 1.8.6 1.8 1.6V16h-1.1v-.6h-.1c-.2.4-.7.7-1.3.7zm4.6 0c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-3.2 10c-.6 0-1.2-.3-1.4-.8v.7H8.5v-6.3H10v2.5c.3-.5.8-.9 1.4-.9 1.2 0 1.9 1 1.9 2.4 0 1.5-.7 2.4-1.9 2.4zm-.4-3.7c-.7 0-1 .5-1 1.3s.3 1.4 1 1.4c.6 0 1-.6 1-1.4 0-.8-.4-1.3-1-1.3zm4 3.7c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-2.2 7h-1.2c0-.5-.4-.8-.9-.8-.6 0-1 .5-1 1.4 0 1 .4 1.4 1 1.4.5 0 .8-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7zm1.8 3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>', | |
83 | + 'list-num-lower-greek-rtl': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M37.4 16c-1.2 0-2-.8-2-2.3 0-1.5.8-2.4 2-2.4.6 0 1 .4 1.3 1v-.9H40v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1-.7h-.2c-.2.4-.7.8-1.3.8zm.3-1c.6 0 1-.5 1-1.3s-.4-1.3-1-1.3-1 .5-1 1.3.4 1.4 1 1.4zM33.3 16.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM36 21.9c0-1.5.8-2.3 2.1-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.9 1.3.9.3 1.3.8 1.3 1.7 0 1.2-.7 1.9-1.8 1.9-.6 0-1.1-.3-1.4-.8v2.2H36V22zm1.8 1.2v-1h.3c.5 0 .9-.2.9-.7 0-.5-.3-.8-.9-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1 1.3s1-.4 1-1-.4-1-1.2-1h-.3zM33.3 26.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM37.1 34.6L34.8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.2.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2zm.7 1a2 2 0 00-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1zM33.3 36.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>', | |
84 | + 'list-num-lower-greek': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10.5 15c.7 0 1-.5 1-1.3s-.3-1.3-1-1.3c-.5 0-.9.5-.9 1.3s.4 1.4 1 1.4zm-.3 1c-1.1 0-1.8-.8-1.8-2.3 0-1.5.7-2.4 1.8-2.4.7 0 1.1.4 1.3 1h.1v-.9h1.2v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1.1-.7h-.1c-.2.4-.7.8-1.4.8zm5 .1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zm-4.9 7v-1h.3c.6 0 1-.2 1-.7 0-.5-.4-.8-1-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1.1 1.3.6 0 1-.4 1-1s-.5-1-1.3-1h-.3zM8.6 22c0-1.5.7-2.3 2-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.8 1.3.8.3 1.3.8 1.3 1.7 0 1.2-.8 1.9-1.9 1.9-.6 0-1.1-.3-1.3-.8v2.2H8.5V22zm6.2 4.2c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm-4.5 8.5L8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.1.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2zm.7 1a2 2 0 00-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1zm4.5.5c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>', | |
85 | + 'list-num-lower-roman-rtl': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M32.9 16v-1.2h-1.3V16H33zm0 10v-1.2h-1.3V26H33zm0 10v-1.2h-1.3V36H33z"/><path fill-rule="nonzero" d="M36 21h-1.5v5H36zM36 31h-1.5v5H36zM39 21h-1.5v5H39zM39 31h-1.5v5H39zM42 31h-1.5v5H42zM36 11h-1.5v5H36zM36 19h-1.5v1H36zM36 29h-1.5v1H36zM39 19h-1.5v1H39zM39 29h-1.5v1H39zM42 29h-1.5v1H42zM36 9h-1.5v1H36z"/></g></svg>', | |
86 | + 'list-num-lower-roman': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M15.1 16v-1.2h1.3V16H15zm0 10v-1.2h1.3V26H15zm0 10v-1.2h1.3V36H15z"/><path fill-rule="nonzero" d="M12 21h1.5v5H12zM12 31h1.5v5H12zM9 21h1.5v5H9zM9 31h1.5v5H9zM6 31h1.5v5H6zM12 11h1.5v5H12zM12 19h1.5v1H12zM12 29h1.5v1H12zM9 19h1.5v1H9zM9 29h1.5v1H9zM6 29h1.5v1H6zM12 9h1.5v1H12z"/></g></svg>', | |
87 | + 'list-num-upper-alpha-rtl': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M39.3 17l-.5-1.4h-2l-.5 1.4H35l2-6h1.6l2 6h-1.3zm-1.6-4.7l-.7 2.3h1.6l-.8-2.3zM33.4 17c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm4.7 9.9h-2.7v-6H38c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7zm-1.4-5v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1zm0 4h1.1c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9h-1.1V26zM33 27.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm4.9 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2zm-4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>', | |
88 | + 'list-num-upper-alpha': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M12.6 17l-.5-1.4h-2L9.5 17H8.3l2-6H12l2 6h-1.3zM11 12.3l-.7 2.3h1.6l-.8-2.3zm4.7 4.8c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zM11.4 27H8.7v-6h2.6c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7zM10 22v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1zm0 4H11c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9H10V26zm5.4 1.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-4.1 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2zm4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>', | |
89 | + 'list-num-upper-roman-rtl': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M31.6 17v-1.2H33V17h-1.3zm0 10v-1.2H33V27h-1.3zm0 10v-1.2H33V37h-1.3z"/><path fill-rule="nonzero" d="M34.5 20H36v7h-1.5zM34.5 30H36v7h-1.5zM37.5 20H39v7h-1.5zM37.5 30H39v7h-1.5zM40.5 30H42v7h-1.5zM34.5 10H36v7h-1.5z"/></g></svg>', | |
90 | + 'list-num-upper-roman': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M15.1 17v-1.2h1.3V17H15zm0 10v-1.2h1.3V27H15zm0 10v-1.2h1.3V37H15z"/><path fill-rule="nonzero" d="M12 20h1.5v7H12zM12 30h1.5v7H12zM9 20h1.5v7H9zM9 30h1.5v7H9zM6 30h1.5v7H6zM12 10h1.5v7H12z"/></g></svg>', | |
91 | + 'lock': '<svg width="24" height="24"><path d="M16.3 11c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H8V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h.3zM10 8v3h4V8a1 1 0 00-.3-.7A1 1 0 0013 7h-2a1 1 0 00-.7.3 1 1 0 00-.3.7z" fill-rule="evenodd"/></svg>', | |
92 | + 'ltr': '<svg width="24" height="24"><path d="M11 5h7a1 1 0 010 2h-1v11a1 1 0 01-2 0V7h-2v11a1 1 0 01-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 017.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L11 5zM4.4 16.2L6.2 15l-1.8-1.2a1 1 0 011.2-1.6l3 2a1 1 0 010 1.6l-3 2a1 1 0 11-1.2-1.6z" fill-rule="evenodd"/></svg>', | |
93 | + 'more-drawer': '<svg width="24" height="24"><path d="M6 10a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm12 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm-6 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2z" fill-rule="nonzero"/></svg>', | |
94 | + 'new-document': '<svg width="24" height="24"><path d="M14.4 3H7a2 2 0 00-2 2v14c0 1.1.9 2 2 2h10a2 2 0 002-2V7.6L14.4 3zM17 19H7V5h6v4h4v10z" fill-rule="nonzero"/></svg>', | |
95 | + 'new-tab': '<svg width="24" height="24"><path d="M15 13l2-2v8H5V7h8l-2 2H7v8h8v-4zm4-8v5.5l-2-2-5.6 5.5H10v-1.4L15.5 7l-2-2H19z" fill-rule="evenodd"/></svg>', | |
96 | + 'non-breaking': '<svg width="24" height="24"><path d="M11 11H8a1 1 0 110-2h3V6c0-.6.4-1 1-1s1 .4 1 1v3h3c.6 0 1 .4 1 1s-.4 1-1 1h-3v3c0 .6-.4 1-1 1a1 1 0 01-1-1v-3zm10 4v5H3v-5c0-.6.4-1 1-1s1 .4 1 1v3h14v-3c0-.6.4-1 1-1s1 .4 1 1z" fill-rule="evenodd"/></svg>', | |
97 | + 'notice': '<svg width="24" height="24"><path d="M17.8 9.8L15.4 4 20 8.5v7L15.5 20h-7L4 15.5v-7L8.5 4h7l2.3 5.8zm0 0l2.2 5.7-2.3-5.8zM13 17v-2h-2v2h2zm0-4V7h-2v6h2z" fill-rule="evenodd"/></svg>', | |
98 | + 'ordered-list-rtl': '<svg width="24" height="24"><path d="M6 17h8a1 1 0 010 2H6a1 1 0 010-2zm0-6h8a1 1 0 010 2H6a1 1 0 010-2zm0-6h8a1 1 0 010 2H6a1 1 0 110-2zm13-1v3.5a.5.5 0 11-1 0V5h-.5a.5.5 0 110-1H19zm-1 8.8l.2.2h1.3a.5.5 0 110 1h-1.6a1 1 0 01-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 00-.2-.2h-1.3a.5.5 0 01-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3zm2 4.2v2c0 .6-.4 1-1 1h-1.5a.5.5 0 010-1h1.2a.3.3 0 100-.6h-1.3a.4.4 0 110-.8h1.3a.3.3 0 000-.6h-1.2a.5.5 0 110-1H19c.6 0 1 .4 1 1z" fill-rule="evenodd"/></svg>', | |
99 | + 'ordered-list': '<svg width="24" height="24"><path d="M10 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 110-2zM6 4v3.5c0 .3-.2.5-.5.5a.5.5 0 01-.5-.5V5h-.5a.5.5 0 010-1H6zm-1 8.8l.2.2h1.3c.3 0 .5.2.5.5s-.2.5-.5.5H4.9a1 1 0 01-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 00-.2-.2H4.5a.5.5 0 01-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3zM7 17v2c0 .6-.4 1-1 1H4.5a.5.5 0 010-1h1.2c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.4a.4.4 0 110-.8h1.3c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.5a.5.5 0 110-1H6c.6 0 1 .4 1 1z" fill-rule="evenodd"/></svg>', | |
100 | + 'orientation': '<svg width="24" height="24"><path d="M7.3 6.4L1 13l6.4 6.5 6.5-6.5-6.5-6.5zM3.7 13l3.6-3.7L11 13l-3.7 3.7-3.6-3.7zM12 6l2.8 2.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0L9.2 5.7a.8.8 0 010-1.2L13.6.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L12 4h1a9 9 0 11-4.3 16.9l1.5-1.5A7 7 0 1013 6h-1z" fill-rule="nonzero"/></svg>', | |
101 | + 'outdent': '<svg width="24" height="24"><path d="M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 110-2zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm-5 4h12a1 1 0 010 2H7a1 1 0 010-2zm1.6-3.8a1 1 0 01-1.2 1.6l-3-2a1 1 0 010-1.6l3-2a1 1 0 011.2 1.6L6.8 12l1.8 1.2z" fill-rule="evenodd"/></svg>', | |
102 | + 'page-break': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M5 11c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1h-1a1 1 0 010-2zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zM7 3v5h10V3c0-.6.4-1 1-1s1 .4 1 1v7H5V3c0-.6.4-1 1-1s1 .4 1 1zM6 22a1 1 0 01-1-1v-7h14v7c0 .6-.4 1-1 1a1 1 0 01-1-1v-5H7v5c0 .6-.4 1-1 1z"/></g></svg>', | |
103 | + 'paragraph': '<svg width="24" height="24"><path fill-rule="evenodd" d="M10 5h7a1 1 0 010 2h-1v11a1 1 0 01-2 0V7h-2v11a1 1 0 01-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 016.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L10 5z"/></svg>', | |
104 | + 'paste-column-after': '<svg width="24" height="24"><path fill-rule="evenodd" d="M12 1a3 3 0 012.8 2H18c1 0 2 .8 2 1.9V7h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h7v2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2H9.2A3 3 0 0112 1zm8 7v12h-6V8h6zm-1.5 1.5h-3v9h3v-9zM12 3a1 1 0 100 2 1 1 0 000-2z"/></svg>', | |
105 | + 'paste-column-before': '<svg width="24" height="24"><path fill-rule="evenodd" d="M12 1a3 3 0 012.8 2H18c1 0 2 .8 2 1.9V18c0 1-.8 2-1.9 2H11v-2h7V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v2H4V5c0-1 .8-2 1.9-2H9.2A3 3 0 0112 1zm-2 7v12H4V8h6zM8.5 9.5h-3v9h3v-9zM12 3a1 1 0 100 2 1 1 0 000-2z"/></svg>', | |
106 | + 'paste-row-after': '<svg width="24" height="24"><path fill-rule="evenodd" d="M12 1a3 3 0 012.8 2H18c1 0 2 .8 2 1.9V11h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h14c0 1-.8 2-1.9 2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2H9.2A3 3 0 0112 1zm10 11v5H8v-5h14zm-1.5 1.5h-11v2h11v-2zM12 3a1 1 0 100 2 1 1 0 000-2z"/></svg>', | |
107 | + 'paste-row-before': '<svg width="24" height="24"><path fill-rule="evenodd" d="M12 1a3 3 0 012.8 2H18c1 0 2 .8 2 1.9V7h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h12v-4h2v4c0 1-.8 2-1.9 2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2H9.2A3 3 0 0112 1zm10 7v5H8V8h14zm-1.5 1.5h-11v2h11v-2zM12 3a1 1 0 100 2 1 1 0 000-2z"/></svg>', | |
108 | + 'paste-text': '<svg width="24" height="24"><path d="M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h3V9h9zM9 20H6a2 2 0 01-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0112 1a3 3 0 012.8 2H18a2 2 0 012 2v4h1v12H9v-1zm1.5-9.5v9h9v-9h-9zM12 3a1 1 0 00-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1zm0 9h6v2h-.5l-.5-1h-1v4h.8v1h-3.6v-1h.8v-4h-1l-.5 1H12v-2z" fill-rule="nonzero"/></svg>', | |
109 | + 'paste': '<svg width="24" height="24"><path d="M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h3V9h9zM9 20H6a2 2 0 01-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0112 1a3 3 0 012.8 2H18a2 2 0 012 2v4h1v12H9v-1zm1.5-9.5v9h9v-9h-9zM12 3a1 1 0 00-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1z" fill-rule="nonzero"/></svg>', | |
110 | + 'permanent-pen': '<svg width="24" height="24"><path d="M10.5 17.5L8 20H3v-3l3.5-3.5a2 2 0 010-3L14 3l1 1-7.3 7.3a1 1 0 000 1.4l3.6 3.6c.4.4 1 .4 1.4 0L20 9l1 1-7.6 7.6a2 2 0 01-2.8 0l-.1-.1z" fill-rule="nonzero"/></svg>', | |
111 | + 'plus': '<svg width="24" height="24"><path d="M12 4c.5 0 1 .4 1 .9V11h6a1 1 0 01.1 2H13v6a1 1 0 01-2 .1V13H5a1 1 0 01-.1-2H11V5c0-.6.4-1 1-1z"/></svg>', | |
112 | + 'preferences': '<svg width="24" height="24"><path d="M20.1 13.5l-1.9.2a5.8 5.8 0 01-.6 1.5l1.2 1.5c.4.4.3 1 0 1.4l-.7.7a1 1 0 01-1.4 0l-1.5-1.2a6.2 6.2 0 01-1.5.6l-.2 1.9c0 .5-.5.9-1 .9h-1a1 1 0 01-1-.9l-.2-1.9a5.8 5.8 0 01-1.5-.6l-1.5 1.2a1 1 0 01-1.4 0l-.7-.7a1 1 0 010-1.4l1.2-1.5a6.2 6.2 0 01-.6-1.5l-1.9-.2a1 1 0 01-.9-1v-1c0-.5.4-1 .9-1l1.9-.2a5.8 5.8 0 01.6-1.5L5.2 7.3a1 1 0 010-1.4l.7-.7a1 1 0 011.4 0l1.5 1.2a6.2 6.2 0 011.5-.6l.2-1.9c0-.5.5-.9 1-.9h1c.5 0 1 .4 1 .9l.2 1.9a5.8 5.8 0 011.5.6l1.5-1.2a1 1 0 011.4 0l.7.7c.3.4.4 1 0 1.4l-1.2 1.5a6.2 6.2 0 01.6 1.5l1.9.2c.5 0 .9.5.9 1v1c0 .5-.4 1-.9 1zM12 15a3 3 0 100-6 3 3 0 000 6z" fill-rule="evenodd"/></svg>', | |
113 | + 'preview': '<svg width="24" height="24"><path d="M3.5 12.5c.5.8 1.1 1.6 1.8 2.3 2 2 4.2 3.2 6.7 3.2s4.7-1.2 6.7-3.2a16.2 16.2 0 002.1-2.8 15.7 15.7 0 00-2.1-2.8c-2-2-4.2-3.2-6.7-3.2a9.3 9.3 0 00-6.7 3.2A16.2 16.2 0 003.2 12c0 .2.2.3.3.5zm-2.4-1l.7-1.2L4 7.8C6.2 5.4 8.9 4 12 4c3 0 5.8 1.4 8.1 3.8a18.2 18.2 0 012.8 3.7v1l-.7 1.2-2.1 2.5c-2.3 2.4-5 3.8-8.1 3.8-3 0-5.8-1.4-8.1-3.8a18.2 18.2 0 01-2.8-3.7 1 1 0 010-1zm12-3.3a2 2 0 102.7 2.6 4 4 0 11-2.6-2.6z" fill-rule="nonzero"/></svg>', | |
114 | + 'print': '<svg width="24" height="24"><path d="M18 8H6a3 3 0 00-3 3v6h2v3h14v-3h2v-6a3 3 0 00-3-3zm-1 10H7v-4h10v4zm.5-5c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm.5-8H6v2h12V5z" fill-rule="nonzero"/></svg>', | |
115 | + 'quote': '<svg width="24" height="24"><path d="M7.5 17h.9c.4 0 .7-.2.9-.6L11 13V8c0-.6-.4-1-1-1H6a1 1 0 00-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 00.8 1.3zm8 0h.9c.4 0 .7-.2.9-.6L19 13V8c0-.6-.4-1-1-1h-4a1 1 0 00-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 00.8 1.3z" fill-rule="nonzero"/></svg>', | |
116 | + 'redo': '<svg width="24" height="24"><path d="M17.6 10H12c-2.8 0-4.4 1.4-4.9 3.5-.4 2 .3 4 1.4 4.6a1 1 0 11-1 1.8c-2-1.2-2.9-4.1-2.3-6.8.6-3 3-5.1 6.8-5.1h5.6l-3.3-3.3a1 1 0 111.4-1.4l5 5a1 1 0 010 1.4l-5 5a1 1 0 01-1.4-1.4l3.3-3.3z" fill-rule="nonzero"/></svg>', | |
117 | + 'reload': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M5 22.1l-1.2-4.7v-.2a1 1 0 011-1l5 .4a1 1 0 11-.2 2l-2.2-.2a7.8 7.8 0 008.4.2 7.5 7.5 0 003.5-6.4 1 1 0 112 0 9.5 9.5 0 01-4.5 8 9.9 9.9 0 01-10.2 0l.4 1.4a1 1 0 11-2 .5zM13.6 7.4c0-.5.5-1 1-.9l2.8.2a8 8 0 00-9.5-1 7.5 7.5 0 00-3.6 7 1 1 0 01-2 0 9.5 9.5 0 014.5-8.6 10 10 0 0110.9.3l-.3-1a1 1 0 012-.5l1.1 4.8a1 1 0 01-1 1.2l-5-.4a1 1 0 01-.9-1z"/></g></svg>', | |
118 | + 'remove-formatting': '<svg width="24" height="24"><path d="M13.2 6a1 1 0 010 .2l-2.6 10a1 1 0 01-1 .8h-.2a.8.8 0 01-.8-1l2.6-10H8a1 1 0 110-2h9a1 1 0 010 2h-3.8zM5 18h7a1 1 0 010 2H5a1 1 0 010-2zm13 1.5L16.5 18 15 19.5a.7.7 0 01-1-1l1.5-1.5-1.5-1.5a.7.7 0 011-1l1.5 1.5 1.5-1.5a.7.7 0 011 1L17.5 17l1.5 1.5a.7.7 0 01-1 1z" fill-rule="evenodd"/></svg>', | |
119 | + 'remove': '<svg width="24" height="24"><path d="M16 7h3a1 1 0 010 2h-1v9a3 3 0 01-3 3H9a3 3 0 01-3-3V9H5a1 1 0 110-2h3V6a3 3 0 013-3h2a3 3 0 013 3v1zm-2 0V6c0-.6-.4-1-1-1h-2a1 1 0 00-1 1v1h4zm2 2H8v9c0 .6.4 1 1 1h6c.6 0 1-.4 1-1V9zm-7 3a1 1 0 012 0v4a1 1 0 01-2 0v-4zm4 0a1 1 0 012 0v4a1 1 0 01-2 0v-4z" fill-rule="nonzero"/></svg>', | |
120 | + 'resize-handle': '<svg width="10" height="10"><g fill-rule="nonzero"><path d="M8.1 1.1A.5.5 0 119 2l-7 7A.5.5 0 111 8l7-7zM8.1 5.1A.5.5 0 119 6l-3 3A.5.5 0 115 8l3-3z"/></g></svg>', | |
121 | + 'resize': '<svg width="24" height="24"><path d="M4 5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h6c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 01-.7.3H7.4L18 16.6V13c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v6c0 .3-.1.5-.3.7a1 1 0 01-.7.3h-6a1 1 0 01-.7-.3 1 1 0 01-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3.6L6 7.4V11c0 .3-.1.5-.3.7a1 1 0 01-.7.3 1 1 0 01-.7-.3A1 1 0 014 11V5z" fill-rule="evenodd"/></svg>', | |
122 | + 'restore-draft': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M17 13c0 .6-.4 1-1 1h-4V8c0-.6.4-1 1-1s1 .4 1 1v4h2c.6 0 1 .4 1 1z"/><path d="M4.7 10H9a1 1 0 010 2H3a1 1 0 01-1-1V5a1 1 0 112 0v3l2.5-2.4a9.2 9.2 0 0110.8-1.5A9 9 0 0113.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 111.3-1.5 7.2 7.2 0 0011.6-3.7 7 7 0 00-3.5-7.7A7.2 7.2 0 008 7L4.7 10z" fill-rule="nonzero"/></g></svg>', | |
123 | + 'rotate-left': '<svg width="24" height="24"><path d="M4.7 10H9a1 1 0 010 2H3a1 1 0 01-1-1V5a1 1 0 112 0v3l2.5-2.4a9.2 9.2 0 0110.8-1.5A9 9 0 0113.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 111.3-1.5 7.2 7.2 0 0011.6-3.7 7 7 0 00-3.5-7.7A7.2 7.2 0 008 7L4.7 10z" fill-rule="nonzero"/></svg>', | |
124 | + 'rotate-right': '<svg width="24" height="24"><path d="M20 8V5a1 1 0 012 0v6c0 .6-.4 1-1 1h-6a1 1 0 010-2h4.3L16 7A7.2 7.2 0 007.7 6a7 7 0 003 13.1c1.9.1 3.7-.5 5-1.7a1 1 0 011.4 1.5A9.2 9.2 0 012.2 14c-.9-3.9 1-8 4.5-9.9 3.5-1.9 8-1.3 10.8 1.5L20 8z" fill-rule="nonzero"/></svg>', | |
125 | + 'rtl': '<svg width="24" height="24"><path d="M8 5h8v2h-2v12h-2V7h-2v12H8v-7c-.5 0-1 0-1.4-.3A3.4 3.4 0 014.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L8 5zm12 11.2a1 1 0 11-1 1.6l-3-2a1 1 0 010-1.6l3-2a1 1 0 111 1.6L18.4 15l1.8 1.2z" fill-rule="evenodd"/></svg>', | |
126 | + 'save': '<svg width="24" height="24"><path d="M5 16h14a2 2 0 012 2v2a2 2 0 01-2 2H5a2 2 0 01-2-2v-2c0-1.1.9-2 2-2zm0 2v2h14v-2H5zm10 0h2v2h-2v-2zm-4-6.4L8.7 9.3a1 1 0 10-1.4 1.4l4 4c.4.4 1 .4 1.4 0l4-4a1 1 0 10-1.4-1.4L13 11.6V4a1 1 0 00-2 0v7.6z" fill-rule="nonzero"/></svg>', | |
127 | + 'search': '<svg width="24" height="24"><path d="M16 17.3a8 8 0 111.4-1.4l4.3 4.4a1 1 0 01-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 100-12 6 6 0 000 12z" fill-rule="nonzero"/></svg>', | |
128 | + 'select-all': '<svg width="24" height="24"><path d="M3 5h2V3a2 2 0 00-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2a2 2 0 00-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8a2 2 0 002-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2zM7 17h10V7H7v10zm2-8h6v6H9V9z" fill-rule="nonzero"/></svg>', | |
129 | + 'selected': '<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6c0-1.1.9-2 2-2zm3.6 10.9L7 12.3a.7.7 0 00-1 1L9.6 17 18 8.6a.7.7 0 000-1 .7.7 0 00-1 0l-7.4 7.3z"/></svg>', | |
130 | + 'settings': '<svg width="24" height="24"><path d="M11 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6V8H5a1 1 0 110-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.5V6zM8 8h2V6H8v2zm9 2.8v.2h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v.3c0 .2 0 .3-.2.5l-.6.2h-2.4c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6V13H5a1 1 0 010-2h8v-.3c0-.2 0-.3.2-.5l.6-.2h2.4c.3 0 .4 0 .6.2l.2.6zM14 13h2v-2h-2v2zm-3 2.8v.2h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6V18H5a1 1 0 010-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.6zM8 18h2v-2H8v2z" fill-rule="evenodd"/></svg>', | |
131 | + 'sharpen': '<svg width="24" height="24"><path d="M16 6l4 4-8 9-8-9 4-4h8zm-4 10.2l5.5-6.2-.1-.1H12v-.3h5.1l-.2-.2H12V9h4.6l-.2-.2H12v-.3h4.1l-.2-.2H12V8h3.6l-.2-.2H8.7L6.5 10l.1.1H12v.3H6.9l.2.2H12v.3H7.3l.2.2H12v.3H7.7l.3.2h4v.3H8.2l.2.2H12v.3H8.6l.3.2H12v.3H9l.3.2H12v.3H9.5l.2.2H12v.3h-2l.2.2H12v.3h-1.6l.2.2H12v.3h-1.1l.2.2h.9v.3h-.7l.2.2h.5v.3h-.3l.3.2z" fill-rule="evenodd"/></svg>', | |
132 | + 'sourcecode': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M9.8 15.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0l-4.4-4.1a.8.8 0 010-1.2l4.4-4.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L6 12l3.8 3.7zM14.2 15.7c-.3.3-.3.8 0 1 .4.4.9.4 1.2 0l4.4-4.1c.3-.3.3-.9 0-1.2l-4.4-4.2a.8.8 0 00-1.2 0c-.3.3-.3.8 0 1.1L18 12l-3.8 3.7z"/></g></svg>', | |
133 | + 'spell-check': '<svg width="24" height="24"><path d="M6 8v3H5V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h2c.3 0 .5.1.7.3.2.2.3.4.3.7v6H8V8H6zm0-3v2h2V5H6zm13 0h-3v5h3v1h-3a1 1 0 01-.7-.3 1 1 0 01-.3-.7V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3v1zm-5 1.5l-.1.7c-.1.2-.3.3-.6.3.3 0 .5.1.6.3l.1.7V10c0 .3-.1.5-.3.7a1 1 0 01-.7.3h-3V4h3c.3 0 .5.1.7.3.2.2.3.4.3.7v1.5zM13 10V8h-2v2h2zm0-3V5h-2v2h2zm3 5l1 1-6.5 7L7 15.5l1.3-1 2.2 2.2L16 12z" fill-rule="evenodd"/></svg>', | |
134 | + 'strike-through': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M15.6 8.5c-.5-.7-1-1.1-1.3-1.3-.6-.4-1.3-.6-2-.6-2.7 0-2.8 1.7-2.8 2.1 0 1.6 1.8 2 3.2 2.3 4.4.9 4.6 2.8 4.6 3.9 0 1.4-.7 4.1-5 4.1A6.2 6.2 0 017 16.4l1.5-1.1c.4.6 1.6 2 3.7 2 1.6 0 2.5-.4 3-1.2.4-.8.3-2-.8-2.6-.7-.4-1.6-.7-2.9-1-1-.2-3.9-.8-3.9-3.6C7.6 6 10.3 5 12.4 5c2.9 0 4.2 1.6 4.7 2.4l-1.5 1.1z"/><path d="M5 11h14a1 1 0 010 2H5a1 1 0 010-2z" fill-rule="nonzero"/></g></svg>', | |
135 | + 'subscript': '<svg width="24" height="24"><path d="M10.4 10l4.6 4.6-1.4 1.4L9 11.4 4.4 16 3 14.6 7.6 10 3 5.4 4.4 4 9 8.6 13.6 4 15 5.4 10.4 10zM21 19h-5v-1l1-.8 1.7-1.6c.3-.4.5-.8.5-1.2 0-.3 0-.6-.2-.7-.2-.2-.5-.3-.9-.3a2 2 0 00-.8.2l-.7.3-.4-1.1 1-.6 1.2-.2c.8 0 1.4.3 1.8.7.4.4.6.9.6 1.5s-.2 1.1-.5 1.6a8 8 0 01-1.3 1.3l-.6.6h2.6V19z" fill-rule="nonzero"/></svg>', | |
136 | + 'superscript': '<svg width="24" height="24"><path d="M15 9.4L10.4 14l4.6 4.6-1.4 1.4L9 15.4 4.4 20 3 18.6 7.6 14 3 9.4 4.4 8 9 12.6 13.6 8 15 9.4zm5.9 1.6h-5v-1l1-.8 1.7-1.6c.3-.5.5-.9.5-1.3 0-.3 0-.5-.2-.7-.2-.2-.5-.3-.9-.3l-.8.2-.7.4-.4-1.2c.2-.2.5-.4 1-.5.3-.2.8-.2 1.2-.2.8 0 1.4.2 1.8.6.4.4.6 1 .6 1.6 0 .5-.2 1-.5 1.5l-1.3 1.4-.6.5h2.6V11z" fill-rule="nonzero"/></svg>', | |
137 | + 'table-cell-properties': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-8 9H5v5h6v-5zm8 0h-6v5h6v-5zm-8-7H5v5h6V6z"/></svg>', | |
138 | + 'table-cell-select-all': '<svg width="24" height="24"><g fill-rule="evenodd"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v12h14V6z"/><path d="M13 6v5h6v2h-6v5h-2v-5H5v-2h6V6h2z" opacity=".2"/></g></svg>', | |
139 | + 'table-cell-select-inner': '<svg width="24" height="24"><g fill-rule="evenodd"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v12h14V6z" opacity=".2"/><path d="M13 6v5h6v2h-6v5h-2v-5H5v-2h6V6h2z"/></g></svg>', | |
140 | + 'table-delete-column': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-4 4h-2V6h-2v2H9V6H5v12h4v-2h2v2h2v-2h2v2h4V6h-4v2zm.3.5l1 1.2-3 2.3 3 2.3-1 1.2L12 13l-3.3 2.6-1-1.2 3-2.3-3-2.3 1-1.2L12 11l3.3-2.5z"/></svg>', | |
141 | + 'table-delete-row': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v3h2.5v2H5v2h2.5v2H5v3h14v-3h-2.5v-2H19v-2h-2.5V9H19V6zm-4.7 1.8l1.2 1L13 12l2.6 3.3-1.2 1-2.3-3-2.3 3-1.2-1L11 12 8.5 8.7l1.2-1 2.3 3 2.3-3z"/></svg>', | |
142 | + 'table-delete-table': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 6v12h14V6H5z"/><path d="M14.4 8.6l1 1-2.3 2.4 2.3 2.4-1 1-2.4-2.3-2.4 2.3-1-1 2.3-2.4-2.3-2.4 1-1 2.4 2.3z"/></g></svg>', | |
143 | + 'table-insert-column-after': '<svg width="24" height="24"><path fill-rule="nonzero" d="M20 4c.6 0 1 .4 1 1v2a1 1 0 01-2 0V6h-8v12h8v-1a1 1 0 012 0v2c0 .5-.4 1-.9 1H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h15zM9 13H5v5h4v-5zm7-5c.5 0 1 .4 1 .9V11h2a1 1 0 01.1 2H17v2a1 1 0 01-2 .1V13h-2a1 1 0 01-.1-2H15V9c0-.6.4-1 1-1zM9 6H5v5h4V6z"/></svg>', | |
144 | + 'table-insert-column-before': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H4a1 1 0 01-1-1v-2a1 1 0 012 0v1h8V6H5v1a1 1 0 11-2 0V5c0-.6.4-1 1-1h15zm0 9h-4v5h4v-5zM8 8c.5 0 1 .4 1 .9V11h2a1 1 0 01.1 2H9v2a1 1 0 01-2 .1V13H5a1 1 0 01-.1-2H7V9c0-.6.4-1 1-1zm11-2h-4v5h4V6z"/></svg>', | |
145 | + 'table-insert-row-above': '<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4a1 1 0 110 2H5v6h14V6h-1a1 1 0 010-2h2c.6 0 1 .4 1 1v13a2 2 0 01-2 2H5a2 2 0 01-2-2V5c0-.6.4-1 1-1h2zm5 10H5v4h6v-4zm8 0h-6v4h6v-4zM12 3c.5 0 1 .4 1 .9V6h2a1 1 0 010 2h-2v2a1 1 0 01-2 .1V8H9a1 1 0 010-2h2V4c0-.6.4-1 1-1z"/></svg>', | |
146 | + 'table-insert-row-after': '<svg width="24" height="24"><path fill-rule="nonzero" d="M12 13c.5 0 1 .4 1 .9V16h2a1 1 0 01.1 2H13v2a1 1 0 01-2 .1V18H9a1 1 0 01-.1-2H11v-2c0-.6.4-1 1-1zm6 7a1 1 0 010-2h1v-6H5v6h1a1 1 0 010 2H4a1 1 0 01-1-1V6c0-1.1.9-2 2-2h14a2 2 0 012 2v13c0 .5-.4 1-.9 1H18zM11 6H5v4h6V6zm8 0h-6v4h6V6z"/></svg>', | |
147 | + 'table-left-header': '<svg width="24" height="24"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 9h-4v5h4v-5zm-6 0H9v5h4v-5zm0-7H9v5h4V6zm6 0h-4v5h4V6z"/></svg>', | |
148 | + 'table-merge-cells': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 15.5V18h3v-2.5H5zm14-5h-9V18h9v-7.5zM19 6h-4v2.5h4V6zM8 6H5v2.5h3V6zm5 0h-3v2.5h3V6zm-8 7.5h3v-3H5v3z"/></svg>', | |
149 | + 'table-row-properties': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 15v3h6v-3H5zm14 0h-6v3h6v-3zm0-9h-6v3h6V6zM5 9h6V6H5v3z"/></svg>', | |
150 | + 'table-split-cells': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM8 15.5H5V18h3v-2.5zm11-5h-9V18h9v-7.5zm-2.5 1l1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2-2-2 1-1 2 2 2-2zm-8.5-1H5v3h3v-3zM19 6h-4v2.5h4V6zM8 6H5v2.5h3V6zm5 0h-3v2.5h3V6z"/></svg>', | |
151 | + 'table-top-header': '<svg width="24" height="24"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-8 11H5v3h6v-3zm8 0h-6v3h6v-3zm0-5h-6v3h6v-3zM5 13h6v-3H5v3z"/></svg>', | |
152 | + 'table': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 14v4h6v-4H5zm14 0h-6v4h6v-4zm0-6h-6v4h6V8zM5 12h6V8H5v4z"/></svg>', | |
153 | + 'template': '<svg width="24" height="24"><path d="M19 19v-1H5v1h14zM9 16v-4a5 5 0 116 0v4h4a2 2 0 012 2v3H3v-3c0-1.1.9-2 2-2h4zm4 0v-5l.8-.6a3 3 0 10-3.6 0l.8.6v5h2z" fill-rule="nonzero"/></svg>', | |
154 | + 'temporary-placeholder': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M9 7.6V6h2.5V4.5a.5.5 0 111 0V6H15v1.6a8 8 0 11-6 0zm-2.6 5.3a.5.5 0 00.3.6c.3 0 .6 0 .6-.3l.1-.2a5 5 0 013.3-2.8c.3-.1.4-.4.4-.6-.1-.3-.4-.5-.6-.4a6 6 0 00-4.1 3.7z"/><circle cx="14" cy="4" r="1"/><circle cx="12" cy="2" r="1"/><circle cx="10" cy="4" r="1"/></g></svg>', | |
155 | + 'text-color': '<svg width="24" height="24"><g fill-rule="evenodd"><path id="tox-icon-text-color__color" d="M3 18h18v3H3z"/><path d="M8.7 16h-.8a.5.5 0 01-.5-.6l2.7-9c.1-.3.3-.4.5-.4h2.8c.2 0 .4.1.5.4l2.7 9a.5.5 0 01-.5.6h-.8a.5.5 0 01-.4-.4l-.7-2.2c0-.3-.3-.4-.5-.4h-3.4c-.2 0-.4.1-.5.4l-.7 2.2c0 .3-.2.4-.4.4zm2.6-7.6l-.6 2a.5.5 0 00.5.6h1.6a.5.5 0 00.5-.6l-.6-2c0-.3-.3-.4-.5-.4h-.4c-.2 0-.4.1-.5.4z"/></g></svg>', | |
156 | + 'toc': '<svg width="24" height="24"><path d="M5 5c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 110-2zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 110-2zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2zm0-4c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 110-2zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2z" fill-rule="evenodd"/></svg>', | |
157 | + 'translate': '<svg width="24" height="24"><path d="M12.7 14.3l-.3.7-.4.7-2.2-2.2-3.1 3c-.3.4-.8.4-1 0a.7.7 0 010-1l3.1-3A12.4 12.4 0 016.7 9H8a10.1 10.1 0 001.7 2.4c.5-.5 1-1.1 1.4-1.8l.9-2H4.7a.7.7 0 110-1.5h4.4v-.7c0-.4.3-.8.7-.8.4 0 .7.4.7.8v.7H15c.4 0 .8.3.8.7 0 .4-.4.8-.8.8h-1.4a12.3 12.3 0 01-1 2.4 13.5 13.5 0 01-1.7 2.3l1.9 1.8zm4.3-3l2.7 7.3a.5.5 0 01-.4.7 1 1 0 01-1-.7l-.6-1.5h-3.4l-.6 1.5a1 1 0 01-1 .7.5.5 0 01-.4-.7l2.7-7.4a1 1 0 012 0zm-2.2 4.4h2.4L16 12.5l-1.2 3.2z" fill-rule="evenodd"/></svg>', | |
158 | + 'underline': '<svg width="24" height="24"><path d="M16 5c.6 0 1 .4 1 1v5.5a4 4 0 01-.4 1.8l-1 1.4a5.3 5.3 0 01-5.5 1 5 5 0 01-1.6-1c-.5-.4-.8-.9-1.1-1.4a4 4 0 01-.4-1.8V6c0-.6.4-1 1-1s1 .4 1 1v5.5c0 .3 0 .6.2 1l.6.7a3.3 3.3 0 002.2.8 3.4 3.4 0 002.2-.8c.3-.2.4-.5.6-.8l.2-.9V6c0-.6.4-1 1-1zM8 17h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2z" fill-rule="evenodd"/></svg>', | |
159 | + 'undo': '<svg width="24" height="24"><path d="M6.4 8H12c3.7 0 6.2 2 6.8 5.1.6 2.7-.4 5.6-2.3 6.8a1 1 0 01-1-1.8c1.1-.6 1.8-2.7 1.4-4.6-.5-2.1-2.1-3.5-4.9-3.5H6.4l3.3 3.3a1 1 0 11-1.4 1.4l-5-5a1 1 0 010-1.4l5-5a1 1 0 011.4 1.4L6.4 8z" fill-rule="nonzero"/></svg>', | |
160 | + 'unlink': '<svg width="24" height="24"><path d="M6.2 12.3a1 1 0 011.4 1.4l-2 2a2 2 0 102.6 2.8l4.8-4.8a1 1 0 000-1.4 1 1 0 111.4-1.3 2.9 2.9 0 010 4L9.6 20a3.9 3.9 0 01-5.5-5.5l2-2zm11.6-.6a1 1 0 01-1.4-1.4l2.1-2a2 2 0 10-2.7-2.8L11 10.3a1 1 0 000 1.4A1 1 0 119.6 13a2.9 2.9 0 010-4L14.4 4a3.9 3.9 0 015.5 5.5l-2 2zM7.6 6.3a.8.8 0 01-1 1.1L3.3 4.2a.7.7 0 111-1l3.2 3.1zM5.1 8.6a.8.8 0 010 1.5H3a.8.8 0 010-1.5H5zm5-3.5a.8.8 0 01-1.5 0V3a.8.8 0 011.5 0V5zm6 11.8a.8.8 0 011-1l3.2 3.2a.8.8 0 01-1 1L16 17zm-2.2 2a.8.8 0 011.5 0V21a.8.8 0 01-1.5 0V19zm5-3.5a.7.7 0 110-1.5H21a.8.8 0 010 1.5H19z" fill-rule="nonzero"/></svg>', | |
161 | + 'unlock': '<svg width="24" height="24"><path d="M16 5c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h-2V8a1 1 0 00-.3-.7A1 1 0 0016 7h-2a1 1 0 00-.7.3 1 1 0 00-.3.7v3h.3c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H4.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H11V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2z" fill-rule="evenodd"/></svg>', | |
162 | + 'unordered-list': '<svg width="24" height="24"><path d="M11 5h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zM4.5 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1z" fill-rule="evenodd"/></svg>', | |
163 | + 'unselected': '<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6c0-1.1.9-2 2-2zm0 1a1 1 0 00-1 1v12c0 .6.4 1 1 1h12c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H6z"/></svg>', | |
164 | + 'upload': '<svg width="24" height="24"><path d="M18 19v-2a1 1 0 012 0v3c0 .6-.4 1-1 1H5a1 1 0 01-1-1v-3a1 1 0 012 0v2h12zM11 6.4L8.7 8.7a1 1 0 01-1.4-1.4l4-4a1 1 0 011.4 0l4 4a1 1 0 11-1.4 1.4L13 6.4V16a1 1 0 01-2 0V6.4z" fill-rule="nonzero"/></svg>', | |
165 | + 'user': '<svg width="24" height="24"><path d="M12 24a12 12 0 110-24 12 12 0 010 24zm-8.7-5.3a11 11 0 0017.4 0C19.4 16.3 14.6 15 12 15c-2.6 0-7.4 1.3-8.7 3.7zM12 13c2.2 0 4-2 4-4.5S14.2 4 12 4 8 6 8 8.5 9.8 13 12 13z" fill-rule="nonzero"/></svg>', | |
166 | + 'visualblocks': '<svg width="24" height="24"><path d="M9 19v2H7v-2h2zm-4 0v2a2 2 0 01-2-2h2zm8 0v2h-2v-2h2zm8 0a2 2 0 01-2 2v-2h2zm-4 0v2h-2v-2h2zM15 7a1 1 0 010 2v7a1 1 0 01-2 0V9h-1v7a1 1 0 01-2 0v-4a2.5 2.5 0 01-.2-5H15zM5 15v2H3v-2h2zm16 0v2h-2v-2h2zM5 11v2H3v-2h2zm16 0v2h-2v-2h2zM5 7v2H3V7h2zm16 0v2h-2V7h2zM5 3v2H3c0-1.1.9-2 2-2zm8 0v2h-2V3h2zm6 0a2 2 0 012 2h-2V3zM9 3v2H7V3h2zm8 0v2h-2V3h2z" fill-rule="evenodd"/></svg>', | |
167 | + 'visualchars': '<svg width="24" height="24"><path d="M10 5h7a1 1 0 010 2h-1v11a1 1 0 01-2 0V7h-2v11a1 1 0 01-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 016.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L10 5z" fill-rule="evenodd"/></svg>', | |
168 | + 'warning': '<svg width="24" height="24"><path d="M19.8 18.3c.2.5.3.9 0 1.2-.1.3-.5.5-1 .5H5.2c-.5 0-.9-.2-1-.5-.3-.3-.2-.7 0-1.2L11 4.7l.5-.5.5-.2c.2 0 .3 0 .5.2.2 0 .3.3.5.5l6.8 13.6zM12 18c.3 0 .5-.1.7-.3.2-.2.3-.4.3-.7a1 1 0 00-.3-.7 1 1 0 00-.7-.3 1 1 0 00-.7.3 1 1 0 00-.3.7c0 .3.1.5.3.7.2.2.4.3.7.3zm.7-3l.3-4a1 1 0 00-.3-.7 1 1 0 00-.7-.3 1 1 0 00-.7.3 1 1 0 00-.3.7l.3 4h1.4z" fill-rule="evenodd"/></svg>', | |
169 | + 'zoom-in': '<svg width="24" height="24"><path d="M16 17.3a8 8 0 111.4-1.4l4.3 4.4a1 1 0 01-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 100-12 6 6 0 000 12zm-1-9a1 1 0 012 0v6a1 1 0 01-2 0V8zm-2 4a1 1 0 010-2h6a1 1 0 010 2H8z" fill-rule="nonzero"/></svg>', | |
170 | + 'zoom-out': '<svg width="24" height="24"><path d="M16 17.3a8 8 0 111.4-1.4l4.3 4.4a1 1 0 01-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 100-12 6 6 0 000 12zm-3-5a1 1 0 010-2h6a1 1 0 010 2H8z" fill-rule="nonzero"/></svg>', | |
171 | + } | |
172 | +}); | |
\ No newline at end of file | ... | ... |
1 | +tinymce.IconManager.add("default",{icons:{"accessibility-check":'<svg width="24" height="24"><path d="M12 2a2 2 0 012 2 2 2 0 01-2 2 2 2 0 01-2-2c0-1.1.9-2 2-2zm8 7h-5v12c0 .6-.4 1-1 1a1 1 0 01-1-1v-5c0-.6-.4-1-1-1a1 1 0 00-1 1v5c0 .6-.4 1-1 1a1 1 0 01-1-1V9H4a1 1 0 110-2h16c.6 0 1 .4 1 1s-.4 1-1 1z" fill-rule="nonzero"/></svg>',"action-next":'<svg width="24" height="24"><path fill-rule="nonzero" d="M5.7 7.3a1 1 0 00-1.4 1.4l7.7 7.7 7.7-7.7a1 1 0 10-1.4-1.4L12 13.6 5.7 7.3z"/></svg>',"action-prev":'<svg width="24" height="24"><path fill-rule="nonzero" d="M18.3 15.7a1 1 0 001.4-1.4L12 6.6l-7.7 7.7a1 1 0 001.4 1.4L12 9.4l6.3 6.3z"/></svg>',"align-center":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm3 4h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 110-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2zm-3-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>',"align-justify":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>',"align-left":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 4h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>',"align-none":'<svg width="24" height="24"><path d="M14.2 5L13 7H5a1 1 0 110-2h9.2zm4 0h.8a1 1 0 010 2h-2l1.2-2zm-6.4 4l-1.2 2H5a1 1 0 010-2h6.8zm4 0H19a1 1 0 010 2h-4.4l1.2-2zm-6.4 4l-1.2 2H5a1 1 0 010-2h4.4zm4 0H19a1 1 0 010 2h-6.8l1.2-2zM7 17l-1.2 2H5a1 1 0 010-2h2zm4 0h8a1 1 0 010 2H9.8l1.2-2zm5.2-13.5l1.3.7-9.7 16.3-1.3-.7 9.7-16.3z" fill-rule="evenodd"/></svg>',"align-right":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm6 4h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm-6-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>',"arrow-left":'<svg width="24" height="24"><path d="M5.6 13l12 6a1 1 0 001.4-1V6a1 1 0 00-1.4-.9l-12 6a1 1 0 000 1.8z" fill-rule="evenodd"/></svg>',"arrow-right":'<svg width="24" height="24"><path d="M18.5 13l-12 6A1 1 0 015 18V6a1 1 0 011.4-.9l12 6a1 1 0 010 1.8z" fill-rule="evenodd"/></svg>',bold:'<svg width="24" height="24"><path d="M7.8 19c-.3 0-.5 0-.6-.2l-.2-.5V5.7c0-.2 0-.4.2-.5l.6-.2h5c1.5 0 2.7.3 3.5 1 .7.6 1.1 1.4 1.1 2.5a3 3 0 01-.6 1.9c-.4.6-1 1-1.6 1.2.4.1.9.3 1.3.6s.8.7 1 1.2c.4.4.5 1 .5 1.6 0 1.3-.4 2.3-1.3 3-.8.7-2.1 1-3.8 1H7.8zm5-8.3c.6 0 1.2-.1 1.6-.5.4-.3.6-.7.6-1.3 0-1.1-.8-1.7-2.3-1.7H9.3v3.5h3.4zm.5 6c.7 0 1.3-.1 1.7-.4.4-.4.6-.9.6-1.5s-.2-1-.7-1.4c-.4-.3-1-.4-2-.4H9.4v3.8h4z" fill-rule="evenodd"/></svg>',bookmark:'<svg width="24" height="24"><path d="M6 4v17l6-4 6 4V4c0-.6-.4-1-1-1H7a1 1 0 00-1 1z" fill-rule="nonzero"/></svg>',"border-width":'<svg width="24" height="24"><path d="M5 14.8h14a1 1 0 010 2H5a1 1 0 010-2zm-.5 3.7h15c.3 0 .5.2.5.5s-.2.5-.5.5h-15a.5.5 0 110-1zm.5-8.3h14c.6 0 1 .4 1 1v1c0 .5-.4 1-1 1H5a1 1 0 01-1-1v-1c0-.6.4-1 1-1zm0-5.7h14c.6 0 1 .4 1 1v2c0 .6-.4 1-1 1H5a1 1 0 01-1-1v-2c0-.6.4-1 1-1z" fill-rule="evenodd"/></svg>',brightness:'<svg width="24" height="24"><path d="M12 17c.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 01-.7.3 1 1 0 01-.7-.3 1 1 0 01-.3-.7v-1c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3zm0-10a1 1 0 01-.7-.3A1 1 0 0111 6V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 01-.7.3zm7 4c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 01-.7.3h-1a1 1 0 01-.7-.3 1 1 0 01-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1zM7 12c0 .3-.1.5-.3.7a1 1 0 01-.7.3H5a1 1 0 01-.7-.3A1 1 0 014 12c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1c.3 0 .5.1.7.3.2.2.3.4.3.7zm10 3.5l.7.8c.2.1.3.4.3.6 0 .3-.1.6-.3.8a1 1 0 01-.8.3 1 1 0 01-.6-.3l-.8-.7a1 1 0 01-.3-.8c0-.2.1-.5.3-.7a1 1 0 011.4 0zm-10-7l-.7-.8a1 1 0 01-.3-.6c0-.3.1-.6.3-.8.2-.2.5-.3.8-.3.2 0 .5.1.7.3l.7.7c.2.2.3.5.3.8 0 .2-.1.5-.3.7a1 1 0 01-.7.3 1 1 0 01-.8-.3zm10 0a1 1 0 01-.8.3 1 1 0 01-.7-.3 1 1 0 01-.3-.7c0-.3.1-.6.3-.8l.8-.7c.1-.2.4-.3.6-.3.3 0 .6.1.8.3.2.2.3.5.3.8 0 .2-.1.5-.3.7l-.7.7zm-10 7c.2-.2.5-.3.8-.3.2 0 .5.1.7.3a1 1 0 010 1.4l-.8.8a1 1 0 01-.6.3 1 1 0 01-.8-.3 1 1 0 01-.3-.8c0-.2.1-.5.3-.6l.7-.8zM12 8a4 4 0 013.7 2.4 4 4 0 010 3.2A4 4 0 0112 16a4 4 0 01-3.7-2.4 4 4 0 010-3.2A4 4 0 0112 8zm0 6.5c.7 0 1.3-.2 1.8-.7.5-.5.7-1.1.7-1.8s-.2-1.3-.7-1.8c-.5-.5-1.1-.7-1.8-.7s-1.3.2-1.8.7c-.5.5-.7 1.1-.7 1.8s.2 1.3.7 1.8c.5.5 1.1.7 1.8.7z" fill-rule="evenodd"/></svg>',browse:'<svg width="24" height="24"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2h-4v-2h4V8H5v10h4v2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-8 9.4l-2.3 2.3a1 1 0 11-1.4-1.4l4-4a1 1 0 011.4 0l4 4a1 1 0 01-1.4 1.4L13 13.4V20a1 1 0 01-2 0v-6.6z" fill-rule="nonzero"/></svg>',cancel:'<svg width="24" height="24"><path d="M12 4.6a7.4 7.4 0 110 14.8 7.4 7.4 0 010-14.8zM12 3a9 9 0 100 18 9 9 0 000-18zm0 8L14.8 8l1 1.1-2.7 2.8 2.7 2.7-1.1 1.1-2.7-2.7-2.7 2.7-1-1.1 2.6-2.7-2.7-2.7 1-1.1 2.8 2.7z" fill-rule="nonzero"/></svg>',"change-case":'<svg width="24" height="24"><path d="M18.4 18.2v-.6c-.5.8-1.3 1.2-2.4 1.2-2.2 0-3.3-1.6-3.3-4.8 0-3.1 1-4.7 3.3-4.7 1.1 0 1.8.3 2.4 1.1v-.6c0-.5.4-.8.8-.8s.8.3.8.8v8.4c0 .5-.4.8-.8.8a.8.8 0 01-.8-.8zm-2-7.4c-1.3 0-1.8.9-1.8 3.2 0 2.4.5 3.3 1.7 3.3 1.3 0 1.8-.9 1.8-3.2 0-2.4-.5-3.3-1.7-3.3zM10 15.7H5.5l-.8 2.6a1 1 0 01-1 .7h-.2a.7.7 0 01-.7-1l4-12a1 1 0 012 0l4 12a.7.7 0 01-.8 1h-.2a1 1 0 01-1-.7l-.8-2.6zm-.3-1.5l-2-6.5-1.9 6.5h3.9z" fill-rule="evenodd"/></svg>',"character-count":'<svg width="24" height="24"><path d="M4 11.5h16v1H4v-1zm4.8-6.8V10H7.7V5.8h-1v-1h2zM11 8.3V9h2v1h-3V7.7l2-1v-.9h-2v-1h3v2.4l-2 1zm6.3-3.4V10h-3.1V9h2.1V8h-2.1V6.8h2.1v-1h-2.1v-1h3.1zM5.8 16.4c0-.5.2-.8.5-1 .2-.2.6-.3 1.2-.3l.8.1c.2 0 .4.2.5.3l.4.4v2.8l.2.3H8.2v-.1-.2l-.6.3H7c-.4 0-.7 0-1-.2a1 1 0 01-.3-.9c0-.3 0-.6.3-.8.3-.2.7-.4 1.2-.4l.6-.2h.3v-.2l-.1-.2a.8.8 0 00-.5-.1 1 1 0 00-.4 0l-.3.4h-1zm2.3.8h-.2l-.2.1-.4.1a1 1 0 00-.4.2l-.2.2.1.3.5.1h.4l.4-.4v-.6zm2-3.4h1.2v1.7l.5-.3h.5c.5 0 .9.1 1.2.5.3.4.5.8.5 1.4 0 .6-.2 1.1-.5 1.5-.3.4-.7.6-1.3.6l-.6-.1-.4-.4v.4h-1.1v-5.4zm1.1 3.3c0 .3 0 .6.2.8a.7.7 0 001.2 0l.2-.8c0-.4 0-.6-.2-.8a.7.7 0 00-.6-.3l-.6.3-.2.8zm6.1-.5c0-.2 0-.3-.2-.4a.8.8 0 00-.5-.2c-.3 0-.5.1-.6.3l-.2.9c0 .3 0 .6.2.8.1.2.3.3.6.3.2 0 .4 0 .5-.2l.2-.4h1.1c0 .5-.3.8-.6 1.1a2 2 0 01-1.3.4c-.5 0-1-.2-1.3-.6a2 2 0 01-.5-1.4c0-.6.1-1.1.5-1.5.3-.4.8-.5 1.4-.5.5 0 1 0 1.2.3.4.3.5.7.5 1.2h-1v-.1z" fill-rule="evenodd"/></svg>',"checklist-rtl":'<svg width="24" height="24"><path d="M5 17h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm14.2 11c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 8c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8z" fill-rule="evenodd"/></svg>',checklist:'<svg width="24" height="24"><path d="M11 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8a1 1 0 010 2h-8a1 1 0 010-2zM7.2 16c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 8c-.2.3-.7.4-1 0L3.8 6.9a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8z" fill-rule="evenodd"/></svg>',checkmark:'<svg width="24" height="24"><path d="M18.2 5.4a1 1 0 011.6 1.2l-8 12a1 1 0 01-1.5.1l-5-5a1 1 0 111.4-1.4l4.1 4.1 7.4-11z" fill-rule="nonzero"/></svg>',"chevron-down":'<svg width="10" height="10"><path d="M8.7 2.2c.3-.3.8-.3 1 0 .4.4.4.9 0 1.2L5.7 7.8c-.3.3-.9.3-1.2 0L.2 3.4a.8.8 0 010-1.2c.3-.3.8-.3 1.1 0L5 6l3.7-3.8z" fill-rule="nonzero"/></svg>',"chevron-left":'<svg width="10" height="10"><path d="M7.8 1.3L4 5l3.8 3.7c.3.3.3.8 0 1-.4.4-.9.4-1.2 0L2.2 5.7a.8.8 0 010-1.2L6.6.2C7 0 7.4 0 7.8.2c.3.3.3.8 0 1.1z" fill-rule="nonzero"/></svg>',"chevron-right":'<svg width="10" height="10"><path d="M2.2 1.3a.8.8 0 010-1c.4-.4.9-.4 1.2 0l4.4 4.1c.3.4.3.9 0 1.2L3.4 9.8c-.3.3-.8.3-1.2 0a.8.8 0 010-1.1L6 5 2.2 1.3z" fill-rule="nonzero"/></svg>',"chevron-up":'<svg width="10" height="10"><path d="M8.7 7.8L5 4 1.3 7.8c-.3.3-.8.3-1 0a.8.8 0 010-1.2l4.1-4.4c.3-.3.9-.3 1.2 0l4.2 4.4c.3.3.3.9 0 1.2-.3.3-.8.3-1.1 0z" fill-rule="nonzero"/></svg>',close:'<svg width="24" height="24"><path d="M17.3 8.2L13.4 12l3.9 3.8a1 1 0 01-1.5 1.5L12 13.4l-3.8 3.9a1 1 0 01-1.5-1.5l3.9-3.8-3.9-3.8a1 1 0 011.5-1.5l3.8 3.9 3.8-3.9a1 1 0 011.5 1.5z" fill-rule="evenodd"/></svg>',"code-sample":'<svg width="24" height="26"><path d="M7.1 11a2.8 2.8 0 01-.8 2 2.8 2.8 0 01.8 2v1.7c0 .3.1.6.4.8.2.3.5.4.8.4.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.7 0-1.4-.3-2-.8-.5-.6-.8-1.3-.8-2V15c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 01-.4-.4v-.8c0-.2.2-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V9.3c0-.7.3-1.4.8-2 .6-.5 1.3-.8 2-.8.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8V11zm9.8 0V9.3c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 01-.4-.4V7c0-.2.1-.4.4-.4.7 0 1.4.3 2 .8.5.6.8 1.3.8 2V11c0 .3.1.6.4.8.2.3.5.4.8.4.2 0 .4.2.4.4v.8c0 .2-.2.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8v1.7c0 .7-.3 1.4-.8 2-.6.5-1.3.8-2 .8a.4.4 0 01-.4-.4v-.8c0-.2.1-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V15a2.8 2.8 0 01.8-2 2.8 2.8 0 01-.8-2zm-3.3-.4c0 .4-.1.8-.5 1.1-.3.3-.7.5-1.1.5-.4 0-.8-.2-1.1-.5-.4-.3-.5-.7-.5-1.1 0-.5.1-.9.5-1.2.3-.3.7-.4 1.1-.4.4 0 .8.1 1.1.4.4.3.5.7.5 1.2zM12 13c.4 0 .8.1 1.1.5.4.3.5.7.5 1.1 0 1-.1 1.6-.5 2a3 3 0 01-1.1 1c-.4.3-.8.4-1.1.4a.5.5 0 01-.5-.5V17a3 3 0 001-.2l.6-.6c-.6 0-1-.2-1.3-.5-.2-.3-.3-.7-.3-1 0-.5.1-1 .5-1.2.3-.4.7-.5 1.1-.5z" fill-rule="evenodd"/></svg>',"color-levels":'<svg width="24" height="24"><path d="M17.5 11.4A9 9 0 0118 14c0 .5 0 1-.2 1.4 0 .4-.3.9-.5 1.3a6.2 6.2 0 01-3.7 3 5.7 5.7 0 01-3.2 0A5.9 5.9 0 017.6 18a6.2 6.2 0 01-1.4-2.6 6.7 6.7 0 010-2.8c0-.4.1-.9.3-1.3a13.6 13.6 0 012.3-4A20 20 0 0112 4a26.4 26.4 0 013.2 3.4 18.2 18.2 0 012.3 4zm-2 4.5c.4-.7.5-1.4.5-2a7.3 7.3 0 00-1-3.2c.2.6.2 1.2.2 1.9a4.5 4.5 0 01-1.3 3 5.3 5.3 0 01-2.3 1.5 4.9 4.9 0 01-2 .1 4.3 4.3 0 002.4.8 4 4 0 002-.6 4 4 0 001.5-1.5z" fill-rule="evenodd"/></svg>',"color-picker":'<svg width="24" height="24"><path d="M12 3a9 9 0 000 18 1.5 1.5 0 001.1-2.5c-.2-.3-.4-.6-.4-1 0-.8.7-1.5 1.5-1.5H16a5 5 0 005-5c0-4.4-4-8-9-8zm-5.5 9a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm3-4a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm5 0a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm3 4a1.5 1.5 0 110-3 1.5 1.5 0 010 3z" fill-rule="nonzero"/></svg>',"color-swatch-remove-color":'<svg width="24" height="24"><path stroke="#000" stroke-width="2" d="M21 3L3 21" fill-rule="evenodd"/></svg>',"color-swatch":'<svg width="24" height="24"><rect x="3" y="3" width="18" height="18" rx="1" fill-rule="evenodd"/></svg>',"comment-add":'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M9 19l3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 00-1 1v10c0 .6.4 1 1 1h4v2zm-2 4v-4H5a3 3 0 01-3-3V6a3 3 0 013-3h14a3 3 0 013 3v10a3 3 0 01-3 3h-6.4L7 23z"/><path d="M13 10h2a1 1 0 010 2h-2v2a1 1 0 01-2 0v-2H9a1 1 0 010-2h2V8a1 1 0 012 0v2z"/></g></svg>',comment:'<svg width="24" height="24"><path fill-rule="nonzero" d="M9 19l3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 00-1 1v10c0 .6.4 1 1 1h4v2zm-2 4v-4H5a3 3 0 01-3-3V6a3 3 0 013-3h14a3 3 0 013 3v10a3 3 0 01-3 3h-6.4L7 23z"/></svg>',contrast:'<svg width="24" height="24"><path d="M12 4a7.8 7.8 0 015.7 2.3A8 8 0 1112 4zm-6 8a6 6 0 006 6V6a6 6 0 00-6 6z" fill-rule="evenodd"/></svg>',copy:'<svg width="24" height="24"><path d="M16 3H6a2 2 0 00-2 2v11h2V5h10V3zm1 4a2 2 0 012 2v10a2 2 0 01-2 2h-7a2 2 0 01-2-2V9c0-1.2.9-2 2-2h7zm0 12V9h-7v10h7z" fill-rule="nonzero"/></svg>',crop:'<svg width="24" height="24"><path d="M17 8v7h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v2c0 .6-.4 1-1 1a1 1 0 01-1-1v-2H7V9H5a1 1 0 110-2h2V5c0-.6.4-1 1-1s1 .4 1 1v2h7l3-3 1 1-3 3zM9 9v5l5-5H9zm1 6h5v-5l-5 5z" fill-rule="evenodd"/></svg>',"cut-column":'<svg width="24" height="24"><path fill-rule="evenodd" d="M7.2 4.5c.9 0 1.6.4 2.2 1A3.7 3.7 0 0110.5 8v.5l1 1 4-4 1-.5a3.3 3.3 0 012 0c.4 0 .7.3 1 .5L17 8h4v13h-6V10l-1.5 1.5.5.5v4l-2.5-2.5-1 1v.5c0 .4 0 .8-.3 1.2-.2.5-.4.9-.8 1.2-.6.7-1.3 1-2.2 1-.8.2-1.5 0-2-.6l-.5-.8-.2-1c0-.4 0-.8.3-1.2A3.9 3.9 0 017 12.7c.5-.2 1-.3 1.5-.2l1-1-1-1c-.5 0-1 0-1.5-.2-.5-.1-1-.4-1.4-.9-.4-.3-.6-.7-.8-1.2L4.5 7c0-.4 0-.7.2-1 0-.3.3-.6.5-.8.5-.5 1.2-.8 2-.7zm12.3 5h-3v10h3v-10zM8 13.8h-.3l-.4.2a2.8 2.8 0 00-.7.4v.1a2.8 2.8 0 00-.6.8l-.1.4v.7l.2.5.5.2h.7a2.6 2.6 0 00.8-.3 2.4 2.4 0 00.7-.7 2.5 2.5 0 00.3-.8 1.5 1.5 0 000-.8 1 1 0 00-.2-.4 1 1 0 00-.5-.2H8zm3.5-3.7c-.4 0-.7.1-1 .4-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4s.7-.1 1-.4c.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4zM7 5.8h-.4a1 1 0 00-.5.3 1 1 0 00-.2.5v.7a2.5 2.5 0 00.3.8l.2.3h.1l.4.4.4.2.4.1h.7L9 9l.2-.4a1.6 1.6 0 000-.8 2.6 2.6 0 00-.3-.8A2.5 2.5 0 007.7 6l-.4-.1H7z"/></svg>',"cut-row":'<svg width="24" height="24"><path fill-rule="evenodd" d="M22 3v5H9l3 3 2-2h4l-4 4 1 1h.5c.4 0 .8 0 1.2.3.5.2.9.4 1.2.8.7.6 1 1.3 1 2.2.2.8 0 1.5-.6 2l-.8.5-1 .2c-.4 0-.8 0-1.2-.3a3.9 3.9 0 01-2.1-2.2c-.2-.5-.3-1-.2-1.5l-1-1-1 1c0 .5 0 1-.2 1.5-.1.5-.4 1-.9 1.4-.3.4-.7.6-1.2.8l-1.2.3c-.4 0-.7 0-1-.2-.3 0-.6-.3-.8-.5-.5-.5-.8-1.2-.7-2 0-.9.4-1.6 1-2.2A3.7 3.7 0 018.6 14H9l1-1-4-4-.5-1a3.3 3.3 0 010-2c0-.4.3-.7.5-1l2 2V3h14zM8.5 15.3h-.3a2.6 2.6 0 00-.8.4 2.5 2.5 0 00-.9 1.1l-.1.4v.7l.2.5.5.2h.7a2.5 2.5 0 00.8-.3L9 18V18l.4-.4.2-.4.1-.4v-.3-.4a1 1 0 00-.2-.5 1 1 0 00-.4-.2h-.5zm7 0H15a1 1 0 00-.4.3 1 1 0 00-.2.5 1.5 1.5 0 000 .7v.4a2.8 2.8 0 00.5.7h.1a2.8 2.8 0 00.8.6l.4.1h.7l.5-.2.2-.5v-.4-.3a2.6 2.6 0 00-.3-.8 2.4 2.4 0 00-.7-.7 2.5 2.5 0 00-.8-.3h-.3zM12 11.6c-.4 0-.7.1-1 .4-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4s.7-.1 1-.4c.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4zm8.5-7.1h-11v2h11v-2z"/></svg>',cut:'<svg width="24" height="24"><path d="M18 15c.6.7 1 1.4 1 2.3 0 .8-.2 1.5-.7 2l-.8.5-1 .2c-.4 0-.8 0-1.2-.3a3.9 3.9 0 01-2.1-2.2c-.2-.5-.3-1-.2-1.5l-1-1-1 1c0 .5 0 1-.2 1.5-.1.5-.4 1-.9 1.4-.3.4-.7.6-1.2.8l-1.2.3c-.4 0-.7 0-1-.2-.3 0-.6-.3-.8-.5-.5-.5-.8-1.2-.7-2 0-.9.4-1.6 1-2.2A3.7 3.7 0 018.6 14H9l1-1-4-4-.5-1a3.3 3.3 0 010-2c0-.4.3-.7.5-1l6 6 6-6 .5 1a3.3 3.3 0 010 2c0 .4-.3.7-.5 1l-4 4 1 1h.5c.4 0 .8 0 1.2.3.5.2.9.4 1.2.8zm-8.5 2.2l.1-.4v-.3-.4a1 1 0 00-.2-.5 1 1 0 00-.4-.2 1.6 1.6 0 00-.8 0 2.6 2.6 0 00-.8.3 2.5 2.5 0 00-.9 1.1l-.1.4v.7l.2.5.5.2h.7a2.5 2.5 0 00.8-.3 2.8 2.8 0 001-1zm2.5-2.8c.4 0 .7-.1 1-.4.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4s-.7.1-1 .4c-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4zm5.4 4l.2-.5v-.4-.3a2.6 2.6 0 00-.3-.8 2.4 2.4 0 00-.7-.7 2.5 2.5 0 00-.8-.3 1.5 1.5 0 00-.8 0 1 1 0 00-.4.2 1 1 0 00-.2.5 1.5 1.5 0 000 .7v.4l.3.4.3.4a2.8 2.8 0 00.8.5l.4.1h.7l.5-.2z" fill-rule="evenodd"/></svg>',"document-properties":'<svg width="24" height="24"><path d="M14.4 3H7a2 2 0 00-2 2v14c0 1.1.9 2 2 2h10a2 2 0 002-2V7.6L14.4 3zM17 19H7V5h6v4h4v10z" fill-rule="nonzero"/></svg>',drag:'<svg width="24" height="24"><path d="M13 5h2v2h-2V5zm0 4h2v2h-2V9zM9 9h2v2H9V9zm4 4h2v2h-2v-2zm-4 0h2v2H9v-2zm0 4h2v2H9v-2zm4 0h2v2h-2v-2zM9 5h2v2H9V5z" fill-rule="evenodd"/></svg>',"duplicate-column":'<svg width="24" height="24"><path d="M17 6v16h-7V6h7zm-2 2h-3v12h3V8zm-2-6v2H8v15H6V2h7z"/></svg>',"duplicate-row":'<svg width="24" height="24"><path d="M22 11v7H6v-7h16zm-2 2H8v3h12v-3zm-1-6v2H4v5H2V7h17z"/></svg>',duplicate:'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M16 3v2H6v11H4V5c0-1.1.9-2 2-2h10zm3 8h-2V9h-7v10h9a2 2 0 01-2 2h-7a2 2 0 01-2-2V9c0-1.2.9-2 2-2h7a2 2 0 012 2v2z"/><path d="M17 14h1a1 1 0 010 2h-1v1a1 1 0 01-2 0v-1h-1a1 1 0 010-2h1v-1a1 1 0 012 0v1z"/></g></svg>',"edit-block":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19.8 8.8l-9.4 9.4c-.2.2-.5.4-.9.4l-5.4 1.2 1.2-5.4.5-.8 9.4-9.4c.7-.7 1.8-.7 2.5 0l2.1 2.1c.7.7.7 1.8 0 2.5zm-2-.2l1-.9v-.3l-2.2-2.2a.3.3 0 00-.3 0l-1 1L18 8.5zm-1 1l-2.5-2.4-6 6 2.5 2.5 6-6zm-7 7.1l-2.6-2.4-.3.3-.1.2-.7 3 3.1-.6h.1l.4-.5z"/></svg>',"edit-image":'<svg width="24" height="24"><path d="M18 16h2V7a2 2 0 00-2-2H7v2h11v9zM6 17h15a1 1 0 010 2h-1v1a1 1 0 01-2 0v-1H6a2 2 0 01-2-2V7H3a1 1 0 110-2h1V4a1 1 0 112 0v13zm3-5.3l1.3 2 3-4.7 3.7 6H7l2-3.3z" fill-rule="nonzero"/></svg>',"embed-page":'<svg width="24" height="24"><path d="M19 6V5H5v14h2A13 13 0 0119 6zm0 1.4c-.8.8-1.6 2.4-2.2 4.6H19V7.4zm0 5.6h-2.4c-.4 1.8-.6 3.8-.6 6h3v-6zm-4 6c0-2.2.2-4.2.6-6H13c-.7 1.8-1.1 3.8-1.1 6h3zm-4 0c0-2.2.4-4.2 1-6H9.6A12 12 0 008 19h3zM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm11.8 9c.4-1.9 1-3.4 1.8-4.5a9.2 9.2 0 00-4 4.5h2.2zm-3.4 0a12 12 0 012.8-4 12 12 0 00-5 4h2.2z" fill-rule="nonzero"/></svg>',embed:'<svg width="24" height="24"><path d="M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm1 2v14h14V5H5zm4.8 2.6l5.6 4a.5.5 0 010 .8l-5.6 4A.5.5 0 019 16V8a.5.5 0 01.8-.4z" fill-rule="nonzero"/></svg>',emoji:'<svg width="24" height="24"><path d="M9 11c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 00-1 1c0 .6.4 1 1 1zm6 0c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 00-1 1c0 .6.4 1 1 1zm-3 5.5c2.1 0 4-1.5 4.4-3.5H7.6c.5 2 2.3 3.5 4.4 3.5zM12 4a8 8 0 100 16 8 8 0 000-16zm0 14.5a6.5 6.5 0 110-13 6.5 6.5 0 010 13z" fill-rule="nonzero"/></svg>',"export":'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M14.4 3L18 7v1h-5V5H7v14h9a1 1 0 012 0c0 1-.8 2-1.9 2H7c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2h7.5z"/><path d="M18.1 12c.5 0 .9.4.9 1 0 .5-.3 1-.8 1h-7.3c-.5 0-.9-.4-.9-1 0-.5.3-1 .8-1h7.3z"/><path d="M16.4 9.2a1 1 0 011.4.2l2.4 3.6-2.4 3.6a1 1 0 01-1.7-1v-.2l1.7-2.4-1.6-2.4a1 1 0 01.2-1.4z"/></g></svg>',fill:'<svg width="24" height="26"><path d="M16.6 12l-9-9-1.4 1.4 2.4 2.4-5.2 5.1c-.5.6-.5 1.6 0 2.2L9 19.6a1.5 1.5 0 002.2 0l5.5-5.5c.5-.6.5-1.6 0-2.2zM5.2 13L10 8.2l4.8 4.8H5.2zM19 14.5s-2 2.2-2 3.5c0 1.1.9 2 2 2a2 2 0 002-2c0-1.3-2-3.5-2-3.5z" fill-rule="nonzero"/></svg>',"flip-horizontally":'<svg width="24" height="24"><path d="M14 19h2v-2h-2v2zm4-8h2V9h-2v2zM4 7v10c0 1.1.9 2 2 2h3v-2H6V7h3V5H6a2 2 0 00-2 2zm14-2v2h2a2 2 0 00-2-2zm-7 16h2V3h-2v18zm7-6h2v-2h-2v2zm-4-8h2V5h-2v2zm4 12a2 2 0 002-2h-2v2z" fill-rule="nonzero"/></svg>',"flip-vertically":'<svg width="24" height="24"><path d="M5 14v2h2v-2H5zm8 4v2h2v-2h-2zm4-14H7a2 2 0 00-2 2v3h2V6h10v3h2V6a2 2 0 00-2-2zm2 14h-2v2a2 2 0 002-2zM3 11v2h18v-2H3zm6 7v2h2v-2H9zm8-4v2h2v-2h-2zM5 18c0 1.1.9 2 2 2v-2H5z" fill-rule="nonzero"/></svg>',"format-painter":'<svg width="24" height="24"><path d="M18 5V4c0-.5-.4-1-1-1H5a1 1 0 00-1 1v4c0 .6.5 1 1 1h12c.6 0 1-.4 1-1V7h1v4H9v9c0 .6.4 1 1 1h2c.6 0 1-.4 1-1v-7h8V5h-3z" fill-rule="nonzero"/></svg>',format:'<svg width="24" height="24"><path fill-rule="evenodd" d="M17 5a1 1 0 010 2h-4v11a1 1 0 01-2 0V7H7a1 1 0 110-2h10z"/></svg>',fullscreen:'<svg width="24" height="24"><path d="M15.3 10l-1.2-1.3 2.9-3h-2.3a.9.9 0 110-1.7H19c.5 0 .9.4.9.9v4.4a.9.9 0 11-1.8 0V7l-2.9 3zm0 4l3 3v-2.3a.9.9 0 111.7 0V19c0 .5-.4.9-.9.9h-4.4a.9.9 0 110-1.8H17l-3-2.9 1.3-1.2zM10 15.4l-2.9 3h2.3a.9.9 0 110 1.7H5a.9.9 0 01-.9-.9v-4.4a.9.9 0 111.8 0V17l2.9-3 1.2 1.3zM8.7 10L5.7 7v2.3a.9.9 0 01-1.7 0V5c0-.5.4-.9.9-.9h4.4a.9.9 0 010 1.8H7l3 2.9-1.3 1.2z" fill-rule="nonzero"/></svg>',gallery:'<svg width="24" height="24"><path fill-rule="nonzero" d="M5 15.7l2.3-2.2c.3-.3.7-.3 1 0L11 16l5.1-5c.3-.4.8-.4 1 0l2 1.9V8H5v7.7zM5 18V19h3l1.8-1.9-2-2L5 17.9zm14-3l-2.5-2.4-6.4 6.5H19v-4zM4 6h16c.6 0 1 .4 1 1v13c0 .6-.4 1-1 1H4a1 1 0 01-1-1V7c0-.6.4-1 1-1zm6 7a2 2 0 110-4 2 2 0 010 4zM4.5 4h15a.5.5 0 110 1h-15a.5.5 0 010-1zm2-2h11a.5.5 0 110 1h-11a.5.5 0 010-1z"/></svg>',gamma:'<svg width="24" height="24"><path d="M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm1 2v14h14V5H5zm6.5 11.8V14L9.2 8.7a5.1 5.1 0 00-.4-.8l-.1-.2H8 8v-1l.3-.1.3-.1h.7a1 1 0 01.6.5l.1.3a8.5 8.5 0 01.3.6l1.9 4.6 2-5.2a1 1 0 011-.6.5.5 0 01.5.6L13 14v2.8a.7.7 0 01-1.4 0z" fill-rule="nonzero"/></svg>',help:'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M12 5.5a6.5 6.5 0 00-6 9 6.3 6.3 0 001.4 2l1 1a6.3 6.3 0 003.6 1 6.5 6.5 0 006-9 6.3 6.3 0 00-1.4-2l-1-1a6.3 6.3 0 00-3.6-1zM12 4a7.8 7.8 0 015.7 2.3A8 8 0 1112 4z"/><path d="M9.6 9.7a.7.7 0 01-.7-.8c0-1.1 1.5-1.8 3.2-1.8 1.8 0 3.2.8 3.2 2.4 0 1.4-.4 2.1-1.5 2.8-.2 0-.3.1-.3.2a2 2 0 00-.8.8.8.8 0 01-1.4-.6c.3-.7.8-1 1.3-1.5l.4-.2c.7-.4.8-.6.8-1.5 0-.5-.6-.9-1.7-.9-.5 0-1 .1-1.4.3-.2 0-.3.1-.3.2v-.2c0 .4-.4.8-.8.8z" fill-rule="nonzero"/><circle cx="12" cy="16" r="1"/></g></svg>',"highlight-bg-color":'<svg width="24" height="24"><g fill-rule="evenodd"><path id="tox-icon-highlight-bg-color__color" d="M3 18h18v3H3z"/><path fill-rule="nonzero" d="M7.7 16.7H3l3.3-3.3-.7-.8L10.2 8l4 4.1-4 4.2c-.2.2-.6.2-.8 0l-.6-.7-1.1 1.1zm5-7.5L11 7.4l3-2.9a2 2 0 012.6 0L18 6c.7.7.7 2 0 2.7l-2.9 2.9-1.8-1.8-.5-.6"/></g></svg>',home:'<svg width="24" height="24"><path fill-rule="nonzero" d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"/></svg>',"horizontal-rule":'<svg width="24" height="24"><path d="M4 11h16v2H4z" fill-rule="evenodd"/></svg>',"image-options":'<svg width="24" height="24"><path d="M6 10a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm12 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm-6 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2z" fill-rule="nonzero"/></svg>',image:'<svg width="24" height="24"><path d="M5 15.7l3.3-3.2c.3-.3.7-.3 1 0L12 15l4.1-4c.3-.4.8-.4 1 0l2 1.9V5H5v10.7zM5 18V19h3l2.8-2.9-2-2L5 17.9zm14-3l-2.5-2.4-6.4 6.5H19v-4zM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm6 8a2 2 0 100-4 2 2 0 000 4z" fill-rule="nonzero"/></svg>',indent:'<svg width="24" height="24"><path d="M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 110-2zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm-5 4h12a1 1 0 010 2H7a1 1 0 010-2zm-2.6-3.8L6.2 12l-1.8-1.2a1 1 0 011.2-1.6l3 2a1 1 0 010 1.6l-3 2a1 1 0 11-1.2-1.6z" fill-rule="evenodd"/></svg>',info:'<svg width="24" height="24"><path d="M12 4a7.8 7.8 0 015.7 2.3A8 8 0 1112 4zm-1 3v2h2V7h-2zm3 10v-1h-1v-5h-3v1h1v4h-1v1h4z" fill-rule="evenodd"/></svg>',"insert-character":'<svg width="24" height="24"><path d="M15 18h4l1-2v4h-6v-3.3l1.4-1a6 6 0 001.8-2.9 6.3 6.3 0 00-.1-4.1 5.8 5.8 0 00-3-3.2c-.6-.3-1.3-.5-2.1-.5a5.1 5.1 0 00-3.9 1.8 6.3 6.3 0 00-1.3 6 6.2 6.2 0 001.8 3l1.4.9V20H4v-4l1 2h4v-.5l-2-1L5.4 15A6.5 6.5 0 014 11c0-1 .2-1.9.6-2.7A7 7 0 016.3 6C7.1 5.4 8 5 9 4.5c1-.3 2-.5 3.1-.5a8.8 8.8 0 015.7 2 7 7 0 011.7 2.3 6 6 0 01.2 4.8c-.2.7-.6 1.3-1 1.9a7.6 7.6 0 01-3.6 2.5v.5z" fill-rule="evenodd"/></svg>',"insert-time":'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M12 19a7 7 0 100-14 7 7 0 000 14zm0 2a9 9 0 110-18 9 9 0 010 18z"/><path d="M16 12h-3V7c0-.6-.4-1-1-1a1 1 0 00-1 1v7h5c.6 0 1-.4 1-1s-.4-1-1-1z"/></g></svg>',invert:'<svg width="24" height="24"><path d="M18 19.3L16.5 18a5.8 5.8 0 01-3.1 1.9 6.1 6.1 0 01-5.5-1.6A5.8 5.8 0 016 14v-.3l.1-1.2A13.9 13.9 0 017.7 9l-3-3 .7-.8 2.8 2.9 9 8.9 1.5 1.6-.7.6zm0-5.5v.3l-.1 1.1-.4 1-1.2-1.2a4.3 4.3 0 00.2-1v-.2c0-.4 0-.8-.2-1.3l-.5-1.4a14.8 14.8 0 00-3-4.2L12 6a26.1 26.1 0 00-2.2 2.5l-1-1a20.9 20.9 0 012.9-3.3L12 4l1 .8a22.2 22.2 0 014 5.4c.6 1.2 1 2.4 1 3.6z" fill-rule="evenodd"/></svg>',italic:'<svg width="24" height="24"><path d="M16.7 4.7l-.1.9h-.3c-.6 0-1 0-1.4.3-.3.3-.4.6-.5 1.1l-2.1 9.8v.6c0 .5.4.8 1.4.8h.2l-.2.8H8l.2-.8h.2c1.1 0 1.8-.5 2-1.5l2-9.8.1-.5c0-.6-.4-.8-1.4-.8h-.3l.2-.9h5.8z" fill-rule="evenodd"/></svg>',"line-height":'<svg width="24" height="24"><path d="M21 5a1 1 0 01.1 2H13a1 1 0 01-.1-2H21zm0 4a1 1 0 01.1 2H13a1 1 0 01-.1-2H21zm0 4a1 1 0 01.1 2H13a1 1 0 01-.1-2H21zm0 4a1 1 0 01.1 2H13a1 1 0 01-.1-2H21zM7 3.6l3.7 3.7a1 1 0 01-1.3 1.5h-.1L8 7.3v9.2l1.3-1.3a1 1 0 011.3 0h.1c.4.4.4 1 0 1.3v.1L7 20.4l-3.7-3.7a1 1 0 011.3-1.5h.1L6 16.7V7.4L4.7 8.7a1 1 0 01-1.3 0h-.1a1 1 0 010-1.3v-.1L7 3.6z"/></svg>',line:'<svg width="24" height="24"><path d="M15 9l-8 8H4v-3l8-8 3 3zm1-1l-3-3 1-1h1c-.2 0 0 0 0 0l2 2s0 .2 0 0v1l-1 1zM4 18h16v2H4v-2z" fill-rule="evenodd"/></svg>',link:'<svg width="24" height="24"><path d="M6.2 12.3a1 1 0 011.4 1.4l-2.1 2a2 2 0 102.7 2.8l4.8-4.8a1 1 0 000-1.4 1 1 0 111.4-1.3 2.9 2.9 0 010 4L9.6 20a3.9 3.9 0 01-5.5-5.5l2-2zm11.6-.6a1 1 0 01-1.4-1.4l2-2a2 2 0 10-2.6-2.8L11 10.3a1 1 0 000 1.4A1 1 0 119.6 13a2.9 2.9 0 010-4L14.4 4a3.9 3.9 0 015.5 5.5l-2 2z" fill-rule="nonzero"/></svg>',"list-bull-circle":'<svg width="48" height="48"><g fill-rule="evenodd"><path d="M11 16a2 2 0 100-4 2 2 0 000 4zm0 1a3 3 0 110-6 3 3 0 010 6zM11 26a2 2 0 100-4 2 2 0 000 4zm0 1a3 3 0 110-6 3 3 0 010 6zM11 36a2 2 0 100-4 2 2 0 000 4zm0 1a3 3 0 110-6 3 3 0 010 6z" fill-rule="nonzero"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',"list-bull-default":'<svg width="48" height="48"><g fill-rule="evenodd"><circle cx="11" cy="14" r="3"/><circle cx="11" cy="24" r="3"/><circle cx="11" cy="34" r="3"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',"list-bull-square":'<svg width="48" height="48"><g fill-rule="evenodd"><path d="M8 11h6v6H8zM8 21h6v6H8zM8 31h6v6H8z"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',"list-num-default-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M37.4 17v-4.8l-1.6 1v-1.1l1.6-1h1.2V17zM33.3 17.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm1.7 5.7c0-1.2 1-2 2.2-2 1.3 0 2.1.8 2.1 1.8 0 .7-.3 1.2-1.3 2.2l-1.2 1v.2h2.6v1h-4.3v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H35zm-1.7 4.3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm3.2 7.3v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H35c0-1.1 1-1.8 2.2-1.8 1.2 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.7.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .6 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7zm-3.3 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7z"/></g></svg>',"list-num-default":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10 17v-4.8l-1.5 1v-1.1l1.6-1h1.2V17h-1.2zm3.6.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm-5 5.7c0-1.2.8-2 2.1-2s2.1.8 2.1 1.8c0 .7-.3 1.2-1.4 2.2l-1.1 1v.2h2.6v1H8.6v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H8.5zm6.3 4.3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM10 34.4v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H8.6c0-1.1 1-1.8 2.2-1.8 1.3 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.8.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .7 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7zm4.7 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7z"/></g></svg>',"list-num-lower-alpha-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M36.5 16c-.9 0-1.5-.5-1.5-1.3s.6-1.3 1.8-1.4h1v-.4c0-.4-.2-.6-.7-.6-.4 0-.7.1-.8.4h-1.1c0-.8.8-1.4 2-1.4S39 12 39 13V16h-1.2v-.6c-.3.4-.8.7-1.4.7zm.4-.8c.6 0 1-.4 1-.9V14h-1c-.5.1-.7.3-.7.6 0 .4.3.6.7.6zM33.1 16.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zM37.7 26c-.7 0-1.2-.2-1.5-.7v.7H35v-6.3h1.2v2.5c.3-.5.8-.9 1.5-.9 1.1 0 1.8 1 1.8 2.4 0 1.5-.7 2.4-1.8 2.4zm-.5-3.6c-.6 0-1 .5-1 1.3s.4 1.4 1 1.4c.7 0 1-.6 1-1.4 0-.8-.3-1.3-1-1.3zM33.2 26.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zm6 7h-1c-.1-.5-.4-.8-1-.8s-1 .5-1 1.4c0 1 .4 1.4 1 1.4.5 0 .9-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7zm-6.1 3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-alpha":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10.3 15.2c.5 0 1-.4 1-.9V14h-1c-.5.1-.8.3-.8.6 0 .4.3.6.8.6zm-.4.9c-1 0-1.5-.6-1.5-1.4 0-.8.6-1.3 1.7-1.4h1.1v-.4c0-.4-.2-.6-.7-.6-.5 0-.8.1-.9.4h-1c0-.8.8-1.4 2-1.4 1.1 0 1.8.6 1.8 1.6V16h-1.1v-.6h-.1c-.2.4-.7.7-1.3.7zm4.6 0c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-3.2 10c-.6 0-1.2-.3-1.4-.8v.7H8.5v-6.3H10v2.5c.3-.5.8-.9 1.4-.9 1.2 0 1.9 1 1.9 2.4 0 1.5-.7 2.4-1.9 2.4zm-.4-3.7c-.7 0-1 .5-1 1.3s.3 1.4 1 1.4c.6 0 1-.6 1-1.4 0-.8-.4-1.3-1-1.3zm4 3.7c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-2.2 7h-1.2c0-.5-.4-.8-.9-.8-.6 0-1 .5-1 1.4 0 1 .4 1.4 1 1.4.5 0 .8-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7zm1.8 3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-greek-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M37.4 16c-1.2 0-2-.8-2-2.3 0-1.5.8-2.4 2-2.4.6 0 1 .4 1.3 1v-.9H40v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1-.7h-.2c-.2.4-.7.8-1.3.8zm.3-1c.6 0 1-.5 1-1.3s-.4-1.3-1-1.3-1 .5-1 1.3.4 1.4 1 1.4zM33.3 16.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM36 21.9c0-1.5.8-2.3 2.1-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.9 1.3.9.3 1.3.8 1.3 1.7 0 1.2-.7 1.9-1.8 1.9-.6 0-1.1-.3-1.4-.8v2.2H36V22zm1.8 1.2v-1h.3c.5 0 .9-.2.9-.7 0-.5-.3-.8-.9-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1 1.3s1-.4 1-1-.4-1-1.2-1h-.3zM33.3 26.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM37.1 34.6L34.8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.2.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2zm.7 1a2 2 0 00-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1zM33.3 36.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-greek":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10.5 15c.7 0 1-.5 1-1.3s-.3-1.3-1-1.3c-.5 0-.9.5-.9 1.3s.4 1.4 1 1.4zm-.3 1c-1.1 0-1.8-.8-1.8-2.3 0-1.5.7-2.4 1.8-2.4.7 0 1.1.4 1.3 1h.1v-.9h1.2v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1.1-.7h-.1c-.2.4-.7.8-1.4.8zm5 .1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zm-4.9 7v-1h.3c.6 0 1-.2 1-.7 0-.5-.4-.8-1-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1.1 1.3.6 0 1-.4 1-1s-.5-1-1.3-1h-.3zM8.6 22c0-1.5.7-2.3 2-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.8 1.3.8.3 1.3.8 1.3 1.7 0 1.2-.8 1.9-1.9 1.9-.6 0-1.1-.3-1.3-.8v2.2H8.5V22zm6.2 4.2c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm-4.5 8.5L8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.1.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2zm.7 1a2 2 0 00-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1zm4.5.5c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-roman-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M32.9 16v-1.2h-1.3V16H33zm0 10v-1.2h-1.3V26H33zm0 10v-1.2h-1.3V36H33z"/><path fill-rule="nonzero" d="M36 21h-1.5v5H36zM36 31h-1.5v5H36zM39 21h-1.5v5H39zM39 31h-1.5v5H39zM42 31h-1.5v5H42zM36 11h-1.5v5H36zM36 19h-1.5v1H36zM36 29h-1.5v1H36zM39 19h-1.5v1H39zM39 29h-1.5v1H39zM42 29h-1.5v1H42zM36 9h-1.5v1H36z"/></g></svg>',"list-num-lower-roman":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M15.1 16v-1.2h1.3V16H15zm0 10v-1.2h1.3V26H15zm0 10v-1.2h1.3V36H15z"/><path fill-rule="nonzero" d="M12 21h1.5v5H12zM12 31h1.5v5H12zM9 21h1.5v5H9zM9 31h1.5v5H9zM6 31h1.5v5H6zM12 11h1.5v5H12zM12 19h1.5v1H12zM12 29h1.5v1H12zM9 19h1.5v1H9zM9 29h1.5v1H9zM6 29h1.5v1H6zM12 9h1.5v1H12z"/></g></svg>',"list-num-upper-alpha-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M39.3 17l-.5-1.4h-2l-.5 1.4H35l2-6h1.6l2 6h-1.3zm-1.6-4.7l-.7 2.3h1.6l-.8-2.3zM33.4 17c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm4.7 9.9h-2.7v-6H38c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7zm-1.4-5v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1zm0 4h1.1c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9h-1.1V26zM33 27.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm4.9 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2zm-4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-upper-alpha":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M12.6 17l-.5-1.4h-2L9.5 17H8.3l2-6H12l2 6h-1.3zM11 12.3l-.7 2.3h1.6l-.8-2.3zm4.7 4.8c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zM11.4 27H8.7v-6h2.6c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7zM10 22v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1zm0 4H11c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9H10V26zm5.4 1.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-4.1 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2zm4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-upper-roman-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M31.6 17v-1.2H33V17h-1.3zm0 10v-1.2H33V27h-1.3zm0 10v-1.2H33V37h-1.3z"/><path fill-rule="nonzero" d="M34.5 20H36v7h-1.5zM34.5 30H36v7h-1.5zM37.5 20H39v7h-1.5zM37.5 30H39v7h-1.5zM40.5 30H42v7h-1.5zM34.5 10H36v7h-1.5z"/></g></svg>',"list-num-upper-roman":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M15.1 17v-1.2h1.3V17H15zm0 10v-1.2h1.3V27H15zm0 10v-1.2h1.3V37H15z"/><path fill-rule="nonzero" d="M12 20h1.5v7H12zM12 30h1.5v7H12zM9 20h1.5v7H9zM9 30h1.5v7H9zM6 30h1.5v7H6zM12 10h1.5v7H12z"/></g></svg>',lock:'<svg width="24" height="24"><path d="M16.3 11c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H8V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h.3zM10 8v3h4V8a1 1 0 00-.3-.7A1 1 0 0013 7h-2a1 1 0 00-.7.3 1 1 0 00-.3.7z" fill-rule="evenodd"/></svg>',ltr:'<svg width="24" height="24"><path d="M11 5h7a1 1 0 010 2h-1v11a1 1 0 01-2 0V7h-2v11a1 1 0 01-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 017.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L11 5zM4.4 16.2L6.2 15l-1.8-1.2a1 1 0 011.2-1.6l3 2a1 1 0 010 1.6l-3 2a1 1 0 11-1.2-1.6z" fill-rule="evenodd"/></svg>',"more-drawer":'<svg width="24" height="24"><path d="M6 10a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm12 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm-6 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2z" fill-rule="nonzero"/></svg>',"new-document":'<svg width="24" height="24"><path d="M14.4 3H7a2 2 0 00-2 2v14c0 1.1.9 2 2 2h10a2 2 0 002-2V7.6L14.4 3zM17 19H7V5h6v4h4v10z" fill-rule="nonzero"/></svg>',"new-tab":'<svg width="24" height="24"><path d="M15 13l2-2v8H5V7h8l-2 2H7v8h8v-4zm4-8v5.5l-2-2-5.6 5.5H10v-1.4L15.5 7l-2-2H19z" fill-rule="evenodd"/></svg>',"non-breaking":'<svg width="24" height="24"><path d="M11 11H8a1 1 0 110-2h3V6c0-.6.4-1 1-1s1 .4 1 1v3h3c.6 0 1 .4 1 1s-.4 1-1 1h-3v3c0 .6-.4 1-1 1a1 1 0 01-1-1v-3zm10 4v5H3v-5c0-.6.4-1 1-1s1 .4 1 1v3h14v-3c0-.6.4-1 1-1s1 .4 1 1z" fill-rule="evenodd"/></svg>',notice:'<svg width="24" height="24"><path d="M17.8 9.8L15.4 4 20 8.5v7L15.5 20h-7L4 15.5v-7L8.5 4h7l2.3 5.8zm0 0l2.2 5.7-2.3-5.8zM13 17v-2h-2v2h2zm0-4V7h-2v6h2z" fill-rule="evenodd"/></svg>',"ordered-list-rtl":'<svg width="24" height="24"><path d="M6 17h8a1 1 0 010 2H6a1 1 0 010-2zm0-6h8a1 1 0 010 2H6a1 1 0 010-2zm0-6h8a1 1 0 010 2H6a1 1 0 110-2zm13-1v3.5a.5.5 0 11-1 0V5h-.5a.5.5 0 110-1H19zm-1 8.8l.2.2h1.3a.5.5 0 110 1h-1.6a1 1 0 01-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 00-.2-.2h-1.3a.5.5 0 01-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3zm2 4.2v2c0 .6-.4 1-1 1h-1.5a.5.5 0 010-1h1.2a.3.3 0 100-.6h-1.3a.4.4 0 110-.8h1.3a.3.3 0 000-.6h-1.2a.5.5 0 110-1H19c.6 0 1 .4 1 1z" fill-rule="evenodd"/></svg>',"ordered-list":'<svg width="24" height="24"><path d="M10 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 110-2zM6 4v3.5c0 .3-.2.5-.5.5a.5.5 0 01-.5-.5V5h-.5a.5.5 0 010-1H6zm-1 8.8l.2.2h1.3c.3 0 .5.2.5.5s-.2.5-.5.5H4.9a1 1 0 01-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 00-.2-.2H4.5a.5.5 0 01-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3zM7 17v2c0 .6-.4 1-1 1H4.5a.5.5 0 010-1h1.2c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.4a.4.4 0 110-.8h1.3c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.5a.5.5 0 110-1H6c.6 0 1 .4 1 1z" fill-rule="evenodd"/></svg>',orientation:'<svg width="24" height="24"><path d="M7.3 6.4L1 13l6.4 6.5 6.5-6.5-6.5-6.5zM3.7 13l3.6-3.7L11 13l-3.7 3.7-3.6-3.7zM12 6l2.8 2.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0L9.2 5.7a.8.8 0 010-1.2L13.6.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L12 4h1a9 9 0 11-4.3 16.9l1.5-1.5A7 7 0 1013 6h-1z" fill-rule="nonzero"/></svg>',outdent:'<svg width="24" height="24"><path d="M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 110-2zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm-5 4h12a1 1 0 010 2H7a1 1 0 010-2zm1.6-3.8a1 1 0 01-1.2 1.6l-3-2a1 1 0 010-1.6l3-2a1 1 0 011.2 1.6L6.8 12l1.8 1.2z" fill-rule="evenodd"/></svg>',"page-break":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M5 11c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1h-1a1 1 0 010-2zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zM7 3v5h10V3c0-.6.4-1 1-1s1 .4 1 1v7H5V3c0-.6.4-1 1-1s1 .4 1 1zM6 22a1 1 0 01-1-1v-7h14v7c0 .6-.4 1-1 1a1 1 0 01-1-1v-5H7v5c0 .6-.4 1-1 1z"/></g></svg>',paragraph:'<svg width="24" height="24"><path fill-rule="evenodd" d="M10 5h7a1 1 0 010 2h-1v11a1 1 0 01-2 0V7h-2v11a1 1 0 01-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 016.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L10 5z"/></svg>',"paste-column-after":'<svg width="24" height="24"><path fill-rule="evenodd" d="M12 1a3 3 0 012.8 2H18c1 0 2 .8 2 1.9V7h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h7v2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2H9.2A3 3 0 0112 1zm8 7v12h-6V8h6zm-1.5 1.5h-3v9h3v-9zM12 3a1 1 0 100 2 1 1 0 000-2z"/></svg>',"paste-column-before":'<svg width="24" height="24"><path fill-rule="evenodd" d="M12 1a3 3 0 012.8 2H18c1 0 2 .8 2 1.9V18c0 1-.8 2-1.9 2H11v-2h7V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v2H4V5c0-1 .8-2 1.9-2H9.2A3 3 0 0112 1zm-2 7v12H4V8h6zM8.5 9.5h-3v9h3v-9zM12 3a1 1 0 100 2 1 1 0 000-2z"/></svg>',"paste-row-after":'<svg width="24" height="24"><path fill-rule="evenodd" d="M12 1a3 3 0 012.8 2H18c1 0 2 .8 2 1.9V11h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h14c0 1-.8 2-1.9 2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2H9.2A3 3 0 0112 1zm10 11v5H8v-5h14zm-1.5 1.5h-11v2h11v-2zM12 3a1 1 0 100 2 1 1 0 000-2z"/></svg>',"paste-row-before":'<svg width="24" height="24"><path fill-rule="evenodd" d="M12 1a3 3 0 012.8 2H18c1 0 2 .8 2 1.9V7h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h12v-4h2v4c0 1-.8 2-1.9 2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2H9.2A3 3 0 0112 1zm10 7v5H8V8h14zm-1.5 1.5h-11v2h11v-2zM12 3a1 1 0 100 2 1 1 0 000-2z"/></svg>',"paste-text":'<svg width="24" height="24"><path d="M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h3V9h9zM9 20H6a2 2 0 01-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0112 1a3 3 0 012.8 2H18a2 2 0 012 2v4h1v12H9v-1zm1.5-9.5v9h9v-9h-9zM12 3a1 1 0 00-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1zm0 9h6v2h-.5l-.5-1h-1v4h.8v1h-3.6v-1h.8v-4h-1l-.5 1H12v-2z" fill-rule="nonzero"/></svg>',paste:'<svg width="24" height="24"><path d="M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h3V9h9zM9 20H6a2 2 0 01-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0112 1a3 3 0 012.8 2H18a2 2 0 012 2v4h1v12H9v-1zm1.5-9.5v9h9v-9h-9zM12 3a1 1 0 00-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1z" fill-rule="nonzero"/></svg>',"permanent-pen":'<svg width="24" height="24"><path d="M10.5 17.5L8 20H3v-3l3.5-3.5a2 2 0 010-3L14 3l1 1-7.3 7.3a1 1 0 000 1.4l3.6 3.6c.4.4 1 .4 1.4 0L20 9l1 1-7.6 7.6a2 2 0 01-2.8 0l-.1-.1z" fill-rule="nonzero"/></svg>',plus:'<svg width="24" height="24"><path d="M12 4c.5 0 1 .4 1 .9V11h6a1 1 0 01.1 2H13v6a1 1 0 01-2 .1V13H5a1 1 0 01-.1-2H11V5c0-.6.4-1 1-1z"/></svg>',preferences:'<svg width="24" height="24"><path d="M20.1 13.5l-1.9.2a5.8 5.8 0 01-.6 1.5l1.2 1.5c.4.4.3 1 0 1.4l-.7.7a1 1 0 01-1.4 0l-1.5-1.2a6.2 6.2 0 01-1.5.6l-.2 1.9c0 .5-.5.9-1 .9h-1a1 1 0 01-1-.9l-.2-1.9a5.8 5.8 0 01-1.5-.6l-1.5 1.2a1 1 0 01-1.4 0l-.7-.7a1 1 0 010-1.4l1.2-1.5a6.2 6.2 0 01-.6-1.5l-1.9-.2a1 1 0 01-.9-1v-1c0-.5.4-1 .9-1l1.9-.2a5.8 5.8 0 01.6-1.5L5.2 7.3a1 1 0 010-1.4l.7-.7a1 1 0 011.4 0l1.5 1.2a6.2 6.2 0 011.5-.6l.2-1.9c0-.5.5-.9 1-.9h1c.5 0 1 .4 1 .9l.2 1.9a5.8 5.8 0 011.5.6l1.5-1.2a1 1 0 011.4 0l.7.7c.3.4.4 1 0 1.4l-1.2 1.5a6.2 6.2 0 01.6 1.5l1.9.2c.5 0 .9.5.9 1v1c0 .5-.4 1-.9 1zM12 15a3 3 0 100-6 3 3 0 000 6z" fill-rule="evenodd"/></svg>',preview:'<svg width="24" height="24"><path d="M3.5 12.5c.5.8 1.1 1.6 1.8 2.3 2 2 4.2 3.2 6.7 3.2s4.7-1.2 6.7-3.2a16.2 16.2 0 002.1-2.8 15.7 15.7 0 00-2.1-2.8c-2-2-4.2-3.2-6.7-3.2a9.3 9.3 0 00-6.7 3.2A16.2 16.2 0 003.2 12c0 .2.2.3.3.5zm-2.4-1l.7-1.2L4 7.8C6.2 5.4 8.9 4 12 4c3 0 5.8 1.4 8.1 3.8a18.2 18.2 0 012.8 3.7v1l-.7 1.2-2.1 2.5c-2.3 2.4-5 3.8-8.1 3.8-3 0-5.8-1.4-8.1-3.8a18.2 18.2 0 01-2.8-3.7 1 1 0 010-1zm12-3.3a2 2 0 102.7 2.6 4 4 0 11-2.6-2.6z" fill-rule="nonzero"/></svg>',print:'<svg width="24" height="24"><path d="M18 8H6a3 3 0 00-3 3v6h2v3h14v-3h2v-6a3 3 0 00-3-3zm-1 10H7v-4h10v4zm.5-5c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm.5-8H6v2h12V5z" fill-rule="nonzero"/></svg>',quote:'<svg width="24" height="24"><path d="M7.5 17h.9c.4 0 .7-.2.9-.6L11 13V8c0-.6-.4-1-1-1H6a1 1 0 00-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 00.8 1.3zm8 0h.9c.4 0 .7-.2.9-.6L19 13V8c0-.6-.4-1-1-1h-4a1 1 0 00-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 00.8 1.3z" fill-rule="nonzero"/></svg>',redo:'<svg width="24" height="24"><path d="M17.6 10H12c-2.8 0-4.4 1.4-4.9 3.5-.4 2 .3 4 1.4 4.6a1 1 0 11-1 1.8c-2-1.2-2.9-4.1-2.3-6.8.6-3 3-5.1 6.8-5.1h5.6l-3.3-3.3a1 1 0 111.4-1.4l5 5a1 1 0 010 1.4l-5 5a1 1 0 01-1.4-1.4l3.3-3.3z" fill-rule="nonzero"/></svg>',reload:'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M5 22.1l-1.2-4.7v-.2a1 1 0 011-1l5 .4a1 1 0 11-.2 2l-2.2-.2a7.8 7.8 0 008.4.2 7.5 7.5 0 003.5-6.4 1 1 0 112 0 9.5 9.5 0 01-4.5 8 9.9 9.9 0 01-10.2 0l.4 1.4a1 1 0 11-2 .5zM13.6 7.4c0-.5.5-1 1-.9l2.8.2a8 8 0 00-9.5-1 7.5 7.5 0 00-3.6 7 1 1 0 01-2 0 9.5 9.5 0 014.5-8.6 10 10 0 0110.9.3l-.3-1a1 1 0 012-.5l1.1 4.8a1 1 0 01-1 1.2l-5-.4a1 1 0 01-.9-1z"/></g></svg>',"remove-formatting":'<svg width="24" height="24"><path d="M13.2 6a1 1 0 010 .2l-2.6 10a1 1 0 01-1 .8h-.2a.8.8 0 01-.8-1l2.6-10H8a1 1 0 110-2h9a1 1 0 010 2h-3.8zM5 18h7a1 1 0 010 2H5a1 1 0 010-2zm13 1.5L16.5 18 15 19.5a.7.7 0 01-1-1l1.5-1.5-1.5-1.5a.7.7 0 011-1l1.5 1.5 1.5-1.5a.7.7 0 011 1L17.5 17l1.5 1.5a.7.7 0 01-1 1z" fill-rule="evenodd"/></svg>',remove:'<svg width="24" height="24"><path d="M16 7h3a1 1 0 010 2h-1v9a3 3 0 01-3 3H9a3 3 0 01-3-3V9H5a1 1 0 110-2h3V6a3 3 0 013-3h2a3 3 0 013 3v1zm-2 0V6c0-.6-.4-1-1-1h-2a1 1 0 00-1 1v1h4zm2 2H8v9c0 .6.4 1 1 1h6c.6 0 1-.4 1-1V9zm-7 3a1 1 0 012 0v4a1 1 0 01-2 0v-4zm4 0a1 1 0 012 0v4a1 1 0 01-2 0v-4z" fill-rule="nonzero"/></svg>',"resize-handle":'<svg width="10" height="10"><g fill-rule="nonzero"><path d="M8.1 1.1A.5.5 0 119 2l-7 7A.5.5 0 111 8l7-7zM8.1 5.1A.5.5 0 119 6l-3 3A.5.5 0 115 8l3-3z"/></g></svg>',resize:'<svg width="24" height="24"><path d="M4 5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h6c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 01-.7.3H7.4L18 16.6V13c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v6c0 .3-.1.5-.3.7a1 1 0 01-.7.3h-6a1 1 0 01-.7-.3 1 1 0 01-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3.6L6 7.4V11c0 .3-.1.5-.3.7a1 1 0 01-.7.3 1 1 0 01-.7-.3A1 1 0 014 11V5z" fill-rule="evenodd"/></svg>',"restore-draft":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M17 13c0 .6-.4 1-1 1h-4V8c0-.6.4-1 1-1s1 .4 1 1v4h2c.6 0 1 .4 1 1z"/><path d="M4.7 10H9a1 1 0 010 2H3a1 1 0 01-1-1V5a1 1 0 112 0v3l2.5-2.4a9.2 9.2 0 0110.8-1.5A9 9 0 0113.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 111.3-1.5 7.2 7.2 0 0011.6-3.7 7 7 0 00-3.5-7.7A7.2 7.2 0 008 7L4.7 10z" fill-rule="nonzero"/></g></svg>',"rotate-left":'<svg width="24" height="24"><path d="M4.7 10H9a1 1 0 010 2H3a1 1 0 01-1-1V5a1 1 0 112 0v3l2.5-2.4a9.2 9.2 0 0110.8-1.5A9 9 0 0113.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 111.3-1.5 7.2 7.2 0 0011.6-3.7 7 7 0 00-3.5-7.7A7.2 7.2 0 008 7L4.7 10z" fill-rule="nonzero"/></svg>',"rotate-right":'<svg width="24" height="24"><path d="M20 8V5a1 1 0 012 0v6c0 .6-.4 1-1 1h-6a1 1 0 010-2h4.3L16 7A7.2 7.2 0 007.7 6a7 7 0 003 13.1c1.9.1 3.7-.5 5-1.7a1 1 0 011.4 1.5A9.2 9.2 0 012.2 14c-.9-3.9 1-8 4.5-9.9 3.5-1.9 8-1.3 10.8 1.5L20 8z" fill-rule="nonzero"/></svg>',rtl:'<svg width="24" height="24"><path d="M8 5h8v2h-2v12h-2V7h-2v12H8v-7c-.5 0-1 0-1.4-.3A3.4 3.4 0 014.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L8 5zm12 11.2a1 1 0 11-1 1.6l-3-2a1 1 0 010-1.6l3-2a1 1 0 111 1.6L18.4 15l1.8 1.2z" fill-rule="evenodd"/></svg>',save:'<svg width="24" height="24"><path d="M5 16h14a2 2 0 012 2v2a2 2 0 01-2 2H5a2 2 0 01-2-2v-2c0-1.1.9-2 2-2zm0 2v2h14v-2H5zm10 0h2v2h-2v-2zm-4-6.4L8.7 9.3a1 1 0 10-1.4 1.4l4 4c.4.4 1 .4 1.4 0l4-4a1 1 0 10-1.4-1.4L13 11.6V4a1 1 0 00-2 0v7.6z" fill-rule="nonzero"/></svg>',search:'<svg width="24" height="24"><path d="M16 17.3a8 8 0 111.4-1.4l4.3 4.4a1 1 0 01-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 100-12 6 6 0 000 12z" fill-rule="nonzero"/></svg>',"select-all":'<svg width="24" height="24"><path d="M3 5h2V3a2 2 0 00-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2a2 2 0 00-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8a2 2 0 002-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2zM7 17h10V7H7v10zm2-8h6v6H9V9z" fill-rule="nonzero"/></svg>',selected:'<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6c0-1.1.9-2 2-2zm3.6 10.9L7 12.3a.7.7 0 00-1 1L9.6 17 18 8.6a.7.7 0 000-1 .7.7 0 00-1 0l-7.4 7.3z"/></svg>',settings:'<svg width="24" height="24"><path d="M11 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6V8H5a1 1 0 110-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.5V6zM8 8h2V6H8v2zm9 2.8v.2h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v.3c0 .2 0 .3-.2.5l-.6.2h-2.4c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6V13H5a1 1 0 010-2h8v-.3c0-.2 0-.3.2-.5l.6-.2h2.4c.3 0 .4 0 .6.2l.2.6zM14 13h2v-2h-2v2zm-3 2.8v.2h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6V18H5a1 1 0 010-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.6zM8 18h2v-2H8v2z" fill-rule="evenodd"/></svg>',sharpen:'<svg width="24" height="24"><path d="M16 6l4 4-8 9-8-9 4-4h8zm-4 10.2l5.5-6.2-.1-.1H12v-.3h5.1l-.2-.2H12V9h4.6l-.2-.2H12v-.3h4.1l-.2-.2H12V8h3.6l-.2-.2H8.7L6.5 10l.1.1H12v.3H6.9l.2.2H12v.3H7.3l.2.2H12v.3H7.7l.3.2h4v.3H8.2l.2.2H12v.3H8.6l.3.2H12v.3H9l.3.2H12v.3H9.5l.2.2H12v.3h-2l.2.2H12v.3h-1.6l.2.2H12v.3h-1.1l.2.2h.9v.3h-.7l.2.2h.5v.3h-.3l.3.2z" fill-rule="evenodd"/></svg>',sourcecode:'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M9.8 15.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0l-4.4-4.1a.8.8 0 010-1.2l4.4-4.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L6 12l3.8 3.7zM14.2 15.7c-.3.3-.3.8 0 1 .4.4.9.4 1.2 0l4.4-4.1c.3-.3.3-.9 0-1.2l-4.4-4.2a.8.8 0 00-1.2 0c-.3.3-.3.8 0 1.1L18 12l-3.8 3.7z"/></g></svg>',"spell-check":'<svg width="24" height="24"><path d="M6 8v3H5V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h2c.3 0 .5.1.7.3.2.2.3.4.3.7v6H8V8H6zm0-3v2h2V5H6zm13 0h-3v5h3v1h-3a1 1 0 01-.7-.3 1 1 0 01-.3-.7V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3v1zm-5 1.5l-.1.7c-.1.2-.3.3-.6.3.3 0 .5.1.6.3l.1.7V10c0 .3-.1.5-.3.7a1 1 0 01-.7.3h-3V4h3c.3 0 .5.1.7.3.2.2.3.4.3.7v1.5zM13 10V8h-2v2h2zm0-3V5h-2v2h2zm3 5l1 1-6.5 7L7 15.5l1.3-1 2.2 2.2L16 12z" fill-rule="evenodd"/></svg>',"strike-through":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M15.6 8.5c-.5-.7-1-1.1-1.3-1.3-.6-.4-1.3-.6-2-.6-2.7 0-2.8 1.7-2.8 2.1 0 1.6 1.8 2 3.2 2.3 4.4.9 4.6 2.8 4.6 3.9 0 1.4-.7 4.1-5 4.1A6.2 6.2 0 017 16.4l1.5-1.1c.4.6 1.6 2 3.7 2 1.6 0 2.5-.4 3-1.2.4-.8.3-2-.8-2.6-.7-.4-1.6-.7-2.9-1-1-.2-3.9-.8-3.9-3.6C7.6 6 10.3 5 12.4 5c2.9 0 4.2 1.6 4.7 2.4l-1.5 1.1z"/><path d="M5 11h14a1 1 0 010 2H5a1 1 0 010-2z" fill-rule="nonzero"/></g></svg>',subscript:'<svg width="24" height="24"><path d="M10.4 10l4.6 4.6-1.4 1.4L9 11.4 4.4 16 3 14.6 7.6 10 3 5.4 4.4 4 9 8.6 13.6 4 15 5.4 10.4 10zM21 19h-5v-1l1-.8 1.7-1.6c.3-.4.5-.8.5-1.2 0-.3 0-.6-.2-.7-.2-.2-.5-.3-.9-.3a2 2 0 00-.8.2l-.7.3-.4-1.1 1-.6 1.2-.2c.8 0 1.4.3 1.8.7.4.4.6.9.6 1.5s-.2 1.1-.5 1.6a8 8 0 01-1.3 1.3l-.6.6h2.6V19z" fill-rule="nonzero"/></svg>',superscript:'<svg width="24" height="24"><path d="M15 9.4L10.4 14l4.6 4.6-1.4 1.4L9 15.4 4.4 20 3 18.6 7.6 14 3 9.4 4.4 8 9 12.6 13.6 8 15 9.4zm5.9 1.6h-5v-1l1-.8 1.7-1.6c.3-.5.5-.9.5-1.3 0-.3 0-.5-.2-.7-.2-.2-.5-.3-.9-.3l-.8.2-.7.4-.4-1.2c.2-.2.5-.4 1-.5.3-.2.8-.2 1.2-.2.8 0 1.4.2 1.8.6.4.4.6 1 .6 1.6 0 .5-.2 1-.5 1.5l-1.3 1.4-.6.5h2.6V11z" fill-rule="nonzero"/></svg>',"table-cell-properties":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-8 9H5v5h6v-5zm8 0h-6v5h6v-5zm-8-7H5v5h6V6z"/></svg>',"table-cell-select-all":'<svg width="24" height="24"><g fill-rule="evenodd"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v12h14V6z"/><path d="M13 6v5h6v2h-6v5h-2v-5H5v-2h6V6h2z" opacity=".2"/></g></svg>',"table-cell-select-inner":'<svg width="24" height="24"><g fill-rule="evenodd"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v12h14V6z" opacity=".2"/><path d="M13 6v5h6v2h-6v5h-2v-5H5v-2h6V6h2z"/></g></svg>',"table-delete-column":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-4 4h-2V6h-2v2H9V6H5v12h4v-2h2v2h2v-2h2v2h4V6h-4v2zm.3.5l1 1.2-3 2.3 3 2.3-1 1.2L12 13l-3.3 2.6-1-1.2 3-2.3-3-2.3 1-1.2L12 11l3.3-2.5z"/></svg>',"table-delete-row":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v3h2.5v2H5v2h2.5v2H5v3h14v-3h-2.5v-2H19v-2h-2.5V9H19V6zm-4.7 1.8l1.2 1L13 12l2.6 3.3-1.2 1-2.3-3-2.3 3-1.2-1L11 12 8.5 8.7l1.2-1 2.3 3 2.3-3z"/></svg>',"table-delete-table":'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 6v12h14V6H5z"/><path d="M14.4 8.6l1 1-2.3 2.4 2.3 2.4-1 1-2.4-2.3-2.4 2.3-1-1 2.3-2.4-2.3-2.4 1-1 2.4 2.3z"/></g></svg>',"table-insert-column-after":'<svg width="24" height="24"><path fill-rule="nonzero" d="M20 4c.6 0 1 .4 1 1v2a1 1 0 01-2 0V6h-8v12h8v-1a1 1 0 012 0v2c0 .5-.4 1-.9 1H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h15zM9 13H5v5h4v-5zm7-5c.5 0 1 .4 1 .9V11h2a1 1 0 01.1 2H17v2a1 1 0 01-2 .1V13h-2a1 1 0 01-.1-2H15V9c0-.6.4-1 1-1zM9 6H5v5h4V6z"/></svg>',"table-insert-column-before":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H4a1 1 0 01-1-1v-2a1 1 0 012 0v1h8V6H5v1a1 1 0 11-2 0V5c0-.6.4-1 1-1h15zm0 9h-4v5h4v-5zM8 8c.5 0 1 .4 1 .9V11h2a1 1 0 01.1 2H9v2a1 1 0 01-2 .1V13H5a1 1 0 01-.1-2H7V9c0-.6.4-1 1-1zm11-2h-4v5h4V6z"/></svg>',"table-insert-row-above":'<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4a1 1 0 110 2H5v6h14V6h-1a1 1 0 010-2h2c.6 0 1 .4 1 1v13a2 2 0 01-2 2H5a2 2 0 01-2-2V5c0-.6.4-1 1-1h2zm5 10H5v4h6v-4zm8 0h-6v4h6v-4zM12 3c.5 0 1 .4 1 .9V6h2a1 1 0 010 2h-2v2a1 1 0 01-2 .1V8H9a1 1 0 010-2h2V4c0-.6.4-1 1-1z"/></svg>',"table-insert-row-after":'<svg width="24" height="24"><path fill-rule="nonzero" d="M12 13c.5 0 1 .4 1 .9V16h2a1 1 0 01.1 2H13v2a1 1 0 01-2 .1V18H9a1 1 0 01-.1-2H11v-2c0-.6.4-1 1-1zm6 7a1 1 0 010-2h1v-6H5v6h1a1 1 0 010 2H4a1 1 0 01-1-1V6c0-1.1.9-2 2-2h14a2 2 0 012 2v13c0 .5-.4 1-.9 1H18zM11 6H5v4h6V6zm8 0h-6v4h6V6z"/></svg>',"table-left-header":'<svg width="24" height="24"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 9h-4v5h4v-5zm-6 0H9v5h4v-5zm0-7H9v5h4V6zm6 0h-4v5h4V6z"/></svg>',"table-merge-cells":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 15.5V18h3v-2.5H5zm14-5h-9V18h9v-7.5zM19 6h-4v2.5h4V6zM8 6H5v2.5h3V6zm5 0h-3v2.5h3V6zm-8 7.5h3v-3H5v3z"/></svg>',"table-row-properties":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 15v3h6v-3H5zm14 0h-6v3h6v-3zm0-9h-6v3h6V6zM5 9h6V6H5v3z"/></svg>',"table-split-cells":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM8 15.5H5V18h3v-2.5zm11-5h-9V18h9v-7.5zm-2.5 1l1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2-2-2 1-1 2 2 2-2zm-8.5-1H5v3h3v-3zM19 6h-4v2.5h4V6zM8 6H5v2.5h3V6zm5 0h-3v2.5h3V6z"/></svg>',"table-top-header":'<svg width="24" height="24"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-8 11H5v3h6v-3zm8 0h-6v3h6v-3zm0-5h-6v3h6v-3zM5 13h6v-3H5v3z"/></svg>',table:'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 14v4h6v-4H5zm14 0h-6v4h6v-4zm0-6h-6v4h6V8zM5 12h6V8H5v4z"/></svg>',template:'<svg width="24" height="24"><path d="M19 19v-1H5v1h14zM9 16v-4a5 5 0 116 0v4h4a2 2 0 012 2v3H3v-3c0-1.1.9-2 2-2h4zm4 0v-5l.8-.6a3 3 0 10-3.6 0l.8.6v5h2z" fill-rule="nonzero"/></svg>',"temporary-placeholder":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M9 7.6V6h2.5V4.5a.5.5 0 111 0V6H15v1.6a8 8 0 11-6 0zm-2.6 5.3a.5.5 0 00.3.6c.3 0 .6 0 .6-.3l.1-.2a5 5 0 013.3-2.8c.3-.1.4-.4.4-.6-.1-.3-.4-.5-.6-.4a6 6 0 00-4.1 3.7z"/><circle cx="14" cy="4" r="1"/><circle cx="12" cy="2" r="1"/><circle cx="10" cy="4" r="1"/></g></svg>',"text-color":'<svg width="24" height="24"><g fill-rule="evenodd"><path id="tox-icon-text-color__color" d="M3 18h18v3H3z"/><path d="M8.7 16h-.8a.5.5 0 01-.5-.6l2.7-9c.1-.3.3-.4.5-.4h2.8c.2 0 .4.1.5.4l2.7 9a.5.5 0 01-.5.6h-.8a.5.5 0 01-.4-.4l-.7-2.2c0-.3-.3-.4-.5-.4h-3.4c-.2 0-.4.1-.5.4l-.7 2.2c0 .3-.2.4-.4.4zm2.6-7.6l-.6 2a.5.5 0 00.5.6h1.6a.5.5 0 00.5-.6l-.6-2c0-.3-.3-.4-.5-.4h-.4c-.2 0-.4.1-.5.4z"/></g></svg>',toc:'<svg width="24" height="24"><path d="M5 5c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 110-2zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 110-2zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2zm0-4c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 110-2zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2z" fill-rule="evenodd"/></svg>',translate:'<svg width="24" height="24"><path d="M12.7 14.3l-.3.7-.4.7-2.2-2.2-3.1 3c-.3.4-.8.4-1 0a.7.7 0 010-1l3.1-3A12.4 12.4 0 016.7 9H8a10.1 10.1 0 001.7 2.4c.5-.5 1-1.1 1.4-1.8l.9-2H4.7a.7.7 0 110-1.5h4.4v-.7c0-.4.3-.8.7-.8.4 0 .7.4.7.8v.7H15c.4 0 .8.3.8.7 0 .4-.4.8-.8.8h-1.4a12.3 12.3 0 01-1 2.4 13.5 13.5 0 01-1.7 2.3l1.9 1.8zm4.3-3l2.7 7.3a.5.5 0 01-.4.7 1 1 0 01-1-.7l-.6-1.5h-3.4l-.6 1.5a1 1 0 01-1 .7.5.5 0 01-.4-.7l2.7-7.4a1 1 0 012 0zm-2.2 4.4h2.4L16 12.5l-1.2 3.2z" fill-rule="evenodd"/></svg>',underline:'<svg width="24" height="24"><path d="M16 5c.6 0 1 .4 1 1v5.5a4 4 0 01-.4 1.8l-1 1.4a5.3 5.3 0 01-5.5 1 5 5 0 01-1.6-1c-.5-.4-.8-.9-1.1-1.4a4 4 0 01-.4-1.8V6c0-.6.4-1 1-1s1 .4 1 1v5.5c0 .3 0 .6.2 1l.6.7a3.3 3.3 0 002.2.8 3.4 3.4 0 002.2-.8c.3-.2.4-.5.6-.8l.2-.9V6c0-.6.4-1 1-1zM8 17h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2z" fill-rule="evenodd"/></svg>',undo:'<svg width="24" height="24"><path d="M6.4 8H12c3.7 0 6.2 2 6.8 5.1.6 2.7-.4 5.6-2.3 6.8a1 1 0 01-1-1.8c1.1-.6 1.8-2.7 1.4-4.6-.5-2.1-2.1-3.5-4.9-3.5H6.4l3.3 3.3a1 1 0 11-1.4 1.4l-5-5a1 1 0 010-1.4l5-5a1 1 0 011.4 1.4L6.4 8z" fill-rule="nonzero"/></svg>',unlink:'<svg width="24" height="24"><path d="M6.2 12.3a1 1 0 011.4 1.4l-2 2a2 2 0 102.6 2.8l4.8-4.8a1 1 0 000-1.4 1 1 0 111.4-1.3 2.9 2.9 0 010 4L9.6 20a3.9 3.9 0 01-5.5-5.5l2-2zm11.6-.6a1 1 0 01-1.4-1.4l2.1-2a2 2 0 10-2.7-2.8L11 10.3a1 1 0 000 1.4A1 1 0 119.6 13a2.9 2.9 0 010-4L14.4 4a3.9 3.9 0 015.5 5.5l-2 2zM7.6 6.3a.8.8 0 01-1 1.1L3.3 4.2a.7.7 0 111-1l3.2 3.1zM5.1 8.6a.8.8 0 010 1.5H3a.8.8 0 010-1.5H5zm5-3.5a.8.8 0 01-1.5 0V3a.8.8 0 011.5 0V5zm6 11.8a.8.8 0 011-1l3.2 3.2a.8.8 0 01-1 1L16 17zm-2.2 2a.8.8 0 011.5 0V21a.8.8 0 01-1.5 0V19zm5-3.5a.7.7 0 110-1.5H21a.8.8 0 010 1.5H19z" fill-rule="nonzero"/></svg>',unlock:'<svg width="24" height="24"><path d="M16 5c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h-2V8a1 1 0 00-.3-.7A1 1 0 0016 7h-2a1 1 0 00-.7.3 1 1 0 00-.3.7v3h.3c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H4.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H11V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2z" fill-rule="evenodd"/></svg>',"unordered-list":'<svg width="24" height="24"><path d="M11 5h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zM4.5 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1z" fill-rule="evenodd"/></svg>',unselected:'<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6c0-1.1.9-2 2-2zm0 1a1 1 0 00-1 1v12c0 .6.4 1 1 1h12c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H6z"/></svg>',upload:'<svg width="24" height="24"><path d="M18 19v-2a1 1 0 012 0v3c0 .6-.4 1-1 1H5a1 1 0 01-1-1v-3a1 1 0 012 0v2h12zM11 6.4L8.7 8.7a1 1 0 01-1.4-1.4l4-4a1 1 0 011.4 0l4 4a1 1 0 11-1.4 1.4L13 6.4V16a1 1 0 01-2 0V6.4z" fill-rule="nonzero"/></svg>',user:'<svg width="24" height="24"><path d="M12 24a12 12 0 110-24 12 12 0 010 24zm-8.7-5.3a11 11 0 0017.4 0C19.4 16.3 14.6 15 12 15c-2.6 0-7.4 1.3-8.7 3.7zM12 13c2.2 0 4-2 4-4.5S14.2 4 12 4 8 6 8 8.5 9.8 13 12 13z" fill-rule="nonzero"/></svg>',visualblocks:'<svg width="24" height="24"><path d="M9 19v2H7v-2h2zm-4 0v2a2 2 0 01-2-2h2zm8 0v2h-2v-2h2zm8 0a2 2 0 01-2 2v-2h2zm-4 0v2h-2v-2h2zM15 7a1 1 0 010 2v7a1 1 0 01-2 0V9h-1v7a1 1 0 01-2 0v-4a2.5 2.5 0 01-.2-5H15zM5 15v2H3v-2h2zm16 0v2h-2v-2h2zM5 11v2H3v-2h2zm16 0v2h-2v-2h2zM5 7v2H3V7h2zm16 0v2h-2V7h2zM5 3v2H3c0-1.1.9-2 2-2zm8 0v2h-2V3h2zm6 0a2 2 0 012 2h-2V3zM9 3v2H7V3h2zm8 0v2h-2V3h2z" fill-rule="evenodd"/></svg>',visualchars:'<svg width="24" height="24"><path d="M10 5h7a1 1 0 010 2h-1v11a1 1 0 01-2 0V7h-2v11a1 1 0 01-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 016.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L10 5z" fill-rule="evenodd"/></svg>',warning:'<svg width="24" height="24"><path d="M19.8 18.3c.2.5.3.9 0 1.2-.1.3-.5.5-1 .5H5.2c-.5 0-.9-.2-1-.5-.3-.3-.2-.7 0-1.2L11 4.7l.5-.5.5-.2c.2 0 .3 0 .5.2.2 0 .3.3.5.5l6.8 13.6zM12 18c.3 0 .5-.1.7-.3.2-.2.3-.4.3-.7a1 1 0 00-.3-.7 1 1 0 00-.7-.3 1 1 0 00-.7.3 1 1 0 00-.3.7c0 .3.1.5.3.7.2.2.4.3.7.3zm.7-3l.3-4a1 1 0 00-.3-.7 1 1 0 00-.7-.3 1 1 0 00-.7.3 1 1 0 00-.3.7l.3 4h1.4z" fill-rule="evenodd"/></svg>',"zoom-in":'<svg width="24" height="24"><path d="M16 17.3a8 8 0 111.4-1.4l4.3 4.4a1 1 0 01-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 100-12 6 6 0 000 12zm-1-9a1 1 0 012 0v6a1 1 0 01-2 0V8zm-2 4a1 1 0 010-2h6a1 1 0 010 2H8z" fill-rule="nonzero"/></svg>',"zoom-out":'<svg width="24" height="24"><path d="M16 17.3a8 8 0 111.4-1.4l4.3 4.4a1 1 0 01-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 100-12 6 6 0 000 12zm-3-5a1 1 0 010-2h6a1 1 0 010 2H8z" fill-rule="nonzero"/></svg>'}}); | |
\ No newline at end of file | ... | ... |
1 | +/** | |
2 | + * Copyright (c) Tiny Technologies, Inc. All rights reserved. | |
3 | + * Licensed under the LGPL or a commercial license. | |
4 | + * For LGPL see License.txt in the project root for license information. | |
5 | + * For commercial licenses see https://www.tiny.cloud/ | |
6 | + */ | |
7 | +/** | |
8 | + * Jquery integration plugin. | |
9 | + * | |
10 | + * @class tinymce.core.JqueryIntegration | |
11 | + * @private | |
12 | + */ | |
13 | +!function(){var f,c,u,s=[],p="undefined"!=typeof global?global:window,d=p.jQuery,v=function(){ | |
14 | +// Reference to tinymce needs to be lazily evaluated since tinymce | |
15 | +// might be loaded through the compressor or other means | |
16 | +return p.tinymce};d.fn.tinymce=function(o){var e,t,i,l=this,r=""; | |
17 | +// No match then just ignore the call | |
18 | +if(!l.length)return l; | |
19 | +// Get editor instance | |
20 | +if(!o)return v()?v().get(l[0].id):null;l.css("visibility","hidden");// Hide textarea to avoid flicker | |
21 | +var n,a=function(){var a=[],c=0; | |
22 | +// Apply patches to the jQuery object, only once | |
23 | +u||(m(),u=!0), | |
24 | +// Create an editor instance for each matched node | |
25 | +l.each(function(e,t){var n,i=t.id,r=o.oninit; | |
26 | +// Generate unique id for target element if needed | |
27 | +i||(t.id=i=v().DOM.uniqueId()), | |
28 | +// Only init the editor once | |
29 | +v().get(i)||( | |
30 | +// Create editor instance and render it | |
31 | +n=v().createEditor(i,o),a.push(n),n.on("init",function(){var e,t=r;l.css("visibility",""), | |
32 | +// Run this if the oninit setting is defined | |
33 | +// this logic will fire the oninit callback ones each | |
34 | +// matched editor instance is initialized | |
35 | +r&&++c==a.length&&("string"==typeof t&&(e=-1===t.indexOf(".")?null:v().resolve(t.replace(/\.\w+$/,"")),t=v().resolve(t)), | |
36 | +// Call the oninit function with the object | |
37 | +t.apply(e||v(),a))}))}), | |
38 | +// Render the editor instances in a separate loop since we | |
39 | +// need to have the full editors array used in the onInit calls | |
40 | +d.each(a,function(e,t){t.render()})}; | |
41 | +// Load TinyMCE on demand, if we need to | |
42 | +return p.tinymce||c||!(e=o.script_url)? | |
43 | +// Delay the init call until tinymce is loaded | |
44 | +1===c?s.push(a):a():(c=1,t=e.substring(0,e.lastIndexOf("/")), | |
45 | +// Check if it's a dev/src version they want to load then | |
46 | +// make sure that all plugins, themes etc are loaded in source mode as well | |
47 | +-1!=e.indexOf(".min")&&(r=".min"), | |
48 | +// Setup tinyMCEPreInit object this will later be used by the TinyMCE | |
49 | +// core script to locate other resources like CSS files, dialogs etc | |
50 | +// You can also predefined a tinyMCEPreInit object and then it will use that instead | |
51 | +p.tinymce=p.tinyMCEPreInit||{base:t,suffix:r}, | |
52 | +// url contains gzip then we assume it's a compressor | |
53 | +-1!=e.indexOf("gzip")&&(i=o.language||"en",e=e+(/\?/.test(e)?"&":"?")+"js=true&core=true&suffix="+escape(r)+"&themes="+escape(o.theme||"modern")+"&plugins="+escape(o.plugins||"")+"&languages="+(i||""), | |
54 | +// Check if compressor script is already loaded otherwise setup a basic one | |
55 | +p.tinyMCE_GZ||(p.tinyMCE_GZ={start:function(){var n=function(e){v().ScriptLoader.markDone(v().baseURI.toAbsolute(e))}; | |
56 | +// Add core languages | |
57 | +n("langs/"+i+".js"), | |
58 | +// Add themes with languages | |
59 | +n("themes/"+o.theme+"/theme"+r+".js"),n("themes/"+o.theme+"/langs/"+i+".js"), | |
60 | +// Add plugins with languages | |
61 | +d.each(o.plugins.split(","),function(e,t){t&&(n("plugins/"+t+"/plugin"+r+".js"),n("plugins/"+t+"/langs/"+i+".js"))})},end:function(){}})),(n=document.createElement("script")).type="text/javascript",n.onload=n.onreadystatechange=function(e){e=e||window.event,2===c||"load"!=e.type&&!/complete|loaded/.test(n.readyState)||(v().dom.Event.domLoaded=1,c=2, | |
62 | +// Execute callback after mainscript has been loaded and before the initialization occurs | |
63 | +o.script_loaded&&o.script_loaded(),a(),d.each(s,function(e,t){t()}))},n.src=e,document.body.appendChild(n)),l}, | |
64 | +// Add :tinymce pseudo selector this will select elements that has been converted into editor instances | |
65 | +// it's now possible to use things like $('*:tinymce') to get all TinyMCE bound elements. | |
66 | +d.extend(d.expr[":"],{tinymce:function(e){var t;return!!(e.id&&"tinymce"in p&&(t=v().get(e.id))&&t.editorManager===v())}}); | |
67 | +// This function patches internal jQuery functions so that if | |
68 | +// you for example remove an div element containing an editor it's | |
69 | +// automatically destroyed by the TinyMCE API | |
70 | +var m=function(){ | |
71 | +// Removes any child editor instances by looking for editor wrapper elements | |
72 | +var r=function(e){ | |
73 | +// If the function is remove | |
74 | +"remove"===e&&this.each(function(e,t){var n=l(t);n&&n.remove()}),this.find("span.mceEditor,div.mceEditor").each(function(e,t){var n=v().get(t.id.replace(/_parent$/,""));n&&n.remove()})},o=function(i){var e,t=this; | |
75 | +// Handle set value | |
76 | +/*jshint eqnull:true */if(null!=i)r.call(t), | |
77 | +// Saves the contents before get/set value of textarea/div | |
78 | +t.each(function(e,t){var n;(n=v().get(t.id))&&n.setContent(i)});else if(0<t.length&&(e=v().get(t[0].id)))return e.getContent()},l=function(e){var t=null;return e&&e.id&&p.tinymce&&(t=v().get(e.id)),t},u=function(e){return!!(e&&e.length&&p.tinymce&&e.is(":tinymce"))},s={}; | |
79 | +// Loads or saves contents from/to textarea if the value | |
80 | +// argument is defined it will set the TinyMCE internal contents | |
81 | +// Patch some setter/getter functions these will | |
82 | +// now be able to set/get the contents of editor instances for | |
83 | +// example $('#editorid').html('Content'); will update the TinyMCE iframe instance | |
84 | +d.each(["text","html","val"],function(e,t){var a=s[t]=d.fn[t],c="text"===t;d.fn[t]=function(e){var t=this;if(!u(t))return a.apply(t,arguments);if(e!==f)return o.call(t.filter(":tinymce"),e),a.apply(t.not(":tinymce"),arguments),t;// return original set for chaining | |
85 | +var i="",r=arguments;return(c?t:t.eq(0)).each(function(e,t){var n=l(t);i+=n?c?n.getContent().replace(/<(?:"[^"]*"|'[^']*'|[^'">])*>/g,""):n.getContent({save:!0}):a.apply(d(t),r)}),i}}), | |
86 | +// Makes it possible to use $('#id').append("content"); to append contents to the TinyMCE editor iframe | |
87 | +d.each(["append","prepend"],function(e,t){var n=s[t]=d.fn[t],r="prepend"===t;d.fn[t]=function(i){var e=this;return u(e)?i!==f?("string"==typeof i&&e.filter(":tinymce").each(function(e,t){var n=l(t);n&&n.setContent(r?i+n.getContent():n.getContent()+i)}),n.apply(e.not(":tinymce"),arguments),e):void 0:n.apply(e,arguments)}}), | |
88 | +// Makes sure that the editor instance gets properly destroyed when the parent element is removed | |
89 | +d.each(["remove","replaceWith","replaceAll","empty"],function(e,t){var n=s[t]=d.fn[t];d.fn[t]=function(){return r.call(this,t),n.apply(this,arguments)}}),s.attr=d.fn.attr, | |
90 | +// Makes sure that $('#tinymce_id').attr('value') gets the editors current HTML contents | |
91 | +d.fn.attr=function(e,t){var n=this,i=arguments;if(!e||"value"!==e||!u(n))return s.attr.apply(n,i);if(t!==f)return o.call(n.filter(":tinymce"),t),s.attr.apply(n.not(":tinymce"),i),n;// return original set for chaining | |
92 | +var r=n[0],a=l(r);return a?a.getContent({save:!0}):s.attr.apply(d(r),i)}}}(); | |
\ No newline at end of file | ... | ... |