@taprootio/espalier 2.9.0 → 2.11.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/CHANGELOG.md +54 -0
- package/custom-elements.json +1056 -149
- package/dist/flyout/esp-flyout.d.ts +20 -12
- package/dist/flyout/esp-flyout.js +75 -22
- package/dist/header/esp-header.js +4 -4
- package/dist/menu/esp-menu.js +2 -2
- package/dist/page/bi-directional-sticky-controller.js +1 -1
- package/dist/page/esp-page.d.ts +161 -12
- package/dist/page/esp-page.js +242 -15
- package/espalier.token-manifest.json +68 -2
- package/package.json +1 -1
package/dist/page/esp-page.d.ts
CHANGED
|
@@ -32,17 +32,30 @@ type HeaderPosition = "normal" | "sticky" | "fixed";
|
|
|
32
32
|
* </esp-page>
|
|
33
33
|
* ```
|
|
34
34
|
*
|
|
35
|
+
* The authoring workspace is ordered main, preview, then help. Each region
|
|
36
|
+
* negotiates between public minimum and maximum widths; preview grows first,
|
|
37
|
+
* then help. Opt into collapsing a directly paired header/sidebar navigation
|
|
38
|
+
* to its accessible burger/drawer mode when the combined workspace needs it.
|
|
39
|
+
*
|
|
35
40
|
* @slot sidebar - Contextual navigation placed in the left aside.
|
|
36
41
|
* @slot right - Content to place in the right aside.
|
|
42
|
+
* @slot preview - Persistent preview content placed after the main surface and
|
|
43
|
+
* before help. It grows from `--esp-page-preview-min-width` to
|
|
44
|
+
* `--esp-page-preview-max-width`, starts at viewport top, and gives its content
|
|
45
|
+
* an independent `100dvh` vertical scroller. At either scroll boundary, wheel
|
|
46
|
+
* and trackpad motion chains back to the main document. Unlike flyout content,
|
|
47
|
+
* preview content is never replaced by the flyout request bus.
|
|
37
48
|
* @slot flyout - A transient `esp-flyout` panel that lives on the
|
|
38
|
-
* canvas
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* gutter exists, and becomes an overlay drawer on small viewports.
|
|
49
|
+
* canvas after preview. Closed it costs no width; open it grows from
|
|
50
|
+
* `--esp-page-flyout-min-width` to `--esp-page-flyout-max-width` after preview
|
|
51
|
+
* receives flexible space, then docks as a width-competing right sidebar when
|
|
52
|
+
* no gutter exists, and becomes an overlay drawer on small viewports.
|
|
43
53
|
* The persistent `right` aside and the transient flyout are
|
|
44
54
|
* complementary, not alternatives. A flyout opened with an `anchor`
|
|
45
|
-
* aligns to that trigger and stays in the same document scroll flow.
|
|
55
|
+
* aligns to that trigger and stays in the same document scroll flow. When a
|
|
56
|
+
* preview is visible, its caret and non-interactive dotted bridge cross the
|
|
57
|
+
* preview back to the anchor, ending at a short thick marker on the
|
|
58
|
+
* preview/help seam.
|
|
46
59
|
* @slot footer - Content to place in the footer. Slot `esp-footer` directly
|
|
47
60
|
* to receive the page's surface-alignment custom-property contract. A wrapper
|
|
48
61
|
* can preserve landmark semantics but does not receive that direct contract.
|
|
@@ -110,10 +123,13 @@ type HeaderPosition = "normal" | "sticky" | "fixed";
|
|
|
110
123
|
* @cssprop --esp-page-background - The background color of the page. Fills
|
|
111
124
|
* both the surface and the canvas gutters; the canvas tokens paint over it
|
|
112
125
|
* in the gutters only. Defaults to `var(--esp-color-background)`.
|
|
113
|
-
* @cssprop --esp-page-
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
126
|
+
* @cssprop --esp-page-main-min-width - Minimum width of the main content well
|
|
127
|
+
* while preview or in-grid help competes for space. Defaults to `30rem`.
|
|
128
|
+
* @cssprop --esp-page-main-max-width - Maximum width of the main content well.
|
|
129
|
+
* Defaults from `kind`: `1536px` (wide), `768px` (narrow), or unbounded (full).
|
|
130
|
+
* Surplus width beyond it becomes canvas gutters.
|
|
131
|
+
* @cssprop --esp-page-max-width - Legacy fallback for
|
|
132
|
+
* `--esp-page-main-max-width`.
|
|
117
133
|
* @cssprop --esp-page-background-image - The background image to
|
|
118
134
|
* display behind page content. Defaults to `none`.
|
|
119
135
|
* @cssprop --esp-page-background-image-opacity - The opacity of the
|
|
@@ -141,8 +157,27 @@ type HeaderPosition = "normal" | "sticky" | "fixed";
|
|
|
141
157
|
* background). Set it to give the content well its own card color, or
|
|
142
158
|
* pair the transparent default with `--esp-page-surface-shadow: none`
|
|
143
159
|
* for content that floats directly on the page with no frame.
|
|
144
|
-
* @cssprop --esp-page-
|
|
145
|
-
*
|
|
160
|
+
* @cssprop --esp-page-preview-background - Background of the persistent
|
|
161
|
+
* preview surface. Defaults to the main background, then the page background.
|
|
162
|
+
* @cssprop --esp-page-preview-border - Leading tear-off edge between main and
|
|
163
|
+
* preview. Defaults to `1px dotted var(--esp-color-border)`.
|
|
164
|
+
* @cssprop --esp-page-preview-shadow - Shadow cast from the preview's trailing
|
|
165
|
+
* edge. Defaults to the page surface edge shadow. Set to `none` for a flat
|
|
166
|
+
* additive surface.
|
|
167
|
+
* @cssprop --esp-page-preview-min-width - Minimum preview width. Defaults to
|
|
168
|
+
* `22.5rem` (360px, a reasonable mobile-device surface).
|
|
169
|
+
* @cssprop --esp-page-preview-max-width - Maximum preview width. Defaults to
|
|
170
|
+
* `48rem`. Preview receives flexible trailing space before help grows.
|
|
171
|
+
* @cssprop --esp-page-flyout-min-width - Minimum in-grid help width. Defaults
|
|
172
|
+
* to `20rem`.
|
|
173
|
+
* @cssprop --esp-page-flyout-max-width - Maximum help width and overlay drawer
|
|
174
|
+
* cap before the `85vw` viewport cap. Defaults to `30rem`.
|
|
175
|
+
* @cssprop --esp-page-preview-width - Legacy fixed-width alias that pins both
|
|
176
|
+
* preview bounds.
|
|
177
|
+
* @cssprop --esp-page-flyout-width - Legacy fixed-width alias that pins both
|
|
178
|
+
* help bounds.
|
|
179
|
+
* @cssprop --esp-page-preview-min-main-width - Legacy fallback for
|
|
180
|
+
* `--esp-page-main-min-width`.
|
|
146
181
|
* @cssprop --esp-page-fixed-header-offset - Offset reserved for fixed
|
|
147
182
|
* headers. Defaults to `var(--esp-header-height)`.
|
|
148
183
|
* @cssprop --esp-page-sticky-header-top - Top inset for sticky headers.
|
|
@@ -152,6 +187,8 @@ type HeaderPosition = "normal" | "sticky" | "fixed";
|
|
|
152
187
|
*
|
|
153
188
|
* @csspart canvas - The two canvas gutter regions flanking the surface.
|
|
154
189
|
* @csspart surface - The surface backdrop carrying the edge shadow/border.
|
|
190
|
+
* @csspart preview - The persistent preview complementary landmark.
|
|
191
|
+
* @csspart preview-content - The sticky wrapper around preview content.
|
|
155
192
|
*
|
|
156
193
|
* ```html
|
|
157
194
|
* <style>
|
|
@@ -201,10 +238,93 @@ type HeaderPosition = "normal" | "sticky" | "fixed";
|
|
|
201
238
|
* @menuLabel Page
|
|
202
239
|
* @menuIcon layout
|
|
203
240
|
*
|
|
241
|
+
*
|
|
242
|
+
* @example Main, preview, and contextual help
|
|
243
|
+
* ```html
|
|
244
|
+
* <style>
|
|
245
|
+
* .page-workspace-demo {
|
|
246
|
+
* --esp-page-main-min-width: 26rem;
|
|
247
|
+
* --esp-page-main-max-width: 48rem;
|
|
248
|
+
* --esp-page-preview-min-width: 18rem;
|
|
249
|
+
* --esp-page-preview-max-width: 26rem;
|
|
250
|
+
* --esp-page-flyout-min-width: 18rem;
|
|
251
|
+
* --esp-page-flyout-max-width: 22rem;
|
|
252
|
+
* }
|
|
253
|
+
*
|
|
254
|
+
* .page-workspace-demo > main,
|
|
255
|
+
* .page-workspace-demo > [slot="preview"] {
|
|
256
|
+
* box-sizing: border-box;
|
|
257
|
+
* padding: var(--esp-size-padding-page);
|
|
258
|
+
* }
|
|
259
|
+
*
|
|
260
|
+
* .page-workspace-demo > main {
|
|
261
|
+
* min-block-size: 120vh;
|
|
262
|
+
* }
|
|
263
|
+
* </style>
|
|
264
|
+
*
|
|
265
|
+
* <esp-page
|
|
266
|
+
* id="page-workspace-demo"
|
|
267
|
+
* class="page-workspace-demo"
|
|
268
|
+
* preview-open
|
|
269
|
+
* preview-label="Rendered page preview"
|
|
270
|
+
* >
|
|
271
|
+
* <main>
|
|
272
|
+
* <h2>Page details</h2>
|
|
273
|
+
* <esp-form-item label="Site title">
|
|
274
|
+
* <esp-input id="page-workspace-title" name="title" value="Field notes"></esp-input>
|
|
275
|
+
* </esp-form-item>
|
|
276
|
+
* <p>
|
|
277
|
+
* Help is anchored to the title field in this main editor. Its caret and
|
|
278
|
+
* dotted connector cross the persistent preview without blocking it.
|
|
279
|
+
* </p>
|
|
280
|
+
* <esp-button id="page-workspace-preview-toggle" label="Toggle preview"></esp-button>
|
|
281
|
+
* <esp-button id="page-workspace-help-toggle" label="Toggle title help"></esp-button>
|
|
282
|
+
* </main>
|
|
283
|
+
*
|
|
284
|
+
* <article slot="preview">
|
|
285
|
+
* <h2>Field notes</h2>
|
|
286
|
+
* <p>This preview is a full-viewport secondary surface with its own scroller.</p>
|
|
287
|
+
* </article>
|
|
288
|
+
*
|
|
289
|
+
* <esp-flyout
|
|
290
|
+
* id="page-workspace-help"
|
|
291
|
+
* slot="flyout"
|
|
292
|
+
* heading="Site title help"
|
|
293
|
+
* standalone
|
|
294
|
+
* >
|
|
295
|
+
* <p>Use a short, recognizable title. It appears in navigation and browser tabs.</p>
|
|
296
|
+
* </esp-flyout>
|
|
297
|
+
* </esp-page>
|
|
298
|
+
*
|
|
299
|
+
* <script>
|
|
300
|
+
* const page = findById("page-workspace-demo");
|
|
301
|
+
* const title = findById("page-workspace-title");
|
|
302
|
+
* const help = findById("page-workspace-help");
|
|
303
|
+
* help.anchor = title;
|
|
304
|
+
*
|
|
305
|
+
* const syncMainWidth = () => {
|
|
306
|
+
* page.kind = page.previewOpen || help.open ? "wide" : "full";
|
|
307
|
+
* };
|
|
308
|
+
*
|
|
309
|
+
* findById("page-workspace-preview-toggle").addEventListener("clicked", () => {
|
|
310
|
+
* page.togglePreview();
|
|
311
|
+
* syncMainWidth();
|
|
312
|
+
* });
|
|
313
|
+
* findById("page-workspace-help-toggle").addEventListener("clicked", () => {
|
|
314
|
+
* help.anchor = title;
|
|
315
|
+
* help.toggle();
|
|
316
|
+
* syncMainWidth();
|
|
317
|
+
* });
|
|
318
|
+
* help.addEventListener("flyout-opened", syncMainWidth);
|
|
319
|
+
* help.addEventListener("flyout-closed", syncMainWidth);
|
|
320
|
+
* syncMainWidth();
|
|
321
|
+
* </script>
|
|
322
|
+
* ```
|
|
204
323
|
*/
|
|
205
324
|
export declare class EspalierPage extends EspalierElementBase {
|
|
206
325
|
constructor();
|
|
207
326
|
connectedCallback(): void;
|
|
327
|
+
disconnectedCallback(): void;
|
|
208
328
|
/**
|
|
209
329
|
* The layout mode of the page.
|
|
210
330
|
*
|
|
@@ -265,6 +385,35 @@ export declare class EspalierPage extends EspalierElementBase {
|
|
|
265
385
|
* Prefer `header-position="fixed"` for new code.
|
|
266
386
|
*/
|
|
267
387
|
fixedMenus: boolean;
|
|
388
|
+
/**
|
|
389
|
+
* Whether the persistent preview is logically open. The page may keep the
|
|
390
|
+
* preview hidden while space is unavailable; `preview-visible` reflects its
|
|
391
|
+
* actual presentation and the preview restores automatically when room returns.
|
|
392
|
+
*/
|
|
393
|
+
previewOpen: boolean;
|
|
394
|
+
/** Accessible name for the preview's complementary landmark. */
|
|
395
|
+
previewLabel: string;
|
|
396
|
+
/**
|
|
397
|
+
* Allow a directly slotted, safely linked vertical menu/header pair to
|
|
398
|
+
* collapse to its burger/drawer presentation when preview needs more room.
|
|
399
|
+
*/
|
|
400
|
+
previewCollapseSidebar: boolean;
|
|
401
|
+
/**
|
|
402
|
+
* Whether preview content is currently rendered. Managed by the page's
|
|
403
|
+
* space negotiation; consumers should treat this reflected property as read-only.
|
|
404
|
+
*/
|
|
405
|
+
previewVisible: boolean;
|
|
406
|
+
/**
|
|
407
|
+
* Whether preview is currently reserving width and allowing the main well
|
|
408
|
+
* to shrink toward `--esp-page-main-min-width`. Managed by the page.
|
|
409
|
+
*/
|
|
410
|
+
previewReclaiming: boolean;
|
|
411
|
+
/** Request the persistent preview without moving focus. */
|
|
412
|
+
showPreview(): void;
|
|
413
|
+
/** Close the persistent preview without moving focus. */
|
|
414
|
+
closePreview(): void;
|
|
415
|
+
/** Toggle the persistent preview without moving focus. */
|
|
416
|
+
togglePreview(): void;
|
|
268
417
|
/**
|
|
269
418
|
* Inject an element into a div with the highest z-index so dialogs are
|
|
270
419
|
* rendered on top of everything else.
|
package/dist/page/esp-page.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
var i=function(h,e,a,s){var d=arguments.length,o=d<3?e:s===null?s=Object.getOwnPropertyDescriptor(e,a):s,t;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(h,e,a,s);else for(var n=h.length-1;n>=0;n--)(t=h[n])&&(o=(d<3?t(o):d>3?t(e,a,o):t(e,a))||o);return d>3&&o&&Object.defineProperty(e,a,o),o};import{css as m,html as v,nothing as y}from"lit";import{customElement as w,property as l,state as b}from"lit/decorators.js";import{classMap as k}from"lit/directives/class-map.js";import{createRef as p,ref as c}from"lit/directives/ref.js";import{EspalierElementBase as g}from"../shared/esp-element-base.js";import{BiDirectionalStickyController as u}from"./bi-directional-sticky-controller.js";import{getEspBus as x}from"../shared/bus-events.js";import"../toaster/esp-toaster.js";const f='esp-footer, footer, [role~="contentinfo"]';let r=class extends g{constructor(){super(),this.dialogZone=p(),this.flyoutSlot=p(),this.footerSlot=p(),this.footerWrapperIsLandmark=!0,this.kind="wide",this.align="start",this.contained=!1,this.headerPosition="normal",this.fixedMenus=!1,new u(this,".esp-page-left > .sticky-wrapper"),new u(this,".esp-page-right > .sticky-wrapper"),new u(this,".esp-page-flyout > .sticky-wrapper"),this.addEventListener("flyout-state-changed",e=>this.syncFlyoutState(e))}connectedCallback(){const e=Array.from(this.children).filter(a=>a.getAttribute("slot")==="footer");this.footerWrapperIsLandmark=!e.some(a=>this.footerElementProvidesLandmark(a)),super.connectedCallback()}syncFlyoutState(e){if(e&&e.target?.closest?.("esp-page")!==this)return;const a=t=>{const n=t.mode;return(typeof n=="string"?n:t.getAttribute("mode"))==="overlay"},s=t=>{const n=t.open;return typeof n=="boolean"?n:t.hasAttribute("open")},d=t=>t.anchor!=null,o=(this.flyoutSlot.value?.assignedElements()??[]).filter(t=>t.tagName==="ESP-FLYOUT");this.toggleAttribute("flyout-open",o.some(t=>s(t)&&!a(t))),this.toggleAttribute("flyout-overlay-open",o.some(t=>s(t)&&a(t))),this.toggleAttribute("flyout-anchored",o.some(t=>s(t)&&d(t)))}footerElementProvidesLandmark(e){return e.matches(f)||e.querySelector(f)!==null}syncFooterLandmark(){const a=(this.footerSlot.value?.assignedElements({flatten:!0})??[]).some(s=>this.footerElementProvidesLandmark(s));this.footerWrapperIsLandmark=!a}AddDialog(e){this.dialogZone.value?.appendChild(e)}firstUpdated(e){super.firstUpdated(e),this.syncFlyoutState()}updated(e){super.updated(e),(e.has("fixedMenus")||e.has("headerPosition"))&&x().publish("fixed-menus-changed",{fixed:this.fixedMenus||this.headerPosition==="fixed"})}render(){const e=this.fixedMenus||this.headerPosition==="fixed",a=!e&&this.headerPosition==="sticky";return v`
|
|
2
|
-
<div part="wrapper" class="esp-page ${
|
|
1
|
+
var w=function(P,e,t,i){var a=arguments.length,r=a<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(P,e,t,i);else for(var o=P.length-1;o>=0;o--)(s=P[o])&&(r=(a<3?s(r):a>3?s(e,t,r):s(e,t))||r);return a>3&&r&&Object.defineProperty(e,t,r),r};import{css as B,html as q,nothing as T}from"lit";import{customElement as I,property as m,state as N}from"lit/decorators.js";import{classMap as G}from"lit/directives/class-map.js";import{createRef as y,ref as b}from"lit/directives/ref.js";import{EspalierElementBase as F}from"../shared/esp-element-base.js";import{BiDirectionalStickyController as W}from"./bi-directional-sticky-controller.js";import{getEspBus as D}from"../shared/bus-events.js";import"../toaster/esp-toaster.js";const z='esp-footer, footer, [role~="contentinfo"]',$="(max-width: 50em)",l=1,H=5,U=12,V=48;let v=class extends F{constructor(){super(),this.dialogZone=y(),this.flyoutSlot=y(),this.footerSlot=y(),this.previewSlot=y(),this.previewSpace=y(),this.previewMinWidthProbe=y(),this.previewMaxWidthProbe=y(),this.flyoutMinWidthProbe=y(),this.flyoutMaxWidthProbe=y(),this.mainMinWidthProbe=y(),this.previewObservedWidths=new WeakMap,this.previewSyncRaf=null,this.previewSyncGeneration=0,this.previewSyncTask=Promise.resolve(),this.previewOverlayRecoveryRequested=!1,this.previewHeader=null,this.previewMenu=null,this.previewCollapsedSidebarWidth=0,this.flyoutOverlayPromotionWidth=null,this.flyoutOverlayRecoveryReady=!1,this.flyoutOverlayRecoveryGeneration=0,this.footerWrapperIsLandmark=!0,this.schedulePreviewLayout=(e=!1)=>{if(!this.isConnected||!this.hasUpdated)return;this.previewOverlayRecoveryRequested||=e===!0,this.previewSyncGeneration+=1;const t=this.previewSyncGeneration;this.previewSyncRaf!==null&&cancelAnimationFrame(this.previewSyncRaf),this.previewSyncRaf=requestAnimationFrame(()=>{this.previewSyncRaf=null;const i=this.previewOverlayRecoveryRequested;this.previewOverlayRecoveryRequested=!1,this.previewSyncTask=this.previewSyncTask.then(()=>this.syncPreviewLayout(t,i)).catch(()=>{})})},this.onPreviewMediaChange=()=>this.schedulePreviewLayout(!0),this.onPreviewResize=e=>{e.some(i=>{const a=i.contentRect.width,r=this.previewObservedWidths.get(i.target);return this.previewObservedWidths.set(i.target,a),r===void 0||Math.abs(r-a)>.25})&&this.schedulePreviewLayout(!0)},this.kind="wide",this.align="start",this.contained=!1,this.headerPosition="normal",this.fixedMenus=!1,this.previewOpen=!1,this.previewLabel="Preview",this.previewCollapseSidebar=!1,this.previewVisible=!1,this.previewReclaiming=!1,new W(this,".esp-page-left > .sticky-wrapper"),new W(this,".esp-page-right > .sticky-wrapper"),new W(this,".esp-page-flyout > .sticky-wrapper"),new W(this,".esp-page-preview > .sticky-wrapper",{topOffset:()=>0}),this.addEventListener("flyout-state-changed",e=>this.syncFlyoutState(e))}connectedCallback(){const e=Array.from(this.children).filter(t=>t.getAttribute("slot")==="footer");this.footerWrapperIsLandmark=!e.some(t=>this.footerElementProvidesLandmark(t)),super.connectedCallback(),this.hasUpdated&&queueMicrotask(()=>this.setupPreviewLayoutObserver())}disconnectedCallback(){this.previewResizeObserver?.disconnect(),this.previewResizeObserver=void 0,this.previewMediaQuery?.removeEventListener("change",this.onPreviewMediaChange),this.previewMediaQuery=void 0,this.previewSyncRaf!==null&&(cancelAnimationFrame(this.previewSyncRaf),this.previewSyncRaf=null),this.previewSyncGeneration+=1,this.previewOverlayRecoveryRequested=!1,this.toggleAttribute("data-preview-measuring",!1),this.toggleAttribute("data-preview-validating",!1),this.toggleAttribute("descendant-flyout-overlay-open",!1),this.clearFlyoutOverlayRecovery(),this.setPreviewLayoutState(!1,!1),this.setWorkspaceWidths(0,0),this.setPreviewNavigationCollapse(!1),super.disconnectedCallback()}syncFlyoutState(e){if(e&&e.target?.closest?.("esp-page")!==this){this.syncDescendantFlyoutOverlayState();return}const t=s=>{const o=s;return(typeof o.mode=="string"?o.mode:s.getAttribute("mode"))==="overlay"||o.pageOverlayRequested===!0},i=s=>{const o=s.open;return typeof o=="boolean"?o:s.hasAttribute("open")},a=s=>s.anchor!=null,r=(this.flyoutSlot.value?.assignedElements()??[]).filter(s=>s.tagName==="ESP-FLYOUT");for(const s of r){const o=s,n=typeof o.mode=="string"?o.mode:s.getAttribute("mode");o.pageOverlayRequested&&(!i(s)||n!=="auto")&&(o.pageOverlayRequested=!1)}r.some(s=>s.pageOverlayRequested===!0)||this.clearFlyoutOverlayRecovery(),this.toggleAttribute("flyout-open",r.some(s=>i(s)&&!t(s))),this.toggleAttribute("flyout-overlay-open",r.some(s=>i(s)&&t(s))),this.toggleAttribute("flyout-anchored",r.some(s=>i(s)&&a(s))),this.schedulePreviewLayout()}syncDescendantFlyoutOverlayState(){const e=Array.from(this.querySelectorAll("esp-flyout")).some(t=>{if(t.closest("esp-page")===this)return!1;const i=t,a=typeof i.open=="boolean"?i.open:t.hasAttribute("open"),r=typeof i.mode=="string"?i.mode:t.getAttribute("mode");return a&&(r==="overlay"||i.pageOverlayRequested===!0||t.getAttribute("aria-modal")==="true")});this.toggleAttribute("descendant-flyout-overlay-open",e)}assignedFlyouts(){return(this.flyoutSlot.value?.assignedElements()??[]).filter(e=>e.tagName==="ESP-FLYOUT")}openAutoFlyouts(){return this.assignedFlyouts().filter(e=>{const t=typeof e.open=="boolean"?e.open:e.hasAttribute("open"),i=typeof e.mode=="string"?e.mode:e.getAttribute("mode");return t&&i!=="overlay"})}async setPageFlyoutOverlay(e){let t=!1;const i=new Set(this.openAutoFlyouts());for(const a of this.assignedFlyouts()){const r=e&&i.has(a);a.pageOverlayRequested!==r&&(a.pageOverlayRequested=r,t=!0)}return t&&await Promise.all(this.assignedFlyouts().map(a=>a.updateComplete??Promise.resolve())),e||this.clearFlyoutOverlayRecovery(),t}clearFlyoutOverlayRecovery(){this.flyoutOverlayPromotionWidth=null,this.flyoutOverlayRecoveryReady=!1,this.flyoutOverlayRecoveryGeneration+=1}armFlyoutOverlayRecovery(){const e=++this.flyoutOverlayRecoveryGeneration;this.flyoutOverlayRecoveryReady=!1,requestAnimationFrame(()=>{requestAnimationFrame(()=>{e!==this.flyoutOverlayRecoveryGeneration||!this.openAutoFlyouts().some(t=>t.pageOverlayRequested===!0)||(this.flyoutOverlayPromotionWidth=this.visiblePageInlineBounds().width,this.flyoutOverlayRecoveryReady=!0)})})}previewHasContent(){const e=this.previewSlot.value?.assignedNodes({flatten:!0});return e?e.some(t=>t.nodeType===Node.ELEMENT_NODE||(t.textContent?.trim().length??0)>0):Array.from(this.childNodes).some(t=>t instanceof Element&&t.getAttribute("slot")==="preview"&&!t.hasAttribute("hidden"))}getPreviewNavigationPair(){if(!this.previewCollapseSidebar)return null;const e=Array.from(this.children),t=e.find(s=>s.slot==="header"&&s.tagName==="ESP-HEADER"),i=e.find(s=>s.slot==="sidebar"&&s.tagName==="ESP-MENU");if(!t||!i||!i.id)return null;const a=typeof t.drawerTarget=="string"?t.drawerTarget:t.getAttribute("drawer-target")??"",r=typeof i.mode=="string"?i.mode:i.getAttribute("mode");return a!==i.id||r!=="vertical"||!("previewCollapseRequested"in t)||!("previewCollapseRequested"in i)?null:{header:t,menu:i}}async setPreviewNavigationCollapse(e){const t=e?this.getPreviewNavigationPair():null,i=t!==null&&this.previewHeader===t.header&&this.previewMenu===t.menu,a=this.previewHeader&&this.previewHeader!==t?.header?this.previewHeader:null,r=this.previewMenu&&this.previewMenu!==t?.menu?this.previewMenu:null;if(a&&(a.previewCollapseRequested=!1),r&&(r.previewCollapseRequested=!1),this.previewHeader=t?.header??null,this.previewMenu=t?.menu??null,this.toggleAttribute("data-preview-navigation-collapsed",!1),await a?.updateComplete,await r?.updateComplete,!t)return this.previewCollapsedSidebarWidth=0,!1;const s=i?this.previewCollapsedSidebarWidth:this.shadowRoot?.querySelector(".esp-page-left")?.getBoundingClientRect().width??0;return t.header.previewCollapseRequested=!0,t.menu.previewCollapseRequested=!0,await t.header.updateComplete,await t.menu.updateComplete,t.menu.hasExternalDrawerControl===!0?(this.previewCollapsedSidebarWidth=s,this.toggleAttribute("data-preview-navigation-collapsed",!0),!0):(t.header.previewCollapseRequested=!1,t.menu.previewCollapseRequested=!1,await t.header.updateComplete,await t.menu.updateComplete,this.previewHeader=null,this.previewMenu=null,this.previewCollapsedSidebarWidth=0,!1)}setPreviewLayoutState(e,t){this.previewVisible=e,this.previewReclaiming=e&&t}setWorkspaceWidths(e,t){this.style.setProperty("--_esp-page-preview-used-width",`${Math.max(0,e)}px`),this.style.setProperty("--_esp-page-flyout-used-width",`${Math.max(0,t)}px`)}visiblePageInlineBounds(){const e=this.getBoundingClientRect();let t=e.left,i=e.right;const a=window.visualViewport,r=a?.offsetLeft??0,s=a?.width??document.documentElement.clientWidth;s>0&&(t=Math.max(t,r),i=Math.min(i,r+s));const o=this.getRootNode();let n=this.parentElement??(o instanceof ShadowRoot?o.host:null);for(;n;){const g=getComputedStyle(n).overflowX;if(["auto","clip","hidden","scroll"].includes(g)){const h=n.getBoundingClientRect();t=Math.max(t,h.left),i=Math.min(i,h.right)}const d=n.getRootNode();n=n.parentElement??(d instanceof ShadowRoot?d.host:null)}return{left:t,right:i,width:Math.max(0,i-t)}}visibleSpaceWidth(){const e=this.previewSpace.value?.getBoundingClientRect();if(!e)return 0;const t=this.visiblePageInlineBounds(),i=Math.max(0,t.left-e.left),a=Math.max(0,e.right-t.right);return Math.max(0,e.width-i-a)}probeWidth(e){return e.value?.getBoundingClientRect().width??0}allocateWorkspaceWidths(e,t,i,a,r,s,o){const n=Math.max(0,e),g=Math.max(0,a),d=Math.max(g,r),h=Math.max(0,s),p=Math.max(h,o);let u=0,f=0;return t&&i?(u=Math.min(d,Math.max(g,n-h)),f=Math.min(p,Math.max(h,n-u))):t?u=Math.min(d,Math.max(g,n)):i&&(f=Math.min(p,Math.max(h,n))),{previewWidth:u,flyoutWidth:f}}previewFitsWithinPage(e,t,i,a,r,s){const o=this.shadowRoot?.querySelector(".esp-page-main"),n=this.shadowRoot?.querySelector(".esp-page-preview"),g=this.shadowRoot?.querySelector(".esp-page-flyout");if(!o||!n||!g)return!1;const d=this.visiblePageInlineBounds(),h=o.getBoundingClientRect(),p=n.getBoundingClientRect(),u=g.getBoundingClientRect(),f=Math.max(t,i),M=Math.max(r,s),O=p.width+l>=t&&p.width<=f+l,R=!a||u.width+l>=r&&u.width<=M+l,x=p.left+l>=d.left&&p.right<=d.right+l&&(!a||u.left+l>=d.left&&u.right<=d.right+l),c=getComputedStyle(this).direction==="rtl"?h.left+l>=p.right&&(!a||p.left+l>=u.right):h.right<=p.left+l&&(!a||p.right<=u.left+l);return h.width+l>=e&&O&&R&&x&&c}flyoutFitsWithinPage(e,t,i){const a=this.shadowRoot?.querySelector(".esp-page-main"),r=this.shadowRoot?.querySelector(".esp-page-flyout");if(!a||!r)return!1;const s=this.visiblePageInlineBounds(),o=a.getBoundingClientRect(),n=r.getBoundingClientRect(),g=Math.max(t,i),d=n.width+l>=t&&n.width<=g+l,h=n.left+l>=s.left&&n.right<=s.right+l,p=getComputedStyle(this).direction==="rtl"?o.left+l>=n.right:o.right<=n.left+l;return o.width+l>=e&&d&&h&&p}workspaceMinimumsCanFit(e,t,i,a,r){const s=this.visiblePageInlineBounds().width;if(s<=0||e<=0||t&&i<=0||a&&r<=0)return!1;const o=this.shadowRoot?.querySelector(".esp-page-left")?.getBoundingClientRect().width??0,n=this.shadowRoot?.querySelector(".esp-page-right")?.getBoundingClientRect().width??0,d=(t&&this.getPreviewNavigationPair()!==null?0:o)+n+e+(t?i:0)+(a?r:0);return s+l>=d}workspaceGeometrySample(){const e=this.visiblePageInlineBounds(),t=this.shadowRoot?.querySelector(".esp-page-main")?.getBoundingClientRect(),i=this.shadowRoot?.querySelector(".esp-page-preview")?.getBoundingClientRect(),a=this.shadowRoot?.querySelector(".esp-page-flyout")?.getBoundingClientRect();return[e.left,e.right,e.width,t?.left??0,t?.right??0,t?.width??0,i?.left??0,i?.right??0,i?.width??0,a?.left??0,a?.right??0,a?.width??0]}workspaceGeometryMatches(e,t){return e.length===t.length&&e.every((i,a)=>Math.abs(i-(t[a]??i))<=l)}workspaceCandidateIsMeasurable(e,t){const i=this.shadowRoot?.querySelector(".esp-page-preview")?.getBoundingClientRect().width??0,a=this.shadowRoot?.querySelector(".esp-page-flyout")?.getBoundingClientRect().width??0;return(!e||i>l)&&(!t||a>l)}async candidateFitsAfterLayoutSettles(e,t,i){if(await this.updateComplete,e!==this.previewSyncGeneration||!this.isConnected)return null;let a=null,r=0;for(let s=0;s<U;s+=1){if(await new Promise(n=>requestAnimationFrame(()=>n())),e!==this.previewSyncGeneration||!this.isConnected)return null;if(t())return!0;if(!i()){a=null,r=0;continue}const o=this.workspaceGeometrySample();if(r=a&&this.workspaceGeometryMatches(a,o)?r+1:1,r>=H)return!1;a=o}return null}async promoteFlyoutIfClipped(e,t,i,a){if(i<=0)return!1;const r=await this.candidateFitsAfterLayoutSettles(e,()=>this.flyoutFitsWithinPage(t,i,a),()=>this.workspaceCandidateIsMeasurable(!1,!0));return r===null?!0:r?!1:(await this.promoteFlyoutToOverlay(),!0)}async promoteFlyoutToOverlay(){this.setPreviewLayoutState(!1,!1),this.setWorkspaceWidths(0,0),this.flyoutOverlayPromotionWidth===null&&(this.flyoutOverlayPromotionWidth=this.visiblePageInlineBounds().width,this.armFlyoutOverlayRecovery()),await this.setPageFlyoutOverlay(!0)}async syncPreviewLayout(e,t=!0){if(e!==this.previewSyncGeneration||!this.isConnected)return;let i=!1;const a=this.previewVisible;this.toggleAttribute("data-preview-measuring",!0);try{const r=this.previewOpen&&this.previewHasContent(),s=this.previewMediaQuery?.matches??!1,o=this.hasAttribute("flyout-overlay-open"),n=this.hasAttribute("flyout-open"),g=this.hasAttribute("data-preview-navigation-collapsed")?this.previewCollapsedSidebarWidth:0,d=this.probeWidth(this.previewMinWidthProbe),h=this.probeWidth(this.previewMaxWidthProbe),p=this.probeWidth(this.flyoutMinWidthProbe),u=this.probeWidth(this.flyoutMaxWidthProbe),f=this.probeWidth(this.mainMinWidthProbe),M=this.openAutoFlyouts().some(k=>k.pageOverlayRequested===!0);if(this.setPreviewLayoutState(!1,!1),this.setWorkspaceWidths(0,0),M){const k=this.visiblePageInlineBounds().width,E=this.flyoutOverlayPromotionWidth===null||k>=this.flyoutOverlayPromotionWidth+V;!s&&t&&this.flyoutOverlayRecoveryReady&&E&&this.workspaceMinimumsCanFit(f,r,d,!0,p)?await this.setPageFlyoutOverlay(!1):s&&await this.setPageFlyoutOverlay(!1);return}if(this.toggleAttribute("data-preview-navigation-collapsed",!1),await this.updateComplete,e!==this.previewSyncGeneration)return;const O=this.visibleSpaceWidth(),R=Math.max(0,O-g),x=r&&!s&&!o,c=n&&!s;if(f>0&&(!x||d>0)&&(!c||p>0)&&(x||c)&&!this.workspaceMinimumsCanFit(f,x,d,c,p)){c&&await this.promoteFlyoutToOverlay();return}const C=(x?d:0)+(c?p:0);let S=this.allocateWorkspaceWidths(R,x,c,d,h,p,u);if(this.setWorkspaceWidths(S.previewWidth,S.flyoutWidth),!x||d<=0){c&&await this.promoteFlyoutIfClipped(e,f,p,u);return}if(R+l>=C){a||this.toggleAttribute("data-preview-validating",!0),this.setPreviewLayoutState(!0,!1);const k=await this.candidateFitsAfterLayoutSettles(e,()=>this.previewFitsWithinPage(f,d,h,c,p,u),()=>this.workspaceCandidateIsMeasurable(!0,c));if(k===null)return;if(k){this.toggleAttribute("data-preview-validating",!1);return}this.setPreviewLayoutState(!1,!1),this.setWorkspaceWidths(0,c?p:0),c&&await this.promoteFlyoutToOverlay();return}const _=(this.shadowRoot?.querySelector(".esp-page-main")?.getBoundingClientRect().width??0)+R+l>=f+C;if(i=_?!1:await this.setPreviewNavigationCollapse(this.previewCollapseSidebar),_&&await this.setPreviewNavigationCollapse(!1),e!==this.previewSyncGeneration||(a||this.toggleAttribute("data-preview-validating",!0),this.setPreviewLayoutState(!0,!0),await this.updateComplete,e!==this.previewSyncGeneration))return;const L=this.visibleSpaceWidth();S=this.allocateWorkspaceWidths(L,!0,c,d,h,p,u),this.setWorkspaceWidths(S.previewWidth,S.flyoutWidth);const A=await this.candidateFitsAfterLayoutSettles(e,()=>this.previewFitsWithinPage(f,d,h,c,p,u),()=>this.workspaceCandidateIsMeasurable(!0,c));if(A===null)return;A?this.toggleAttribute("data-preview-validating",!1):(this.setPreviewLayoutState(!1,!1),this.setWorkspaceWidths(0,c?p:0),i=!1,c&&await this.promoteFlyoutToOverlay())}finally{e===this.previewSyncGeneration&&!i&&await this.setPreviewNavigationCollapse(!1),e===this.previewSyncGeneration&&(this.toggleAttribute("data-preview-measuring",!1),this.toggleAttribute("data-preview-validating",!1))}}setupPreviewLayoutObserver(){if(this.isConnected){if(!this.previewMediaQuery&&typeof window.matchMedia=="function"&&(this.previewMediaQuery=window.matchMedia($),this.previewMediaQuery.addEventListener("change",this.onPreviewMediaChange)),!this.previewResizeObserver&&typeof ResizeObserver<"u"){this.previewResizeObserver=new ResizeObserver(this.onPreviewResize),this.previewResizeObserver.observe(this);for(const e of[this.previewMinWidthProbe,this.previewMaxWidthProbe,this.flyoutMinWidthProbe,this.flyoutMaxWidthProbe,this.mainMinWidthProbe])e.value&&this.previewResizeObserver.observe(e.value)}this.schedulePreviewLayout(!0)}}footerElementProvidesLandmark(e){return e.matches(z)||e.querySelector(z)!==null}syncFooterLandmark(){const t=(this.footerSlot.value?.assignedElements({flatten:!0})??[]).some(i=>this.footerElementProvidesLandmark(i));this.footerWrapperIsLandmark=!t}showPreview(){this.previewOpen=!0}closePreview(){this.previewOpen=!1}togglePreview(){this.previewOpen=!this.previewOpen}AddDialog(e){this.dialogZone.value?.appendChild(e)}firstUpdated(e){super.firstUpdated(e),this.syncFlyoutState(),this.setupPreviewLayoutObserver()}updated(e){super.updated(e),(e.has("fixedMenus")||e.has("headerPosition"))&&D().publish("fixed-menus-changed",{fixed:this.fixedMenus||this.headerPosition==="fixed"}),(e.has("previewOpen")||e.has("previewCollapseSidebar"))&&this.schedulePreviewLayout(!0)}render(){const e=this.fixedMenus||this.headerPosition==="fixed",t=!e&&this.headerPosition==="sticky";return q`
|
|
2
|
+
<div part="wrapper" class="esp-page ${G({"fixed-menus":e,"fixed-header":e,"sticky-header":t})}">
|
|
3
3
|
<div part="canvas" class="esp-page-canvas esp-page-canvas--left" aria-hidden="true"></div>
|
|
4
4
|
<div part="canvas" class="esp-page-canvas esp-page-canvas--right" aria-hidden="true"></div>
|
|
5
5
|
<div part="surface" class="esp-page-surface" aria-hidden="true"></div>
|
|
6
6
|
<div class="esp-page-top">
|
|
7
|
-
<slot name="header"></slot>
|
|
7
|
+
<slot name="header" @slotchange=${this.schedulePreviewLayout}></slot>
|
|
8
8
|
</div>
|
|
9
9
|
<aside class="esp-page-left">
|
|
10
10
|
<div class="sticky-wrapper">
|
|
11
|
-
<slot name="sidebar"></slot>
|
|
11
|
+
<slot name="sidebar" @slotchange=${this.schedulePreviewLayout}></slot>
|
|
12
12
|
</div>
|
|
13
13
|
</aside>
|
|
14
14
|
<div class="esp-page-main">
|
|
@@ -23,20 +23,81 @@ var i=function(h,e,a,s){var d=arguments.length,o=d<3?e:s===null?s=Object.getOwnP
|
|
|
23
23
|
<div class="sticky-wrapper">
|
|
24
24
|
<slot
|
|
25
25
|
name="flyout"
|
|
26
|
-
${
|
|
26
|
+
${b(this.flyoutSlot)}
|
|
27
27
|
@slotchange=${()=>this.syncFlyoutState()}
|
|
28
28
|
></slot>
|
|
29
29
|
</div>
|
|
30
30
|
</div>
|
|
31
|
-
<div
|
|
32
|
-
|
|
31
|
+
<div
|
|
32
|
+
class="esp-page-preview-width-probe esp-page-preview-min-width-probe"
|
|
33
|
+
aria-hidden="true"
|
|
34
|
+
${b(this.previewMinWidthProbe)}
|
|
35
|
+
></div>
|
|
36
|
+
<div
|
|
37
|
+
class="esp-page-preview-max-width-probe"
|
|
38
|
+
aria-hidden="true"
|
|
39
|
+
${b(this.previewMaxWidthProbe)}
|
|
40
|
+
></div>
|
|
41
|
+
<div
|
|
42
|
+
class="esp-page-flyout-min-width-probe"
|
|
43
|
+
aria-hidden="true"
|
|
44
|
+
${b(this.flyoutMinWidthProbe)}
|
|
45
|
+
></div>
|
|
46
|
+
<div
|
|
47
|
+
class="esp-page-flyout-max-width-probe"
|
|
48
|
+
aria-hidden="true"
|
|
49
|
+
${b(this.flyoutMaxWidthProbe)}
|
|
50
|
+
></div>
|
|
51
|
+
<div
|
|
52
|
+
class="esp-page-preview-main-min-probe esp-page-main-min-width-probe"
|
|
53
|
+
aria-hidden="true"
|
|
54
|
+
${b(this.mainMinWidthProbe)}
|
|
55
|
+
></div>
|
|
56
|
+
<div class="esp-page-preview-space" ${b(this.previewSpace)}>
|
|
57
|
+
<aside part="preview" class="esp-page-preview" aria-label=${this.previewLabel}>
|
|
58
|
+
<div part="preview-content" class="sticky-wrapper">
|
|
59
|
+
<slot
|
|
60
|
+
name="preview"
|
|
61
|
+
${b(this.previewSlot)}
|
|
62
|
+
@slotchange=${this.schedulePreviewLayout}
|
|
63
|
+
></slot>
|
|
64
|
+
</div>
|
|
65
|
+
</aside>
|
|
33
66
|
</div>
|
|
34
|
-
<div
|
|
67
|
+
<div class="esp-page-footer" role=${this.footerWrapperIsLandmark?"contentinfo":T}>
|
|
68
|
+
<slot name="footer" ${b(this.footerSlot)} @slotchange=${this.syncFooterLandmark}></slot>
|
|
69
|
+
</div>
|
|
70
|
+
<div id="dialog-drop-zone" ${b(this.dialogZone)}></div>
|
|
35
71
|
<esp-toaster></esp-toaster>
|
|
36
72
|
</div>
|
|
37
|
-
`}};
|
|
73
|
+
`}};v.styles=[...F.styles,B`
|
|
38
74
|
:host {
|
|
39
|
-
--_esp-page-resolved-max-width: var(
|
|
75
|
+
--_esp-page-resolved-max-width: var(
|
|
76
|
+
--esp-page-main-max-width,
|
|
77
|
+
var(--esp-page-max-width, 1536px)
|
|
78
|
+
);
|
|
79
|
+
--_esp-page-main-min-width: var(
|
|
80
|
+
--esp-page-main-min-width,
|
|
81
|
+
var(--esp-page-preview-min-main-width, 30rem)
|
|
82
|
+
);
|
|
83
|
+
--_esp-page-preview-resolved-min-width: var(
|
|
84
|
+
--esp-page-preview-width,
|
|
85
|
+
var(--esp-page-preview-min-width, 22.5rem)
|
|
86
|
+
);
|
|
87
|
+
--_esp-page-preview-resolved-max-width: var(
|
|
88
|
+
--esp-page-preview-width,
|
|
89
|
+
var(--esp-page-preview-max-width, 48rem)
|
|
90
|
+
);
|
|
91
|
+
--_esp-page-flyout-resolved-min-width: var(
|
|
92
|
+
--esp-page-flyout-width,
|
|
93
|
+
var(--esp-page-flyout-min-width, 20rem)
|
|
94
|
+
);
|
|
95
|
+
--_esp-page-flyout-resolved-max-width: var(
|
|
96
|
+
--esp-page-flyout-width,
|
|
97
|
+
var(--esp-page-flyout-max-width, 30rem)
|
|
98
|
+
);
|
|
99
|
+
--_esp-page-preview-used-width: 0px;
|
|
100
|
+
--_esp-page-flyout-used-width: 0px;
|
|
40
101
|
|
|
41
102
|
--_esp-page-main-track: minmax(0, var(--_esp-page-resolved-max-width));
|
|
42
103
|
|
|
@@ -45,6 +106,8 @@ var i=function(h,e,a,s){var d=arguments.length,o=d<3?e:s===null?s=Object.getOwnP
|
|
|
45
106
|
|
|
46
107
|
--_esp-page-flyout-min: 0px;
|
|
47
108
|
|
|
109
|
+
--_esp-page-preview-min: 0px;
|
|
110
|
+
|
|
48
111
|
--_esp-page-surface-edge-shadow: 0.75rem 0 1.5rem -0.75rem var(--esp-color-shadow);
|
|
49
112
|
|
|
50
113
|
--_esp-page-surface-shadow: var(
|
|
@@ -62,7 +125,10 @@ var i=function(h,e,a,s){var d=arguments.length,o=d<3?e:s===null?s=Object.getOwnP
|
|
|
62
125
|
}
|
|
63
126
|
|
|
64
127
|
:host([kind="narrow"]) {
|
|
65
|
-
--_esp-page-resolved-max-width: var(
|
|
128
|
+
--_esp-page-resolved-max-width: var(
|
|
129
|
+
--esp-page-main-max-width,
|
|
130
|
+
var(--esp-page-max-width, 768px)
|
|
131
|
+
);
|
|
66
132
|
}
|
|
67
133
|
|
|
68
134
|
:host([align="center"]) {
|
|
@@ -77,7 +143,10 @@ var i=function(h,e,a,s){var d=arguments.length,o=d<3?e:s===null?s=Object.getOwnP
|
|
|
77
143
|
|
|
78
144
|
|
|
79
145
|
:host([kind="full"]) {
|
|
80
|
-
--_esp-page-resolved-max-width: var(
|
|
146
|
+
--_esp-page-resolved-max-width: var(
|
|
147
|
+
--esp-page-main-max-width,
|
|
148
|
+
var(--esp-page-max-width, none)
|
|
149
|
+
);
|
|
81
150
|
--_esp-page-main-track: 1fr;
|
|
82
151
|
--_esp-page-gutter-left: 0fr;
|
|
83
152
|
--_esp-page-gutter-right: 0fr;
|
|
@@ -85,7 +154,24 @@ var i=function(h,e,a,s){var d=arguments.length,o=d<3?e:s===null?s=Object.getOwnP
|
|
|
85
154
|
|
|
86
155
|
|
|
87
156
|
:host([flyout-open]) {
|
|
88
|
-
--_esp-page-flyout-min: var(--
|
|
157
|
+
--_esp-page-flyout-min: var(--_esp-page-flyout-resolved-min-width);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
:host([preview-reclaiming]) {
|
|
161
|
+
--_esp-page-preview-min: var(--_esp-page-preview-resolved-min-width);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
:host([flyout-open]),
|
|
165
|
+
:host([preview-reclaiming]) {
|
|
166
|
+
--_esp-page-main-track: minmax(
|
|
167
|
+
var(--_esp-page-main-min-width),
|
|
168
|
+
var(--_esp-page-resolved-max-width)
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
:host([kind="full"][flyout-open]),
|
|
173
|
+
:host([kind="full"][preview-reclaiming]) {
|
|
174
|
+
--_esp-page-main-track: minmax(var(--_esp-page-main-min-width), 1fr);
|
|
89
175
|
}
|
|
90
176
|
|
|
91
177
|
|
|
@@ -93,6 +179,24 @@ var i=function(h,e,a,s){var d=arguments.length,o=d<3?e:s===null?s=Object.getOwnP
|
|
|
93
179
|
:host([flyout-open]) {
|
|
94
180
|
--_esp-page-flyout-min: 0px;
|
|
95
181
|
}
|
|
182
|
+
|
|
183
|
+
:host([preview-reclaiming]) {
|
|
184
|
+
--_esp-page-preview-min: 0px;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
:host([flyout-open]),
|
|
188
|
+
:host([preview-reclaiming]) {
|
|
189
|
+
--_esp-page-main-track: minmax(0, var(--_esp-page-resolved-max-width));
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
:host([kind="full"][flyout-open]),
|
|
193
|
+
:host([kind="full"][preview-reclaiming]) {
|
|
194
|
+
--_esp-page-main-track: 1fr;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.esp-page > .esp-page-preview-space {
|
|
198
|
+
display: none;
|
|
199
|
+
}
|
|
96
200
|
}
|
|
97
201
|
|
|
98
202
|
|
|
@@ -101,11 +205,27 @@ var i=function(h,e,a,s){var d=arguments.length,o=d<3?e:s===null?s=Object.getOwnP
|
|
|
101
205
|
}
|
|
102
206
|
|
|
103
207
|
|
|
208
|
+
:host([descendant-flyout-overlay-open]) .esp-page > div.esp-page-main {
|
|
209
|
+
z-index: var(--esp-flyout-z-index, 3000);
|
|
210
|
+
overflow: visible;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
|
|
104
214
|
:host([flyout-anchored]) .esp-page > div.esp-page-flyout > .sticky-wrapper {
|
|
105
215
|
position: static;
|
|
106
216
|
}
|
|
107
217
|
|
|
108
218
|
|
|
219
|
+
:host([flyout-anchored][preview-visible]) .esp-page > div.esp-page-flyout {
|
|
220
|
+
z-index: calc(var(--esp-page-header-z-index, 20) + 2);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
slot[name="flyout"]::slotted(esp-flyout) {
|
|
224
|
+
--_esp-flyout-used-width: var(--_esp-page-flyout-used-width);
|
|
225
|
+
--_esp-flyout-preview-bridge-width: var(--_esp-page-preview-used-width);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
|
|
109
229
|
slot[name="flyout"]::slotted(esp-flyout[match-surface]) {
|
|
110
230
|
--esp-flyout-shadow: var(--_esp-page-surface-edge-shadow);
|
|
111
231
|
}
|
|
@@ -175,6 +295,25 @@ var i=function(h,e,a,s){var d=arguments.length,o=d<3?e:s===null?s=Object.getOwnP
|
|
|
175
295
|
position: absolute;
|
|
176
296
|
}
|
|
177
297
|
|
|
298
|
+
:host([preview-visible]) .esp-page > div.esp-page-preview-space > .esp-page-preview {
|
|
299
|
+
display: block;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
:host([data-preview-navigation-collapsed]) .esp-page > aside.esp-page-left {
|
|
304
|
+
inline-size: 0;
|
|
305
|
+
min-inline-size: 0;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
:host([data-preview-measuring]) .esp-page {
|
|
309
|
+
transition: none;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
:host([data-preview-validating]) .esp-page-preview {
|
|
314
|
+
visibility: hidden;
|
|
315
|
+
}
|
|
316
|
+
|
|
178
317
|
.esp-page {
|
|
179
318
|
|
|
180
319
|
min-height: 100vh;
|
|
@@ -186,7 +325,7 @@ var i=function(h,e,a,s){var d=arguments.length,o=d<3?e:s===null?s=Object.getOwnP
|
|
|
186
325
|
[left-end main-start] var(--_esp-page-main-track)
|
|
187
326
|
[main-end right-start] min-content
|
|
188
327
|
[right-end surface-end canvas-right-start flyout-start] minmax(
|
|
189
|
-
var(--_esp-page-flyout-min),
|
|
328
|
+
calc(var(--_esp-page-flyout-min) + var(--_esp-page-preview-min)),
|
|
190
329
|
var(--_esp-page-gutter-right)
|
|
191
330
|
)
|
|
192
331
|
[flyout-end canvas-right-end full-end];
|
|
@@ -264,6 +403,9 @@ var i=function(h,e,a,s){var d=arguments.length,o=d<3?e:s===null?s=Object.getOwnP
|
|
|
264
403
|
grid-row: content;
|
|
265
404
|
z-index: 5;
|
|
266
405
|
position: relative;
|
|
406
|
+
inline-size: var(--_esp-page-flyout-used-width);
|
|
407
|
+
min-inline-size: 0;
|
|
408
|
+
margin-inline-start: var(--_esp-page-preview-used-width);
|
|
267
409
|
|
|
268
410
|
|
|
269
411
|
@media (max-width: 50em) {
|
|
@@ -272,6 +414,64 @@ var i=function(h,e,a,s){var d=arguments.length,o=d<3?e:s===null?s=Object.getOwnP
|
|
|
272
414
|
}
|
|
273
415
|
|
|
274
416
|
|
|
417
|
+
> div.esp-page-preview-space {
|
|
418
|
+
grid-column: flyout;
|
|
419
|
+
grid-row: content;
|
|
420
|
+
z-index: 4;
|
|
421
|
+
position: relative;
|
|
422
|
+
min-inline-size: 0;
|
|
423
|
+
|
|
424
|
+
> .esp-page-preview {
|
|
425
|
+
display: none;
|
|
426
|
+
box-sizing: border-box;
|
|
427
|
+
inline-size: var(--_esp-page-preview-used-width);
|
|
428
|
+
position: relative;
|
|
429
|
+
background: var(
|
|
430
|
+
--esp-page-preview-background,
|
|
431
|
+
var(
|
|
432
|
+
--esp-page-main-background,
|
|
433
|
+
var(--esp-page-background, var(--esp-color-background))
|
|
434
|
+
)
|
|
435
|
+
);
|
|
436
|
+
border-inline-start: var(--esp-page-preview-border, 1px dotted var(--esp-color-border));
|
|
437
|
+
box-shadow: var(--esp-page-preview-shadow, var(--_esp-page-surface-edge-shadow));
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
> .esp-page-preview-min-width-probe,
|
|
443
|
+
> .esp-page-preview-max-width-probe,
|
|
444
|
+
> .esp-page-flyout-min-width-probe,
|
|
445
|
+
> .esp-page-flyout-max-width-probe,
|
|
446
|
+
> .esp-page-main-min-width-probe {
|
|
447
|
+
position: absolute;
|
|
448
|
+
block-size: 0;
|
|
449
|
+
visibility: hidden;
|
|
450
|
+
pointer-events: none;
|
|
451
|
+
contain: strict;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
> .esp-page-preview-min-width-probe {
|
|
455
|
+
inline-size: var(--_esp-page-preview-resolved-min-width);
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
> .esp-page-preview-max-width-probe {
|
|
459
|
+
inline-size: var(--_esp-page-preview-resolved-max-width);
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
> .esp-page-flyout-min-width-probe {
|
|
463
|
+
inline-size: var(--_esp-page-flyout-resolved-min-width);
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
> .esp-page-flyout-max-width-probe {
|
|
467
|
+
inline-size: var(--_esp-page-flyout-resolved-max-width);
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
> .esp-page-main-min-width-probe {
|
|
471
|
+
inline-size: var(--_esp-page-main-min-width);
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
|
|
275
475
|
> .esp-page-canvas {
|
|
276
476
|
|
|
277
477
|
grid-row: top-start / footer-end;
|
|
@@ -389,9 +589,36 @@ var i=function(h,e,a,s){var d=arguments.length,o=d<3?e:s===null?s=Object.getOwnP
|
|
|
389
589
|
overflow: hidden;
|
|
390
590
|
}
|
|
391
591
|
|
|
592
|
+
|
|
593
|
+
:host([preview-visible]) .esp-page > .esp-page-surface {
|
|
594
|
+
box-shadow: none;
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
|
|
598
|
+
.esp-page > div.esp-page-preview-space {
|
|
599
|
+
grid-row: top-start / footer-end;
|
|
600
|
+
z-index: calc(var(--esp-page-header-z-index, 20) + 1);
|
|
601
|
+
pointer-events: none;
|
|
602
|
+
|
|
603
|
+
> .esp-page-preview {
|
|
604
|
+
position: absolute;
|
|
605
|
+
inset-block: 0;
|
|
606
|
+
inset-inline-start: 0;
|
|
607
|
+
pointer-events: auto;
|
|
608
|
+
|
|
609
|
+
> .sticky-wrapper {
|
|
610
|
+
block-size: 100vh;
|
|
611
|
+
block-size: 100dvh;
|
|
612
|
+
overflow-y: auto;
|
|
613
|
+
|
|
614
|
+
overscroll-behavior-y: auto;
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
|
|
392
619
|
@media (prefers-reduced-motion: reduce) {
|
|
393
620
|
.esp-page {
|
|
394
621
|
transition: none;
|
|
395
622
|
}
|
|
396
623
|
}
|
|
397
|
-
`],
|
|
624
|
+
`],w([N()],v.prototype,"footerWrapperIsLandmark",void 0),w([m({reflect:!0})],v.prototype,"kind",void 0),w([m({reflect:!0})],v.prototype,"align",void 0),w([m({type:Boolean,reflect:!0})],v.prototype,"contained",void 0),w([m({attribute:"header-position",reflect:!0})],v.prototype,"headerPosition",void 0),w([m({attribute:"fixed-menus",type:Boolean,reflect:!0})],v.prototype,"fixedMenus",void 0),w([m({attribute:"preview-open",type:Boolean,reflect:!0})],v.prototype,"previewOpen",void 0),w([m({attribute:"preview-label",type:String,reflect:!0})],v.prototype,"previewLabel",void 0),w([m({attribute:"preview-collapse-sidebar",type:Boolean,reflect:!0})],v.prototype,"previewCollapseSidebar",void 0),w([m({attribute:"preview-visible",type:Boolean,reflect:!0})],v.prototype,"previewVisible",void 0),w([m({attribute:"preview-reclaiming",type:Boolean,reflect:!0})],v.prototype,"previewReclaiming",void 0),v=w([I("esp-page")],v);export{v as EspalierPage};
|