efficient-web-builder 42.0.0 → 43.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/CHANGELOG.md +164 -0
- package/dist/editor/components/AnchorField.js +1 -1
- package/dist/editor/components/DuplicatePageDialog.js +1 -1
- package/dist/editor/components/MediaUploadField.d.ts +3 -1
- package/dist/editor/components/MediaUploadField.js +1 -1
- package/dist/editor/components/PagesPanel.js +1 -1
- package/dist/editor/components/SectionEditor.d.ts +5 -1
- package/dist/editor/components/SectionEditor.js +1 -1
- package/dist/editor/components/SectionIcon.js +1 -1
- package/dist/editor/components/SectionThumbnail.js +1 -1
- package/dist/editor/components/SiteFields.d.ts +2 -1
- package/dist/editor/components/SiteFields.js +1 -1
- package/dist/editor/components/StorefrontEditor.js +1 -1
- package/dist/editor/components/StylesPanel.d.ts +3 -1
- package/dist/editor/components/StylesPanel.js +1 -1
- package/dist/editor/components/WebsiteScreenParts.js +1 -1
- package/dist/editor/components/WebsiteSettingsPanel.d.ts +6 -1
- package/dist/editor/components/WebsiteSettingsPanel.js +1 -1
- package/dist/editor/components/useHostDocumentBridge.js +1 -1
- package/dist/editor/components/useLocationsTree.js +1 -1
- package/dist/editor/components/useSectionToBoxPass.js +1 -1
- package/dist/editor/components/useSocialSettings.d.ts +2 -2
- package/dist/editor/lib/document/ColourControl.d.ts +7 -2
- package/dist/editor/lib/document/ColourControl.js +1 -1
- package/dist/editor/lib/document/blocks/general/ButtonBlock/fields.js +1 -1
- package/dist/editor/lib/document/blocks/general/Flex/fields.js +1 -1
- package/dist/editor/lib/document/blocks/general/HeroSlide/fields.js +1 -1
- package/dist/editor/lib/document/blocks/general/Logos/fields.js +1 -1
- package/dist/editor/lib/document/blocks/general/Text/fields.js +1 -1
- package/dist/editor/lib/document/blocks/general/index.d.ts +2 -2
- package/dist/editor/lib/document/canvas-typing.js +1 -1
- package/dist/editor/lib/document/consent-words-field.d.ts +6 -0
- package/dist/editor/lib/document/consent-words-field.js +1 -0
- package/dist/editor/lib/document/controls.d.ts +13 -2
- package/dist/editor/lib/document/controls.js +1 -1
- package/dist/editor/lib/document/field-groups.js +1 -1
- package/dist/editor/lib/document/footer-blocks.js +1 -1
- package/dist/editor/lib/document/locked-blocks.d.ts +3 -0
- package/dist/editor/lib/document/locked-blocks.js +1 -1
- package/dist/editor/lib/document/overrides.js +1 -1
- package/dist/editor/lib/document/page-root-fields.d.ts +1 -0
- package/dist/editor/lib/document/page-root-fields.js +1 -1
- package/dist/editor/lib/document/section-width-fields.js +1 -1
- package/dist/editor/lib/document/selected-host.d.ts +2 -0
- package/dist/editor/lib/document/selected-host.js +1 -0
- package/dist/editor/lib/page-copy.js +1 -1
- package/dist/editor/lib/sections/section-dry-run.d.ts +2 -9
- package/dist/editor/lib/sections/section-dry-run.js +2 -2
- package/dist/format/lib/content/authored-props.js +1 -1
- package/dist/format/lib/content/block-sources.js +1 -1
- package/dist/format/lib/content/box-layout.d.ts +1 -0
- package/dist/format/lib/content/box-layout.js +1 -1
- package/dist/format/lib/content/box-shadow.d.ts +3 -0
- package/dist/format/lib/content/box-shadow.js +1 -0
- package/dist/format/lib/content/button-icon.d.ts +2 -1
- package/dist/format/lib/content/button-icon.js +1 -1
- package/dist/format/lib/content/button-look.d.ts +46 -0
- package/dist/format/lib/content/button-look.js +1 -0
- package/dist/format/lib/content/consent-banner.d.ts +21 -0
- package/dist/format/lib/content/consent-banner.js +1 -1
- package/dist/format/lib/content/contact.js +1 -1
- package/dist/format/lib/content/footer.d.ts +10 -0
- package/dist/format/lib/content/footer.js +1 -1
- package/dist/format/lib/content/gallery-layout.d.ts +12 -0
- package/dist/format/lib/content/gallery-layout.js +1 -1
- package/dist/format/lib/content/section-padding.d.ts +10 -0
- package/dist/format/lib/content/section-padding.js +1 -1
- package/dist/format/lib/content/section-width.d.ts +0 -4
- package/dist/format/lib/content/section-width.js +1 -1
- package/dist/format/lib/document/blocks/general/Logos/meta.d.ts +6 -0
- package/dist/format/lib/document/blocks/general/Logos/meta.js +1 -1
- package/dist/format/lib/document/blocks/general/SectionHeader/meta.js +1 -1
- package/dist/format/lib/document/box-footer.js +1 -1
- package/dist/format/lib/document/container-blocks.js +1 -1
- package/dist/format/lib/document/media-manifest.json +3 -2
- package/dist/format/lib/document/nestable-content-sections.js +1 -1
- package/dist/format/lib/document/passes/settings-groups.js +1 -1
- package/dist/format/lib/document/root-panel.d.ts +8 -0
- package/dist/format/lib/document/root-panel.js +1 -0
- package/dist/format/lib/document/section-catalog.js +1 -1
- package/dist/format/lib/document/source-bound-parts.js +1 -1
- package/dist/format/lib/editor-words-catalogue.d.ts +23 -4
- package/dist/format/lib/editor-words-catalogue.js +4 -4
- package/dist/format/lib/editor-words.js +1 -1
- package/dist/format/lib/hero-texture.js +1 -1
- package/dist/format/lib/hero-video.d.ts +7 -0
- package/dist/format/lib/hero-video.js +1 -1
- package/dist/format/lib/links/page-link-rules.js +1 -1
- package/dist/format/lib/non-empty-string.d.ts +1 -0
- package/dist/format/lib/non-empty-string.js +1 -0
- package/dist/format/lib/popup/look.d.ts +1 -1
- package/dist/format/lib/popup/look.js +1 -1
- package/dist/format/lib/reel.d.ts +2 -1
- package/dist/format/lib/reel.js +1 -1
- package/dist/format/lib/sections/hero-overlay.js +1 -1
- package/dist/format/lib/sections/logo-look.d.ts +7 -0
- package/dist/format/lib/sections/logo-look.js +1 -0
- package/dist/format/lib/sections/section-head-placement.d.ts +1 -0
- package/dist/format/lib/sections/section-head-placement.js +1 -1
- package/dist/format/lib/site-theme-row.d.ts +0 -1
- package/dist/format/lib/slugify.d.ts +1 -1
- package/dist/format/lib/slugify.js +1 -1
- package/dist/format/lib/theme.d.ts +2 -1
- package/dist/format/lib/theme.js +4 -4
- package/dist/render/components/BoxTabs.d.ts +2 -1
- package/dist/render/components/BoxTabs.js +1 -1
- package/dist/render/components/Btn.d.ts +1 -0
- package/dist/render/components/Btn.js +1 -1
- package/dist/render/components/ButtonBlock.d.ts +12 -1
- package/dist/render/components/ButtonBlock.js +1 -1
- package/dist/render/components/DocBody.js +5 -5
- package/dist/render/components/Flex.d.ts +3 -1
- package/dist/render/components/Flex.js +1 -1
- package/dist/render/components/LogoBlock.d.ts +1 -1
- package/dist/render/components/LogoBlock.js +1 -1
- package/dist/render/components/LogoWallContext.d.ts +12 -0
- package/dist/render/components/LogoWallContext.js +1 -0
- package/dist/render/components/Logos.d.ts +16 -1
- package/dist/render/components/Logos.js +1 -1
- package/dist/render/components/PaymentBadges.d.ts +3 -1
- package/dist/render/components/PaymentBadges.js +1 -1
- package/dist/render/components/PreviewHeaderContext.d.ts +1 -3
- package/dist/render/components/PreviewHeaderContext.js +1 -1
- package/dist/render/components/Reel.js +1 -1
- package/dist/render/components/SiteGutterFrame.d.ts +2 -1
- package/dist/render/components/SiteGutterFrame.js +1 -1
- package/dist/render/lib/document/blocks/general/ButtonBlock/render.js +1 -1
- package/dist/render/lib/document/blocks/general/Flex/render.js +1 -1
- package/dist/render/lib/document/blocks/general/HeroSlide/render.js +1 -1
- package/dist/render/lib/document/blocks/general/Logos/render.js +1 -1
- package/dist/render/lib/document/blocks/general/PaymentBadges/render.js +1 -1
- package/dist/render/lib/document/blocks/general/section-to-box-row-parts.d.ts +4 -1
- package/dist/render/lib/document/blocks/general/section-to-box-row-parts.js +1 -1
- package/dist/render/lib/document/blocks/general/section-to-box-rows-logos.d.ts +2 -0
- package/dist/render/lib/document/blocks/general/section-to-box-rows-logos.js +1 -0
- package/dist/render/lib/document/blocks/general/section-to-box-rows-stats.d.ts +5 -0
- package/dist/render/lib/document/blocks/general/section-to-box-rows-stats.js +1 -0
- package/dist/render/lib/document/blocks/general/section-to-box-rows.d.ts +0 -4
- package/dist/render/lib/document/blocks/general/section-to-box-rows.js +1 -1
- package/dist/render/lib/document/page-render.js +1 -1
- package/dist/render/lib/document/part-rows.js +1 -1
- package/dist/render/lib/document/passes/section-anchor.js +1 -1
- package/dist/render/lib/document/text-parts.js +1 -1
- package/dist/render/lib/sections/section-to-box.d.ts +2 -11
- package/dist/render/lib/sections/section-to-box.js +1 -1
- package/dist/render/lib/text-styles/site-text-styles.js +2 -2
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as n,jsxs as
|
|
1
|
+
"use client";import{jsx as n,jsxs as T,Fragment as y}from"react/jsx-runtime";import{useEasel as O,useRootFields as G}from"efficient-easel/easel";import{Inspector as W}from"efficient-easel/fields";import{SettingsGroup as v}from"efficient-easel/panel";import{useEffect as z,useRef as Y,useState as E}from"react";import j from"./ThemeField.js";import U from"./CornersField.js";import X from"./CardShadowField.js";import $ from"./ShadowColourField.js";import q from"./BlockGapField.js";import K from"./HoverEffectField.js";import M from"./PhotographyField.js";import V from"./ShareButtonField.js";import J from"./SideSpaceField.js";import{BackgroundWidthRow as Q,ContentWidthRow as Z,SITE_BACKGROUND_HINT as D,SITE_CONTENT_HINT as ee}from"./SectionWidthRows.js";import te from"./SiteAccentField.js";import ne from"./SiteTextStylesField.js";import{usePreviewHeader as S}from"../../render/components/PreviewHeaderContext.js";import{EmptyState as oe,Tabs as re,Tooltip as ie,tabButtonId as se,tabPanelId as ae}from"efficient-shell/ui";import{ContrastIcon as ce,NoteIcon as le,SettingsIcon as ue,TypeIcon as de}from"efficient-easel/icons";import{useThemeRowPersist as he}from"../lib/theme-row-persist.js";import{themeSaveNotice as pe}from"../../format/lib/theme-save-message.js";import{say as f}from"../../format/lib/editor-words.js";import{NEUTRAL_SITE_NAME as fe}from"../../format/lib/content/site-name.js";import{PAGE_WIDTH as R}from"../../format/lib/content/page-width.js";import{PAGE_STYLE_FIELDS as ge}from"../lib/document/page-root-fields.js";import{previewFrame as me}from"efficient-easel/screen/lib/document/preview-dom";import{useSiteTextStylesWriter as Se}from"../lib/site-text-styles-writer.js";import{CORNER_STYLE_TO_PX as Ce,normalizeCornerRadius as _e,normalizeCornerStyle as Te,normalizeShadowColor as xe,selectedThemeColors as ye}from"../../format/lib/theme.js";const H="sf-site-styles",we="sf-site-styles-tabpanel",be=!1,Pe="Show hints";function Ee({shown:e,onChange:t}){return n("div",{className:"sf-hints",children:T("button",{type:"button","aria-pressed":e,onClick:()=>t(!e),className:`sf-rung sf-hints-toggle${e?" is-active":""}`,children:[n(le,{size:13}),f(Pe)]})})}const At="text",B="basics",N="this-page-group",I=[{id:B,label:"Basics",icon:n(ue,{})},{id:"theme",label:"Theme",icon:n(ce,{})},{id:"text",label:"Text",icon:n(de,{})}];function Re({themeFromDocument:e,persist:t}){const{appState:o,dispatch:i}=O(l=>l),{theme:c,setTheme:r}=S(),p=o.data,h=p.root?.props??{},a=l=>{if(e){const g={...h,theme:l};i({type:"replaceRoot",root:{...p.root,props:g},recordHistory:!0})}else r(l);t({selected_preset:l.selected,theme_presets:l.themes})};return n(j,{value:e?h.theme:c,onChange:a})}function Ie({themeFromDocument:e,persist:t}){const[o,i]=E(null),{theme:c,setFonts:r,setSizes:p,setHeadingTypography:h}=S(),a=Se({themeFromDocument:e,persist:t}),{old:l,saved:g,writeRoot:m}=a,u=a.fonts,d=a.sizes,x=a.typography,w=s=>s.values.size??Be(He[s.id]??"body")??Ae[s.kind],C=s=>a.write(s),F=Fe(c),b=s=>{const _={...u,accent:s};e?m({fonts:_}):r(_),t({accent_font:s})},P=s=>{p({...d,accent:s}),t({accent_size_px:s})},k=s=>{const _={...x,weightStrong:s};e?m({headingTypography:_}):h(_),t({heading_weight_strong:s})},L=s=>{const _={...x,italicStrong:s};e?m({headingTypography:_}):h(_),t({accent_italic:s})};return T(y,{children:[n(ne,{saved:g,old:l,colours:F,sizeOf:w,onChange:C,openId:o===A?null:o,onOpenChange:i,withoutSize:e}),n(te,{font:u.accent,size:d.accent,weight:x.weightStrong,italic:x.italicStrong,headingWeight:x.weight,open:o===A,onOpenChange:s=>i(s?A:null),onChange:s=>{s.key==="font"?b(s.value):s.key==="size"?P(s.value):s.key==="weight"?k(s.value):L(s.value)},withoutSize:e})]})}const A="accent";function Fe(e){const t=ye(e);return[{key:"accent",name:f("Accent"),value:t.accent},{key:"text",name:f("Text"),value:t.text},{key:"labels",name:f("Labels"),value:t.muted??t.text}]}const He={"heading-1":"heading","heading-2":"heading2","heading-3":"heading3","body-1":"body","body-5":"label"},Ae={heading:32,body:14},Oe={heading:"main h1, main h2",heading2:"main h1, main h2",heading3:"main h1, main h2",accent:"main h1 em, main h2 em",body:"main p",label:"main .mono-eyebrow"};function Be(e){if(typeof document>"u")return null;const o=(me()?.contentDocument??document).querySelector(Oe[e]);if(!o)return null;const i=parseFloat(getComputedStyle(o).fontSize);return Number.isFinite(i)?i:null}function Ne({themeFromDocument:e,persist:t,showHint:o}){const{appState:i,dispatch:c}=O(d=>d),{cornerRadiusPx:r,setCornerRadiusPx:p}=S(),h=i.data,a=h.root?.props??{},l=a.cornerRadiusPx===void 0?Ce[Te(a.cornerStyle)]:_e(a.cornerRadiusPx),g=e?l:r,m=d=>c({type:"replaceRoot",root:{...h.root,props:{...a,...d}},recordHistory:!0});return n(U,{value:g,onChange:d=>{e?m({cornerRadiusPx:d}):p(d),t({corner_radius_px:d})},showHint:o})}function ke(e){return{site_width:e}}function Le({persist:e,showHint:t}){const{siteWidth:o,setSiteWidth:i,sectionBackgroundWidth:c,setSectionBackgroundWidth:r,sectionContentWidth:p,setSectionContentWidth:h}=S(),a=typeof o=="number"?o:R.default,l=u=>{i(u),e(ke(u),u===null)},g=u=>{r(u),e({section_background_width:u},!0)},m=u=>{h(u),e({section_content_width:u},!0)};return T(y,{children:[n(Q,{value:c??"full",changed:c!==null,detail:f("Full width"),onChange:g,onReset:()=>g(null),hint:t?D:void 0}),n(Z,{mode:p??"content",px:a,min:R.min,max:R.max,changed:typeof o=="number"||p!==null,detail:`${f("Content width")} ${R.default}px`,onMode:m,onPx:u=>l(u),onReset:()=>{m(null),l(null)},hint:t?ee:void 0})]})}function Ge(e){return{block_gap:e}}function We(e){return{site_gutter:e}}function ve({persist:e,showHint:t}){const{siteGutter:o,setSiteGutter:i}=S();return n(J,{value:o,onChange:r=>{i(r),e(We(r),r===null)},showHint:t})}function ze({persist:e,showHint:t}){const{blockGap:o,setBlockGap:i}=S();return n(q,{value:o,onChange:r=>{i(r),e(Ge(r),r===null)},showHint:t})}function Ye({persist:e,showHint:t=!0}){return T(y,{children:[n(Le,{persist:e,showHint:t}),n(ve,{persist:e,showHint:t}),n(ze,{persist:e,showHint:t})]})}function je(e){return{card_shadow:e}}function Ue(e){return e===null?{shadow_color:null}:{shadow_color:xe(e)}}function Xe(e){return{hover_effect:e}}function $e({persist:e,showHint:t=!0}){const{cardShadow:o,setCardShadow:i,shadowColor:c,setShadowColor:r,hoverEffect:p,setHoverEffect:h}=S();return T(y,{children:[n(X,{value:o,onChange:a=>{i(a),e(je(a),!0)},showHint:t}),n($,{value:c,onChange:a=>{r(a),e(Ue(a),a===null)},showHint:t}),n(K,{value:p,onChange:a=>{h(a),e(Xe(a),!0)},showHint:t})]})}function qe(e){return{photography_grayscale:e}}function Ke({persist:e,showHint:t}){const{photographyGrayscale:o,setPhotographyGrayscale:i}=S();return n(M,{value:o,onChange:r=>{i(r),e(qe(r),!0)},showHint:t})}function Me({persist:e,showHint:t=!0}){return n(y,{children:n(Ke,{persist:e,showHint:t})})}function Ve(e){return{share_button_on_posts:e}}function Je({persist:e,showHint:t=!0}){const{shareButtonOnPosts:o,setShareButtonOnPosts:i}=S();return n(V,{value:o,onChange:r=>{i(r),e(Ve(r),!0)},showHint:t})}function Qe(){const{websiteName:e}=S();return e?.trim()||fe}function Ot(){const e=Qe();return n(ie,{content:f("{name} — renamed in the Console: {place}.",{name:e,place:f("Storefront ▸ Sites ▸ Settings")}),className:"sf-name-tip",children:n("span",{className:"sf-panel-site",children:e})})}function Ze({themeFromDocument:e=!1,tokenRef:t,siteId:o,onNotify:i,tab:c,onTabChange:r,initialTab:p,revealPageGroup:h=!1,onPageGroupRevealed:a}){const{persist:l}=he({themeFromDocument:e,tokenRef:t,siteId:o,onResult:b=>{const P=pe(b);P&&i?.(P.msg,P.tone)}}),[g,m]=E(p??I[0].id),u=c!==void 0,d=u?c:g,x=u?r??(()=>{}):m,w=I.find(b=>b.id===d)??I[0],[C,F]=E(be);return T(y,{children:[n(tt,{activeId:w.id,onSelect:x}),T("div",{id:ae(H,w.id),className:we,role:"tabpanel","aria-labelledby":se(H,w.id),children:[d===B&&T(y,{children:[n(Ne,{themeFromDocument:e,persist:l,showHint:C}),!e&&n($e,{persist:l,showHint:C}),!e&&n(Ye,{persist:l,showHint:C}),!e&&n(Me,{persist:l,showHint:C}),!e&&n(Je,{persist:l,showHint:C}),n(De,{reveal:h,onRevealed:a}),n(Ee,{shown:C,onChange:F})]}),d==="theme"&&n(Re,{themeFromDocument:e,persist:l}),d==="text"&&n(Ie,{themeFromDocument:e,persist:l})]})]})}function De({reveal:e,onRevealed:t}){const[o,i]=E(!0),c=Y(t);return c.current=t,z(()=>{if(!e)return;i(!0);const r=requestAnimationFrame(()=>{document.getElementById(N)?.scrollIntoView({block:"start"}),c.current?.()});return()=>cancelAnimationFrame(r)},[e]),n(v,{title:f("This page"),open:o,onToggle:i,id:N,children:n(et,{})})}function et(){const{fields:e,values:t,readOnly:o,onChange:i}=G(),c=Object.fromEntries(ge.filter(r=>r in e).map(r=>[r,e[r]]));return Object.keys(c).length===0?n(oe,{variant:"none",icon:!1,message:f("This page has no look of its own to set.")}):n(W,{fields:c,values:t,onChange:i,readOnly:o,tabs:!1,idPrefix:"this-page",ariaLabel:f("This page")})}function tt({activeId:e,onSelect:t}){return n("div",{className:"es-insp-tabs",children:n(re,{variant:"underline",block:!0,labelsFit:!0,"aria-label":f("Styles"),idPrefix:H,value:e,onChange:t,items:I.map(o=>{const i=f(o.label);return{id:o.id,icon:o.icon,label:i}})})})}export{$e as CardLookFields,Ee as HintsToggle,Ye as PageGroupFields,Me as PhotographyGroupFields,be as SHOW_HINTS_DEFAULT,B as SITE_STYLES_BASICS_TAB,H as SITE_STYLES_ID_PREFIX,I as SITE_STYLES_TABS,At as SITE_STYLES_TEXT_TAB,Je as ShareButtonRootField,tt as SiteStylesTabStrip,we as TABPANEL_CLASS,N as THIS_PAGE_GROUP_ID,Ot as WebsiteNameReadonly,Ge as blockGapPatch,je as cardShadowPatch,Ze as default,Xe as hoverEffectPatch,qe as photographyPatch,Ue as shadowColourPatch,Ve as shareButtonPatch,We as siteGutterPatch,ke as siteWidthPatch,Qe as useWebsiteName};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{useEffect as
|
|
1
|
+
"use client";import{useEffect as b,useMemo as w,useRef as k}from"react";import{useEasel as O}from"efficient-easel/easel";import{useEaselHost as B}from"efficient-easel/screen/lib/host";import{applyPageEdits as D,describeBlocks as H,describeSelection as J}from"../../format/lib/host-document-bridge.js";import{nonEmptyString as N}from"../../format/lib/non-empty-string.js";const p=t=>N(t.requestId)??null;function $(){const t=B(),{appState:n,selectedItem:I,dispatch:l,history:f,config:S}=O(s=>s),i=S,g=k({appState:n,dispatch:l,history:f,blockConfig:i});g.current={appState:n,dispatch:l,history:f,blockConfig:i};const c=k(new Map),h=I?.props?.id,a=w(()=>J(i,n.data,h),[i,n.data,h]),q=a?JSON.stringify(a):"";b(()=>{t.connected&&t.send("storefront-editor:selection",{selection:a})},[t,q]),b(()=>t.subscribe(s=>{const{appState:d,dispatch:y,history:u,blockConfig:m}=g.current;switch(s.type){case"storefront-editor:request-document":{const e=p(s);if(!e)return;t.send("storefront-editor:document",{requestId:e,document:d.data,blocks:H(m)});return}case"storefront-editor:apply-page-edits":{const e=p(s);if(!e)return;const r=Array.isArray(s.ops)?s.ops:[],o=r.length?D(m,d.data,r,E=>`${E}-${crypto.randomUUID()}`):{ok:!1,reason:"no changes"};o.ok&&(y({type:"setData",data:o.document,recordHistory:!0}),c.current.set(e,JSON.stringify(o.document.content??[]))),t.send("storefront-editor:page-edits-result",{requestId:e,applied:o.ok,reason:o.ok?null:o.reason});return}case"storefront-editor:undo-page-edits":{const e=p(s);if(!e)return;const r=c.current.get(e),o=r!==void 0&&r===JSON.stringify(d.data.content??[]);o&&u.hasPast&&(u.back(),c.current.delete(e)),t.send("storefront-editor:page-edits-result",{requestId:e,applied:o&&u.hasPast,reason:o?null:"the page has changed since"});return}case"storefront-editor:set-right-panel":typeof s.shown=="boolean"&&y({type:"setUi",ui:{rightSideBarVisible:s.shown}});return;default:return}}),[t])}export{$ as useHostDocumentBridge};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as r,jsxs as m,Fragment as
|
|
1
|
+
"use client";import{jsx as r,jsxs as m,Fragment as xe}from"react/jsx-runtime";import{Fragment as Q,useEffect as V,useRef as z}from"react";import{useTreeDrag as X}from"efficient-easel/drag";import{GlobeIcon as ve,ImageIcon as fe,LocationIcon as ke,MapIcon as Le,TextLinesIcon as Ie,TrashIcon as Z}from"efficient-easel/icons";import{Subtree as b,TreeRow as P,TreeRowAction as ee,TreeSeam as oe}from"efficient-easel/tree";import{useEaselStrings as Se}from"efficient-easel/strings";import{decodeLocationPartId as Pe,encodeLocationPartId as he,usePreviewLocationPart as we}from"../../render/components/PreviewLocationPartContext.js";import{isSelectionMode as Ce}from"efficient-easel/screen/lib/screen-parts";import{say as p,sayCount as ne}from"../../format/lib/editor-words.js";import{useLocationsFocus as $e,setLocationsFocus as i}from"../lib/document/locations-focus.js";import{bucketsOf as te,moveGroup as re,moveCity as ce,addCity as Te,addGroup as De,deleteGroup as Fe,deleteCity as Ge,absCityIndex as le,groupLabelOf as Oe,cardKey as se}from"../../format/lib/document/locations-tree.js";const ae="ContactLocations",T=x=>({parentId:`locations-${x}`,slot:"groups"}),A=(x,y)=>({parentId:`locations-${x}`,slot:`cities:${y}`});function We(x,y){const{readOnly:h,selected:w}=y,k=Se().tree,v=y.data?.content??[],ie=Ce(x),D=z(null);V(()=>{const o=w?.type===ae?String(w.props.id):null;o&&o!==D.current&&i({level:"groups"}),D.current=o},[w?.props.id]);const{selectedLocationPartId:de,setSelectedLocationPartId:R,setSelectHandler:N}=we(),c=$e(),u=(o,e)=>{const t=v[o];t&&y.replace(o,{type:t.type,props:{...t.props,locations:e}})},L=o=>{const e=v[o]?.props?.locations;return Array.isArray(e)?e:[]},_=X({keyOf:o=>`group:${o.si}:${o.index}`,readOnly:!!h,canDrop:(o,e)=>e.parentId===T(o.si).parentId&&e.slot==="groups",onDrop:(o,e)=>{u(o.si,re(L(o.si),o.index,e.index)),c.level==="city"&&i({level:"groups"})},onStep:(o,e)=>{u(o.si,re(L(o.si),o.index,e<0?o.index-1:o.index+2)),c.level==="city"&&i({level:"groups"})}}),F=X({keyOf:o=>`city:${o.si}:${o.group}:${o.index}`,readOnly:!!h,canDrop:(o,e)=>e.parentId===T(o.si).parentId&&e.slot.startsWith("cities:"),onDrop:(o,e)=>{const t=e.slot.slice(7);u(o.si,ce(L(o.si),o.group,o.index,t,e.index)),i({level:"group",key:t})},onStep:(o,e)=>{u(o.si,ce(L(o.si),o.group,o.index,o.group,e<0?o.index-1:o.index+2)),c.level==="city"&&i({level:"group",key:o.group})}}),j=z(v);j.current=v;const E=z(()=>{});V(()=>{N(o=>{const e=Pe(o);if(!e)return;const t=j.current.findIndex(C=>C.props?.id===e.nodeId);t<0||E.current(t,{level:e.part,index:e.index})})},[N]);const l=(o,e)=>{D.current=v[o]?.props?.id??null,y.select(o),i(e),x.reveal();const t=v[o]?.props?.id;typeof t=="string"&&(e.level==="image"||e.level==="map")?R(he(t,e.index,e.level)):R(null),typeof t=="string"&&y.scrollTo(t)};return E.current=l,{renderLocationTree:(o,e,{rowClick:t,isCollapsed:C,toggleCollapse:M})=>{const f=L(e),pe=te(f),I=String(o.props.id),S=ie&&w?.props.id===I,B=n=>r(oe,{...h?{}:_.seam({place:{...T(e),index:n}})},`seam:${I}:groups:${n}`),H=(n,d)=>r(oe,{...h?{}:F.seam({place:{...A(e,n),index:d}})},`seam:${I}:cities:${n}:${d}`);return m(xe,{children:[r(P,{icon:r(Ie,{size:13}),name:p("Texts"),words:k,onSelect:()=>l(e,{level:"texts"}),selected:S&&c.level==="texts",rowProps:{onClick:t(()=>l(e,{level:"texts"}))}}),pe.map((n,d)=>{const G=`${I}::grp::${n.key}`,K=C(G),ue=S&&c.level==="group"&&c.key===n.key,U=n.name||n.key?Oe(n.key,n.name):p("Ungrouped"),W={...A(e,n.key),index:n.cards.length},Y=F.row({item:{si:e,group:n.key,index:-1},place:W,into:W,canDrag:!1},{onClick:t(()=>l(e,{level:"group",key:n.key}))}),$=_.row({item:{si:e,index:d},place:{...T(e),index:d}},Y.rowProps);return m(Q,{children:[d===0&&B(0),r(P,{icon:r(ve,{size:13}),name:U,words:k,onSelect:()=>l(e,{level:"group",key:n.key}),selected:ue,draggable:$.draggable,dragging:$.dragging,drop:$.drop??Y.drop,fold:{open:!K,label:p("group"),onToggle:()=>M(G)},actions:r(ee,{kind:"delete",label:ne("Delete {label} group ({n} city)","Delete {label} group ({n} cities)",n.cards.length,{label:U}),onClick:()=>{u(e,Fe(f,n.key)),i({level:"groups"})},children:r(Z,{size:15})}),rowProps:$.rowProps,count:n.cards.length,countLabel:ne("{n} city","{n} cities",n.cards.length)}),!K&&m(b,{children:[n.cards.map((g,a)=>{const s=le(f,n.key,a),ye=S&&c.level==="city"&&c.index===s,O=String(g?.name??"")||p("City"),q=`${I}::city::${se(g)}`,J=C(q),{rowProps:ge,...me}=F.row({item:{si:e,group:n.key,index:a},place:{...A(e,n.key),index:a}},{onClick:t(()=>l(e,{level:"city",index:s}))});return m(Q,{children:[a===0&&H(n.key,0),r(P,{icon:r(ke,{size:13}),name:O,words:k,onSelect:()=>l(e,{level:"city",index:s}),selected:ye,...me,fold:{open:!J,label:O,onToggle:()=>M(q)},actions:r(ee,{kind:"delete",label:p("Delete {name}",{name:O}),onClick:()=>{u(e,Ge(f,n.key,a)),i({level:"group",key:n.key})},children:r(Z,{size:15})}),rowProps:ge}),!J&&m(b,{children:[r(P,{icon:r(fe,{size:13}),name:p("Image"),words:k,onSelect:()=>l(e,{level:"image",index:s}),selected:S&&c.level==="image"&&c.index===s,rowProps:{onClick:t(()=>l(e,{level:"image",index:s}))}}),r(P,{icon:r(Le,{size:13}),name:p("Map"),words:k,onSelect:()=>l(e,{level:"map",index:s}),selected:S&&c.level==="map"&&c.index===s,rowProps:{onClick:t(()=>l(e,{level:"map",index:s}))}})]}),H(n.key,a+1)]},se(g))}),m("button",{type:"button",className:"sf-add-card",onClick:()=>{const g=Te(f,n.key);u(e,g);const a=te(g).find(s=>s.key===n.key);i(a&&a.cards.length?{level:"city",index:le(g,n.key,a.cards.length-1)}:{level:"group",key:n.key})},children:[r("span",{className:"sf-plus sf-plus--sm",children:"+"}),p("Add city")]})]}),B(d+1)]},G)}),m("button",{type:"button",className:"sf-add-card",onClick:()=>{const{cards:n,key:d}=De(f);u(e,n),l(e,{level:"group",key:d})},children:[r("span",{className:"sf-plus sf-plus--sm",children:"+"}),p("Add group")]})]})},sectionPressed:o=>{o?.type===ae&&i({level:"groups"})}}}export{ae as LOCATIONS_TYPE,We as useLocationsTree};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{useEffect as p,useRef as
|
|
1
|
+
"use client";import{useEffect as p,useRef as a}from"react";import{useEasel as d}from"efficient-easel/easel";import{ROOT_ZONE as s}from"efficient-easel/draw";import{sectionToBoxEdits as m}from"../../render/lib/sections/section-to-box.js";function T(t){const o=d(e=>e.appState.data.content),n=a(new Set);p(()=>{u(m(o),t,n.current)},[o,t])}function u(t,o,n){for(const{index:e,nodes:c}of[...t].sort((i,r)=>r.index-i.index)){const i=String(c[0].props.id);n.has(i)||(n.add(i),o.replaceComponent(s,e,c[0]),c.slice(1).forEach((r,f)=>{o.insertNode(s,e+1+f,r),o.replaceComponent(s,e+1+f,r)}))}}export{u as applySectionToBoxEdits,T as useSectionToBoxPass};
|
|
@@ -7,8 +7,8 @@ export declare function useSocialSettings({ token, siteId, enabled, }: {
|
|
|
7
7
|
siteId: string | null;
|
|
8
8
|
enabled: boolean;
|
|
9
9
|
}): {
|
|
10
|
-
links: Partial<Record<"facebook" | "instagram" | "pinterest" | "telegram" | "tiktok" | "whatsapp" | "youtube" | "
|
|
11
|
-
rows: Record<"facebook" | "instagram" | "pinterest" | "telegram" | "tiktok" | "whatsapp" | "youtube" | "
|
|
10
|
+
links: Partial<Record<"facebook" | "instagram" | "pinterest" | "telegram" | "tiktok" | "whatsapp" | "youtube" | "line" | "x" | "linkedin" | "wechat", string>>;
|
|
11
|
+
rows: Record<"facebook" | "instagram" | "pinterest" | "telegram" | "tiktok" | "whatsapp" | "youtube" | "line" | "x" | "linkedin" | "wechat", SocialRowState>;
|
|
12
12
|
canSave: boolean;
|
|
13
13
|
saveLink: (platform: SocialPlatform, value: string) => Promise<SocialSaveOutcome>;
|
|
14
14
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ReactElement, ReactNode } from "react";
|
|
2
|
-
export declare function ColourControl({ value, onChange, label, id, caption, inherited, ariaLabel, }: {
|
|
2
|
+
export declare function ColourControl({ value, onChange, label, id, caption, inherited, ariaLabel, opacity, onOpacityChange, }: {
|
|
3
3
|
value: string;
|
|
4
4
|
onChange: (next: string) => void;
|
|
5
5
|
label: string;
|
|
@@ -7,6 +7,8 @@ export declare function ColourControl({ value, onChange, label, id, caption, inh
|
|
|
7
7
|
caption?: string;
|
|
8
8
|
inherited?: string;
|
|
9
9
|
ariaLabel?: string;
|
|
10
|
+
opacity?: number;
|
|
11
|
+
onOpacityChange?: (opacity: number) => void;
|
|
10
12
|
}): import("react").JSX.Element;
|
|
11
13
|
export declare function AnyColourSwatch({ value, onChange, label, }: {
|
|
12
14
|
value: string;
|
|
@@ -21,7 +23,7 @@ export declare function ColourRow({ label, icon, changed, hint, onReset, resetTo
|
|
|
21
23
|
resetTo?: string;
|
|
22
24
|
children?: ReactNode;
|
|
23
25
|
}): import("react").JSX.Element;
|
|
24
|
-
export declare function InheritedColourRow({ label, icon, value, inherited, resetTo, onChange, onReset, hint, }: {
|
|
26
|
+
export declare function InheritedColourRow({ label, icon, value, inherited, resetTo, onChange, onReset, hint, opacity, onOpacityChange, changed, }: {
|
|
25
27
|
label: string;
|
|
26
28
|
icon?: ReactElement;
|
|
27
29
|
value: string;
|
|
@@ -30,4 +32,7 @@ export declare function InheritedColourRow({ label, icon, value, inherited, rese
|
|
|
30
32
|
onChange: (hex: string) => void;
|
|
31
33
|
onReset: () => void;
|
|
32
34
|
hint?: ReactNode;
|
|
35
|
+
opacity?: number;
|
|
36
|
+
onOpacityChange?: (opacity: number) => void;
|
|
37
|
+
changed?: boolean;
|
|
33
38
|
}): import("react").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as s,jsxs as
|
|
1
|
+
"use client";import{jsx as s,jsxs as g}from"react/jsx-runtime";import{ColorPicker as m,HexInput as w}from"efficient-shell/ui";import{SettingsDefaultReset as C,SettingsField as b}from"efficient-easel/panel";import{typedHex as p}from"efficient-easel/pick";import{usePreviewHeader as N}from"../../../render/components/PreviewHeaderContext.js";import{editorEaselWords as S,say as h}from"../../../format/lib/editor-words.js";import{themeSwatches as j}from"./theme-swatches.js";function k({value:e,onChange:n,label:o,id:r,caption:t,inherited:a,ariaLabel:d,opacity:i,onOpacityChange:c}){return s(H,{value:e,onChange:n,label:h(d??o),id:r,caption:t,inherited:a,...c?{opacity:i,onOpacityChange:c}:{}})}function z(){const{theme:e}=N();return j(e).map(n=>({value:n.value,label:n.name}))}function H({value:e,onChange:n,label:o,id:r,caption:t,inherited:a,opacity:d,onOpacityChange:i}){const c=z(),l=e?null:p(a??""),f=t!==void 0&&(!e||p(t)!==p(e))?t:null,u=x=>{x!==e&&n(x)};return i?s("div",{className:"sf-colour",children:s(m,{id:r,value:e,onChange:u,label:o,presets:c,fallback:l??void 0,size:"md",align:"start",showHexInput:!0,opacity:d,onOpacityChange:i})}):g("div",{className:"sf-colour",children:[s(m,{id:r,value:e,onChange:u,label:o,presets:c,fallback:l??void 0,size:"md",align:"start"}),f!==null?s("span",{className:"sf-colour-caption",children:f}):s("span",{className:"sf-colour-hexwrap",children:s(w,{value:e||l||"",onChange:u,label:h("{label} hex code",{label:o}),placeholder:e||l?void 0:h("Not set"),className:l?"sf-colour-hex is-inherited":"sf-colour-hex",size:"md"})})]})}function _({value:e,onChange:n,label:o}){return s(m,{value:e,onChange:r=>{r&&r!==e&&n(r)},label:h(o),size:"sm",align:"end"})}function P({label:e,icon:n,changed:o,hint:r,onReset:t,resetTo:a,children:d,...i}){return g(b,{label:e,icon:n,htmlFor:i.id,changed:o,hint:r,action:t?s(C,{words:S()?.panel,label:e,changed:!!o,detail:a,onReset:t}):void 0,children:[k({...i,label:e}),d]})}function A({label:e,icon:n,value:o,inherited:r,resetTo:t,onChange:a,onReset:d,hint:i,opacity:c,onOpacityChange:l,changed:f}){const u=!!o;return s(P,{label:e,icon:n,value:o,inherited:u?void 0:r,onChange:a,changed:f??u,onReset:d,resetTo:t,hint:i,...l?{opacity:c,onOpacityChange:l}:{}})}export{_ as AnyColourSwatch,k as ColourControl,P as ColourRow,A as InheritedColourRow};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as t,jsxs as I}from"react/jsx-runtime";import{ButtonIcon as F,ButtonIconIcon as g,GroundIcon as x,IconAfterTextIcon as T,IconBeforeTextIcon as y,TextColorIcon as C,WidthIcon as _}from"efficient-easel/icons";import*as B from"efficient-easel/icons";import{SettingsField as O}from"efficient-easel/panel";import{useSelectedFields as d}from"efficient-easel/easel";import{IconPicker as S,Segmented as k}from"efficient-shell/ui";import{StorefrontTextLinkField as w}from"../../../../../components/StorefrontLinkField.js";import{BUTTON_ICONS as L,buttonIconChoice as N,buttonIconSide as v,buttonWidth as W}from"../../../../../../format/lib/content/button-icon.js";import{BUTTON_PAD_BUILT_IN as z,BUTTON_PAD_KEYS as P,buttonLook as A}from"../../../../../../format/lib/content/button-look.js";import{say as n}from"../../../../../../format/lib/editor-words.js";import{FOLLOWS_SITE_BUTTON as U,FOLLOWS_SITE_BUTTON_INK as R,buttonBorderField as j,buttonWordsEntryField as E,colorInput as u,group as f,inOwnBox as D,linkField as K,plainText as G,section as m,segmented as Y,sidesPaddingFields as M}from"../../../controls.js";import{NoControlMark as V,noControlField as $}from"efficient-easel/screen/lib/document/panel-no-control-mark";import{alignField as q}from"../../shared-fields.js";import{CARD_ROW_FACTS as H,cardRowField as p,cardRowFields as J}from"../../../card-row-fields.js";import{consentWordsKept as Q,withConsentWordsRow as X}from"../../../consent-words-field.js";const c=o=>({...$({type:"custom",render:()=>t(V,{})},"always"),reachedBy:o});function h(o){const e=(o==="none"?"no-symbol":o).replace(/(^|-)([a-z])/g,(r,s,a)=>a.toUpperCase()),l=B[`${e}Icon`];return l?t(l,{size:16}):null}const Z=L.map(o=>({value:o,icon:h(o)}));function oo({value:o,onChange:i}){const e=d(),l=e.values.href,r=typeof o=="string"?o:o&&typeof o=="object"&&"text"in o?String(o.text??""):"";return t(w,{label:"Button",icon:t(F,{size:18}),text:r,onTextChange:i,link:typeof l=="string"?l:"",onLinkChange:s=>e.onChange("href",s)})}function to({value:o,onChange:i}){const e=d(),l=N(o,e.values.arrow),r=v(e.values.iconPosition),s=W(e.values.widthFit)==="fill",a=h("icon-at-end");return t(O,{label:n("Icon"),icon:t(g,{size:18}),children:I("div",{className:"flex items-center gap-2",children:[t(S,{label:n("Icon"),value:l,emptyValue:"none",options:Z,onChange:i}),l!=="none"&&t(k,{size:"sm",block:!0,label:n("Icon position"),value:r==="end"&&!s?"after":r,onChange:b=>e.onChange("iconPosition",b),options:[{value:"before",icon:t(y,{size:16}),label:t("span",{className:"sr-only",children:n("Icon before text")}),title:n("Icon before text")},{value:"after",icon:t(T,{size:16}),label:t("span",{className:"sr-only",children:n("Icon after text")}),title:n("Icon after text")},...s?[{value:"end",icon:a,label:t("span",{className:"sr-only",children:n("Icon at the far end")}),title:n("Icon at the far end")}]:[]]})]})})}const eo={key:"buttonFillOpacity",unsetFrom:"variant",unset:o=>A({variant:o}).fillOpacity},Fo={fields:{label:D(G("Button"),o=>t(oo,{value:o.value,onChange:o.onChange})),labelText:E("label"),href:{...K("Button link"),...c("label")},consentWords:Q("label"),_gButton:f("Button"),rowField:p("Shows","text"),rowLinkField:p("Link from","link"),_dSize:m("Size"),widthFit:Y("Width",t(_,{}),[{label:"Fit content",value:"fit"},{label:"Fill",value:"fill"}],"fit"),...M({keys:P,fallback:z,group:!1}),_gStyle:f("Style"),variant:c("buttonColor"),icon:{type:"custom",render:o=>t(to,{value:o.value,onChange:o.onChange})},iconPosition:c("icon"),arrow:c("icon"),buttonColor:u("Fill color",U,t(x,{}),eo),buttonFillOpacity:c("buttonColor"),buttonBorder:j(),buttonTextColor:u("Text color",R,t(C,{})),_dLayout:m("Layout"),align:q()},resolveFields:(o,i)=>X(J(i.fields,o,i),o.props,"label",["href"]),showWhenFacts:H};export{Fo as ButtonBlockFields};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{BOX_CARD_PAD as a,BOX_DARKEN as o,BOX_DARKEN_STYLES as l,isBackgroundBox as S}from"../../../../../../format/lib/content/box-background.js";import{containerDirectionPoints as f}from"../../../../../../format/lib/content/container-direction.js";import{BOX_TAB_SHAPES as k,REEL_SHAPE_LABELS as h}from"../../../../../../format/lib/reel.js";import{deviceField as r}from"efficient-easel/screen/lib/document/device-fields";import{OpacityIcon as x,ShadowIcon as F,StylesIcon as p}from"efficient-easel/icons";import{boxAlignField as _,boxBlockSpacingField as u,boxJustifyField as y,boxPhoneRowField as B,boxShareField as w,boxWrapField as A,gapField as I,group as i,placementField as P,plainText as R,select as s,sidesPaddingFields as d,slider as D,swapPadding as m,toggle as E,upload as g,withPanelOnly as O}from"../../../controls.js";import{withRowRules as L}from"../../../../../../render/lib/document/show-when.js";import{FlexSlots as T}from"../../../../../../format/lib/document/blocks/general/Flex/meta.js";const C={field:"bgImage",set:!0},X={field:"direction",is:"tabs"},Y={fields:L({_gContent:i("Content"),content:T.content,_gLayout:i("Layout"),direction:{type:"radio",options:f("Flex")},tabShape:s("Tab shape",t(p,{}),k.map(e=>({label:h[e],value:e})),"tabs"),label:O(R("Tab name")),gap:I("Flex"),justify:y(),align:_(),wrap:A(),share:w(),phoneRow:B(),blockSpacing:u(),_gShadow:i("Shadow"),shadow:E("Shadow",!1,t(F,{})),_gBackground:i("Background image"),bgImage:r("desktop",g("Image","image/*")),bgImagePhone:r("mobile",g("Image","image/*")),darken:D("Darken",t(x,{}),o.min,o.max,o.step,o.fallback,o.unit),darkenStyle:s("Darken style",t(p,{}),l,l[0].value),placement:P("Content position",{stacking:!1})},[[["darken","darkenStyle","placement"],C],[["tabShape"],X]]),resolveFields:(e,{fields:n})=>{const c=e.props;if(S(c.bgImage)){const b=d({fallback:{top:a.desktop,bottom:a.desktop,left:a.side,right:a.side}});return m(n,b)}return e.props.padV2!==!0?m(n,d({fallback:{top:24,bottom:24}})):n}};export{Y as FlexFields};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import{
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{BlockVideoIcon as m,ClockIcon as r,ImageIcon as t,MediaIcon as n,OpacityIcon as g,PlayIcon as p}from"efficient-easel/icons";import{colorInput as s,focusKeptField as o,group as i,loadingShowsField as c,MEDIA_TYPE_OPTIONS as I,plainText as f,segmented as F,slider as l,text as v,upload as a,withIdentifier as S,withPanelOnly as d}from"../../../controls.js";import{LOADING_SHOWS_IMAGE as _}from"../../../../../../format/lib/hero-video.js";import{PH as u}from"../../../../../../format/lib/document/blocks/placeholders.js";import{slotNoticeField as h}from"../../shared-fields.js";import{heroMediaFields as y,VIDEO_FILE_LABEL as O,VIDEO_FILE_PROMPT as P}from"../../../../../../render/lib/document/hero-media-parts.js";import{HeroSlideSlots as T}from"../../../../../../format/lib/document/blocks/general/HeroSlide/meta.js";const H={fields:y({_gContent:i("Content"),name:d(S(f("Slide name",u.slideName))),process:d(v("Reel label","Label")),groupNotice:h("HeroSlide"),groups:T.groups,_gMedia:i("Media"),mediaType:F("Type",e(n,{}),I,"video"),mediaVideo:a(O,"video/*",P,{frame:"videoFrame"}),videoSpeed:l("Playback speed",e(p,{}),25,100,5,100,"%"),loadingShows:c("Show while loading",e(r,{}),{frame:e(m,{}),image:e(t,{})}),videoFrame:o(),mediaImage:a("Background image","image/*","Upload a background image",{focus:"imageFocal"}),imageFocal:o(),imageFocalPhone:o(),poster:a("Image","image/*","Choose an image"),_gTint:i("Image tint"),tintColor:s("Tint color","#000000"),overlay:l("Overlay",e(g,{}),0,100,5,0,"%")},{onlyFor:{image:["mediaImage","imageFocal","imageFocalPhone","_gTint","tintColor","overlay"],video:["mediaVideo","videoSpeed","loadingShows","videoFrame"]},fallback:"video",rules:{poster:{all:[{field:"mediaType",is:"video",default:"video"},_]}}})};export{H as HeroSlideFields};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import{BlackAndWhiteIcon as a,ColumnsIcon as s,HeightIcon as n,PaddingYIcon as r,StylesIcon as g}from"efficient-easel/icons";import{group as l,plainText as i,select as m,slider as e,textarea as d,toggle as O,upload as _,withPanelOnly as c}from"../../../controls.js";import{DEFAULT_LOGO_LOOK as p,LOGO_LOOK_OPTIONS as S}from"../../../../../../format/lib/sections/logo-look.js";import{HEAD_ROWS_SHOW_WHEN as y,OWN_BOX_ROWS_SHOW_WHEN as L}from"../../../../../../format/lib/sections/section-head-placement.js";import{withRowRules as h}from"../../../../../../render/lib/document/show-when.js";import{LogosSlots as W}from"../../../../../../format/lib/document/blocks/general/Logos/meta.js";const u=["items","heading","bandPadding"],H=["look"],E={fields:h({_gContent:l("Content"),heading:d("Heading","Trusted by *teams worldwide*"),items:{type:"array",label:"Logos",arrayFields:{src:_("Image","image/*"),alt:c(i("Name / alt"))},getItemSummary:t=>t.alt||t.src||"logo"},logos:W.logos,_gStyle:l("Style"),columns:e("Columns",o(s,{}),3,6,1,5),logoHeight:e("Logo height",o(n,{}),20,72,2,28,"px"),bandPadding:e("Space above and below",o(r,{}),16,120,4,40,"px"),grayscale:O("Black and white logos",!0,o(a,{})),look:m("Logo style",o(g,{}),S,p)},[[u,y],[H,L]])};export{E as LogosFields};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import{FieldGlyph as t}from"../../../../../components/FieldGlyph.js";import{CARD_ROW_FACTS as r,cardRowField as a,cardRowFields as i}from"../../../card-row-fields.js";import{group as s,select as d,textarea as n}from"../../../controls.js";import{PH as p}from"../../../../../../format/lib/document/blocks/placeholders.js";import{alignField as h,toneField as m}from"../../shared-fields.js";import{consentWordsKept as x,withConsentWordsRow as F}from"../../../consent-words-field.js";const w={fields:{text:n("Body",p.body),consentWords:x("text"),align:h(),tone:m(),_gText:s("Text"),rowField:a("Shows","text"),tag:d("HTML tag",o(t,{noun:"heading"}),[{label:"Paragraph",value:"p"},{label:"H1",value:"h1"},{label:"H2",value:"h2"},{label:"H3",value:"h3"},{label:"H4",value:"h4"},{label:"H5",value:"h5"},{label:"H6",value:"h6"}],"p")},resolveFields:(e,l)=>F(i(l.fields,e,l),e.props,"text"),showWhenFacts:r};export{w as TextFields};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const assembleGeneralBlocks: () => Record<"Grid" | "Flex" | "HeroGroup" | "Ticker" | "Prose" | "Logos" | "Divider" | "LogoBlock" | "Text" | "Hero" | "HeroSingle" | "IntroBleed" | "SpecStrip" | "
|
|
2
|
-
export declare const generalBlocks: Record<"Grid" | "Flex" | "HeroGroup" | "Ticker" | "Prose" | "Logos" | "Divider" | "LogoBlock" | "Text" | "Hero" | "HeroSingle" | "IntroBleed" | "SpecStrip" | "
|
|
1
|
+
export declare const assembleGeneralBlocks: () => Record<"Grid" | "Flex" | "HeroGroup" | "Ticker" | "Prose" | "Logos" | "Divider" | "LogoBlock" | "Text" | "Hero" | "HeroSingle" | "IntroBleed" | "SpecStrip" | "ProcessSteps" | "OrderSummary" | "PaymentBadges" | "Manifesto" | "Timeline" | "Footprint" | "ParagraphsA" | "Split" | "Cards" | "Stats" | "StatsParagraph" | "Chart" | "Mockup" | "Testimonials" | "Banner" | "TitleWithButtons" | "Countdown" | "Masthead" | "FeaturedCover" | "LongRead" | "Series" | "Breadcrumb" | "CategoryBar" | "DocTabs" | "DocMasthead" | "DocBody" | "DocMetaCards" | "FAQ" | "ContactLocations" | "SectionHeader" | "CustomHTML" | "TimelineTrack" | "Spacer" | "KeyFeatures" | "Heading" | "Eyebrow" | "ImageBlock" | "ButtonBlock" | "PostCard" | "HeroSlide" | "Integrations", import("efficient-easel/blocks").ComponentConfig<any, any, Omit<import("efficient-easel/blocks").ComponentData<any, string, Record<string, import("efficient-easel/blocks").DefaultComponentProps>>, "type">>>;
|
|
2
|
+
export declare const generalBlocks: Record<"Grid" | "Flex" | "HeroGroup" | "Ticker" | "Prose" | "Logos" | "Divider" | "LogoBlock" | "Text" | "Hero" | "HeroSingle" | "IntroBleed" | "SpecStrip" | "ProcessSteps" | "OrderSummary" | "PaymentBadges" | "Manifesto" | "Timeline" | "Footprint" | "ParagraphsA" | "Split" | "Cards" | "Stats" | "StatsParagraph" | "Chart" | "Mockup" | "Testimonials" | "Banner" | "TitleWithButtons" | "Countdown" | "Masthead" | "FeaturedCover" | "LongRead" | "Series" | "Breadcrumb" | "CategoryBar" | "DocTabs" | "DocMasthead" | "DocBody" | "DocMetaCards" | "FAQ" | "ContactLocations" | "SectionHeader" | "CustomHTML" | "TimelineTrack" | "Spacer" | "KeyFeatures" | "Heading" | "Eyebrow" | "ImageBlock" | "ButtonBlock" | "PostCard" | "HeroSlide" | "Integrations", import("efficient-easel/blocks").ComponentConfig<any, any, Omit<import("efficient-easel/blocks").ComponentData<any, string, Record<string, import("efficient-easel/blocks").DefaultComponentProps>>, "type">>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useSyncExternalStore as T}from"react";import{rowBound as P}from"../../../format/lib/content/card-template.js";import{SHOP_MARKUP as S}from"../../../format/lib/markup.js";import{readHidable as k,textFieldOffPage as v}from"./controls.js";import{decodePartId as
|
|
1
|
+
import{useSyncExternalStore as T}from"react";import{rowBound as P}from"../../../format/lib/content/card-template.js";import{SHOP_MARKUP as S}from"../../../format/lib/markup.js";import{readHidable as k,textFieldOffPage as v}from"./controls.js";import{decodePartId as O}from"efficient-easel/draw";import{PART_ATTR as y}from"../../../render/lib/document/text-parts.js";import{partRowField as b}from"./part-row-field.js";import{decodePartKey as K,partRowValue as w}from"../../../render/lib/document/part-rows.js";import{isMultilineKind as A,typeInPlaceKind as R}from"../../../render/lib/document/part-text.js";import{commitPartText as C}from"./part-typing.js";import{consentWordsOf as F}from"../../../format/lib/content/consent-banner.js";const E=["bold","italic","underline","strike","link","sup","sub"],I=["bullet","number"];function _(e,t){return e?[...E,...t?I:[]]:[]}function g(e,t){const r=O(e);if(!r?.propKey)return null;const{nodeId:u,propKey:s}=r,o=t.getItemById(u),c=t.getSelectorForId(u);if(!o||!c)return null;const{key:n,row:i}=K(s),p=t.components[o.type]?.fields?.[n],d=i?b(p,i):p,m=R(d);if(!m)return null;const l=o.props??{};if(F(l)!==null||!i&&P(o.type,l,n)||i&&!(Array.isArray(l[n])&&i.index<l[n].length))return null;const x=i?w(l[n],i):l[n];return{node:o,selector:c,propKey:s,kind:m,stored:x,offPage:v(d)}}function G(e,t){const r=g(e,t);if(!r||r.offPage)return null;const{text:u,hidden:s}=k(r.stored);if(s)return null;const o=A(r.kind);return{partId:e,value:u,rules:S,multiline:o,offered:_(r.kind!=="plainText",o),write:c=>{const n=g(e,t);n&&C({node:n.node,propKey:n.propKey,kind:n.kind,zone:n.selector.zone,index:n.selector.index},c,t.replace)}}}function J(e,t,r){return e?.isConnected&&e.getAttribute(y)===r?e:t?.querySelector(`[${y}="${B(r)}"]`)??null}function B(e){return e.replace(/["\\]/g,"\\$&")}function Q(e){const t=e.activeElement;return t?t.tagName==="IFRAME"||!!t.closest(".es-canvas"):!1}let f=null;const a=new Set;function L(){return f}function X(e){if(e!==f){f=e;for(const t of a)t()}}function M(e){return a.add(e),()=>{a.delete(e)}}function Y(){return T(M,L,()=>null)}export{L as canvasTypingPart,Q as keysOnCanvas,J as partElement,_ as partTextTools,G as partTypingTarget,X as setCanvasTypingPart,M as subscribeCanvasTypingPart,Y as useCanvasTypingPart};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function consentWordsKept(wordsRow: string): {
|
|
2
|
+
reachedBy: string;
|
|
3
|
+
type: "custom";
|
|
4
|
+
render: () => import("react").JSX.Element;
|
|
5
|
+
};
|
|
6
|
+
export declare function withConsentWordsRow<F extends Record<string, unknown>>(fields: F, props: Record<string, unknown> | undefined, wordsRow: string, dropped?: readonly string[]): F;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{LockIcon as c}from"efficient-easel/icons";import{FieldText as u}from"efficient-easel/fields";import{SettingsField as d}from"efficient-easel/panel";import{NoControlMark as l,noControlField as p}from"efficient-easel/screen/lib/document/panel-no-control-mark";import{CONSENT_WORDS_PROP as f,consentWordsOf as a}from"../../../format/lib/content/consent-banner.js";import{say as i}from"../../../format/lib/editor-words.js";function y(){return{type:"custom",render:({id:r,name:n})=>{const o=`${r??n??f}-words`;return e(d,{label:i("Words"),icon:e(c,{}),htmlFor:o,children:e(u,{id:o,value:i("Set by country"),onChange:()=>{},readOnly:!0})})}}}function b(r){return{...p({type:"custom",render:()=>e(l,{})},"always"),reachedBy:r}}function j(r,n,o,s=[]){return a(n)===null?r:Object.fromEntries(Object.entries(r).filter(([t])=>!s.includes(t)).map(([t,m])=>[t,t===o?y():m]))}export{b as consentWordsKept,j as withConsentWordsRow};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type ReactElement, type ReactNode } from "react";
|
|
2
|
-
import type
|
|
2
|
+
import { type MediaValue } from "../../../format/lib/media-value.js";
|
|
3
|
+
import { type LoadingShows } from "../../../format/lib/hero-video.js";
|
|
3
4
|
import { readHidable, hidableText, type HidableValue } from "efficient-easel/draw";
|
|
4
5
|
import { FOLD_FIELD_MARKER, LINK_FIELD_MARKER, MEDIA_FIELD_MARKER, SCAFFOLD_FIELD_MARKER, TEXT_FIELD_MARKER, foldMetaOf, textFieldIdentifier, type EdgeCell, type FoldFieldMeta, type TextFieldMeta, type TextListRendering } from "efficient-easel/draw";
|
|
5
6
|
import type { ShowWhenRule } from "../../../render/lib/document/show-when.js";
|
|
@@ -172,11 +173,14 @@ interface CornersRowTier {
|
|
|
172
173
|
}
|
|
173
174
|
export declare function cornersRowField(tier: CornersRowTier): CustomField<number | null>;
|
|
174
175
|
export declare function useSelectedSibling(key: string): [unknown, (next: unknown) => void];
|
|
176
|
+
export declare function useSelectedPatch(): (patch: Record<string, unknown>) => void;
|
|
175
177
|
export declare function cornerSidesField(): CustomField<string[] | null>;
|
|
176
178
|
export declare function sectionCornersField(): CustomField<number | null>;
|
|
177
179
|
export declare const SECTION_BLEEDS_HINT = "This section runs edge to edge, so its corners sit off the page. Set Width to Content width to use them.";
|
|
178
180
|
export declare function sectionShapeFields(): Record<string, unknown>;
|
|
179
181
|
export declare function sectionBorderField(tier: "desktop" | "mobile"): CustomField<SettingsBorderValue | undefined>;
|
|
182
|
+
export declare function buttonWordsEntryField(partKey: string): CustomField<undefined>;
|
|
183
|
+
export declare function buttonBorderField(): CustomField<SettingsBorderValue | undefined>;
|
|
180
184
|
export declare function sectionAnimationFields(): Record<string, unknown>;
|
|
181
185
|
export declare function cardCornersField(): CustomField<number | null>;
|
|
182
186
|
export declare function templateField<V>(inner: CustomField<V>): CustomField<V>;
|
|
@@ -296,7 +300,12 @@ export type FollowsSiteButton = {
|
|
|
296
300
|
};
|
|
297
301
|
export declare const FOLLOWS_SITE_BUTTON: FollowsSiteButton;
|
|
298
302
|
export declare const FOLLOWS_SITE_BUTTON_INK: FollowsSiteButton;
|
|
299
|
-
export
|
|
303
|
+
export type ColourOpacity = {
|
|
304
|
+
key: string;
|
|
305
|
+
unsetFrom: string;
|
|
306
|
+
unset: (from: unknown) => number;
|
|
307
|
+
};
|
|
308
|
+
export declare function colorInput(label: string, fallback: string | FollowsSiteButton, icon?: ReactElement, opacity?: ColourOpacity): CustomField<string>;
|
|
300
309
|
export declare const FOCAL_POINTS: {
|
|
301
310
|
value: string;
|
|
302
311
|
label: string;
|
|
@@ -373,9 +382,11 @@ export declare function segmented<V>(label: string, icon: ReactElement, options:
|
|
|
373
382
|
value: V;
|
|
374
383
|
picture?: ReactElement;
|
|
375
384
|
}[], fallback: V): CustomField<V>;
|
|
385
|
+
export declare function loadingShowsField(label: string, icon: ReactElement, pictures: Readonly<Record<LoadingShows, ReactElement>>): CustomField<LoadingShows>;
|
|
376
386
|
export declare function upload(label: string, accept: string, placeholder?: string, opts?: {
|
|
377
387
|
focus?: string;
|
|
378
388
|
focusWhen?: (props: Record<string, unknown>) => boolean;
|
|
389
|
+
frame?: string;
|
|
379
390
|
}): CustomField<MediaValue>;
|
|
380
391
|
export declare const CUSTOM_FIELD_MEDIA: Record<string, string[]>;
|
|
381
392
|
export declare function CoordsField({ value, onChange, label, }: {
|