mblox 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +171 -0
- package/dist/mBloxCall.js +7 -0
- package/dist/mBloxM3E.css +2 -0
- package/dist/mBloxM3E.js +176 -0
- package/mBloxCall.js +100 -0
- package/package.json +36 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 mohanjeetsingh
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# mBlox
|
|
2
|
+
|
|
3
|
+
mBlox is a lightweight, dependency-free JavaScript library that enables dynamic, Elementor/Gutentor-like content blocks. It can fetch and display content from various sources like **Blogger**, **WordPress**, and any **RSS feed** (including YouTube) in a variety of customizable layouts.
|
|
4
|
+
|
|
5
|
+
It can be deployed on **any website** to display content from any supported feed type.
|
|
6
|
+
|
|
7
|
+
Note: The initial version of this tool was created in the pre-GenAI era. Starting October 2025, modern AI tools are being used to refactor and harden the library.
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
* **Dynamic Content**: Fetch recent posts, posts by label, or recent comments. Automatically extracts hashtags from content to use as labels.
|
|
12
|
+
* **Highly Customizable**: A wide range of `data-*` attributes to control layout, style, and content.
|
|
13
|
+
* **Variety of Layouts**: Includes showcases, carousels, grids, lists, and more.
|
|
14
|
+
* **Lazy Loading**: Content blocks are lazy-loaded on scroll for better performance.
|
|
15
|
+
* **Responsive Design**: Built with modern Tailwind CSS to be mobile-first and fully responsive.
|
|
16
|
+
* **Style Isolation**: CSS is isolated using `@layer mblox` to prevent conflicts with host websites.
|
|
17
|
+
* **Easy Integration**: Add a `section` or `div` with the right class and data attributes, and the script does the rest.
|
|
18
|
+
|
|
19
|
+
## Directory Structure
|
|
20
|
+
|
|
21
|
+
```text
|
|
22
|
+
mBlox/
|
|
23
|
+
├── mBloxCall.js # Lightweight entry point & initializer
|
|
24
|
+
├── dist/ # Production-ready assets
|
|
25
|
+
│ ├── mBloxM3E.js # Unified JS bundle (Engine + Blocks)
|
|
26
|
+
│ └── mBloxM3E.css # Tailwind CSS bundle
|
|
27
|
+
├── assets/ # Static resources
|
|
28
|
+
│ ├── tailwind.css # Tailwind configuration and base styles
|
|
29
|
+
│ ├── noImg.js # Placeholder image script
|
|
30
|
+
│ └── vendor/ # Third-party vendor dependencies
|
|
31
|
+
├── scripts/ # Build pipeline (Node.js)
|
|
32
|
+
└── demo/ # Sample implementations
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## How to Use
|
|
36
|
+
|
|
37
|
+
1. Include the necessary CSS and JS files in your website's `<head>` section.
|
|
38
|
+
|
|
39
|
+
```html
|
|
40
|
+
<!-- 1. Include the mBlox Initializer (Configure paths inside this file) -->
|
|
41
|
+
<!-- For best performance, it is recommended to inline the contents of mBloxCall.js directly into your HTML -->
|
|
42
|
+
<script src='mBloxCall.js' defer></script>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**Note on Configuration:**
|
|
46
|
+
Open `mBloxCall.js` to configure any custom paths for `window.mBloxCssSrc` if necessary.
|
|
47
|
+
|
|
48
|
+
**Note on Scripts:**
|
|
49
|
+
* `mBloxCall.js`: The lightweight entry point. It detects `mBlock` elements and dynamically injects the unified `mBloxM3E.js` library and CSS. No manual inclusion of the main bundle is needed.
|
|
50
|
+
|
|
51
|
+
2. Add an element to your HTML where you want the block to appear.
|
|
52
|
+
3. Give it the class `mBlock` (standard) or `mBlockL` (lazy-loaded).
|
|
53
|
+
4. Add `data-*` attributes to configure the block.
|
|
54
|
+
|
|
55
|
+
### Examples
|
|
56
|
+
|
|
57
|
+
#### 1. Data Attributes Configuration (Full Settings)
|
|
58
|
+
|
|
59
|
+
You can configure mBlox directly using `data-*` attributes on the block element. Here is an example showing all available settings:
|
|
60
|
+
|
|
61
|
+
```html
|
|
62
|
+
<section
|
|
63
|
+
class='mBlockL'
|
|
64
|
+
data-contenttype="recent"
|
|
65
|
+
data-feed="https://your-blog.blogspot.com/"
|
|
66
|
+
data-type="v-ihsda"
|
|
67
|
+
data-title="Featured Articles"
|
|
68
|
+
data-description="Check out our latest news and updates."
|
|
69
|
+
data-label="Technology"
|
|
70
|
+
data-posts="6"
|
|
71
|
+
data-cols="3"
|
|
72
|
+
data-rows="2"
|
|
73
|
+
data-theme="auto"
|
|
74
|
+
data-palette="surface"
|
|
75
|
+
data-ar="16x9"
|
|
76
|
+
data-isCarousel="true"
|
|
77
|
+
data-iHeight="m"
|
|
78
|
+
data-iBlur="false"
|
|
79
|
+
data-iFix="false"
|
|
80
|
+
data-iBorder="true"
|
|
81
|
+
data-corner="rounded"
|
|
82
|
+
data-gutter="3"
|
|
83
|
+
data-textVAlign="bottom"
|
|
84
|
+
data-textHAlign="left"
|
|
85
|
+
data-ctaAlign="right"
|
|
86
|
+
data-CTAText="Read More"
|
|
87
|
+
data-moreText="View All"
|
|
88
|
+
data-snippetSize="150"
|
|
89
|
+
data-overlay-items="vcasb"
|
|
90
|
+
data-s="1"
|
|
91
|
+
>
|
|
92
|
+
</section>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
#### 2. JSON Configuration (Recommended for Complex Setups)
|
|
96
|
+
|
|
97
|
+
Alternatively, you can configure the block using an embedded JSON script. This approach is cleaner when you have many settings or dynamic configurations. Simply place a `<script type="application/json">` tag inside the block element.
|
|
98
|
+
|
|
99
|
+
```html
|
|
100
|
+
<section class="mBlockL">
|
|
101
|
+
<script type="application/json">
|
|
102
|
+
{
|
|
103
|
+
"contentType": "recent",
|
|
104
|
+
"feed": "https://your-blog.blogspot.com/",
|
|
105
|
+
"type": "v-ihsda",
|
|
106
|
+
"title": "Featured Articles",
|
|
107
|
+
"description": "Check out our latest news and updates.",
|
|
108
|
+
"label": "Technology",
|
|
109
|
+
"posts": 6,
|
|
110
|
+
"cols": 3,
|
|
111
|
+
"rows": 2,
|
|
112
|
+
"theme": "auto",
|
|
113
|
+
"palette": "surface",
|
|
114
|
+
"ar": "16x9",
|
|
115
|
+
"isCarousel": true,
|
|
116
|
+
"iHeight": "m",
|
|
117
|
+
"iBlur": false,
|
|
118
|
+
"iFix": false,
|
|
119
|
+
"iBorder": true,
|
|
120
|
+
"corner": "rounded",
|
|
121
|
+
"gutter": 3,
|
|
122
|
+
"textVAlign": "bottom",
|
|
123
|
+
"textHAlign": "left",
|
|
124
|
+
"ctaAlign": "right",
|
|
125
|
+
"CTAText": "Read More",
|
|
126
|
+
"moreText": "View All",
|
|
127
|
+
"snippetSize": 150,
|
|
128
|
+
"overlayItems": "vcasb",
|
|
129
|
+
"s": 1
|
|
130
|
+
}
|
|
131
|
+
</script>
|
|
132
|
+
</section>
|
|
133
|
+
```
|
|
134
|
+
*Note: JSON keys use camelCase (e.g., `overlayItems` instead of `overlay-items`) and values maintain their native data types (booleans, numbers).*
|
|
135
|
+
|
|
136
|
+
## Development & Build Pipeline
|
|
137
|
+
|
|
138
|
+
mBlox uses a specialized build pipeline to ensure the CSS bundle only contains the Tailwind utilities actually used by the script.
|
|
139
|
+
|
|
140
|
+
### Requirements
|
|
141
|
+
* Node.js (LTS)
|
|
142
|
+
* NPM
|
|
143
|
+
|
|
144
|
+
### Build Process
|
|
145
|
+
1. Install dependencies:
|
|
146
|
+
```bash
|
|
147
|
+
npm install
|
|
148
|
+
```
|
|
149
|
+
2. Run the build command:
|
|
150
|
+
```bash
|
|
151
|
+
npm run build
|
|
152
|
+
```
|
|
153
|
+
This will compile Tailwind CSS based on your template files and generate the unified JS bundle in `/dist`.
|
|
154
|
+
|
|
155
|
+
## Configuration
|
|
156
|
+
|
|
157
|
+
Customize mBlox using `data-*` attributes or embedded JSON. The core attributes include:
|
|
158
|
+
|
|
159
|
+
| Attribute | JSON Key | Description | Default |
|
|
160
|
+
|---|---|---|---|
|
|
161
|
+
| `data-feed` | `feed` | Source URL of the blog or feed. | `/` |
|
|
162
|
+
| `data-contenttype` | `contentType` | `recent`, `label`, or `comments`. | `recent` |
|
|
163
|
+
| `data-type` | `type` | Visual style and component layout (e.g., `v-ih`). | `v-ih` |
|
|
164
|
+
| `data-posts` | `posts` | Number of posts to fetch/display. | `3` |
|
|
165
|
+
| `data-cols` | `cols` | Number of columns in the grid. | Varies |
|
|
166
|
+
| `data-theme` | `theme` | `light`, `dark`, or `auto`. | `auto` |
|
|
167
|
+
| `data-palette` | `palette` | Color palette (e.g., `surface`, `colorful`). | `surface` |
|
|
168
|
+
| `data-ar` | `ar` | Aspect ratio (e.g., `16x9`, `4x3`, `1x1`). | `1x1` |
|
|
169
|
+
| `data-isCarousel` | `isCarousel` | Enables carousel navigation. | `false` |
|
|
170
|
+
|
|
171
|
+
*See [spec.md](spec.md) for the full technical breakdown.*
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/*! mBlox Unified JS | Generated: 2026-06-05T13:58:27.149Z */
|
|
2
|
+
var c=!0;function d(o,n){if(n){let e=window.mBloxConfig||{},t="../dist/mBloxM3E.css";if(e.cssSrc!==void 0?t=e.cssSrc:window.mBloxCssSrc!==void 0&&(t=window.mBloxCssSrc),t&&!document.querySelector(`link[href*="${t}"]`)){let s=document.createElement("link");s.rel="stylesheet",s.href=t,document.head.appendChild(s)}let i="../dist/mBloxM3E.js";if(e.jsSrc!==void 0&&(i=e.jsSrc),i){let s=document.querySelector(`script[src*="${i}"]`);if(s)window.mBlocks?window.mBlocks(o).then(()=>{c=!1}):s.addEventListener("load",()=>{window.mBlocks&&window.mBlocks(o).then(()=>{c=!1})});else{let l=document.createElement("script");l.src=i,l.type="module",l.addEventListener("load",()=>{window.mBlocks&&window.mBlocks(o).then(()=>{c=!1})}),document.head.appendChild(l)}}else window.mBlocks&&window.mBlocks(o).then(()=>{c=!1})}else window.mBlocks&&window.mBlocks(o)}window.addEventListener("load",o=>{document.getElementsByClassName("mBlock").length&&d(".mBlock",c);let n=window.mBloxConfig||{},e=n.lazyLoadThreshold!==void 0?n.lazyLoadThreshold:0,i={rootMargin:n.lazyLoadRootMargin!==void 0?n.lazyLoadRootMargin:"500px",threshold:e},s=document.getElementsByClassName("mBlockL"),l=new IntersectionObserver(a,i);Array.prototype.forEach.call(s,function(r){l.observe(r)})},!1);var a=(o,n)=>{o.forEach(e=>{e.isIntersecting&&(e.target.classList.contains("mBlockL")&&d(e.target,c),n.unobserve(e.target))})};window.loadScripts=d;
|
|
3
|
+
/*!
|
|
4
|
+
* mBlocks for Blogger - Initializer
|
|
5
|
+
* CIA.RealHappinessCenter.com
|
|
6
|
+
* @version 2.0.0
|
|
7
|
+
*/
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-scroll-snap-strictness:proximity;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:var(--font-primary);--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wider:.05em;--radius-sm:.25rem;--radius-md:.375rem;--radius-3xl:1.5rem;--drop-shadow-md:0 3px 3px #0000001f;--drop-shadow-lg:0 4px 4px #00000026;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--blur-sm:8px;--blur-md:12px;--blur-xl:24px;--aspect-video:16 / 9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary:#069;--color-on-primary:#ddd;--color-primary-container:#cdf;--color-on-primary-container:#023;--color-secondary:#5c5c5c;--color-on-secondary:#fff;--color-secondary-container:#e6e6e6;--color-on-secondary-container:#333;--color-tertiary:#cc7000;--color-on-tertiary:#fff;--color-tertiary-container:#ec9;--color-on-tertiary-container:#320;--color-error:#c33;--color-on-error:#fff;--color-error-container:#ffedeb;--color-on-error-container:#c11;--color-surface:#fcf8f8;--color-on-surface:#1c1b1b;--color-surface-variant:#e0e3e3;--color-on-surface-variant:#444748;--color-surface-container:#f1edec;--color-primary-container-fixed:#00334d;--font-system:inherit;--font-primary:var(--font-system);--font-secondary:var(--font-system);--text-display-sm:clamp(1.75rem, 3.5vw, 2.28rem);--text-display-sm--line-height:clamp(2.25rem, 4vw, 2.75rem);--text-headline-lg:clamp(1.5rem, 3vw, 2rem);--text-headline-lg--line-height:clamp(2rem, 3.5vw, 2.5rem);--text-headline-sm:clamp(1.125rem, 2vw, 1.42rem);--text-headline-sm--line-height:clamp(1.5rem, 2.5vw, 2rem);--text-title-lg:1.28rem;--text-title-lg--line-height:1.75rem;--text-title-md:1rem;--text-title-md--line-height:1.5rem;--text-title-md--font-weight:500;--text-body-md:.85rem;--text-body-md--line-height:1.25rem;--text-label-lg:.85rem;--text-label-lg--line-height:1.25rem;--text-label-lg--font-weight:500;--text-label-md:.71rem;--text-label-md--line-height:1rem;--text-label-md--font-weight:500;--text-label-sm:.64rem;--text-label-sm--line-height:1rem;--text-label-sm--font-weight:500;--ease-m3-emphasized:cubic-bezier(.2, 0, 0, 1)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}body{font-family:var(--font-primary);background-color:var(--color-surface);color:var(--color-on-surface)}}@layer components;@layer utilities{.\@container{container-type:inline-size}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.start-50{inset-inline-start:calc(var(--spacing) * 50)}.end-0{inset-inline-end:calc(var(--spacing) * 0)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-8{top:calc(var(--spacing) * 8)}.top-50{top:calc(var(--spacing) * 50)}.right-0{right:calc(var(--spacing) * 0)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-8{bottom:calc(var(--spacing) * 8)}.bottom-12{bottom:calc(var(--spacing) * 12)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.col-4{grid-column:4}.col-8{grid-column:8}.col-span-1{grid-column:span 1/span 1}.float-end{float:inline-end}.float-left{float:left}.float-start{float:inline-start}.container{width:100%}@media (min-width:600px){.container{max-width:600px}}@media (min-width:840px){.container{max-width:840px}}@media (min-width:1200px){.container{max-width:1200px}}@media (min-width:1600px){.container{max-width:1600px}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing) * 0)}.m-2{margin:calc(var(--spacing) * 2)}.mx-0{margin-inline:calc(var(--spacing) * 0)}.mx-auto{margin-inline:auto}.-my-4{margin-block:calc(var(--spacing) * -4)}.my-2{margin-block:calc(var(--spacing) * 2)}.ms-4{margin-inline-start:calc(var(--spacing) * 4)}.me-3{margin-inline-end:calc(var(--spacing) * 3)}.mt-0{margin-top:calc(var(--spacing) * 0)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-auto{margin-top:auto}.mb-0{margin-bottom:calc(var(--spacing) * 0)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.ml-6{margin-left:calc(var(--spacing) * 6)}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.aspect-\[3\/4\]{aspect-ratio:3/4}.aspect-\[4\/3\]{aspect-ratio:4/3}.aspect-\[9\/16\]{aspect-ratio:9/16}.aspect-\[9\/21\]{aspect-ratio:9/21}.aspect-\[21\/9\]{aspect-ratio:21/9}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.h-2{height:calc(var(--spacing) * 2)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-100{height:calc(var(--spacing) * 100)}.h-auto{height:auto}.h-full{height:100%}.w-1\/3{width:33.3333%}.w-2{width:calc(var(--spacing) * 2)}.w-2\/3{width:66.6667%}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-75{width:calc(var(--spacing) * 75)}.w-100{width:calc(var(--spacing) * 100)}.w-auto{width:auto}.w-full{width:100%}.max-w-0{max-width:calc(var(--spacing) * 0)}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-grow,.flex-grow-1{flex-grow:1}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.resize{resize:both}.snap-x{scroll-snap-type:x var(--tw-scroll-snap-strictness)}.snap-mandatory{--tw-scroll-snap-strictness:mandatory}.snap-start{scroll-snap-align:start}.\[scrollbar-width\:none\]{scrollbar-width:none}.list-none{list-style-type:none}.auto-cols-\[33\.333333\%\]{grid-auto-columns:33.3333%}.auto-cols-\[50\%\]{grid-auto-columns:50%}.auto-cols-\[100\%\]{grid-auto-columns:100%}.grid-flow-col{grid-auto-flow:column}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0{gap:calc(var(--spacing) * 0)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-x-1{column-gap:calc(var(--spacing) * 1)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-y-0{row-gap:calc(var(--spacing) * 0)}.self-center{align-self:center}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.scroll-smooth{scroll-behavior:smooth}.rounded{border-radius:.25rem}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-full{border-radius:3.40282e38px}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-t-3xl{border-top-left-radius:var(--radius-3xl);border-top-right-radius:var(--radius-3xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-3{border-style:var(--tw-border-style);border-width:3px}.bg-\[\#ccc\]{background-color:#ccc}.bg-\[\#ff0000\]{background-color:red}.bg-current{background-color:currentColor}.bg-error{background-color:var(--color-error)}.bg-error-container{background-color:var(--color-error-container)}.bg-error-container\/20{background-color:#ffedeb33}@supports (color:color-mix(in lab, red, red)){.bg-error-container\/20{background-color:color-mix(in oklab, var(--color-error-container) 20%, transparent)}}.bg-error\/20{background-color:#c333}@supports (color:color-mix(in lab, red, red)){.bg-error\/20{background-color:color-mix(in oklab, var(--color-error) 20%, transparent)}}.bg-on-primary\/8{background-color:#dddddd14}@supports (color:color-mix(in lab, red, red)){.bg-on-primary\/8{background-color:color-mix(in oklab, var(--color-on-primary) 8%, transparent)}}.bg-primary{background-color:var(--color-primary)}.bg-primary-container{background-color:var(--color-primary-container)}.bg-primary-container-fixed{background-color:var(--color-primary-container-fixed)}.bg-primary-container\/20{background-color:#cdf3}@supports (color:color-mix(in lab, red, red)){.bg-primary-container\/20{background-color:color-mix(in oklab, var(--color-primary-container) 20%, transparent)}}.bg-primary\/20{background-color:#0693}@supports (color:color-mix(in lab, red, red)){.bg-primary\/20{background-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.bg-secondary{background-color:var(--color-secondary)}.bg-secondary-container{background-color:var(--color-secondary-container)}.bg-secondary-container\/20{background-color:#e6e6e633}@supports (color:color-mix(in lab, red, red)){.bg-secondary-container\/20{background-color:color-mix(in oklab, var(--color-secondary-container) 20%, transparent)}}.bg-secondary\/20{background-color:#5c5c5c33}@supports (color:color-mix(in lab, red, red)){.bg-secondary\/20{background-color:color-mix(in oklab, var(--color-secondary) 20%, transparent)}}.bg-surface{background-color:var(--color-surface)}.bg-surface-container{background-color:var(--color-surface-container)}.bg-surface-container\/20{background-color:#f1edec33}@supports (color:color-mix(in lab, red, red)){.bg-surface-container\/20{background-color:color-mix(in oklab, var(--color-surface-container) 20%, transparent)}}.bg-surface-variant{background-color:var(--color-surface-variant)}.bg-surface\/20{background-color:#fcf8f833}@supports (color:color-mix(in lab, red, red)){.bg-surface\/20{background-color:color-mix(in oklab, var(--color-surface) 20%, transparent)}}.bg-tertiary{background-color:var(--color-tertiary)}.bg-tertiary-container{background-color:var(--color-tertiary-container)}.bg-tertiary-container\/20{background-color:#ec93}@supports (color:color-mix(in lab, red, red)){.bg-tertiary-container\/20{background-color:color-mix(in oklab, var(--color-tertiary-container) 20%, transparent)}}.bg-tertiary\/20{background-color:#cc700033}@supports (color:color-mix(in lab, red, red)){.bg-tertiary\/20{background-color:color-mix(in oklab, var(--color-tertiary) 20%, transparent)}}.fill-primary-container{fill:var(--color-primary-container)}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-8{padding:calc(var(--spacing) * 8)}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.ps-0{padding-inline-start:calc(var(--spacing) * 0)}.ps-5{padding-inline-start:calc(var(--spacing) * 5)}.pe-5{padding-inline-end:calc(var(--spacing) * 5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.text-center{text-align:center}.text-end{text-align:end}.text-left{text-align:left}.text-right{text-align:right}.text-start{text-align:start}.align-text-bottom{vertical-align:text-bottom}.text-label-lg{font-size:var(--text-label-lg);line-height:var(--tw-leading,var(--text-label-lg--line-height));font-weight:var(--tw-font-weight,var(--text-label-lg--font-weight))}.text-label-md{font-size:var(--text-label-md);line-height:var(--tw-leading,var(--text-label-md--line-height));font-weight:var(--tw-font-weight,var(--text-label-md--font-weight))}.text-label-sm{font-size:var(--text-label-sm);line-height:var(--tw-leading,var(--text-label-sm--line-height));font-weight:var(--tw-font-weight,var(--text-label-sm--font-weight))}.text-title-md{font-size:var(--text-title-md);line-height:var(--tw-leading,var(--text-title-md--line-height));font-weight:var(--tw-font-weight,var(--text-title-md--font-weight))}.text-body-md{font-size:var(--text-body-md);line-height:var(--tw-leading,var(--text-body-md--line-height))}.text-display-sm{font-size:var(--text-display-sm);line-height:var(--tw-leading,var(--text-display-sm--line-height))}.text-headline-lg{font-size:var(--text-headline-lg);line-height:var(--tw-leading,var(--text-headline-lg--line-height))}.text-headline-sm{font-size:var(--text-headline-sm);line-height:var(--tw-leading,var(--text-headline-sm--line-height))}.text-title-lg{font-size:var(--text-title-lg);line-height:var(--tw-leading,var(--text-title-lg--line-height))}.text-\[0\.625rem\]{font-size:.625rem}.text-\[11px\]{font-size:11px}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.text-\[\#00aaff\]{color:#0af}.text-current{color:currentColor}.text-error{color:var(--color-error)}.text-on-error{color:var(--color-on-error)}.text-on-error-container{color:var(--color-on-error-container)}.text-on-primary{color:var(--color-on-primary)}.text-on-primary-container{color:var(--color-on-primary-container)}.text-on-secondary{color:var(--color-on-secondary)}.text-on-secondary-container{color:var(--color-on-secondary-container)}.text-on-surface{color:var(--color-on-surface)}.text-on-surface-variant{color:var(--color-on-surface-variant)}.text-on-tertiary{color:var(--color-on-tertiary)}.text-on-tertiary-container{color:var(--color-on-tertiary-container)}.text-primary{color:var(--color-primary)}.text-primary-container{color:var(--color-primary-container)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.no-underline{text-decoration-line:none}.opacity-0{opacity:0}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.ring-4{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-current{--tw-ring-color:currentcolor}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-sm{--tw-blur:blur(var(--blur-sm));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-lg{--tw-drop-shadow-size:drop-shadow(0 4px 4px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-lg));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-md{--tw-drop-shadow-size:drop-shadow(0 3px 3px var(--tw-drop-shadow-color,#0000001f));--tw-drop-shadow:drop-shadow(var(--drop-shadow-md));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-\[--ease-m3-emphasized\]{--tw-ease:--ease-m3-emphasized;transition-timing-function:--ease-m3-emphasized}.ease-\[cubic-bezier\(0\.2\,0\,0\,1\)\]{--tw-ease:cubic-bezier(.2,0,0,1);transition-timing-function:cubic-bezier(.2,0,0,1)}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.\[-ms-overflow-style\:none\]{-ms-overflow-style:none}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.group-hover\:max-w-\[60px\]:is(:where(.group):hover *){max-width:60px}.group-hover\:pl-2\.5:is(:where(.group):hover *){padding-left:calc(var(--spacing) * 2.5)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-\[\.added\]\:block:is(:where(.group).added *){display:block}.group-\[\.added\]\:hidden:is(:where(.group).added *){display:none}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:inset-0:after{content:var(--tw-content);inset:calc(var(--spacing) * 0)}@media (hover:hover){.hover\:scale-\[1\.02\]:hover{scale:1.02}.hover\:bg-primary:hover{background-color:var(--color-primary)}.hover\:bg-secondary:hover{background-color:var(--color-secondary)}.hover\:bg-surface:hover{background-color:var(--color-surface)}.hover\:bg-surface-variant:hover{background-color:var(--color-surface-variant)}.hover\:bg-tertiary:hover{background-color:var(--color-tertiary)}.hover\:text-on-secondary:hover{color:var(--color-on-secondary)}.hover\:text-on-surface:hover{color:var(--color-on-surface)}.hover\:text-on-tertiary:hover{color:var(--color-on-tertiary)}.hover\:text-tertiary:hover{color:var(--color-tertiary)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:backdrop-blur-xl:hover{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.aria-\[current\=\'true\'\]\:opacity-100[aria-current=true]{opacity:1}@media (min-width:840px){.md\:mx-10{margin-inline:calc(var(--spacing) * 10)}}@container (min-width:20rem){.\@xs\:p-4{padding:calc(var(--spacing) * 4)}.\@xs\:p-6{padding:calc(var(--spacing) * 6)}}@container (min-width:24rem){.\@sm\:col-span-1{grid-column:span 1/span 1}.\@sm\:col-span-2{grid-column:span 2/span 2}.\@sm\:col-span-3{grid-column:span 3/span 3}.\@sm\:p-6{padding:calc(var(--spacing) * 6)}.\@sm\:p-8{padding:calc(var(--spacing) * 8)}.\@sm\:px-12{padding-inline:calc(var(--spacing) * 12)}}@container (min-width:28rem){.\@md\:col-span-1{grid-column:span 1/span 1}.\@md\:col-span-2{grid-column:span 2/span 2}.\@md\:col-span-3{grid-column:span 3/span 3}.\@md\:mt-0{margin-top:calc(var(--spacing) * 0)}.\@md\:ml-6{margin-left:calc(var(--spacing) * 6)}.\@md\:w-auto{width:auto}.\@md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.\@md\:flex-row{flex-direction:row}.\@md\:items-center{align-items:center}.\@md\:p-12{padding:calc(var(--spacing) * 12)}}@container (min-width:32rem){.\@lg\:col-span-3{grid-column:span 3/span 3}.\@lg\:col-span-4{grid-column:span 4/span 4}.\@lg\:px-12{padding-inline:calc(var(--spacing) * 12)}}@container (min-width:36rem){.\@xl\:col-span-4{grid-column:span 4/span 4}.\@xl\:col-span-5{grid-column:span 5/span 5}.\@xl\:auto-cols-\[25\%\]{grid-auto-columns:25%}.\@xl\:auto-cols-\[33\.333333\%\]{grid-auto-columns:33.3333%}.\@xl\:auto-cols-\[50\%\]{grid-auto-columns:50%}.\@xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.\@xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.\@xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@container (min-width:48rem){.\@3xl\:mt-2{margin-top:calc(var(--spacing) * 2)}.\@3xl\:mt-3{margin-top:calc(var(--spacing) * 3)}.\@3xl\:mt-4{margin-top:calc(var(--spacing) * 4)}.\@3xl\:mt-6{margin-top:calc(var(--spacing) * 6)}.\@3xl\:mt-8{margin-top:calc(var(--spacing) * 8)}.\@3xl\:mt-10{margin-top:calc(var(--spacing) * 10)}.\@3xl\:mb-2{margin-bottom:calc(var(--spacing) * 2)}.\@3xl\:mb-3{margin-bottom:calc(var(--spacing) * 3)}.\@3xl\:mb-4{margin-bottom:calc(var(--spacing) * 4)}.\@3xl\:mb-6{margin-bottom:calc(var(--spacing) * 6)}.\@3xl\:mb-8{margin-bottom:calc(var(--spacing) * 8)}.\@3xl\:mb-10{margin-bottom:calc(var(--spacing) * 10)}.\@3xl\:auto-cols-\[25\%\]{grid-auto-columns:25%}.\@3xl\:auto-cols-\[33\.333333\%\]{grid-auto-columns:33.3333%}.\@3xl\:auto-cols-\[50\%\]{grid-auto-columns:50%}.\@3xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.\@3xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.\@3xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.\@3xl\:gap-2{gap:calc(var(--spacing) * 2)}.\@3xl\:gap-3{gap:calc(var(--spacing) * 3)}.\@3xl\:gap-4{gap:calc(var(--spacing) * 4)}.\@3xl\:gap-6{gap:calc(var(--spacing) * 6)}.\@3xl\:gap-8{gap:calc(var(--spacing) * 8)}.\@3xl\:gap-10{gap:calc(var(--spacing) * 10)}.\@3xl\:px-2{padding-inline:calc(var(--spacing) * 2)}.\@3xl\:px-3{padding-inline:calc(var(--spacing) * 3)}.\@3xl\:px-4{padding-inline:calc(var(--spacing) * 4)}.\@3xl\:px-6{padding-inline:calc(var(--spacing) * 6)}.\@3xl\:px-8{padding-inline:calc(var(--spacing) * 8)}.\@3xl\:px-10{padding-inline:calc(var(--spacing) * 10)}}@container (min-width:64rem){.\@5xl\:mt-4{margin-top:calc(var(--spacing) * 4)}.\@5xl\:mt-6{margin-top:calc(var(--spacing) * 6)}.\@5xl\:mt-8{margin-top:calc(var(--spacing) * 8)}.\@5xl\:mt-10{margin-top:calc(var(--spacing) * 10)}.\@5xl\:mt-12{margin-top:calc(var(--spacing) * 12)}.\@5xl\:mb-4{margin-bottom:calc(var(--spacing) * 4)}.\@5xl\:mb-6{margin-bottom:calc(var(--spacing) * 6)}.\@5xl\:mb-8{margin-bottom:calc(var(--spacing) * 8)}.\@5xl\:mb-10{margin-bottom:calc(var(--spacing) * 10)}.\@5xl\:mb-12{margin-bottom:calc(var(--spacing) * 12)}.\@5xl\:auto-cols-\[20\%\]{grid-auto-columns:20%}.\@5xl\:auto-cols-\[25\%\]{grid-auto-columns:25%}.\@5xl\:auto-cols-\[33\.333333\%\]{grid-auto-columns:33.3333%}.\@5xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.\@5xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.\@5xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.\@5xl\:gap-4{gap:calc(var(--spacing) * 4)}.\@5xl\:gap-6{gap:calc(var(--spacing) * 6)}.\@5xl\:gap-8{gap:calc(var(--spacing) * 8)}.\@5xl\:gap-10{gap:calc(var(--spacing) * 10)}.\@5xl\:gap-12{gap:calc(var(--spacing) * 12)}.\@5xl\:px-4{padding-inline:calc(var(--spacing) * 4)}.\@5xl\:px-6{padding-inline:calc(var(--spacing) * 6)}.\@5xl\:px-8{padding-inline:calc(var(--spacing) * 8)}.\@5xl\:px-10{padding-inline:calc(var(--spacing) * 10)}.\@5xl\:px-12{padding-inline:calc(var(--spacing) * 12)}}@container (min-width:80rem){.\@7xl\:auto-cols-\[16\.666667\%\]{grid-auto-columns:16.6667%}.\@7xl\:auto-cols-\[20\%\]{grid-auto-columns:20%}.\@7xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.\@7xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}}.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}}[data-scheme=light],[data-theme=light]{--color-primary:#069;--color-on-primary:#ddd;--color-primary-container:#cdf;--color-on-primary-container:#023;--color-inverse-primary:#a4cbeb;--color-secondary:#5c5c5c;--color-on-secondary:#fff;--color-secondary-container:#e6e6e6;--color-on-secondary-container:#333;--color-tertiary:#cc7000;--color-on-tertiary:#fff;--color-tertiary-container:#ec9;--color-on-tertiary-container:#320;--color-error:#c33;--color-on-error:#fff;--color-error-container:#ffedeb;--color-on-error-container:#c11;--color-background:#f9f9fb;--color-on-background:#1a1c1e;--color-surface:#fcf8f8;--color-on-surface:#1c1b1b;--color-surface-variant:#e0e3e3;--color-on-surface-variant:#444748;--color-surface-tint:#3b627e;--color-inverse-surface:#313030;--color-inverse-on-surface:#f4f0ef;--color-surface-dim:#ddd9d9;--color-surface-bright:#fcf8f8;--color-surface-container-lowest:#fff;--color-surface-container-low:#f7f3f2;--color-surface-container:#f1edec;--color-surface-container-high:#ebe7e7;--color-surface-container-highest:#e5e2e1;--color-primary-fixed:#069;--color-on-primary-fixed:#ddd;--color-primary-container-fixed:#00334d;--color-on-primary-container-fixed:#ddd;--color-primary-fixed-dim:#a4cbeb;--color-on-primary-fixed-variant:#214a66;--color-secondary-fixed:#e3e2e2;--color-on-secondary-fixed:#1b1c1c;--color-secondary-fixed-dim:#c7c6c6;--color-on-secondary-fixed-variant:#464747;--color-tertiary-fixed:#ffdcc2;--color-on-tertiary-fixed:#2e1500;--color-tertiary-fixed-dim:#ffb77c;--color-on-tertiary-fixed-variant:#6d3900;--color-outline:#747878;--color-outline-variant:#c4c7c7;--color-shadow:#000;--color-scrim:#000}[data-scheme=dark],[data-theme=dark]{--color-surface-tint:#a4cbeb;--color-inverse-primary:#3b627e;--color-secondary:#c7c6c6;--color-on-secondary:#303031;--color-secondary-container:#222;--color-on-secondary-container:#e6e6e6;--color-tertiary:#ffb77c;--color-on-tertiary:#4d2700;--color-tertiary-container:#640;--color-on-tertiary-container:#dc9;--color-error:#ffb3ad;--color-on-error:#680009;--color-error-container:#c33;--color-on-error-container:#ffedeb;--color-background:#121415;--color-on-background:#e2e2e5;--color-surface:#141313;--color-on-surface:#e5e2e1;--color-surface-variant:#444748;--color-on-surface-variant:#c4c7c7;--color-surface-dim:#141313;--color-surface-bright:#3a3939;--color-surface-container-lowest:#0e0e0e;--color-surface-container-low:#1c1b1b;--color-surface-container:#201f1f;--color-surface-container-high:#2a2a2a;--color-surface-container-highest:#353434;--color-inverse-surface:#e5e2e1;--color-inverse-on-surface:#313030;--color-primary-fixed:#cae6ff;--color-on-primary-fixed:#001e2f;--color-primary-fixed-dim:#a4cbeb;--color-on-primary-fixed-variant:#214a66;--color-secondary-fixed:#e3e2e2;--color-on-secondary-fixed:#1b1c1c;--color-secondary-fixed-dim:#c7c6c6;--color-on-secondary-fixed-variant:#464747;--color-tertiary-fixed:#ffdcc2;--color-on-tertiary-fixed:#2e1500;--color-tertiary-fixed-dim:#ffb77c;--color-on-tertiary-fixed-variant:#6d3900;--color-outline:#8e9192;--color-outline-variant:#444748;--color-shadow:#000;--color-scrim:#000}@media (prefers-color-scheme:dark){:root:not([data-scheme=light]):not([data-theme=light]){--color-surface-tint:#a4cbeb;--color-inverse-primary:#3b627e;--color-secondary:#c7c6c6;--color-on-secondary:#303031;--color-secondary-container:#222;--color-on-secondary-container:#e6e6e6;--color-tertiary:#ffb77c;--color-on-tertiary:#4d2700;--color-tertiary-container:#640;--color-on-tertiary-container:#dc9;--color-error:#ffb3ad;--color-on-error:#680009;--color-error-container:#c33;--color-on-error-container:#ffedeb;--color-background:#121415;--color-on-background:#e2e2e5;--color-surface:#141313;--color-on-surface:#e5e2e1;--color-surface-variant:#444748;--color-on-surface-variant:#c4c7c7;--color-surface-dim:#141313;--color-surface-bright:#3a3939;--color-surface-container-lowest:#0e0e0e;--color-surface-container-low:#1c1b1b;--color-surface-container:#201f1f;--color-surface-container-high:#2a2a2a;--color-surface-container-highest:#353434;--color-inverse-surface:#e5e2e1;--color-inverse-on-surface:#313030;--color-primary-fixed:#cae6ff;--color-on-primary-fixed:#001e2f;--color-primary-fixed-dim:#a4cbeb;--color-on-primary-fixed-variant:#214a66;--color-secondary-fixed:#e3e2e2;--color-on-secondary-fixed:#1b1c1c;--color-secondary-fixed-dim:#c7c6c6;--color-on-secondary-fixed-variant:#464747;--color-tertiary-fixed:#ffdcc2;--color-on-tertiary-fixed:#2e1500;--color-tertiary-fixed-dim:#ffb77c;--color-on-tertiary-fixed-variant:#6d3900;--color-outline:#8e9192;--color-outline-variant:#444748;--color-shadow:#000;--color-scrim:#000}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-scroll-snap-strictness{syntax:"*";inherits:false;initial-value:proximity}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}
|
package/dist/mBloxM3E.js
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/*! mBlox Unified JS | Generated: 2026-06-05T13:58:27.149Z */
|
|
2
|
+
var wt=Object.defineProperty;var St=(e,t)=>()=>(e&&(t=e(e=0)),t);var k=(e,t)=>{for(var o in t)wt(e,o,{get:t[o],enumerable:!0})};var ke={};k(ke,{ASPECT_RATIO_CLASSES:()=>Ie,BLOCK_CARD:()=>B,BLOCK_COMMENT:()=>y,BLOCK_COVER:()=>f,BLOCK_GALLERY:()=>O,BLOCK_LIST:()=>v,BLOCK_PANCAKE:()=>I,BLOCK_QUOTE:()=>C,BLOCK_SHOWCASE:()=>L,BLOCK_STACK:()=>S,BREAKPOINTS:()=>ce,DEFAULT_COLUMN_COUNTS:()=>Te,LAYOUT_CLASSES:()=>fe,M3E_PALETTES:()=>he,RESPONSIVE_CAROUSEL_CLASSES_M3E:()=>pe,RESPONSIVE_COLUMN_MAP:()=>me,RESPONSIVE_GRID_CLASSES_M3E:()=>R,getBreakpointIndex:()=>Ae,noImg:()=>_});function Ae(e){return e<ce.sm?0:e<ce.md?1:e<ce.lg?2:e<ce.xl?3:4}var f,L,v,B,O,I,S,C,y,_,Te,ce,me,pe,R,he,fe,Ie,x=St(()=>{f="v",L="s",v="l",B="c",O="g",I="p",S="t",C="q",y="m",_=window.noImg||"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iIzljYTNhZiI+PHBhdGggZD0iTTIxIDE5VjVjMC0xLjEtLjktMi0yLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnpNOC41IDEzLjVsMi41IDMuMDFMMTQuNSAxMmw0LjUgNkg1bDMuNS00LjV6Ii8+PC9zdmc+",Te={v:1,m:1,t:1,p:3,c:4,q:4,g:5,l:2,s:6},ce={sm:600,md:840,lg:1200,xl:1600},me={1:[1,1,1,1,1],2:[1,1,2,2,2],3:[1,1,2,3,3],4:[1,2,3,4,4],5:[2,3,4,4,5],6:[3,4,4,5,6]};pe={1:"auto-cols-[100%]",2:"auto-cols-[100%] @3xl:auto-cols-[50%]",3:"auto-cols-[100%] @3xl:auto-cols-[50%] @5xl:auto-cols-[33.333333%]",4:"auto-cols-[100%] @xl:auto-cols-[50%] @3xl:auto-cols-[33.333333%] @5xl:auto-cols-[25%]",5:"auto-cols-[50%] @xl:auto-cols-[33.333333%] @3xl:auto-cols-[25%] @7xl:auto-cols-[20%]",6:"auto-cols-[33.333333%] @xl:auto-cols-[25%] @5xl:auto-cols-[20%] @7xl:auto-cols-[16.666667%]"},R={1:"grid-cols-1",2:"grid-cols-1 @3xl:grid-cols-2",3:"grid-cols-1 @3xl:grid-cols-2 @5xl:grid-cols-3",4:"grid-cols-1 @xl:grid-cols-2 @3xl:grid-cols-3 @5xl:grid-cols-4",5:"grid-cols-1 @md:grid-cols-2 @xl:grid-cols-3 @3xl:grid-cols-4 @7xl:grid-cols-5",6:"grid-cols-3 @xl:grid-cols-4 @5xl:grid-cols-5 @7xl:grid-cols-6"},he={surface:{bg:"bg-surface",text:"text-on-surface",glass:"bg-surface/20",hoverBg:"hover:bg-surface",hoverText:"hover:text-on-surface",containerBg:"bg-surface-container",containerText:"text-on-surface",containerGlass:"bg-surface-container/20"},primary:{bg:"bg-primary",text:"text-on-primary",glass:"bg-primary/20",hoverBg:"hover:bg-tertiary",hoverText:"hover:text-on-tertiary",containerBg:"bg-primary-container",containerText:"text-on-primary-container",containerGlass:"bg-primary-container/20"},secondary:{bg:"bg-secondary",text:"text-on-secondary",glass:"bg-secondary/20",hoverBg:"hover:bg-secondary",hoverText:"hover:text-on-secondary",containerBg:"bg-secondary-container",containerText:"text-on-secondary-container",containerGlass:"bg-secondary-container/20"},tertiary:{bg:"bg-tertiary",text:"text-on-tertiary",glass:"bg-tertiary/20",containerBg:"bg-tertiary-container",containerText:"text-on-tertiary-container",containerGlass:"bg-tertiary-container/20"},error:{bg:"bg-error",text:"text-on-error",glass:"bg-error/20",containerBg:"bg-error-container",containerText:"text-on-error-container",containerGlass:"bg-error-container/20"}},fe={0:{gap:"gap-0",mt:"mt-0",mb:"mb-0",px:"px-0"},2:{gap:"gap-1 @3xl:gap-2",mt:"mt-1 @3xl:mt-2",mb:"mb-1 @3xl:mb-2",px:"px-1 @3xl:px-2"},4:{gap:"gap-2 @3xl:gap-3 @5xl:gap-4",mt:"mt-2 @3xl:mt-3 @5xl:mt-4",mb:"mb-2 @3xl:mb-3 @5xl:mb-4",px:"px-2 @3xl:px-3 @5xl:px-4"},6:{gap:"gap-3 @3xl:gap-4 @5xl:gap-6",mt:"mt-3 @3xl:mt-4 @5xl:mt-6",mb:"mb-3 @3xl:mb-4 @5xl:mb-6",px:"px-3 @3xl:px-4 @5xl:px-6"},8:{gap:"gap-4 @3xl:gap-6 @5xl:gap-8",mt:"mt-4 @3xl:mt-6 @5xl:mt-8",mb:"mb-4 @3xl:mb-6 @5xl:mb-8",px:"px-4 @3xl:px-6 @5xl:px-8"},10:{gap:"gap-6 @3xl:gap-8 @5xl:gap-10",mt:"mt-6 @3xl:mt-8 @5xl:mt-10",mb:"mb-6 @3xl:mb-8 @5xl:mb-10",px:"px-6 @3xl:px-8 @5xl:px-10"},12:{gap:"gap-8 @3xl:gap-10 @5xl:gap-12",mt:"mt-8 @3xl:mt-10 @5xl:mt-12",mb:"mb-8 @3xl:mb-10 @5xl:mb-12",px:"px-8 @3xl:px-10 @5xl:px-12"}},Ie={"1/1":"aspect-square","16/9":"aspect-video","4/3":"aspect-[4/3]","3/4":"aspect-[3/4]","9/16":"aspect-[9/16]","9/21":"aspect-[9/21]","21/9":"aspect-[21/9]"}});function G(e){if(!e)return[];let t=/#([a-zA-Z0-9_]+)/g,o=e.match(t);return o?o.map(r=>r.toLowerCase()):[]}function ue(e){return new Promise((t,o)=>{let r=`jsonp_callback_${Math.round(1e5*Math.random())}`,a=document.createElement("script");a.src=`${e}&callback=${r}`,window[r]=function(s){delete window[r],document.head.removeChild(a),t(s)},a.onerror=function(){delete window[r],document.head.removeChild(a);let s=`JSONP request to ${e} failed.`;console.error(s),o(new Error(s))},document.head.appendChild(a)})}function We(e,t){return Array.isArray(e)?{posts:e.map(r=>({title:r.title.rendered,content:r.content.rendered,authorName:r._embedded?.author[0]?.name||"Unknown",authorUri:r._embedded?.author[0]?.link||"",authorImage:r._embedded?.author[0]?.avatar_urls?.["96"]||"",publishedDate:r.date_gmt,url:r.link,thumbnailUrl:r._embedded?.["wp:featuredmedia"]?.[0]?.media_details?.sizes?.large?.source_url||r._embedded?.["wp:featuredmedia"]?.[0]?.source_url||"",labels:[...new Set([...r._embedded?.["wp:term"]?r._embedded?.["wp:term"].flat().map(a=>a.name):[],...G(r.title.rendered+" "+r.content.rendered)])],commentCount:r.comment_count?parseInt(r.comment_count,10):r._embedded?.replies?.[0]?.length||0,commentsUrl:r.link?`${r.link}#comments`:"",viewCount:r.views||r.view_count||r.pageviews||0,updatedDate:r.modified_gmt||""})),totalResults:parseInt(t.get("X-WP-Total")||"0",10)}:{posts:[],totalResults:0}}function Ge(e){let t=e.querySelectorAll("item, entry");if(!t.length)return{posts:[],totalResults:0,feedUrl:""};let o=e.querySelector("yt\\:channelId")!==null,r=Array.from(t).map(s=>{let l=n=>{let i=s.querySelector(n);return i?i.textContent:""};if(o){let n=l("yt\\:videoId"),i=s.querySelector("media\\:group"),c=i&&i.querySelector("media\\:thumbnail[url]")?.getAttribute("url")||"";return{title:l("title"),content:l("media\\:description")||"",authorName:l("author > name")||e.querySelector("channel > title, feed > title")?.textContent||"Unknown",publishedDate:l("published"),url:s.querySelector('link[rel="alternate"]')?.getAttribute("href")||"",thumbnailUrl:c,videoId:n,authorUri:l("author > uri")||"",authorImage:"",labels:[...new Set([...Array.from(s.querySelectorAll("category")).map(d=>d.textContent),...G(l("title")+" "+(l("media\\:description")||""))])],commentCount:0,commentsUrl:"",viewCount:l("media\\:statistics[views]")||0,updatedDate:l("updated")||""}}else{let n=s.querySelector("media\\:thumbnail[url], thumbnail[url]")?.getAttribute("url")||"";if(!n){let c=(l("description")||l("content")).match(/<img[^>]+src="([^">]+)"/);c&&(n=c[1])}return{title:l("title"),content:l("description")||l("content"),authorName:l("dc\\:creator, author > name")||e.querySelector("channel > title, feed > title")?.textContent||"Unknown",publishedDate:l("pubDate, published"),url:l("link")||s.querySelector("link[href]")?.getAttribute("href")||"",thumbnailUrl:n,authorUri:l("author > uri")||"",authorImage:"",labels:[...new Set([...Array.from(s.querySelectorAll("category")).map(i=>i.textContent),...G(l("title")+" "+(l("description")||l("content")))])],commentCount:l("slash\\:comments")?parseInt(l("slash\\:comments"),10):0,commentsUrl:l("comments")||l("link")||s.querySelector("link[href]")?.getAttribute("href")||"",viewCount:0,updatedDate:l("updated")||""}}}),a=e.querySelector('channel > link, feed > link[rel="alternate"]')?.getAttribute("href")||e.querySelector('channel > link, feed > link[rel="alternate"]')?.textContent||"";return{posts:r,totalResults:t.length,feedUrl:a}}function ve(e){if(e.status!=="ok"||!e.items)return{posts:[],totalResults:0,feedUrl:""};let t=e.feed.url.includes("youtube.com");return{posts:e.items.map(r=>{let a="";if(t){let l=r.link.match(/v=([^&]+)/);a=l?l[1]:""}let s=r.thumbnail||"";if(!s&&r.enclosure&&r.enclosure.link&&r.enclosure.type&&r.enclosure.type.startsWith("image/")&&(s=r.enclosure.link),!s&&r.content){let l=r.content.match(/<img[^>]+src="([^">]+)"/);l&&(s=l[1])}return{title:r.title,content:r.description||r.content||"",authorName:r.author||"Unknown",publishedDate:r.pubDate,url:r.link,thumbnailUrl:s,videoId:a,authorUri:"",authorImage:"",labels:[...new Set([...r.categories||[],...G((r.title||"")+" "+(r.description||r.content||""))])],commentCount:0,commentsUrl:"",viewCount:0,updatedDate:r.updated||""}}),totalResults:e.items.length,feedUrl:e.feed.link}}function Ye(e){if(!e||!e.data||!Array.isArray(e.data.children))return{posts:[],totalResults:0,feedUrl:""};let t=e.data.children.map(o=>{let r=o.data,a="";if(r.thumbnail&&r.thumbnail.startsWith("http"))a=r.thumbnail;else if(r.preview&&r.preview.images&&r.preview.images.length>0){let l=r.preview.images[0].source.url;a=l?l.replace(/&/g,"&"):""}let s="";return r.selftext_html?s=r.selftext_html.replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&").replace(/"/g,'"'):r.selftext?s=r.selftext:r.url&&!r.url.includes("reddit.com")&&(s=`<a href="${r.url}" target="_blank">External Link: ${r.title}</a>`,r.url.match(/\.(jpeg|jpg|gif|png)$/i)&&(s+=`<br><img src="${r.url}" />`,a||(a=r.url))),{title:r.title,content:s,authorName:r.author||"Unknown",publishedDate:r.created_utc?new Date(r.created_utc*1e3).toISOString():"",url:`https://www.reddit.com${r.permalink}`,thumbnailUrl:a,videoId:"",authorUri:`https://www.reddit.com/user/${r.author}`,authorImage:"",labels:[...new Set([...r.link_flair_text?[r.link_flair_text]:[],...G((r.title||"")+" "+s)])],commentCount:r.num_comments||0,commentsUrl:`https://www.reddit.com${r.permalink}`,viewCount:r.view_count||r.score||0,updatedDate:r.edited?new Date(r.edited*1e3).toISOString():""}});return{posts:t,totalResults:t.length,feedUrl:""}}function Qe(e){if(!e.feed||!e.feed.entry)return{posts:[],totalResults:0,feedUrl:""};let t=e.feed.entry.map(r=>{let a="content"in r?r.content.$t:"summary"in r?r.summary.$t:"",s="";if(a){let n=new DOMParser().parseFromString(a,"text/html").querySelector("img");n&&(s=n.src)}return{title:r.title.$t,content:a,authorName:r.author[0].name.$t,authorUri:r.author[0].name.$t==="Anonymous"||r.author[0].name.$t==="Unknown"?"":r.author[0].uri.$t,authorImage:r.author[0].gd$image?r.author[0].gd$image.src:"",publishedDate:r.published.$t,url:(r.link.find(l=>l.rel==="alternate")||{}).href||"",thumbnailUrl:s,labels:[...new Set([...r.category?r.category.map(l=>l.term):[],...G((r.title.$t||"")+" "+a)])],commentCount:r.thr$total?parseInt(r.thr$total.$t,10):0,commentsUrl:(r.link.find(l=>l.rel==="replies"&&l.type==="text/html")||{}).href||(r.link.find(l=>l.rel==="alternate")||{}).href||"",viewCount:0,updatedDate:r.updated?r.updated.$t:""}}),o=(e.feed.link.find(r=>r.rel==="alternate")||{}).href||"";return{posts:t,totalResults:e.feed.openSearch$totalResults.$t,feedUrl:o}}var ie=900*1e3,A=new Map;async function Je(e){let t=[{url:`https://api.codetabs.com/v1/proxy?quest=${e}`,type:"raw"},{url:`https://corsproxy.io/?${encodeURIComponent(e)}`,type:"raw"},{url:`https://api.allorigins.win/get?url=${encodeURIComponent(e)}`,type:"json"}];for(let o of t)try{let r=new AbortController,a=setTimeout(()=>r.abort(),5e3),s=await fetch(o.url,{signal:r.signal});if(clearTimeout(a),s.ok){let l;if(o.type==="json"?l=(await s.json()).contents:l=await s.text(),l&&l.length>0){if(e.includes("/wp-json")){let n=l.trim();if(!n.startsWith("{")&&!n.startsWith("[")){console.warn(`mBlox: Proxy ${o.url} returned non-JSON HTML for WordPress: ${n.substring(0,100)}`);continue}}return{text:l,response:s}}}}catch(r){console.warn(`mBlox: Proxy attempt failed for ${e}: ${r.message}`)}throw new Error(`All CORS proxies failed for ${e}`)}var Ce=class{constructor(t){this.config=t}_buildFeedUrl(){let t=this.config.siteURL;t=t.endsWith("/")?t:t+"/",t.endsWith("/posts/")||(t+="wp/v2/posts/");let o=`${t}?_embed&per_page=${this.config.postsPerBlock}&page=${this.config.stageID}`;return this.config.contentType==="label"&&!isNaN(parseInt(this.config.labelName,10))&&(o+=`&categories=${this.config.labelName}`),o}async fetch(){let t=this._buildFeedUrl(),o=A.get(t);if(o&&Date.now()-o.timestamp<ie)return o.data;let{text:r,response:a}=await Je(t);try{let s=JSON.parse(r),l=We(s,a.headers);return A.set(t,{data:l,timestamp:Date.now()}),l}catch(s){throw console.error("mBlox: Failed to parse WordPress JSON.",s),new Error("Invalid JSON response from WordPress feed.")}}},Y=class{constructor(t){this.config=t}_buildFeedUrl(){return this.config.siteURL}async fetch(){let t=this._buildFeedUrl(),o=A.get(t);if(o&&Date.now()-o.timestamp<ie)return o.data;let{text:r}=await Je(t),s=new DOMParser().parseFromString(r,"text/xml");if(s.getElementsByTagName("parsererror").length)throw new Error("Failed to parse RSS feed.");let l=Ge(s);return A.set(t,{data:l,timestamp:Date.now()}),l}},ye=class{constructor(t){this.config=t}_buildFeedUrl(){return`https://api.rss2json.com/v1/api.json?rss_url=${encodeURIComponent(this.config.siteURL)}`}async fetch(){let t=this._buildFeedUrl(),o=A.get(t);if(o&&Date.now()-o.timestamp<ie)return o.data;let r=await ue(t),a=ve(r);return A.set(t,{data:a,timestamp:Date.now()}),a}},ne=class{constructor(t){this.config=t}_buildFeedUrl(){let t=this.config.siteURL+"feeds/";switch(this.config.contentType){case"recent":t+="posts"+(this.config.showImage?"/default":"/summary");break;case"comments":t+="comments"+(this.config.showImage?"/default":"/summary");break;default:t+="posts"+(this.config.showImage?"/default":"/summary")+"/-/"+this.config.labelName}return t+=`?alt=json-in-script&start-index=${(this.config.stageID-1)*this.config.postsPerBlock+1}&max-results=${this.config.postsPerBlock}`,t}async fetch(){let t=this._buildFeedUrl(),o=A.get(t);if(o&&Date.now()-o.timestamp<ie)return o.data;let r=await ue(t),a=Qe(r);return A.set(t,{data:a,timestamp:Date.now()}),a}},$e=class{constructor(t){this.config=t}_buildFeedUrl(){let t=this.config.siteURL.replace(/\/$/,"");return t.endsWith(".json")||(t+=".json"),t}async fetch(){let t=this._buildFeedUrl(),o=A.get(t);if(o&&Date.now()-o.timestamp<ie)return o.data;try{let r=await window.fetch(t);if(!r.ok)throw new Error("Native fetch failed");let a=await r.text(),s=JSON.parse(a),l=Ye(s);return A.set(t,{data:l,timestamp:Date.now()}),l}catch{console.warn("mBlox: Reddit native fetch failed (CORS/403). Falling back to rss2json...");let a=t.replace(".json",".rss"),s=`https://api.rss2json.com/v1/api.json?rss_url=${encodeURIComponent(a)}`,l=await ue(s),n=ve(l);return n.posts.forEach(i=>{i.authorName&&i.authorName.startsWith("/u/")&&(i.authorUri=`https://www.reddit.com${i.authorName}`)}),A.set(t,{data:n,timestamp:Date.now()}),n}}},we=class extends Y{_buildFeedUrl(){let t=this.config.siteURL.replace(/\/$/,"");return t.endsWith("/rss")||(t+="/rss"),t}},Se=class extends Y{_buildFeedUrl(){let t=this.config.siteURL.replace(/\/$/,"");return t.endsWith(".rss")||(t+=".rss"),t}};function Ze(e){let t=e.siteURL.toLowerCase(),o=t.split("?")[0];return t.includes("reddit.com")?new $e(e):t.includes("tumblr.com")?new we(e):t.includes("mastodon.social")||t.includes("bsky.app")?new Se(e):t.includes("deviantart.com")?new Y(e):t.includes("/wp-json")?new Ce(e):t.includes("youtube.com")?new ye(e):o.endsWith(".xml")||t.includes("/feed")||o.endsWith(".rss")||o.endsWith("/rss")?new Y(e):new ne(e)}x();function Xe(e,t){let o={...e};if((o.postsPerBlock<=1||o.blockType==="l")&&(o.isCarousel=!1),o.isCarousel){let r=Math.max(1,Math.min(6,o.columnCount)),a=Ae(window.innerWidth),s=me[r]||me[6];o.actualColumnCount=s[a],o.blockRows>Math.ceil(t/o.actualColumnCount)&&(o.blockRows=Math.ceil(t/o.actualColumnCount)),t<=o.actualColumnCount*o.blockRows&&(o.isCarousel=!1,o.containsNavigation=!0)}return o}function Tt(e){if(e.sectionHeight||(e.blockType==="v"?e.sectionHeight="100vh":e.blockType==="s"?e.sectionHeight="70vh":e.sectionHeight="m"),e.articleHeight=e.sectionHeight==="m"?"":`height:${e.sectionHeight}!important;`,e.isImageFixed===null&&(e.isImageFixed=e.blockType==="s"||e.blockType==="v"),e.blurImage===null){let t=["s","l","t","p","q"];e.blurImage=e.showHeader&&!t.includes(e.blockType)}return e.textVerticalAlign||(e.blockType==="v"?e.textVerticalAlign="middle":e.blockType==="l"?e.textVerticalAlign="bottom":e.textVerticalAlign="overlay"),e.ctaAlign||(e.ctaAlign=e.blockType==="v"?"center":"right"),e.textHAlign||(e.textHAlign=e.blockType==="v"?"center":"left"),e.columnCount===null||typeof e.columnCount>"u"?e.columnCount=Te[e.blockType]||3:e.columnCount=parseInt(e.columnCount,10),e}function et(e){let t={},o=e.querySelector('script[type="application/json"]');if(o)try{t=JSON.parse(o.textContent)}catch(K){console.error("mBlox: Failed to parse embedded JSON configuration.",K)}let r=(K,q,se)=>{if(t[q]!==void 0)return t[q];let E=e.getAttribute(`data-${K}`);return E!==null?E:se},a=(K,q,se)=>{if(t[q]!==void 0)return!!t[q];let E=e.getAttribute(`data-${K}`);return E!==null?E.toLowerCase()==="true":se},s=(K,q,se)=>{if(t[q]!==void 0)return parseInt(t[q],10);let E=e.getAttribute(`data-${K}`);return E!==null?parseInt(E,10):se},l=r("label","label","Label Name missing"),n=r("contentType","contentType","recent").toLowerCase(),i=r("feed","feed","/"),c=r("title","title",""),d=r("description","description",""),m=r("type","type","v-ih"),p=m.toLowerCase(),u=p.substring(0,1),h=p.substring(1),g=m.substring(1),b=r("theme","theme","auto").toLowerCase(),$=h.includes("h"),w=h.includes("i"),j=h.includes("s"),re=h.includes("a"),N=h.includes("d"),V=h.includes("o"),P=h.includes("l"),z=g.includes("D")?"long":"short",F=s("s","s",1),oe=!e.hasAttribute("data-s")&&t.s===void 0,ae=s("posts","posts",3),Le=["light","dark","auto"].includes(b)?b:"auto",W=r("palette","palette","surface").toLowerCase(),M=W;he[M]||(M="surface");let bt=he[M],Lt=r("textVAlign","textVAlign","").toLowerCase(),Ve=r("iBlur","iBlur","").toLowerCase(),Pe=r("iFix","iFix","").toLowerCase(),ze=e.closest(".widget"),gt=(ze?ze.getAttribute("ID"):c+p+l).replace(/[\s#.&?,[\]]/g,"-"),vt=z==="long"?{year:"numeric",month:"short",day:"numeric"}:{month:"short",day:"numeric"},Ct=N?new Intl.DateTimeFormat("en-US",vt):null,Fe=r("cols","cols",null),yt=r("rows","rows","1"),$t=r("overlay-items","overlayItems","vcasb").toLowerCase().split(""),ge={labelName:l,contentType:n,siteURL:i,mBlockTitle:c,mBlockDescription:d,blockType:u,showHeader:$,showImage:w,showSnippet:j,showAuthor:re,showDate:N,showOverlay:V,showLabels:P,columnCount:Fe!==null?parseInt(Fe,10):null,blockRows:parseInt(yt,10),isCarousel:a("isCarousel","isCarousel",!1),sectionHeight:r("iHeight","iHeight",null),articleHeight:"",blurImage:Ve==="true"||t.iBlur===!0?!0:Ve==="false"||t.iBlur===!1?!1:null,palette:bt,gutterSize:r("gutter","gutter",u=="v"?0:3),textVerticalAlign:Lt,cornerStyle:r("corner","corner","").toLowerCase()=="sharp"?" rounded-none":" rounded-3xl",aspectRatio:` ${Ie[r("ar","ar","1/1").replace("x","/").toLowerCase()]||"aspect-square"}`,isImageFixed:Pe==="true"||t.iFix===!0?!0:Pe==="false"||t.iFix===!1?!1:null,hasRoundedBorder:a("iBorder","iBorder",!1),snippetSize:s("snippetSize","snippetSize",150),callToAction:r("CTAText","CTAText",""),ctaAlign:r("ctaAlign","ctaAlign",""),textHAlign:r("textHAlign","textHAlign",""),moreText:r("moreText","moreText",""),stageID:F,firstInstance:oe,postsPerBlock:ae,mBlockID:gt,dateFormatter:Ct,dateStyle:z,paletteName:W,mBloxTheme:Le,interactionClasses:W==="colorful"?`transition-all duration-300 ease-[cubic-bezier(0.2,0,0,1)] ${u==="p"||u==="q"?"":"hover:bg-tertiary hover:text-on-tertiary "}hover:scale-[1.02] hover:opacity-100 overflow-hidden no-underline font-bold`:`transition-all duration-300 ease-[cubic-bezier(0.2,0,0,1)] hover:scale-[1.02] ${u==="p"||u==="q"?"":"hover:bg-surface-variant "}overflow-hidden no-underline font-bold`,containsNavigation:!1,actualColumnCount:0,overlayItems:$t};return ge.layout=fe[ge.gutterSize*2]||fe[6],Tt(ge)}x();function tt(e){let t=Array.from(e.querySelectorAll(".m-blox-image-to-load"));if(!t.length)return;let o=new IntersectionObserver((r,a)=>{r.forEach(s=>{if(!s.isIntersecting)return;let l=s.target,n=l.tagName==="FIGURE",i=l.getAttribute("data-is-fixed")==="true",c=l.getAttribute("data-img-high"),d=c,m=window.devicePixelRatio||1,p;if(i?p=Math.max(window.innerWidth,window.innerHeight)*m:p=l.getBoundingClientRect().width*m,p>0&&c&&c.includes("/s1600")){let u=Math.min(1600,Math.max(100,Math.ceil(p/100)*100));d=c.replace("/s1600",`/s${u}`)}if(n){let u=new Image;u.onload=()=>{l.style.backgroundImage=`url("${d}")`,i&&(l.style.backgroundAttachment="fixed",l.style.backgroundPosition="center center",l.style.backgroundSize="cover")},u.onerror=()=>{Promise.resolve().then(()=>(x(),ke)).then(({noImg:h})=>{l.style.backgroundImage=`url("${h}")`,l.setAttribute("data-img-high",h)})},u.src=d}else l.onerror=()=>{Promise.resolve().then(()=>(x(),ke)).then(({noImg:u})=>{l.src=u,l.setAttribute("data-img-high",u),l.onerror=null})},l.src=d;a.unobserve(l)})},{rootMargin:"0px 0px 200px 0px"});t.forEach(r=>{o.observe(r)})}var At=`<svg xmlns="http://www.w3.org/2000/svg" style="display:none;" id="mblox-svg-sprite">
|
|
3
|
+
<symbol id="icon-bookmark-add" viewBox="0 -960 960 960" fill="currentColor">
|
|
4
|
+
<path d="M480-388q51-47 82.5-77.5T611-518t23-38.5 6-35.5q0-36-26-62t-62-26q-21 0-40.5 8.5T480-648q-12-15-31-23.5t-41-8.5q-36 0-62 26t-26 62q0 19 5.5 35t22.5 38 48 52.5 84 78.5M200-120v-640q0-33 23.5-56.5T280-840h400q33 0 56.5 23.5T760-760v640L480-240z"/>
|
|
5
|
+
</symbol>
|
|
6
|
+
<symbol id="icon-bookmark-added" viewBox="0 -960 960 960" fill="currentColor">
|
|
7
|
+
<path d="m438-400 198-198-57-56-141 141-57-57-57 57zM200-120v-640q0-33 23.5-56.5T280-840h400q33 0 56.5 23.5T760-760v640L480-240z"/>
|
|
8
|
+
</symbol>
|
|
9
|
+
<symbol id="icon-caret-left" viewBox="0 0 16 16" fill="currentColor">
|
|
10
|
+
<path d="M3.86 8.753l5.482 4.796c.646.566 1.658.106 1.658-.753V3.204a1 1 0 0 0-1.659-.753l-5.48 4.796a1 1 0 0 0 0 1.506z"/>
|
|
11
|
+
</symbol>
|
|
12
|
+
<symbol id="icon-caret-right" viewBox="0 0 16 16" fill="currentColor">
|
|
13
|
+
<path d="M12.14 8.753l-5.482 4.796c-.646.566-1.658.106-1.658-.753V3.204a1 1 0 0 1 1.659-.753l5.48 4.796a1 1 0 0 1 0 1.506z"/>
|
|
14
|
+
</symbol>
|
|
15
|
+
<symbol id="icon-comment-bubble" viewBox="0 -960 960 960" fill="currentColor">
|
|
16
|
+
<path d="M240-240 131-131q-14 14-32.5 6.5T80-152v-668q0-24 18-42t42-18h680q24 0 42 18t18 42v520q0 24-18 42t-42 18z"/>
|
|
17
|
+
</symbol>
|
|
18
|
+
<symbol id="icon-eye" viewBox="0 0 24 24" fill="currentColor">
|
|
19
|
+
<path d="M15.58 12c0 1.98-1.6 3.58-3.58 3.58S8.42 13.98 8.42 12s1.6-3.58 3.58-3.58 3.58 1.6 3.58 3.58" class="c"/><path d="M12 20.27c3.53 0 6.82-2.08 9.11-5.68.9-1.41.9-3.78 0-5.19-2.29-3.6-5.58-5.68-9.11-5.68S5.18 5.8 2.89 9.4c-.9 1.41-.9 3.78 0 5.19 2.29 3.6 5.58 5.68 9.11 5.68"/>
|
|
20
|
+
</symbol>
|
|
21
|
+
<symbol id="icon-progress-m3e" viewBox="0 0 56 56" fill="currentColor">
|
|
22
|
+
<path class="fill-primary-container" d="M 28.00 8.00 L 28.35 7.79 L 28.71 7.60 L 29.08 7.42 L 29.45 7.26 L 29.83 7.12 L 30.21 7.00 L 30.59 6.91 L 30.97 6.86 L 31.35 6.84 L 31.73 6.85 L 32.10 6.90 L 32.47 6.98 L 32.83 7.09 L 33.17 7.24 L 33.51 7.43 L 33.84 7.64 L 34.15 7.88 L 34.45 8.14 L 34.74 8.42 L 35.02 8.72 L 35.28 9.04 L 35.53 9.36 L 35.77 9.69 L 36.01 10.01 L 36.24 10.34 L 36.46 10.66 L 36.68 10.97 L 36.90 11.26 L 37.12 11.54 L 37.35 11.80 L 37.58 12.05 L 37.83 12.27 L 38.08 12.48 L 38.35 12.66 L 38.62 12.83 L 38.92 12.97 L 39.22 13.10 L 39.55 13.22 L 39.88 13.32 L 40.24 13.42 L 40.60 13.51 L 40.97 13.59 L 41.36 13.68 L 41.75 13.76 L 42.14 13.86 L 42.54 13.96 L 42.93 14.08 L 43.32 14.21 L 43.69 14.36 L 44.06 14.52 L 44.41 14.71 L 44.74 14.92 L 45.05 15.15 L 45.33 15.41 L 45.59 15.68 L 45.82 15.98 L 46.02 16.29 L 46.20 16.63 L 46.34 16.98 L 46.45 17.35 L 46.53 17.73 L 46.58 18.12 L 46.61 18.52 L 46.61 18.92 L 46.59 19.33 L 46.56 19.74 L 46.51 20.14 L 46.45 20.55 L 46.38 20.94 L 46.31 21.34 L 46.24 21.72 L 46.18 22.09 L 46.13 22.46 L 46.09 22.81 L 46.06 23.16 L 46.06 23.50 L 46.07 23.83 L 46.10 24.15 L 46.16 24.47 L 46.24 24.78 L 46.34 25.09 L 46.47 25.40 L 46.62 25.71 L 46.78 26.03 L 46.96 26.34 L 47.16 26.66 L 47.36 26.99 L 47.57 27.32 L 47.79 27.65 L 48.00 28.00 L 48.21 28.35 L 48.40 28.71 L 48.58 29.08 L 48.74 29.45 L 48.88 29.83 L 49.00 30.21 L 49.09 30.59 L 49.14 30.97 L 49.16 31.35 L 49.15 31.73 L 49.10 32.10 L 49.02 32.47 L 48.91 32.83 L 48.76 33.17 L 48.57 33.51 L 48.36 33.84 L 48.12 34.15 L 47.86 34.45 L 47.58 34.74 L 47.28 35.02 L 46.96 35.28 L 46.64 35.53 L 46.31 35.77 L 45.99 36.01 L 45.66 36.24 L 45.34 36.46 L 45.03 36.68 L 44.74 36.90 L 44.46 37.12 L 44.20 37.35 L 43.95 37.58 L 43.73 37.83 L 43.52 38.08 L 43.34 38.35 L 43.17 38.62 L 43.03 38.92 L 42.90 39.22 L 42.78 39.55 L 42.68 39.88 L 42.58 40.24 L 42.49 40.60 L 42.41 40.97 L 42.32 41.36 L 42.24 41.75 L 42.14 42.14 L 42.04 42.54 L 41.92 42.93 L 41.79 43.32 L 41.64 43.69 L 41.48 44.06 L 41.29 44.41 L 41.08 44.74 L 40.85 45.05 L 40.59 45.33 L 40.32 45.59 L 40.02 45.82 L 39.71 46.02 L 39.37 46.20 L 39.02 46.34 L 38.65 46.45 L 38.27 46.53 L 37.88 46.58 L 37.48 46.61 L 37.08 46.61 L 36.67 46.59 L 36.26 46.56 L 35.86 46.51 L 35.45 46.45 L 35.06 46.38 L 34.66 46.31 L 34.28 46.24 L 33.91 46.18 L 33.54 46.13 L 33.19 46.09 L 32.84 46.06 L 32.50 46.06 L 32.17 46.07 L 31.85 46.10 L 31.53 46.16 L 31.22 46.24 L 30.91 46.34 L 30.60 46.47 L 30.29 46.62 L 29.97 46.78 L 29.66 46.96 L 29.34 47.16 L 29.01 47.36 L 28.68 47.57 L 28.35 47.79 L 28.00 48.00 L 27.65 48.21 L 27.29 48.40 L 26.92 48.58 L 26.55 48.74 L 26.17 48.88 L 25.79 49.00 L 25.41 49.09 L 25.03 49.14 L 24.65 49.16 L 24.27 49.15 L 23.90 49.10 L 23.53 49.02 L 23.17 48.91 L 22.83 48.76 L 22.49 48.57 L 22.16 48.36 L 21.85 48.12 L 21.55 47.86 L 21.26 47.58 L 20.98 47.28 L 20.72 46.96 L 20.47 46.64 L 20.23 46.31 L 19.99 45.99 L 19.76 45.66 L 19.54 45.34 L 19.32 45.03 L 19.10 44.74 L 18.88 44.46 L 18.65 44.20 L 18.42 43.95 L 18.17 43.73 L 17.92 43.52 L 17.65 43.34 L 17.38 43.17 L 17.08 43.03 L 16.78 42.90 L 16.45 42.78 L 16.12 42.68 L 15.76 42.58 L 15.40 42.49 L 15.03 42.41 L 14.64 42.32 L 14.25 42.24 L 13.86 42.14 L 13.46 42.04 L 13.07 41.92 L 12.68 41.79 L 12.31 41.64 L 11.94 41.48 L 11.59 41.29 L 11.26 41.08 L 10.95 40.85 L 10.67 40.59 L 10.41 40.32 L 10.18 40.02 L 9.98 39.71 L 9.80 39.37 L 9.66 39.02 L 9.55 38.65 L 9.47 38.27 L 9.42 37.88 L 9.39 37.48 L 9.39 37.08 L 9.41 36.67 L 9.44 36.26 L 9.49 35.86 L 9.55 35.45 L 9.62 35.06 L 9.69 34.66 L 9.76 34.28 L 9.82 33.91 L 9.87 33.54 L 9.91 33.19 L 9.94 32.84 L 9.94 32.50 L 9.93 32.17 L 9.90 31.85 L 9.84 31.53 L 9.76 31.22 L 9.66 30.91 L 9.53 30.60 L 9.38 30.29 L 9.22 29.97 L 9.04 29.66 L 8.84 29.34 L 8.64 29.01 L 8.43 28.68 L 8.21 28.35 L 8.00 28.00 L 7.79 27.65 L 7.60 27.29 L 7.42 26.92 L 7.26 26.55 L 7.12 26.17 L 7.00 25.79 L 6.91 25.41 L 6.86 25.03 L 6.84 24.65 L 6.85 24.27 L 6.90 23.90 L 6.98 23.53 L 7.09 23.17 L 7.24 22.83 L 7.43 22.49 L 7.64 22.16 L 7.88 21.85 L 8.14 21.55 L 8.42 21.26 L 8.72 20.98 L 9.04 20.72 L 9.36 20.47 L 9.69 20.23 L 10.01 19.99 L 10.34 19.76 L 10.66 19.54 L 10.97 19.32 L 11.26 19.10 L 11.54 18.88 L 11.80 18.65 L 12.05 18.42 L 12.27 18.17 L 12.48 17.92 L 12.66 17.65 L 12.83 17.38 L 12.97 17.08 L 13.10 16.78 L 13.22 16.45 L 13.32 16.12 L 13.42 15.76 L 13.51 15.40 L 13.59 15.03 L 13.68 14.64 L 13.76 14.25 L 13.86 13.86 L 13.96 13.46 L 14.08 13.07 L 14.21 12.68 L 14.36 12.31 L 14.52 11.94 L 14.71 11.59 L 14.92 11.26 L 15.15 10.95 L 15.41 10.67 L 15.68 10.41 L 15.98 10.18 L 16.29 9.98 L 16.63 9.80 L 16.98 9.66 L 17.35 9.55 L 17.73 9.47 L 18.12 9.42 L 18.52 9.39 L 18.92 9.39 L 19.33 9.41 L 19.74 9.44 L 20.14 9.49 L 20.55 9.55 L 20.94 9.62 L 21.34 9.69 L 21.72 9.76 L 22.09 9.82 L 22.46 9.87 L 22.81 9.91 L 23.16 9.94 L 23.50 9.94 L 23.83 9.93 L 24.15 9.90 L 24.47 9.84 L 24.78 9.76 L 25.09 9.66 L 25.40 9.53 L 25.71 9.38 L 26.03 9.22 L 26.34 9.04 L 26.66 8.84 L 26.99 8.64 L 27.32 8.43 L 27.65 8.21 L 28.00 8.00 Z" pathLength="100" stroke="currentColor" stroke-dasharray="100" stroke-width="3" style="stroke-dashoffset: var(--scroll-progress, 100); transition: stroke-dashoffset 150ms ease-in-out;"></path>
|
|
23
|
+
</symbol>
|
|
24
|
+
<symbol id="icon-quote" viewBox="0 0 448 512" fill="currentColor">
|
|
25
|
+
<path d="M0 216C0 149.7 53.7 96 120 96h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-30.9 0-56 25.1-56 56v8h64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64zm256 0c0-66.3 53.7-120 120-120h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-30.9 0-56 25.1-56 56v8h64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64h-64c-35.3 0-64-28.7-64-64z"/>
|
|
26
|
+
</symbol>
|
|
27
|
+
<symbol id="icon-share" viewBox="0 -960 960 960" fill="currentColor">
|
|
28
|
+
<path d="M686-80q-47.5 0-80.75-33.25T572-194q0-8 5-34L278-403q-16.28 17.34-37.64 27.17T194-366q-47.5 0-80.75-33T80-480t33.25-81T194-594q24 0 45 9.3 21 9.29 37 25.7l301-173q-2-8-3.5-16.5T572-766q0-47.5 33.25-80.75T686-880t80.75 33.25T800-766t-33.25 80.75T686-652q-23.27 0-43.64-9Q622-670 606-685L302-516q3 8 4.5 17.5t1.5 18-1 16-3 15.5l303 173q16-15 36.09-23.5 20.1-8.5 43.07-8.5Q734-308 767-274.75T800-194t-33.25 80.75T686-80"/>
|
|
29
|
+
</symbol>
|
|
30
|
+
<symbol id="icon-verified" viewBox="0 -960 960 960" fill="currentColor">
|
|
31
|
+
<path d="m437-433-73-76q-9-10-22-10t-23 9q-10 10-10 23t10 23l97 96q9 9 21 9t21-9l183-182q9-9 9-22t-10-22q-9-8-21.5-7.5T598-593zM332-84l-62-106-124-25q-11-2-18.5-12t-5.5-21l14-120-79-92q-8-8-8-20t8-20l79-91-14-120q-2-11 5.5-21t18.5-12l124-25 62-107q6-10 17-14t22 1l109 51 109-51q11-5 22-1.5t17 13.5l63 108 123 25q11 2 18.5 12t5.5 21l-14 120 79 91q8 8 8 20t-8 20l-79 92 14 120q2 11-5.5 21T814-215l-123 25-63 107q-6 10-17 13.5T589-71l-109-51-109 51q-11 5-22 1t-17-14"/>
|
|
32
|
+
</symbol>
|
|
33
|
+
<symbol id="icon-youtube" viewBox="0 0 16 16" fill="currentColor">
|
|
34
|
+
<path d="M8.051 1.999h.089c.822.003 4.987.033 6.11.335a2.01 2.01 0 0 1 1.415 1.42c.101.38.172.883.22 1.402l.01.104.022.26.008.104c.065.914.073 1.77.074 1.957v.075c-.001.194-.01 1.108-.082 2.06l-.008.105-.009.104c-.05.572-.124 1.14-.235 1.558a2.007 2.007 0 0 1-1.415 1.42c-1.16.312-5.569.334-6.18.335h-.142c-.309 0-1.587-.006-2.927-.052l-.17-.006-.087-.004-.171-.007-.171-.007c-1.11-.049-2.167-.128-2.654-.26a2.007 2.007 0 0 1-1.415-1.419c-.111-.417-.185-.986-.235-1.558L.09 9.82l-.008-.104A31.4 31.4 0 0 1 0 7.68v-.123c.002-.215.01-.958.064-1.778l.007-.103.003-.052.008-.104.022-.26.01-.104c.048-.519.119-1.023.22-1.402a2.007 2.007 0 0 1 1.415-1.42c.487-.13 1.544-.21 2.654-.26l.17-.007.172-.006.086-.003.171-.007A99.788 99.788 0 0 1 7.858 2h.193zM6.4 5.209v4.818l4.157-2.408L6.4 5.209z"/>
|
|
35
|
+
</symbol>
|
|
36
|
+
</svg>`;function rt(){typeof document<"u"&&!document.getElementById("mblox-svg-sprite")&&document.body.insertAdjacentHTML("afterbegin",At)}x();function ot(e,t){if(!e||e.length===0)return"";let o=R[t.columnCount]||R[6];return`<div class="${t.layout.gap} grid ${o}">${e.join("")}</div>`}x();function at(e,t){if(!e||e.length===0)return"";let o=pe[t.columnCount]||pe[6],a={1:"grid-rows-1",2:"grid-rows-2",3:"grid-rows-3",4:"grid-rows-4"}[t.blockRows]||"grid-rows-1",s=t.blockType==="v"?"":" pb-8";return`<div class="grid grid-flow-col ${a} ${o} overflow-x-auto snap-x snap-mandatory scroll-smooth gap-4 py-4 -my-4 ${s} [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]">${e.join("")}</div>`}x();function lt(e,t){if(!e||e.length===0)return"";let o={2:"@md:col-span-1",3:"@md:col-span-2",4:"@sm:col-span-1 @md:col-span-2 @lg:col-span-3",5:"@sm:col-span-2 @md:col-span-3 @xl:col-span-4",6:"@sm:col-span-3 @lg:col-span-4 @xl:col-span-5"},r=t.columnCount,a=R[r]||R[6],s="";if(e.length>1){t.showHeader&&r--;let l=R[r]||R[6],n=o[t.columnCount]||"col-span-1";s=`<div class="${t.layout.gap} ${n} px-0 grid ${l}">${e.slice(1).join("")}</div>`}return`<div class="${t.layout.gap} col flex-grow-1 grid ${a}">${e[0]}${s}</div>`}function st(e){return e.mBlockTitle?`<h4 class="text-headline-lg font-bold ${e.palette.text} m-0">${e.mBlockTitle}</h4>`:""}function nt(e){return e.mBlockDescription?`<p class="pb-3 ${e.palette.text} opacity-75 m-0">${e.mBlockDescription}</p>`:""}function it(e){return e.mBlockTitle?`<div class="p-8 @lg:px-12">${st(e)}${nt(e)}</div>`:""}x();function ct(e,t){if(e.moreText===""&&e.blockType==="v")return"";let o="";return e.moreText!==""&&t.feedUrl&&(o=`<a class="inline-block border-0 font-bold no-underline transition-opacity duration-300 opacity-75 hover:opacity-100 ${e.palette.text}" href="${e.siteURL}search?max-results=9" title="View all">
|
|
37
|
+
${e.moreText} <svg class="inline-block align-text-bottom" fill="currentColor" height="1.2em" viewBox="0 0 16 16" width="1.2em" xmlns="http://www.w3.org/2000/svg"><use href="#icon-caret-right"></use></svg></a>`),`<div class="st${e.stageID} mblox-footer w-full p-8 @lg:px-12 text-right">${o}</div>`}function dt(e,t){let o=t.blockType==="v"?"":" px-8 @lg:px-12";return`<div id="carousel-${t.mBlockID}-st${t.stageID}" class="${t.blockType==="s"?"sFeature ":""}relative${o}">${e}</div>`}function ut(e,t,o){if(!t.isCarousel)return"";let r=e?e instanceof HTMLElement?e.outerHTML:e:"",a=o&&o.posts?o.posts.length:0,s=Math.ceil(a/(t.blockRows||1)),l="";if(s>1){let n=t.blockType==="v"?"bottom-12":"bottom-3",i=Array.from({length:s},(c,d)=>`<button type="button" class="carousel-dot pointer-events-auto w-2 h-2 rounded-full bg-current ${t.palette.text} opacity-30 hover:opacity-100 transition-opacity aria-[current='true']:opacity-100" data-index="${d}" aria-label="Slide ${d+1}"></button>`).join("");l=`<div class="carousel-indicators flex justify-center gap-2 mt-2 absolute ${n} left-0 right-0 z-10">${i}</div>`}return`${r}${l}`}function mt(e,t){if(!t.isCarousel)return;let o=e.querySelector(".overflow-x-auto"),r=e.querySelector(".js-carousel-prev"),a=e.querySelector(".js-carousel-next");if(!o)return;r&&r.addEventListener("click",()=>{o.scrollBy({left:-o.clientWidth,behavior:"smooth"})}),a&&a.addEventListener("click",()=>{o.scrollBy({left:o.clientWidth,behavior:"smooth"})});let s=e.querySelectorAll(".carousel-dot");if(s.length>0&&o){s[0]&&s[0].setAttribute("aria-current","true");let c=()=>{let d=o.scrollLeft,m=o.scrollWidth/s.length,p=Math.min(s.length-1,Math.round(d/m));s.forEach((u,h)=>{h===p?u.setAttribute("aria-current","true"):u.removeAttribute("aria-current")})};o.addEventListener("scroll",c,{passive:!0}),s.forEach(d=>{d.addEventListener("click",()=>{let m=parseInt(d.getAttribute("data-index"),10),p=o.scrollWidth/s.length;o.scrollTo({left:m*p,behavior:"smooth"})})})}let l,n=()=>{l=setInterval(()=>{o.scrollLeft+o.clientWidth>=o.scrollWidth-5?o.scrollTo({left:0,behavior:"smooth"}):o.scrollBy({left:o.clientWidth,behavior:"smooth"})},4e3)},i=()=>{l&&clearInterval(l)};n(),e.addEventListener("mouseenter",i),e.addEventListener("mouseleave",n)}x();function pt(e,t){let r=`absolute top-0 ${e.isCarousel&&e.blockType!=="v"?"bottom-8":"bottom-0"} z-10 flex items-center justify-center w-8 cursor-pointer opacity-70 hover:opacity-100 transition-opacity ${e.palette.text} hover:backdrop-blur-xl`,a=e.isCarousel,s=a?"js-carousel-prev":"nav-prev",l=a?"js-carousel-next":"nav-next",n=`<button class="${r} left-0 ${s}" type="button" title="Previous" aria-label="Previous">
|
|
38
|
+
<svg width="1.5em" height="1.5em" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><use href="#icon-caret-left"></use></svg>
|
|
39
|
+
</button>`,i=`<button class="${r} right-0 ${l}" title="Next" type="button" aria-label="Next">
|
|
40
|
+
<svg width="1.5em" height="1.5em" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><use href="#icon-caret-right"></use></svg>
|
|
41
|
+
</button>`;if(a)return`${n}${i}`;let c=t?Math.ceil(t.totalResults/e.postsPerBlock):1;return[e.stageID>1?n:"",e.stageID<c?i:""].join("")}x();function D(e,t=160){if(!e)return;e.classList.remove("d-none","hidden"),e.style.display="";let o=e.animate([{opacity:0},{opacity:1}],{duration:t,easing:"ease-out",fill:"forwards"});o.onfinish=()=>{e.style.opacity="1"}}function U(e,t=160){if(!e)return;let o=e.animate([{opacity:1},{opacity:0}],{duration:t,easing:"ease-in",fill:"forwards"});o.onfinish=()=>{e.style.opacity="0",e.style.display="none"}}function Be(e){if(e.videoId)return e.videoId;if(e.thumbnailUrl&&(e.thumbnailUrl.includes("ytimg.com/vi/")||e.thumbnailUrl.includes("youtube.com/vi/"))){let t=e.thumbnailUrl.match(/\/vi\/([a-zA-Z0-9_-]{11})/);if(t&&t[1])return t[1]}if(e.content){let t=e.content.match(/(?:youtube\.com\/embed\/|youtu\.be\/|youtube\.com\/v\/)([a-zA-Z0-9_-]{11})/);if(t&&t[1])return t[1]}return"noVideo"}function xe(e){return!e||e==="noVideo"?"":'<svg class="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-12 h-12 text-on-error drop-shadow-md z-10 pointer-events-none" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 16 16"><use href="#icon-youtube"></use></svg>'}function ht(e){return!e||e==="noVideo"?"":'<svg class="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-16 h-16 text-on-error drop-shadow-lg z-10 pointer-events-none" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 16 16"><use href="#icon-youtube"></use></svg>'}function _e(e,t){return!e||e==="noVideo"?"":`<iframe class="w-full h-full" src="${`https://www.youtube-nocookie.com/embed/${e}?autoplay=1`}" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture;" width="100%" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" style="${t.articleHeight}"></iframe>`}var Oe={};k(Oe,{render:()=>kt});x();function ft(e,t){if(!t.showOverlay)return"";let o="";t.overlayItems.includes("v")&&e.viewCount&&e.viewCount>0&&(o=`
|
|
42
|
+
<div class="flex items-center gap-1 px-2 h-6 rounded-md ${t.palette.glass} ${t.palette.text} backdrop-blur-md ${t.palette.hoverBg||"hover:bg-tertiary"} ${t.palette.hoverText||"hover:text-on-tertiary"} transition-colors font-semibold">
|
|
43
|
+
<svg aria-hidden="true" class="w-4 h-4"><use href="#icon-eye"></use></svg>
|
|
44
|
+
<span class="text-[0.625rem]">${e.viewCount}</span>
|
|
45
|
+
</div>`);let r="";if(t.overlayItems.includes("c")){let n=e.commentsUrl||e.url,i=e.commentCount&&e.commentCount>0?`<span class="text-[0.625rem]">${e.commentCount}</span>`:"";r=`
|
|
46
|
+
<a aria-label="Comments" class="relative px-2 h-6 rounded-md ${t.palette.glass} ${t.palette.text} backdrop-blur-md flex items-center justify-center gap-1 ${t.palette.hoverBg||"hover:bg-tertiary"} ${t.palette.hoverText||"hover:text-on-tertiary"} transition-colors font-semibold pointer-events-auto" href="${n}">
|
|
47
|
+
<svg aria-hidden="true" class="w-4 h-4"><use href="#icon-comment-bubble"></use></svg>
|
|
48
|
+
${i}
|
|
49
|
+
</a>`}let a="";t.overlayItems.includes("b")&&(a=`
|
|
50
|
+
<button aria-label="Save" class="group bm-button relative h-6 rounded-md ${t.palette.glass} ${t.palette.text} backdrop-blur-md flex items-center justify-center ${t.palette.hoverBg||"hover:bg-tertiary"} ${t.palette.hoverText||"hover:text-on-tertiary"} transition-all duration-300 ease-in-out pointer-events-auto" data-bm-title="${e.title.replace(/"/g,""")}" data-bm-url="${e.url}" data-bm-image="${e.thumbnailUrl||""}" type="button">
|
|
51
|
+
<span class="bm-text overflow-hidden whitespace-nowrap text-[11px] font-medium transition-all duration-300 max-w-0 opacity-0 group-hover:max-w-[60px] group-hover:opacity-100 group-hover:pl-2.5">Save</span>
|
|
52
|
+
<div class="w-6 h-6 flex items-center justify-center shrink-0">
|
|
53
|
+
<svg aria-hidden="true" class="w-4 h-4 bm-add-icon group-[.added]:hidden"><use href="#icon-bookmark-add"></use></svg>
|
|
54
|
+
<svg aria-hidden="true" class="w-4 h-4 bm-added-icon hidden group-[.added]:block"><use href="#icon-bookmark-added"></use></svg>
|
|
55
|
+
</div>
|
|
56
|
+
</button>`);let s="";if(t.overlayItems.includes("a")&&e.authorName&&e.authorName!=="Unknown"&&e.authorName!=="Anonymous"){let n='<svg aria-hidden="true" class="w-4 h-4 text-primary"><use href="#icon-verified"></use></svg>',i="";e.authorImage&&!e.authorImage.includes("blogblog.com")&&(i=`<img src="${e.authorImage.startsWith("//")?`https:${e.authorImage}`:e.authorImage}" alt="${e.authorName}" class="w-4 h-4 rounded-full object-cover">`);let c=`
|
|
57
|
+
${i}
|
|
58
|
+
<span>${e.authorName}</span>${n}
|
|
59
|
+
`;e.authorUri?s=`
|
|
60
|
+
<a href="${e.authorUri}" class="flex items-center gap-1 px-2 h-6 rounded-md ${t.palette.glass} ${t.palette.text} backdrop-blur-md ${t.palette.hoverBg||"hover:bg-tertiary"} ${t.palette.hoverText||"hover:text-on-tertiary"} text-[0.625rem] font-semibold transition-colors pointer-events-auto">
|
|
61
|
+
${c}
|
|
62
|
+
</a>`:s=`
|
|
63
|
+
<div class="flex items-center gap-1 px-2 h-6 rounded-md ${t.palette.glass} ${t.palette.text} backdrop-blur-md ${t.palette.hoverBg||"hover:bg-tertiary"} ${t.palette.hoverText||"hover:text-on-tertiary"} text-[0.625rem] font-semibold transition-colors pointer-events-auto">
|
|
64
|
+
${c}
|
|
65
|
+
</div>`}let l="";return t.overlayItems.includes("s")&&(l=`
|
|
66
|
+
<button aria-label="Share" class="w-6 h-6 rounded-md ${t.palette.glass} ${t.palette.text} backdrop-blur-md flex items-center justify-center ${t.palette.hoverBg||"hover:bg-tertiary"} ${t.palette.hoverText||"hover:text-on-tertiary"} transition-colors pointer-events-auto" data-action="share-native" data-title="${e.title.replace(/"/g,""")}" data-url="${e.url}">
|
|
67
|
+
<svg aria-hidden="true" class="w-4 h-4"><use href="#icon-share"></use></svg>
|
|
68
|
+
</button>`),`
|
|
69
|
+
<div class="absolute top-0 left-0 right-0 p-3 flex items-start justify-between pointer-events-none z-20">
|
|
70
|
+
<div class="flex items-center gap-2 pointer-events-auto">
|
|
71
|
+
${o}
|
|
72
|
+
</div>
|
|
73
|
+
<div class="flex items-center gap-2 pointer-events-auto">
|
|
74
|
+
${r}
|
|
75
|
+
${a}
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
<div class="absolute bottom-0 left-0 right-0 p-3 flex items-end justify-between pointer-events-none z-20">
|
|
79
|
+
<div class="flex items-center gap-2 pointer-events-auto">
|
|
80
|
+
${s}
|
|
81
|
+
</div>
|
|
82
|
+
<div class="flex items-center gap-2 pointer-events-auto">
|
|
83
|
+
${l}
|
|
84
|
+
</div>
|
|
85
|
+
</div>`}function H(e,t,o,r){if(!o.showImage)return{imageCode:"",showcaseImageCode:"",videoThumbnailURL:"",highResImageURL:""};let{postSnippet:a,videoID:s,postTitle:l,thumbnailUrl:n,authorImage:i,post:c}=r,d=n||"",m=d||o.imageURL||_;if(!m)if(o.contentType=="comments")i&&!i.includes("blogblog.com")?m=i:m=_;else{let M=new DOMParser().parseFromString(a||"","text/html").querySelector("img");m=M?M.getAttribute("src"):_}d||(d=m);let p=m;s&&s!=="noVideo"?p=`https://i.ytimg.com/vi/${s}/maxresdefault.jpg`:o.isBloggerFeed&&(p=p.replace(/\/s\d+(-[a-z]\d+)*(-c)?/,"/s1600"));let h={s:{bs:[o.aspectRatio.trim()],figure:"w-full h-full flex"},p:{bs:[o.aspectRatio.trim()],figure:"w-full h-full flex"},m:{style:"object-fit:cover !important;height:3rem!important;width:3rem!important;",bs:["rounded-full","m-2"],figure:"shrink-0 flex items-center justify-center"},q:{style:"object-fit:cover !important;height:6rem!important;width:6rem;",bs:["rounded-full","mx-auto","mt-6"],figure:"w-full h-full flex"},t:{bs:["h-full","object-cover"],figure:"w-1/3 shrink-0 h-full flex items-center justify-center"},v:{bs:["w-full","h-full","object-cover"],figure:"w-full h-full flex"},l:{bs:[o.aspectRatio.trim()],figure:"w-full h-full flex"},c:{bs:[o.aspectRatio.trim()],figure:"w-full h-full flex"},g:{bs:[o.aspectRatio.trim()],figure:"w-full h-full flex"}}[e]||{bs:[],figure:"w-full h-full flex"},g=h.style||"object-fit:cover !important;height:100% !important;",b=h.bs.length>0?[...h.bs]:["w-full","h-auto"];e!=="m"&&e!=="q"&&e!=="t"&&e!=="v"&&b.unshift("w-full","h-auto");let $=h.figure,w="",j="";if(e==="s"){w=`data-toggle="tooltip" data-vidid="${s}"`;let W=ht(s),M=o.cornerStyle===" rounded"?" rounded-t-3xl":o.cornerStyle;t===0&&(j=`<figure class="m-0 ${b.join(" ")} ${o.aspectRatio} ${M} m-blox-image-to-load relative cursor-pointer" data-img-high="${p}" data-is-fixed="true" style="${o.articleHeight}" role="img" loading="lazy" title="${l}" aria-label="${l} image" ${w}>${W}</figure>`)}o.blurImage&&o.contentType!=="comments"&&b.push("blur-sm");let re="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",V=o.blockType==="s"||o.blockType==="l"?t===0&&o.isImageFixed:o.isImageFixed,P=o.isBloggerFeed?" m-blox-image-to-load":"",z=o.isBloggerFeed?re:m,F=xe(s),oe=`w-full ${b.join(" ")} ${P}`.replace(/\s+/g," "),ae=`m-0 relative ${$} ${b.join(" ")} ${P}`.replace(/\s+/g," "),le=c?ft(c,o):"";return{imageCode:V?`<figure class="${ae} group" data-img-high="${p}" data-is-fixed="true" style="${o.articleHeight}" role="img" loading="lazy" aria-label="${l} image"${w}>${le}${F}</figure>`:`<figure class="m-0 relative ${$} group"><img class="${oe}" style="${g}" src="${z}" data-img-high="${p}" alt="${l} image" loading="lazy" title="${l}" ${w}/>${le}${F}</figure>`,showcaseImageCode:j,videoThumbnailURL:d,highResImageURL:p}}x();function Q(e,t,o,r){if(!t.callToAction||e==="g")return"";let a=t.ctaAlign||"right",s="";e==="t"||e==="c"||e==="m"||e==="p"||e==="q"?a==="left"?s="mt-auto self-start":a==="center"?s="mt-auto self-center":s="mt-auto self-end":e==="v"?a==="left"?s="mx-0 md:mx-10 mt-8 self-start":a==="center"?s="mx-0 md:mx-10 mt-8 self-center":s="mx-0 md:mx-10 mt-8 self-end":(e==="s"||e==="l")&&(s="");let l=t.cornerStyle===" rounded-none",i=`js-cta-link inline-block text-label-lg font-bold no-underline px-4 py-2 hover:opacity-100 transition-opacity opacity-75 ${`${t.palette.bg} ${t.palette.text} ${t.palette.hoverBg} ${t.palette.hoverText}`} ${l?"rounded-none":"rounded-full"}`;return`<a href="${r}" class="${i} ${s} after:absolute after:inset-0 z-10" aria-label="View ${o.replace(/"/g,""")}">${t.callToAction}</a>`}x();var xt={q:e=>`<figcaption class="text-label-md">- ${e}</figcaption>`,m:(e,t,o)=>`<span class="text-label-md ${o.containerText}" rel="author">${e}</span>`};function be(e,t,o,r){if(!t.showAuthor)return"";let a=o==="Anonymous"||o==="Unknown"||!r?"":r;return xt[e]?xt[e](o,a,t.palette):a?`<span class="text-label-md hover:underline z-20 relative cursor-pointer" rel="author" data-href="${a}">${o}</span>`:`<span class="text-label-md" rel="author">${o}</span>`}x();function J(e,t,o,r){if(!t.showDate)return"";let a=new Date(o),s=t.dateFormatter.format(a);if(e==="m")return`<span class="text-label-md font-light">${t.showAuthor?" • ":""} ${s}</span>`;let l=!1;if(r&&new Date(r).getTime()-a.getTime()>1440*60*1e3&&(l=!0),l){let n=t.palette.bg||"bg-surface-variant",i=t.palette.text||"text-on-surface-variant";return`<div class="flex items-center gap-2"><span class="${n} ${i} px-2 py-0.5 rounded-sm text-label-sm font-bold uppercase tracking-wider">Updated</span><span class="text-label-md font-light">${s}</span></div>`}else return`<span class="text-label-md font-light">Published ${s}</span>`}x();var It={q:(e,t,o,r)=>`<svg class="float-left ${r.containerText}" xmlns="http://www.w3.org/2000/svg" width="30" height="30" fill="currentColor" viewBox="0 0 16 16"><use href="#icon-quote"></use></svg><blockquote class="${r.containerText} text-left mt-2 ml-6 text-headline-sm italic">${o?e:`<a href="${t}" class="after:absolute after:inset-0 z-10" aria-label="Read more about ${e.replace(/"/g,""")}">${e}</a>`}</blockquote>`,v:(e,t,o)=>`<h3 class="line-clamp-2 text-display-sm font-bold mx-0 md:mx-10 opacity-75">${o?e:`<a href="${t}" class="after:absolute after:inset-0 z-10" aria-label="Read more about ${e.replace(/"/g,""")}">${e}</a>`}</h3>`,m:(e,t,o)=>`<span class="line-clamp-2 block my-2 text-title-md">"${o?e:`<a href="${t}" class="after:absolute after:inset-0 z-10" aria-label="Read more about ${e.replace(/"/g,""")}">${e}</a>`}"</span>`};function Z(e,t,o,r){if(!t.showHeader)return"";let a=!!t.callToAction;return(It[e]||((l,n,i)=>`<h5 class="line-clamp-2 text-title-lg font-bold mb-2">${i?l:`<a href="${n}" class="after:absolute after:inset-0 z-10" aria-label="Read more about ${l.replace(/"/g,""")}">${l}</a>`}</h5>`))(o,r,a,t.palette)}x();function X(e,t,o,r){if(!t.showSnippet||!o)return"";let s=new DOMParser().parseFromString(o,"text/html").body.textContent||"";return s.length>t.snippetSize&&(s=s.substring(0,t.snippetSize)+"..."),!t.showHeader&&!t.showImage&&!t.callToAction&&!t.showLabels&&!t.showDate?`<a href="${r}" class="after:absolute after:inset-0 z-10 block line-clamp-3 list-none text-body-md font-normal opacity-75 ${e==="v"?"py-6 mx-0 md:mx-10":""}" aria-label="Read more">${s}</a>`:`<div class="line-clamp-3 list-none text-body-md font-normal opacity-75 ${e==="v"?"py-6 block mx-0 md:mx-10":""}">${s}</div>`}function ee(e,t,o){if(!e.showLabels||!t||t.length===0)return"";let r=[...t].sort(()=>.5-Math.random()).slice(0,2),a="/search/label/";if(o&&o!=="/")try{let l=new URL(o),n=o.toLowerCase();n.includes("youtube.com")?a="https://www.youtube.com/hashtag/":n.includes("/wp-json")?a=`${l.origin}/search/`:n.includes("tumblr.com")?a=`${l.origin}/tagged/`:n.includes("mastodon.social")?a=`${l.origin}/tags/`:n.includes("bsky.app")?a="https://bsky.app/search?q=":n.includes("deviantart.com")?a="https://www.deviantart.com/tag/":n.includes("reddit.com")?a="https://www.reddit.com/search/?q=":a=`${l.origin}/search/label/`}catch{a="/search/label/"}return`
|
|
86
|
+
<div class="flex items-center gap-2 mb-3 relative z-50 pointer-events-auto">
|
|
87
|
+
<div class="flex flex-wrap items-center gap-2">
|
|
88
|
+
${r.map(l=>{let n=encodeURIComponent(l),i=l.startsWith("#")?l.replace(/\s+/g,""):`#${l.replace(/\s+/g,"")}`;return`<a aria-label="${l.replace(/"/g,""")}" class="relative z-50 pointer-events-auto inline-flex items-center justify-center rounded-full transition-opacity duration-300 ease-[--ease-m3-emphasized] cursor-pointer ${e.palette.bg} ${e.palette.text} ${e.palette.hoverBg} ${e.palette.hoverText} opacity-75 hover:opacity-100 h-6 px-3 text-label-md no-underline" href="${a}${n}"><span>${i}</span></a>`}).join("")}
|
|
89
|
+
</div>
|
|
90
|
+
</div>`}x();function kt(e,t,o){let r="v",a=be(r,o,e.authorName,e.authorUri),s=J(r,o,e.publishedDate,e.updatedDate),l=Z(r,o,e.title,e.url),n=X(r,o,e.content,e.url),i=Q(r,o,e.title,e.url),c=ee(o,e.labels,o.siteURL),{imageCode:d}=H(r,t,o,{postSnippet:e.content,videoID:e.videoId,postTitle:e.title,thumbnailUrl:e.thumbnailUrl,authorImage:e.authorImage,post:e}),p=!!(a||s||l||n||i||c)?`
|
|
91
|
+
<div class="${o.palette.containerGlass} backdrop-blur-xl ${o.palette.containerText} p-2 @xs:p-4 @sm:p-8 @md:p-12 absolute z-10 flex flex-col justify-center items-center ${{top:`w-3/4 left-1/2 -translate-x-1/2 top-8 ${o.cornerStyle===" rounded-none"||o.textVerticalAlign==="overlay"?" rounded-none":" rounded-3xl"}`,middle:`w-3/4 left-1/2 -translate-x-1/2 top-1/2 -translate-y-1/2 ${o.cornerStyle===" rounded-none"||o.textVerticalAlign==="overlay"?" rounded-none":" rounded-3xl"}`,bottom:`w-3/4 left-1/2 -translate-x-1/2 bottom-8 ${o.cornerStyle===" rounded-none"||o.textVerticalAlign==="overlay"?" rounded-none":" rounded-3xl"}`,overlay:"w-full h-full inset-0 rounded-none"}[o.textVerticalAlign]||`w-3/4 left-1/2 -translate-x-1/2 top-1/2 -translate-y-1/2 ${o.cornerStyle===" rounded-none"||o.textVerticalAlign==="overlay"?" rounded-none":" rounded-3xl"}`}">
|
|
92
|
+
${a}
|
|
93
|
+
<div class="flex flex-wrap items-center justify-center gap-2">${s?`<div class="mb-3">${s}</div>`:""}${c}</div>
|
|
94
|
+
${l}
|
|
95
|
+
${n}
|
|
96
|
+
${i}
|
|
97
|
+
</div>
|
|
98
|
+
`:"",u=["relative","block","w-full","rounded-none","text-"+o.textHAlign,"h-full",o.interactionClasses].filter(Boolean).join(" "),h=o.articleHeight?` style="${o.articleHeight.replace(";","")}"`:"",g="@container col-span-1 inline-flex w-full relative",b=o.showImage?d:"";return!o.showHeader&&!o.callToAction&&(b=`<a href="${e.url}" class="absolute inset-0 z-10" aria-label="View ${e.title.replace(/"/g,""")}"></a>${d}`),`<article class="${g}"${h} role="article"><div class="${u}">${b}${p}</div></article>`}var Re={};k(Re,{render:()=>Bt,renderThumbnail:()=>_t});x();function Bt(e,t,o){let r="s",a=Be(e),s=Z(r,o,e.title,e.url),l=X(r,o,e.content,e.url),n="";e.content&&(n=new DOMParser().parseFromString(e.content,"text/html").body.textContent||"",n.length>o.snippetSize&&(n=n.substring(0,o.snippetSize)+"..."),n=n.replace(/"/g,"""));let i=Q(r,o,e.title,e.url),{imageCode:c,showcaseImageCode:d}=H(r,t,o,{postSnippet:e.content,videoID:a,postTitle:e.title,thumbnailUrl:e.thumbnailUrl,authorImage:e.authorImage,post:e});if(t===0&&o.firstInstance){let $=o.cornerStyle===" rounded-none"?"rounded-none":"rounded-t-3xl",w=o.showImage||o.callToAction!==""?i:"",j="";if(o.showHeader||w||o.showLabels){let N=J(r,o,e.publishedDate,e.updatedDate),V=ee(o,e.labels,o.siteURL),P=N||V?`<div class="flex flex-wrap items-center gap-x-4 gap-y-0 mb-2">${N?`<div class="mb-3 shrink-0">${N}</div>`:""}<div class="shrink-0">${V}</div></div>`:"",z=o.showHeader||o.showLabels?`<div class="flex-grow min-w-0 w-full @md:w-auto text-${o.textHAlign}">${P}${s} ${l}</div>`:"",F=o.ctaAlign==="left"?"justify-start":o.ctaAlign==="center"?"justify-center":"justify-end",oe=o.showHeader?"mt-4 @md:mt-0 @md:ml-6 ":"",ae=o.showHeader?"w-full @md:w-auto":"w-full",le=w?`<div class="flex-shrink-0 ${oe}flex items-center ${F} ${ae}">${w}</div>`:"";j=`<div class="absolute inset-0 flex flex-col justify-end p-0 z-10 pointer-events-none w-full overflow-hidden"><div class="sContent w-full flex flex-col @md:flex-row items-start @md:items-center justify-between p-2 @xs:p-4 @sm:px-12 ${o.showHeader?`${o.palette.containerGlass} backdrop-blur-xl `:""}${o.palette.containerText} pointer-events-auto">${z}${le}</div></div>`}let re=`<a href="${e.url}" class="absolute inset-0 z-30" title="${e.title.replace(/"/g,""")}" aria-label="View ${e.title.replace(/"/g,""")}"></a>`;return`<div class="@container feature-image w-full ${o.aspectRatio.trim()} relative flex flex-col text-${o.textHAlign} overflow-hidden rounded-none mb-4" style="${o.articleHeight.replace(";","")}"><div class="sIframe hidden absolute inset-0 w-full h-full z-10"></div>${re}${d}<div class="${o.palette.text} block absolute inset-0 z-40 pointer-events-none">${j}</div></div>`}let m=a&&a!=="noVideo"?` data-vidid="${a}"`:"",p=t===0&&o.firstInstance?" ring-4 ring-current ring-inset":"",u=`@container col-span-1 inline-flex w-full sPost cursor-pointer relative ${o.interactionClasses}${p}`,h=_;a&&a!=="noVideo"?h=`https://i.ytimg.com/vi/${a}/maxresdefault.jpg`:e.thumbnailUrl&&(h=e.thumbnailUrl.replace(/\/s\d+(-[a-z]\d+)*(-c)?/,"/s1600"));let g=e.title.replace(/"/g,"""),b=`data-title="${g}" data-link="${e.url}" data-summary="${n}"${m} data-img-high="${h}" data-toggle="tooltip"`;return`<article class="${u}" ${b} role="article" title="${g}">${o.showImage?c:""}</article>`}function _t(e,t){let o=Be(e),r=e.thumbnailUrl||_,a=r;o&&o!=="noVideo"&&a.includes("ytimg.com")?a=a.replace(/\/([^\/]+)$/,"/maxresdefault.jpg"):a=a.replace(/\/s\d+(-c)?/,"/s1600").replace(/\/w\d+-h\d+(-c)?/,"/s1600");let s=(e.content||"").replace(/<[^>]*>/g,"").substring(0,t.snippetSize)+"...";(!r||r.includes("no-image.png"))&&(r=_),(!a||a.includes("no-image.png"))&&(a=_);let l=t.isBloggerFeed?" m-blox-image-to-load":"",n=o!=="noVideo"?` data-vidid="${o}"`:"",i=`data-title="${e.title}" data-link="${e.url}" data-summary="${s}"${n} data-toggle="tooltip"`,c=`<img class="w-full h-full object-cover${l}" src="${r}" data-img-high="${a}" alt="${e.title.replace(/"/g,""")} image" loading="lazy" title="${e.title.replace(/"/g,""")}" />`,d=xe(o),m=`<figure class="m-0 w-full ${t.aspectRatio.trim()} overflow-hidden ${t.cornerStyle} relative">${c}${d}</figure>`;return`<article class="col-span-1 inline-flex w-full sPost cursor-pointer relative ${t.interactionClasses}" ${i} title="${e.title.replace(/"/g,""")}" role="article">${m}</article>`}var Ue={};k(Ue,{render:()=>Ot});x();function T(e,t,o,r,a){let s=be(e,r,t.authorName,t.authorUri),l=J(e,r,t.publishedDate,t.updatedDate),n=Z(e,r,t.title,t.url),i=X(e,r,t.content,t.url),c=Q(e,r,t.title,t.url),d=ee(r,t.labels,r.siteURL),{imageCode:m}=H(e,o,r,{postSnippet:t.content,videoID:t.videoId,postTitle:t.title,thumbnailUrl:t.thumbnailUrl,authorImage:t.authorImage,post:t}),u=r.mBloxTheme!=="surface"?` h-full bg-opacity-90 ${r.palette.containerBg} ${r.palette.containerText}`:` ${r.palette.containerText}`,h=!!(s||l||n||i||c||d),g=!!(s||l||n||i||d),b=r.showImage?m:"";!r.showHeader&&!r.callToAction&&r.showImage&&!r.showLabels&&(b=`<a href="${t.url}" class="absolute inset-0 z-10" aria-label="View ${t.title.replace(/"/g,""")}"></a>${m}`);let $=e!=="comment"&&(l||c)?`<div class="flex items-center justify-between mt-auto w-full pt-4">${l}${c}</div>`:c;return a({authorCode:s,dateCode:l,titleCode:n,snippetCode:i,ctaButtonCode:c,ctaRowCode:$,imageCode:m,finalImageCode:b,labelsCode:d,hasText:h,hasTextContent:g},r,u,t,o)}function Ot(e,t,o){return T("l",e,t,o,(r,a)=>{let s="",l=t===0?"p-4 @xs:p-6 @sm:p-8":"p-2 @xs:p-4 @sm:p-6";if(r.hasText){let p=r.ctaRowCode?`<div class="mt-4 w-full">${r.ctaRowCode}</div>`:"";a.showImage?s=`
|
|
99
|
+
<div class="absolute inset-0 flex flex-col p-0 border-0 pointer-events-none ${{top:"justify-start",middle:"justify-center",bottom:"justify-end",overlay:""}[a.textVerticalAlign]||""}">
|
|
100
|
+
<div class="pointer-events-auto ${a.textVerticalAlign==="overlay"||!{top:"justify-start",middle:"justify-center",bottom:"justify-end",overlay:""}[a.textVerticalAlign]?"h-full ":""}${r.hasTextContent?`${a.palette.containerGlass} backdrop-blur-xl `:""}${a.palette.containerText} rounded-none ${l} text-${a.textHAlign}">
|
|
101
|
+
${r.authorCode}
|
|
102
|
+
${r.labelsCode}
|
|
103
|
+
${r.titleCode}
|
|
104
|
+
${r.snippetCode}
|
|
105
|
+
${p}
|
|
106
|
+
</div>
|
|
107
|
+
</div>
|
|
108
|
+
`:s=`
|
|
109
|
+
<div class=" ${l} w-full text-${a.textHAlign}">
|
|
110
|
+
${r.authorCode}
|
|
111
|
+
${r.labelsCode}
|
|
112
|
+
${r.titleCode}
|
|
113
|
+
${r.snippetCode}
|
|
114
|
+
${p}
|
|
115
|
+
</div>
|
|
116
|
+
`}let n=a.showImage?[]:[a.palette.containerBg,a.palette.containerText],c=["relative",a.showImage?"block":"flex flex-col justify-center",a.cornerStyle,a.aspectRatio.trim(),"w-full","h-full",...n,a.interactionClasses].filter(Boolean).join(" "),d=`@container col-span-1 inline-flex w-full h-full relative ${a.layout.mb}`,m=t===0?`<div class="absolute top-0 left-0 z-20 pointer-events-none backdrop-blur-xl ${a.palette.containerGlass} ${a.palette.containerText} px-6 py-3 text-label-lg font-bold w-full">Featured</div>`:"";return`<article class="${d}" role="article"><div class="${c}">${r.finalImageCode}${m}${s}</div></article>`})}var Me={};k(Me,{render:()=>Rt});x();function Rt(e,t,o){return T("c",e,t,o,(r,a)=>{let s=r.hasText?`
|
|
117
|
+
<div class="absolute inset-0 flex flex-col p-0 border-0 pointer-events-none ${{top:"justify-start",middle:"justify-center",bottom:"justify-end",overlay:""}[a.textVerticalAlign]||""}">
|
|
118
|
+
<div class="pointer-events-auto ${a.textVerticalAlign==="overlay"||!{top:"justify-start",middle:"justify-center",bottom:"justify-end",overlay:""}[a.textVerticalAlign]?"h-full ":""}${r.hasTextContent?`${a.palette.containerGlass} backdrop-blur-xl `:""}${a.palette.containerText} rounded-none p-2 @xs:p-4 @sm:p-6 flex flex-col text-${a.textHAlign}">
|
|
119
|
+
${r.authorCode}
|
|
120
|
+
${r.labelsCode}
|
|
121
|
+
${r.titleCode}
|
|
122
|
+
${r.snippetCode}
|
|
123
|
+
${r.ctaRowCode}
|
|
124
|
+
</div>
|
|
125
|
+
</div>
|
|
126
|
+
`:"";return`<article class="@container col-span-1 inline-flex w-full relative" role="article"><div class="${["relative","block","w-full",a.cornerStyle,a.aspectRatio.trim(),"h-full",a.interactionClasses].filter(Boolean).join(" ")}">${r.finalImageCode}${s}</div></article>`})}var qe={};k(qe,{render:()=>Ut});x();function Ut(e,t,o){let r="g",{imageCode:a}=H(r,t,o,{postSnippet:e.content,videoID:e.videoId,postTitle:e.title,thumbnailUrl:e.thumbnailUrl,authorImage:e.authorImage,post:e});return`<article class="@container col-span-1 inline-flex w-full" role="article"><div class="${["block","relative","w-full",o.cornerStyle,o.aspectRatio.trim(),o.interactionClasses].filter(Boolean).join(" ")}"><a href="${e.url}" class="absolute inset-0 z-10" aria-label="View ${e.title.replace(/"/g,""")}"></a>${o.showImage?a:""}</div></article>`}var Ee={};k(Ee,{render:()=>Mt});x();function Mt(e,t,o){return T("p",e,t,o,(r,a)=>{let s=a.mBloxTheme!=="surface"?` h-full bg-opacity-90 ${a.palette.containerBg}`:"",l=r.hasText?`
|
|
127
|
+
<div class="p-2 @xs:p-4 @sm:p-6 flex-grow flex flex-col${s} text-${a.textHAlign}">
|
|
128
|
+
${r.authorCode}
|
|
129
|
+
${r.labelsCode}
|
|
130
|
+
${r.titleCode}
|
|
131
|
+
${r.snippetCode}
|
|
132
|
+
<div class="mt-auto pt-2">${r.ctaRowCode}</div>
|
|
133
|
+
</div>
|
|
134
|
+
`:"";return`<article class="@container col-span-1 inline-flex w-full relative" role="article"><div class="flex flex-col w-full ${a.palette.containerBg} ${a.palette.containerText} h-full ${a.cornerStyle} ${a.interactionClasses}">${r.finalImageCode}${l}</div></article>`})}var De={};k(De,{render:()=>qt});x();function qt(e,t,o){return T("t",e,t,o,(r,a,s)=>{let l=r.hasText?`
|
|
135
|
+
<div class="p-2 @xs:p-4 @sm:p-6 flex-grow flex flex-col${s} text-${a.textHAlign}">
|
|
136
|
+
${r.authorCode}
|
|
137
|
+
${r.labelsCode}
|
|
138
|
+
${r.titleCode}
|
|
139
|
+
${r.snippetCode}
|
|
140
|
+
${r.ctaRowCode}
|
|
141
|
+
</div>
|
|
142
|
+
`:"",i=a.blockType==="t"?"w-3/4":"w-2/3",c=r.hasText?a.showImage?`<div class="${i} h-full flex flex-col">${l}</div>`:l:"",d=["flex","flex-row",a.palette.containerBg,a.cornerStyle,"w-full","h-full",a.interactionClasses].filter(Boolean).join(" ");return`<article class="${`@container col-span-1 inline-flex w-full relative h-full ${a.layout.mb}`}" role="article"><div class="${d}">${r.finalImageCode}${c}</div></article>`})}var He={};k(He,{render:()=>Et});x();function Et(e,t,o){return T("q",e,t,o,(r,a)=>{let s=r.hasText?`
|
|
143
|
+
<div class="p-4 @xs:p-6 @sm:p-8 flex-grow flex flex-col">
|
|
144
|
+
${r.titleCode}
|
|
145
|
+
${r.snippetCode}
|
|
146
|
+
<span class="mt-4 text-right">
|
|
147
|
+
${r.authorCode}
|
|
148
|
+
</span>
|
|
149
|
+
<div class="mt-auto pt-2">${r.ctaRowCode}</div>
|
|
150
|
+
</div>
|
|
151
|
+
`:"";return`<article class="@container col-span-1 inline-flex w-full relative" role="article"><div class="${["flex","flex-col","w-full",a.palette.containerBg,a.palette.containerText,a.cornerStyle,`text-${a.textHAlign}`,"h-full",a.interactionClasses].filter(Boolean).join(" ")}">${r.finalImageCode}${s}</div></article>`})}var je={};k(je,{render:()=>Dt});x();function Dt(e,t,o){return T("m",e,t,o,(r,a)=>{let s=`
|
|
152
|
+
<div class="w-full p-2 flex flex-col h-full text-${a.textHAlign}">
|
|
153
|
+
<div class="mb-1 opacity-75 flex flex-wrap items-center gap-x-1">${r.authorCode}${r.dateCode}</div>
|
|
154
|
+
${r.labelsCode}
|
|
155
|
+
${r.titleCode}
|
|
156
|
+
${r.snippetCode}
|
|
157
|
+
${r.ctaButtonCode}
|
|
158
|
+
</div>
|
|
159
|
+
`;return`
|
|
160
|
+
<article class="col-span-1 inline-flex w-full relative" role="article">
|
|
161
|
+
<div class="${`${a.cornerStyle} ${a.palette.containerBg} ${a.palette.containerText} flex flex-row p-4 w-full items-start ${a.interactionClasses}`}">
|
|
162
|
+
${r.finalImageCode}
|
|
163
|
+
${s}
|
|
164
|
+
</div>
|
|
165
|
+
</article>
|
|
166
|
+
`})}var Ne={v:Oe,s:Re,l:Ue,c:Me,g:qe,p:Ee,t:De,q:He,m:je},te=class{async buildBlockBody(t,o){let r="",a="",s=null,l=t.posts.length,n=o.blockType==="l"||o.blockType==="s";if(o.isCarousel&&(s=null),o.blockType==="s"&&l>0){o.firstInstance&&(a=Ne["s"].render(t.posts[0],0,o));let c=[];for(let d=0;d<l;d++){let m=Ne["s"].renderThumbnail(t.posts[d],o);o.isCarousel&&(m=m.replace('<article class="','<article class="snap-start ')),c.push(m)}return{renderedBlocks:c,carouselIndicators:s,showcaseHTML:a}}let i=[];for(let c=0;c<l;c++){let d=t.posts[c],m=o.columnCount,p=o.blockType;o.blockType==="l"&&c>0&&(p=o.showHeader?"t":"c",c===1&&o.showHeader&&m--);let u=Ne[p].render(d,c,o);o.isCarousel&&(u=u.replace('<article class="','<article class="snap-start ')),i.push(u)}return{renderedBlocks:i,carouselIndicators:s,showcaseHTML:a}}createBlockHeader(t){return it(t)}createBlockFooter(t,o){return ct(t,o)}createStageWrapper(t,o,r,a){let s=r.isCarousel?ut(o,r,a):"",l=pt(r,a),n=`${s}${t}${l}`;return dt(n,r)}bindEvents(t,o){this._bindShowcaseEvents(t,o),this._bindPaginationEvents(t,o),this._bindShareEvents(t),mt(t,o)}_bindShareEvents(t){t.dataset.shareBound||(t.dataset.shareBound="true",t.addEventListener("click",async o=>{let r=o.target.closest('[data-action="share-native"]');if(!r)return;o.preventDefault(),o.stopPropagation();let a=r.getAttribute("data-title"),s=r.getAttribute("data-url");if(navigator.share)try{await navigator.share({title:a,url:s})}catch(l){console.log("Share failed",l)}else navigator.clipboard.writeText(s).then(()=>{alert("Link copied to clipboard!")})}))}_bindShowcaseEvents(t,o){if(t.dataset.showcaseBound)return;let r=t.closest(".mBlock, .mBlockL")?.querySelector(".feature-image");if(!r)return;t.dataset.showcaseBound="true";let a=r.querySelector("figure"),s=r.querySelector(".sIframe"),l=r.querySelector(".sContent");a&&a.addEventListener("click",function(){let i=this.getAttribute("data-vidid");if(i&&i!=="noVideo"){if(s){s.innerHTML=_e(i,o),s.style.display="",s.style.opacity="1",s.classList.remove("hidden"),a.style.display="none",l&&(l.style.display="none");let c=r.querySelector("a");c&&(c.style.display="none")}}else{let c=r.querySelector("a");c&&c.href&&(window.location.href=c.href)}});let n=r.querySelector("a.z-30")||r.querySelector("a");n&&n.addEventListener("click",function(i){if(a){let c=a.getAttribute("data-vidid");c&&c!=="noVideo"&&(i.preventDefault(),a.click())}}),t.addEventListener("click",function(i){let c=i.target.closest(".sPost");if(!c||!c.closest(".sFeature"))return;let d={vidid:c.getAttribute("data-vidid"),title:c.getAttribute("data-title"),summary:c.getAttribute("data-summary"),link:c.getAttribute("data-link"),imgHigh:c.getAttribute("data-img-high")||c.querySelector("img")?.getAttribute("data-img-high")||""};if(c.classList.contains("ring-4")){window.location.href=d.link;return}if(t.querySelectorAll(".sFeature .sPost").forEach(u=>{u.classList.remove("ring-4","ring-current","ring-inset")}),c.classList.add("ring-4","ring-current","ring-inset"),d.vidid&&d.vidid!=="noVideo"){s&&(s.innerHTML=_e(d.vidid,o),D(s)),U(a),U(l);let u=r.querySelector("a");u&&(u.style.display="none")}else{if(s&&(s.innerHTML="",U(s)),a){(d.vidid==="noVideo"||!d.vidid)&&a.removeAttribute("data-vidid");let g=a.querySelector("svg");g&&U(g),a.style.backgroundImage=`url("${d.imgHigh}")`,a.style.backgroundSize="cover",a.title=d.title,a.setAttribute("aria-label",d.title+" image"),D(a)}if(l){D(l);let g=l.querySelector("h5");if(g){g.textContent=d.title;let w=g.closest("a");w&&(w.href=d.link)}let b=l.querySelector(".js-cta-link");b&&(b.href=d.link,b.setAttribute("aria-label",`View ${d.title}`));let $=l.querySelector(".list-none")||l.querySelector("div.text-body-md");$&&($.innerHTML=d.summary)}let u=r.querySelector("a.z-30")||r.querySelector("a");u&&(u.style.display="",u.href=d.link,u.title=d.title,u.hasAttribute("aria-label")&&u.setAttribute("aria-label",`View ${d.title}`));let h=r.querySelector("button");h&&(h.title=d.title)}})}_bindPaginationEvents(t,o){if(!o)return;let r=o.stageID,a=t.querySelectorAll(`.st${r} .nav-prev`),s=t.querySelectorAll(`.st${r} .nav-next`);a.forEach(l=>{l.dataset.bound||(l.dataset.bound="true",l.addEventListener("click",()=>{let n=parseInt(t.getAttribute("data-s"),10);if(n<=1)return;let i=n-1;t.setAttribute("data-s",i),t.style.minHeight=t.clientHeight+"px",U(t.querySelector(`div#m${o.mBlockID}-st${n}`)),U(t.querySelector(`div.mblox-footer.st${n}`)),setTimeout(()=>{D(t.querySelector(`div#m${o.mBlockID}-st${i}`)),D(t.querySelector(`div.mblox-footer.st${i}`)),t.style.minHeight=""},160)}))}),s.forEach(l=>{l.dataset.bound||(l.dataset.bound="true",l.addEventListener("click",()=>{let n=parseInt(t.getAttribute("data-s"),10),i=n+1;t.setAttribute("data-s",i),t.style.minHeight=t.clientHeight+"px",t.classList.add("relative"),U(t.querySelector(`div#m${o.mBlockID}-st${n}`));let c=t.querySelector(`div.mblox-footer.st${n}`);c&&U(c);let d=t.querySelector(`div#m${o.mBlockID}-st${i}`);if(d)setTimeout(()=>{D(d),D(t.querySelector(`div.mblox-footer.st${i}`)),t.style.minHeight=""},160);else{let m=`
|
|
167
|
+
<style>
|
|
168
|
+
@keyframes mblox-loader-anim {
|
|
169
|
+
0% { transform: rotate(0deg) scale(0.8); }
|
|
170
|
+
50% { transform: rotate(180deg) scale(1.1); }
|
|
171
|
+
100% { transform: rotate(360deg) scale(0.8); }
|
|
172
|
+
}
|
|
173
|
+
</style>
|
|
174
|
+
<div id="m${o.mBlockID}-st${i}-loading" class="absolute inset-0 flex items-center justify-center z-10" style="min-height: 200px;">
|
|
175
|
+
<svg class="w-12 h-12 text-current opacity-80" viewBox="0 0 56 56" style="--scroll-progress: 0; animation: mblox-loader-anim 2s cubic-bezier(0.4, 0, 0.2, 1) infinite;"><use href="#icon-progress-m3e"></use></svg>
|
|
176
|
+
</div>`;t.insertAdjacentHTML("beforeend",m);let p=new CustomEvent("mblox:loadNextPage",{detail:{element:t}});t.dispatchEvent(p)}}))})}};var de=null;async function Ht(){return de||(window.mBloxConfig&&window.mBloxConfig.designSystem==="m3e"?(window.mBlox=window.mBlox||{},window.mBlox.m3eRenderer=te,de=new te):de=new te,de)}async function Ke(e){rt();let t=await Ht(),o=typeof e=="string"?document.querySelectorAll(e):[e];for(let r of o){r.classList.add("@container");let a=et(r);r.setAttribute("data-scheme",a.mBloxTheme),r.setAttribute("data-palette",a.paletteName),r._mbloxPaginateListener||(r.addEventListener("mblox:loadNextPage",s=>{Ke(s.target)}),r._mbloxPaginateListener=!0);try{let s=Ze(a),l=await s.fetch();if(a.isBloggerFeed=s instanceof ne,l.posts&&l.posts.length>0){let n=l.posts.length;a.contentType==="comments"&&(a.moreText=""),a.firstInstance&&(r.setAttribute("data-s",a.stageID),r.insertAdjacentHTML("beforeend",t.createBlockHeader(a))),a=Xe(a,n);let{renderedBlocks:i,carouselIndicators:c,showcaseHTML:d}=await t.buildBlockBody(l,a);a.firstInstance&&a.blockType==="s"&&d&&r.insertAdjacentHTML("beforeend",d);let p=a.stageID===parseInt(r.getAttribute("data-s")||"1",10)?"":" d-none",u="";a.isCarousel?u=at(i,a):a.blockType==="l"?u=lt(i,a):u=ot(i,a);let h=t.createStageWrapper(u,c,a,l),g=t.createBlockFooter(a,l),b=`<div class="st${a.stageID}${p}" id="m${a.mBlockID}-st${a.stageID}">${h}${g}</div>`,$=r.querySelector(`#m${a.mBlockID}-st${a.stageID}-loading`);$&&$.remove(),r.insertAdjacentHTML("beforeend",b),r.style.minHeight="",t.bindEvents(r,a),tt(r)}}catch(s){console.error(s)}}}window.mBlocks=Ke;
|
package/mBloxCall.js
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* mBlocks for Blogger - Initializer
|
|
3
|
+
* CIA.RealHappinessCenter.com
|
|
4
|
+
* @version 2.0.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
let isFirstScriptLoad = true;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Loads the core library and initializes blocks.
|
|
11
|
+
* Uses window.mBloxConfig to determine the design system.
|
|
12
|
+
*/
|
|
13
|
+
function loadScripts(blockItem, isFirstLoad) {
|
|
14
|
+
if (isFirstLoad) {
|
|
15
|
+
const config = window.mBloxConfig || {};
|
|
16
|
+
|
|
17
|
+
// 1. Inject CSS for M3E
|
|
18
|
+
let cssUrl = 'https://cdn.jsdelivr.net/npm/mblox/dist/mBloxM3E.css';
|
|
19
|
+
if (config.cssSrc !== undefined) {
|
|
20
|
+
cssUrl = config.cssSrc;
|
|
21
|
+
} else if (window.mBloxCssSrc !== undefined) {
|
|
22
|
+
cssUrl = window.mBloxCssSrc;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (cssUrl && !document.querySelector(`link[href*="${cssUrl}"]`)) {
|
|
26
|
+
const link = document.createElement('link');
|
|
27
|
+
link.rel = 'stylesheet';
|
|
28
|
+
link.href = cssUrl;
|
|
29
|
+
document.head.appendChild(link);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// 2. Inject mBlox Unified Bundle (Engine + Blocks)
|
|
33
|
+
let jsUrl = 'https://cdn.jsdelivr.net/npm/mblox/dist/mBloxM3E.js';
|
|
34
|
+
if (config.jsSrc !== undefined) {
|
|
35
|
+
jsUrl = config.jsSrc;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (jsUrl) {
|
|
39
|
+
const existingScript = document.querySelector(`script[src*="${jsUrl}"]`);
|
|
40
|
+
if (!existingScript) {
|
|
41
|
+
const script = document.createElement('script');
|
|
42
|
+
script.src = jsUrl;
|
|
43
|
+
script.type = 'module';
|
|
44
|
+
script.addEventListener('load', () => {
|
|
45
|
+
if (window.mBlocks) {
|
|
46
|
+
window.mBlocks(blockItem).then(() => { isFirstScriptLoad = false; });
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
document.head.appendChild(script);
|
|
50
|
+
} else if (window.mBlocks) {
|
|
51
|
+
window.mBlocks(blockItem).then(() => { isFirstScriptLoad = false; });
|
|
52
|
+
} else {
|
|
53
|
+
// Script tag exists but hasn't finished loading. Queue the execution.
|
|
54
|
+
existingScript.addEventListener('load', () => {
|
|
55
|
+
if (window.mBlocks) {
|
|
56
|
+
window.mBlocks(blockItem).then(() => { isFirstScriptLoad = false; });
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
} else if (window.mBlocks) {
|
|
61
|
+
window.mBlocks(blockItem).then(() => { isFirstScriptLoad = false; });
|
|
62
|
+
}
|
|
63
|
+
} else {
|
|
64
|
+
if (window.mBlocks) {
|
|
65
|
+
window.mBlocks(blockItem);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Intersection Observer for Lazy Loading
|
|
71
|
+
window.addEventListener("load", (event) => {
|
|
72
|
+
if (document.getElementsByClassName("mBlock").length) {
|
|
73
|
+
loadScripts('.mBlock', isFirstScriptLoad);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const config = window.mBloxConfig || {};
|
|
77
|
+
const threshold = config.lazyLoadThreshold !== undefined ? config.lazyLoadThreshold : 0.0;
|
|
78
|
+
const rootMargin = config.lazyLoadRootMargin !== undefined ? config.lazyLoadRootMargin : '500px';
|
|
79
|
+
|
|
80
|
+
const options = { rootMargin: rootMargin, threshold: threshold };
|
|
81
|
+
const lazyLoadTargets = document.getElementsByClassName("mBlockL");
|
|
82
|
+
|
|
83
|
+
let observer = new IntersectionObserver(intersectionCallback, options);
|
|
84
|
+
Array.prototype.forEach.call(lazyLoadTargets, function (observedElement) {
|
|
85
|
+
observer.observe(observedElement);
|
|
86
|
+
});
|
|
87
|
+
}, false);
|
|
88
|
+
|
|
89
|
+
const intersectionCallback = (entries, observer) => {
|
|
90
|
+
entries.forEach((entry) => {
|
|
91
|
+
if (entry.isIntersecting) {
|
|
92
|
+
if ((entry.target).classList.contains("mBlockL")) {
|
|
93
|
+
loadScripts(entry.target, isFirstScriptLoad);
|
|
94
|
+
}
|
|
95
|
+
observer.unobserve(entry.target);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
window.loadScripts = loadScripts;
|
package/package.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "mblox",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "mBlox is a lightweight, dependency-free JavaScript library that enables dynamic, Elementor/Gutentor-like content blocks. It can fetch and display content from various sources like **Blogger**, **WordPress**, and any **RSS feed** (including YouTube) in a variety of customizable layouts.",
|
|
5
|
+
"main": "mBloxCall.js",
|
|
6
|
+
"unpkg": "dist/mBloxM3E.js",
|
|
7
|
+
"jsdelivr": "dist/mBloxM3E.js",
|
|
8
|
+
"files": [ "dist" ],
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "npm run build:css && npm run build:icons && npm run build:js",
|
|
11
|
+
"build:css": "npx @tailwindcss/cli -i ./src/design/tailwind.css -o ./dist/mBloxM3E.css --minify",
|
|
12
|
+
"build:icons": "node scripts/build-icons.js",
|
|
13
|
+
"build:js": "node scripts/build-js.js",
|
|
14
|
+
"dev": "npx -y serve .",
|
|
15
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
16
|
+
},
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "git+https://github.com/mohanjeetsingh/mBlox.git"
|
|
20
|
+
},
|
|
21
|
+
"keywords": [],
|
|
22
|
+
"author": "",
|
|
23
|
+
"license": "ISC",
|
|
24
|
+
"type": "module",
|
|
25
|
+
"bugs": {
|
|
26
|
+
"url": "https://github.com/mohanjeetsingh/mBlox/issues"
|
|
27
|
+
},
|
|
28
|
+
"homepage": "https://github.com/mohanjeetsingh/mBlox#readme",
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"esbuild": "^0.28.0"
|
|
31
|
+
},
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"@tailwindcss/cli": "^4.3.0",
|
|
34
|
+
"tailwindcss": "^4.3.0"
|
|
35
|
+
}
|
|
36
|
+
}
|