mirror of
https://github.com/bookorbit/bookorbit.git
synced 2026-11-03 08:21:39 -06:00
80244ea4e2
Squash of feat/koreader-widget-board. KOReader plugin 2.0.0 gets the widget-board dashboard, redesigned book details, menus, lists and dialogs, Decor page and reading companions. Highlights, notes and bookmarks now stay in step across web, Kobo, KOReader and the phones (defects D-00 to D-20, migration 0121), and reading progress and narration hand off cleanly between devices.
232 lines
31 KiB
Lua
232 lines
31 KiB
Lua
--[[--
|
|
Icons for the widget dashboard, drawn from Lucide (https://lucide.dev, ISC
|
|
license) path data so they match the web app.
|
|
|
|
KOReader renders SVG files, so each icon is written once per colour, stroke
|
|
width and fill into the plugin's cache directory and reused after that. An
|
|
icon is a few hundred bytes; a full board needs a few dozen.
|
|
]]
|
|
|
|
local DataStorage = require("datastorage")
|
|
local IconWidget = require("ui/widget/iconwidget")
|
|
local lfs = require("libs/libkoreader-lfs")
|
|
local util = require("util")
|
|
|
|
local BoardIcons = {}
|
|
|
|
local NODES = {
|
|
["menu"] = { { "path", { ["d"] = "M4 5h16" } }, { "path", { ["d"] = "M4 12h16" } }, { "path", { ["d"] = "M4 19h16" } } },
|
|
["search"] = { { "path", { ["d"] = "m21 21-4.34-4.34" } }, { "circle", { ["cx"] = "11", ["cy"] = "11", ["r"] = "8" } } },
|
|
["refresh-cw"] = { { "path", { ["d"] = "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" } }, { "path", { ["d"] = "M21 3v5h-5" } }, { "path", { ["d"] = "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16" } }, { "path", { ["d"] = "M8 16H3v5" } } },
|
|
["cloud"] = { { "path", { ["d"] = "M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z" } } },
|
|
["cloud-off"] = { { "path", { ["d"] = "M10.94 5.274A7 7 0 0 1 15.71 10h1.79a4.5 4.5 0 0 1 4.222 6.057" } }, { "path", { ["d"] = "M18.796 18.81A4.5 4.5 0 0 1 17.5 19H9A7 7 0 0 1 5.79 5.78" } }, { "path", { ["d"] = "m2 2 20 20" } } },
|
|
["cloud-check"] = { { "path", { ["d"] = "m17 15-5.5 5.5L9 18" } }, { "path", { ["d"] = "M5.516 16.07A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 3.501 7.327" } } },
|
|
["wifi"] = { { "path", { ["d"] = "M12 20h.01" } }, { "path", { ["d"] = "M2 8.82a15 15 0 0 1 20 0" } }, { "path", { ["d"] = "M5 12.859a10 10 0 0 1 14 0" } }, { "path", { ["d"] = "M8.5 16.429a5 5 0 0 1 7 0" } } },
|
|
["wifi-off"] = { { "path", { ["d"] = "M12 20h.01" } }, { "path", { ["d"] = "M8.5 16.429a5 5 0 0 1 7 0" } }, { "path", { ["d"] = "M5 12.859a10 10 0 0 1 5.17-2.69" } }, { "path", { ["d"] = "M19 12.859a10 10 0 0 0-2.007-1.523" } }, { "path", { ["d"] = "M2 8.82a15 15 0 0 1 4.177-2.643" } }, { "path", { ["d"] = "M22 8.82a15 15 0 0 0-11.288-3.764" } }, { "path", { ["d"] = "m2 2 20 20" } } },
|
|
["play"] = { { "path", { ["d"] = "M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z" } } },
|
|
["book-open"] = { { "path", { ["d"] = "M12 5v16" } }, { "path", { ["d"] = "M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z" } } },
|
|
["book-copy"] = { { "path", { ["d"] = "M5 7a2 2 0 0 0-2 2v11" } }, { "path", { ["d"] = "M5.803 18H5a2 2 0 0 0 0 4h9.5a.5.5 0 0 0 .5-.5V21" } }, { "path", { ["d"] = "M9 15V4a2 2 0 0 1 2-2h9.5a.5.5 0 0 1 .5.5v14a.5.5 0 0 1-.5.5H11a2 2 0 0 1 0-4h10" } } },
|
|
["aperture"] = { { "circle", { ["cx"] = "12", ["cy"] = "12", ["r"] = "10" } }, { "path", { ["d"] = "m14.31 8 5.74 9.94" } }, { "path", { ["d"] = "M9.69 8h11.48" } }, { "path", { ["d"] = "m7.38 12 5.74-9.94" } }, { "path", { ["d"] = "M9.69 16 3.95 6.06" } }, { "path", { ["d"] = "M14.31 16H2.83" } }, { "path", { ["d"] = "m16.62 12-5.74 9.94" } } },
|
|
["folder-open"] = { { "path", { ["d"] = "m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2" } } },
|
|
["feather"] = { { "path", { ["d"] = "M14.086 18.412A2 2 0 0112.67 19H5v-7.672a2 2 0 01.586-1.414L11.75 3.75a6 6 0 118.49 8.49z" } }, { "path", { ["d"] = "M16 8 2 22" } }, { "path", { ["d"] = "M17.488 15H9" } } },
|
|
["layers-2"] = { { "path", { ["d"] = "M13 13.74a2 2 0 0 1-2 0L2.5 8.87a1 1 0 0 1 0-1.74L11 2.26a2 2 0 0 1 2 0l8.5 4.87a1 1 0 0 1 0 1.74z" } }, { "path", { ["d"] = "m20 14.285 1.5.845a1 1 0 0 1 0 1.74L13 21.74a2 2 0 0 1-2 0l-8.5-4.87a1 1 0 0 1 0-1.74l1.5-.845" } } },
|
|
["tablet"] = { { "rect", { ["width"] = "16", ["height"] = "20", ["x"] = "4", ["y"] = "2", ["rx"] = "2", ["ry"] = "2" } }, { "line", { ["x1"] = "12", ["x2"] = "12.01", ["y1"] = "18", ["y2"] = "18" } } },
|
|
["download"] = { { "path", { ["d"] = "M12 15V3" } }, { "path", { ["d"] = "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" } }, { "path", { ["d"] = "m7 10 5 5 5-5" } } },
|
|
["shuffle"] = { { "path", { ["d"] = "m18 14 4 4-4 4" } }, { "path", { ["d"] = "m18 2 4 4-4 4" } }, { "path", { ["d"] = "M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22" } }, { "path", { ["d"] = "M2 6h1.972a4 4 0 0 1 3.6 2.2" } }, { "path", { ["d"] = "M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45" } } },
|
|
["chevron-left"] = { { "path", { ["d"] = "m15 18-6-6 6-6" } } },
|
|
["chevron-right"] = { { "path", { ["d"] = "m9 18 6-6-6-6" } } },
|
|
["arrow-right"] = { { "path", { ["d"] = "M5 12h14" } }, { "path", { ["d"] = "m12 5 7 7-7 7" } } },
|
|
["flame"] = { { "path", { ["d"] = "M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4" } } },
|
|
["clock"] = { { "circle", { ["cx"] = "12", ["cy"] = "12", ["r"] = "10" } }, { "path", { ["d"] = "M12 6v6l4 2" } } },
|
|
["target"] = { { "circle", { ["cx"] = "12", ["cy"] = "12", ["r"] = "10" } }, { "circle", { ["cx"] = "12", ["cy"] = "12", ["r"] = "6" } }, { "circle", { ["cx"] = "12", ["cy"] = "12", ["r"] = "2" } } },
|
|
["trophy"] = { { "path", { ["d"] = "M10 14.66V17a1 1 0 0 1-1 1 2 2 0 0 0-2 2v2" } }, { "path", { ["d"] = "M14 14.66V17a1 1 0 0 0 1 1 2 2 0 0 1 2 2v2" } }, { "path", { ["d"] = "M17.916 10H19.5A2.5 2.5 0 0 0 22 7.5V5a1 1 0 0 0-1-1h-3" } }, { "path", { ["d"] = "M4 22h16" } }, { "path", { ["d"] = "M6 9a6 6 0 0 0 12 0V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1z" } }, { "path", { ["d"] = "M6.084 10H4.5A2.5 2.5 0 0 1 2 7.5V5a1 1 0 0 1 1-1h3" } } },
|
|
["award"] = { { "path", { ["d"] = "m15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526" } }, { "circle", { ["cx"] = "12", ["cy"] = "8", ["r"] = "6" } } },
|
|
["sun-moon"] = { { "path", { ["d"] = "M12 2v2" } }, { "path", { ["d"] = "M14.837 16.385a6 6 0 1 1-7.223-7.222c.624-.147.97.66.715 1.248a4 4 0 0 0 5.26 5.259c.589-.255 1.396.09 1.248.715" } }, { "path", { ["d"] = "M16 12a4 4 0 0 0-4-4" } }, { "path", { ["d"] = "m19 5-1.256 1.256" } }, { "path", { ["d"] = "M20 12h2" } } },
|
|
["quote"] = { { "path", { ["d"] = "M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z" } }, { "path", { ["d"] = "M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z" } } },
|
|
["ellipsis"] = { { "circle", { ["cx"] = "12", ["cy"] = "12", ["r"] = "1" } }, { "circle", { ["cx"] = "19", ["cy"] = "12", ["r"] = "1" } }, { "circle", { ["cx"] = "5", ["cy"] = "12", ["r"] = "1" } } },
|
|
["x"] = { { "path", { ["d"] = "M18 6 6 18" } }, { "path", { ["d"] = "m6 6 12 12" } } },
|
|
["plus"] = { { "path", { ["d"] = "M5 12h14" } }, { "path", { ["d"] = "M12 5v14" } } },
|
|
["minus"] = { { "path", { ["d"] = "M5 12h14" } } },
|
|
["sun"] = { { "circle", { ["cx"] = "12", ["cy"] = "12", ["r"] = "4" } }, { "path", { ["d"] = "M12 2v2" } }, { "path", { ["d"] = "M12 20v2" } }, { "path", { ["d"] = "m4.93 4.93 1.41 1.41" } }, { "path", { ["d"] = "m17.66 17.66 1.41 1.41" } }, { "path", { ["d"] = "M2 12h2" } }, { "path", { ["d"] = "M20 12h2" } }, { "path", { ["d"] = "m6.34 17.66-1.41 1.41" } }, { "path", { ["d"] = "m19.07 4.93-1.41 1.41" } } },
|
|
["thermometer-sun"] = { { "path", { ["d"] = "M12 2v2" } }, { "path", { ["d"] = "M12 8a4 4 0 0 0-1.645 7.647" } }, { "path", { ["d"] = "M2 12h2" } }, { "path", { ["d"] = "M20 14.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0z" } }, { "path", { ["d"] = "m4.93 4.93 1.41 1.41" } }, { "path", { ["d"] = "m6.34 17.66-1.41 1.41" } } },
|
|
["moon"] = { { "path", { ["d"] = "M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401" } } },
|
|
["rotate-cw-square"] = { { "path", { ["d"] = "M12 5H6a2 2 0 0 0-2 2v3" } }, { "path", { ["d"] = "m9 8 3-3-3-3" } }, { "path", { ["d"] = "M4 14v4a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2" } } },
|
|
["hourglass"] = { { "path", { ["d"] = "M5 22h14" } }, { "path", { ["d"] = "M5 2h14" } }, { "path", { ["d"] = "M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22" } }, { "path", { ["d"] = "M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2" } } },
|
|
["calendar-clock"] = { { "path", { ["d"] = "M16 14v2.2l1.6 1" } }, { "path", { ["d"] = "M16 2v3" } }, { "path", { ["d"] = "M21 7.338V5a2 2 0 00-2-2H5a2 2 0 00-2 2v14a2 2 0 002 2h2.338" } }, { "path", { ["d"] = "M3 9h5.859" } }, { "path", { ["d"] = "M8 2v3" } }, { "circle", { ["cx"] = "16", ["cy"] = "16", ["r"] = "6" } } },
|
|
["whole-word"] = { { "circle", { ["cx"] = "7", ["cy"] = "12", ["r"] = "3" } }, { "path", { ["d"] = "M10 9v6" } }, { "circle", { ["cx"] = "17", ["cy"] = "12", ["r"] = "3" } }, { "path", { ["d"] = "M14 7v8" } }, { "path", { ["d"] = "M22 17v1c0 .5-.5 1-1 1H3c-.5 0-1-.5-1-1v-1" } } },
|
|
["layout-grid"] = { { "rect", { ["width"] = "7", ["height"] = "7", ["x"] = "3", ["y"] = "3", ["rx"] = "1" } }, { "rect", { ["width"] = "7", ["height"] = "7", ["x"] = "14", ["y"] = "3", ["rx"] = "1" } }, { "rect", { ["width"] = "7", ["height"] = "7", ["x"] = "14", ["y"] = "14", ["rx"] = "1" } }, { "rect", { ["width"] = "7", ["height"] = "7", ["x"] = "3", ["y"] = "14", ["rx"] = "1" } } },
|
|
["check"] = { { "path", { ["d"] = "M20 6 9 17l-5-5" } } },
|
|
["library"] = { { "path", { ["d"] = "m16 6 4 14" } }, { "path", { ["d"] = "M12 6v14" } }, { "path", { ["d"] = "M8 8v12" } }, { "path", { ["d"] = "M4 4v16" } } },
|
|
["chevron-down"] = { { "path", { ["d"] = "m6 9 6 6 6-6" } } },
|
|
["star"] = { { "path", { ["d"] = "M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z" } } },
|
|
["book-check"] = { { "path", { ["d"] = "M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20" } }, { "path", { ["d"] = "m9 9.5 2 2 4-4" } } },
|
|
["bookmark"] = { { "path", { ["d"] = "M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" } } },
|
|
["circle-pause"] = { { "circle", { ["cx"] = "12", ["cy"] = "12", ["r"] = "10" } }, { "line", { ["x1"] = "10", ["x2"] = "10", ["y1"] = "15", ["y2"] = "9" } }, { "line", { ["x1"] = "14", ["x2"] = "14", ["y1"] = "15", ["y2"] = "9" } } },
|
|
["rotate-ccw"] = { { "path", { ["d"] = "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8" } }, { "path", { ["d"] = "M3 3v5h5" } } },
|
|
["info"] = { { "circle", { ["cx"] = "12", ["cy"] = "12", ["r"] = "10" } }, { "path", { ["d"] = "M12 16v-4" } }, { "path", { ["d"] = "M12 8h.01" } } },
|
|
["file-text"] = { { "path", { ["d"] = "M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z" } }, { "path", { ["d"] = "M14 2v5a1 1 0 0 0 1 1h5" } }, { "path", { ["d"] = "M10 9H8" } }, { "path", { ["d"] = "M16 13H8" } }, { "path", { ["d"] = "M16 17H8" } } },
|
|
["circle-check"] = { { "circle", { ["cx"] = "12", ["cy"] = "12", ["r"] = "10" } }, { "path", { ["d"] = "m16 9-5.5 5.5L8 12" } } },
|
|
["pen-line"] = { { "path", { ["d"] = "M13 21h8" } }, { "path", { ["d"] = "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z" } } },
|
|
["highlighter"] = { { "path", { ["d"] = "m9 11-6 6v3h9l3-3" } }, { "path", { ["d"] = "m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4" } } },
|
|
["user"] = { { "path", { ["d"] = "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2" } }, { "circle", { ["cx"] = "12", ["cy"] = "7", ["r"] = "4" } } },
|
|
["trash"] = { { "path", { ["d"] = "M10 11v6" } }, { "path", { ["d"] = "M14 11v6" } }, { "path", { ["d"] = "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6" } }, { "path", { ["d"] = "M3 6h18" } }, { "path", { ["d"] = "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" } } },
|
|
["headphones"] = { { "path", { ["d"] = "M3 14h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-7a9 9 0 0 1 18 0v7a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3" } } },
|
|
-- The BookOrbit menu, settings and sync pages.
|
|
["sliders-horizontal"] = { { "path", { ["d"] = "M10 5H3" } }, { "path", { ["d"] = "M12 19H3" } }, { "path", { ["d"] = "M14 3v4" } }, { "path", { ["d"] = "M16 17v4" } }, { "path", { ["d"] = "M21 12h-9" } }, { "path", { ["d"] = "M21 19h-5" } }, { "path", { ["d"] = "M21 5h-7" } }, { "path", { ["d"] = "M8 10v4" } }, { "path", { ["d"] = "M8 12H3" } } },
|
|
["activity"] = { { "path", { ["d"] = "M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2" } } },
|
|
["circle-help"] = { { "circle", { ["cx"] = "12", ["cy"] = "12", ["r"] = "10" } }, { "path", { ["d"] = "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3" } }, { "path", { ["d"] = "M12 17h.01" } } },
|
|
["door-open"] = { { "path", { ["d"] = "M10 21H2" } }, { "path", { ["d"] = "M10 3H7a2 2 0 00-2 2v16" } }, { "path", { ["d"] = "M14 12h.01" } }, { "path", { ["d"] = "M19 21V5a2 2 0 00-1.675-1.974l-6.163-1.013A1 1 0 0010 3v18a1 1 0 001.124.992z" } }, { "path", { ["d"] = "M22 21h-3" } } },
|
|
["circle-user-round"] = { { "path", { ["d"] = "M17.925 20.056a6 6 0 0 0-11.851.001" } }, { "circle", { ["cx"] = "12", ["cy"] = "11", ["r"] = "4" } }, { "circle", { ["cx"] = "12", ["cy"] = "12", ["r"] = "10" } } },
|
|
["house"] = { { "path", { ["d"] = "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8" } }, { "path", { ["d"] = "M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" } } },
|
|
["arrow-up-right"] = { { "path", { ["d"] = "M7 7h10v10" } }, { "path", { ["d"] = "M7 17 17 7" } } },
|
|
["arrow-down"] = { { "path", { ["d"] = "M12 5v14" } }, { "path", { ["d"] = "m19 12-7 7-7-7" } } },
|
|
["book-open-text"] = { { "path", { ["d"] = "M12 5v16" } }, { "path", { ["d"] = "M16 13h2" } }, { "path", { ["d"] = "M16 9h2" } }, { "path", { ["d"] = "M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z" } }, { "path", { ["d"] = "M6 13h2" } }, { "path", { ["d"] = "M6 9h2" } } },
|
|
["tag"] = { { "path", { ["d"] = "M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z" } }, { "circle", { ["cx"] = "7.5", ["cy"] = "7.5", ["r"] = ".5", ["fill"] = "currentColor" } } },
|
|
["list-checks"] = { { "path", { ["d"] = "M13 5h8" } }, { "path", { ["d"] = "M13 12h8" } }, { "path", { ["d"] = "M13 19h8" } }, { "path", { ["d"] = "m3 17 2 2 4-4" } }, { "path", { ["d"] = "m3 7 2 2 4-4" } } },
|
|
["book-x"] = { { "path", { ["d"] = "m14.5 7.5-5 5" } }, { "path", { ["d"] = "M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20" } }, { "path", { ["d"] = "m9.5 7.5 5 5" } } },
|
|
["globe"] = { { "circle", { ["cx"] = "12", ["cy"] = "12", ["r"] = "10" } }, { "path", { ["d"] = "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20" } }, { "path", { ["d"] = "M2 12h20" } } },
|
|
["key-round"] = { { "path", { ["d"] = "M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z" } }, { "circle", { ["cx"] = "16.5", ["cy"] = "7.5", ["r"] = ".5", ["fill"] = "currentColor" } } },
|
|
["eye"] = { { "path", { ["d"] = "M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0" } }, { "circle", { ["cx"] = "12", ["cy"] = "12", ["r"] = "3" } } },
|
|
["eye-off"] = { { "path", { ["d"] = "M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49" } }, { "path", { ["d"] = "M14.084 14.158a3 3 0 0 1-4.242-4.242" } }, { "path", { ["d"] = "M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143" } }, { "path", { ["d"] = "m2 2 20 20" } } },
|
|
["user-round"] = { { "circle", { ["cx"] = "12", ["cy"] = "8", ["r"] = "5" } }, { "path", { ["d"] = "M20 21a8 8 0 0 0-16 0" } } },
|
|
["log-out"] = { { "path", { ["d"] = "m16 17 5-5-5-5" } }, { "path", { ["d"] = "M21 12H9" } }, { "path", { ["d"] = "M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4" } } },
|
|
["triangle-alert"] = { { "path", { ["d"] = "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3" } }, { "path", { ["d"] = "M12 9v4" } }, { "path", { ["d"] = "M12 17h.01" } } },
|
|
["library-big"] = { { "rect", { ["width"] = "8", ["height"] = "18", ["x"] = "3", ["y"] = "3", ["rx"] = "1" } }, { "path", { ["d"] = "M7 3v18" } }, { "path", { ["d"] = "M20.4 18.9c.2.5-.1 1.1-.6 1.3l-1.9.7c-.5.2-1.1-.1-1.3-.6L11.1 5.1c-.2-.5.1-1.1.6-1.3l1.9-.7c.5-.2 1.1.1 1.3.6Z" } } },
|
|
["folder-search"] = { { "path", { ["d"] = "M10.7 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v4.1" } }, { "path", { ["d"] = "m21 21-1.9-1.9" } }, { "circle", { ["cx"] = "17", ["cy"] = "17", ["r"] = "3" } } },
|
|
["list-filter"] = { { "path", { ["d"] = "M2 5h20" } }, { "path", { ["d"] = "M6 12h12" } }, { "path", { ["d"] = "M9 19h6" } } },
|
|
["chevron-up"] = { { "path", { ["d"] = "m18 15-6-6-6 6" } } },
|
|
["list"] = { { "path", { ["d"] = "M3 5h.01" } }, { "path", { ["d"] = "M3 12h.01" } }, { "path", { ["d"] = "M3 19h.01" } }, { "path", { ["d"] = "M8 5h13" } }, { "path", { ["d"] = "M8 12h13" } }, { "path", { ["d"] = "M8 19h13" } } },
|
|
["arrow-up-down"] = { { "path", { ["d"] = "m21 16-4 4-4-4" } }, { "path", { ["d"] = "M17 20V4" } }, { "path", { ["d"] = "m3 8 4-4 4 4" } }, { "path", { ["d"] = "M7 4v16" } } },
|
|
["check-check"] = { { "path", { ["d"] = "M18 6 7 17l-5-5" } }, { "path", { ["d"] = "m22 10-7.5 7.5L13 16" } } },
|
|
["chevrons-left"] = { { "path", { ["d"] = "m11 17-5-5 5-5" } }, { "path", { ["d"] = "m18 17-5-5 5-5" } } },
|
|
["chevrons-right"] = { { "path", { ["d"] = "m6 17 5-5-5-5" } }, { "path", { ["d"] = "m13 17 5-5-5-5" } } },
|
|
["book"] = { { "path", { ["d"] = "M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20" } } },
|
|
-- The plugin's on-device glyph (assets/bookorbit.on-device.svg) on the 24 grid.
|
|
["bo-device"] = { { "rect", { ["x"] = "6.5", ["y"] = "2.5", ["width"] = "11", ["height"] = "19", ["rx"] = "2" } }, { "path", { ["d"] = "M10 18h4" } } },
|
|
["sparkle"] = { { "path", { ["d"] = "M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z" } } },
|
|
-- The icons BookOrbit's achievements are drawn with, for the Next badge widget's
|
|
-- medals, plus the Chapter line's train.
|
|
["arrow-left-right"] = { { "path", { ["d"] = "M8 3 4 7l4 4" } }, { "path", { ["d"] = "M4 7h16" } }, { "path", { ["d"] = "m16 21 4-4-4-4" } }, { "path", { ["d"] = "M20 17H4" } } },
|
|
["book-heart"] = { { "path", { ["d"] = "M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20" } }, { "path", { ["d"] = "M8.62 9.8A2.25 2.25 0 1 1 12 6.836a2.25 2.25 0 1 1 3.38 2.966l-2.626 2.856a.998.998 0 0 1-1.507 0z" } } },
|
|
["book-marked"] = { { "path", { ["d"] = "M10 2v7.751a.25.25 0 00.407.195l2.28-1.834a.5.5 0 01.627 0l2.28 1.834A.25.25 0 0016 9.751V2" } }, { "path", { ["d"] = "M4 19.5v-15A2.5 2.5 0 016.5 2H19a1 1 0 011 1v18a1 1 0 01-1 1H6.5a1 1 0 010-5H20" } } },
|
|
["bookmark-check"] = { { "path", { ["d"] = "M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z" } }, { "path", { ["d"] = "m9 10 2 2 4-4" } } },
|
|
["calendar"] = { { "path", { ["d"] = "M8 2v3" } }, { "path", { ["d"] = "M16 2v3" } }, { "rect", { ["x"] = "3", ["y"] = "3", ["width"] = "18", ["height"] = "18", ["rx"] = "2" } }, { "path", { ["d"] = "M3 9h18" } } },
|
|
["calendar-check"] = { { "path", { ["d"] = "M8 2v3" } }, { "path", { ["d"] = "M16 2v3" } }, { "rect", { ["x"] = "3", ["y"] = "3", ["width"] = "18", ["height"] = "18", ["rx"] = "2" } }, { "path", { ["d"] = "M3 9h18" } }, { "path", { ["d"] = "m9 15 2 2 4-4" } } },
|
|
["calendar-range"] = { { "rect", { ["x"] = "3", ["y"] = "3", ["width"] = "18", ["height"] = "18", ["rx"] = "2" } }, { "path", { ["d"] = "M16 2v3" } }, { "path", { ["d"] = "M3 9h18" } }, { "path", { ["d"] = "M8 2v3" } }, { "path", { ["d"] = "M17 13h-6" } }, { "path", { ["d"] = "M13 17H7" } }, { "path", { ["d"] = "M7 13h.01" } }, { "path", { ["d"] = "M17 17h.01" } } },
|
|
["coffee"] = { { "path", { ["d"] = "M10 2v2" } }, { "path", { ["d"] = "M14 2v2" } }, { "path", { ["d"] = "M16 8a1 1 0 0 1 1 1v8a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1h14a4 4 0 1 1 0 8h-1" } }, { "path", { ["d"] = "M6 2v2" } } },
|
|
["compass"] = { { "circle", { ["cx"] = "12", ["cy"] = "12", ["r"] = "10" } }, { "path", { ["d"] = "m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z" } } },
|
|
["corner-up-right"] = { { "path", { ["d"] = "m15 14 5-5-5-5" } }, { "path", { ["d"] = "M4 20v-7a4 4 0 0 1 4-4h12" } } },
|
|
["fast-forward"] = { { "path", { ["d"] = "M12 6a2 2 0 0 1 3.414-1.414l6 6a2 2 0 0 1 0 2.828l-6 6A2 2 0 0 1 12 18z" } }, { "path", { ["d"] = "M2 6a2 2 0 0 1 3.414-1.414l6 6a2 2 0 0 1 0 2.828l-6 6A2 2 0 0 1 2 18z" } } },
|
|
["files"] = { { "path", { ["d"] = "M15 2h-4a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8" } }, { "path", { ["d"] = "M16.706 2.706A2.4 2.4 0 0 0 15 2v5a1 1 0 0 0 1 1h5a2.4 2.4 0 0 0-.706-1.706z" } }, { "path", { ["d"] = "M5 7a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 1.732-1" } } },
|
|
["gauge"] = { { "path", { ["d"] = "m12 14 4-4" } }, { "path", { ["d"] = "M3.34 19a10 10 0 1 1 17.32 0" } } },
|
|
["gavel"] = { { "path", { ["d"] = "m14 13-8.381 8.38a1 1 0 0 1-3.001-3l8.384-8.381" } }, { "path", { ["d"] = "m16 16 6-6" } }, { "path", { ["d"] = "m21.5 10.5-8-8" } }, { "path", { ["d"] = "m8 8 6-6" } }, { "path", { ["d"] = "m8.5 7.5 8 8" } } },
|
|
["heart"] = { { "path", { ["d"] = "M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5" } } },
|
|
["list-ordered"] = { { "path", { ["d"] = "M11 5h10" } }, { "path", { ["d"] = "M11 12h10" } }, { "path", { ["d"] = "M11 19h10" } }, { "path", { ["d"] = "M4 4h1v5" } }, { "path", { ["d"] = "M4 9h2" } }, { "path", { ["d"] = "M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02" } } },
|
|
["medal"] = { { "path", { ["d"] = "M7.21 15 2.66 7.14a2 2 0 0 1 .13-2.2L4.4 2.8A2 2 0 0 1 6 2h12a2 2 0 0 1 1.6.8l1.6 2.14a2 2 0 0 1 .14 2.2L16.79 15" } }, { "path", { ["d"] = "M11 12 5.12 2.2" } }, { "path", { ["d"] = "m13 12 5.88-9.8" } }, { "path", { ["d"] = "M8 7h8" } }, { "circle", { ["cx"] = "12", ["cy"] = "17", ["r"] = "5" } }, { "path", { ["d"] = "M12 18v-2h-.5" } } },
|
|
["minimize-2"] = { { "path", { ["d"] = "m14 10 7-7" } }, { "path", { ["d"] = "M20 10h-6V4" } }, { "path", { ["d"] = "m3 21 7-7" } }, { "path", { ["d"] = "M4 14h6v6" } } },
|
|
["mountain"] = { { "path", { ["d"] = "m8 3 4 8 5-5 5 15H2L8 3z" } } },
|
|
["orbit"] = { { "path", { ["d"] = "M20.341 6.484A10 10 0 0 1 10.266 21.85" } }, { "path", { ["d"] = "M3.659 17.516A10 10 0 0 1 13.74 2.152" } }, { "circle", { ["cx"] = "12", ["cy"] = "12", ["r"] = "3" } }, { "circle", { ["cx"] = "19", ["cy"] = "5", ["r"] = "2" } }, { "circle", { ["cx"] = "5", ["cy"] = "19", ["r"] = "2" } } },
|
|
["palette"] = { { "path", { ["d"] = "M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z" } }, { "circle", { ["cx"] = "13.5", ["cy"] = "6.5", ["r"] = ".5", ["fill"] = "currentColor" } }, { "circle", { ["cx"] = "17.5", ["cy"] = "10.5", ["r"] = ".5", ["fill"] = "currentColor" } }, { "circle", { ["cx"] = "6.5", ["cy"] = "12.5", ["r"] = ".5", ["fill"] = "currentColor" } }, { "circle", { ["cx"] = "8.5", ["cy"] = "7.5", ["r"] = ".5", ["fill"] = "currentColor" } } },
|
|
["party-popper"] = { { "path", { ["d"] = "M5.8 11.3 2 22l10.7-3.79" } }, { "path", { ["d"] = "M4 3h.01" } }, { "path", { ["d"] = "M22 8h.01" } }, { "path", { ["d"] = "M15 2h.01" } }, { "path", { ["d"] = "M22 20h.01" } }, { "path", { ["d"] = "m22 2-2.24.75a2.9 2.9 0 0 0-1.96 3.12c.1.86-.57 1.63-1.45 1.63h-.38c-.86 0-1.6.6-1.76 1.44L14 10" } }, { "path", { ["d"] = "m22 13-.82-.33c-.86-.34-1.82.2-1.98 1.11c-.11.7-.72 1.22-1.43 1.22H17" } }, { "path", { ["d"] = "m11 2 .33.82c.34.86-.2 1.82-1.11 1.98C9.52 4.9 9 5.52 9 6.23V7" } }, { "path", { ["d"] = "M11 13c1.93 1.93 2.83 4.17 2 5-.83.83-3.07-.07-5-2-1.93-1.93-2.83-4.17-2-5 .83-.83 3.07.07 5 2Z" } } },
|
|
["pen-tool"] = { { "path", { ["d"] = "m18 13-.654-4.736a4 4 0 00-2.756-3.266l-9.163-2.9a2 2 0 00-2.017.493l-.82.819a2 2 0 00-.492 2.017l2.9 9.163a4 4 0 003.266 2.756L13 18" } }, { "path", { ["d"] = "M18.648 12.352a1.205 1.205 0 011.704 0l1.296 1.296a1.205 1.205 0 010 1.704l-6.296 6.296a1.205 1.205 0 01-1.704 0l-1.296-1.296a1.205 1.205 0 010-1.704z" } }, { "path", { ["d"] = "m3 3 6.586 6.586" } }, { "circle", { ["cx"] = "11", ["cy"] = "11", ["r"] = "2" } } },
|
|
["rabbit"] = { { "path", { ["d"] = "M13 16a3 3 0 0 1 2.24 5" } }, { "path", { ["d"] = "M18 12h.01" } }, { "path", { ["d"] = "M18 21h-8a4 4 0 0 1-4-4 7 7 0 0 1 7-7h.2L9.6 6.4a1 1 0 1 1 2.8-2.8L15.8 7h.2c3.3 0 6 2.7 6 6v1a2 2 0 0 1-2 2h-1a3 3 0 0 0-3 3" } }, { "path", { ["d"] = "M20 8.54V4a2 2 0 1 0-4 0v3" } }, { "path", { ["d"] = "M7.612 12.524a3 3 0 1 0-1.6 4.3" } } },
|
|
["repeat"] = { { "path", { ["d"] = "m17 2 4 4-4 4" } }, { "path", { ["d"] = "M3 11v-1a4 4 0 0 1 4-4h14" } }, { "path", { ["d"] = "m7 22-4-4 4-4" } }, { "path", { ["d"] = "M21 13v1a4 4 0 0 1-4 4H3" } } },
|
|
["scroll"] = { { "path", { ["d"] = "M19 17V5a2 2 0 0 0-2-2H4" } }, { "path", { ["d"] = "M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3" } } },
|
|
["scroll-text"] = { { "path", { ["d"] = "M15 12h-5" } }, { "path", { ["d"] = "M15 8h-5" } }, { "path", { ["d"] = "M19 17V5a2 2 0 0 0-2-2H4" } }, { "path", { ["d"] = "M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3" } } },
|
|
["smartphone"] = { { "rect", { ["width"] = "14", ["height"] = "20", ["x"] = "5", ["y"] = "2", ["rx"] = "2", ["ry"] = "2" } }, { "path", { ["d"] = "M12 18h.01" } } },
|
|
["sparkles"] = { { "path", { ["d"] = "M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z" } }, { "path", { ["d"] = "M20 2v4" } }, { "path", { ["d"] = "M22 4h-4" } }, { "circle", { ["cx"] = "4", ["cy"] = "20", ["r"] = "2" } } },
|
|
["sprout"] = { { "path", { ["d"] = "M14 9.536V7a4 4 0 0 1 4-4h1.5a.5.5 0 0 1 .5.5V5a4 4 0 0 1-4 4 4 4 0 0 0-4 4c0 2 1 3 1 5a5 5 0 0 1-1 3" } }, { "path", { ["d"] = "M4 9a5 5 0 0 1 8 4 5 5 0 0 1-8-4" } }, { "path", { ["d"] = "M5 21h14" } } },
|
|
["star-half"] = { { "path", { ["d"] = "M12 18.338a2.1 2.1 0 0 0-.987.244L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.12 2.12 0 0 0 1.597-1.16l2.309-4.679A.53.53 0 0 1 12 2" } } },
|
|
["sunrise"] = { { "path", { ["d"] = "M12 2v8" } }, { "path", { ["d"] = "m4.93 10.93 1.41 1.41" } }, { "path", { ["d"] = "M2 18h2" } }, { "path", { ["d"] = "M20 18h2" } }, { "path", { ["d"] = "m19.07 10.93-1.41 1.41" } }, { "path", { ["d"] = "M22 22H2" } }, { "path", { ["d"] = "m8 6 4-4 4 4" } }, { "path", { ["d"] = "M16 18a4 4 0 0 0-8 0" } } },
|
|
["swords"] = { { "path", { ["d"] = "m13 19 6-6" } }, { "path", { ["d"] = "M14.5 17.5 3.586 6.586A2 2 0 013 5.172V3h2.172a2 2 0 011.414.586L17.5 14.5" } }, { "path", { ["d"] = "m14.828 6.172 2.586-2.586A2 2 0 0118.828 3H21v2.172a2 2 0 01-.586 1.414l-2.586 2.586" } }, { "path", { ["d"] = "m16 16 4 4" } }, { "path", { ["d"] = "m19 21 2-2" } }, { "path", { ["d"] = "m5 14 4 4" } }, { "path", { ["d"] = "m5 21-2-2" } }, { "path", { ["d"] = "M7.5 16.5 4 20" } } },
|
|
["thumbs-down"] = { { "path", { ["d"] = "M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z" } }, { "path", { ["d"] = "M17 14V2" } } },
|
|
["timer"] = { { "line", { ["x1"] = "10", ["x2"] = "14", ["y1"] = "2", ["y2"] = "2" } }, { "line", { ["x1"] = "12", ["x2"] = "15", ["y1"] = "14", ["y2"] = "11" } }, { "circle", { ["cx"] = "12", ["cy"] = "14", ["r"] = "8" } } },
|
|
["zap"] = { { "path", { ["d"] = "M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z" } } },
|
|
["train-front"] = { { "path", { ["d"] = "M8 3.1V7a4 4 0 0 0 8 0V3.1" } }, { "path", { ["d"] = "m9 15-1-1" } }, { "path", { ["d"] = "m15 15 1-1" } }, { "path", { ["d"] = "M9 19c-2.8 0-5-2.2-5-5v-4a8 8 0 0 1 16 0v4c0 2.8-2.2 5-5 5Z" } }, { "path", { ["d"] = "m8 19-2 3" } }, { "path", { ["d"] = "m16 19 2 3" } } },
|
|
}
|
|
|
|
local dir = nil
|
|
local written = {}
|
|
|
|
local function cacheDir()
|
|
if not dir then
|
|
dir = DataStorage:getDataDir() .. "/cache/bookorbit/icons"
|
|
util.makePath(dir)
|
|
end
|
|
return dir
|
|
end
|
|
|
|
local function attrs(tbl)
|
|
local keys = {}
|
|
for k in pairs(tbl) do table.insert(keys, k) end
|
|
table.sort(keys)
|
|
local out = {}
|
|
for _, k in ipairs(keys) do
|
|
table.insert(out, k .. '="' .. tbl[k] .. '"')
|
|
end
|
|
return table.concat(out, " ")
|
|
end
|
|
|
|
-- The SVG source for one icon. fill colours the closed shapes too (the play
|
|
-- triangle, a filled quote).
|
|
function BoardIcons.svg(name, color, stroke_width, fill)
|
|
local nodes = NODES[name]
|
|
if not nodes then return nil end
|
|
local body = {}
|
|
for _, node in ipairs(nodes) do
|
|
table.insert(body, "<" .. node[1] .. " " .. attrs(node[2]) .. "/>")
|
|
end
|
|
return string.format(
|
|
'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="%s" stroke="%s" stroke-width="%s" stroke-linecap="round" stroke-linejoin="round">%s</svg>',
|
|
fill and color or "none", color, tostring(stroke_width), table.concat(body))
|
|
end
|
|
|
|
-- Path to the cached SVG file, written on first use.
|
|
function BoardIcons.file(name, color, stroke_width, fill)
|
|
color = color or "#000000"
|
|
stroke_width = stroke_width or 2
|
|
local key = string.format("%s-%s-%s%s", name, color:gsub("#", ""), tostring(stroke_width):gsub("%.", "_"), fill and "-f" or "")
|
|
local path = cacheDir() .. "/" .. key .. ".svg"
|
|
if written[path] then return path end
|
|
if lfs.attributes(path, "mode") ~= "file" then
|
|
local svg = BoardIcons.svg(name, color, stroke_width, fill)
|
|
if not svg then return nil end
|
|
local f = io.open(path, "w")
|
|
if not f then return nil end
|
|
f:write(svg)
|
|
f:close()
|
|
end
|
|
written[path] = true
|
|
return path
|
|
end
|
|
|
|
-- An IconWidget of size px. opts: color (hex), sw (stroke width), fill.
|
|
function BoardIcons.widget(name, size, opts)
|
|
opts = opts or {}
|
|
local path = BoardIcons.file(name, opts.color, opts.sw or 2, opts.fill)
|
|
return IconWidget:new{
|
|
file = path,
|
|
width = size,
|
|
height = size,
|
|
alpha = true,
|
|
}
|
|
end
|
|
|
|
function BoardIcons.has(name)
|
|
return NODES[name] ~= nil
|
|
end
|
|
|
|
-- An icon as SVG elements on its 24 grid, for drawing inside a larger
|
|
-- picture (a medal). Nil when the plugin does not have it.
|
|
function BoardIcons.markup(name)
|
|
local nodes = NODES[name]
|
|
if not nodes then return nil end
|
|
local body = {}
|
|
for _, node in ipairs(nodes) do
|
|
table.insert(body, "<" .. node[1] .. " " .. attrs(node[2]) .. "/>")
|
|
end
|
|
return table.concat(body)
|
|
end
|
|
|
|
return BoardIcons
|