-13
.editorconfig
-13
.editorconfig
-14
.gitignore
-14
.gitignore
-1
.mailmap
-1
.mailmap
···
1
-
Mary <git@mary.my.id> <pineapplecreamcheese@skiff.com>
.nojekyll
.nojekyll
This is a binary file and will not be displayed.
-1
.prettierignore
-1
.prettierignore
···
1
-
pnpm-lock.yaml
-18
.prettierrc
-18
.prettierrc
···
1
-
{
2
-
"trailingComma": "all",
3
-
"useTabs": true,
4
-
"tabWidth": 2,
5
-
"printWidth": 110,
6
-
"semi": true,
7
-
"singleQuote": true,
8
-
"bracketSpacing": true,
9
-
"plugins": ["prettier-plugin-css-order"],
10
-
"overrides": [
11
-
{
12
-
"files": ["tsconfig.json", "jsconfig.json"],
13
-
"options": {
14
-
"parser": "jsonc"
15
-
}
16
-
}
17
-
]
18
-
}
-4
.vscode/settings.json
-4
.vscode/settings.json
-17
LICENSE
-17
LICENSE
···
1
-
Permission is hereby granted, free of charge, to any person obtaining a copy
2
-
of this software and associated documentation files (the "Software"), to deal
3
-
in the Software without restriction, including without limitation the rights
4
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
5
-
copies of the Software, and to permit persons to whom the Software is
6
-
furnished to do so, subject to the following conditions:
7
-
8
-
The above copyright notice and this permission notice shall be included in all
9
-
copies or substantial portions of the Software.
10
-
11
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
17
-
SOFTWARE.
-77
README.md
-77
README.md
···
1
-
# <bluesky-post>
2
-
3
-
A custom element for embedding Bluesky posts. [Live demo](https://mary-ext.github.io/bluesky-post-embed)
4
-
5
-
- **Lightweight**, the entire package + dependencies is only 24 KB (7 KB gzipped)
6
-
- **Standalone**, no additional middleman involved, connects straight to Bluesky's API
7
-
8
-
## Installation
9
-
10
-
### via package manager
11
-
12
-
This custom element is available on npm.
13
-
14
-
```
15
-
npm install bluesky-post-embed
16
-
```
17
-
18
-
Then, import the package on your app.
19
-
20
-
```js
21
-
import 'bluesky-post-embed';
22
-
```
23
-
24
-
### via CDN
25
-
26
-
If you like, you can also rely on CDN services like esm.sh or JSDelivr.
27
-
28
-
```html
29
-
<script type="module" src="https://esm.sh/bluesky-post-embed@~0.1.0"></script>
30
-
```
31
-
32
-
## Usage
33
-
34
-
Bluesky posts can be embedded like so:
35
-
36
-
```html
37
-
<bluesky-post src="https://bsky.app/profile/pfrazee.com/post/3kj2umze7zj2n" theme="light">
38
-
<blockquote class="bluesky-post-fallback">
39
-
<p dir="auto">angel mode</p>
40
-
— Paul Frazee ๐ฆ (@pfrazee.com)
41
-
<a href="https://bsky.app/profile/pfrazee.com/post/3kj2umze7zj2n">January 16, 2024</a>
42
-
</blockquote>
43
-
</bluesky-post>
44
-
```
45
-
46
-
Adding a fallback content like above is heavily recommended for progressive enhancement.
47
-
48
-
### Attributes
49
-
50
-
- `src` **Required**
51
-
A `bsky.app` URL of the post.
52
-
Heavily recommended that the URL points to a DID instead of a handle, otherwise, it would have to
53
-
resolve the handle into DID first (and suffer from issues like users changing their handles, etc)
54
-
An example of such URL would be: https://bsky.app/profile/did:plc:ragtjsm2j2vknwkz3zp4oxrd/post/3kj2umze7zj2n
55
-
- `contextless` **Optional**
56
-
Prevent displaying of context when `src` points to a reply.
57
-
- `theme` **Semi-required**
58
-
The color palette that it should use, either `light` or `dark`.
59
-
Set this to blank if you're setting a custom color palette.
60
-
- `service-uri` **Optional**
61
-
URL to an AppView service, defaults to `https://public.api.bsky.app`
62
-
63
-
### Events
64
-
65
-
- `loaded`
66
-
Fired when the embed has successfully loaded the post
67
-
- `error`
68
-
Fired when the embed fails to load the post
69
-
70
-
## SSR usage
71
-
72
-
The core of this package is a static HTML renderer, so long as your framework of
73
-
choice has the means to deal with declarative shadow DOM, then it's possible to
74
-
generate a completely static embed without any JavaScript in the client.
75
-
76
-
See [this repository](https://github.com/mary-ext/astro-bluesky-post) for an
77
-
SSR demo made in Astro.
+1
assets/GuideInstructions-B8N7RzmZ.css
+1
assets/GuideInstructions-B8N7RzmZ.css
···
1
+
.code-block.svelte-ipr7k2{display:flex;gap:12px;border:1px solid #d1d5db;border-radius:4px;background:#f9fafb;padding:12px;overflow:hidden;overflow-x:auto;pre:where(.svelte-ipr7k2){flex-grow:1;margin:0;font-size:.75rem;line-height:1.25rem}}.actions.svelte-ipr7k2{position:sticky;top:0;right:0}.action-button.svelte-ipr7k2{display:flex;justify-content:center;align-items:center;cursor:pointer;box-shadow:0 1px 3px #0000001a,0 1px 2px -1px #0000001a;border:1px solid #d1d5db;border-radius:4px;background:#fff;padding:0;width:32px;height:32px;color:#4b5563;@media(pointer:fine){opacity:0;transition:75ms ease-in;.code-block:where(.svelte-ipr7k2):hover &,.code-block:where(.svelte-ipr7k2):focus-within &{opacity:1}&:hover{border-color:#9ca3af;background:#e5e7eb;color:#1f2937}}&:active{border-color:#9ca3af;background:#e5e7eb;color:#1f2937}}.icon.svelte-ipr7k2{width:16px;height:16px}.guide.svelte-1wxv0ke{margin:36px 0 0;border-top:1px solid #d1d5db}.guide-header.svelte-1wxv0ke{margin:36px 0 16px}.guide-instructions.svelte-mki4x9{margin:24px 0 0;padding:0 0 0 22px;font-size:.875rem;line-height:1.25rem;li+li{margin:24px 0 0}}
+1
assets/GuideInstructions-CTis8QB-.js
+1
assets/GuideInstructions-CTis8QB-.js
···
1
+
import{t as e,m as t,r as s,n as r,o as n,q as a,v as o,w as i,x as c,p as l,f as d,k as p,c as h,i as u,a as f,b as v,y,z as g}from"./index-CD_0uzJz.js";function w(e){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function b(o,i,c=!1,l=!1,d=!1){var p=o,h="";e(()=>{var e=t;if(h!==(h=i()??"")&&(null!==e.nodes&&(s(e.nodes.start,e.nodes.end),e.nodes=null),""!==h)){var o=h+"";c?o=`<svg>${o}</svg>`:l&&(o=`<math>${o}</math>`);var d=r(o);if((c||l)&&(d=a(d)),n(a(d),d.lastChild),c||l)for(;a(d);)p.before(a(d));else p.before(d)}})}function k(e){null===o&&w(),function(e){null===o&&w(),i(()=>{const t=c(e);if("function"==typeof t)return t})}(()=>()=>c(e))}const x=({service:e,fetch:t=fetch})=>async(s,r)=>{const n=new URL(s,e);return await t(n,r)},m=(e,t)=>{let s;for(const r in t){const n=t[r];null!==n&&(s??=new Headers(e),s.has(r)||s.set(r,n))}return s??e};class j extends Error{constructor(e,{kind:t=`HTTP error ${e}`,description:s="Unspecified error description",headers:r,cause:n}={}){super(`${t} > ${s}`,{cause:n}),this.name="XRPCError",this.status=e,this.kind=t,this.description=s,this.headers=r||{}}}class ${constructor({handler:e,proxy:t}){this.handle=(e=>"object"==typeof e?e.handle.bind(e):e)(e),this.proxy=t}get(e,t){return this.request({type:"get",nsid:e,...t})}call(e,t){return this.request({type:"post",nsid:e,...t})}async request(e){const t=e.data,s=`/xrpc/${e.nsid}`+O(e.params),r=q(t),n=await this.handle(s,{method:e.type,signal:e.signal,body:r?JSON.stringify(t):t,headers:m(e.headers,{"content-type":r?"application/json":null,"atproto-proxy":C(this.proxy)})}),a=n.status,o=Object.fromEntries(n.headers),i=o["content-type"];let c,l;i&&(i.startsWith("application/json")?c=n.json():i.startsWith("text/")&&(c=n.text()));try{l=await(c||n.arrayBuffer().then(e=>new Uint8Array(e)))}catch(d){throw new j(2,{cause:d,kind:"InvalidResponse",description:"Failed to parse response body",headers:o})}if(200===a)return{data:l,headers:o};if(A(l))throw new j(a,{kind:l.error,description:l.message,headers:o});throw new j(a,{headers:o})}}const C=e=>e?`${e.service}#${e.type}`:null,O=e=>{let t;for(const s in e){const r=e[s];if(void 0!==r)if(t??=new URLSearchParams,Array.isArray(r))for(let e=0,n=r.length;e<n;e++){const n=r[e];t.append(s,""+n)}else t.set(s,""+r)}return t?"?"+t.toString():""},q=e=>{if("object"!=typeof e||null===e)return!1;if("toJSON"in e)return!0;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype},A=e=>{if("object"!=typeof e||null===e)return!1;const t=typeof e.error,s=typeof e.message;return!("undefined"!==t&&"string"!==t||"undefined"!==s&&"string"!==s)},E=e=>e.replace(/[<"&]/g,e=>"&#"+e.charCodeAt(0)+";");var H=d('<div class="code-block svelte-ipr7k2"><pre class="svelte-ipr7k2"><code> </code></pre> <div class="actions svelte-ipr7k2"><button title="Copy" aria-label="Copy" class="action-button svelte-ipr7k2"><svg class="icon svelte-ipr7k2" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="square" stroke-width="2" d="M15 5h4v16H5V5h4m0-2h6v4H9V3Z"></path></svg></button></div></div>');function P(t,s){l(s,!0);var r=H(),n=h(r),a=h(n),o=h(a),i=p(n,2);h(i).__click=()=>{navigator.clipboard.writeText(s.code).catch(()=>alert("Failed to copy to clipboard"))},e(()=>u(o,s.code)),f(t,r),v()}y(["click"]);var R=d('<div class="guide svelte-1wxv0ke"><h4 class="guide-header svelte-1wxv0ke"> </h4> <!></div>');function S(t,s){var r=R(),n=h(r),a=h(n),o=p(n,2);g(o,()=>s.children),e(()=>u(a,s.title)),f(t,r)}var U=d('<ol class="guide-instructions svelte-mki4x9"><!></ol>');function _(e,t){var s=U(),r=h(s);g(r,()=>t.children),f(e,s)}export{P as C,S as G,$ as X,j as a,_ as b,E as e,b as h,k as o,x as s};
+1
assets/PostDisplay-CqTUAVla.js
+1
assets/PostDisplay-CqTUAVla.js
···
1
+
import{p as e,f as s,t as a,s as t,a as i,b as r,c as l,d as n,e as p,g as d,B as o,h as c,i as h,j as u,k as m,l as f,u as v,C as b}from"./index-CD_0uzJz.js";import{X as k,s as y,a as g,h as $,o as w,G as x,b as z,C as q,e as Z}from"./GuideInstructions-CTis8QB-.js";import{s as A}from"./index-Cr8Vao8y.js";const F=/[&"<]/g,C=/[&<]/g;function M(e,s){const a=String(e??""),t=s?F:C;t.lastIndex=0;let i="",r=0;for(;t.test(a);){const e=t.lastIndex-1,s=a[e];i+=a.substring(r,e)+("&"===s?"&":'"'===s?""":"<"),r=e+1}return i+a.substring(r)}function N(e,s,a=!1){if("hidden"===e&&"until-found"!==s&&(a=!0),null==s||!s&&a)return"";return` ${e}${a?"":`="${M(s,!0)}"`}`}function _(e,s,a){var t=function(e,s){var a=null==e?"":""+e;return s&&(a=a?a+" "+s:s),""===a?null:a}(e,s);return t?` class="${M(t,!0)}"`:""}function B(e,s){var a=function(e){return null==e?null:String(e)}(e);return a?` style="${M(a,!0)}"`:""}function S(e,s){const{children:a}=s;e.push('<div class="bluesky-embed s-3olstj">'),a(e),e.push("</div>")}const U=e=>`https://bsky.app/profile/${e}`,T=(e,s)=>`https://bsky.app/profile/${e}/post/${s}`,I=e=>`https://bsky.app/hashtag/${e}`,R=(e,s)=>`https://bsky.app/profile/${e}/feed/${s}`;let D=0,H=0;const j=new Intl.DateTimeFormat("en-US",{dateStyle:"long",timeStyle:"short"}),P=new Intl.DateTimeFormat("en-US",{dateStyle:"medium"}),V=new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric"}),G=e=>{const s=new Date(e),a=s.getTime();if(isNaN(a))return"N/A";const t=Date.now();if(t>H){const e=new Date(t);e.setMonth(0,1),e.setHours(0,0,0),D=e.getTime(),e.setFullYear(e.getFullYear()+1,0,0),e.setHours(23,59,59,999),H=e.getTime()}return a>=D&&a<=H?V.format(s):P.format(s)},L=e=>{const s=new Date(e);return isNaN(s.getTime())?"N/A":j.format(s)},W={"!hide":{name:"Hidden by moderators",flags:1},"!warn":{name:"Content warning",flags:1},porn:{name:"Adult content",flags:0},sexual:{name:"Sexually suggestive",flags:0},"graphic-media":{name:"Graphic media",flags:0},nudity:{name:"Nudity",flags:0}},E=(e,s)=>{if(e?.length)for(let a=0,t=e.length;a<t;a++){const t=e[a],i=t.val;if(!(i in W))continue;const r=W[i];if(!(1&r.flags&&t.src===s))return r}},Y=new Intl.NumberFormat("en-US"),J=new Intl.NumberFormat("en-US",{notation:"compact"}),K=e=>e<1e3?""+e:e<1e5?Y.format(e):J.format(e),X=e=>Y.format(e),O=/^at:\/\/((?:did:[a-zA-Z0-9._:%-]+)|(?:[a-zA-Z0-9][a-zA-Z0-9-.]*))(?:\/([a-zA-Z0-9.-]+)(?:\/([a-zA-Z0-9_~.:-]{1,512}))?)?\/?(?:\?([^#\s]*))?(?:#([^\s]*))?$/,Q=e=>{const s=O.exec(e);if(!s)throw new ee(`invalid at-uri: ${e}`);return{repo:s[1],collection:s[2]??"",rkey:s[3]??"",query:s[4]??"",fragment:s[5]??""}};let ee=class extends Error{};function se(e,s){{const{embed:a}=s,t=a.external,i=(e=>{let s;if("parse"in URL)s=URL.parse(e);else try{s=new URL(e)}catch{}return!s||"https:"!==s.protocol&&"http:"!==s.protocol?null:s})(t.uri)?.host;e.push(`<a target="_blank"${N("href",i&&t.uri)} rel="noopener noreferrer nofollow" class="external-embed s-rtbqd8">`),t.thumb&&e.push(`<img loading="lazy"${N("src",t.thumb)} alt="" class="thumbnail s-rtbqd8"/>`),e.push(` <div class="meta s-rtbqd8"><p class="title s-rtbqd8">${M(t.title)}</p> <p class="description s-rtbqd8">${M(t.description)}</p> `),i&&e.push(`<div class="domain s-rtbqd8"><svg class="icon" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="m4.172 8.07 3.94 2.957.977-1.941 3.887-.978 1.15-4.6M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-6.078 4.865.973-1.946-2.869-1.928-1.89-.12-1.08 1.075 1.947 2.919h2.919Z"></path></svg> <span class="domain-name">${M(i)}</span></div>`),e.push("</div></a>")}}const ae={width:16,height:9};function te(e,s){{const{embed:a,borderless:t,standalone:i,blur:r}=s,l=a.images,n=l.length;function p(e,s){const a=l[s];e.push(`<img loading="lazy"${N("src",a.thumb)}${N("alt",a.alt)}${_("image"+(r?" is-blurred":""),"s-t3k6fc")}/>`)}if(e.push(`<div${_("image-embed"+(t?"":" is-bordered")+(i&&1===n?" is-aligned":""),"s-t3k6fc")}>`),4===n)e.push('<div class="grid s-t3k6fc"><div class="col s-t3k6fc"><div class="item wide tl s-t3k6fc">'),p(e,0),e.push('</div> <div class="item wide bl s-t3k6fc">'),p(e,2),e.push('</div></div> <div class="col s-t3k6fc"><div class="item wide tr s-t3k6fc">'),p(e,1),e.push('</div> <div class="item wide br s-t3k6fc">'),p(e,3),e.push("</div></div></div>");else if(3===n)e.push('<div class="grid s-t3k6fc"><div class="col square s-t3k6fc"><div class="item tl bl s-t3k6fc">'),p(e,0),e.push('</div></div> <div class="col square s-t3k6fc"><div class="item tr s-t3k6fc">'),p(e,1),e.push('</div> <div class="item br s-t3k6fc">'),p(e,2),e.push("</div></div></div>");else if(2===n)e.push('<div class="grid s-t3k6fc"><div class="col s-t3k6fc"><div class="item square tl bl s-t3k6fc">'),p(e,0),e.push('</div></div> <div class="col s-t3k6fc"><div class="item square tr br s-t3k6fc">'),p(e,1),e.push("</div></div></div>");else if(1===n){const d=i&&(l[0].aspectRatio||ae);e.push(`<div${_("single-item tl tr bl br"+(d?" is-standalone":""),"s-t3k6fc")}${B(d?`aspect-ratio: ${d.width}/${d.height}`:"")}>`),p(e,0),e.push(" "),d&&e.push('<div class="placeholder s-t3k6fc"></div>'),e.push("</div>")}e.push("</div>")}}function ie(e,s){{const{post:a,embed:t,borderless:i,standalone:r,blur:l}=s,n=r&&t.aspectRatio,p=a&&T(a.author.did,Q(a.uri).rkey);function d(e){e.push(`<img loading="lazy"${N("src",t.thumbnail)} alt=""${_("thumbnail"+(l?" is-blurred":""),"s-1azk58e")}/> `),n&&e.push('<div class="placeholder s-1azk58e"></div>'),e.push(' <div class="play s-1azk58e"><svg class="icon s-1azk58e" fill="none" viewBox="0 0 24 24"><path fill="currentColor" d="M22 12 5 2v20l17-10Z"></path></svg></div>')}r?(e.push(`<a target="_blank"${N("href",p)}${_("video-embed"+(i?"":" is-bordered")+(r?" is-standalone":""),"s-1azk58e")}><div class="constrainer s-1azk58e"${B(n?`aspect-ratio: ${n.width}/${n.height}`:"")}>`),d(e),e.push("</div></a>")):(e.push(`<div${_("video-embed"+(i?"":" is-bordered"),"s-1azk58e")}${B(n?`aspect-ratio: ${n.width}/${n.height}`:"")}>`),d(e),e.push("</div>"))}}const re=e=>{if(e){if("app.bsky.embed.images#view"===e.$type)return e;if("app.bsky.embed.recordWithMedia#view"===e.$type)return re(e.media)}},le=e=>{if(e){if("app.bsky.embed.video#view"===e.$type)return e;if("app.bsky.embed.recordWithMedia#view"===e.$type)return le(e.media)}};function ne(e,s){e.push(`<div class="message s-azdpbr">${M(s)}</div>`)}function pe(e,s){{const{post:a,embed:t,large:i=!1}=s;function r(e,s){!function(e,s){{const{warning:a,children:t}=s;a?(e.push(`<details class="content-hider s-q6x07m"><summary class="gate s-q6x07m"><svg class="icon s-q6x07m" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="square" stroke-width="2" d="M11 11h1v5m9-4a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"></path><path fill="currentColor" stroke="currentColor" stroke-width=".5" d="M11.5 7.25h-.25v1.5h1.5v-1.5H11.5Z"></path></svg> <span class="label s-q6x07m">${M(a.name)}</span> <span class="action s-q6x07m"></span></summary> `),t(e),e.push("</details>")):t(e)}}(e,{warning:a&&E(a.labels,a.author.did),children:e=>{"app.bsky.embed.external#view"===s.$type?se(e,{embed:s}):"app.bsky.embed.images#view"===s.$type?te(e,{embed:s,standalone:!0}):"app.bsky.embed.video#view"===s.$type?ie(e,{post:a,embed:s,standalone:!0}):ne(e,"Unsupported media embed")}})}function l(e,s){const a=s.record;if("app.bsky.embed.record#viewRecord"===a.$type)!function(e,s){{const{embed:a,large:t=!1}=s,i=a.value,r=i.text.trim(),l=a.author,n=l.displayName?.trim(),p=a.embeds?.[0],d=re(p),o=le(p),c=T(l.did,Q(a.uri).rkey),h=!!E(a.labels,l.did);e.push(`<a target="_blank"${N("href",c)} class="quote-embed s-za6fip"><div class="meta s-za6fip"><div class="avatar-wrapper s-za6fip">`),l.avatar&&e.push(`<img loading="lazy"${N("src",l.avatar)} alt="" class="avatar s-za6fip"/>`),e.push('</div> <span class="name-wrapper s-za6fip">'),n&&e.push(`<bdi class="display-name-wrapper s-za6fip"><span class="display-name s-za6fip">${M(n)}</span></bdi>`),e.push(` <span class="handle s-za6fip">@${M(l.handle)}</span></span> <span aria-hidden="true" class="dot s-za6fip">ยท</span> <time${N("datetime",i.createdAt)} class="date s-za6fip">${M(G(i.createdAt))}</time></div> `),r?(e.push('<div class="body s-za6fip">'),t||(d?(e.push('<div class="aside s-za6fip">'),te(e,{embed:d,blur:h}),e.push("</div>")):o&&(e.push('<div class="aside s-za6fip">'),ie(e,{embed:o,blur:h}),e.push("</div>"))),e.push(` <p class="text s-za6fip">${M(r)}</p></div>`)):e.push('<div class="divide s-za6fip"></div>'),e.push(" "),!t&&r||(d?te(e,{embed:d,borderless:!0,blur:h}):o&&ie(e,{embed:o,borderless:!0,blur:h})),e.push("</a>")}}(e,{embed:a,large:i});else if("app.bsky.feed.defs#generatorView"===a.$type)!function(e,s){{const{embed:a}=s,t=a.creator,i=R(t.did,Q(a.uri).rkey);e.push(`<a target="_blank"${N("href",i)} class="feed-embed s-156tlwp"><div class="main s-156tlwp"><div class="avatar-wrapper s-156tlwp">`),a.avatar?e.push(`<img loading="lazy"${N("src",a.avatar)} alt="" class="avatar s-156tlwp"/>`):e.push('<svg viewBox="0 0 32 32" class="avatar s-156tlwp"><path fill="#0070FF" d="M0 0h32v32H0z"></path><path fill="#fff" d="M22.153 22.354a9.328 9.328 0 0 0 3.837-.491 3.076 3.076 0 0 0-4.802-2.79m.965 3.281a6.128 6.128 0 0 0-.965-3.28Zm-11.342-3.28a3.077 3.077 0 0 0-4.801 2.79 9.21 9.21 0 0 0 3.835.49m.966-3.28a6.127 6.127 0 0 0-.966 3.28Zm8.265-8.997a3.076 3.076 0 1 1-6.153 0 3.076 3.076 0 0 1 6.153 0Zm6.154 3.077a2.307 2.307 0 1 1-4.615 0 2.307 2.307 0 0 1 4.615 0Zm-13.847 0a2.307 2.307 0 1 1-4.614 0 2.307 2.307 0 0 1 4.614 0Z"></path><path fill="#fff" d="M22 22c0 3.314-2.686 3.5-6 3.5s-6-.186-6-3.5a6 6 0 0 1 12 0Z"></path></svg>'),e.push(`</div> <div class="info"><p class="name s-156tlwp">${M(a.displayName)}</p> <p class="creator s-156tlwp">Feed by @${M(t.handle)}</p></div></div> <p class="description s-156tlwp">${M(a.description)}</p></a>`)}}(e,{embed:a});else if("app.bsky.graph.defs#listView"===a.$type)!function(e,s){{const{embed:a}=s,t=a.creator,i=R(t.did,Q(a.uri).rkey);e.push(`<a target="_blank"${N("href",i)} class="list-embed s-6uize5"><div class="main s-6uize5"><div class="avatar-wrapper s-6uize5">`),a.avatar?e.push(`<img loading="lazy"${N("src",a.avatar)} alt="" class="avatar s-6uize5"/>`):e.push('<svg viewBox="0 0 32 32" class="avatar s-6uize5"><path fill="#0070FF" d="M0 0h32v32H0z"></path><path fill="#fff" d="M22.153 22.354a9.328 9.328 0 0 0 3.837-.491 3.076 3.076 0 0 0-4.802-2.79m.965 3.281a6.128 6.128 0 0 0-.965-3.28Zm-11.342-3.28a3.077 3.077 0 0 0-4.801 2.79 9.21 9.21 0 0 0 3.835.49m.966-3.28a6.127 6.127 0 0 0-.966 3.28Zm8.265-8.997a3.076 3.076 0 1 1-6.153 0 3.076 3.076 0 0 1 6.153 0Zm6.154 3.077a2.307 2.307 0 1 1-4.615 0 2.307 2.307 0 0 1 4.615 0Zm-13.847 0a2.307 2.307 0 1 1-4.614 0 2.307 2.307 0 0 1 4.614 0Z"></path><path fill="#fff" d="M22 22c0 3.314-2.686 3.5-6 3.5s-6-.186-6-3.5a6 6 0 0 1 12 0Z"></path></svg>'),e.push(`</div> <div class="info"><p class="name s-6uize5">${M(a.name)}</p> <p class="creator s-6uize5">${M((e=>{switch(e){case"app.bsky.graph.defs#curatelist":return"User list";case"app.bsky.graph.defs#modlist":return"Moderation list"}return"Unknown list"})(a.purpose))} by @${M(t.handle)}</p></div></div> <p class="description s-6uize5">${M(a.description)}</p></a>`)}}(e,{embed:a});else if("app.bsky.graph.defs#starterPackViewBasic"===a.$type)!function(e,s){{const{embed:a,large:t=!1}=s,i=a.record,r=a.creator,l=r.did,n=Q(a.uri).rkey,p=((e,s)=>`https://bsky.app/starter-pack/${e}/${s}`)(l,n);if(e.push(`<a target="_blank"${N("href",p)} class="starterpack-embed s-15v965v">`),t){const s=((e,s)=>`https://ogcard.cdn.bsky.app/start/${e}/${s}`)(l,n);e.push(`<img loading="lazy"${N("src",s)} alt="" class="banner s-15v965v"/>`)}e.push(` <div class="meta s-15v965v"><div class="main s-15v965v"><svg fill="none" viewBox="0 0 24 24" class="avatar s-15v965v"><defs><linearGradient id="a" x1="0" x2="100%" y1="0" y2="0" gradientTransform="rotate(45)"><stop offset="0" stop-color="#0A7AFF"></stop><stop offset="1" stop-color="#59B9FF"></stop></linearGradient></defs><path fill="url(#a)" fill-rule="evenodd" d="M11.26 5.227 5.02 6.899c-.734.197-1.17.95-.973 1.685l1.672 6.24c.197.734.951 1.17 1.685.973l6.24-1.672a1.376 1.376 0 0 0 .973-1.685L12.945 6.2a1.375 1.375 0 0 0-1.685-.973Zm-6.566.459a2.632 2.632 0 0 0-1.86 3.223l1.672 6.24a2.632 2.632 0 0 0 3.223 1.861l6.24-1.672a2.631 2.631 0 0 0 1.861-3.223l-1.672-6.24a2.632 2.632 0 0 0-3.223-1.861l-6.24 1.672Z" clip-rule="evenodd"></path><path fill="url(#a)" fill-rule="evenodd" d="M15.138 18.411a4.606 4.606 0 1 0 0-9.211 4.606 4.606 0 0 0 0 9.211Zm0 1.257a5.862 5.862 0 1 0 0-11.724 5.862 5.862 0 0 0 0 11.724Z" clip-rule="evenodd"></path></svg> <div class="info"><p class="name s-15v965v">${M(i.name)}</p> <p class="creator s-15v965v">Starter pack by @${M(r.handle)}</p></div></div> <p class="description s-15v965v">${M(i.description)}</p></div></a>`)}}(e,{embed:a,large:i});else{const s=(e=>{switch(e){case"app.bsky.feed.post":return"post";case"app.bsky.feed.generator":return"feed";case"app.bsky.graph.list":return"list";case"app.bsky.graph.starterpack":return"starter pack";case"app.bsky.labeler.service":return"labeler"}return null})(Q(a.uri).collection);ne(e,s&&("app.bsky.embed.record#viewNotFound"===a.$type||"app.bsky.embed.record#viewBlocked"===a.$type||"app.bsky.embed.record#viewDetached"===a.$type)?`This ${s} is unavailable`:"Unsupported record embed")}}e.push('<div class="embeds s-azdpbr">'),"app.bsky.embed.recordWithMedia#view"===t.$type?(r(e,t.media),e.push(" "),l(e,t.record)):"app.bsky.embed.record#view"===t.$type?l(e,t):r(e,t),e.push("</div>")}}const de=e=>e?.find(e=>"app.bsky.richtext.facet#link"===e.$type||"app.bsky.richtext.facet#mention"===e.$type||"app.bsky.richtext.facet#tag"===e.$type);function oe(e,s){{const{text:a,facets:t,large:i}=s;e.push(`<p${_("rich-text"+(i?" is-large":" is-small"),"s-1lecfnd")}>`);const r=A(a,t);for(let s=0,l=r.length;s<l;s++){let a=r[s];const t=de(a.features);t?"app.bsky.richtext.facet#link"===t.$type?e.push(`<a target="_blank"${N("href",t.uri)} rel="noopener nofollow" class="link s-1lecfnd">${M(a.text)}</a>`):"app.bsky.richtext.facet#mention"===t.$type?e.push(`<a target="_blank"${N("href",U(t.did))} class="mention s-1lecfnd">${M(a.text)}</a>`):"app.bsky.richtext.facet#tag"===t.$type&&e.push(`<a target="_blank"${N("href",I(t.tag))} class="hashtag s-1lecfnd">${M(a.text)}</a>`):e.push(`${M(a.text)}`)}e.push("</p>")}}function ce(e,s){{const{post:a,parent:t,prev:i=!1}=s,r=a.author,l=U(r.did),n=r.displayName?.trim(),p=a.record,d=T(r.did,Q(a.uri).rkey),o=a.replyCount||0,c=a.likeCount||0,h=(a.repostCount||0)+(a.quoteCount||0),u=!!E(r.labels,r.did);if(e.push(`<div class="highlighted-post s-hik11q"><div class="meta s-hik11q"><a${N("href",l)} target="_blank" class="avatar-wrapper s-hik11q">`),r.avatar&&e.push(`<img loading="lazy"${N("src",r.avatar)} alt=""${_("avatar"+(u?" is-blurred":""),"s-hik11q")}/>`),e.push(`</a> <a${N("href",l)} target="_blank" class="name-wrapper s-hik11q">`),n&&e.push(`<bdi class="display-name-wrapper s-hik11q"><span class="display-name s-hik11q">${M(n)}</span></bdi>`),e.push(` <span class="handle s-hik11q">@${M(r.handle)}</span></a> `),i||e.push('<svg class="logo s-hik11q" fill="none" viewBox="0 0 320 286"><path fill="#0A7AFF" d="M69.364 19.146c36.687 27.806 76.147 84.186 90.636 114.439 14.489-30.253 53.948-86.633 90.636-114.439C277.107-.917 320-16.44 320 32.957c0 9.865-5.603 82.875-8.889 94.729-11.423 41.208-53.045 51.719-90.071 45.357 64.719 11.12 81.182 47.953 45.627 84.785-80 82.874-106.667-44.333-106.667-44.333s-26.667 127.207-106.667 44.333c-35.555-36.832-19.092-73.665 45.627-84.785-37.026 6.362-78.648-4.149-90.071-45.357C5.603 115.832 0 42.822 0 32.957 0-16.44 42.893-.917 69.364 19.147Z"></path></svg>'),e.push("</div> "),!i&&p.reply){if(e.push('<p class="context s-hik11q">'),t){const s=t.author;e.push(`Replying to <a target="_blank"${N("href",U(s.did))} dir="auto" class="s-hik11q">${M(s.displayName?.trim()||`@${s.handle}`)}</a>`)}else e.push("Replying to an unknown post");e.push("</p>")}e.push(" "),oe(e,{text:p.text,facets:p.facets,large:!0}),e.push(" "),a.embed&&pe(e,{post:a,embed:a.embed,large:!0}),e.push(` <time${N("datetime",p.createdAt)} class="date s-hik11q">${M(L(p.createdAt))}</time> <div class="stats s-hik11q"><span class="stat s-hik11q"${N("title",1===c?`${X(c)} like`:`${X(c)} likes`)}><svg class="icon" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-width="2" d="M12 5.768c6.162-6.25 16.725 5.358 0 14.732C-4.725 11.126 5.838-.482 12 5.768Z"></path></svg> <span>${M(K(c))}</span></span> <span class="stat s-hik11q"${N("title",1===h?`${X(h)} repost`:`${X(h)} reposts`)}><svg class="icon" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="square" stroke-width="2" d="m17 3 3 3-3 3M7 21l-3-3 3-3m-2 3h15v-5M4 11V6h15"></path></svg> <span>${M(K(h))}</span></span> <div class="gap s-hik11q"></div> <a${N("href",d)} target="_blank" class="permalink s-hik11q"><span>${M(o?1===o?`Read ${K(o)} reply on Bluesky`:`Read ${K(o)} replies on Bluesky`:"View on Bluesky")}</span></a></div></div>`)}}function he(e,s){{const{post:a,parent:t,prev:i}=s,r=a.author,l=U(r.did),n=r.displayName?.trim(),p=a.record,d=T(r.did,Q(a.uri).rkey),o=!!E(r.labels,r.did);if(e.push('<div class="post s-12mzi62">'),i||e.push('<svg class="logo s-12mzi62" fill="none" viewBox="0 0 320 286"><path fill="#0A7AFF" d="M69.364 19.146c36.687 27.806 76.147 84.186 90.636 114.439 14.489-30.253 53.948-86.633 90.636-114.439C277.107-.917 320-16.44 320 32.957c0 9.865-5.603 82.875-8.889 94.729-11.423 41.208-53.045 51.719-90.071 45.357 64.719 11.12 81.182 47.953 45.627 84.785-80 82.874-106.667-44.333-106.667-44.333s-26.667 127.207-106.667 44.333c-35.555-36.832-19.092-73.665 45.627-84.785-37.026 6.362-78.648-4.149-90.071-45.357C5.603 115.832 0 42.822 0 32.957 0-16.44 42.893-.917 69.364 19.147Z"></path></svg>'),e.push(` <div class="aside s-12mzi62"><a target="_blank"${N("href",l)} class="avatar-wrapper s-12mzi62">`),r.avatar&&e.push(`<img loading="lazy"${N("src",r.avatar)} alt=""${_("avatar"+(o?" is-blurred":""),"s-12mzi62")}/>`),e.push(`</a> <div class="line s-12mzi62"></div></div> <div class="main s-12mzi62"><div class="meta s-12mzi62"><a${N("href",l)} target="_blank" class="name-wrapper s-12mzi62">`),n&&e.push(`<bdi class="display-name-wrapper s-12mzi62"><span class="display-name s-12mzi62">${M(n)}</span></bdi>`),e.push(` <span class="handle s-12mzi62">@${M(r.handle)}</span></a> <span aria-hidden="true" class="dot s-12mzi62">ยท</span> <a target="_blank"${N("href",d)}${N("title",L(p.createdAt))} class="date s-12mzi62"><time${N("datetime",p.createdAt)}>${M(G(p.createdAt))}</time></a></div> `),!i&&p.reply){if(e.push('<p class="context s-12mzi62">'),t){const s=t.author;e.push(`Replying to <a target="_blank"${N("href",U(s.did))} dir="auto" class="s-12mzi62">${M(s.displayName?.trim()||`@${s.handle}`)}</a>`)}else e.push("Replying to an unknown post");e.push("</p>")}e.push(" "),oe(e,{text:p.text,facets:p.facets}),e.push(" "),a.embed&&pe(e,{post:a,embed:a.embed}),e.push("</div></div>")}}function ue(e,s){S(e,{children:e=>{e.push(`<div class="message s-1q9cbx0">${M(s)}</div>`)}})}function me(e,s){{const{thread:a,contextless:t,allowUnauthenticated:i}=s,r=!i&&null!==a&&"app.bsky.feed.defs#threadViewPost"===a.$type&&a.post.author.labels?.some(e=>"!no-unauthenticated"===e.val);if(null===a)ue(e,"The post can't be found, it may have been deleted.");else if(r)ue(e,"The author has requested for their posts to not be displayed on external sites.");else{const s=((e,s,a)=>{const t=[];let i=0,r=s?1:2,l=e;for(;l&&"app.bsky.feed.defs#notFoundPost"!==l.$type&&"app.bsky.feed.defs#blockedPost"!==l.$type;){const e=l.post;if(0!==i&&(t[i-1].parent=e),++i>r)break;const s=e.author;if(!a&&s.labels?.some(e=>"!no-unauthenticated"===e.val))break;t.push({post:e,parent:null}),l=l.parent}return t.reverse()})(a,t,i);S(e,{children:e=>{const a=s;for(let t=0,i=a.length;t<i;t++){let{post:i,parent:r}=a[t];const l=0!==t;t===s.length-1?ce(e,{post:i,parent:r,prev:l}):he(e,{post:i,parent:r,prev:l})}}})}}}const fe=new Intl.DateTimeFormat("en-US",{dateStyle:"long",timeStyle:"short"}),ve=/^at:\/\/((?:did:[a-zA-Z0-9._:%-]+)|(?:[a-zA-Z0-9][a-zA-Z0-9-.]*))(?:\/([a-zA-Z0-9.-]+)(?:\/([a-zA-Z0-9_~.:-]{1,512}))?)?\/?(?:\?([^#\s]*))?(?:#([^\s]*))?$/;class be extends Error{}var ke=s("<bluesky-post><!></bluesky-post>",2);function ye(s,n){e(n,!0);var p=ke();a(()=>t(p,"src",n.data.thread?.post.uri));var d=l(p);$(d,()=>function(e,s={}){let a="";return me({push(e){a+=e}},s.props??{}),{body:a}}(0,{props:n.data}).body),i(s,p),r()}var ge=s('Doing server-side rendering? Check out examples for <a href="https://github.com/mary-ext/bluesky-embed-astro">Astro</a> and <a href="https://github.com/mary-ext/bluesky-embed-sveltekit">SvelteKit</a>.',1),$e=s("<li><p>Insert the following scripts and stylesheets to the <code><head></code> of your website.</p> <!></li> <li><p>Insert the following markup in wherever you want the post to be.</p> <!></li>",1),we=s("<!> <!>",1),xe=s("<!> <!>",1);function ze(s,t){let $;e(t,!0);const A=v(()=>{$?.abort(),$=new AbortController;const e=$.signal;return(async e=>{const s=new k({handler:y({service:e.serviceUri??"https://public.api.bsky.app"})}),a=e.contextless??!1,{data:t}=await s.get("app.bsky.feed.getPostThread",{signal:e.signal,params:{uri:e.uri,parentHeight:a?1:2,depth:0}}).catch(e=>e instanceof g&&"NotFound"===e.kind?{data:null}:Promise.reject(e));return{thread:"app.bsky.feed.defs#threadViewPost"===t?.thread.$type?t.thread:null,contextless:a,allowUnauthenticated:e.allowUnauthenticated??!1}})({uri:`at://${t.matched.author}/app.bsky.feed.post/${t.matched.rkey}`,signal:e})});w(()=>{$?.abort()});const F="https://cdn.jsdelivr.net/npm/bluesky-post-embed@^1.0.0",C=()=>`\x3c!-- Core web component and styling --\x3e\n<script type="module" src="${F}/+esm"><\/script>\n<link rel="stylesheet" href="${F}/dist/core.min.css">\n\n\x3c!-- Built-in themes --\x3e\n<link rel="stylesheet" href="${F}/themes/light.min.css" media="(prefers-color-scheme: light)">\n<link rel="stylesheet" href="${F}/themes/dim.min.css" media="(prefers-color-scheme: dark)">\n\n\x3c!-- Fallback/placeholder elements if JS script is taking a while to load or is failing --\x3e\n<style>\n .bluesky-post-fallback {\n margin: 16px 0;\n border-left: 3px solid var(--divider);\n padding: 4px 8px;\n white-space: pre-wrap;\n overflow-wrap: break-word;\n }\n .bluesky-post-fallback p {\n margin: 0 0 8px 0;\n }\n</style>\n`,M=e=>{const s=e.author,a=e.record;return`<bluesky-post src="${Z(e.uri)}">\n <blockquote class="bluesky-post-fallback">\n <p dir="auto">${Z(a.text)}</p>\n โ ${s.displayName?.trim()?`${Z(s.displayName)} (@${Z(s.handle)})`:`@${Z(s.handle)}`}\n <a href="${Z(((e,s)=>`https://bsky.app/profile/${e}/post/${s}`)(s.did,(e=>{const s=ve.exec(e);if(!s)throw new be(`invalid at-uri: ${e}`);return{repo:s[1],collection:s[2]??"",rkey:s[3]??"",query:s[4]??"",fragment:s[5]??""}})(e.uri).rkey))}">${(e=>{const s=new Date(e);return isNaN(s.getTime())?"N/A":fe.format(s)})(e.indexedAt)}</a>\n </blockquote>\n</bluesky-post>\n`};var N=n(),_=p(N);d(_,()=>u(A),e=>{b(e)},(e,s)=>{var a=xe(),t=p(a);ye(t,{get data(){return u(s)}});var r=m(t,2),n=e=>{x(e,{title:"How do I embed this to my website?",children:(e,a)=>{var t=we(),r=p(t);o(r,{type:"inform",children:(e,s)=>{var a=ge();i(e,a)}});var n=m(r,2);z(n,{children:(e,a)=>{var t=$e(),r=p(t),n=m(l(r),2);{let e=v(C);q(n,{get code(){return u(e)}})}var d=m(r,2),o=m(l(d),2);{let e=v(()=>M(u(s).thread.post));q(o,{get code(){return u(e)}})}i(e,t)}}),i(e,t)}})};f(r,e=>{u(s).thread&&e(n)}),i(e,a)},(e,s)=>{o(e,{type:"alert",children:(e,t)=>{var r=c();a(()=>h(r,""+u(s))),i(e,r)}})}),i(s,N),r()}export{ze as default};
+1
assets/PostDisplay-yMSDBkol.css
+1
assets/PostDisplay-yMSDBkol.css
···
1
+
.bluesky-embed.s-3olstj{position:relative;box-sizing:border-box;margin:0 auto;border:1px solid var(--divider);border-radius:8px;background:var(--background-primary);min-width:250px;max-width:550px;overflow:hidden;color:var(--text-primary);font-weight:400;font-size:calc(var(--font-size) * .875);line-height:calc(var(--font-size) * 1.25);font-family:var(--font-family);:where(*),:where(*:before),:where(*:after){box-sizing:border-box;margin:0;padding:0}:where(a){color:inherit;text-decoration:none}:where(.icon){flex-shrink:0;width:1em;height:1em}}.gate.s-q6x07m{display:flex;align-items:center;gap:12px;cursor:pointer;border:1px solid var(--divider);border-radius:6px;padding:0 12px;height:44px;.content-hider[open]:where(.s-q6x07m) &{margin-bottom:12px}&:hover{border-color:var(--divider-hover)}}.icon.s-q6x07m{width:18px;height:18px;color:var(--text-secondary)}.label.s-q6x07m{flex-grow:1;overflow:hidden;font-weight:500;user-select:none;text-overflow:ellipsis}.action.s-q6x07m{color:var(--text-link);font-weight:500;font-size:calc(var(--font-size) * .8125);line-height:calc(var(--font-size) * 1.25);&:before{content:"Show"}.content-hider[open]:where(.s-q6x07m) &:before{content:"Hide"}}.external-embed.s-rtbqd8{display:block;border:1px solid var(--divider);border-radius:6px;overflow:hidden;&:hover{border-color:var(--divider-hover)}}.thumbnail.s-rtbqd8{display:block;border-bottom:1px solid var(--divider);background:#000;aspect-ratio:1.91;width:100%;.external-embed:where(.s-rtbqd8):hover &{border-color:var(--divider-hover)}}.meta.s-rtbqd8{padding:12px}.title.s-rtbqd8{display:-webkit-box;overflow:hidden;font-weight:700;white-space:pre-wrap;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow-wrap:break-word;&:empty{display:none}}.description.s-rtbqd8{display:-webkit-box;overflow:hidden;color:var(--text-secondary);font-size:calc(var(--font-size) * .8125);white-space:pre-wrap;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow-wrap:break-word;&:empty{display:none}}.domain.s-rtbqd8{display:flex;align-items:center;gap:6px;margin:6px 0 0;color:var(--text-secondary);font-weight:500;font-size:calc(var(--font-size) * .75)}.feed-embed.s-156tlwp{display:flex;flex-direction:column;gap:12px;border:1px solid var(--divider);border-radius:6px;padding:12px;&:hover{border-color:var(--divider-hover)}}.main.s-156tlwp{display:flex;gap:12px}.avatar-wrapper.s-156tlwp{margin:2px 0 0;border-radius:6px;background:var(--background-secondary);width:36px;height:36px;overflow:hidden}.avatar.s-156tlwp{width:100%;height:100%;object-fit:cover}.name.s-156tlwp{font-weight:700}.creator.s-156tlwp{color:var(--text-secondary);font-size:calc(var(--font-size) * .8125)}.description.s-156tlwp{display:-webkit-box;overflow:hidden;font-size:calc(var(--font-size) * .8125);white-space:pre-wrap;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow-wrap:break-word;&:empty{display:none}}.is-aligned.s-t3k6fc{align-self:baseline;max-width:100%}.grid.s-t3k6fc{display:flex;gap:2px}.col.s-t3k6fc{display:flex;flex:1;flex-direction:column;gap:2px}.square.s-t3k6fc{aspect-ratio:1}.wide.s-t3k6fc{aspect-ratio:1.5}.item.s-t3k6fc{position:relative;flex-grow:1;flex-shrink:0;overflow:hidden}.is-bordered.s-t3k6fc{.tl:where(.s-t3k6fc),.tr:where(.s-t3k6fc),.bl:where(.s-t3k6fc),.br:where(.s-t3k6fc){border:1px solid var(--divider)}.tl:where(.s-t3k6fc){border-top-left-radius:6px}.tr:where(.s-t3k6fc){border-top-right-radius:6px}.bl:where(.s-t3k6fc){border-bottom-left-radius:6px}.br:where(.s-t3k6fc){border-bottom-right-radius:6px}}.single-item.s-t3k6fc{position:relative;aspect-ratio:16 / 9;overflow:hidden;.image:where(.s-t3k6fc){object-fit:contain}}.is-standalone.s-t3k6fc{min-width:64px;max-width:100%;min-height:64px;max-height:320px}.image.s-t3k6fc{position:absolute;inset:0;background:#000;width:100%;height:100%;object-fit:cover;font-size:0px}.is-blurred.s-t3k6fc{scale:125%;filter:blur(24px)}.placeholder.s-t3k6fc{width:100vw;height:100vh}.list-embed.s-6uize5{display:flex;flex-direction:column;gap:12px;border:1px solid var(--divider);border-radius:6px;padding:12px;&:hover{border-color:var(--divider-hover)}}.main.s-6uize5{display:flex;gap:12px}.avatar-wrapper.s-6uize5{margin:2px 0 0;border-radius:6px;background:var(--background-secondary);width:36px;height:36px;overflow:hidden}.avatar.s-6uize5{width:100%;height:100%;object-fit:cover}.name.s-6uize5{font-weight:700}.creator.s-6uize5{color:var(--text-secondary);font-size:calc(var(--font-size) * .8125)}.description.s-6uize5{display:-webkit-box;overflow:hidden;font-size:calc(var(--font-size) * .8125);white-space:pre-wrap;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow-wrap:break-word;&:empty{display:none}}.video-embed.s-1azk58e{display:block;position:relative;background:#000;aspect-ratio:16 / 9;overflow:hidden}.is-bordered.s-1azk58e{border:1px solid var(--divider);border-radius:6px}.is-standalone.s-1azk58e{align-self:baseline;aspect-ratio:auto;max-width:100%}.constrainer.s-1azk58e{min-width:64px;max-width:100%;min-height:64px;max-height:320px}.thumbnail.s-1azk58e{width:100%;height:100%;object-fit:contain}.is-blurred.s-1azk58e{scale:125%;filter:blur(24px)}.placeholder.s-1azk58e{width:100vw;height:100vh}.play.s-1azk58e{display:grid;position:absolute;top:50%;left:50%;place-items:center;translate:-50% -50%;border-radius:50%;background:#40404099;aspect-ratio:1 / 1;height:40%;max-height:48px;color:#fff;font-size:20px;.icon:where(.s-1azk58e){width:40%;height:40%}.is-standalone:where(.s-1azk58e) &:hover{background:#404040cc}}.quote-embed.s-za6fip{display:block;border:1px solid var(--divider);border-radius:6px;overflow:hidden;&:hover{border-color:var(--divider-hover)}}.meta.s-za6fip{display:flex;padding:12px 12px 0;color:var(--text-secondary);.avatar-wrapper:where(.s-za6fip){flex-shrink:0;margin:0 8px 0 0;border-radius:9999px;background:var(--background-secondary);width:20px;height:20px;overflow:hidden}.avatar:where(.s-za6fip){width:100%;height:100%}.name-wrapper:where(.s-za6fip){display:flex;gap:4px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.display-name-wrapper:where(.s-za6fip){overflow:hidden;text-overflow:ellipsis}.display-name:where(.s-za6fip){color:var(--text-primary);font-weight:700}.handle:where(.s-za6fip){display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dot:where(.s-za6fip){flex-shrink:0;margin:0 6px}.date:where(.s-za6fip){white-space:nowrap}}.body.s-za6fip{display:flex;align-items:flex-start}.aside.s-za6fip{flex-grow:1;flex-basis:0;margin:8px 0 12px 12px;max-width:20%}.text.s-za6fip{display:-webkit-box;margin:8px 12px 12px;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:6;line-clamp:6;flex-grow:4;flex-basis:0px;min-width:0px;white-space:pre-wrap;overflow-wrap:break-word}.divide.s-za6fip{padding:6px 0}.starterpack-embed.s-15v965v{display:block;border:1px solid var(--divider);border-radius:6px;overflow:hidden;&:hover{border-color:var(--divider-hover)}}.banner.s-15v965v{display:block;aspect-ratio:1.91;width:100%}.meta.s-15v965v{display:flex;flex-direction:column;gap:12px;padding:12px}.main.s-15v965v{display:flex;gap:12px}.avatar.s-15v965v{margin:2px;width:36px;height:36px}.name.s-15v965v{font-weight:700}.creator.s-15v965v{color:var(--text-secondary);font-size:calc(var(--font-size) * .8125)}.description.s-15v965v{display:-webkit-box;overflow:hidden;font-size:calc(var(--font-size) * .8125);white-space:pre-wrap;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow-wrap:break-word;&:empty{display:none}}.embeds.s-azdpbr{display:flex;flex-direction:column;gap:12px;margin:12px 0 0}.message.s-azdpbr{border:1px solid var(--divider);border-radius:6px;padding:12px;color:var(--text-secondary)}.rich-text.s-1lecfnd{overflow:hidden;white-space:pre-wrap;overflow-wrap:break-word;&:empty{display:none}}.is-large.s-1lecfnd{font-size:calc(var(--font-size) * 1);line-height:calc(var(--font-size) * 1.5)}.link.s-1lecfnd,.mention.s-1lecfnd,.hashtag.s-1lecfnd{color:var(--text-link);&:hover{text-decoration:underline}}.highlighted-post.s-hik11q{padding:16px}.meta.s-hik11q{display:flex;align-items:center;gap:12px;margin:0 0 12px;color:var(--text-secondary)}.avatar-wrapper.s-hik11q{display:block;flex-shrink:0;border-radius:9999px;background:var(--background-secondary);width:40px;height:40px;overflow:hidden;&:hover{filter:brightness(.85)}}.avatar.s-hik11q{width:100%;height:100%;object-fit:cover}.is-blurred.s-hik11q{scale:125%;filter:blur(4px)}.name-wrapper.s-hik11q{display:block;flex-grow:1;max-width:100%;overflow:hidden;color:inherit;text-overflow:ellipsis;white-space:nowrap}.display-name-wrapper.s-hik11q{overflow:hidden;text-overflow:ellipsis;.name-wrapper:where(.s-hik11q):hover &{text-decoration:underline}}.display-name.s-hik11q{color:var(--text-primary);font-weight:700}.handle.s-hik11q{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.logo.s-hik11q{width:32px;height:32px}.context.s-hik11q{overflow:hidden;color:var(--text-secondary);font-size:calc(var(--font-size) * .8125);text-overflow:ellipsis;white-space:nowrap;a:where(.s-hik11q){color:inherit;font-weight:500;&:hover{text-decoration:underline}}}.date.s-hik11q{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0 0;border-bottom:1px solid var(--divider);padding:0 0 12px;color:var(--text-secondary)}.stats.s-hik11q{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin:0 0 -16px;padding:12px 0;color:var(--text-secondary);.gap:where(.s-hik11q){flex:1 1 auto}.permalink:where(.s-hik11q){display:flex;align-items:center;gap:4px;color:var(--text-link);font-weight:700;&:hover{text-decoration:underline}}}.stat.s-hik11q{display:flex;align-items:center;gap:8px;font-weight:500}.post.s-12mzi62{display:flex;position:relative;gap:12px;padding:12px 16px 0}.logo.s-12mzi62{position:absolute;top:12px;right:12px;width:24px;height:24px}.aside.s-12mzi62{flex-shrink:0}.avatar-wrapper.s-12mzi62{display:block;border-radius:9999px;background:var(--background-secondary);width:40px;height:40px;overflow:hidden;&:hover{filter:brightness(.85)}}.avatar.s-12mzi62{width:100%;height:100%;object-fit:cover}.is-blurred.s-12mzi62{scale:125%;filter:blur(4px)}.line.s-12mzi62{position:absolute;top:56px;bottom:-12px;left:35px;border-left:2px solid var(--divider)}.main.s-12mzi62{display:flex;flex-grow:1;flex-direction:column;min-width:0px}.meta.s-12mzi62{display:flex;align-items:center;margin:0 0 2px;padding:0 32px 0 0;color:var(--text-secondary);.name-wrapper:where(.s-12mzi62){display:flex;gap:4px;max-width:100%;overflow:hidden;color:inherit;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.display-name-wrapper:where(.s-12mzi62){overflow:hidden;text-overflow:ellipsis;.name-wrapper:where(.s-12mzi62):hover &{text-decoration:underline}}.display-name:where(.s-12mzi62){color:var(--text-primary);font-weight:700}.handle:where(.s-12mzi62){display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dot:where(.s-12mzi62){flex-shrink:0;margin:0 6px}.date:where(.s-12mzi62){color:inherit;text-decoration:none;white-space:nowrap;&:hover{text-decoration:underline}}}.context.s-12mzi62{overflow:hidden;color:var(--text-secondary);font-size:calc(var(--font-size) * .8125);text-overflow:ellipsis;white-space:nowrap;a:where(.s-12mzi62){color:inherit;font-weight:500;&:hover{text-decoration:underline}}}.message.s-1q9cbx0{margin:0 auto;padding:32px 16px;max-width:380px;color:var(--text-secondary);text-align:center}
+1
assets/ProfileCardDisplay-BpCMWdM3.js
+1
assets/ProfileCardDisplay-BpCMWdM3.js
···
1
+
import{p as e,f as s,t,s as a,c as n,a as r,b as l,d as o,e as i,g as c,B as p,h as d,i as u,j as f,k as h,l as m,u as b,C as g}from"./index-CD_0uzJz.js";import{X as w,s as y,a as v,h as $,o as k,G as x,b as q,C,e as F}from"./GuideInstructions-CTis8QB-.js";const I=/^[@๏ผ ]([a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*(?:\.[a-zA-Z]{2,}))($|\s|\p{P})/u,N=/^(?:#(?!\ufe0f|\u20e3)|๏ผ)([\p{N}]*[\p{L}\p{M}\p{Pc}][\p{L}\p{M}\p{Pc}\p{N}]*)($|\s|\p{P})/u,A=/^:([\w-]+):/,P=/^https?:\/\/[\S]+/,B=/(?:(?<!\(.*)\))?[.,;]*$/,U=/^\[((?:\[(?:\\.|[^\[\]\\])*\]|\\.|[^\[\]\\])*?)\]\((.*?)\)/,_=/^\\([@๏ผ #:\\\[])/,j=/^.+?(?:(?=$|[:\\\[]|https?:\/\/)|(?<=\s|[(){}\/\\\[\]\-|:;'".,=+])(?=[@๏ผ #๏ผ]))/s,z=e=>{const s=I.exec(e);if(s&&"@"!==s[2]){const e=s[2].length;return{type:"mention",raw:e>0?s[0].slice(0,-e):s[0],handle:s[1]}}},S=e=>{const s=N.exec(e);if(s&&"#"!==s[2]){const e=s[2].length;return{type:"topic",raw:e>0?s[0].slice(0,-e):s[0],name:s[1]}}},M=e=>{const s=A.exec(e);if(s)return{type:"emote",raw:s[0],name:s[1]}},Z=e=>{const s=P.exec(e);if(s){const e=s[0].replace(B,"");return{type:"autolink",raw:e,url:e}}},G=e=>{const s=U.exec(e);if(s)return{type:"link",raw:s[0],text:s[1],url:s[2]}},H=e=>{const s=_.exec(e);if(s)return{type:"escape",raw:s[0],escaped:s[1]}},L=e=>{const s=j.exec(e);if(s)return{type:"text",raw:s[0],text:s[0]}},T=/[&"<]/g,E=/[&<]/g;function R(e,s){const t=String(e??""),a=s?T:E;a.lastIndex=0;let n="",r=0;for(;a.test(t);){const e=a.lastIndex-1,s=t[e];n+=t.substring(r,e)+("&"===s?"&":'"'===s?""":"<"),r=e+1}return n+t.substring(r)}function X(e,s,t=!1){if("hidden"===e&&"until-found"!==s&&(t=!0),null==s||!s&&t)return"";return` ${e}${t?"":`="${R(s,!0)}"`}`}function D(e,s,t){var a=function(e,s){var t=null==e?"":""+e;return""===(t=t?t+" "+s:s)?null:t}(e,s);return a?` class="${R(a,!0)}"`:""}function J(e,s){const{children:t}=s;e.push('<div class="bluesky-embed s-dgn7w7">'),t(e),e.push("</div>")}const K=e=>`https://bsky.app/profile/${e}`,O=e=>`https://bsky.app/hashtag/${e}`,Q={"!hide":{name:"Hidden by moderators",flags:1},"!warn":{name:"Content warning",flags:1},porn:{name:"Adult content",flags:0},sexual:{name:"Sexually suggestive",flags:0},"graphic-media":{name:"Graphic media",flags:0},nudity:{name:"Nudity",flags:0}},V=new Intl.NumberFormat("en-US"),W=new Intl.NumberFormat("en-US",{notation:"compact"}),Y=e=>e<1e3?""+e:e<1e5?V.format(e):W.format(e),ee=/^https?:\/\//;function se(e,s){{const{text:t}=s;e.push('<p class="rich-text is-small s-1ea7h2m">');const a=(e=>{const s=[];let t,a;for(;e;)if(t=a,a=H(e)||Z(e)||z(e)||S(e)||M(e)||G(e))e=e.slice(a.raw.length),s.push(a);else if(a=L(e))e=e.slice(a.raw.length),t&&"text"===t.type?(t.raw+=a.raw,t.text+=a.text,a=t):s.push(a);else if(e)throw new Error("infinite loop encountered");return s})(t);for(let s=0,n=a.length;s<n;s++){let t=a[s];"autolink"===t.type?e.push(`<a target="_blank"${X("href",t.url)} rel="noopener nofollow" class="link s-1ea7h2m">${R(t.raw.replace(ee,""))}</a>`):"mention"===t.type?e.push(`<a target="_blank"${X("href",K(t.handle))} class="mention s-1ea7h2m">${R(t.raw)}</a>`):"topic"===t.type?e.push(`<a target="_blank"${X("href",O(t.name))} class="hashtag s-1ea7h2m">${R(t.raw)}</a>`):e.push(`${R(t.raw)}`)}e.push("</p>")}}function te(e,s){{const{profile:t}=s,a=K(t.did),n=((e,s)=>{if(e?.length)for(let t=0,a=e.length;t<a;t++){const a=e[t],n=a.val;if(!(n in Q))continue;const r=Q[n];if(!(1&r.flags&&a.src===s))return r}})(t.labels,t.did);e.push('<div class="profile-card has-banner s-2b3fq6"><div class="banner-wrapper s-2b3fq6">'),t.banner&&e.push(`<img loading="lazy"${X("src",t.banner)} alt=""${D("banner"+(n?" is-blurred":""),"s-2b3fq6")}/>`),e.push(`</div> <div class="contents s-2b3fq6"><div class="header s-2b3fq6"><a${X("href",a)} target="_blank" class="avatar-wrapper s-2b3fq6">`),t.avatar&&e.push(`<img loading="lazy"${X("src",t.avatar)} alt=""${D("avatar"+(n?" is-blurred":""),"s-2b3fq6")}/>`),e.push(`</a> <div class="actions s-2b3fq6"><a${X("href",a)} target="_blank" class="follow-button s-2b3fq6"><svg class="icon s-2b3fq6" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="square" stroke-width="2" d="M12 4v8m0 0v8m0-8H4m8 0h8"></path></svg> <span>Follow</span></a> <svg class="logo s-2b3fq6" fill="none" viewBox="0 0 320 286"><path fill="#0A7AFF" d="M69.364 19.146c36.687 27.806 76.147 84.186 90.636 114.439 14.489-30.253 53.948-86.633 90.636-114.439C277.107-.917 320-16.44 320 32.957c0 9.865-5.603 82.875-8.889 94.729-11.423 41.208-53.045 51.719-90.071 45.357 64.719 11.12 81.182 47.953 45.627 84.785-80 82.874-106.667-44.333-106.667-44.333s-26.667 127.207-106.667 44.333c-35.555-36.832-19.092-73.665 45.627-84.785-37.026 6.362-78.648-4.149-90.071-45.357C5.603 115.832 0 42.822 0 32.957 0-16.44 42.893-.917 69.364 19.147Z"></path></svg></div></div> <div class="name-wrapper"><p dir="auto" class="display-name s-2b3fq6">${R(t.displayName?.trim()||t.handle.slice(0,64))}</p> <p class="handle s-2b3fq6">@${R(t.handle)}</p></div> <div class="stats s-2b3fq6"><span class="stat-entry s-2b3fq6"><span class="stat-count s-2b3fq6">${R(Y(t.followersCount||0))}</span> <span>${R(1===t.followersCount?"Follower":"Followers")}</span></span> <span class="stat-entry s-2b3fq6"><span class="stat-count s-2b3fq6">${R(Y(t.followsCount||0))}</span> <span>Following</span></span></div> `),t.description?.trim()&&se(e,{text:t.description}),e.push("</div></div>")}}function ae(e,s){J(e,{children:e=>{e.push(`<div class="message s-ibmh3w">${R(s)}</div>`)}})}function ne(e,s){{const{profile:t,allowUnauthenticated:a}=s,n=!a&&t?.labels?.some(e=>"!no-unauthenticated"===e.val);null===t?ae(e,"The profile can't be found, it may have been deleted."):n?ae(e,"The user has requested for their profile to not be displayed on external sites."):J(e,{children:e=>{te(e,{profile:t})}})}}var re=s("<bluesky-profile-card><!></bluesky-profile-card>",2);function le(s,o){e(o,!0);var i=re();t(()=>a(i,"actor",o.data.profile?.did));var c=n(i);$(c,()=>function(e,s={}){let t="";return ne({push(e){t+=e}},s.props??{}),{body:t}}(0,{props:o.data}).body),r(s,i),l()}var oe=s("<li><p>Insert the following scripts and stylesheets to the <code><head></code> of your website.</p> <!></li> <li><p>Insert the following markup in wherever you want the profile feed to be.</p> <!></li>",1),ie=s("<!> <!>",1);function ce(s,a){let $;e(a,!0);const I=b(()=>{$?.abort(),$=new AbortController;const e=$.signal;return(async e=>{const s=e.actor,t=e.allowUnauthenticated??!1,a=new w({handler:y({service:e.serviceUri??"https://public.api.bsky.app"})}),{data:n}=await a.get("app.bsky.actor.getProfile",{signal:e.signal,params:{actor:s}}).catch(e=>e instanceof v&&"InvalidRequest"===e.kind&&"Profile not found"===e.description?{data:null}:Promise.reject(e));return{profile:n,allowUnauthenticated:t}})({actor:a.matched.actor,signal:e})});k(()=>{$?.abort()});const N=()=>{const e="https://cdn.jsdelivr.net/npm/bluesky-profile-card-embed@^1.0.0";return`\x3c!-- Core web component and styling --\x3e\n<script type="module" src="${e}/+esm"><\/script>\n<link rel="stylesheet" href="${e}/dist/core.min.css">\n\n\x3c!-- Built-in themes --\x3e\n<link rel="stylesheet" href="${e}/themes/light.min.css" media="(prefers-color-scheme: light)">\n<link rel="stylesheet" href="${e}/themes/dim.min.css" media="(prefers-color-scheme: dark)">\n`};var A=o(),P=i(A);c(P,()=>f(I),e=>{g(e)},(e,s)=>{var t=ie(),a=i(t);le(a,{get data(){return f(s)}});var l=h(a,2),o=e=>{x(e,{title:"How do I embed this to my website?",children:(e,t)=>{q(e,{children:(e,t)=>{var a=oe(),l=i(a),o=h(n(l),2);{let e=b(N);C(o,{get code(){return f(e)}})}var c=h(l,2),p=h(n(c),2);{let e=b(()=>(e=>{const s=`https://bsky.app/profile/${e.did}`;return`<bluesky-profile-card actor="${F(e.did)}">\n <a target="_blank" href="${F(s)}" class="bluesky-profile-card-fallback">\n ${e.displayName?.trim()?`Follow ${F(e.displayName)} (@${F(e.handle)}) on Bluesky`:`Follow @${F(e.handle)} on Bluesky`}\n </a>\n</bluesky-profile-card>\n`})(f(s).profile));C(p,{get code(){return f(e)}})}r(e,a)}})}})};m(l,e=>{f(s).profile&&e(o)}),r(e,t)},(e,s)=>{p(e,{type:"alert",children:(e,a)=>{var n=d();t(()=>u(n,""+f(s))),r(e,n)}})}),r(s,A),l()}export{ce as default};
+1
assets/ProfileCardDisplay-D4FwjqsR.css
+1
assets/ProfileCardDisplay-D4FwjqsR.css
···
1
+
.bluesky-embed.s-dgn7w7{position:relative;box-sizing:border-box;margin:0 auto;border:1px solid var(--divider);border-radius:8px;background:var(--background-primary);min-width:250px;max-width:550px;overflow:hidden;color:var(--text-primary);font-weight:400;font-size:calc(var(--font-size) * .875);line-height:calc(var(--font-size) * 1.25);font-family:var(--font-family);:where(*),:where(*:before),:where(*:after){box-sizing:border-box;margin:0;padding:0}:where(a){color:inherit;text-decoration:none}:where(.icon){flex-shrink:0;width:1em;height:1em}}.rich-text.s-1ea7h2m{overflow:hidden;white-space:pre-wrap;overflow-wrap:break-word;&:empty{display:none}}.link.s-1ea7h2m,.mention.s-1ea7h2m,.hashtag.s-1ea7h2m{color:var(--text-link);&:hover{text-decoration:underline}}.profile-card.s-2b3fq6{display:flex;flex-direction:column}.is-blurred.s-2b3fq6{scale:125%;filter:blur(4px)}.banner-wrapper.s-2b3fq6{background:var(--background-secondary);aspect-ratio:3 / 1;overflow:hidden}.banner.s-2b3fq6{width:100%;height:100%;object-fit:cover}.contents.s-2b3fq6{display:flex;position:relative;flex-direction:column;gap:8px;padding:12px 16px 16px}.logo.s-2b3fq6{width:24px;height:24px}.header.s-2b3fq6{display:flex;justify-content:space-between;align-items:end}.actions.s-2b3fq6{display:flex;align-items:center;gap:16px}.avatar-wrapper.s-2b3fq6{display:block;flex-shrink:0;outline:2px solid var(--background-primary);border-radius:9999px;background:var(--background-secondary);width:90px;height:90px;overflow:hidden;.has-banner:where(.s-2b3fq6) &{margin-top:-56px}}.avatar.s-2b3fq6{width:100%;height:100%;object-fit:cover;.avatar-wrapper:where(.s-2b3fq6):hover &{filter:brightness(.85);&.is-blurred{filter:brightness(.85) blur(4px)}}}.follow-button.s-2b3fq6{display:flex;align-items:center;gap:6px;border-radius:9999px;background:var(--button);padding:9px 12px;color:var(--button-text);font-weight:600;font-size:calc(var(--font-size) * .8125);line-height:calc(var(--font-size) * 1);user-select:none;.icon:where(.s-2b3fq6){font-size:16px}&:hover{background:var(--button-hover)}}.display-name.s-2b3fq6{font-weight:700;font-size:calc(var(--font-size) * 1.25);line-height:calc(var(--font-size) * 1.75);overflow-wrap:break-word}.handle.s-2b3fq6{color:var(--text-secondary);overflow-wrap:break-word}.stats.s-2b3fq6{display:flex;flex-wrap:wrap;gap:20px;min-width:0}.stat-entry.s-2b3fq6{color:var(--text-secondary)}.stat-count.s-2b3fq6{color:var(--text-primary);font-weight:700}.message.s-ibmh3w{margin:0 auto;padding:32px 16px;max-width:380px;color:var(--text-secondary);text-align:center}
+1
assets/ProfileFeedDisplay-DOw9fkTH.css
+1
assets/ProfileFeedDisplay-DOw9fkTH.css
···
1
+
.bluesky-embed.s-1pz15a1{position:relative;box-sizing:border-box;margin:0 auto;border:1px solid var(--divider);border-radius:8px;background:var(--background-primary);min-width:250px;max-width:550px;overflow:hidden;color:var(--text-primary);font-weight:400;font-size:calc(var(--font-size) * .875);line-height:calc(var(--font-size) * 1.25);font-family:var(--font-family);:where(*),:where(*:before),:where(*:after){box-sizing:border-box;margin:0;padding:0}:where(a){color:inherit;text-decoration:none}:where(.icon){flex-shrink:0;width:1em;height:1em}}.gate.s-1se5tqk{display:flex;align-items:center;gap:12px;cursor:pointer;border:1px solid var(--divider);border-radius:6px;padding:0 12px;height:44px;.content-hider[open]:where(.s-1se5tqk) &{margin-bottom:12px}&:hover{border-color:var(--divider-hover)}}.icon.s-1se5tqk{width:18px;height:18px;color:var(--text-secondary)}.label.s-1se5tqk{flex-grow:1;overflow:hidden;font-weight:500;user-select:none;text-overflow:ellipsis}.action.s-1se5tqk{color:var(--text-link);font-weight:500;font-size:calc(var(--font-size) * .8125);line-height:calc(var(--font-size) * 1.25);&:before{content:"Show"}.content-hider[open]:where(.s-1se5tqk) &:before{content:"Hide"}}.external-embed.s-au8a8u{display:block;border:1px solid var(--divider);border-radius:6px;overflow:hidden;&:hover{border-color:var(--divider-hover)}}.thumbnail.s-au8a8u{display:block;border-bottom:1px solid var(--divider);background:#000;aspect-ratio:1.91;width:100%;.external-embed:where(.s-au8a8u):hover &{border-color:var(--divider-hover)}}.meta.s-au8a8u{padding:12px}.title.s-au8a8u{display:-webkit-box;overflow:hidden;font-weight:700;white-space:pre-wrap;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow-wrap:break-word;&:empty{display:none}}.description.s-au8a8u{display:-webkit-box;overflow:hidden;color:var(--text-secondary);font-size:calc(var(--font-size) * .8125);white-space:pre-wrap;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow-wrap:break-word;&:empty{display:none}}.domain.s-au8a8u{display:flex;align-items:center;gap:6px;margin:6px 0 0;color:var(--text-secondary);font-weight:500;font-size:calc(var(--font-size) * .75)}.feed-embed.s-1c1phtf{display:flex;flex-direction:column;gap:12px;border:1px solid var(--divider);border-radius:6px;padding:12px;&:hover{border-color:var(--divider-hover)}}.main.s-1c1phtf{display:flex;gap:12px}.avatar-wrapper.s-1c1phtf{margin:2px 0 0;border-radius:6px;background:var(--background-secondary);width:36px;height:36px;overflow:hidden}.avatar.s-1c1phtf{width:100%;height:100%;object-fit:cover}.name.s-1c1phtf{font-weight:700}.creator.s-1c1phtf{color:var(--text-secondary);font-size:calc(var(--font-size) * .8125)}.description.s-1c1phtf{display:-webkit-box;overflow:hidden;font-size:calc(var(--font-size) * .8125);white-space:pre-wrap;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow-wrap:break-word;&:empty{display:none}}.is-aligned.s-1d339cy{align-self:baseline;max-width:100%}.grid.s-1d339cy{display:flex;gap:2px}.col.s-1d339cy{display:flex;flex:1;flex-direction:column;gap:2px}.square.s-1d339cy{aspect-ratio:1}.wide.s-1d339cy{aspect-ratio:1.5}.item.s-1d339cy{position:relative;flex-grow:1;flex-shrink:0;overflow:hidden}.is-bordered.s-1d339cy{.tl:where(.s-1d339cy),.tr:where(.s-1d339cy),.bl:where(.s-1d339cy),.br:where(.s-1d339cy){border:1px solid var(--divider)}.tl:where(.s-1d339cy){border-top-left-radius:6px}.tr:where(.s-1d339cy){border-top-right-radius:6px}.bl:where(.s-1d339cy){border-bottom-left-radius:6px}.br:where(.s-1d339cy){border-bottom-right-radius:6px}}.single-item.s-1d339cy{position:relative;aspect-ratio:16 / 9;overflow:hidden;.image:where(.s-1d339cy){object-fit:contain}}.is-standalone.s-1d339cy{min-width:64px;max-width:100%;min-height:64px;max-height:320px}.image.s-1d339cy{position:absolute;inset:0;background:#000;width:100%;height:100%;object-fit:cover;font-size:0px}.is-blurred.s-1d339cy{scale:125%;filter:blur(24px)}.placeholder.s-1d339cy{width:100vw;height:100vh}.list-embed.s-1mo1e33{display:flex;flex-direction:column;gap:12px;border:1px solid var(--divider);border-radius:6px;padding:12px;&:hover{border-color:var(--divider-hover)}}.main.s-1mo1e33{display:flex;gap:12px}.avatar-wrapper.s-1mo1e33{margin:2px 0 0;border-radius:6px;background:var(--background-secondary);width:36px;height:36px;overflow:hidden}.avatar.s-1mo1e33{width:100%;height:100%;object-fit:cover}.name.s-1mo1e33{font-weight:700}.creator.s-1mo1e33{color:var(--text-secondary);font-size:calc(var(--font-size) * .8125)}.description.s-1mo1e33{display:-webkit-box;overflow:hidden;font-size:calc(var(--font-size) * .8125);white-space:pre-wrap;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow-wrap:break-word;&:empty{display:none}}.video-embed.s-1h3cnsw{display:block;position:relative;background:#000;aspect-ratio:16 / 9;overflow:hidden}.is-bordered.s-1h3cnsw{border:1px solid var(--divider);border-radius:6px}.is-standalone.s-1h3cnsw{align-self:baseline;aspect-ratio:auto;max-width:100%}.constrainer.s-1h3cnsw{min-width:64px;max-width:100%;min-height:64px;max-height:320px}.thumbnail.s-1h3cnsw{width:100%;height:100%;object-fit:contain}.is-blurred.s-1h3cnsw{scale:125%;filter:blur(24px)}.placeholder.s-1h3cnsw{width:100vw;height:100vh}.play.s-1h3cnsw{display:grid;position:absolute;top:50%;left:50%;place-items:center;translate:-50% -50%;border-radius:50%;background:#40404099;aspect-ratio:1 / 1;height:40%;max-height:48px;color:#fff;font-size:20px;.icon:where(.s-1h3cnsw){width:40%;height:40%}.is-standalone:where(.s-1h3cnsw) &:hover{background:#404040cc}}.quote-embed.s-vbjlyj{display:block;border:1px solid var(--divider);border-radius:6px;overflow:hidden;&:hover{border-color:var(--divider-hover)}}.meta.s-vbjlyj{display:flex;padding:12px 12px 0;color:var(--text-secondary);.avatar-wrapper:where(.s-vbjlyj){flex-shrink:0;margin:0 8px 0 0;border-radius:9999px;background:var(--background-secondary);width:20px;height:20px;overflow:hidden}.avatar:where(.s-vbjlyj){width:100%;height:100%}.name-wrapper:where(.s-vbjlyj){display:flex;gap:4px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.display-name-wrapper:where(.s-vbjlyj){overflow:hidden;text-overflow:ellipsis}.display-name:where(.s-vbjlyj){color:var(--text-primary);font-weight:700}.handle:where(.s-vbjlyj){display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dot:where(.s-vbjlyj){flex-shrink:0;margin:0 6px}.date:where(.s-vbjlyj){white-space:nowrap}}.body.s-vbjlyj{display:flex;align-items:flex-start}.aside.s-vbjlyj{flex-grow:1;flex-basis:0;margin:8px 0 12px 12px;max-width:20%}.text.s-vbjlyj{display:-webkit-box;margin:8px 12px 12px;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:6;line-clamp:6;flex-grow:4;flex-basis:0px;min-width:0px;white-space:pre-wrap;overflow-wrap:break-word}.divide.s-vbjlyj{padding:6px 0}.starterpack-embed.s-whpa2l{display:block;border:1px solid var(--divider);border-radius:6px;overflow:hidden;&:hover{border-color:var(--divider-hover)}}.banner.s-whpa2l{display:block;aspect-ratio:1.91;width:100%}.meta.s-whpa2l{display:flex;flex-direction:column;gap:12px;padding:12px}.main.s-whpa2l{display:flex;gap:12px}.avatar.s-whpa2l{margin:2px;width:36px;height:36px}.name.s-whpa2l{font-weight:700}.creator.s-whpa2l{color:var(--text-secondary);font-size:calc(var(--font-size) * .8125)}.description.s-whpa2l{display:-webkit-box;overflow:hidden;font-size:calc(var(--font-size) * .8125);white-space:pre-wrap;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow-wrap:break-word;&:empty{display:none}}.embeds.s-1nks9gp{display:flex;flex-direction:column;gap:12px;margin:12px 0 0}.message.s-1nks9gp{border:1px solid var(--divider);border-radius:6px;padding:12px;color:var(--text-secondary)}.rich-text.s-10xqaeb{overflow:hidden;white-space:pre-wrap;overflow-wrap:break-word;&:empty{display:none}}.is-large.s-10xqaeb{font-size:calc(var(--font-size) * 1);line-height:calc(var(--font-size) * 1.5)}.link.s-10xqaeb,.mention.s-10xqaeb,.hashtag.s-10xqaeb{color:var(--text-link);&:hover{text-decoration:underline}}.feed-post.s-1c3lek9{padding:0 16px}.is-leaf.s-1c3lek9{border-bottom:1px solid var(--divider)}.ascendant-line-wrapper.s-1c3lek9{display:flex;flex-direction:column;align-items:center;width:36px;.line:where(.s-1c3lek9){position:absolute;top:0;bottom:4px;flex-grow:1;border-left:2px solid var(--divider)}}.descendant-line.s-1c3lek9{flex-grow:1;margin-top:4px;border-left:2px solid var(--divider)}.contexts.s-1c3lek9{display:flex;position:relative;flex-direction:column;padding:8px 0 4px}.context.s-1c3lek9{display:flex;align-items:center;gap:12px;color:var(--text-secondary);font-size:.8125rem;line-height:1.25rem;.aside:where(.s-1c3lek9){display:flex;flex-shrink:0;justify-content:flex-end;width:36px}.main:where(.s-1c3lek9){display:flex;min-width:0px;&:hover{text-decoration-line:underline}}.name:where(.s-1c3lek9){overflow:hidden;font-weight:500;text-overflow:ellipsis;white-space:nowrap}.affix:where(.s-1c3lek9){flex-shrink:0;white-space:pre}}.content.s-1c3lek9{display:flex;gap:12px;.aside:where(.s-1c3lek9){display:flex;flex-shrink:0;flex-direction:column;align-items:center}.main:where(.s-1c3lek9){flex-grow:1;padding-bottom:12px;min-width:0}}.avatar-wrapper.s-1c3lek9{display:block;border-radius:9999px;background:var(--background-secondary);width:36px;height:36px;overflow:hidden;&:hover{filter:brightness(.85)}}.avatar.s-1c3lek9{width:100%;height:100%;object-fit:cover}.meta.s-1c3lek9{display:flex;align-items:center;margin:0 0 2px;color:var(--text-secondary);.name-wrapper:where(.s-1c3lek9){display:flex;gap:4px;max-width:100%;overflow:hidden;color:inherit;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.display-name-wrapper:where(.s-1c3lek9){overflow:hidden;text-overflow:ellipsis;.name-wrapper:where(.s-1c3lek9):hover &{text-decoration:underline}}.display-name:where(.s-1c3lek9){color:var(--text-primary);font-weight:700}.handle:where(.s-1c3lek9){display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dot:where(.s-1c3lek9){flex-shrink:0;margin:0 6px}.date:where(.s-1c3lek9){color:inherit;text-decoration:none;white-space:nowrap;&:hover{text-decoration:underline}}}.reply-context.s-1c3lek9{overflow:hidden;color:var(--text-secondary);font-size:calc(var(--font-size) * .8125);text-overflow:ellipsis;white-space:nowrap;a:where(.s-1c3lek9){color:inherit;font-weight:500;&:hover{text-decoration:underline}}}.metrics.s-1c3lek9{display:flex;align-items:center;gap:16px;margin-top:12px;color:var(--text-secondary)}.stat.s-1c3lek9{display:flex;align-items:center;gap:8px;min-width:0px;max-width:100%;.count:where(.s-1c3lek9){padding-right:8px;overflow:hidden;font-size:calc(var(--font-size) * .8125);line-height:calc(var(--font-size) * 1.25);text-overflow:ellipsis;white-space:nowrap}}.profile-feed-header.s-1xh30xs{display:flex;justify-content:space-between;align-items:center;gap:16px;container-type:inline-size;border-bottom:1px solid var(--divider);padding:12px 16px}.title.s-1xh30xs{padding:4px 0;min-width:0;overflow:hidden;font-weight:600;font-size:calc(var(--font-size) * 1);line-height:calc(var(--font-size) * 1.5);text-overflow:ellipsis;white-space:nowrap;&:hover{text-decoration:underline}}.logo.s-1xh30xs{width:24px;height:24px}.message.s-f12rvk{margin:0 auto;padding:32px 16px;max-width:380px;color:var(--text-secondary);text-align:center}.feed.s-f12rvk{max-height:var(--max-feed-height);overflow-y:auto}.end-marker.s-f12rvk{display:grid;place-items:center;height:48px;.dot:where(.s-f12rvk){border-radius:50%;background:var(--text-secondary);width:4px;height:4px}}
+1
assets/ProfileFeedDisplay-QaaAcc9o.js
+1
assets/ProfileFeedDisplay-QaaAcc9o.js
···
1
+
import{p as e,f as s,t as a,s as t,c as i,a as l,b as r,d as n,e as d,g as p,B as c,h as o,i as h,j as u,k as v,l as f,u as m,C as b}from"./index-CD_0uzJz.js";import{X as y,s as k,a as g,h as $,o as w,G as x,b as j,C as Z,e as M}from"./GuideInstructions-CTis8QB-.js";import{s as q}from"./index-Cr8Vao8y.js";const C=/[&"<]/g,A=/[&<]/g;function F(e,s){const a=String(e??""),t=s?C:A;t.lastIndex=0;let i="",l=0;for(;t.test(a);){const e=t.lastIndex-1,s=a[e];i+=a.substring(l,e)+("&"===s?"&":'"'===s?""":"<"),l=e+1}return i+a.substring(l)}function _(e,s,a=!1){if("hidden"===e&&"until-found"!==s&&(a=!0),null==s||!s&&a)return"";return` ${e}${a?"":`="${F(s,!0)}"`}`}function B(e,s,a){var t=function(e,s){var a=null==e?"":""+e;return s&&(a=a?a+" "+s:s),""===a?null:a}(e,s);return t?` class="${F(t,!0)}"`:""}function N(e,s){var a=function(e){return null==e?null:String(e)}(e);return a?` style="${F(a,!0)}"`:""}const z="!no-unauthenticated";function U(e,s){const{children:a}=s;e.push('<div class="bluesky-embed s-1pz15a1">'),a(e),e.push("</div>")}const P=e=>`https://bsky.app/profile/${e}`,I=(e,s)=>`https://bsky.app/profile/${e}/post/${s}`,R=e=>`https://bsky.app/hashtag/${e}`,S=(e,s)=>`https://bsky.app/profile/${e}/feed/${s}`;let T=0,H=0;const V=new Intl.DateTimeFormat("en-US",{dateStyle:"long",timeStyle:"short"}),L=new Intl.DateTimeFormat("en-US",{dateStyle:"medium"}),D=new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric"}),G=e=>{const s=new Date(e),a=s.getTime();if(isNaN(a))return"N/A";const t=Date.now();if(t>H){const e=new Date(t);e.setMonth(0,1),e.setHours(0,0,0),T=e.getTime(),e.setFullYear(e.getFullYear()+1,0,0),e.setHours(23,59,59,999),H=e.getTime()}return a>=T&&a<=H?D.format(s):L.format(s)},W=/^at:\/\/((?:did:[a-zA-Z0-9._:%-]+)|(?:[a-zA-Z0-9][a-zA-Z0-9-.]*))(?:\/([a-zA-Z0-9.-]+)(?:\/([a-zA-Z0-9_~.:-]{1,512}))?)?\/?(?:\?([^#\s]*))?(?:#([^\s]*))?$/,Y=e=>{const s=W.exec(e);if(!s)throw new E(`invalid at-uri: ${e}`);return{repo:s[1],collection:s[2]??"",rkey:s[3]??"",query:s[4]??"",fragment:s[5]??""}};class E extends Error{}const X=new Intl.NumberFormat("en-US"),J=new Intl.NumberFormat("en-US",{notation:"compact"}),K=e=>e<1e3?""+e:e<1e5?X.format(e):J.format(e),O=e=>X.format(e),Q={"!hide":{name:"Hidden by moderators",flags:1},"!warn":{name:"Content warning",flags:1},porn:{name:"Adult content",flags:0},sexual:{name:"Sexually suggestive",flags:0},"graphic-media":{name:"Graphic media",flags:0},nudity:{name:"Nudity",flags:0}},ee=(e,s)=>{if(e?.length)for(let a=0,t=e.length;a<t;a++){const t=e[a],i=t.val;if(!(i in Q))continue;const l=Q[i];if(!(1&l.flags&&t.src===s))return l}};function se(e,s){{const{embed:a}=s,t=a.external,i=(e=>{let s;if("parse"in URL)s=URL.parse(e);else try{s=new URL(e)}catch{}return!s||"https:"!==s.protocol&&"http:"!==s.protocol?null:s})(t.uri)?.host;e.push(`<a target="_blank"${_("href",i&&t.uri)} rel="noopener noreferrer nofollow" class="external-embed s-au8a8u">`),t.thumb&&e.push(`<img loading="lazy"${_("src",t.thumb)} alt="" class="thumbnail s-au8a8u"/>`),e.push(` <div class="meta s-au8a8u"><p class="title s-au8a8u">${F(t.title)}</p> <p class="description s-au8a8u">${F(t.description)}</p> `),i&&e.push(`<div class="domain s-au8a8u"><svg class="icon" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="m4.172 8.07 3.94 2.957.977-1.941 3.887-.978 1.15-4.6M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-6.078 4.865.973-1.946-2.869-1.928-1.89-.12-1.08 1.075 1.947 2.919h2.919Z"></path></svg> <span class="domain-name">${F(i)}</span></div>`),e.push("</div></a>")}}const ae={width:16,height:9};function te(e,s){{const{embed:a,borderless:t,standalone:i,blur:l}=s,r=a.images,n=r.length;function d(e,s){const a=r[s];e.push(`<img loading="lazy"${_("src",a.thumb)}${_("alt",a.alt)}${B("image"+(l?" is-blurred":""),"s-1d339cy")}/>`)}if(e.push(`<div${B("image-embed"+(t?"":" is-bordered")+(i&&1===n?" is-aligned":""),"s-1d339cy")}>`),4===n)e.push('<div class="grid s-1d339cy"><div class="col s-1d339cy"><div class="item wide tl s-1d339cy">'),d(e,0),e.push('</div> <div class="item wide bl s-1d339cy">'),d(e,2),e.push('</div></div> <div class="col s-1d339cy"><div class="item wide tr s-1d339cy">'),d(e,1),e.push('</div> <div class="item wide br s-1d339cy">'),d(e,3),e.push("</div></div></div>");else if(3===n)e.push('<div class="grid s-1d339cy"><div class="col square s-1d339cy"><div class="item tl bl s-1d339cy">'),d(e,0),e.push('</div></div> <div class="col square s-1d339cy"><div class="item tr s-1d339cy">'),d(e,1),e.push('</div> <div class="item br s-1d339cy">'),d(e,2),e.push("</div></div></div>");else if(2===n)e.push('<div class="grid s-1d339cy"><div class="col s-1d339cy"><div class="item square tl bl s-1d339cy">'),d(e,0),e.push('</div></div> <div class="col s-1d339cy"><div class="item square tr br s-1d339cy">'),d(e,1),e.push("</div></div></div>");else if(1===n){const p=i&&(r[0].aspectRatio||ae);e.push(`<div${B("single-item tl tr bl br"+(p?" is-standalone":""),"s-1d339cy")}${N(p?`aspect-ratio: ${p.width}/${p.height}`:"")}>`),d(e,0),e.push(" "),p&&e.push('<div class="placeholder s-1d339cy"></div>'),e.push("</div>")}e.push("</div>")}}function ie(e,s){{const{post:a,embed:t,borderless:i,standalone:l,blur:r}=s,n=l&&t.aspectRatio,d=a&&I(a.author.did,Y(a.uri).rkey);function p(e){e.push(`<img loading="lazy"${_("src",t.thumbnail)} alt=""${B("thumbnail"+(r?" is-blurred":""),"s-1h3cnsw")}/> `),n&&e.push('<div class="placeholder s-1h3cnsw"></div>'),e.push(' <div class="play s-1h3cnsw"><svg class="icon s-1h3cnsw" fill="none" viewBox="0 0 24 24"><path fill="currentColor" d="M22 12 5 2v20l17-10Z"></path></svg></div>')}l?(e.push(`<a target="_blank"${_("href",d)}${B("video-embed"+(i?"":" is-bordered")+(l?" is-standalone":""),"s-1h3cnsw")}><div class="constrainer s-1h3cnsw"${N(n?`aspect-ratio: ${n.width}/${n.height}`:"")}>`),p(e),e.push("</div></a>")):(e.push(`<div${B("video-embed"+(i?"":" is-bordered"),"s-1h3cnsw")}${N(n?`aspect-ratio: ${n.width}/${n.height}`:"")}>`),p(e),e.push("</div>"))}}const le=e=>{if(e){if("app.bsky.embed.images#view"===e.$type)return e;if("app.bsky.embed.recordWithMedia#view"===e.$type)return le(e.media)}},re=e=>{if(e){if("app.bsky.embed.video#view"===e.$type)return e;if("app.bsky.embed.recordWithMedia#view"===e.$type)return re(e.media)}};function ne(e,s){e.push(`<div class="message s-1nks9gp">${F(s)}</div>`)}function de(e,s){{const{post:a,embed:t,large:i=!1}=s;function l(e,s){!function(e,s){{const{warning:a,children:t}=s;a?(e.push(`<details class="content-hider s-1se5tqk"><summary class="gate s-1se5tqk"><svg class="icon s-1se5tqk" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="square" stroke-width="2" d="M11 11h1v5m9-4a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"></path><path fill="currentColor" stroke="currentColor" stroke-width=".5" d="M11.5 7.25h-.25v1.5h1.5v-1.5H11.5Z"></path></svg> <span class="label s-1se5tqk">${F(a.name)}</span> <span class="action s-1se5tqk"></span></summary> `),t(e),e.push("</details>")):t(e)}}(e,{warning:a&&ee(a.labels,a.author.did),children:e=>{"app.bsky.embed.external#view"===s.$type?se(e,{embed:s}):"app.bsky.embed.images#view"===s.$type?te(e,{embed:s,standalone:!0}):"app.bsky.embed.video#view"===s.$type?ie(e,{post:a,embed:s,standalone:!0}):ne(e,"Unsupported media embed")}})}function r(e,s){const a=s.record;if("app.bsky.embed.record#viewRecord"===a.$type)!function(e,s){{const{embed:a,large:t=!1}=s,i=a.value,l=i.text.trim(),r=a.author,n=r.displayName?.trim(),d=a.embeds?.[0],p=le(d),c=re(d),o=I(r.did,Y(a.uri).rkey),h=!!ee(a.labels,r.did);e.push(`<a target="_blank"${_("href",o)} class="quote-embed s-vbjlyj"><div class="meta s-vbjlyj"><div class="avatar-wrapper s-vbjlyj">`),r.avatar&&e.push(`<img loading="lazy"${_("src",r.avatar)} alt="" class="avatar s-vbjlyj"/>`),e.push('</div> <span class="name-wrapper s-vbjlyj">'),n&&e.push(`<bdi class="display-name-wrapper s-vbjlyj"><span class="display-name s-vbjlyj">${F(n)}</span></bdi>`),e.push(` <span class="handle s-vbjlyj">@${F(r.handle)}</span></span> <span aria-hidden="true" class="dot s-vbjlyj">ยท</span> <time${_("datetime",i.createdAt)} class="date s-vbjlyj">${F(G(i.createdAt))}</time></div> `),l?(e.push('<div class="body s-vbjlyj">'),t||(p?(e.push('<div class="aside s-vbjlyj">'),te(e,{embed:p,blur:h}),e.push("</div>")):c&&(e.push('<div class="aside s-vbjlyj">'),ie(e,{embed:c,blur:h}),e.push("</div>"))),e.push(` <p class="text s-vbjlyj">${F(l)}</p></div>`)):e.push('<div class="divide s-vbjlyj"></div>'),e.push(" "),!t&&l||(p?te(e,{embed:p,borderless:!0,blur:h}):c&&ie(e,{embed:c,borderless:!0,blur:h})),e.push("</a>")}}(e,{embed:a,large:i});else if("app.bsky.feed.defs#generatorView"===a.$type)!function(e,s){{const{embed:a}=s,t=a.creator,i=S(t.did,Y(a.uri).rkey);e.push(`<a target="_blank"${_("href",i)} class="feed-embed s-1c1phtf"><div class="main s-1c1phtf"><div class="avatar-wrapper s-1c1phtf">`),a.avatar?e.push(`<img loading="lazy"${_("src",a.avatar)} alt="" class="avatar s-1c1phtf"/>`):e.push('<svg viewBox="0 0 32 32" class="avatar s-1c1phtf"><path fill="#0070FF" d="M0 0h32v32H0z"></path><path fill="#fff" d="M22.153 22.354a9.328 9.328 0 0 0 3.837-.491 3.076 3.076 0 0 0-4.802-2.79m.965 3.281a6.128 6.128 0 0 0-.965-3.28Zm-11.342-3.28a3.077 3.077 0 0 0-4.801 2.79 9.21 9.21 0 0 0 3.835.49m.966-3.28a6.127 6.127 0 0 0-.966 3.28Zm8.265-8.997a3.076 3.076 0 1 1-6.153 0 3.076 3.076 0 0 1 6.153 0Zm6.154 3.077a2.307 2.307 0 1 1-4.615 0 2.307 2.307 0 0 1 4.615 0Zm-13.847 0a2.307 2.307 0 1 1-4.614 0 2.307 2.307 0 0 1 4.614 0Z"></path><path fill="#fff" d="M22 22c0 3.314-2.686 3.5-6 3.5s-6-.186-6-3.5a6 6 0 0 1 12 0Z"></path></svg>'),e.push(`</div> <div class="info"><p class="name s-1c1phtf">${F(a.displayName)}</p> <p class="creator s-1c1phtf">Feed by @${F(t.handle)}</p></div></div> <p class="description s-1c1phtf">${F(a.description)}</p></a>`)}}(e,{embed:a});else if("app.bsky.graph.defs#listView"===a.$type)!function(e,s){{const{embed:a}=s,t=a.creator,i=S(t.did,Y(a.uri).rkey);e.push(`<a target="_blank"${_("href",i)} class="list-embed s-1mo1e33"><div class="main s-1mo1e33"><div class="avatar-wrapper s-1mo1e33">`),a.avatar?e.push(`<img loading="lazy"${_("src",a.avatar)} alt="" class="avatar s-1mo1e33"/>`):e.push('<svg viewBox="0 0 32 32" class="avatar s-1mo1e33"><path fill="#0070FF" d="M0 0h32v32H0z"></path><path fill="#fff" d="M22.153 22.354a9.328 9.328 0 0 0 3.837-.491 3.076 3.076 0 0 0-4.802-2.79m.965 3.281a6.128 6.128 0 0 0-.965-3.28Zm-11.342-3.28a3.077 3.077 0 0 0-4.801 2.79 9.21 9.21 0 0 0 3.835.49m.966-3.28a6.127 6.127 0 0 0-.966 3.28Zm8.265-8.997a3.076 3.076 0 1 1-6.153 0 3.076 3.076 0 0 1 6.153 0Zm6.154 3.077a2.307 2.307 0 1 1-4.615 0 2.307 2.307 0 0 1 4.615 0Zm-13.847 0a2.307 2.307 0 1 1-4.614 0 2.307 2.307 0 0 1 4.614 0Z"></path><path fill="#fff" d="M22 22c0 3.314-2.686 3.5-6 3.5s-6-.186-6-3.5a6 6 0 0 1 12 0Z"></path></svg>'),e.push(`</div> <div class="info"><p class="name s-1mo1e33">${F(a.name)}</p> <p class="creator s-1mo1e33">${F((e=>{switch(e){case"app.bsky.graph.defs#curatelist":return"User list";case"app.bsky.graph.defs#modlist":return"Moderation list"}return"Unknown list"})(a.purpose))} by @${F(t.handle)}</p></div></div> <p class="description s-1mo1e33">${F(a.description)}</p></a>`)}}(e,{embed:a});else if("app.bsky.graph.defs#starterPackViewBasic"===a.$type)!function(e,s){{const{embed:a,large:t=!1}=s,i=a.record,l=a.creator,r=l.did,n=Y(a.uri).rkey,d=((e,s)=>`https://bsky.app/starter-pack/${e}/${s}`)(r,n);if(e.push(`<a target="_blank"${_("href",d)} class="starterpack-embed s-whpa2l">`),t){const s=((e,s)=>`https://ogcard.cdn.bsky.app/start/${e}/${s}`)(r,n);e.push(`<img loading="lazy"${_("src",s)} alt="" class="banner s-whpa2l"/>`)}e.push(` <div class="meta s-whpa2l"><div class="main s-whpa2l"><svg fill="none" viewBox="0 0 24 24" class="avatar s-whpa2l"><defs><linearGradient id="a" x1="0" x2="100%" y1="0" y2="0" gradientTransform="rotate(45)"><stop offset="0" stop-color="#0A7AFF"></stop><stop offset="1" stop-color="#59B9FF"></stop></linearGradient></defs><path fill="url(#a)" fill-rule="evenodd" d="M11.26 5.227 5.02 6.899c-.734.197-1.17.95-.973 1.685l1.672 6.24c.197.734.951 1.17 1.685.973l6.24-1.672a1.376 1.376 0 0 0 .973-1.685L12.945 6.2a1.375 1.375 0 0 0-1.685-.973Zm-6.566.459a2.632 2.632 0 0 0-1.86 3.223l1.672 6.24a2.632 2.632 0 0 0 3.223 1.861l6.24-1.672a2.631 2.631 0 0 0 1.861-3.223l-1.672-6.24a2.632 2.632 0 0 0-3.223-1.861l-6.24 1.672Z" clip-rule="evenodd"></path><path fill="url(#a)" fill-rule="evenodd" d="M15.138 18.411a4.606 4.606 0 1 0 0-9.211 4.606 4.606 0 0 0 0 9.211Zm0 1.257a5.862 5.862 0 1 0 0-11.724 5.862 5.862 0 0 0 0 11.724Z" clip-rule="evenodd"></path></svg> <div class="info"><p class="name s-whpa2l">${F(i.name)}</p> <p class="creator s-whpa2l">Starter pack by @${F(l.handle)}</p></div></div> <p class="description s-whpa2l">${F(i.description)}</p></div></a>`)}}(e,{embed:a,large:i});else{const s=(e=>{switch(e){case"app.bsky.feed.post":return"post";case"app.bsky.feed.generator":return"feed";case"app.bsky.graph.list":return"list";case"app.bsky.graph.starterpack":return"starter pack";case"app.bsky.labeler.service":return"labeler"}return null})(Y(a.uri).collection);ne(e,s&&("app.bsky.embed.record#viewNotFound"===a.$type||"app.bsky.embed.record#viewBlocked"===a.$type||"app.bsky.embed.record#viewDetached"===a.$type)?`This ${s} is unavailable`:"Unsupported record embed")}}e.push('<div class="embeds s-1nks9gp">'),"app.bsky.embed.recordWithMedia#view"===t.$type?(l(e,t.media),e.push(" "),r(e,t.record)):"app.bsky.embed.record#view"===t.$type?r(e,t):l(e,t),e.push("</div>")}}const pe=e=>e?.find(e=>"app.bsky.richtext.facet#link"===e.$type||"app.bsky.richtext.facet#mention"===e.$type||"app.bsky.richtext.facet#tag"===e.$type);function ce(e,s){{const{item:a,prev:t=!1,next:i=!1}=s,l=a.reason,r=a.post,n=a.reply?.parent,d=r.author,p=P(d.did),c=d.displayName?.trim(),o=r.record,h=I(d.did,Y(r.uri).rkey),u=r.replyCount||0,v=r.likeCount||0,f=(r.repostCount||0)+(r.quoteCount||0);if(e.push(`<div${B("feed-post"+(i?"":" is-leaf"),"s-1c3lek9")}><div class="contexts s-1c3lek9">`),t&&e.push('<div class="ascendant-line-wrapper s-1c3lek9"><div class="line s-1c3lek9"></div></div>'),e.push(" "),l)if("app.bsky.feed.defs#reasonRepost"===l.$type){const s=l.by;e.push(`<div class="context s-1c3lek9"><div class="aside s-1c3lek9"><svg class="icon" viewBox="0 0 24 24" fill="none"><path d="M17 3L20 6L17 9M7 21L4 18L7 15M5 18H20V13M4 11V6H19" stroke="currentColor" stroke-width="2" stroke-linecap="square"></path></svg></div> <a${_("href",P(s.did))} class="main s-1c3lek9"><span dir="auto" class="name s-1c3lek9">${F(s.displayName)}</span> <span class="affix s-1c3lek9"> reposted</span></a></div>`)}else"app.bsky.feed.defs#reasonPin"===l.$type&&e.push('<div class="context s-1c3lek9"><div class="aside s-1c3lek9"><svg class="icon" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="square" stroke-width="2" d="M12 15H5v-2.5l.377-.377A7.25 7.25 0 0 0 7.5 6.997V3h9v3.997a7.25 7.25 0 0 0 2.123 5.127L19 12.5V15h-7Zm0 0v6"></path></svg></div> <span class="main s-1c3lek9">Pinned</span></div>');if(e.push(`</div> <div class="content s-1c3lek9"><div class="aside s-1c3lek9"><a target="_blank"${_("href",p)} class="avatar-wrapper s-1c3lek9">`),d.avatar&&e.push(`<img loading="lazy"${_("src",d.avatar)} alt="" class="avatar s-1c3lek9"/>`),e.push("</a> "),i&&e.push('<div class="descendant-line s-1c3lek9"></div>'),e.push(`</div> <div class="main s-1c3lek9"><div class="meta s-1c3lek9"><a${_("href",p)} target="_blank" class="name-wrapper s-1c3lek9">`),c&&e.push(`<bdi class="display-name-wrapper s-1c3lek9"><span class="display-name s-1c3lek9">${F(c)}</span></bdi>`),e.push(` <span class="handle s-1c3lek9">@${F(d.handle)}</span></a> <span aria-hidden="true" class="dot s-1c3lek9">ยท</span> <a target="_blank"${_("href",h)}${_("title",(e=>{const s=new Date(e);return isNaN(s.getTime())?"N/A":V.format(s)})(o.createdAt))} class="date s-1c3lek9"><time${_("datetime",o.createdAt)}>${F(G(o.createdAt))}</time></a></div> `),!t&&o.reply){if(e.push('<p class="reply-context s-1c3lek9">'),n&&"app.bsky.feed.defs#postView"===n.$type){const s=n.author;e.push(`Replying to <a target="_blank"${_("href",P(s.did))} dir="auto" class="s-1c3lek9">${F(s.displayName?.trim()||`@${s.handle}`)}</a>`)}else e.push("Replying to an unknown post");e.push("</p>")}e.push(" "),function(e,s){{const{text:a,facets:t,large:i}=s;e.push(`<p${B("rich-text"+(i?" is-large":" is-small"),"s-10xqaeb")}>`);const l=q(a,t);for(let s=0,r=l.length;s<r;s++){let a=l[s];const t=pe(a.features);t?"app.bsky.richtext.facet#link"===t.$type?e.push(`<a target="_blank"${_("href",t.uri)} rel="noopener nofollow" class="link s-10xqaeb">${F(a.text)}</a>`):"app.bsky.richtext.facet#mention"===t.$type?e.push(`<a target="_blank"${_("href",P(t.did))} class="mention s-10xqaeb">${F(a.text)}</a>`):"app.bsky.richtext.facet#tag"===t.$type&&e.push(`<a target="_blank"${_("href",R(t.tag))} class="hashtag s-10xqaeb">${F(a.text)}</a>`):e.push(`${F(a.text)}`)}e.push("</p>")}}(e,{text:o.text,facets:o.facets}),e.push(" "),r.embed&&de(e,{post:r,embed:r.embed}),e.push(` <div class="metrics s-1c3lek9"><div${_("title",1===u?`${O(u)} reply`:`${O(u)} replies`)} class="stat s-1c3lek9"><svg class="icon" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="square" stroke-width="2" d="M3.002 4h18v14h-9l-5 3v-3h-4V4Z"></path></svg> <span class="count s-1c3lek9">${F(K(u))}</span></div> <div${_("title",1===f?`${O(f)} repost`:`${O(f)} reposts`)} class="stat s-1c3lek9"><svg class="icon" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="square" stroke-width="2" d="m17 3 3 3-3 3M7 21l-3-3 3-3m-2 3h15v-5M4 11V6h15"></path></svg> <span class="count s-1c3lek9">${F(K(f))}</span></div> <div${_("title",1===v?`${O(v)} like`:`${O(v)} likes`)} class="stat s-1c3lek9"><svg class="icon" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-width="2" d="M12 5.768c6.162-6.25 16.725 5.358 0 14.732C-4.725 11.126 5.838-.482 12 5.768Z"></path></svg> <span class="count s-1c3lek9">${F(K(v))}</span></div></div></div></div></div>`)}}function oe(e,s){U(e,{children:e=>{e.push(`<div class="message s-f12rvk">${F(s)}</div>`)}})}function he(e,s){{const{profile:a,feed:t,allowUnauthenticated:i}=s,l=!i&&a?.labels?.some(e=>e.val===z),r=t.filter(e=>{if(!a)return!1;const s=e.reason;if(s){if("app.bsky.feed.defs#reasonPin"===s.$type)return!0;if("app.bsky.feed.defs#reasonRepost"===s.$type){const s=e.post.author;return s.did===a.did||(i||!s.labels?.some(e=>e.val===z))}return!1}return!e.reply});null===a?oe(e,"The profile can't be found, it may have been deleted."):l?oe(e,"The user has requested for their posts to not be displayed on external sites."):U(e,{children:e=>{if(function(e,s){{const{profile:a}=s;e.push(`<div class="profile-feed-header s-1xh30xs"><a target="_blank"${_("href",P(a.did))} class="title s-1xh30xs">Posts from @${F(a.handle)}</a> <svg class="logo s-1xh30xs" fill="none" viewBox="0 0 320 286"><path fill="#0A7AFF" d="M69.364 19.146c36.687 27.806 76.147 84.186 90.636 114.439 14.489-30.253 53.948-86.633 90.636-114.439C277.107-.917 320-16.44 320 32.957c0 9.865-5.603 82.875-8.889 94.729-11.423 41.208-53.045 51.719-90.071 45.357 64.719 11.12 81.182 47.953 45.627 84.785-80 82.874-106.667-44.333-106.667-44.333s-26.667 127.207-106.667 44.333c-35.555-36.832-19.092-73.665 45.627-84.785-37.026 6.362-78.648-4.149-90.071-45.357C5.603 115.832 0 42.822 0 32.957 0-16.44 42.893-.917 69.364 19.147Z"></path></svg></div>`)}}(e,{profile:a}),e.push(" "),r.length>0){e.push('<div class="feed s-f12rvk">');const s=r;for(let a=0,t=s.length;a<t;a++){ce(e,{item:s[a]})}e.push(' <div class="end-marker s-f12rvk"><div class="dot s-f12rvk"></div></div></div>')}else e.push('<div class="message s-f12rvk">This user has not made any posts.</div>')}})}}var ue=s("<bluesky-profile-feed><!></bluesky-profile-feed>",2);function ve(s,n){e(n,!0);var d=ue();a(()=>t(d,"actor",n.data.profile?.did));var p=i(d);$(p,()=>function(e,s={}){let a="";return he({push(e){a+=e}},s.props??{}),{body:a}}(0,{props:n.data}).body),l(s,d),r()}var fe=s("<li><p>Insert the following scripts and stylesheets to the <code><head></code> of your website.</p> <!></li> <li><p>Insert the following markup in wherever you want the profile feed to be.</p> <!></li>",1),me=s("<!> <!>",1);function be(s,t){let $;e(t,!0);const q=m(()=>{$?.abort(),$=new AbortController;const e=$.signal;return(async e=>{const s=e.actor,a=e.allowUnauthenticated??!1,t=new y({handler:k({service:e.serviceUri??"https://public.api.bsky.app"})}),[{data:i},{data:l}]=await Promise.all([t.get("app.bsky.actor.getProfile",{signal:e.signal,params:{actor:s}}).catch(e=>e instanceof g&&"InvalidRequest"===e.kind&&"Profile not found"===e.description?{data:null}:Promise.reject(e)),t.get("app.bsky.feed.getAuthorFeed",{signal:e.signal,params:{actor:s,filter:"posts_no_replies",includePins:e.includePins,limit:30}}).catch(e=>e instanceof g&&"InvalidRequest"===e.kind&&"Profile not found"===e.description?{data:{feed:[]}}:Promise.reject(e))]);return{profile:i,feed:l.feed,allowUnauthenticated:a}})({actor:t.matched.actor,signal:e})});w(()=>{$?.abort()});const C=()=>{const e="https://cdn.jsdelivr.net/npm/bluesky-profile-feed-embed@^1.0.0";return`\x3c!-- Core web component and styling --\x3e\n<script type="module" src="${e}/+esm"><\/script>\n<link rel="stylesheet" href="${e}/dist/core.min.css">\n\n\x3c!-- Built-in themes --\x3e\n<link rel="stylesheet" href="${e}/themes/light.min.css" media="(prefers-color-scheme: light)">\n<link rel="stylesheet" href="${e}/themes/dim.min.css" media="(prefers-color-scheme: dark)">\n`};var A=n(),F=d(A);p(F,()=>u(q),e=>{b(e)},(e,s)=>{var a=me(),t=d(a);ve(t,{get data(){return u(s)}});var r=v(t,2),n=e=>{x(e,{title:"How do I embed this to my website?",children:(e,a)=>{j(e,{children:(e,a)=>{var t=fe(),r=d(t),n=v(i(r),2);{let e=m(C);Z(n,{get code(){return u(e)}})}var p=v(r,2),c=v(i(p),2);{let e=m(()=>(e=>{const s=`https://bsky.app/profile/${e.did}`;return`<bluesky-profile-feed actor="${M(e.did)}" include-pins>\n <a target="_blank" href="${M(s)}" class="bluesky-profile-feed-fallback">\n ${e.displayName?.trim()?`Posts by ${M(e.displayName)} (@${M(e.handle)})`:`Posts by @${M(e.handle)}`}\n </a>\n</bluesky-profile-feed>\n`})(u(s).profile));Z(c,{get code(){return u(e)}})}l(e,t)}})}})};f(r,e=>{u(s).profile&&e(n)}),l(e,a)},(e,s)=>{c(e,{type:"alert",children:(e,t)=>{var i=o();a(()=>h(i,""+u(s))),l(e,i)}})}),l(s,A),r()}export{be as default};
+1
assets/index-B_9yoyg2.css
+1
assets/index-B_9yoyg2.css
···
1
+
*,:before,:after{box-sizing:border-box}html{line-height:1.15;font-family:Inter,Roboto,ui-sans-serif,sans-serif,"Noto Color Emoji",Twemoji Mozilla;-webkit-text-size-adjust:100%;tab-size:4}body{margin:0}b,strong{font-weight:bolder}code,kbd,samp,pre{font-size:1em;font-family:JetBrains Mono NL,ui-monospace,monospace}small{font-size:80%}sub,sup{position:relative;vertical-align:baseline;font-size:75%;line-height:0}sub{bottom:-.25em}sup{top:-.5em}table{border-color:currentcolor}button,input,optgroup,select,textarea{margin:0;font-size:100%;line-height:1.15;font-family:inherit}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}.bluesky-embed{--font-size: 16px;--font-family: system-ui, "Segoe UI", "Roboto", "Helvetica", "Arial", sans-serif, "Apple Color Emoji", "Segoe UI Emoji";--max-feed-height: 600px}.bluesky-embed{--text-primary: #000000;--text-secondary: #455668;--text-link: #1083fe;--background-primary: #ffffff;--background-secondary: #455668;--divider-hover: #a9b7c5;--divider: #d4dbe2;--button: #1083fe;--button-text: #ffffff;--button-hover: #0168d5}.banner.svelte-4gizvm{border:1px solid;border-radius:4px;padding:10px 12px;font-weight:500;font-size:.875rem;line-height:1.25rem;a{color:inherit;font-weight:600}}.type-alert.svelte-4gizvm{border-color:#fca5a5;background:#fee2e2;color:#991b1b}.type-inform.svelte-4gizvm{border-color:#bfdbfe;background:#dbeafe;color:#1e40af}.circular-spinner.svelte-rq8vha{display:block;animation:svelte-rq8vha-spin 1s linear infinite;margin:0 auto;width:24px;height:24px}@keyframes svelte-rq8vha-spin{to{transform:rotate(360deg)}}.accented.svelte-rq8vha{stroke:#2563eb}.background.svelte-rq8vha{stroke:#2563eb;opacity:20%}.field.svelte-1wzaqos{display:flex;flex-direction:column;gap:8px}.input-wrapper.svelte-1wzaqos{display:contents}.label.svelte-1wzaqos{color:#4b5563;font-weight:600;font-size:.875rem;line-height:1.25rem}.text-input.svelte-1e5va0l{outline:2px none #2563eb;outline-offset:-1px;border:1px solid #9ca3af;border-radius:4px;padding:8px 12px;font-size:.875rem;line-height:1.25rem;&::placeholder{color:#9ca3af}&:focus{outline-style:solid}}.app.svelte-1n46o8q{margin:0 auto;padding:36px 16px;width:100%;max-width:582px}.header.svelte-1n46o8q{margin:24px 0}.main.svelte-1n46o8q{margin:36px 0}.choices.svelte-1n46o8q{display:flex;flex-direction:column;gap:8px;margin:16px 0 36px;border:0;padding:0}.choice.svelte-1n46o8q{display:flex;align-items:center;gap:8px;font-size:.875rem;line-height:1.25rem;input:where(.svelte-1n46o8q){appearance:none;outline:2px none #2563eb;outline-offset:2px;border:1px solid #9ca3af;border-radius:8px;width:16px;height:16px;&:checked{border:0;background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e");background-color:#2563eb}&:focus{outline-style:solid}}}.footer.svelte-1n46o8q{display:flex;flex-wrap:wrap;gap:.5rem;margin:36px 0 0;border-top:1px solid #d1d5db;padding:36px 0 0;color:#4b5563;font-size:.875rem;line-height:1.25rem;a:where(.svelte-1n46o8q){color:#2563eb}}
+2
assets/index-CD_0uzJz.js
+2
assets/index-CD_0uzJz.js
···
1
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./PostDisplay-CqTUAVla.js","./GuideInstructions-CTis8QB-.js","./GuideInstructions-B8N7RzmZ.css","./index-Cr8Vao8y.js","./PostDisplay-yMSDBkol.css","./ProfileCardDisplay-BpCMWdM3.js","./ProfileCardDisplay-D4FwjqsR.css","./ProfileFeedDisplay-QaaAcc9o.js","./ProfileFeedDisplay-DOw9fkTH.css"])))=>i.map(i=>d[i]);
2
+
!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))t(e);new MutationObserver(e=>{for(const n of e)if("childList"===n.type)for(const e of n.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&t(e)}).observe(document,{childList:!0,subtree:!0})}function t(e){if(e.ep)return;e.ep=!0;const t=function(e){const t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?t.credentials="include":"anonymous"===e.crossOrigin?t.credentials="omit":t.credentials="same-origin",t}(e);fetch(e.href,t)}}();const e=!1;var t=Array.isArray,n=Array.prototype.indexOf,r=Array.from,i=Object.defineProperty,l=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyDescriptors,o=Object.prototype,a=Array.prototype,f=Object.getPrototypeOf,c=Object.isExtensible;const u=()=>{};function d(){var e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}const h=16,v=32,p=64,_=128,g=512,m=1024,y=2048,b=4096,w=8192,k=16384,x=32768,E=65536,P=1<<17,S=1<<18,A=1<<19,q=32768,j=1<<21,O=1<<23,L=Symbol("$state"),z=Symbol("legacy props"),N=Symbol(""),$=new class extends Error{name="StaleReactionError";message="The reaction that called `getAbortSignal()` was re-run or destroyed"};const M=Symbol(),D="http://www.w3.org/1999/xhtml";function R(e){return e===this.v}let C=null;function T(e){C=e}function I(e,t=!1,n){C={p:C,i:!1,c:null,e:null,s:e,x:null,l:null}}function U(e){var t=C,n=t.e;if(null!==n)for(var r of(t.e=null,n))Ge(r);return t.i=!0,C=t.p,{}}let Z=[];function B(){var e=Z;Z=[],function(e){for(var t=0;t<e.length;t++)e[t]()}(e)}function V(e){if(0===Z.length&&!te){var t=Z;queueMicrotask(()=>{t===Z&&B()})}Z.push(e)}function W(){for(;Z.length>0;)B()}function F(e){var t=gt;if(null===t)return vt.f|=O,e;if(0===(t.f&x)){if(0===(t.f&_))throw e;t.b.error(e)}else K(e,t)}function K(e,t){for(;null!==t;){if(0!==(t.f&_))try{return void t.b.error(e)}catch(n){e=n}t=t.parent}throw e}const H=new Set;let G=null,J=null,Q=null,X=[],Y=null,ee=!1,te=!1;class ne{committed=!1;current=new Map;previous=new Map;#e=new Set;#t=new Set;#n=0;#r=0;#i=null;#l=[];#s=[];skipped_effects=new Set;is_fork=!1;is_deferred(){return this.is_fork||this.#r>0}process(e){X=[],J=null,this.apply();var t={parent:null,effect:null,effects:[],render_effects:[],block_effects:[]};for(const n of e)this.#o(n,t);this.is_fork||this.#a(),this.is_deferred()?(this.#f(t.effects),this.#f(t.render_effects),this.#f(t.block_effects)):(J=this,G=null,oe(t.render_effects),oe(t.effects),J=null,this.#i?.resolve()),Q=null}#o(e,t){e.f^=m;for(var n=e.first;null!==n;){var r=n.f,i=!!(96&r),l=i&&0!==(r&m)||0!==(r&w)||this.skipped_effects.has(n);if(0!==(n.f&_)&&n.b?.is_pending()&&(t={parent:t,effect:n,effects:[],render_effects:[],block_effects:[]}),!l&&null!==n.fn){i?n.f^=m:4&r?t.effects.push(n):jt(n)&&(0!==(n.f&h)&&t.block_effects.push(n),$t(n));var s=n.first;if(null!==s){n=s;continue}}var o=n.parent;for(n=n.next;null===n&&null!==o;)o===t.effect&&(this.#f(t.effects),this.#f(t.render_effects),this.#f(t.block_effects),t=t.parent),n=o.next,o=o.parent}}#f(e){for(const t of e){(0!==(t.f&y)?this.#l:this.#s).push(t),this.#c(t.deps),It(t,m)}}#c(e){if(null!==e)for(const t of e)2&t.f&&0!==(t.f&q)&&(t.f^=q,this.#c(t.deps))}capture(e,t){this.previous.has(e)||this.previous.set(e,t),0===(e.f&O)&&(this.current.set(e,e.v),Q?.set(e,e.v))}activate(){G=this,this.apply()}deactivate(){G===this&&(G=null,Q=null)}flush(){if(this.activate(),X.length>0){if(ie(),null!==G&&G!==this)return}else 0===this.#n&&this.process([]);this.deactivate()}discard(){for(const e of this.#t)e(this);this.#t.clear()}#a(){if(0===this.#r){for(const e of this.#e)e();this.#e.clear()}0===this.#n&&this.#u()}#u(){if(H.size>1){this.previous.clear();var e=Q,t=!0,n={parent:null,effect:null,effects:[],render_effects:[],block_effects:[]};for(const e of H){if(e===this){t=!1;continue}const i=[];for(const[n,r]of this.current){if(e.current.has(n)){if(!t||r===e.current.get(n))continue;e.current.set(n,r)}i.push(n)}if(0===i.length)continue;const l=[...e.current.keys()].filter(e=>!this.current.has(e));if(l.length>0){var r=X;X=[];const t=new Set,s=new Map;for(const e of i)ae(e,l,t,s);if(X.length>0){G=e,e.apply();for(const t of X)e.#o(t,n);e.deactivate()}X=r}}G=null,Q=e}this.committed=!0,H.delete(this)}increment(e){this.#n+=1,e&&(this.#r+=1)}decrement(e){this.#n-=1,e&&(this.#r-=1),this.revive()}revive(){for(const e of this.#l)It(e,y),ce(e);for(const e of this.#s)It(e,b),ce(e);this.#l=[],this.#s=[],this.flush()}oncommit(e){this.#e.add(e)}ondiscard(e){this.#t.add(e)}settled(){return(this.#i??=d()).promise}static ensure(){if(null===G){const e=G=new ne;H.add(G),te||ne.enqueue(()=>{G===e&&e.flush()})}return G}static enqueue(e){V(e)}apply(){}}function re(e){var t=te;te=!0;try{for(;;){if(W(),0===X.length&&(G?.flush(),0===X.length))return void(Y=null);ie()}}finally{te=t}}function ie(){var t=ct;ee=!0;try{var n=0;for(ut(!0);X.length>0;){var r=ne.ensure();if(n++>1e3)e,le();r.process(X),we.clear()}}finally{ee=!1,ut(t),Y=null}}function le(){try{!function(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}()}catch(e){K(e,Y)}}let se=null;function oe(e){var t=e.length;if(0!==t){for(var n=0;n<t;){var r=e[n++];if(!(24576&r.f)&&jt(r)&&(se=new Set,$t(r),null===r.deps&&null===r.first&&null===r.nodes&&(null===r.teardown&&null===r.ac?it(r):r.fn=null),se?.size>0)){we.clear();for(const e of se){if(24576&e.f)continue;const t=[e];let n=e.parent;for(;null!==n;)se.has(n)&&(se.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){const n=t[e];24576&n.f||$t(n)}}se.clear()}}se=null}}function ae(e,t,n,r){if(!n.has(e)&&(n.add(e),null!==e.reactions))for(const i of e.reactions){const e=i.f;2&e?ae(i,t,n,r):4194320&e&&0===(e&y)&&fe(i,t,r)&&(It(i,y),ce(i))}}function fe(e,t,n){const r=n.get(e);if(void 0!==r)return r;if(null!==e.deps)for(const i of e.deps){if(t.includes(i))return!0;if(2&i.f&&fe(i,t,n))return n.set(i,!0),!0}return n.set(e,!1),!1}function ce(e){for(var t=Y=e;null!==t.parent;){var n=(t=t.parent).f;if(ee&&t===gt&&0!==(n&h)&&0===(n&S))return;if(96&n){if(0===(n&m))return;t.f^=m}}X.push(t)}class ue{parent;#n=!1;#d;#h=null;#v;#p;#_;#g=null;#m=null;#y=null;#b=null;#w=null;#k=0;#x=0;#E=!1;#P=null;#S=function(e){let t,n=0,r=xe(0);return()=>{Fe()&&(Mt(r),Je(()=>(0===n&&(t=Ct(()=>e(()=>Ae(r)))),n+=1,()=>{V(()=>{n-=1,0===n&&(t?.(),t=void 0,Ae(r))})})))}}(()=>(this.#P=xe(this.#k),()=>{this.#P=null}));constructor(e,t,n){this.#d=e,this.#v=t,this.#p=n,this.parent=gt.b,this.#n=!!this.#v.pending,this.#_=Xe(()=>{gt.b=this;var e=this.#A();try{this.#g=Ye(()=>n(e))}catch(t){this.error(t)}return this.#x>0?this.#q():this.#n=!1,()=>{this.#w?.remove()}},589952)}#j(){try{this.#g=Ye(()=>this.#p(this.#d))}catch(e){this.error(e)}this.#n=!1}#O(){const e=this.#v.pending;e&&(this.#m=Ye(()=>e(this.#d)),ne.enqueue(()=>{var e=this.#A();this.#g=this.#L(()=>(ne.ensure(),Ye(()=>this.#p(e)))),this.#x>0?this.#q():(lt(this.#m,()=>{this.#m=null}),this.#n=!1)}))}#A(){var e=this.#d;return this.#n&&(this.#w=Me(),this.#d.before(this.#w),e=this.#w),e}is_pending(){return this.#n||!!this.parent&&this.parent.is_pending()}has_pending_snippet(){return!!this.#v.pending}#L(e){var t=gt,n=vt,r=C;mt(this.#_),_t(this.#_),T(this.#_.ctx);try{return e()}catch(i){return F(i),null}finally{mt(t),_t(n),T(r)}}#q(){const e=this.#v.pending;null!==this.#g&&(this.#b=document.createDocumentFragment(),this.#b.append(this.#w),ft(this.#g,this.#b)),null===this.#m&&(this.#m=Ye(()=>e(this.#d)))}#z(e){this.has_pending_snippet()?(this.#x+=e,0===this.#x&&(this.#n=!1,this.#m&<(this.#m,()=>{this.#m=null}),this.#b&&(this.#d.before(this.#b),this.#b=null))):this.parent&&this.parent.#z(e)}update_pending_count(e){this.#z(e),this.#k+=e,this.#P&&Se(this.#P,this.#k)}get_effect_pending(){return this.#S(),Mt(this.#P)}error(e){var t=this.#v.onerror;let n=this.#v.failed;if(this.#E||!t&&!n)throw e;this.#g&&(nt(this.#g),this.#g=null),this.#m&&(nt(this.#m),this.#m=null),this.#y&&(nt(this.#y),this.#y=null);var r=!1,i=!1;const l=()=>{r?console.warn("https://svelte.dev/e/svelte_boundary_reset_noop"):(r=!0,i&&function(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}(),ne.ensure(),this.#k=0,null!==this.#y&<(this.#y,()=>{this.#y=null}),this.#n=this.has_pending_snippet(),this.#g=this.#L(()=>(this.#E=!1,Ye(()=>this.#p(this.#d)))),this.#x>0?this.#q():this.#n=!1)};var s=vt;try{_t(null),i=!0,t?.(e,l),i=!1}catch(e){K(e,this.#_&&this.#_.parent)}finally{_t(s)}n&&V(()=>{this.#y=this.#L(()=>{ne.ensure(),this.#E=!0;try{return Ye(()=>{n(this.#d,()=>e,()=>l)})}catch(e){return K(e,this.#_.parent),null}finally{this.#E=!1}})})}}function de(e,t,n,r){const i=pe;if(0!==n.length||0!==e.length){var l=G,s=gt,o=he();e.length>0?Promise.all(e).then(()=>{o();try{return a()}finally{l?.deactivate(),ve()}}):a()}else r(t.map(i));function a(){Promise.all(n.map(e=>function(e){let t=gt;null===t&&function(){throw new Error("https://svelte.dev/e/async_derived_orphan")}();var n=t.b,r=void 0,i=xe(M),l=!vt,s=new Map;return function(e){We(4718592,e,!0)}(()=>{var t=d();r=t.promise;try{Promise.resolve(e()).then(t.resolve,t.reject).then(()=>{o===G&&o.committed&&o.deactivate(),ve()})}catch(c){t.reject(c),ve()}var o=G;if(l){var a=!n.is_pending();n.update_pending_count(1),o.increment(a),s.get(o)?.reject($),s.delete(o),s.set(o,t)}const f=(e,t=void 0)=>{if(o.activate(),t)t!==$&&(i.f|=O,Se(i,t));else{0!==(i.f&O)&&(i.f^=O),Se(i,e);for(const[e,t]of s){if(s.delete(e),e===o)break;t.reject($)}}l&&(n.update_pending_count(-1),o.decrement(a))};t.promise.then(f,e=>f(null,e||"unknown"))}),Ke(()=>{for(const e of s.values())e.reject($)}),new Promise(e=>{function t(n){function l(){n===r?e(i):t(r)}n.then(l,l)}t(r)})}(e))).then(e=>{o();try{r([...t.map(i),...e])}catch(n){0===(s.f&k)&&K(n,s)}l?.deactivate(),ve()}).catch(e=>{K(e,s)})}}function he(){var e=gt,t=vt,n=C,r=G;return function(i=!0){mt(e),_t(t),T(n),i&&r?.activate()}}function ve(){mt(null),_t(null),T(null)}function pe(e){var t=null!==vt&&2&vt.f?vt:null;null!==gt&&(gt.f|=A);return{ctx:C,deps:null,effects:null,equals:R,f:2050,fn:e,reactions:null,rv:0,v:M,wv:0,parent:t??gt,ac:null}}function _e(e){const t=pe(e);return bt(t),t}function ge(e){var t=e.effects;if(null!==t){e.effects=null;for(var n=0;n<t.length;n+=1)nt(t[n])}}function me(e){var t,n=gt;mt(function(e){for(var t=e.parent;null!==t;){if(!(2&t.f))return 0===(t.f&k)?t:null;t=t.parent}return null}(e));try{e.f&=-32769,ge(e),t=Lt(e)}finally{mt(n)}return t}function ye(e){var t=me(e);(e.equals(t)||(G?.is_fork||(e.v=t),e.wv=qt()),dt)||(null!==Q?(Fe()||G?.is_fork)&&Q.set(e,t):It(e,0===(e.f&g)?b:m))}let be=new Set;const we=new Map;let ke=!1;function xe(e,t){return{f:0,v:e,reactions:null,equals:R,rv:0,wv:0}}function Ee(e,t){const n=xe(e);return bt(n),n}function Pe(e,t,n=!1){return null===vt||pt&&0===(vt.f&P)||!(4325394&vt.f)||yt?.includes(e)||function(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}(),Se(e,n?je(t):t)}function Se(e,t){if(!e.equals(t)){var n=e.v;dt?we.set(e,t):we.set(e,n),e.v=t;var r=ne.ensure();r.capture(e,n),2&e.f&&(0!==(e.f&y)&&me(e),It(e,0!==(e.f&g)?m:b)),e.wv=qt(),qe(e,y),null===gt||0===(gt.f&m)||96>.f||(null===xt?function(e){xt=e}([e]):xt.push(e)),!r.is_fork&&be.size>0&&!ke&&function(){ke=!1;var e=ct;ut(!0);const t=Array.from(be);try{for(const e of t)0!==(e.f&m)&&It(e,b),jt(e)&&$t(e)}finally{ut(e)}be.clear()}()}return t}function Ae(e){Pe(e,e.v+1)}function qe(e,t){var n=e.reactions;if(null!==n)for(var r=n.length,i=0;i<r;i++){var l=n[i],s=l.f,o=0===(s&y);if(o&&It(l,t),2&s){var a=l;Q?.delete(a),0===(s&q)&&(s&g&&(l.f|=q),qe(a,b))}else o&&(0!==(s&h)&&null!==se&&se.add(l),ce(l))}}function je(e){if("object"!=typeof e||null===e||L in e)return e;const n=f(e);if(n!==o&&n!==a)return e;var r=new Map,i=t(e),s=Ee(0),c=St,u=e=>{if(St===c)return e();var t=vt,n=St;_t(null),At(c);var r=e();return _t(t),At(n),r};return i&&r.set("length",Ee(e.length)),new Proxy(e,{defineProperty(e,t,n){"value"in n&&!1!==n.configurable&&!1!==n.enumerable&&!1!==n.writable||function(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}();var i=r.get(t);return void 0===i?i=u(()=>{var e=Ee(n.value);return r.set(t,e),e}):Pe(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(void 0===n){if(t in e){const e=u(()=>Ee(M));r.set(t,e),Ae(s)}}else Pe(n,M),Ae(s);return!0},get(t,n,i){if(n===L)return e;var s=r.get(n),o=n in t;if(void 0!==s||o&&!l(t,n)?.writable||(s=u(()=>Ee(je(o?t[n]:M))),r.set(n,s)),void 0!==s){var a=Mt(s);return a===M?void 0:a}return Reflect.get(t,n,i)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&"value"in n){var i=r.get(t);i&&(n.value=Mt(i))}else if(void 0===n){var l=r.get(t),s=l?.v;if(void 0!==l&&s!==M)return{enumerable:!0,configurable:!0,value:s,writable:!0}}return n},has(e,t){if(t===L)return!0;var n=r.get(t),i=void 0!==n&&n.v!==M||Reflect.has(e,t);if((void 0!==n||null!==gt&&(!i||l(e,t)?.writable))&&(void 0===n&&(n=u(()=>Ee(i?je(e[t]):M)),r.set(t,n)),Mt(n)===M))return!1;return i},set(e,t,n,o){var a=r.get(t),f=t in e;if(i&&"length"===t)for(var c=n;c<a.v;c+=1){var d=r.get(c+"");void 0!==d?Pe(d,M):c in e&&(d=u(()=>Ee(M)),r.set(c+"",d))}void 0===a?f&&!l(e,t)?.writable||(Pe(a=u(()=>Ee(void 0)),je(n)),r.set(t,a)):(f=a.v!==M,Pe(a,u(()=>je(n))));var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(o,n),!f){if(i&&"string"==typeof t){var v=r.get("length"),p=Number(t);Number.isInteger(p)&&p>=v.v&&Pe(v,p+1)}Ae(s)}return!0},ownKeys(e){Mt(s);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return void 0===t||t.v!==M});for(var[n,i]of r)i.v===M||n in e||t.push(n);return t},setPrototypeOf(){!function(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}()}})}function Oe(e){try{if(null!==e&&"object"==typeof e&&L in e)return e[L]}catch{}return e}var Le,ze,Ne,$e;function Me(e=""){return document.createTextNode(e)}function De(e){return Ne.call(e)}function Re(e){return $e.call(e)}function Ce(e,t){return De(e)}function Te(e,t=!1){var n=De(e);return n instanceof Comment&&""===n.data?Re(n):n}function Ie(e,t=1,n=!1){let r=e;for(;t--;)r=Re(r);return r}let Ue=!1;function Ze(e){var t=vt,n=gt;_t(null),mt(null);try{return e()}finally{_t(t),mt(n)}}function Be(e,t,n,r=n){e.addEventListener(t,()=>Ze(n));const i=e.__on_r;e.__on_r=i?()=>{i(),r(!0)}:()=>r(!0),Ue||(Ue=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(const t of e.target.elements)t.__on_r?.()})},{capture:!0}))}function Ve(e){null===gt&&(null===vt&&function(){throw new Error("https://svelte.dev/e/effect_orphan")}(),function(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}()),dt&&function(){throw new Error("https://svelte.dev/e/effect_in_teardown")}()}function We(e,t,n){var r=gt;null!==r&&0!==(r.f&w)&&(e|=w);var i={ctx:C,deps:null,nodes:null,f:e|y|g,first:null,fn:t,last:null,next:null,parent:r,b:r&&r.b,prev:null,teardown:null,wv:0,ac:null};if(n)try{$t(i),i.f|=x}catch(l){throw nt(i),l}else null!==t&&ce(i);var l=i;if(n&&null===l.deps&&null===l.teardown&&null===l.nodes&&l.first===l.last&&0===(l.f&A)&&(l=l.first,0!==(e&h)&&0!==(e&E)&&null!==l&&(l.f|=E)),null!==l&&(l.parent=r,null!==r&&function(e,t){var n=t.last;null===n?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}(l,r),null!==vt&&2&vt.f&&0===(e&p))){var s=vt;(s.effects??=[]).push(l)}return i}function Fe(){return null!==vt&&!pt}function Ke(e){const t=We(8,null,!1);return It(t,m),t.teardown=e,t}function He(e){Ve();var t=gt.f;if(!(!vt&&0!==(t&v)&&0===(t&x)))return Ge(e);var n=C;(n.e??=[]).push(e)}function Ge(e){return We(1048580,e,!1)}function Je(e,t=0){return We(8|t,e,!0)}function Qe(e,t=[],n=[],r=[]){de(r,t,n,t=>{We(8,()=>e(...t.map(Mt)),!0)})}function Xe(e,t=0){return We(h|t,e,!0)}function Ye(e){return We(524320,e,!0)}function et(e){var t=e.teardown;if(null!==t){const e=dt,n=vt;ht(!0),_t(null);try{t.call(null)}finally{ht(e),_t(n)}}}function tt(e,t=!1){var n=e.first;for(e.first=e.last=null;null!==n;){const e=n.ac;null!==e&&Ze(()=>{e.abort($)});var r=n.next;0!==(n.f&p)?n.parent=null:nt(n,t),n=r}}function nt(e,t=!0){var n=!1;!t&&0===(e.f&S)||null===e.nodes||null===e.nodes.end||(rt(e.nodes.start,e.nodes.end),n=!0),tt(e,t&&!n),Nt(e,0),It(e,k);var r=e.nodes&&e.nodes.t;if(null!==r)for(const l of r)l.stop();et(e);var i=e.parent;null!==i&&null!==i.first&&it(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=null}function rt(e,t){for(;null!==e;){var n=e===t?null:Re(e);e.remove(),e=n}}function it(e){var t=e.parent,n=e.prev,r=e.next;null!==n&&(n.next=r),null!==r&&(r.prev=n),null!==t&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function lt(e,t,n=!0){var r=[];st(e,r,!0);var i=()=>{n&&nt(e),t&&t()},l=r.length;if(l>0){var s=()=>--l||i();for(var o of r)o.out(s)}else i()}function st(e,t,n){if(0===(e.f&w)){e.f^=w;var r=e.nodes&&e.nodes.t;if(null!==r)for(const e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;null!==i;){var l=i.next;st(i,t,!!(0!==(i.f&E)||0!==(i.f&v)&&0!==(e.f&h))&&n),i=l}}}function ot(e){at(e,!0)}function at(e,t){if(0!==(e.f&w)){e.f^=w,0===(e.f&m)&&(It(e,y),ce(e));for(var n=e.first;null!==n;){var r=n.next;at(n,!!(0!==(n.f&E)||0!==(n.f&v))&&t),n=r}var i=e.nodes&&e.nodes.t;if(null!==i)for(const e of i)(e.is_global||t)&&e.in()}}function ft(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;null!==n;){var i=n===r?null:Re(n);t.append(n),n=i}}let ct=!1;function ut(e){ct=e}let dt=!1;function ht(e){dt=e}let vt=null,pt=!1;function _t(e){vt=e}let gt=null;function mt(e){gt=e}let yt=null;function bt(e){null!==vt&&(null===yt?yt=[e]:yt.push(e))}let wt=null,kt=0,xt=null;let Et=1,Pt=0,St=Pt;function At(e){St=e}function qt(){return++Et}function jt(e){var t=e.f;if(0!==(t&y))return!0;if(2&t&&(e.f&=-32769),0!==(t&b)){var n=e.deps;if(null!==n)for(var r=n.length,i=0;i<r;i++){var l=n[i];if(jt(l)&&ye(l),l.wv>e.wv)return!0}0!==(t&g)&&null===Q&&It(e,m)}return!1}function Ot(e,t,n=!0){var r=e.reactions;if(null!==r&&!yt?.includes(e))for(var i=0;i<r.length;i++){var l=r[i];2&l.f?Ot(l,t,!1):t===l&&(n?It(l,y):0!==(l.f&m)&&It(l,b),ce(l))}}function Lt(e){var t=wt,n=kt,r=xt,i=vt,l=yt,s=C,o=pt,a=St,f=e.f;wt=null,kt=0,xt=null,vt=96&f?null:e,yt=null,T(e.ctx),pt=!1,St=++Pt,null!==e.ac&&(Ze(()=>{e.ac.abort($)}),e.ac=null);try{e.f|=j;var c=(0,e.fn)(),u=e.deps;if(null!==wt){var d;if(Nt(e,kt),null!==u&&kt>0)for(u.length=kt+wt.length,d=0;d<wt.length;d++)u[kt+d]=wt[d];else e.deps=u=wt;if(Fe()&&0!==(e.f&g))for(d=kt;d<u.length;d++)(u[d].reactions??=[]).push(e)}else null!==u&&kt<u.length&&(Nt(e,kt),u.length=kt);if(!(null===xt||pt||null===u||6146&e.f))for(d=0;d<xt.length;d++)Ot(xt[d],e);return null!==i&&i!==e&&(Pt++,null!==xt&&(null===r?r=xt:r.push(...xt))),0!==(e.f&O)&&(e.f^=O),c}catch(h){return F(h)}finally{e.f^=j,wt=t,kt=n,xt=r,vt=i,yt=l,T(s),pt=o,St=a}}function zt(e,t){let r=t.reactions;if(null!==r){var i=n.call(r,e);if(-1!==i){var l=r.length-1;0===l?r=t.reactions=null:(r[i]=r[l],r.pop())}}null===r&&2&t.f&&(null===wt||!wt.includes(t))&&(It(t,b),0!==(t.f&g)&&(t.f^=g,t.f&=-32769),ge(t),Nt(t,0))}function Nt(e,t){var n=e.deps;if(null!==n)for(var r=t;r<n.length;r++)zt(e,n[r])}function $t(e){var t=e.f;if(0===(t&k)){It(e,m);var n=gt,r=ct;gt=e,ct=!0;try{16777232&t?function(e){for(var t=e.first;null!==t;){var n=t.next;0===(t.f&v)&&nt(t),t=n}}(e):tt(e),et(e);var i=Lt(e);e.teardown="function"==typeof i?i:null,e.wv=Et}finally{ct=r,gt=n}}}function Mt(e){var t=!!(2&e.f);if(null!==vt&&!pt&&(!(null!==gt&&0!==(gt.f&k))&&!yt?.includes(e))){var n=vt.deps;if(0!==(vt.f&j))e.rv<Pt&&(e.rv=Pt,null===wt&&null!==n&&n[kt]===e?kt++:null===wt?wt=[e]:wt.includes(e)||wt.push(e));else{(vt.deps??=[]).push(e);var r=e.reactions;null===r?e.reactions=[vt]:r.includes(vt)||r.push(vt)}}if(dt){if(we.has(e))return we.get(e);if(t){var i=e,l=i.v;return(0===(i.f&m)&&null!==i.reactions||Rt(i))&&(l=me(i)),we.set(i,l),l}}else t&&(!Q?.has(e)||G?.is_fork&&!Fe())&&(jt(i=e)&&ye(i),ct&&Fe()&&0===(i.f&g)&&Dt(i));if(Q?.has(e))return Q.get(e);if(0!==(e.f&O))throw e.v;return e.v}function Dt(e){if(null!==e.deps){e.f^=g;for(const t of e.deps)(t.reactions??=[]).push(e),2&t.f&&0===(t.f&g)&&Dt(t)}}function Rt(e){if(e.v===M)return!0;if(null===e.deps)return!1;for(const t of e.deps){if(we.has(t))return!0;if(2&t.f&&Rt(t))return!0}return!1}function Ct(e){var t=pt;try{return pt=!0,e()}finally{pt=t}}const Tt=-7169;function It(e,t){e.f=e.f&Tt|t}const Ut=["touchstart","touchmove"];function Zt(e){return Ut.includes(e)}const Bt=new Set,Vt=new Set;function Wt(e){for(var t=0;t<e.length;t++)Bt.add(e[t]);for(var n of Vt)n(e)}let Ft=null;function Kt(e){var t=this,n=t.ownerDocument,r=e.type,l=e.composedPath?.()||[],s=l[0]||e.target;Ft=e;var o=0,a=Ft===e&&e.__root;if(a){var f=l.indexOf(a);if(-1!==f&&(t===document||t===window))return void(e.__root=t);var c=l.indexOf(t);if(-1===c)return;f<=c&&(o=f)}if((s=l[o]||e.target)!==t){i(e,"currentTarget",{configurable:!0,get:()=>s||n});var u=vt,d=gt;_t(null),mt(null);try{for(var h,v=[];null!==s;){var p=s.assignedSlot||s.parentNode||s.host||null;try{var _=s["__"+r];null==_||s.disabled&&e.target!==s||_.call(s,e)}catch(g){h?v.push(g):h=g}if(e.cancelBubble||p===t||null===p)break;s=p}if(h){for(let e of v)queueMicrotask(()=>{throw e});throw h}}finally{e.__root=t,delete e.currentTarget,_t(u),mt(d)}}}function Ht(e){var t=document.createElement("template");return t.innerHTML=e.replaceAll("<!>","\x3c!----\x3e"),t.content}function Gt(e,t){var n=gt;null===n.nodes&&(n.nodes={start:e,end:t,a:null,t:null})}function Jt(e,t){var n,r=!!(1&t),i=!!(2&t),l=!e.startsWith("<!>");return()=>{void 0===n&&(n=Ht(l?e:"<!>"+e),r||(n=De(n)));var t=i||ze?document.importNode(n,!0):n.cloneNode(!0);r?Gt(De(t),t.lastChild):Gt(t,t);return t}}function Qt(e=""){var t=Me(e+"");return Gt(t,t),t}function Xt(){var e=document.createDocumentFragment(),t=document.createComment(""),n=Me();return e.append(t,n),Gt(t,n),e}function Yt(e,t){null!==e&&e.before(t)}function en(e,t){var n=null==t?"":"object"==typeof t?t+"":t;n!==(e.__t??=e.nodeValue)&&(e.__t=n,e.nodeValue=n+"")}const tn=new Map;let nn=new WeakMap;class rn{anchor;#N=new Map;#$=new Map;#M=new Map;#D=new Set;#R=!0;constructor(e,t=!0){this.anchor=e,this.#R=t}#u=()=>{var e=G;if(this.#N.has(e)){var t=this.#N.get(e),n=this.#$.get(t);if(n)ot(n),this.#D.delete(t);else{var r=this.#M.get(t);r&&(this.#$.set(t,r.effect),this.#M.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(const[t,n]of this.#N){if(this.#N.delete(t),t===e)break;const r=this.#M.get(n);r&&(nt(r.effect),this.#M.delete(n))}for(const[e,r]of this.#$){if(e===t||this.#D.has(e))continue;const i=()=>{if(Array.from(this.#N.values()).includes(e)){var t=document.createDocumentFragment();ft(r,t),t.append(Me()),this.#M.set(e,{effect:r,fragment:t})}else nt(r);this.#D.delete(e),this.#$.delete(e)};this.#R||!n?(this.#D.add(e),lt(r,i,!1)):i()}}};#C=e=>{this.#N.delete(e);const t=Array.from(this.#N.values());for(const[n,r]of this.#M)t.includes(n)||(nt(r.effect),this.#M.delete(n))};ensure(e,t){var n=G;!t||this.#$.has(e)||this.#M.has(e)||this.#$.set(e,Ye(()=>t(this.anchor)));this.#N.set(n,e),this.#u()}}function ln(e,t,n,r,i){var l=M,s=xe(l),o=xe(l),a=new rn(e);Xe(()=>{var e=t(),l=!1;if(function(e){return"function"==typeof e?.then}(e)){var f=he(),c=!1;const t=e=>{if(!l){c=!0,f(!1),ne.ensure();try{e()}finally{ve(),te||re()}}};e.then(e=>{t(()=>{Se(s,e),a.ensure(1,r&&(e=>r(e,s)))})},e=>{t(()=>{if(Se(o,e),a.ensure(1,i&&(e=>i(e,o))),!i)throw o.v})}),V(()=>{c||t(()=>{a.ensure(0,n)})})}else Se(s,e),a.ensure(1,r&&(e=>r(e,s)));return()=>{l=!0}})}function sn(e,t,n=!1){var r=new rn(e);function i(e,t){r.ensure(e,t)}Xe(()=>{var e=!1;t((t,n=!0)=>{e=!0,i(n,t)}),e||i(!1,null)},n?E:0)}function on(e,t,...n){var r=new rn(e);Xe(()=>{const e=t()??null;r.ensure(e,e&&(t=>e(t,...n)))},E)}function an(e,t,n){var r=new rn(e);Xe(()=>{var e=t()??null;r.ensure(e,e&&(t=>n(t,e)))},E)}const fn=[..." \t\n\r\fย \v\ufeff"];function cn(e,t,n,r,i,l){var s=e.__className;if(s!==n||void 0===s){var o=function(e,t,n){var r=""+e;if(n)for(var i in n)if(n[i])r=r?r+" "+i:i;else if(r.length)for(var l=i.length,s=0;(s=r.indexOf(i,s))>=0;){var o=s+l;0!==s&&!fn.includes(r[s-1])||o!==r.length&&!fn.includes(r[o])?s=o:r=(0===s?"":r.substring(0,s))+r.substring(o+1)}return""===r?null:r}(n,0,l);null==o?e.removeAttribute("class"):e.className=o,e.__className=n}else if(l&&i!==l)for(var a in l){var f=!!l[a];null!=i&&f===!!i[a]||e.classList.toggle(a,f)}return l}const un=Symbol("is custom element"),dn=Symbol("is html");function hn(e,t,n,r){var i=function(e){return e.__attributes??={[un]:e.nodeName.includes("-"),[dn]:e.namespaceURI===D}}(e);i[t]!==(i[t]=n)&&("loading"===t&&(e[N]=n),null==n?e.removeAttribute(t):"string"!=typeof n&&_n(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function vn(e,t,n){var r=vt,i=gt;_t(null),mt(null);try{"style"!==t&&(pn.has(e.getAttribute("is")||e.nodeName)||!customElements||customElements.get(e.getAttribute("is")||e.tagName.toLowerCase())?_n(e).includes(t):n&&"object"==typeof n)?e[t]=n:hn(e,t,null==n?n:String(n))}finally{_t(r),mt(i)}}var pn=new Map;function _n(e){var t,n=e.getAttribute("is")||e.nodeName,r=pn.get(n);if(r)return r;pn.set(n,r=[]);for(var i=e,l=Element.prototype;l!==i;){for(var o in t=s(i))t[o].set&&r.push(o);i=f(i)}return r}function gn(e,t,n=t){var r=new WeakSet;Be(e,"input",async i=>{var l=i?e.defaultValue:e.value;if(l=bn(e)?wn(l):l,n(l),null!==G&&r.add(G),await async function(){await Promise.resolve(),re()}(),l!==(l=t())){var s=e.selectionStart,o=e.selectionEnd,a=e.value.length;if(e.value=l??"",null!==o){var f=e.value.length;s===o&&o===a&&f>a?(e.selectionStart=f,e.selectionEnd=f):(e.selectionStart=s,e.selectionEnd=Math.min(o,f))}}}),null==Ct(t)&&e.value&&(n(bn(e)?wn(e.value):e.value),null!==G&&r.add(G)),Je(()=>{var n=t();if(e===document.activeElement){var i=J??G;if(r.has(i))return}bn(e)&&n===wn(e.value)||("date"!==e.type||n||e.value)&&n!==e.value&&(e.value=n??"")})}const mn=new Set;function yn(e,t,n,r,i=r){var l="checkbox"===n.getAttribute("type"),s=e;if(null!==t)for(var o of t)s=s[o]??=[];s.push(n),Be(n,"change",()=>{var e=n.__value;l&&(e=function(e,t,n){for(var r=new Set,i=0;i<e.length;i+=1)e[i].checked&&r.add(e[i].__value);n||r.delete(t);return Array.from(r)}(s,e,n.checked)),i(e)},()=>i(l?[]:null)),Je(()=>{var e,t,i=r();l?(i=i||[],n.checked=i.includes(n.__value)):n.checked=(e=n.__value,t=i,Object.is(Oe(e),Oe(t)))}),Ke(()=>{var e=s.indexOf(n);-1!==e&&s.splice(e,1)}),mn.has(s)||(mn.add(s),V(()=>{s.sort((e,t)=>4===e.compareDocumentPosition(t)?-1:1),mn.delete(s)})),V(()=>{})}function bn(e){var t=e.type;return"number"===t||"range"===t}function wn(e){return""===e?null:+e}let kn=!1;function xn(e,t,n,r){var i,s,o=r,a=!0,f=L in e||z in e;i=l(e,t)?.set??(f&&t in e?n=>e[t]=n:void 0);var c,u=!1;if([s,u]=function(e){var t=kn;try{return kn=!1,[e(),kn]}finally{kn=t}}(()=>e[t]),c=()=>{var n=e[t];return void 0===n?(a&&(a=!1,o=r),o):(a=!0,n)},i){var d=e.$$legacy;return function(e,t){return arguments.length>0?((!t||d||u)&&i(t?c():e),e):c()}}var h=!1,v=pe(()=>(h=!1,c()));Mt(v);var p=gt;return function(e,t){if(arguments.length>0){const n=t?Mt(v):je(e);return Pe(v,n),h=!0,void 0!==o&&(o=n),e}return dt&&h||0!==(p.f&k)?v.v:Mt(v)}}const En={},Pn=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){const e=document.getElementsByTagName("link"),l=document.querySelector("meta[property=csp-nonce]"),s=l?.nonce||l?.getAttribute("nonce");i=t.map(t=>{if(t=function(e,t){return new URL(e,t).href}(t,n),t in En)return;En[t]=!0;const r=t.endsWith(".css"),i=r?'[rel="stylesheet"]':"";if(n)for(let n=e.length-1;n>=0;n--){const i=e[n];if(i.href===t&&(!r||"stylesheet"===i.rel))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;const l=document.createElement("link");return l.rel=r?"stylesheet":"modulepreload",r||(l.as="script"),l.crossOrigin="",l.href=t,s&&l.setAttribute("nonce",s),document.head.appendChild(l),r?new Promise((e,n)=>{l.addEventListener("load",e),l.addEventListener("error",()=>n(new Error(`Unable to preload CSS for ${t}`)))}):void 0}),r=Promise.all(i.map(e=>Promise.resolve(e).then(e=>({status:"fulfilled",value:e}),e=>({status:"rejected",reason:e}))))}var i;function l(e){const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(const e of t||[])"rejected"===e.status&&l(e.reason);return e().catch(l)})};"undefined"!=typeof window&&((window.__svelte??={}).v??=new Set).add("5");const Sn=/^[234567abcdefghij][234567abcdefghijklmnopqrstuvwxyz]{12}$/,An=/^did:([a-z]+):([a-zA-Z0-9._:%-]*[a-zA-Z0-9._-])$/,qn=/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$/,jn=e=>(e=>e.length>=7&&e.length<=2048&&An.test(e))(e)||(e=>e.length>=3&&e.length<=253&&qn.test(e))(e),On=e=>{const t=Ln(e);if(!t)return null;let n;if("bsky.app"===t.host||"staging.bsky.app"===t.host||"main.bsky.dev"===t.host){if(n=/^\/profile\/([^/]+)\/post\/([^/]+)\/?$/.exec(t.pathname))return jn(n[1])&&(e=>13===e.length&&Sn.test(e))(n[2])?{type:"post",author:n[1],rkey:n[2]}:null;if(n=/^\/profile\/([^/]+)\/?$/.exec(t.pathname))return jn(n[1])?{type:"profile",actor:n[1]}:null}return null},Ln=e=>{let t;if("parse"in URL)t=URL.parse(e);else try{t=new URL(e)}catch{}return!t||"https:"!==t.protocol&&"http:"!==t.protocol?null:t};var zn=Jt("<div><!></div>");function Nn(e,t){var n=zn();let r;on(Ce(n),()=>t.children),Qe(()=>r=cn(n,0,"banner svelte-4gizvm",0,r,{"type-alert":"alert"===t.type,"type-inform":"inform"===t.type})),Yt(e,n)}var $n=function(e,t,n="svg"){var r,i=`<${n}>${e.startsWith("<!>")?"<!>"+e:e}</${n}>`;return()=>{if(!r){var e=De(Ht(i));r=De(e)}var t=r.cloneNode(!0);return Gt(t,t),t}}('<svg viewBox="0 0 32 32" class="circular-spinner svelte-rq8vha"><circle cx="16" cy="16" fill="none" r="14" stroke-width="4" class="background svelte-rq8vha"></circle><circle cx="16" cy="16" fill="none" r="14" stroke-width="4" stroke-dasharray="80px" stroke-dashoffset="60px" class="accented svelte-rq8vha"></circle></svg>',0,"svg");function Mn(e,t){Yt(e,$n())}var Dn=Jt('<div class="field svelte-1wzaqos"><label class="input-wrapper svelte-1wzaqos"><span class="label svelte-1wzaqos"> </span> <!></label></div>');const Rn=new WeakMap;function Cn(e,t){I(t,!0);const n=_e(()=>(e=>{let t=Rn.get(e);return void 0===t&&Rn.set(e,t=e().then(e=>e.default)),t})(t.loader));var r=Xt();ln(Te(r),()=>Mt(n),e=>{var n=Xt();on(Te(n),()=>t.fallback),Yt(e,n)},(e,n)=>{var r=Xt();on(Te(r),()=>t.children,()=>Mt(n)),Yt(e,r)},(e,n)=>{var r=Xt();on(Te(r),()=>t.boundary,()=>Mt(n)),Yt(e,r)}),Yt(e,r),U()}var Tn=Jt('<input class="text-input svelte-1e5va0l"/>');const In=e=>{Mn(e)},Un=(e,t=u)=>{Nn(e,{type:"alert",children:(e,n)=>{var r=Qt();Qe(()=>en(r,""+t())),Yt(e,r)}})},Zn=()=>Pn(()=>import("./PostDisplay-CqTUAVla.js"),__vite__mapDeps([0,1,2,3,4]),import.meta.url),Bn=()=>Pn(()=>import("./ProfileCardDisplay-BpCMWdM3.js"),__vite__mapDeps([5,1,2,6]),import.meta.url),Vn=()=>Pn(()=>import("./ProfileFeedDisplay-QaaAcc9o.js"),__vite__mapDeps([7,1,2,3,8]),import.meta.url);var Wn=Jt('<fieldset class="choices svelte-1n46o8q"><label class="choice svelte-1n46o8q"><input type="radio" name="profile-type" class="svelte-1n46o8q"/> <span>Profile feed</span></label> <label class="choice svelte-1n46o8q"><input type="radio" name="profile-type" class="svelte-1n46o8q"/> <span>Profile card</span></label></fieldset>'),Fn=Jt('<div class="app svelte-1n46o8q"><h1 class="header svelte-1n46o8q"><code><bluesky-embed></code></h1> <!> <!> <main class="main svelte-1n46o8q"><!></main> <footer class="footer svelte-1n46o8q"><span>made with โค๏ธ by <a href="https://bsky.app/profile/did:plc:ia76kvnndjutgedggx2ibrem" class="svelte-1n46o8q">@mary.my.id</a></span> <span aria-hidden="true">ยท</span> <span><a href="https://github.com/mary-ext/bluesky-embed" class="svelte-1n46o8q">source code</a></span> <span aria-hidden="true">ยท</span> <span>MIT License</span></footer></div>');!function(e,t){(function(e,{target:t,anchor:n,props:i={},events:s,context:o,intro:a=!0}){!function(){if(void 0===Le){Le=window,ze=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;Ne=l(t,"firstChild").get,$e=l(t,"nextSibling").get,c(e)&&(e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__style=void 0,e.__e=void 0),c(n)&&(n.__t=void 0)}}();var f=new Set,u=e=>{for(var n=0;n<e.length;n++){var r=e[n];if(!f.has(r)){f.add(r);var i=Zt(r);t.addEventListener(r,Kt,{passive:i});var l=tn.get(r);void 0===l?(document.addEventListener(r,Kt,{passive:i}),tn.set(r,1)):tn.set(r,l+1)}}};u(r(Bt)),Vt.add(u);var d=void 0,h=function(e){ne.ensure();const t=We(524352,e,!0);return(e={})=>new Promise(n=>{e.outro?lt(t,()=>{nt(t),n(void 0)}):(nt(t),n(void 0))})}(()=>{var r=n??t.appendChild(Me());return function(e,t,n){new ue(e,t,n)}(r,{pending:()=>{}},t=>{o&&(I({}),C.c=o);s&&(i.$$events=s),d=e(t,i)||{},o&&U()}),()=>{for(var e of f){t.removeEventListener(e,Kt);var i=tn.get(e);0===--i?(document.removeEventListener(e,Kt),tn.delete(e)):tn.set(e,i)}Vt.delete(u),r!==n&&r.parentNode?.removeChild(r)}});nn.set(d,h)})(e,t)}(function(e,t){I(t,!0);const n=[],r="https://bsky.app/profile/did:plc:ragtjsm2j2vknwkz3zp4oxrd/post/3kj2umze7zj2n";let i=Ee(""),l=Ee("feed");const s=_e(()=>On(Mt(i)||r));var o=Fn(),a=Ie(Ce(o),2);!function(e,t){var n=Dn(),r=Ce(n),i=Ce(r),l=Ce(i);on(Ie(i,2),()=>t.children),Qe(()=>en(l,t.label)),Yt(e,n)}(a,{label:"Bluesky post or profile URL",children:(e,t)=>{!function(e,t){I(t,!0);let n=xn(t,"value");var r=Tn();Qe(()=>{hn(r,"type",t.type),hn(r,"placeholder",t.placeholder)}),gn(r,n),Yt(e,r),U()}(e,{type:"url",placeholder:r,get value(){return Mt(i)},set value(e){Pe(i,e,!0)}})}});var f=Ie(a,2),c=e=>{var t=Wn(),r=Ce(t),i=Ce(r);i.value=i.__value="feed";var s=Ce(Ie(r,2));s.value=s.__value="card",yn(n,[],i,()=>Mt(l),e=>Pe(l,e)),yn(n,[],s,()=>Mt(l),e=>Pe(l,e)),Yt(e,t)};sn(f,e=>{Mt(s)&&"profile"===Mt(s).type&&e(c)});var d=Ce(Ie(f,2)),h=e=>{Nn(e,{type:"alert",children:(e,t)=>{Yt(e,Qt("Invalid URL, did you type it correctly?"))}})},v=e=>{var t=Xt(),n=Te(t),r=e=>{{const t=(e,t=u)=>{var n=Xt();an(Te(n),t,(e,t)=>{t(e,{get matched(){return Mt(s)}})}),Yt(e,n)};Cn(e,{loader:Zn,get fallback(){return In},get boundary(){return Un},children:t,$$slots:{default:!0}})}},i=e=>{var t=Xt(),n=Te(t),r=e=>{{const t=(e,t=u)=>{var n=Xt();an(Te(n),t,(e,t)=>{t(e,{get matched(){return Mt(s)}})}),Yt(e,n)};let n=_e(()=>"card"===Mt(l)?Bn:Vn);Cn(e,{get loader(){return Mt(n)},get fallback(){return In},get boundary(){return Un},children:t,$$slots:{default:!0}})}};sn(n,e=>{"profile"===Mt(s).type&&e(r)},!0),Yt(e,t)};sn(n,e=>{"post"===Mt(s).type?e(r):e(i,!1)},!0),Yt(e,t)};sn(d,e=>{Mt(s)?e(v,!1):e(h)}),Yt(e,o),U()},{target:document.getElementById("app")});export{Nn as B,Mn as C,Yt as a,U as b,Ce as c,Xt as d,Te as e,Jt as f,ln as g,Qt as h,en as i,Mt as j,Ie as k,sn as l,gt as m,Ht as n,Gt as o,I as p,De as q,rt as r,vn as s,Qe as t,_e as u,C as v,He as w,Ct as x,Wt as y,on as z};
+1
assets/index-Cr8Vao8y.js
+1
assets/index-Cr8Vao8y.js
···
1
+
const t=(t,e)=>({text:t,features:t.length>0?e:void 0}),e=(e,o)=>{if(void 0===o||0===o.length)return[t(e,void 0)];const r=[],c=e.length;let h=0,d=0;const n=(t,o)=>{let r=t;if(e.charCodeAt(r)<128)for(r+=1,d+=1;d+8<=o&&r+8<=c;){if(!((e.charCodeAt(r)|e.charCodeAt(r+1)|e.charCodeAt(r+2)|e.charCodeAt(r+3)|e.charCodeAt(r+4)|e.charCodeAt(r+5)|e.charCodeAt(r+6)|e.charCodeAt(r+7))<128))break;r+=8,d+=8}for(;d<o&&r<c;){const t=e.charCodeAt(r);t<128?(r+=1,d+=1):t<2048?(r+=1,d+=2):t<55296||t>56319?(r+=1,d+=3):(r+=2,d+=4)}return r};for(let s=0,a=o.length;s<a;s++){const c=o[s],{byteStart:a,byteEnd:i}=c.index,l=c.features;if(!(a>i||0===l.length)){if(d<a){const o=n(h,a);o>h&&r.push(t(e.slice(h,o),void 0)),h=o}{const o=n(h,i);o>h&&r.push(t(e.slice(h,o),l)),h=o}}}return h<c&&r.push(t(e.slice(h),void 0)),r};export{e as s};
+5
-25
index.html
+5
-25
index.html
···
1
1
<!doctype html>
2
2
<html lang="en">
3
3
<head>
4
-
<meta charset="utf-8" />
4
+
<meta charset="UTF-8" />
5
5
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
-
<title>Bluesky post embeds</title>
7
-
<script type="module" src="./src/index.ts"></script>
6
+
<title>Bluesky embed</title>
7
+
<script type="module" crossorigin src="./assets/index-CD_0uzJz.js"></script>
8
+
<link rel="stylesheet" crossorigin href="./assets/index-B_9yoyg2.css">
8
9
</head>
9
10
<body>
10
-
<h1><bluesky-post></h1>
11
-
<p>A custom element for embedding Bluesky posts.</p>
12
-
<p>See <a href="https://github.com/mary-ext/bluesky-post-embed">GitHub repository</a> for details.</p>
13
-
14
-
<bluesky-post src="https://bsky.app/profile/pfrazee.com/post/3kj2umze7zj2n" theme="light">
15
-
<blockquote class="bluesky-post-fallback">
16
-
<p dir="auto">angel mode</p>
17
-
— Paul Frazee ๐ฆ (@pfrazee.com)
18
-
<a href="https://bsky.app/profile/pfrazee.com/post/3kj2umze7zj2n">January 16, 2024</a>
19
-
</blockquote>
20
-
</bluesky-post>
21
-
22
-
<pre>
23
-
<bluesky-post src="https://bsky.app/profile/pfrazee.com/post/3kj2umze7zj2n" theme="light">
24
-
<blockquote class="bluesky-post-fallback">
25
-
<p dir="auto">angel mode</p>
26
-
&mdash; Paul Frazee ๐ฆ (@pfrazee.com)
27
-
<a href="https://bsky.app/profile/pfrazee.com/post/3kj2umze7zj2n">January 16, 2024</a>
28
-
</blockquote>
29
-
</bluesky-post>
30
-
<script type="module" src="https://esm.sh/bluesky-post-embed@~0.1.0"></script></pre
31
-
>
11
+
<div id="app"></div>
32
12
</body>
33
13
</html>
-686
lib/core.tsx
-686
lib/core.tsx
···
1
-
import type { TrustedHTML } from '@intrnl/jsx-to-string';
2
-
3
-
import { BskyXRPC } from '@externdefs/bluesky-client';
4
-
import type {
5
-
AppBskyEmbedExternal,
6
-
AppBskyEmbedImages,
7
-
AppBskyEmbedRecord,
8
-
AppBskyFeedDefs,
9
-
AppBskyFeedGetPostThread,
10
-
AppBskyFeedPost,
11
-
AppBskyGraphDefs,
12
-
} from '@externdefs/bluesky-client/lexicons';
13
-
14
-
import './style.css';
15
-
16
-
import { segment_richtext } from './utils/richtext/segmentize.ts';
17
-
import type { Facet } from './utils/richtext/types.ts';
18
-
19
-
import { abs_long, abs_short, format_date } from './utils/date.ts';
20
-
import { format_compact } from './utils/number.ts';
21
-
22
-
type ThreadResponse = AppBskyFeedGetPostThread.Output;
23
-
type PostData = AppBskyFeedDefs.PostView;
24
-
type PostRecord = AppBskyFeedPost.Record;
25
-
26
-
/// Fetch post
27
-
const parse_src = (src: string): [actor: string, rkey: string] => {
28
-
const { protocol, host, pathname } = new URL(src);
29
-
30
-
if (protocol === 'https:' || protocol === 'http:') {
31
-
if (host === 'bsky.app' || host === 'staging.bsky.app') {
32
-
const match = /\/profile\/([^/]+)\/post\/([^/]+)\/?$/.exec(pathname);
33
-
34
-
if (match) {
35
-
return [match[1], match[2]];
36
-
}
37
-
}
38
-
}
39
-
40
-
throw new RangeError(`Invalid src: ${src}`);
41
-
};
42
-
43
-
export const get = async (
44
-
src: string,
45
-
contextless: boolean,
46
-
service: string = 'https://public.api.bsky.app',
47
-
): Promise<ThreadResponse> => {
48
-
const rpc = new BskyXRPC({ service });
49
-
50
-
const [actor, rkey] = parse_src(src);
51
-
52
-
let did: string;
53
-
if (actor.startsWith('did:')) {
54
-
did = actor;
55
-
} else {
56
-
const response = await rpc.get('com.atproto.identity.resolveHandle', {
57
-
params: {
58
-
handle: actor,
59
-
},
60
-
});
61
-
62
-
did = response.data.did;
63
-
}
64
-
65
-
const response = await rpc.get('app.bsky.feed.getPostThread', {
66
-
params: {
67
-
uri: `at://${did}/app.bsky.feed.post/${rkey}`,
68
-
parentHeight: !contextless ? 2 : 1,
69
-
depth: 0,
70
-
},
71
-
});
72
-
73
-
const data = response.data;
74
-
75
-
return data;
76
-
};
77
-
78
-
/// Renderer
79
-
const get_record_key = (uri: string) => {
80
-
const idx = uri.lastIndexOf('/');
81
-
return uri.slice(idx + 1);
82
-
};
83
-
84
-
const get_collection_ns = (uri: string) => {
85
-
const first = uri.indexOf('/', 5);
86
-
const second = uri.indexOf('/', first + 1);
87
-
88
-
return uri.slice(first + 1, second);
89
-
};
90
-
91
-
const get_profile_url = (author: string) => {
92
-
return `https://bsky.app/profile/${author}`;
93
-
};
94
-
95
-
const get_post_url = (author: string, rkey: string) => {
96
-
return `https://bsky.app/profile/${author}/post/${rkey}`;
97
-
};
98
-
99
-
export const render = (resp: ThreadResponse, contextless: boolean): TrustedHTML => {
100
-
const posts = unwrap_thread(resp, contextless);
101
-
const len = posts.length;
102
-
103
-
if (len === 0) {
104
-
return (
105
-
<div class="root">
106
-
<p class="not-available">This post is unavailable</p>
107
-
</div>
108
-
);
109
-
}
110
-
111
-
const reply_to_icon = (
112
-
<svg viewBox="0 0 24 24" class="icon">
113
-
<path fill="currentColor" d="M10 9V5l-7 7l7 7v-4.1c5 0 8.5 1.6 11 5.1c-1-5-4-10-11-11" />
114
-
</svg>
115
-
);
116
-
117
-
return (
118
-
<div class="root">
119
-
<div class="timeline">
120
-
{posts.map(({ post, parent }, i) => {
121
-
const main = i === len - 1;
122
-
123
-
const record = post.record as PostRecord;
124
-
const author = post.author;
125
-
126
-
const author_url = get_profile_url(author.did);
127
-
const post_url = get_post_url(author.did, get_record_key(post.uri));
128
-
129
-
if (main) {
130
-
return (
131
-
<div class="main-post">
132
-
<div class="main-post__header">
133
-
<a href={author_url} target="_blank" class="main-post__avatar-wrapper">
134
-
{author.avatar ? (
135
-
<img loading="lazy" src={author.avatar} class="main-post__avatar" />
136
-
) : null}
137
-
</a>
138
-
139
-
<a href={author_url} target="_blank" class="main-post__name-wrapper">
140
-
<bdi class="main-post__display-name-wrapper">
141
-
<span class="main-post__display-name">{author.displayName}</span>
142
-
</bdi>
143
-
<span class="main-post__handle">@{author.handle}</span>
144
-
</a>
145
-
</div>
146
-
147
-
{i === 0 && record.reply ? (
148
-
<p class="main-post__context">
149
-
{reply_to_icon}
150
-
{parent ? (
151
-
<span>
152
-
Reply to{' '}
153
-
<a
154
-
href={`https://bsky.app/profile/${parent.author.handle}`}
155
-
target="_blank"
156
-
class="main-post__context-link"
157
-
>
158
-
{parent.author.displayName || '@' + parent.author.handle}
159
-
</a>
160
-
</span>
161
-
) : (
162
-
<span>Reply to an unknown post</span>
163
-
)}
164
-
</p>
165
-
) : null}
166
-
167
-
<div class="main-post__body">
168
-
<RichTextRenderer text={record.text} facets={record.facets} />
169
-
</div>
170
-
171
-
{post.embed ? <Embeds embed={post.embed} large={true} /> : null}
172
-
173
-
{record.tags ? (
174
-
<div class="main-post__tags">
175
-
{record.tags.map((tag) => (
176
-
<div class="main-post__tag">
177
-
<span>#</span>
178
-
<span class="main-post__tag-text">{tag}</span>
179
-
</div>
180
-
))}
181
-
</div>
182
-
) : null}
183
-
184
-
<time datetime={record.createdAt} class="main-post__date">
185
-
{format_date(abs_long, record.createdAt)}
186
-
</time>
187
-
188
-
<div class="main-post__stats">
189
-
<span class="main-post__stat" title={`${post.likeCount || 0} likes`}>
190
-
<svg viewBox="0 0 24 24" class="icon">
191
-
<path
192
-
fill="currentColor"
193
-
d="M16.5 3c-1.74 0-3.41.81-4.5 2.09C10.91 3.81 9.24 3 7.5 3C4.42 3 2 5.42 2 8.5c0 3.78 3.4 6.86 8.55 11.54L12 21.35l1.45-1.32C18.6 15.36 22 12.28 22 8.5C22 5.42 19.58 3 16.5 3m-4.4 15.55l-.1.1l-.1-.1C7.14 14.24 4 11.39 4 8.5C4 6.5 5.5 5 7.5 5c1.54 0 3.04.99 3.57 2.36h1.87C13.46 5.99 14.96 5 16.5 5c2 0 3.5 1.5 3.5 3.5c0 2.89-3.14 5.74-7.9 10.05"
194
-
></path>
195
-
</svg>
196
-
<span>{format_compact(post.likeCount || 0)}</span>
197
-
</span>
198
-
199
-
<span class="main-post__stat" title={`${post.repostCount || 0} reposts`}>
200
-
<svg viewBox="0 0 24 24" class="icon">
201
-
<path
202
-
fill="currentColor"
203
-
d="M7 7h10v3l4-4l-4-4v3H5v6h2zm10 10H7v-3l-4 4l4 4v-3h12v-6h-2z"
204
-
></path>
205
-
</svg>
206
-
<span>{format_compact(post.repostCount || 0)}</span>
207
-
</span>
208
-
209
-
<div class="gap"></div>
210
-
211
-
<a href={post_url} target="_blank" class="permalink">
212
-
<span>Read {format_compact(post.replyCount || 0)} replies on Bluesky</span>
213
-
</a>
214
-
</div>
215
-
</div>
216
-
);
217
-
} else {
218
-
return (
219
-
<div class="reply-post">
220
-
<div class="reply-post__aside">
221
-
<a href={author_url} target="_blank" class="reply-post__avatar-wrapper">
222
-
{author.avatar ? (
223
-
<img loading="lazy" src={author.avatar} class="reply-post__avatar" />
224
-
) : null}
225
-
</a>
226
-
227
-
<div class="reply-post__line"></div>
228
-
</div>
229
-
230
-
<div class="reply-post__main">
231
-
<div class="reply-post__header">
232
-
<a href={author_url} target="_blank" class="reply-post__name-wrapper">
233
-
<bdi class="reply-post__display-name-wrapper">
234
-
<span class="reply-post__display-name">{author.displayName}</span>
235
-
</bdi>
236
-
237
-
<span class="reply-post__handle">@{author.handle}</span>
238
-
</a>
239
-
240
-
<span aria-hidden="true" class="dot">
241
-
ยท
242
-
</span>
243
-
244
-
<a
245
-
href={post_url}
246
-
target="_blank"
247
-
title={format_date(abs_long, record.createdAt)}
248
-
class="reply-post__date"
249
-
>
250
-
<time datetime={record.createdAt}>{format_date(abs_short, record.createdAt)}</time>
251
-
</a>
252
-
</div>
253
-
254
-
{i === 0 && record.reply ? (
255
-
<p class="reply-post__context">
256
-
{reply_to_icon}
257
-
{parent ? (
258
-
<span>
259
-
Reply to{' '}
260
-
<a
261
-
href={`https://bsky.app/profile/${parent.author.handle}`}
262
-
target="_blank"
263
-
class="reply-post__context-link"
264
-
>
265
-
{parent.author.displayName || '@' + parent.author.handle}
266
-
</a>
267
-
</span>
268
-
) : (
269
-
<span>Reply to an unknown post</span>
270
-
)}
271
-
</p>
272
-
) : null}
273
-
274
-
<div class="reply-post__body">
275
-
<RichTextRenderer text={record.text} facets={record.facets} />
276
-
</div>
277
-
278
-
{post.embed ? <Embeds embed={post.embed} large={false} /> : null}
279
-
</div>
280
-
</div>
281
-
);
282
-
}
283
-
})}
284
-
</div>
285
-
</div>
286
-
);
287
-
};
288
-
289
-
const unwrap_thread = (resp: ThreadResponse, contextless: boolean) => {
290
-
const items: { post: PostData; parent: PostData | undefined }[] = [];
291
-
292
-
let i = 0;
293
-
let il = contextless ? 1 : 2;
294
-
295
-
let curr: typeof resp.thread | undefined = resp.thread;
296
-
while (curr) {
297
-
if (curr.$type === 'app.bsky.feed.defs#notFoundPost' || curr.$type === 'app.bsky.feed.defs#blockedPost') {
298
-
break;
299
-
}
300
-
301
-
const post = curr.post;
302
-
303
-
if (i !== 0) {
304
-
items[i - 1].parent = post;
305
-
}
306
-
307
-
if (++i > il) {
308
-
break;
309
-
}
310
-
311
-
const author = post.author;
312
-
if (author.labels?.some((def) => def.val === '!no-unauthenticated')) {
313
-
break;
314
-
}
315
-
316
-
items.push({ post: post, parent: undefined });
317
-
curr = curr.parent;
318
-
}
319
-
320
-
return items.reverse();
321
-
};
322
-
323
-
/// <RichTextRenderer />
324
-
const RichTextRenderer = ({ text, facets }: { text: string; facets?: Facet[] }) => {
325
-
const segments = segment_richtext(text, facets);
326
-
327
-
return (
328
-
<>
329
-
{segments.map((segment) => {
330
-
const text = segment.text;
331
-
332
-
const link = segment.link;
333
-
const mention = segment.mention;
334
-
const tag = segment.tag;
335
-
336
-
if (link) {
337
-
return (
338
-
<a href={link.uri} target="_blank" class="link">
339
-
{text}
340
-
</a>
341
-
);
342
-
} else if (mention) {
343
-
return (
344
-
<a href={`https://bsky.app/profile/${mention.did}`} target="_blank" class="mention">
345
-
{text}
346
-
</a>
347
-
);
348
-
} else if (tag) {
349
-
return <span class="hashtag">{text}</span>;
350
-
}
351
-
352
-
return text;
353
-
})}
354
-
</>
355
-
);
356
-
};
357
-
358
-
/// <Embeds />
359
-
type EmbeddedImage = AppBskyEmbedImages.ViewImage;
360
-
type EmbeddedLink = AppBskyEmbedExternal.ViewExternal;
361
-
type EmbeddedRecord = AppBskyEmbedRecord.View['record'];
362
-
363
-
const Embeds = ({ embed, large }: { embed: NonNullable<PostData['embed']>; large: boolean }) => {
364
-
let images: EmbeddedImage[] | undefined;
365
-
let link: EmbeddedLink | undefined;
366
-
let record: EmbeddedRecord | undefined;
367
-
368
-
{
369
-
const $type = embed.$type;
370
-
371
-
if ($type === 'app.bsky.embed.images#view') {
372
-
images = embed.images;
373
-
} else if ($type === 'app.bsky.embed.external#view') {
374
-
link = embed.external;
375
-
} else if ($type === 'app.bsky.embed.record#view') {
376
-
record = embed.record;
377
-
} else if ($type === 'app.bsky.embed.recordWithMedia#view') {
378
-
const rec = embed.record.record;
379
-
380
-
const media = embed.media;
381
-
const mediatype = media.$type;
382
-
383
-
record = rec;
384
-
385
-
if (mediatype === 'app.bsky.embed.images#view') {
386
-
images = media.images;
387
-
} else if (mediatype === 'app.bsky.embed.external#view') {
388
-
link = media.external;
389
-
}
390
-
}
391
-
}
392
-
393
-
return (
394
-
<div class="embeds">
395
-
{link ? <EmbedLink link={link} /> : null}
396
-
{images ? <EmbedImage images={images} is_bordered={true} allow_standalone_ratio={true} /> : null}
397
-
{record ? render_record(record, large) : null}
398
-
</div>
399
-
);
400
-
};
401
-
402
-
const render_record = (record: EmbeddedRecord, large: boolean) => {
403
-
const $type = record.$type;
404
-
405
-
if ($type === 'app.bsky.embed.record#viewNotFound' || $type === 'app.bsky.embed.record#viewBlocked') {
406
-
return <EmbedNotFound uri={record.uri} />;
407
-
}
408
-
409
-
if ($type === 'app.bsky.embed.record#viewRecord') {
410
-
const author = record.author;
411
-
if (author.labels?.some((def) => def.val === '!no-unauthenticated')) {
412
-
return <EmbedNotFound uri={record.uri} />;
413
-
}
414
-
415
-
return <EmbedPost post={record} large={large} />;
416
-
}
417
-
418
-
if ($type === 'app.bsky.feed.defs#generatorView') {
419
-
return <EmbedFeed feed={record} />;
420
-
}
421
-
422
-
if ($type === 'app.bsky.graph.defs#listView') {
423
-
return <EmbedList list={record} />;
424
-
}
425
-
426
-
return null;
427
-
};
428
-
429
-
/// <EmbedNotFound />
430
-
const EmbedNotFound = ({ uri }: { uri: string }) => {
431
-
const ns = get_collection_ns(uri);
432
-
const resource =
433
-
ns === 'app.bsky.feed.post'
434
-
? 'post'
435
-
: ns === 'app.bsky.feed.generator'
436
-
? 'feed'
437
-
: ns === 'app.bsky.graph.list'
438
-
? 'list'
439
-
: 'record';
440
-
441
-
return <p class="embed-not-found">This {resource} is unavailable</p>;
442
-
};
443
-
444
-
/// <EmbedLink />
445
-
const EmbedLink = ({ link }: { link: EmbeddedLink }) => {
446
-
return (
447
-
<a href={link.uri} target="_blank" rel="noopener noreferrer nofollow" class="embed-link interactive">
448
-
{link.thumb ? <img loading="lazy" src={link.thumb} class="embed-link__thumb" /> : null}
449
-
450
-
<div class="embed-link__main">
451
-
<p class="embed-link__domain">{get_domain(link.uri)}</p>
452
-
<p class="embed-link__title">{link.title}</p>
453
-
454
-
<div class="embed-link__desktop-only">
455
-
<p class="embed-link__summary">{link.description}</p>
456
-
</div>
457
-
</div>
458
-
</a>
459
-
);
460
-
};
461
-
462
-
const get_domain = (url: string) => {
463
-
try {
464
-
const host = new URL(url).host;
465
-
return host.startsWith('www.') ? host.slice(4) : host;
466
-
} catch {
467
-
return url;
468
-
}
469
-
};
470
-
471
-
/// <EmbedImage />
472
-
const enum RenderMode {
473
-
MULTIPLE,
474
-
STANDALONE,
475
-
STANDALONE_RATIO,
476
-
}
477
-
478
-
const EmbedImage = ({
479
-
images,
480
-
is_bordered,
481
-
allow_standalone_ratio,
482
-
}: {
483
-
images: EmbeddedImage[];
484
-
is_bordered: boolean;
485
-
allow_standalone_ratio: boolean;
486
-
}) => {
487
-
const length = images.length;
488
-
const is_standalone_image = allow_standalone_ratio && length === 1 && 'aspectRatio' in images[0];
489
-
490
-
return (
491
-
<div
492
-
class={
493
-
'embed-image' +
494
-
(is_bordered ? ' embed-image--bordered' : '') +
495
-
(is_standalone_image ? ' embed-image--standalone' : '')
496
-
}
497
-
>
498
-
{is_standalone_image ? (
499
-
render_img(images[0], RenderMode.STANDALONE_RATIO)
500
-
) : length === 1 ? (
501
-
render_img(images[0], RenderMode.STANDALONE)
502
-
) : length === 2 ? (
503
-
<div class="embed-image__grid">
504
-
<div class="embed-image__col">{render_img(images[0], RenderMode.MULTIPLE)}</div>
505
-
<div class="embed-image__col">{render_img(images[1], RenderMode.MULTIPLE)}</div>
506
-
</div>
507
-
) : length === 3 ? (
508
-
<div class="embed-image__grid">
509
-
<div class="embed-image__col">
510
-
{render_img(images[0], RenderMode.MULTIPLE)}
511
-
{render_img(images[1], RenderMode.MULTIPLE)}
512
-
</div>
513
-
514
-
<div class="embed-image__col">{render_img(images[2], RenderMode.MULTIPLE)}</div>
515
-
</div>
516
-
) : length === 4 ? (
517
-
<div class="embed-image__grid">
518
-
<div class="embed-image__col">
519
-
{render_img(images[0], RenderMode.MULTIPLE)}
520
-
{render_img(images[2], RenderMode.MULTIPLE)}
521
-
</div>
522
-
523
-
<div class="embed-image__col">
524
-
{render_img(images[1], RenderMode.MULTIPLE)}
525
-
{render_img(images[3], RenderMode.MULTIPLE)}
526
-
</div>
527
-
</div>
528
-
) : null}
529
-
</div>
530
-
);
531
-
};
532
-
533
-
const render_img = (img: EmbeddedImage, mode: RenderMode) => {
534
-
// FIXME: with STANDALONE_RATIO, we are resizing the image to make it fit
535
-
// the container with our given constraints, but this doesn't work when the
536
-
// image hasn't had its metadata loaded yet, the browser will snap to the
537
-
// smallest possible size for our layout.
538
-
539
-
const alt = img.alt;
540
-
const aspectRatio = img.aspectRatio;
541
-
542
-
let cn: string | undefined;
543
-
let ratio: string | undefined;
544
-
545
-
if (mode === RenderMode.MULTIPLE) {
546
-
cn = `embed-image__image-wrapper--multiple`;
547
-
} else if (mode === RenderMode.STANDALONE) {
548
-
cn = `embed-image__image-wrapper--standalone`;
549
-
} else if (mode === RenderMode.STANDALONE_RATIO) {
550
-
cn = `embed-image__image-wrapper--standalone-ratio`;
551
-
ratio = `${aspectRatio!.width}/${aspectRatio!.height}`;
552
-
}
553
-
554
-
return (
555
-
<div class={'embed-image__image-wrapper ' + cn} style={{ 'aspect-ratio': ratio }}>
556
-
<img loading="lazy" src={img.thumb} alt={alt} class="embed-image__image" />
557
-
{mode === RenderMode.STANDALONE_RATIO ? <div class="embed-image__placeholder"></div> : null}
558
-
</div>
559
-
);
560
-
};
561
-
562
-
/// <EmbedPost />
563
-
const EmbedPost = ({ post, large }: { post: AppBskyEmbedRecord.ViewRecord; large: boolean }) => {
564
-
const author = post.author;
565
-
566
-
const record = post.value as PostRecord;
567
-
const text = record.text;
568
-
const images = get_post_images(post);
569
-
570
-
const show_large_images = images !== undefined && (large || !text);
571
-
572
-
const post_url = get_post_url(author.did, get_record_key(post.uri));
573
-
574
-
return (
575
-
<a href={post_url} target="_blank" class="embed-post interactive">
576
-
<div class="embed-post__header">
577
-
<div class="embed-post__avatar-wrapper">
578
-
{author.avatar ? <img loading="lazy" src={author.avatar} class="embed-post__avatar" /> : null}
579
-
</div>
580
-
581
-
<span class="embed-post__name-wrapper">
582
-
{author.displayName ? (
583
-
<bdi class="embed-post__display-name-wrapper">
584
-
<span class="embed-post__display-name">{author.displayName}</span>
585
-
</bdi>
586
-
) : null}
587
-
588
-
<span class="embed-post__handle">@{author.handle}</span>
589
-
</span>
590
-
591
-
<span aria-hidden="true" class="dot">
592
-
ยท
593
-
</span>
594
-
595
-
<time datetime={record.createdAt} class="embed-post__date">
596
-
{format_date(abs_short, record.createdAt)}
597
-
</time>
598
-
</div>
599
-
600
-
{text ? (
601
-
<div class="embed-post__body">
602
-
{images && !large ? (
603
-
<div class="embed-post__image-aside">
604
-
<EmbedImage images={images} is_bordered={true} allow_standalone_ratio={false} />
605
-
</div>
606
-
) : null}
607
-
608
-
<div class="embed-post__text">{text}</div>
609
-
</div>
610
-
) : null}
611
-
612
-
{show_large_images ? (
613
-
<>
614
-
{text ? <div class="embed-post__divider"></div> : null}
615
-
<EmbedImage images={images} is_bordered={false} allow_standalone_ratio={false} />
616
-
</>
617
-
) : null}
618
-
</a>
619
-
);
620
-
};
621
-
622
-
const get_post_images = (post: AppBskyEmbedRecord.ViewRecord) => {
623
-
const embeds = post.embeds;
624
-
625
-
if (embeds && embeds.length > 0) {
626
-
const val = embeds[0];
627
-
628
-
if (val.$type === 'app.bsky.embed.images#view') {
629
-
return val.images;
630
-
} else if (val.$type === 'app.bsky.embed.recordWithMedia#view') {
631
-
const media = val.media;
632
-
633
-
if (media.$type === 'app.bsky.embed.images#view') {
634
-
return media.images;
635
-
}
636
-
}
637
-
}
638
-
};
639
-
640
-
/// <EmbedFeed />
641
-
const EmbedFeed = ({ feed }: { feed: AppBskyFeedDefs.GeneratorView }) => {
642
-
const creator = feed.creator;
643
-
644
-
const feed_url = `https://bsky.app/profile/${creator.handle}/feed/${get_record_key(feed.uri)}`;
645
-
646
-
return (
647
-
<a href={feed_url} target="_blank" class="embed-feed interactive">
648
-
<div class="embed-feed__avatar-wrapper">
649
-
{feed.avatar ? <img loading="lazy" src={feed.avatar} class="embed-feed__avatar" /> : null}
650
-
</div>
651
-
652
-
<div class="embed-feed__main">
653
-
<p class="embed-feed__name">{feed.displayName}</p>
654
-
<p class="embed-feed__type">{`Feed by @${creator.handle}`}</p>
655
-
</div>
656
-
</a>
657
-
);
658
-
};
659
-
660
-
/// <EmbedList />
661
-
const EmbedList = ({ list }: { list: AppBskyGraphDefs.ListView }) => {
662
-
const creator = list.creator;
663
-
664
-
const raw_purpose = list.purpose;
665
-
const purpose =
666
-
raw_purpose === 'app.bsky.graph.defs#curatelist'
667
-
? `Curation list`
668
-
: raw_purpose === 'app.bsky.graph.defs#modlist'
669
-
? `Moderation list`
670
-
: `Unknown list`;
671
-
672
-
const list_url = `https://bsky.app/profile/${creator.handle}/list/${get_record_key(list.uri)}`;
673
-
674
-
return (
675
-
<a href={list_url} target="_blank" class="embed-list interactive">
676
-
<div class="embed-list__avatar-wrapper">
677
-
{list.avatar ? <img loading="lazy" src={list.avatar} class="embed-list__avatar" /> : null}
678
-
</div>
679
-
680
-
<div class="embed-list__main">
681
-
<p class="embed-list__name">{list.name}</p>
682
-
<p class="embed-list__type">{`${purpose} by ${creator.handle}`}</p>
683
-
</div>
684
-
</a>
685
-
);
686
-
};
-1
lib/env.d.ts
-1
lib/env.d.ts
···
1
-
/// <reference types="vite/client" />
-35
lib/index.ts
-35
lib/index.ts
···
1
-
import rawStyles from './style.css?inline';
2
-
import { get, render } from './core.tsx';
3
-
4
-
let _style: CSSStyleSheet;
5
-
const get_style = () => {
6
-
if (!_style) {
7
-
_style = new CSSStyleSheet();
8
-
_style.replaceSync(rawStyles);
9
-
}
10
-
11
-
return _style;
12
-
};
13
-
14
-
export class BlueskyPost extends HTMLElement {
15
-
connectedCallback() {
16
-
this.load().then(
17
-
() => this.dispatchEvent(new CustomEvent('loaded')),
18
-
(err) => this.dispatchEvent(new CustomEvent('error', { detail: err })),
19
-
);
20
-
}
21
-
22
-
async load() {
23
-
const src = this.getAttribute('src')!;
24
-
const service = this.getAttribute('service-uri') || undefined;
25
-
const contextless = this.getAttribute('contextless') !== null;
26
-
27
-
const data = await get(src, contextless, service);
28
-
29
-
const root = this.attachShadow({ mode: 'open' });
30
-
root.adoptedStyleSheets = [get_style()];
31
-
root.innerHTML = render(data, contextless).value;
32
-
}
33
-
}
34
-
35
-
customElements.define('bluesky-post', BlueskyPost);
-677
lib/style.css
-677
lib/style.css
···
1
-
:host {
2
-
--font-size: 1rem;
3
-
display: block;
4
-
}
5
-
6
-
:host([theme='light']) {
7
-
--text-primary: #000000;
8
-
--text-secondary: #455668;
9
-
--text-link: #1083fe;
10
-
--background-primary: #ffffff;
11
-
--background-secondary: #455668;
12
-
--divider-hover: #c0ccd6;
13
-
--divider: #c2ccd6;
14
-
}
15
-
:host([theme='dark']) {
16
-
--text-primary: #ffffff;
17
-
--text-secondary: #9aaabc;
18
-
--text-link: #1083fe;
19
-
--background-primary: #161e27;
20
-
--background-secondary: #212d3b;
21
-
--divider-hover: #42566c;
22
-
--divider: #324458;
23
-
}
24
-
25
-
*,
26
-
*::before,
27
-
*::after {
28
-
box-sizing: border-box;
29
-
}
30
-
31
-
p {
32
-
margin: 0;
33
-
}
34
-
35
-
.root {
36
-
margin: 0 auto;
37
-
border: 1px solid var(--divider);
38
-
border-radius: 8px;
39
-
background: var(--background-primary);
40
-
min-width: 250px;
41
-
max-width: 550px;
42
-
overflow: hidden;
43
-
color: var(--text-primary);
44
-
font-size: calc(var(--font-size) * 0.875);
45
-
line-height: calc(var(--font-size) * 1.25);
46
-
}
47
-
48
-
.link,
49
-
.mention {
50
-
color: var(--text-link);
51
-
text-decoration: none;
52
-
53
-
&:hover {
54
-
text-decoration: underline;
55
-
}
56
-
}
57
-
58
-
.dot {
59
-
margin: 0 4px;
60
-
user-select: none;
61
-
}
62
-
63
-
.icon {
64
-
flex-shrink: 0;
65
-
width: 1em;
66
-
height: 1em;
67
-
}
68
-
69
-
.interactive {
70
-
cursor: pointer;
71
-
color: inherit;
72
-
text-decoration: none;
73
-
}
74
-
75
-
.not-available {
76
-
padding: 12px;
77
-
color: var(--text-secondary);
78
-
}
79
-
80
-
/** main-post */
81
-
.main-post {
82
-
padding: 16px;
83
-
}
84
-
85
-
.main-post__header {
86
-
display: flex;
87
-
align-items: center;
88
-
margin: 0 0 12px 0;
89
-
color: var(--text-secondary);
90
-
}
91
-
92
-
.main-post__avatar-wrapper {
93
-
display: block;
94
-
flex-shrink: 0;
95
-
margin: 0 12px 0 0;
96
-
border-radius: 9999px;
97
-
background: var(--background-secondary);
98
-
width: 40px;
99
-
height: 40px;
100
-
overflow: hidden;
101
-
102
-
&:hover {
103
-
filter: brightness(0.85);
104
-
}
105
-
}
106
-
.main-post__avatar {
107
-
width: 100%;
108
-
height: 100%;
109
-
object-fit: cover;
110
-
}
111
-
112
-
.main-post__name-wrapper {
113
-
display: block;
114
-
max-width: 100%;
115
-
overflow: hidden;
116
-
color: inherit;
117
-
text-decoration: none;
118
-
text-overflow: ellipsis;
119
-
white-space: nowrap;
120
-
}
121
-
.main-post__display-name-wrapper {
122
-
overflow: hidden;
123
-
text-overflow: ellipsis;
124
-
125
-
.main-post__name-wrapper:hover & {
126
-
text-decoration: underline;
127
-
}
128
-
}
129
-
.main-post__display-name {
130
-
color: var(--text-primary);
131
-
font-weight: 700;
132
-
}
133
-
.main-post__handle {
134
-
display: block;
135
-
overflow: hidden;
136
-
text-overflow: ellipsis;
137
-
white-space: nowrap;
138
-
}
139
-
140
-
.main-post__context {
141
-
display: flex;
142
-
align-items: center;
143
-
gap: 6px;
144
-
margin: 0 0 4px 0;
145
-
color: var(--text-secondary);
146
-
147
-
span {
148
-
overflow: hidden;
149
-
text-overflow: ellipsis;
150
-
white-space: nowrap;
151
-
}
152
-
153
-
a {
154
-
color: inherit;
155
-
text-decoration: none;
156
-
157
-
&:hover {
158
-
text-decoration: underline;
159
-
}
160
-
}
161
-
}
162
-
.main-post__body {
163
-
overflow: hidden;
164
-
font-size: calc(var(--font-size) * 1);
165
-
line-height: calc(var(--font-size) * 1.5);
166
-
white-space: pre-wrap;
167
-
overflow-wrap: break-word;
168
-
169
-
&:empty {
170
-
display: none;
171
-
}
172
-
}
173
-
174
-
.main-post__tags {
175
-
display: flex;
176
-
flex-wrap: wrap;
177
-
gap: 6px;
178
-
margin: 12px 0 0 0;
179
-
}
180
-
181
-
.main-post__tag {
182
-
display: flex;
183
-
align-items: center;
184
-
gap: 4px;
185
-
border-radius: 9999px;
186
-
background: var(--text-secondary);
187
-
padding: 0 8px;
188
-
min-width: 0px;
189
-
line-height: calc(var(--font-size) * 1.5);
190
-
}
191
-
192
-
.main-post__tag-text {
193
-
overflow: hidden;
194
-
text-overflow: ellipsis;
195
-
white-space: nowrap;
196
-
}
197
-
198
-
.main-post__date {
199
-
display: flex;
200
-
flex-wrap: wrap;
201
-
align-items: center;
202
-
gap: 8px;
203
-
margin: 12px 0 0;
204
-
border-bottom: 1px solid var(--divider);
205
-
padding: 0 0 12px 0;
206
-
color: var(--text-secondary);
207
-
}
208
-
.main-post__stats {
209
-
display: flex;
210
-
flex-wrap: wrap;
211
-
align-items: center;
212
-
gap: 8px 16px;
213
-
margin: 0 0 -16px 0;
214
-
padding: 12px 0;
215
-
color: var(--text-secondary);
216
-
217
-
.gap {
218
-
flex: 1 1 auto;
219
-
}
220
-
221
-
.permalink {
222
-
display: flex;
223
-
align-items: center;
224
-
gap: 4px;
225
-
color: var(--text-link);
226
-
font-weight: 700;
227
-
text-decoration: none;
228
-
229
-
&:hover {
230
-
text-decoration: underline;
231
-
}
232
-
}
233
-
}
234
-
.main-post__stat {
235
-
display: flex;
236
-
align-items: center;
237
-
gap: 8px;
238
-
}
239
-
240
-
/** reply-post */
241
-
.reply-post {
242
-
display: flex;
243
-
position: relative;
244
-
gap: 12px;
245
-
padding: 12px 16px 0 16px;
246
-
}
247
-
248
-
.reply-post__aside {
249
-
flex-shrink: 0;
250
-
}
251
-
252
-
.reply-post__avatar-wrapper {
253
-
display: block;
254
-
border-radius: 9999px;
255
-
background: var(--background-secondary);
256
-
width: 40px;
257
-
height: 40px;
258
-
overflow: hidden;
259
-
260
-
&:hover {
261
-
filter: brightness(0.85);
262
-
}
263
-
}
264
-
.reply-post__avatar {
265
-
width: 100%;
266
-
height: 100%;
267
-
object-fit: cover;
268
-
}
269
-
.reply-post__line {
270
-
position: absolute;
271
-
top: 56px;
272
-
bottom: -12px;
273
-
left: 35px;
274
-
border-left: 2px solid var(--divider);
275
-
}
276
-
277
-
.reply-post__main {
278
-
display: flex;
279
-
flex-grow: 1;
280
-
flex-direction: column;
281
-
min-width: 0px;
282
-
}
283
-
284
-
.reply-post__header {
285
-
display: flex;
286
-
align-items: center;
287
-
margin: 0 0 2px 0;
288
-
color: var(--text-secondary);
289
-
}
290
-
.reply-post__name-wrapper {
291
-
display: flex;
292
-
gap: 4px;
293
-
max-width: 100%;
294
-
overflow: hidden;
295
-
color: inherit;
296
-
text-decoration: none;
297
-
text-overflow: ellipsis;
298
-
white-space: nowrap;
299
-
}
300
-
.reply-post__display-name-wrapper {
301
-
overflow: hidden;
302
-
text-overflow: ellipsis;
303
-
304
-
.reply-post__name-wrapper:hover & {
305
-
text-decoration: underline;
306
-
}
307
-
}
308
-
.reply-post__display-name {
309
-
color: var(--text-primary);
310
-
font-weight: 700;
311
-
}
312
-
.reply-post__handle {
313
-
display: block;
314
-
overflow: hidden;
315
-
text-overflow: ellipsis;
316
-
white-space: nowrap;
317
-
}
318
-
.reply-post__date {
319
-
color: inherit;
320
-
text-decoration: none;
321
-
white-space: nowrap;
322
-
323
-
&:hover {
324
-
text-decoration: underline;
325
-
}
326
-
}
327
-
328
-
.reply-post__context {
329
-
display: flex;
330
-
align-items: center;
331
-
gap: 4px;
332
-
margin: 0 0 4px 0;
333
-
color: var(--text-secondary);
334
-
335
-
span {
336
-
overflow: hidden;
337
-
text-overflow: ellipsis;
338
-
white-space: nowrap;
339
-
}
340
-
341
-
a {
342
-
color: inherit;
343
-
text-decoration: none;
344
-
345
-
&:hover {
346
-
text-decoration: underline;
347
-
}
348
-
}
349
-
}
350
-
.reply-post__body {
351
-
white-space: pre-wrap;
352
-
overflow-wrap: break-word;
353
-
}
354
-
355
-
/** embeds */
356
-
.embeds {
357
-
display: flex;
358
-
flex-direction: column;
359
-
gap: 12px;
360
-
margin: 12px 0 0 0;
361
-
}
362
-
363
-
.embeds:empty {
364
-
display: none;
365
-
}
366
-
367
-
/** embed-feed */
368
-
.embed-feed {
369
-
display: flex;
370
-
gap: 12px;
371
-
border: 1px solid var(--divider);
372
-
border-radius: 6px;
373
-
padding: 12px;
374
-
375
-
&:hover {
376
-
border-color: var(--divider-hover);
377
-
}
378
-
}
379
-
380
-
.embed-feed__avatar-wrapper {
381
-
margin: 2px 0 0 0;
382
-
border-radius: 6px;
383
-
background: var(--background-secondary);
384
-
width: 36px;
385
-
height: 36px;
386
-
overflow: hidden;
387
-
}
388
-
389
-
.embed-feed__avatar {
390
-
width: 100%;
391
-
height: 100%;
392
-
object-fit: cover;
393
-
}
394
-
395
-
.embed-feed__main {
396
-
}
397
-
398
-
.embed-feed__name {
399
-
font-weight: 700;
400
-
}
401
-
402
-
.embed-feed__type {
403
-
color: var(--text-secondary);
404
-
}
405
-
406
-
/** embed-image */
407
-
.embed-image {
408
-
}
409
-
410
-
.embed-image--bordered {
411
-
border: 1px solid var(--divider);
412
-
border-radius: 6px;
413
-
overflow: hidden;
414
-
}
415
-
416
-
.embed-image--standalone {
417
-
align-self: baseline;
418
-
max-width: 100%;
419
-
}
420
-
421
-
.embed-image__grid {
422
-
display: flex;
423
-
gap: 2px;
424
-
aspect-ratio: 16 / 9;
425
-
}
426
-
427
-
.embed-image__col {
428
-
display: flex;
429
-
flex-grow: 1;
430
-
flex-basis: 0px;
431
-
flex-direction: column;
432
-
gap: 2px;
433
-
}
434
-
435
-
.embed-image__image-wrapper {
436
-
position: relative;
437
-
}
438
-
439
-
.embed-image__image-wrapper--multiple {
440
-
flex-grow: 1;
441
-
flex-basis: 0px;
442
-
min-height: 0px;
443
-
overflow: hidden;
444
-
}
445
-
446
-
.embed-image__image-wrapper--standalone {
447
-
aspect-ratio: 16 / 9;
448
-
overflow: hidden;
449
-
}
450
-
451
-
.embed-image__image-wrapper--standalone-ratio {
452
-
min-width: 64px;
453
-
max-width: 100%;
454
-
min-height: 64px;
455
-
max-height: 320px;
456
-
overflow: hidden;
457
-
}
458
-
459
-
.embed-image__image {
460
-
width: 100%;
461
-
height: 100%;
462
-
object-fit: cover;
463
-
font-size: 0px;
464
-
}
465
-
466
-
.embed-image__placeholder {
467
-
width: 100vw;
468
-
height: 100vh;
469
-
}
470
-
471
-
/** embed-link */
472
-
.embed-link {
473
-
display: flex;
474
-
border: 1px solid var(--divider);
475
-
border-radius: 6px;
476
-
overflow: hidden;
477
-
478
-
&:hover {
479
-
border-color: var(--divider-hover);
480
-
}
481
-
}
482
-
483
-
.embed-link__thumb {
484
-
flex-shrink: 0;
485
-
box-sizing: content-box;
486
-
border-right-width: 1px;
487
-
aspect-ratio: 1 / 1;
488
-
width: 86px;
489
-
object-fit: cover;
490
-
}
491
-
492
-
.embed-link__main {
493
-
display: flex;
494
-
flex-direction: column;
495
-
justify-content: center;
496
-
gap: 2px;
497
-
padding: 12px;
498
-
min-width: 0px;
499
-
}
500
-
501
-
.embed-link__domain {
502
-
overflow: hidden;
503
-
color: var(--text-secondary);
504
-
text-overflow: ellipsis;
505
-
}
506
-
507
-
.embed-link__title {
508
-
display: -webkit-box;
509
-
overflow: hidden;
510
-
overflow-wrap: break-word;
511
-
-webkit-box-orient: vertical;
512
-
-webkit-line-clamp: 2;
513
-
}
514
-
515
-
.embed-link__title:empty {
516
-
display: none;
517
-
}
518
-
519
-
.embed-link__desktop-only {
520
-
display: none;
521
-
522
-
@media (min-width: 640px) {
523
-
display: block;
524
-
}
525
-
}
526
-
527
-
.embed-link__summary {
528
-
display: -webkit-box;
529
-
overflow: hidden;
530
-
-webkit-box-orient: vertical;
531
-
-webkit-line-clamp: 2;
532
-
color: var(--text-secondary);
533
-
}
534
-
535
-
.embed-link__summary:empty {
536
-
display: none;
537
-
}
538
-
539
-
/** embed-list */
540
-
.embed-list {
541
-
display: flex;
542
-
gap: 12px;
543
-
border: 1px solid var(--divider);
544
-
border-radius: 6px;
545
-
padding: 12px;
546
-
547
-
&:hover {
548
-
border-color: var(--divider-hover);
549
-
}
550
-
}
551
-
552
-
.embed-list__avatar-wrapper {
553
-
margin: 2px 0 0 0;
554
-
border-radius: 6px;
555
-
background: var(--background-secondary);
556
-
width: 36px;
557
-
height: 36px;
558
-
overflow: hidden;
559
-
}
560
-
561
-
.embed-list__avatar {
562
-
width: 100%;
563
-
height: 100%;
564
-
object-fit: cover;
565
-
}
566
-
567
-
.embed-list__main {
568
-
}
569
-
570
-
.embed-list__name {
571
-
font-weight: 700;
572
-
}
573
-
574
-
.embed-list__type {
575
-
color: var(--text-secondary);
576
-
}
577
-
578
-
/** embed-not-found */
579
-
.embed-not-found {
580
-
border: 1px solid var(--divider);
581
-
border-radius: 6px;
582
-
padding: 12px;
583
-
color: var(--text-secondary);
584
-
}
585
-
586
-
/** embed-post */
587
-
.embed-post {
588
-
border: 1px solid var(--divider);
589
-
border-radius: 6px;
590
-
overflow: hidden;
591
-
592
-
&:hover {
593
-
border-color: var(--divider-hover);
594
-
}
595
-
}
596
-
597
-
.embed-post__header {
598
-
display: flex;
599
-
margin: 12px 12px 0 12px;
600
-
color: var(--text-secondary);
601
-
}
602
-
.embed-post__header + .embed-image {
603
-
margin: 12px 0 0 0;
604
-
}
605
-
606
-
.embed-post__avatar-wrapper {
607
-
flex-shrink: 0;
608
-
margin: 0 8px 0 0;
609
-
border-radius: 9999px;
610
-
background: var(--background-secondary);
611
-
width: 20px;
612
-
height: 20px;
613
-
overflow: hidden;
614
-
}
615
-
.embed-post__avatar {
616
-
width: 100%;
617
-
height: 100%;
618
-
}
619
-
620
-
.embed-post__name-wrapper {
621
-
display: flex;
622
-
gap: 4px;
623
-
max-width: 100%;
624
-
overflow: hidden;
625
-
text-overflow: ellipsis;
626
-
white-space: nowrap;
627
-
}
628
-
.embed-post__display-name-wrapper {
629
-
overflow: hidden;
630
-
text-overflow: ellipsis;
631
-
}
632
-
.embed-post__display-name {
633
-
color: var(--text-primary);
634
-
font-weight: 700;
635
-
}
636
-
.embed-post__handle {
637
-
display: block;
638
-
overflow: hidden;
639
-
text-overflow: ellipsis;
640
-
white-space: nowrap;
641
-
}
642
-
643
-
.embed-post__date {
644
-
white-space: nowrap;
645
-
}
646
-
647
-
.embed-post__body {
648
-
display: flex;
649
-
align-items: flex-start;
650
-
}
651
-
652
-
.embed-post__image-aside {
653
-
flex-grow: 1;
654
-
flex-basis: 0px;
655
-
margin: 8px 0 12px 12px;
656
-
}
657
-
658
-
.embed-post__text {
659
-
display: -webkit-box;
660
-
margin: 4px 12px 12px 12px;
661
-
overflow: hidden;
662
-
-webkit-box-orient: vertical;
663
-
-webkit-line-clamp: 6;
664
-
flex-grow: 4;
665
-
flex-basis: 0px;
666
-
min-width: 0px;
667
-
white-space: pre-wrap;
668
-
overflow-wrap: break-word;
669
-
}
670
-
671
-
.embed-post__text:empty {
672
-
display: none;
673
-
}
674
-
675
-
.embed-post__divider {
676
-
margin: 12px 0 0 0;
677
-
}
-12
lib/utils/date.ts
-12
lib/utils/date.ts
···
1
-
export const abs_long = new Intl.DateTimeFormat('en-US', { dateStyle: 'long', timeStyle: 'short' });
2
-
export const abs_short = new Intl.DateTimeFormat('en-US', { dateStyle: 'medium' });
3
-
4
-
export const format_date = (formatter: Intl.DateTimeFormat, date: string | number) => {
5
-
const inst = new Date(date);
6
-
7
-
if (isNaN(inst.getTime())) {
8
-
return 'N/A';
9
-
}
10
-
11
-
return formatter.format(inst);
12
-
};
-14
lib/utils/number.ts
-14
lib/utils/number.ts
···
1
-
const long = new Intl.NumberFormat('en-US');
2
-
const compact = new Intl.NumberFormat('en-US', { notation: 'compact' });
3
-
4
-
export const format_compact = (value: number) => {
5
-
if (value < 1_000) {
6
-
return '' + value;
7
-
}
8
-
9
-
if (value < 100_000) {
10
-
return long.format(value);
11
-
}
12
-
13
-
return compact.format(value);
14
-
};
-82
lib/utils/richtext/segmentize.ts
-82
lib/utils/richtext/segmentize.ts
···
1
-
import { create_utf_string, get_utf8_length, slice_utf8 } from './unicode.ts';
2
-
import type { Facet, LinkFeature, MentionFeature, TagFeature } from './types.ts';
3
-
4
-
export interface RichTextSegment {
5
-
text: string;
6
-
link?: LinkFeature;
7
-
mention?: MentionFeature;
8
-
tag?: TagFeature;
9
-
}
10
-
11
-
const create_segment = (text: string, facet?: Facet): RichTextSegment => {
12
-
let link: LinkFeature | undefined;
13
-
let mention: MentionFeature | undefined;
14
-
let tag: TagFeature | undefined;
15
-
16
-
if (facet) {
17
-
const features = facet.features;
18
-
19
-
for (let idx = 0, len = features.length; idx < len; idx++) {
20
-
const feature = features[idx];
21
-
const type = feature.$type;
22
-
23
-
if (type === 'app.bsky.richtext.facet#link') {
24
-
link = feature;
25
-
} else if (type === 'app.bsky.richtext.facet#mention') {
26
-
mention = feature;
27
-
} else if (type === 'app.bsky.richtext.facet#tag') {
28
-
tag = feature;
29
-
}
30
-
}
31
-
}
32
-
33
-
return { text, link, mention, tag };
34
-
};
35
-
36
-
export const segment_richtext = (text: string, facets: Facet[] | undefined) => {
37
-
if (!facets || facets.length < 1) {
38
-
return [create_segment(text)];
39
-
}
40
-
41
-
const ustr = create_utf_string(text);
42
-
43
-
const segments: RichTextSegment[] = [];
44
-
const length = get_utf8_length(ustr);
45
-
46
-
const facets_length = facets.length;
47
-
48
-
let text_cursor = 0;
49
-
let facet_cursor = 0;
50
-
51
-
do {
52
-
const facet = facets[facet_cursor];
53
-
const { byteStart, byteEnd } = facet.index;
54
-
55
-
if (text_cursor < byteStart) {
56
-
segments.push(create_segment(slice_utf8(ustr, text_cursor, byteStart)));
57
-
} else if (text_cursor > byteStart) {
58
-
facet_cursor++;
59
-
continue;
60
-
}
61
-
62
-
if (byteStart < byteEnd) {
63
-
const subtext = slice_utf8(ustr, byteStart, byteEnd);
64
-
65
-
if (!subtext.trim()) {
66
-
// dont empty string entities
67
-
segments.push(create_segment(subtext));
68
-
} else {
69
-
segments.push(create_segment(subtext, facet));
70
-
}
71
-
}
72
-
73
-
text_cursor = byteEnd;
74
-
facet_cursor++;
75
-
} while (facet_cursor < facets_length);
76
-
77
-
if (text_cursor < length) {
78
-
segments.push(create_segment(slice_utf8(ustr, text_cursor, length)));
79
-
}
80
-
81
-
return segments;
82
-
};
-6
lib/utils/richtext/types.ts
-6
lib/utils/richtext/types.ts
···
1
-
import type { AppBskyRichtextFacet } from '@externdefs/bluesky-client/lexicons';
2
-
3
-
export type Facet = AppBskyRichtextFacet.Main;
4
-
export type LinkFeature = AppBskyRichtextFacet.Link;
5
-
export type MentionFeature = AppBskyRichtextFacet.Mention;
6
-
export type TagFeature = AppBskyRichtextFacet.Tag;
-22
lib/utils/richtext/unicode.ts
-22
lib/utils/richtext/unicode.ts
···
1
-
const encoder = new TextEncoder();
2
-
const decoder = new TextDecoder();
3
-
4
-
export interface UtfString {
5
-
u16: string;
6
-
u8: Uint8Array;
7
-
}
8
-
9
-
export const create_utf_string = (utf16: string): UtfString => {
10
-
return {
11
-
u16: utf16,
12
-
u8: encoder.encode(utf16),
13
-
};
14
-
};
15
-
16
-
export const get_utf8_length = (utf: UtfString) => {
17
-
return utf.u8.byteLength;
18
-
};
19
-
20
-
export const slice_utf8 = (utf: UtfString, start?: number, end?: number) => {
21
-
return decoder.decode(utf.u8.slice(start, end));
22
-
};
-40
package.json
-40
package.json
···
1
-
{
2
-
"type": "module",
3
-
"name": "bluesky-post-embed",
4
-
"description": "Custom element for embedding Bluesky posts",
5
-
"version": "0.1.6",
6
-
"author": "externdefs",
7
-
"license": "MIT",
8
-
"repository": {
9
-
"type": "git",
10
-
"url": "git+https://codeberg.org/mary-ext/bluesky-post-embed.git"
11
-
},
12
-
"files": [
13
-
"dist/"
14
-
],
15
-
"scripts": {
16
-
"dev": "vite",
17
-
"build": "tsc && vite build",
18
-
"fmt": "prettier --cache --write .",
19
-
"prepublishOnly": "pnpm run build"
20
-
},
21
-
"exports": {
22
-
".": "./dist/element.js",
23
-
"./core": "./dist/core.js",
24
-
"./style.css": "./dist/style.css"
25
-
},
26
-
"dependencies": {
27
-
"@externdefs/bluesky-client": "^0.5.8"
28
-
},
29
-
"devDependencies": {
30
-
"@babel/core": "^7.24.4",
31
-
"@babel/plugin-syntax-typescript": "^7.24.1",
32
-
"@intrnl/jsx-to-string": "^0.1.6",
33
-
"@rollup/plugin-babel": "^6.0.4",
34
-
"prettier": "^3.2.5",
35
-
"prettier-plugin-css-order": "^2.1.2",
36
-
"typescript": "~5.4.5",
37
-
"vite": "^5.2.8",
38
-
"vite-plugin-dts": "^3.8.1"
39
-
}
40
-
}
-1487
pnpm-lock.yaml
-1487
pnpm-lock.yaml
···
1
-
lockfileVersion: '6.0'
2
-
3
-
settings:
4
-
autoInstallPeers: false
5
-
excludeLinksFromLockfile: false
6
-
7
-
dependencies:
8
-
'@externdefs/bluesky-client':
9
-
specifier: ^0.5.8
10
-
version: 0.5.8
11
-
12
-
devDependencies:
13
-
'@babel/core':
14
-
specifier: ^7.24.4
15
-
version: 7.24.4
16
-
'@babel/plugin-syntax-typescript':
17
-
specifier: ^7.24.1
18
-
version: 7.24.1(@babel/core@7.24.4)
19
-
'@intrnl/jsx-to-string':
20
-
specifier: ^0.1.6
21
-
version: 0.1.6(@babel/core@7.24.4)
22
-
'@rollup/plugin-babel':
23
-
specifier: ^6.0.4
24
-
version: 6.0.4(@babel/core@7.24.4)
25
-
prettier:
26
-
specifier: ^3.2.5
27
-
version: 3.2.5
28
-
prettier-plugin-css-order:
29
-
specifier: ^2.1.2
30
-
version: 2.1.2(prettier@3.2.5)
31
-
typescript:
32
-
specifier: ~5.4.5
33
-
version: 5.4.5
34
-
vite:
35
-
specifier: ^5.2.8
36
-
version: 5.2.8
37
-
vite-plugin-dts:
38
-
specifier: ^3.8.1
39
-
version: 3.8.1(typescript@5.4.5)(vite@5.2.8)
40
-
41
-
packages:
42
-
43
-
/@ampproject/remapping@2.3.0:
44
-
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
45
-
engines: {node: '>=6.0.0'}
46
-
dependencies:
47
-
'@jridgewell/gen-mapping': 0.3.5
48
-
'@jridgewell/trace-mapping': 0.3.25
49
-
dev: true
50
-
51
-
/@babel/code-frame@7.24.2:
52
-
resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==}
53
-
engines: {node: '>=6.9.0'}
54
-
dependencies:
55
-
'@babel/highlight': 7.24.2
56
-
picocolors: 1.0.0
57
-
dev: true
58
-
59
-
/@babel/compat-data@7.24.4:
60
-
resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==}
61
-
engines: {node: '>=6.9.0'}
62
-
dev: true
63
-
64
-
/@babel/core@7.24.4:
65
-
resolution: {integrity: sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==}
66
-
engines: {node: '>=6.9.0'}
67
-
dependencies:
68
-
'@ampproject/remapping': 2.3.0
69
-
'@babel/code-frame': 7.24.2
70
-
'@babel/generator': 7.24.4
71
-
'@babel/helper-compilation-targets': 7.23.6
72
-
'@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4)
73
-
'@babel/helpers': 7.24.4
74
-
'@babel/parser': 7.24.4
75
-
'@babel/template': 7.24.0
76
-
'@babel/traverse': 7.24.1
77
-
'@babel/types': 7.24.0
78
-
convert-source-map: 2.0.0
79
-
debug: 4.3.4
80
-
gensync: 1.0.0-beta.2
81
-
json5: 2.2.3
82
-
semver: 6.3.1
83
-
transitivePeerDependencies:
84
-
- supports-color
85
-
dev: true
86
-
87
-
/@babel/generator@7.24.4:
88
-
resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==}
89
-
engines: {node: '>=6.9.0'}
90
-
dependencies:
91
-
'@babel/types': 7.24.0
92
-
'@jridgewell/gen-mapping': 0.3.5
93
-
'@jridgewell/trace-mapping': 0.3.25
94
-
jsesc: 2.5.2
95
-
dev: true
96
-
97
-
/@babel/helper-compilation-targets@7.23.6:
98
-
resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==}
99
-
engines: {node: '>=6.9.0'}
100
-
dependencies:
101
-
'@babel/compat-data': 7.24.4
102
-
'@babel/helper-validator-option': 7.23.5
103
-
browserslist: 4.23.0
104
-
lru-cache: 5.1.1
105
-
semver: 6.3.1
106
-
dev: true
107
-
108
-
/@babel/helper-environment-visitor@7.22.20:
109
-
resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==}
110
-
engines: {node: '>=6.9.0'}
111
-
dev: true
112
-
113
-
/@babel/helper-function-name@7.23.0:
114
-
resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==}
115
-
engines: {node: '>=6.9.0'}
116
-
dependencies:
117
-
'@babel/template': 7.24.0
118
-
'@babel/types': 7.24.0
119
-
dev: true
120
-
121
-
/@babel/helper-hoist-variables@7.22.5:
122
-
resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
123
-
engines: {node: '>=6.9.0'}
124
-
dependencies:
125
-
'@babel/types': 7.24.0
126
-
dev: true
127
-
128
-
/@babel/helper-module-imports@7.24.3:
129
-
resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==}
130
-
engines: {node: '>=6.9.0'}
131
-
dependencies:
132
-
'@babel/types': 7.24.0
133
-
dev: true
134
-
135
-
/@babel/helper-module-transforms@7.23.3(@babel/core@7.24.4):
136
-
resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==}
137
-
engines: {node: '>=6.9.0'}
138
-
peerDependencies:
139
-
'@babel/core': ^7.0.0
140
-
dependencies:
141
-
'@babel/core': 7.24.4
142
-
'@babel/helper-environment-visitor': 7.22.20
143
-
'@babel/helper-module-imports': 7.24.3
144
-
'@babel/helper-simple-access': 7.22.5
145
-
'@babel/helper-split-export-declaration': 7.22.6
146
-
'@babel/helper-validator-identifier': 7.22.20
147
-
dev: true
148
-
149
-
/@babel/helper-plugin-utils@7.24.0:
150
-
resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==}
151
-
engines: {node: '>=6.9.0'}
152
-
dev: true
153
-
154
-
/@babel/helper-simple-access@7.22.5:
155
-
resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==}
156
-
engines: {node: '>=6.9.0'}
157
-
dependencies:
158
-
'@babel/types': 7.24.0
159
-
dev: true
160
-
161
-
/@babel/helper-split-export-declaration@7.22.6:
162
-
resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
163
-
engines: {node: '>=6.9.0'}
164
-
dependencies:
165
-
'@babel/types': 7.24.0
166
-
dev: true
167
-
168
-
/@babel/helper-string-parser@7.24.1:
169
-
resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==}
170
-
engines: {node: '>=6.9.0'}
171
-
dev: true
172
-
173
-
/@babel/helper-validator-identifier@7.22.20:
174
-
resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
175
-
engines: {node: '>=6.9.0'}
176
-
dev: true
177
-
178
-
/@babel/helper-validator-option@7.23.5:
179
-
resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==}
180
-
engines: {node: '>=6.9.0'}
181
-
dev: true
182
-
183
-
/@babel/helpers@7.24.4:
184
-
resolution: {integrity: sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==}
185
-
engines: {node: '>=6.9.0'}
186
-
dependencies:
187
-
'@babel/template': 7.24.0
188
-
'@babel/traverse': 7.24.1
189
-
'@babel/types': 7.24.0
190
-
transitivePeerDependencies:
191
-
- supports-color
192
-
dev: true
193
-
194
-
/@babel/highlight@7.24.2:
195
-
resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==}
196
-
engines: {node: '>=6.9.0'}
197
-
dependencies:
198
-
'@babel/helper-validator-identifier': 7.22.20
199
-
chalk: 2.4.2
200
-
js-tokens: 4.0.0
201
-
picocolors: 1.0.0
202
-
dev: true
203
-
204
-
/@babel/parser@7.24.4:
205
-
resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==}
206
-
engines: {node: '>=6.0.0'}
207
-
hasBin: true
208
-
dependencies:
209
-
'@babel/types': 7.24.0
210
-
dev: true
211
-
212
-
/@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.4):
213
-
resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==}
214
-
engines: {node: '>=6.9.0'}
215
-
peerDependencies:
216
-
'@babel/core': ^7.0.0-0
217
-
dependencies:
218
-
'@babel/core': 7.24.4
219
-
'@babel/helper-plugin-utils': 7.24.0
220
-
dev: true
221
-
222
-
/@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.4):
223
-
resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==}
224
-
engines: {node: '>=6.9.0'}
225
-
peerDependencies:
226
-
'@babel/core': ^7.0.0-0
227
-
dependencies:
228
-
'@babel/core': 7.24.4
229
-
'@babel/helper-plugin-utils': 7.24.0
230
-
dev: true
231
-
232
-
/@babel/template@7.24.0:
233
-
resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==}
234
-
engines: {node: '>=6.9.0'}
235
-
dependencies:
236
-
'@babel/code-frame': 7.24.2
237
-
'@babel/parser': 7.24.4
238
-
'@babel/types': 7.24.0
239
-
dev: true
240
-
241
-
/@babel/traverse@7.24.1:
242
-
resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==}
243
-
engines: {node: '>=6.9.0'}
244
-
dependencies:
245
-
'@babel/code-frame': 7.24.2
246
-
'@babel/generator': 7.24.4
247
-
'@babel/helper-environment-visitor': 7.22.20
248
-
'@babel/helper-function-name': 7.23.0
249
-
'@babel/helper-hoist-variables': 7.22.5
250
-
'@babel/helper-split-export-declaration': 7.22.6
251
-
'@babel/parser': 7.24.4
252
-
'@babel/types': 7.24.0
253
-
debug: 4.3.4
254
-
globals: 11.12.0
255
-
transitivePeerDependencies:
256
-
- supports-color
257
-
dev: true
258
-
259
-
/@babel/types@7.24.0:
260
-
resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==}
261
-
engines: {node: '>=6.9.0'}
262
-
dependencies:
263
-
'@babel/helper-string-parser': 7.24.1
264
-
'@babel/helper-validator-identifier': 7.22.20
265
-
to-fast-properties: 2.0.0
266
-
dev: true
267
-
268
-
/@esbuild/aix-ppc64@0.20.2:
269
-
resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==}
270
-
engines: {node: '>=12'}
271
-
cpu: [ppc64]
272
-
os: [aix]
273
-
requiresBuild: true
274
-
dev: true
275
-
optional: true
276
-
277
-
/@esbuild/android-arm64@0.20.2:
278
-
resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==}
279
-
engines: {node: '>=12'}
280
-
cpu: [arm64]
281
-
os: [android]
282
-
requiresBuild: true
283
-
dev: true
284
-
optional: true
285
-
286
-
/@esbuild/android-arm@0.20.2:
287
-
resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==}
288
-
engines: {node: '>=12'}
289
-
cpu: [arm]
290
-
os: [android]
291
-
requiresBuild: true
292
-
dev: true
293
-
optional: true
294
-
295
-
/@esbuild/android-x64@0.20.2:
296
-
resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==}
297
-
engines: {node: '>=12'}
298
-
cpu: [x64]
299
-
os: [android]
300
-
requiresBuild: true
301
-
dev: true
302
-
optional: true
303
-
304
-
/@esbuild/darwin-arm64@0.20.2:
305
-
resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==}
306
-
engines: {node: '>=12'}
307
-
cpu: [arm64]
308
-
os: [darwin]
309
-
requiresBuild: true
310
-
dev: true
311
-
optional: true
312
-
313
-
/@esbuild/darwin-x64@0.20.2:
314
-
resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==}
315
-
engines: {node: '>=12'}
316
-
cpu: [x64]
317
-
os: [darwin]
318
-
requiresBuild: true
319
-
dev: true
320
-
optional: true
321
-
322
-
/@esbuild/freebsd-arm64@0.20.2:
323
-
resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==}
324
-
engines: {node: '>=12'}
325
-
cpu: [arm64]
326
-
os: [freebsd]
327
-
requiresBuild: true
328
-
dev: true
329
-
optional: true
330
-
331
-
/@esbuild/freebsd-x64@0.20.2:
332
-
resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==}
333
-
engines: {node: '>=12'}
334
-
cpu: [x64]
335
-
os: [freebsd]
336
-
requiresBuild: true
337
-
dev: true
338
-
optional: true
339
-
340
-
/@esbuild/linux-arm64@0.20.2:
341
-
resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==}
342
-
engines: {node: '>=12'}
343
-
cpu: [arm64]
344
-
os: [linux]
345
-
requiresBuild: true
346
-
dev: true
347
-
optional: true
348
-
349
-
/@esbuild/linux-arm@0.20.2:
350
-
resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==}
351
-
engines: {node: '>=12'}
352
-
cpu: [arm]
353
-
os: [linux]
354
-
requiresBuild: true
355
-
dev: true
356
-
optional: true
357
-
358
-
/@esbuild/linux-ia32@0.20.2:
359
-
resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==}
360
-
engines: {node: '>=12'}
361
-
cpu: [ia32]
362
-
os: [linux]
363
-
requiresBuild: true
364
-
dev: true
365
-
optional: true
366
-
367
-
/@esbuild/linux-loong64@0.20.2:
368
-
resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==}
369
-
engines: {node: '>=12'}
370
-
cpu: [loong64]
371
-
os: [linux]
372
-
requiresBuild: true
373
-
dev: true
374
-
optional: true
375
-
376
-
/@esbuild/linux-mips64el@0.20.2:
377
-
resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==}
378
-
engines: {node: '>=12'}
379
-
cpu: [mips64el]
380
-
os: [linux]
381
-
requiresBuild: true
382
-
dev: true
383
-
optional: true
384
-
385
-
/@esbuild/linux-ppc64@0.20.2:
386
-
resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==}
387
-
engines: {node: '>=12'}
388
-
cpu: [ppc64]
389
-
os: [linux]
390
-
requiresBuild: true
391
-
dev: true
392
-
optional: true
393
-
394
-
/@esbuild/linux-riscv64@0.20.2:
395
-
resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==}
396
-
engines: {node: '>=12'}
397
-
cpu: [riscv64]
398
-
os: [linux]
399
-
requiresBuild: true
400
-
dev: true
401
-
optional: true
402
-
403
-
/@esbuild/linux-s390x@0.20.2:
404
-
resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==}
405
-
engines: {node: '>=12'}
406
-
cpu: [s390x]
407
-
os: [linux]
408
-
requiresBuild: true
409
-
dev: true
410
-
optional: true
411
-
412
-
/@esbuild/linux-x64@0.20.2:
413
-
resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==}
414
-
engines: {node: '>=12'}
415
-
cpu: [x64]
416
-
os: [linux]
417
-
requiresBuild: true
418
-
dev: true
419
-
optional: true
420
-
421
-
/@esbuild/netbsd-x64@0.20.2:
422
-
resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==}
423
-
engines: {node: '>=12'}
424
-
cpu: [x64]
425
-
os: [netbsd]
426
-
requiresBuild: true
427
-
dev: true
428
-
optional: true
429
-
430
-
/@esbuild/openbsd-x64@0.20.2:
431
-
resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==}
432
-
engines: {node: '>=12'}
433
-
cpu: [x64]
434
-
os: [openbsd]
435
-
requiresBuild: true
436
-
dev: true
437
-
optional: true
438
-
439
-
/@esbuild/sunos-x64@0.20.2:
440
-
resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==}
441
-
engines: {node: '>=12'}
442
-
cpu: [x64]
443
-
os: [sunos]
444
-
requiresBuild: true
445
-
dev: true
446
-
optional: true
447
-
448
-
/@esbuild/win32-arm64@0.20.2:
449
-
resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==}
450
-
engines: {node: '>=12'}
451
-
cpu: [arm64]
452
-
os: [win32]
453
-
requiresBuild: true
454
-
dev: true
455
-
optional: true
456
-
457
-
/@esbuild/win32-ia32@0.20.2:
458
-
resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==}
459
-
engines: {node: '>=12'}
460
-
cpu: [ia32]
461
-
os: [win32]
462
-
requiresBuild: true
463
-
dev: true
464
-
optional: true
465
-
466
-
/@esbuild/win32-x64@0.20.2:
467
-
resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==}
468
-
engines: {node: '>=12'}
469
-
cpu: [x64]
470
-
os: [win32]
471
-
requiresBuild: true
472
-
dev: true
473
-
optional: true
474
-
475
-
/@externdefs/bluesky-client@0.5.8:
476
-
resolution: {integrity: sha512-RM7huV2fZlPscfv8TTsM7wDQZ7yw4doJvch5TSIkj4NCHXg+iTADmzv7FCuWNvrMwsAbqiWe+Uz2AsPuTWiMDA==}
477
-
dev: false
478
-
479
-
/@intrnl/jsx-to-string@0.1.6(@babel/core@7.24.4):
480
-
resolution: {integrity: sha512-ib6FWU0GcJdzsBv8zvFj43IDNRakWoC8JlpRDYBsOgIl3aXCR2PKazE6CnRJxmSvSHF9FQ5tgaLGFGSBGTjy1Q==}
481
-
dependencies:
482
-
'@babel/helper-plugin-utils': 7.24.0
483
-
'@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.4)
484
-
'@babel/types': 7.24.0
485
-
csstype: 3.1.3
486
-
transitivePeerDependencies:
487
-
- '@babel/core'
488
-
dev: true
489
-
490
-
/@jridgewell/gen-mapping@0.3.5:
491
-
resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
492
-
engines: {node: '>=6.0.0'}
493
-
dependencies:
494
-
'@jridgewell/set-array': 1.2.1
495
-
'@jridgewell/sourcemap-codec': 1.4.15
496
-
'@jridgewell/trace-mapping': 0.3.25
497
-
dev: true
498
-
499
-
/@jridgewell/resolve-uri@3.1.2:
500
-
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
501
-
engines: {node: '>=6.0.0'}
502
-
dev: true
503
-
504
-
/@jridgewell/set-array@1.2.1:
505
-
resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
506
-
engines: {node: '>=6.0.0'}
507
-
dev: true
508
-
509
-
/@jridgewell/sourcemap-codec@1.4.15:
510
-
resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
511
-
dev: true
512
-
513
-
/@jridgewell/trace-mapping@0.3.25:
514
-
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
515
-
dependencies:
516
-
'@jridgewell/resolve-uri': 3.1.2
517
-
'@jridgewell/sourcemap-codec': 1.4.15
518
-
dev: true
519
-
520
-
/@microsoft/api-extractor-model@7.28.13:
521
-
resolution: {integrity: sha512-39v/JyldX4MS9uzHcdfmjjfS6cYGAoXV+io8B5a338pkHiSt+gy2eXQ0Q7cGFJ7quSa1VqqlMdlPrB6sLR/cAw==}
522
-
dependencies:
523
-
'@microsoft/tsdoc': 0.14.2
524
-
'@microsoft/tsdoc-config': 0.16.2
525
-
'@rushstack/node-core-library': 4.0.2
526
-
transitivePeerDependencies:
527
-
- '@types/node'
528
-
dev: true
529
-
530
-
/@microsoft/api-extractor@7.43.0:
531
-
resolution: {integrity: sha512-GFhTcJpB+MI6FhvXEI9b2K0snulNLWHqC/BbcJtyNYcKUiw7l3Lgis5ApsYncJ0leALX7/of4XfmXk+maT111w==}
532
-
hasBin: true
533
-
dependencies:
534
-
'@microsoft/api-extractor-model': 7.28.13
535
-
'@microsoft/tsdoc': 0.14.2
536
-
'@microsoft/tsdoc-config': 0.16.2
537
-
'@rushstack/node-core-library': 4.0.2
538
-
'@rushstack/rig-package': 0.5.2
539
-
'@rushstack/terminal': 0.10.0
540
-
'@rushstack/ts-command-line': 4.19.1
541
-
lodash: 4.17.21
542
-
minimatch: 3.0.8
543
-
resolve: 1.22.8
544
-
semver: 7.5.4
545
-
source-map: 0.6.1
546
-
typescript: 5.4.2
547
-
transitivePeerDependencies:
548
-
- '@types/node'
549
-
dev: true
550
-
551
-
/@microsoft/tsdoc-config@0.16.2:
552
-
resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==}
553
-
dependencies:
554
-
'@microsoft/tsdoc': 0.14.2
555
-
ajv: 6.12.6
556
-
jju: 1.4.0
557
-
resolve: 1.19.0
558
-
dev: true
559
-
560
-
/@microsoft/tsdoc@0.14.2:
561
-
resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==}
562
-
dev: true
563
-
564
-
/@rollup/plugin-babel@6.0.4(@babel/core@7.24.4):
565
-
resolution: {integrity: sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw==}
566
-
engines: {node: '>=14.0.0'}
567
-
peerDependencies:
568
-
'@babel/core': ^7.0.0
569
-
'@types/babel__core': ^7.1.9
570
-
rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
571
-
peerDependenciesMeta:
572
-
'@types/babel__core':
573
-
optional: true
574
-
rollup:
575
-
optional: true
576
-
dependencies:
577
-
'@babel/core': 7.24.4
578
-
'@babel/helper-module-imports': 7.24.3
579
-
'@rollup/pluginutils': 5.1.0
580
-
dev: true
581
-
582
-
/@rollup/pluginutils@5.1.0:
583
-
resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==}
584
-
engines: {node: '>=14.0.0'}
585
-
peerDependencies:
586
-
rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
587
-
peerDependenciesMeta:
588
-
rollup:
589
-
optional: true
590
-
dependencies:
591
-
'@types/estree': 1.0.5
592
-
estree-walker: 2.0.2
593
-
picomatch: 2.3.1
594
-
dev: true
595
-
596
-
/@rollup/rollup-android-arm-eabi@4.14.2:
597
-
resolution: {integrity: sha512-ahxSgCkAEk+P/AVO0vYr7DxOD3CwAQrT0Go9BJyGQ9Ef0QxVOfjDZMiF4Y2s3mLyPrjonchIMH/tbWHucJMykQ==}
598
-
cpu: [arm]
599
-
os: [android]
600
-
requiresBuild: true
601
-
dev: true
602
-
optional: true
603
-
604
-
/@rollup/rollup-android-arm64@4.14.2:
605
-
resolution: {integrity: sha512-lAarIdxZWbFSHFSDao9+I/F5jDaKyCqAPMq5HqnfpBw8dKDiCaaqM0lq5h1pQTLeIqueeay4PieGR5jGZMWprw==}
606
-
cpu: [arm64]
607
-
os: [android]
608
-
requiresBuild: true
609
-
dev: true
610
-
optional: true
611
-
612
-
/@rollup/rollup-darwin-arm64@4.14.2:
613
-
resolution: {integrity: sha512-SWsr8zEUk82KSqquIMgZEg2GE5mCSfr9sE/thDROkX6pb3QQWPp8Vw8zOq2GyxZ2t0XoSIUlvHDkrf5Gmf7x3Q==}
614
-
cpu: [arm64]
615
-
os: [darwin]
616
-
requiresBuild: true
617
-
dev: true
618
-
optional: true
619
-
620
-
/@rollup/rollup-darwin-x64@4.14.2:
621
-
resolution: {integrity: sha512-o/HAIrQq0jIxJAhgtIvV5FWviYK4WB0WwV91SLUnsliw1lSAoLsmgEEgRWzDguAFeUEUUoIWXiJrPqU7vGiVkA==}
622
-
cpu: [x64]
623
-
os: [darwin]
624
-
requiresBuild: true
625
-
dev: true
626
-
optional: true
627
-
628
-
/@rollup/rollup-linux-arm-gnueabihf@4.14.2:
629
-
resolution: {integrity: sha512-nwlJ65UY9eGq91cBi6VyDfArUJSKOYt5dJQBq8xyLhvS23qO+4Nr/RreibFHjP6t+5ap2ohZrUJcHv5zk5ju/g==}
630
-
cpu: [arm]
631
-
os: [linux]
632
-
requiresBuild: true
633
-
dev: true
634
-
optional: true
635
-
636
-
/@rollup/rollup-linux-arm64-gnu@4.14.2:
637
-
resolution: {integrity: sha512-Pg5TxxO2IVlMj79+c/9G0LREC9SY3HM+pfAwX7zj5/cAuwrbfj2Wv9JbMHIdPCfQpYsI4g9mE+2Bw/3aeSs2rQ==}
638
-
cpu: [arm64]
639
-
os: [linux]
640
-
requiresBuild: true
641
-
dev: true
642
-
optional: true
643
-
644
-
/@rollup/rollup-linux-arm64-musl@4.14.2:
645
-
resolution: {integrity: sha512-cAOTjGNm84gc6tS02D1EXtG7tDRsVSDTBVXOLbj31DkwfZwgTPYZ6aafSU7rD/4R2a34JOwlF9fQayuTSkoclA==}
646
-
cpu: [arm64]
647
-
os: [linux]
648
-
requiresBuild: true
649
-
dev: true
650
-
optional: true
651
-
652
-
/@rollup/rollup-linux-powerpc64le-gnu@4.14.2:
653
-
resolution: {integrity: sha512-4RyT6v1kXb7C0fn6zV33rvaX05P0zHoNzaXI/5oFHklfKm602j+N4mn2YvoezQViRLPnxP8M1NaY4s/5kXO5cw==}
654
-
cpu: [ppc64]
655
-
os: [linux]
656
-
requiresBuild: true
657
-
dev: true
658
-
optional: true
659
-
660
-
/@rollup/rollup-linux-riscv64-gnu@4.14.2:
661
-
resolution: {integrity: sha512-KNUH6jC/vRGAKSorySTyc/yRYlCwN/5pnMjXylfBniwtJx5O7X17KG/0efj8XM3TZU7raYRXJFFReOzNmL1n1w==}
662
-
cpu: [riscv64]
663
-
os: [linux]
664
-
requiresBuild: true
665
-
dev: true
666
-
optional: true
667
-
668
-
/@rollup/rollup-linux-s390x-gnu@4.14.2:
669
-
resolution: {integrity: sha512-xPV4y73IBEXToNPa3h5lbgXOi/v0NcvKxU0xejiFw6DtIYQqOTMhZ2DN18/HrrP0PmiL3rGtRG9gz1QE8vFKXQ==}
670
-
cpu: [s390x]
671
-
os: [linux]
672
-
requiresBuild: true
673
-
dev: true
674
-
optional: true
675
-
676
-
/@rollup/rollup-linux-x64-gnu@4.14.2:
677
-
resolution: {integrity: sha512-QBhtr07iFGmF9egrPOWyO5wciwgtzKkYPNLVCFZTmr4TWmY0oY2Dm/bmhHjKRwZoGiaKdNcKhFtUMBKvlchH+Q==}
678
-
cpu: [x64]
679
-
os: [linux]
680
-
requiresBuild: true
681
-
dev: true
682
-
optional: true
683
-
684
-
/@rollup/rollup-linux-x64-musl@4.14.2:
685
-
resolution: {integrity: sha512-8zfsQRQGH23O6qazZSFY5jP5gt4cFvRuKTpuBsC1ZnSWxV8ZKQpPqOZIUtdfMOugCcBvFGRa1pDC/tkf19EgBw==}
686
-
cpu: [x64]
687
-
os: [linux]
688
-
requiresBuild: true
689
-
dev: true
690
-
optional: true
691
-
692
-
/@rollup/rollup-win32-arm64-msvc@4.14.2:
693
-
resolution: {integrity: sha512-H4s8UjgkPnlChl6JF5empNvFHp77Jx+Wfy2EtmYPe9G22XV+PMuCinZVHurNe8ggtwoaohxARJZbaH/3xjB/FA==}
694
-
cpu: [arm64]
695
-
os: [win32]
696
-
requiresBuild: true
697
-
dev: true
698
-
optional: true
699
-
700
-
/@rollup/rollup-win32-ia32-msvc@4.14.2:
701
-
resolution: {integrity: sha512-djqpAjm/i8erWYF0K6UY4kRO3X5+T4TypIqw60Q8MTqSBaQNpNXDhxdjpZ3ikgb+wn99svA7jxcXpiyg9MUsdw==}
702
-
cpu: [ia32]
703
-
os: [win32]
704
-
requiresBuild: true
705
-
dev: true
706
-
optional: true
707
-
708
-
/@rollup/rollup-win32-x64-msvc@4.14.2:
709
-
resolution: {integrity: sha512-teAqzLT0yTYZa8ZP7zhFKEx4cotS8Tkk5XiqNMJhD4CpaWB1BHARE4Qy+RzwnXvSAYv+Q3jAqCVBS+PS+Yee8Q==}
710
-
cpu: [x64]
711
-
os: [win32]
712
-
requiresBuild: true
713
-
dev: true
714
-
optional: true
715
-
716
-
/@rushstack/node-core-library@4.0.2:
717
-
resolution: {integrity: sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg==}
718
-
peerDependencies:
719
-
'@types/node': '*'
720
-
peerDependenciesMeta:
721
-
'@types/node':
722
-
optional: true
723
-
dependencies:
724
-
fs-extra: 7.0.1
725
-
import-lazy: 4.0.0
726
-
jju: 1.4.0
727
-
resolve: 1.22.8
728
-
semver: 7.5.4
729
-
z-schema: 5.0.5
730
-
dev: true
731
-
732
-
/@rushstack/rig-package@0.5.2:
733
-
resolution: {integrity: sha512-mUDecIJeH3yYGZs2a48k+pbhM6JYwWlgjs2Ca5f2n1G2/kgdgP9D/07oglEGf6mRyXEnazhEENeYTSNDRCwdqA==}
734
-
dependencies:
735
-
resolve: 1.22.8
736
-
strip-json-comments: 3.1.1
737
-
dev: true
738
-
739
-
/@rushstack/terminal@0.10.0:
740
-
resolution: {integrity: sha512-UbELbXnUdc7EKwfH2sb8ChqNgapUOdqcCIdQP4NGxBpTZV2sQyeekuK3zmfQSa/MN+/7b4kBogl2wq0vpkpYGw==}
741
-
peerDependencies:
742
-
'@types/node': '*'
743
-
peerDependenciesMeta:
744
-
'@types/node':
745
-
optional: true
746
-
dependencies:
747
-
'@rushstack/node-core-library': 4.0.2
748
-
supports-color: 8.1.1
749
-
dev: true
750
-
751
-
/@rushstack/ts-command-line@4.19.1:
752
-
resolution: {integrity: sha512-J7H768dgcpG60d7skZ5uSSwyCZs/S2HrWP1Ds8d1qYAyaaeJmpmmLr9BVw97RjFzmQPOYnoXcKA4GkqDCkduQg==}
753
-
dependencies:
754
-
'@rushstack/terminal': 0.10.0
755
-
'@types/argparse': 1.0.38
756
-
argparse: 1.0.10
757
-
string-argv: 0.3.2
758
-
transitivePeerDependencies:
759
-
- '@types/node'
760
-
dev: true
761
-
762
-
/@types/argparse@1.0.38:
763
-
resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==}
764
-
dev: true
765
-
766
-
/@types/estree@1.0.5:
767
-
resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
768
-
dev: true
769
-
770
-
/@volar/language-core@1.11.1:
771
-
resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==}
772
-
dependencies:
773
-
'@volar/source-map': 1.11.1
774
-
dev: true
775
-
776
-
/@volar/source-map@1.11.1:
777
-
resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==}
778
-
dependencies:
779
-
muggle-string: 0.3.1
780
-
dev: true
781
-
782
-
/@volar/typescript@1.11.1:
783
-
resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==}
784
-
dependencies:
785
-
'@volar/language-core': 1.11.1
786
-
path-browserify: 1.0.1
787
-
dev: true
788
-
789
-
/@vue/compiler-core@3.4.21:
790
-
resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==}
791
-
dependencies:
792
-
'@babel/parser': 7.24.4
793
-
'@vue/shared': 3.4.21
794
-
entities: 4.5.0
795
-
estree-walker: 2.0.2
796
-
source-map-js: 1.2.0
797
-
dev: true
798
-
799
-
/@vue/compiler-dom@3.4.21:
800
-
resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==}
801
-
dependencies:
802
-
'@vue/compiler-core': 3.4.21
803
-
'@vue/shared': 3.4.21
804
-
dev: true
805
-
806
-
/@vue/language-core@1.8.27(typescript@5.4.5):
807
-
resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==}
808
-
peerDependencies:
809
-
typescript: '*'
810
-
peerDependenciesMeta:
811
-
typescript:
812
-
optional: true
813
-
dependencies:
814
-
'@volar/language-core': 1.11.1
815
-
'@volar/source-map': 1.11.1
816
-
'@vue/compiler-dom': 3.4.21
817
-
'@vue/shared': 3.4.21
818
-
computeds: 0.0.1
819
-
minimatch: 9.0.4
820
-
muggle-string: 0.3.1
821
-
path-browserify: 1.0.1
822
-
typescript: 5.4.5
823
-
vue-template-compiler: 2.7.16
824
-
dev: true
825
-
826
-
/@vue/shared@3.4.21:
827
-
resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==}
828
-
dev: true
829
-
830
-
/ajv@6.12.6:
831
-
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
832
-
dependencies:
833
-
fast-deep-equal: 3.1.3
834
-
fast-json-stable-stringify: 2.1.0
835
-
json-schema-traverse: 0.4.1
836
-
uri-js: 4.4.1
837
-
dev: true
838
-
839
-
/ansi-styles@3.2.1:
840
-
resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
841
-
engines: {node: '>=4'}
842
-
dependencies:
843
-
color-convert: 1.9.3
844
-
dev: true
845
-
846
-
/argparse@1.0.10:
847
-
resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
848
-
dependencies:
849
-
sprintf-js: 1.0.3
850
-
dev: true
851
-
852
-
/balanced-match@1.0.2:
853
-
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
854
-
dev: true
855
-
856
-
/brace-expansion@1.1.11:
857
-
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
858
-
dependencies:
859
-
balanced-match: 1.0.2
860
-
concat-map: 0.0.1
861
-
dev: true
862
-
863
-
/brace-expansion@2.0.1:
864
-
resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
865
-
dependencies:
866
-
balanced-match: 1.0.2
867
-
dev: true
868
-
869
-
/browserslist@4.23.0:
870
-
resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==}
871
-
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
872
-
hasBin: true
873
-
dependencies:
874
-
caniuse-lite: 1.0.30001609
875
-
electron-to-chromium: 1.4.735
876
-
node-releases: 2.0.14
877
-
update-browserslist-db: 1.0.13(browserslist@4.23.0)
878
-
dev: true
879
-
880
-
/caniuse-lite@1.0.30001609:
881
-
resolution: {integrity: sha512-JFPQs34lHKx1B5t1EpQpWH4c+29zIyn/haGsbpfq3suuV9v56enjFt23zqijxGTMwy1p/4H2tjnQMY+p1WoAyA==}
882
-
dev: true
883
-
884
-
/chalk@2.4.2:
885
-
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
886
-
engines: {node: '>=4'}
887
-
dependencies:
888
-
ansi-styles: 3.2.1
889
-
escape-string-regexp: 1.0.5
890
-
supports-color: 5.5.0
891
-
dev: true
892
-
893
-
/color-convert@1.9.3:
894
-
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
895
-
dependencies:
896
-
color-name: 1.1.3
897
-
dev: true
898
-
899
-
/color-name@1.1.3:
900
-
resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
901
-
dev: true
902
-
903
-
/commander@9.5.0:
904
-
resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==}
905
-
engines: {node: ^12.20.0 || >=14}
906
-
requiresBuild: true
907
-
dev: true
908
-
optional: true
909
-
910
-
/computeds@0.0.1:
911
-
resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==}
912
-
dev: true
913
-
914
-
/concat-map@0.0.1:
915
-
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
916
-
dev: true
917
-
918
-
/convert-source-map@2.0.0:
919
-
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
920
-
dev: true
921
-
922
-
/css-declaration-sorter@7.2.0:
923
-
resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==}
924
-
engines: {node: ^14 || ^16 || >=18}
925
-
peerDependencies:
926
-
postcss: ^8.0.9
927
-
dev: true
928
-
929
-
/csstype@3.1.3:
930
-
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
931
-
dev: true
932
-
933
-
/de-indent@1.0.2:
934
-
resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
935
-
dev: true
936
-
937
-
/debug@4.3.4:
938
-
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
939
-
engines: {node: '>=6.0'}
940
-
peerDependencies:
941
-
supports-color: '*'
942
-
peerDependenciesMeta:
943
-
supports-color:
944
-
optional: true
945
-
dependencies:
946
-
ms: 2.1.2
947
-
dev: true
948
-
949
-
/electron-to-chromium@1.4.735:
950
-
resolution: {integrity: sha512-pkYpvwg8VyOTQAeBqZ7jsmpCjko1Qc6We1ZtZCjRyYbT5v4AIUKDy5cQTRotQlSSZmMr8jqpEt6JtOj5k7lR7A==}
951
-
dev: true
952
-
953
-
/entities@4.5.0:
954
-
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
955
-
engines: {node: '>=0.12'}
956
-
dev: true
957
-
958
-
/esbuild@0.20.2:
959
-
resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==}
960
-
engines: {node: '>=12'}
961
-
hasBin: true
962
-
requiresBuild: true
963
-
optionalDependencies:
964
-
'@esbuild/aix-ppc64': 0.20.2
965
-
'@esbuild/android-arm': 0.20.2
966
-
'@esbuild/android-arm64': 0.20.2
967
-
'@esbuild/android-x64': 0.20.2
968
-
'@esbuild/darwin-arm64': 0.20.2
969
-
'@esbuild/darwin-x64': 0.20.2
970
-
'@esbuild/freebsd-arm64': 0.20.2
971
-
'@esbuild/freebsd-x64': 0.20.2
972
-
'@esbuild/linux-arm': 0.20.2
973
-
'@esbuild/linux-arm64': 0.20.2
974
-
'@esbuild/linux-ia32': 0.20.2
975
-
'@esbuild/linux-loong64': 0.20.2
976
-
'@esbuild/linux-mips64el': 0.20.2
977
-
'@esbuild/linux-ppc64': 0.20.2
978
-
'@esbuild/linux-riscv64': 0.20.2
979
-
'@esbuild/linux-s390x': 0.20.2
980
-
'@esbuild/linux-x64': 0.20.2
981
-
'@esbuild/netbsd-x64': 0.20.2
982
-
'@esbuild/openbsd-x64': 0.20.2
983
-
'@esbuild/sunos-x64': 0.20.2
984
-
'@esbuild/win32-arm64': 0.20.2
985
-
'@esbuild/win32-ia32': 0.20.2
986
-
'@esbuild/win32-x64': 0.20.2
987
-
dev: true
988
-
989
-
/escalade@3.1.2:
990
-
resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
991
-
engines: {node: '>=6'}
992
-
dev: true
993
-
994
-
/escape-string-regexp@1.0.5:
995
-
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
996
-
engines: {node: '>=0.8.0'}
997
-
dev: true
998
-
999
-
/estree-walker@2.0.2:
1000
-
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
1001
-
dev: true
1002
-
1003
-
/fast-deep-equal@3.1.3:
1004
-
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
1005
-
dev: true
1006
-
1007
-
/fast-json-stable-stringify@2.1.0:
1008
-
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
1009
-
dev: true
1010
-
1011
-
/fs-extra@7.0.1:
1012
-
resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==}
1013
-
engines: {node: '>=6 <7 || >=8'}
1014
-
dependencies:
1015
-
graceful-fs: 4.2.11
1016
-
jsonfile: 4.0.0
1017
-
universalify: 0.1.2
1018
-
dev: true
1019
-
1020
-
/fsevents@2.3.3:
1021
-
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
1022
-
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1023
-
os: [darwin]
1024
-
requiresBuild: true
1025
-
dev: true
1026
-
optional: true
1027
-
1028
-
/function-bind@1.1.2:
1029
-
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
1030
-
dev: true
1031
-
1032
-
/gensync@1.0.0-beta.2:
1033
-
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
1034
-
engines: {node: '>=6.9.0'}
1035
-
dev: true
1036
-
1037
-
/globals@11.12.0:
1038
-
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
1039
-
engines: {node: '>=4'}
1040
-
dev: true
1041
-
1042
-
/graceful-fs@4.2.11:
1043
-
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
1044
-
dev: true
1045
-
1046
-
/has-flag@3.0.0:
1047
-
resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
1048
-
engines: {node: '>=4'}
1049
-
dev: true
1050
-
1051
-
/has-flag@4.0.0:
1052
-
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1053
-
engines: {node: '>=8'}
1054
-
dev: true
1055
-
1056
-
/hasown@2.0.2:
1057
-
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
1058
-
engines: {node: '>= 0.4'}
1059
-
dependencies:
1060
-
function-bind: 1.1.2
1061
-
dev: true
1062
-
1063
-
/he@1.2.0:
1064
-
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
1065
-
hasBin: true
1066
-
dev: true
1067
-
1068
-
/import-lazy@4.0.0:
1069
-
resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==}
1070
-
engines: {node: '>=8'}
1071
-
dev: true
1072
-
1073
-
/is-core-module@2.13.1:
1074
-
resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
1075
-
dependencies:
1076
-
hasown: 2.0.2
1077
-
dev: true
1078
-
1079
-
/jju@1.4.0:
1080
-
resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==}
1081
-
dev: true
1082
-
1083
-
/js-tokens@4.0.0:
1084
-
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
1085
-
dev: true
1086
-
1087
-
/jsesc@2.5.2:
1088
-
resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
1089
-
engines: {node: '>=4'}
1090
-
hasBin: true
1091
-
dev: true
1092
-
1093
-
/json-schema-traverse@0.4.1:
1094
-
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1095
-
dev: true
1096
-
1097
-
/json5@2.2.3:
1098
-
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
1099
-
engines: {node: '>=6'}
1100
-
hasBin: true
1101
-
dev: true
1102
-
1103
-
/jsonfile@4.0.0:
1104
-
resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
1105
-
optionalDependencies:
1106
-
graceful-fs: 4.2.11
1107
-
dev: true
1108
-
1109
-
/kolorist@1.8.0:
1110
-
resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==}
1111
-
dev: true
1112
-
1113
-
/lodash.get@4.4.2:
1114
-
resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==}
1115
-
dev: true
1116
-
1117
-
/lodash.isequal@4.5.0:
1118
-
resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
1119
-
dev: true
1120
-
1121
-
/lodash@4.17.21:
1122
-
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
1123
-
dev: true
1124
-
1125
-
/lru-cache@5.1.1:
1126
-
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
1127
-
dependencies:
1128
-
yallist: 3.1.1
1129
-
dev: true
1130
-
1131
-
/lru-cache@6.0.0:
1132
-
resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
1133
-
engines: {node: '>=10'}
1134
-
dependencies:
1135
-
yallist: 4.0.0
1136
-
dev: true
1137
-
1138
-
/magic-string@0.30.9:
1139
-
resolution: {integrity: sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==}
1140
-
engines: {node: '>=12'}
1141
-
dependencies:
1142
-
'@jridgewell/sourcemap-codec': 1.4.15
1143
-
dev: true
1144
-
1145
-
/minimatch@3.0.8:
1146
-
resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==}
1147
-
dependencies:
1148
-
brace-expansion: 1.1.11
1149
-
dev: true
1150
-
1151
-
/minimatch@9.0.4:
1152
-
resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==}
1153
-
engines: {node: '>=16 || 14 >=14.17'}
1154
-
dependencies:
1155
-
brace-expansion: 2.0.1
1156
-
dev: true
1157
-
1158
-
/ms@2.1.2:
1159
-
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1160
-
dev: true
1161
-
1162
-
/muggle-string@0.3.1:
1163
-
resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==}
1164
-
dev: true
1165
-
1166
-
/nanoid@3.3.7:
1167
-
resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
1168
-
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1169
-
hasBin: true
1170
-
dev: true
1171
-
1172
-
/node-releases@2.0.14:
1173
-
resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
1174
-
dev: true
1175
-
1176
-
/path-browserify@1.0.1:
1177
-
resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
1178
-
dev: true
1179
-
1180
-
/path-parse@1.0.7:
1181
-
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1182
-
dev: true
1183
-
1184
-
/picocolors@1.0.0:
1185
-
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
1186
-
dev: true
1187
-
1188
-
/picomatch@2.3.1:
1189
-
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1190
-
engines: {node: '>=8.6'}
1191
-
dev: true
1192
-
1193
-
/postcss-less@6.0.0:
1194
-
resolution: {integrity: sha512-FPX16mQLyEjLzEuuJtxA8X3ejDLNGGEG503d2YGZR5Ask1SpDN8KmZUMpzCvyalWRywAn1n1VOA5dcqfCLo5rg==}
1195
-
engines: {node: '>=12'}
1196
-
peerDependencies:
1197
-
postcss: ^8.3.5
1198
-
dev: true
1199
-
1200
-
/postcss-scss@4.0.9:
1201
-
resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==}
1202
-
engines: {node: '>=12.0'}
1203
-
peerDependencies:
1204
-
postcss: ^8.4.29
1205
-
dev: true
1206
-
1207
-
/postcss@8.4.38:
1208
-
resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
1209
-
engines: {node: ^10 || ^12 || >=14}
1210
-
dependencies:
1211
-
nanoid: 3.3.7
1212
-
picocolors: 1.0.0
1213
-
source-map-js: 1.2.0
1214
-
dev: true
1215
-
1216
-
/prettier-plugin-css-order@2.1.2(prettier@3.2.5):
1217
-
resolution: {integrity: sha512-vomxPjHI6pOMYcBuouSJHxxQClJXaUpU9rsV9IAO2wrSTZILRRlrxAAR8t9UF6wtczLkLfNRFUwM+ZbGXOONUA==}
1218
-
engines: {node: '>=16'}
1219
-
peerDependencies:
1220
-
prettier: 3.x
1221
-
dependencies:
1222
-
css-declaration-sorter: 7.2.0
1223
-
postcss-less: 6.0.0
1224
-
postcss-scss: 4.0.9
1225
-
prettier: 3.2.5
1226
-
transitivePeerDependencies:
1227
-
- postcss
1228
-
dev: true
1229
-
1230
-
/prettier@3.2.5:
1231
-
resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==}
1232
-
engines: {node: '>=14'}
1233
-
hasBin: true
1234
-
dev: true
1235
-
1236
-
/punycode@2.3.1:
1237
-
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
1238
-
engines: {node: '>=6'}
1239
-
dev: true
1240
-
1241
-
/resolve@1.19.0:
1242
-
resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==}
1243
-
dependencies:
1244
-
is-core-module: 2.13.1
1245
-
path-parse: 1.0.7
1246
-
dev: true
1247
-
1248
-
/resolve@1.22.8:
1249
-
resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
1250
-
hasBin: true
1251
-
dependencies:
1252
-
is-core-module: 2.13.1
1253
-
path-parse: 1.0.7
1254
-
supports-preserve-symlinks-flag: 1.0.0
1255
-
dev: true
1256
-
1257
-
/rollup@4.14.2:
1258
-
resolution: {integrity: sha512-WkeoTWvuBoFjFAhsEOHKRoZ3r9GfTyhh7Vff1zwebEFLEFjT1lG3784xEgKiTa7E+e70vsC81roVL2MP4tgEEQ==}
1259
-
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
1260
-
hasBin: true
1261
-
dependencies:
1262
-
'@types/estree': 1.0.5
1263
-
optionalDependencies:
1264
-
'@rollup/rollup-android-arm-eabi': 4.14.2
1265
-
'@rollup/rollup-android-arm64': 4.14.2
1266
-
'@rollup/rollup-darwin-arm64': 4.14.2
1267
-
'@rollup/rollup-darwin-x64': 4.14.2
1268
-
'@rollup/rollup-linux-arm-gnueabihf': 4.14.2
1269
-
'@rollup/rollup-linux-arm64-gnu': 4.14.2
1270
-
'@rollup/rollup-linux-arm64-musl': 4.14.2
1271
-
'@rollup/rollup-linux-powerpc64le-gnu': 4.14.2
1272
-
'@rollup/rollup-linux-riscv64-gnu': 4.14.2
1273
-
'@rollup/rollup-linux-s390x-gnu': 4.14.2
1274
-
'@rollup/rollup-linux-x64-gnu': 4.14.2
1275
-
'@rollup/rollup-linux-x64-musl': 4.14.2
1276
-
'@rollup/rollup-win32-arm64-msvc': 4.14.2
1277
-
'@rollup/rollup-win32-ia32-msvc': 4.14.2
1278
-
'@rollup/rollup-win32-x64-msvc': 4.14.2
1279
-
fsevents: 2.3.3
1280
-
dev: true
1281
-
1282
-
/semver@6.3.1:
1283
-
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
1284
-
hasBin: true
1285
-
dev: true
1286
-
1287
-
/semver@7.5.4:
1288
-
resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
1289
-
engines: {node: '>=10'}
1290
-
hasBin: true
1291
-
dependencies:
1292
-
lru-cache: 6.0.0
1293
-
dev: true
1294
-
1295
-
/semver@7.6.0:
1296
-
resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==}
1297
-
engines: {node: '>=10'}
1298
-
hasBin: true
1299
-
dependencies:
1300
-
lru-cache: 6.0.0
1301
-
dev: true
1302
-
1303
-
/source-map-js@1.2.0:
1304
-
resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
1305
-
engines: {node: '>=0.10.0'}
1306
-
dev: true
1307
-
1308
-
/source-map@0.6.1:
1309
-
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
1310
-
engines: {node: '>=0.10.0'}
1311
-
dev: true
1312
-
1313
-
/sprintf-js@1.0.3:
1314
-
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
1315
-
dev: true
1316
-
1317
-
/string-argv@0.3.2:
1318
-
resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
1319
-
engines: {node: '>=0.6.19'}
1320
-
dev: true
1321
-
1322
-
/strip-json-comments@3.1.1:
1323
-
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
1324
-
engines: {node: '>=8'}
1325
-
dev: true
1326
-
1327
-
/supports-color@5.5.0:
1328
-
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
1329
-
engines: {node: '>=4'}
1330
-
dependencies:
1331
-
has-flag: 3.0.0
1332
-
dev: true
1333
-
1334
-
/supports-color@8.1.1:
1335
-
resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
1336
-
engines: {node: '>=10'}
1337
-
dependencies:
1338
-
has-flag: 4.0.0
1339
-
dev: true
1340
-
1341
-
/supports-preserve-symlinks-flag@1.0.0:
1342
-
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1343
-
engines: {node: '>= 0.4'}
1344
-
dev: true
1345
-
1346
-
/to-fast-properties@2.0.0:
1347
-
resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
1348
-
engines: {node: '>=4'}
1349
-
dev: true
1350
-
1351
-
/typescript@5.4.2:
1352
-
resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==}
1353
-
engines: {node: '>=14.17'}
1354
-
hasBin: true
1355
-
dev: true
1356
-
1357
-
/typescript@5.4.5:
1358
-
resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==}
1359
-
engines: {node: '>=14.17'}
1360
-
hasBin: true
1361
-
dev: true
1362
-
1363
-
/universalify@0.1.2:
1364
-
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
1365
-
engines: {node: '>= 4.0.0'}
1366
-
dev: true
1367
-
1368
-
/update-browserslist-db@1.0.13(browserslist@4.23.0):
1369
-
resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
1370
-
hasBin: true
1371
-
peerDependencies:
1372
-
browserslist: '>= 4.21.0'
1373
-
dependencies:
1374
-
browserslist: 4.23.0
1375
-
escalade: 3.1.2
1376
-
picocolors: 1.0.0
1377
-
dev: true
1378
-
1379
-
/uri-js@4.4.1:
1380
-
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
1381
-
dependencies:
1382
-
punycode: 2.3.1
1383
-
dev: true
1384
-
1385
-
/validator@13.11.0:
1386
-
resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==}
1387
-
engines: {node: '>= 0.10'}
1388
-
dev: true
1389
-
1390
-
/vite-plugin-dts@3.8.1(typescript@5.4.5)(vite@5.2.8):
1391
-
resolution: {integrity: sha512-zEYyQxH7lKto1VTKZHF3ZZeOPkkJgnMrePY4VxDHfDSvDjmYMMfWjZxYmNwW8QxbaItWJQhhXY+geAbyNphI7g==}
1392
-
engines: {node: ^14.18.0 || >=16.0.0}
1393
-
peerDependencies:
1394
-
typescript: '*'
1395
-
vite: '*'
1396
-
peerDependenciesMeta:
1397
-
vite:
1398
-
optional: true
1399
-
dependencies:
1400
-
'@microsoft/api-extractor': 7.43.0
1401
-
'@rollup/pluginutils': 5.1.0
1402
-
'@vue/language-core': 1.8.27(typescript@5.4.5)
1403
-
debug: 4.3.4
1404
-
kolorist: 1.8.0
1405
-
magic-string: 0.30.9
1406
-
typescript: 5.4.5
1407
-
vite: 5.2.8
1408
-
vue-tsc: 1.8.27(typescript@5.4.5)
1409
-
transitivePeerDependencies:
1410
-
- '@types/node'
1411
-
- rollup
1412
-
- supports-color
1413
-
dev: true
1414
-
1415
-
/vite@5.2.8:
1416
-
resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==}
1417
-
engines: {node: ^18.0.0 || >=20.0.0}
1418
-
hasBin: true
1419
-
peerDependencies:
1420
-
'@types/node': ^18.0.0 || >=20.0.0
1421
-
less: '*'
1422
-
lightningcss: ^1.21.0
1423
-
sass: '*'
1424
-
stylus: '*'
1425
-
sugarss: '*'
1426
-
terser: ^5.4.0
1427
-
peerDependenciesMeta:
1428
-
'@types/node':
1429
-
optional: true
1430
-
less:
1431
-
optional: true
1432
-
lightningcss:
1433
-
optional: true
1434
-
sass:
1435
-
optional: true
1436
-
stylus:
1437
-
optional: true
1438
-
sugarss:
1439
-
optional: true
1440
-
terser:
1441
-
optional: true
1442
-
dependencies:
1443
-
esbuild: 0.20.2
1444
-
postcss: 8.4.38
1445
-
rollup: 4.14.2
1446
-
optionalDependencies:
1447
-
fsevents: 2.3.3
1448
-
dev: true
1449
-
1450
-
/vue-template-compiler@2.7.16:
1451
-
resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==}
1452
-
dependencies:
1453
-
de-indent: 1.0.2
1454
-
he: 1.2.0
1455
-
dev: true
1456
-
1457
-
/vue-tsc@1.8.27(typescript@5.4.5):
1458
-
resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==}
1459
-
hasBin: true
1460
-
peerDependencies:
1461
-
typescript: '*'
1462
-
dependencies:
1463
-
'@volar/typescript': 1.11.1
1464
-
'@vue/language-core': 1.8.27(typescript@5.4.5)
1465
-
semver: 7.6.0
1466
-
typescript: 5.4.5
1467
-
dev: true
1468
-
1469
-
/yallist@3.1.1:
1470
-
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
1471
-
dev: true
1472
-
1473
-
/yallist@4.0.0:
1474
-
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
1475
-
dev: true
1476
-
1477
-
/z-schema@5.0.5:
1478
-
resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==}
1479
-
engines: {node: '>=8.0.0'}
1480
-
hasBin: true
1481
-
dependencies:
1482
-
lodash.get: 4.4.2
1483
-
lodash.isequal: 4.5.0
1484
-
validator: 13.11.0
1485
-
optionalDependencies:
1486
-
commander: 9.5.0
1487
-
dev: true
-17
src/index.ts
-17
src/index.ts
···
1
-
import '../lib/index.ts';
2
-
import type { BlueskyPost } from '../lib/index.ts';
3
-
4
-
import './style.css';
5
-
6
-
const dark = matchMedia('(prefers-color-scheme: dark)');
7
-
8
-
const update_theme = () => {
9
-
const is_dark = dark.matches;
10
-
11
-
for (const node of document.querySelectorAll<BlueskyPost>('bluesky-post')) {
12
-
node.setAttribute('theme', !is_dark ? 'light' : 'dark');
13
-
}
14
-
};
15
-
16
-
update_theme();
17
-
dark.addEventListener('change', update_theme);
-75
src/style.css
-75
src/style.css
···
1
-
:root {
2
-
--background-primary: #fafafa;
3
-
--background-secondary: #e5e5e5;
4
-
--text-primary: #000000;
5
-
--text-link: #1d4ed8;
6
-
--divider: #c8c8c8;
7
-
}
8
-
9
-
@media (prefers-color-scheme: dark) {
10
-
:root {
11
-
--background-primary: #0a0a0a;
12
-
--background-secondary: #171717;
13
-
--text-primary: #ffffff;
14
-
--text-link: #60a5fa;
15
-
--divider: #404040;
16
-
}
17
-
}
18
-
19
-
html {
20
-
background: var(--background-primary);
21
-
color: var(--text-primary);
22
-
color-scheme: light dark;
23
-
font-size: 14px;
24
-
line-height: 1.25rem;
25
-
}
26
-
27
-
body {
28
-
margin: 24px auto;
29
-
padding: 0 16px;
30
-
max-width: 680px;
31
-
}
32
-
33
-
h1,
34
-
h2,
35
-
h3,
36
-
h4,
37
-
h5,
38
-
h6,
39
-
p {
40
-
margin-block-start: 1.1rem;
41
-
margin-block-end: 1.1rem;
42
-
}
43
-
44
-
h1 {
45
-
font-size: 1.25rem;
46
-
}
47
-
h2 {
48
-
font-size: 1.125rem;
49
-
}
50
-
51
-
a {
52
-
color: var(--text-link);
53
-
}
54
-
55
-
pre {
56
-
border-radius: 4px;
57
-
background: var(--background-secondary);
58
-
padding: 8px;
59
-
overflow-x: auto;
60
-
font-size: 12px;
61
-
}
62
-
63
-
bluesky-post {
64
-
--font-size: 16px;
65
-
margin: 16px auto;
66
-
}
67
-
68
-
.bluesky-post-fallback {
69
-
margin: 16px 0;
70
-
border-left: 3px solid var(--divider);
71
-
padding: 4px 8px;
72
-
}
73
-
.bluesky-post-fallback p {
74
-
margin: 0 0 8px 0;
75
-
}
-25
tsconfig.json
-25
tsconfig.json
···
1
-
{
2
-
"compilerOptions": {
3
-
"target": "ESNext",
4
-
"lib": ["DOM", "DOM.Iterable", "ESNext"],
5
-
"types": [],
6
-
"skipLibCheck": true,
7
-
8
-
"module": "ESNext",
9
-
"moduleResolution": "Bundler",
10
-
"allowImportingTsExtensions": true,
11
-
"resolveJsonModule": true,
12
-
"noEmit": true,
13
-
"jsx": "preserve",
14
-
"jsxImportSource": "@intrnl/jsx-to-string",
15
-
16
-
"incremental": true,
17
-
"strict": true,
18
-
"noUnusedLocals": true,
19
-
"noUnusedParameters": true,
20
-
"noFallthroughCasesInSwitch": true,
21
-
"verbatimModuleSyntax": true,
22
-
},
23
-
"include": ["src", "lib"],
24
-
"references": [{ "path": "./tsconfig.node.json" }],
25
-
}
-10
tsconfig.node.json
-10
tsconfig.node.json
-46
vite.config.ts
-46
vite.config.ts
···
1
-
import { defineConfig } from 'vite';
2
-
3
-
import babel from '@rollup/plugin-babel';
4
-
import dts from 'vite-plugin-dts';
5
-
6
-
export default defineConfig({
7
-
base: '/',
8
-
optimizeDeps: {
9
-
include: ['@intrnl/jsx-to-string/runtime'],
10
-
},
11
-
build: {
12
-
sourcemap: true,
13
-
target: 'esnext',
14
-
minify: false,
15
-
cssMinify: true,
16
-
lib: {
17
-
entry: {
18
-
core: 'lib/core.tsx',
19
-
element: 'lib/index.ts',
20
-
},
21
-
formats: ['es'],
22
-
},
23
-
rollupOptions: {
24
-
external: [
25
-
'@externdefs/bluesky-client',
26
-
'@externdefs/bluesky-client/lexicons',
27
-
'@externdefs/bluesky-client/xrpc',
28
-
],
29
-
},
30
-
},
31
-
esbuild: {
32
-
target: 'es2022',
33
-
},
34
-
plugins: [
35
-
{
36
-
enforce: 'pre',
37
-
...babel({
38
-
babelrc: false,
39
-
babelHelpers: 'bundled',
40
-
extensions: ['.tsx'],
41
-
plugins: [['@babel/plugin-syntax-typescript', { isTSX: true }], ['@intrnl/jsx-to-string/babel']],
42
-
}),
43
-
},
44
-
dts({ rollupTypes: true }),
45
-
],
46
-
});