支持复制缩略图链接

This commit is contained in:
Wisp X
2022-01-17 16:19:53 +08:00
parent ff2162cbe9
commit 9718871610
4 changed files with 41 additions and 219 deletions

View File

@@ -131,7 +131,7 @@ class Image extends Model
public function thumbUrl(): Attribute
{
return new Attribute(function () {
return "{$this->key}.{$this->extension}!thumbnail";
return asset("{$this->key}.{$this->extension}!thumbnail");
});
}
@@ -143,6 +143,7 @@ class Image extends Model
'bbcode' => "[img]{$this->url}[/img]",
'markdown' => "![{$this->origin_name}]({$this->url})",
'markdown_with_link' => "[![{$this->origin_name}]({$this->url})]({$this->url})",
'thumbnail_url' => $this->thumb_url,
]));
}

250
public/css/app.css vendored
View File

@@ -724,18 +724,14 @@ select {
margin-left: 1rem;
margin-right: 1rem;
}
.mx-2 {
margin-left: 0.5rem;
margin-right: 0.5rem;
.my-4 {
margin-top: 1rem;
margin-bottom: 1rem;
}
.my-2 {
margin-top: 0.5rem;
margin-bottom: 0.5rem;
}
.my-4 {
margin-top: 1rem;
margin-bottom: 1rem;
}
.ml-3 {
margin-left: 0.75rem;
}
@@ -766,6 +762,9 @@ select {
.mt-4 {
margin-top: 1rem;
}
.ml-4 {
margin-left: 1rem;
}
.mt-6 {
margin-top: 1.5rem;
}
@@ -778,9 +777,6 @@ select {
.mr-2 {
margin-right: 0.5rem;
}
.ml-4 {
margin-left: 1rem;
}
.mt-8 {
margin-top: 2rem;
}
@@ -802,15 +798,9 @@ select {
.-mr-2 {
margin-right: -0.5rem;
}
.mb-3 {
margin-bottom: 0.75rem;
}
.block {
display: block;
}
.inline-block {
display: inline-block;
}
.flex {
display: flex;
}
@@ -823,9 +813,6 @@ select {
.grid {
display: grid;
}
.contents {
display: contents;
}
.hidden {
display: none;
}
@@ -841,6 +828,9 @@ select {
.h-10 {
height: 2.5rem;
}
.h-20 {
height: 5rem;
}
.h-screen {
height: 100vh;
}
@@ -856,9 +846,6 @@ select {
.h-16 {
height: 4rem;
}
.h-20 {
height: 5rem;
}
.h-6 {
height: 1.5rem;
}
@@ -868,9 +855,6 @@ select {
.h-4 {
height: 1rem;
}
.h-12 {
height: 3rem;
}
.min-h-\[150px\] {
min-height: 150px;
}
@@ -895,6 +879,9 @@ select {
.w-\[80\%\] {
width: 80%;
}
.w-20 {
width: 5rem;
}
.w-48 {
width: 12rem;
}
@@ -904,14 +891,11 @@ select {
.w-auto {
width: auto;
}
.w-20 {
width: 5rem;
}
.w-6 {
width: 1.5rem;
}
.w-52 {
width: 13rem;
.w-64 {
width: 16rem;
}
.w-\[90\%\] {
width: 90%;
@@ -919,12 +903,6 @@ select {
.w-4 {
width: 1rem;
}
.w-12 {
width: 3rem;
}
.w-64 {
width: 16rem;
}
.max-w-xl {
max-width: 36rem;
}
@@ -940,9 +918,6 @@ select {
.flex-1 {
flex: 1 1 0%;
}
.flex-shrink-0 {
flex-shrink: 0;
}
.shrink-0 {
flex-shrink: 0;
}
@@ -961,14 +936,6 @@ select {
.origin-top-left {
transform-origin: top left;
}
.translate-y-4 {
--tw-translate-y: 1rem;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-y-0 {
--tw-translate-y: 0px;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.scale-95 {
--tw-scale-x: .95;
--tw-scale-y: .95;
@@ -1039,9 +1006,6 @@ select {
.flex-nowrap {
flex-wrap: nowrap;
}
.items-end {
align-items: flex-end;
}
.items-center {
align-items: center;
}
@@ -1244,9 +1208,9 @@ select {
--tw-bg-opacity: 1;
background-color: rgb(229 231 235 / var(--tw-bg-opacity));
}
.bg-red-500 {
.bg-red-400 {
--tw-bg-opacity: 1;
background-color: rgb(239 68 68 / var(--tw-bg-opacity));
background-color: rgb(248 113 113 / var(--tw-bg-opacity));
}
.bg-gray-800 {
--tw-bg-opacity: 1;
@@ -1260,6 +1224,10 @@ select {
--tw-bg-opacity: 1;
background-color: rgb(248 250 252 / var(--tw-bg-opacity));
}
.bg-red-500 {
--tw-bg-opacity: 1;
background-color: rgb(239 68 68 / var(--tw-bg-opacity));
}
.bg-gray-600 {
--tw-bg-opacity: 1;
background-color: rgb(75 85 99 / var(--tw-bg-opacity));
@@ -1280,18 +1248,6 @@ select {
--tw-bg-opacity: 1;
background-color: rgb(96 165 250 / var(--tw-bg-opacity));
}
.bg-red-100 {
--tw-bg-opacity: 1;
background-color: rgb(254 226 226 / var(--tw-bg-opacity));
}
.bg-red-600 {
--tw-bg-opacity: 1;
background-color: rgb(220 38 38 / var(--tw-bg-opacity));
}
.bg-red-400 {
--tw-bg-opacity: 1;
background-color: rgb(248 113 113 / var(--tw-bg-opacity));
}
.bg-opacity-75 {
--tw-bg-opacity: 0.75;
}
@@ -1347,6 +1303,10 @@ select {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
}
.py-10 {
padding-top: 2.5rem;
padding-bottom: 2.5rem;
}
.px-6 {
padding-left: 1.5rem;
padding-right: 1.5rem;
@@ -1375,10 +1335,6 @@ select {
padding-top: 0.375rem;
padding-bottom: 0.375rem;
}
.py-10 {
padding-top: 2.5rem;
padding-bottom: 2.5rem;
}
.pb-6 {
padding-bottom: 1.5rem;
}
@@ -1406,24 +1362,9 @@ select {
.pb-1 {
padding-bottom: 0.25rem;
}
.pb-20 {
padding-bottom: 5rem;
}
.pt-5 {
padding-top: 1.25rem;
}
.pb-4 {
padding-bottom: 1rem;
}
.text-left {
text-align: left;
}
.text-center {
text-align: center;
}
.align-bottom {
vertical-align: bottom;
}
.font-sans {
font-family: Nunito, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
}
@@ -1451,14 +1392,14 @@ select {
font-size: 3rem;
line-height: 1;
}
.text-lg {
font-size: 1.125rem;
line-height: 1.75rem;
}
.text-4xl {
font-size: 2.25rem;
line-height: 2.5rem;
}
.text-lg {
font-size: 1.125rem;
line-height: 1.75rem;
}
.text-base {
font-size: 1rem;
line-height: 1.5rem;
@@ -1469,9 +1410,6 @@ select {
.font-semibold {
font-weight: 600;
}
.font-normal {
font-weight: 400;
}
.uppercase {
text-transform: uppercase;
}
@@ -1481,9 +1419,6 @@ select {
.leading-7 {
line-height: 1.75rem;
}
.leading-6 {
line-height: 1.5rem;
}
.tracking-wider {
letter-spacing: 0.05em;
}
@@ -1542,6 +1477,10 @@ select {
--tw-text-opacity: 1;
color: rgb(74 222 128 / var(--tw-text-opacity));
}
.text-gray-300 {
--tw-text-opacity: 1;
color: rgb(209 213 219 / var(--tw-text-opacity));
}
.text-gray-900 {
--tw-text-opacity: 1;
color: rgb(17 24 39 / var(--tw-text-opacity));
@@ -1558,10 +1497,6 @@ select {
--tw-text-opacity: 1;
color: rgb(229 231 235 / var(--tw-text-opacity));
}
.text-gray-300 {
--tw-text-opacity: 1;
color: rgb(209 213 219 / var(--tw-text-opacity));
}
.text-indigo-600 {
--tw-text-opacity: 1;
color: rgb(79 70 229 / var(--tw-text-opacity));
@@ -1612,11 +1547,6 @@ select {
--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-xl {
--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.outline-none {
outline: 2px solid transparent;
outline-offset: 2px;
@@ -1717,14 +1647,6 @@ select {
--tw-bg-opacity: 1;
background-color: rgb(147 197 253 / var(--tw-bg-opacity));
}
.hover\:bg-red-700:hover {
--tw-bg-opacity: 1;
background-color: rgb(185 28 28 / var(--tw-bg-opacity));
}
.hover\:bg-gray-50:hover {
--tw-bg-opacity: 1;
background-color: rgb(249 250 251 / var(--tw-bg-opacity));
}
.hover\:text-gray-500:hover {
--tw-text-opacity: 1;
color: rgb(107 114 128 / var(--tw-text-opacity));
@@ -1802,14 +1724,6 @@ select {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(199 210 254 / var(--tw-ring-opacity));
}
.focus\:ring-red-500:focus {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity));
}
.focus\:ring-indigo-500:focus {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity));
}
.focus\:ring-opacity-50:focus {
--tw-ring-opacity: 0.5;
}
@@ -1859,16 +1773,6 @@ select {
margin-bottom: -1px;
}
.sm\:my-8 {
margin-top: 2rem;
margin-bottom: 2rem;
}
.sm\:mx-0 {
margin-left: 0px;
margin-right: 0px;
}
.sm\:ml-64 {
margin-left: 16rem;
}
@@ -1881,26 +1785,10 @@ select {
margin-left: 1.5rem;
}
.sm\:mt-0 {
margin-top: 0px;
}
.sm\:ml-4 {
margin-left: 1rem;
}
.sm\:ml-3 {
margin-left: 0.75rem;
}
.sm\:block {
display: block;
}
.sm\:inline-block {
display: inline-block;
}
.sm\:flex {
display: flex;
}
@@ -1909,14 +1797,6 @@ select {
display: none;
}
.sm\:h-screen {
height: 100vh;
}
.sm\:h-10 {
height: 2.5rem;
}
.sm\:min-h-\[340px\] {
min-height: 340px;
}
@@ -1925,55 +1805,14 @@ select {
width: 16rem;
}
.sm\:w-full {
width: 100%;
}
.sm\:w-10 {
width: 2.5rem;
}
.sm\:w-auto {
width: auto;
}
.sm\:max-w-md {
max-width: 28rem;
}
.sm\:max-w-lg {
max-width: 32rem;
}
.sm\:flex-1 {
flex: 1 1 0%;
}
.sm\:translate-y-0 {
--tw-translate-y: 0px;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.sm\:scale-95 {
--tw-scale-x: .95;
--tw-scale-y: .95;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.sm\:scale-100 {
--tw-scale-x: 1;
--tw-scale-y: 1;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.sm\:flex-row-reverse {
flex-direction: row-reverse;
}
.sm\:items-start {
align-items: flex-start;
}
.sm\:items-center {
align-items: center;
}
@@ -1994,14 +1833,6 @@ select {
border-radius: 0.5rem;
}
.sm\:p-0 {
padding: 0px;
}
.sm\:p-6 {
padding: 1.5rem;
}
.sm\:px-6 {
padding-left: 1.5rem;
padding-right: 1.5rem;
@@ -2016,28 +1847,11 @@ select {
padding-top: 0px;
}
.sm\:pb-4 {
padding-bottom: 1rem;
}
.sm\:text-left {
text-align: left;
}
.sm\:align-middle {
vertical-align: middle;
}
.sm\:text-2xl {
font-size: 1.5rem;
line-height: 2rem;
}
.sm\:text-sm {
font-size: 0.875rem;
line-height: 1.25rem;
}
.sm\:shadow-none {
--tw-shadow: 0 0 #0000;
--tw-shadow-colored: 0 0 #0000;

View File

@@ -34,6 +34,7 @@
<a href="javascript:void(0)" data-tab-name="bbcode" class="hover:bg-gray-100 flex justify-center items-center px-8 py-2 border-b-2 border-transparent">BBCode</a>
<a href="javascript:void(0)" data-tab-name="markdown" class="hover:bg-gray-100 flex justify-center items-center px-8 py-2 border-b-2 border-transparent">Markdown</a>
<a href="javascript:void(0)" data-tab-name="markdown_with_link" class="hover:bg-gray-100 flex justify-center items-center px-8 py-2 border-b-2 border-transparent whitespace-nowrap">Markdown with link</a>
<a href="javascript:void(0)" data-tab-name="thumbnail_url" class="hover:bg-gray-100 flex justify-center items-center px-8 py-2 border-b-2 border-transparent whitespace-nowrap">Thumbnail url</a>
</div>
<div id="links" class="mt-2">
<div data-tab="url" class="space-y-2"></div>
@@ -41,6 +42,7 @@
<div data-tab="bbcode" class="hidden space-y-2"></div>
<div data-tab="markdown" class="hidden space-y-2"></div>
<div data-tab="markdown_with_link" class="hidden space-y-2"></div>
<div data-tab="thumbnail_url" class="hidden space-y-2"></div>
</div>
</div>
</div>

View File

@@ -754,6 +754,11 @@
classes: ['copy'],
attributes: {"data-link-type": "markdown_with_link"},
},
{
text: 'Thumbnail url',
classes: ['copy'],
attributes: {"data-link-type": "thumbnail_url"},
},
],
visible: () => ds.getSelection().length === 1,
},