PageSourceSearch

https://wydawnictworn.pl/application/assets/storefront/chunk-availability_notifier_initializer.bMOrJEg.js

js wydawnictworn.pl collected 2026-10-04 13:57:08 UTC 15,812 bytes, 166 lines download raw bytes

1import{i as R,b7 as v,b as U,ad as N,J as I,G as C,R as E,u as f,v as $,aM as x,b8 as O,N as F,B,H as L,e as V,r as H,C as Y}from"./storefrontApp.5Jl33SLO.min.js";import{A as S}from"./chunk-availability_notifier_events.8Zgo8zG.js";import{W as k}from"./chunk-webapi_http_api.DK12lbX.js";import{S as D}from"./chunk-storefront_base_lit_element.BngXaMu.js";import{b as m,U as w,f as j,$ as d,w as M,e as n,t as b,P as g,c as z,d as A}from"./chunk-vendor-lit.NvY0u02.js";import{o as T}from"./chunk-observe_when_directive.DWgxaey.js";import{P as q}from"./chunk-product_stock_changed_handler.D1B5WJH.js";import{a as G,d as W}from"./chunk-vendor-rxjs.Dp7kflo.js";import{t as l}from"./chunk-translations_directive.GYGOaCp.js";import"./chunk-vendor-di.Bh23gdA.js";import"./chunk-storefront_settings_constants.DIF02Gz.js";import"./chunk-vendor-lodash.CWHFt7Z.js";import"./chunk-vendor-phoenix.cdKS79L.js";import"./chunk-product_events_constants.BHFu5GP.js";class Q extends R{constructor(t){super(),this.moduleName=v.api,this.#t=t}#t;async subscribe(t,i){return this.#t.subscribe(t,i)}async unsubscribe(t,i){return this.#t.unsubscribe(t,i)}}class J extends U{#t;#i;constructor({availabilityNotifierHttpApi:t,flashMessengerApi:i}){super(),this.#t=t,this.#i=i}async subscribe(t,i){if(!i)throw new Error("You cannot subscribe without email");try{const{response:s}=this.#t.subscribe(t,i),e=await s,{status:o,flashMessages:r}=e.data;return this._displayFlashMessages(r),o===N.success?(this.eventBus.emit(new I(S.subscribed,t)),!0):!1}catch(s){return this._doesErrorMessageExist(s)&&this.#i.addFlashMessage({type:"warning",content:s.response.data.validation_messages.email[0]}),!1}}async unsubscribe(t,i){if(!i)throw new Error("You cannot unsubscribe without email");try{const{response:s}=await this.#t.unsubscribe(t,i),e=await s,{status:o,flashMessages:r}=e.data;return this._displayFlashMessages(r),o===N.success?(this.eventBus.emit(new I(S.unsubscribed,t)),!0):!1}catch(s){return this._doesErrorMessageExist(s)&&this.#i.addFlashMessage({type:"warning",content:s.response.data.validation_messages.email[0]}),!1}}_displayFlashMessages(t){t&&this.#i.parseAndAddFlashMessages(t,C)}_doesErrorMessageExist(t){return t.response.data.validation_messages&&t.response.data.validation_messages.email instanceof Array}}class K{getAvailAbilityNotifications(t){return`/products/stock/${t}/availability-notification`}}class X extends k{#t;constructor(t){super(t),this.#t=new K}subscribe(t,i){const s={url:this.#t.getAvailAbilityNotifications(t),method:E.post,data:{email:i}};return this.fetch(s,{decorators:[f.status,f.flashMessages]})}unsubscribe(t,i){const s={url:this.#t.getAvailAbilityNotifications(t),method:E.delete,data:{email:i}};return this.fetch(s,{decorators:[f.status,f.flashMessages]})}}var Z=Object.defineProperty,u=(a,t,i,s)=>{for(var e=void 0,o=a.length-1,r;o>=0;o--)(r=a[o])&&(e=r(t,i,e)||e);return e&&Z(t,i,e),e};class c extends D{constructor(){super(),this.productName="",this.productImage="",this.productId=0,this.productVariantId=0,this._formId=$(),this._controlId=$(),this._variants=[],this._subscribeModalRef=m(),this._unsubscribeModalRef=m(),this._updateBtnOnProductStockChange=({body:t})=>{this.productId===t?.productId&&t&&(this._variants=t.optionValues??[],t?.isNotificationEnabled&&!t?.isBuyable?this._enableBtn(t):this._disableBtn())},this._enableBtn=t=>{this.productVariantId=t.stockId,w.show(this)},this._disableBtn=()=>{w.hide(this)},this._openSubscribeToNotifyModal=()=>{this._subscribeModalRef.value?.open()},this._openUnsubscribeFromNotifyModal=()=>{this._unsubscribeModalRef.value?.open()},this._subscribeUserToProductNotification=()=>{this._availabilityNotifierApi?.subscribe(this.productVariantId,this._userApi?.getUser()?.email)},this._unsubscribeUserFromProductNotification=async()=>{await this._unsubscribeModalRef.value?.close(),this._availabilityNotifierApi?.unsubscribe(this.productVariantId,this._userApi?.getUser()?.email)},this._subscribeAnonymousUserToProductNotification=async t=>{t.preventDefault();const{formService:i}=t.detail;i.submit(async()=>{const s=i.getFormControl(this._controlId)?.value;await this._subscribeModalRef.value?.close(),this._availabilityNotifierApi?.subscribe(this.productVariantId,s)})},this.getApi(x.api).then(t=>{this._userApi=t}),this.getApi(O.api).then(t=>{this._authenticationApi=t}),this.getApi(v.api).then(t=>{this._availabilityNotifierApi=t}),this._setupListeners()}static{this.moduleName=v.component}firstUpdated(t){super.firstUpdated(t),new q(this._updateBtnOnProductStockChange)}connectedCallback(){super.connectedCallback(),this.querySelector('[slot="unsubscribe"]')?.removeAttribute("hidden")}_setupListeners(){G(this,"click").pipe(W()).subscribe(()=>{if(this._userApi?.getUser()&&this._userApi.isProductNotificationPossible(this.productVariantId))return this._subscribeUserToProductNotification();if(this._userApi?.getUser()&&!this._userApi.isProductNotificationPossible(this.productVariantId))return this._openUnsubscribeFromNotifyModal();
1this._openSubscribeToNotifyModal()})}render(){return d`
2            ${j(this._userApi&&this._authenticationApi,()=>d`${T(this._userApi.selectIsProductNotificationPossible$(this.productVariantId),this.getSlot("subscribe"),d`
3                        ${this.getSlot("unsubscribe")}
4                        <availability-notifier-unsubscribe-modal
5                            product-name=${this.productName}
6                            product-image=${this.productImage}
7                            user-email=${this._userApi?.getUser()?.email}
8                            .modal=${this._unsubscribeModalRef}
9                            @confirm=${this._unsubscribeUserFromProductNotification}
10                        ></availability-notifier-unsubscribe-modal>
11                    `)}
12                ${T(this._authenticationApi.selectIsAuthorized$(),M,d`<availability-notifier-subscribe-modal
13                        product-name=${this.productName}
14                        product-image=${this.productImage}
15                        form-id=${this._formId}
16                        control-id=${this._controlId}
17                        .modal=${this._subscribeModalRef}
18                        .variants=${this._variants}
19                        @submit=${this._subscribeAnonymousUserToProductNotification}
20                    ></availability-notifier-subscribe-modal>`)}`,()=>M)}
21        `}}u([n({type:String,attribute:"product-name"})],c.prototype,"productName");u([n({type:String,attribute:"product-image"})],c.prototype,"productImage");u([n({type:Number,attribute:"product-id"})],c.prototype,"productId");u([n({type:Number,attribute:"product-variant-id"})],c.prototype,"productVariantId");u([b()],c.prototype,"_availabilityNotifierApi");u([b()],c.prototype,"_authenticationApi");u([b()],c.prototype,"_userApi");u([b()],c.prototype,"_formId");u([b()],c.prototype,"_controlId");u([b()],c.prototype,"_variants");var tt=Object.defineProperty,it=(a,t,i,s)=>{for(var e=void 0,o=a.length-1,r;o>=0;o--)(r=a[o])&&(e=r(t,i,e)||e);return e&&tt(t,i,e),e};class P extends g{constructor(){super(),this.variants=[]}static{this.moduleName="availability-notifier-variant-list"}render(){return d`<ul class="list list_features mb-xs-2">
22            ${z(this.variants,t=>t.id,t=>d`
23                        <li class="list__item list__item_feature">
24                            <span class="list__feature-item-label">${t.label}</span>
25                            <strong class="list__feature-item-value">${t.userValue}</strong>
26                        </li>
27                    `)}
28        </ul>`}}it([n({type:Array})],P.prototype,"variants");const et={submit:"submit"};var st=Object.defineProperty,p=(a,t,i,s)=>{for(var e=void 0,o=a.length-1,r;o>=0;o--)(r=a[o])&&(e=r(t,i,e)||e);return e&&st(t,i,e),e};class h extends g{constructor(){super(),this.productName="",this.productImage="",this.variants=[],this.formId="",this.controlId="",this.modal=m(),this._reactiveFormRef=m(),this._emitSubmitEvent=t=>{t.preventDefault();const i=this._getFormService();this.dispatchEvent(new CustomEvent(et.submit,{detail:{formService:i},bubbles:!0}))},this._getFormService=()=>{const t=this._reactiveFormRef.value;if(!t)throw"No form found";return t.formService}}static{this.moduleName="availability-notifier-subscribe-modal"}render(){return d`<h-modal
29            class="modal_availability-notifier"
30            ${A(this.modal)}
31            hidden
32        >
33            <h-modal-header>
34                <h2 class="font_semibold">${l("Notify me when the product is available")}</h2>
35                <h-modal-close
36                    aria-label="${l("Close window")}"
37                    class="btn btn_icon"
38                >
39                    <h-icon
40                        icon-name="icon-x"
41                        role="button"
42                        size="xl"
43                        clickable
44                    ></h-icon>
45                </h-modal-close>
46            </h-modal-header>
47            <h-modal-body>
48                <div class="grid__row grid__row_xs-vcenter mb-xs-2">
49                    <div class="grid__col grid__col_xs-auto">
50                        <img
51                            src=${this.productImage}
52                            alt=${this.productName}
53                        />
54                    </div>
55
56                    <div class="grid__col grid__col_xs-grow availability-notifier-modal__product-name">${this.productName}</div>
57                </div>
58
59                <availability-notifier-variant-list .variants=${this.variants}></availability-notifier-variant-list>
60
61                <form-connector ${A(this._reactiveFormRef)}>
62                    <form
63                        class="pb-xs-1"
64                        id=${this.formId}
65                        @submit=${this._emitSubmitEvent}
66                    >
67                        <control-connector
68                            required
69                            email
70                            class="control"
71                        >
72                            <h-control>
73                                <h-control-label class="control__label">
74                                    <label
75                                        class="label"
76                                        for=${this.controlId}
77                                        >${l("Your e-mail address")}</label
78                                    >
79                                </h-control-label>
80
81                                <h-control-content class="control">
82                                    <h-control-element class="control__element">
83                                        <h-input
84                                            controlId=${this.controlId}
85                                            controlName=${this.controlId}
86                                        >
87                                            <h-input-control></h-input-control>
88                                        </h-input>
89                                    </h-control-element>
90
91                                    <control-errors></control-errors>
92                                </h-control-content>
93                            </h-control>
94                        </control-connector>
95                    </form>
96                </form-connector>
97            </h-modal-body>
98            <h-modal-footer>
99                <div class="availability-notifier-modal__footer">
100                    <h-modal-close class="btn btn_outline btn_full-width"> ${l("Cancel")} </h-modal-close>
101                    <button
102                        type="submit"
103                        class="btn btn_primary btn_full-width"
104                        @click=${this._emitSubmitEvent}
105                    >
106                        <h-icon
107                            icon-name="icon-bell"
108                            css-classes="btn__icon btn__icon_left"
109                        ></h-icon>
110                        ${l("Sign me up for notification")}
111                    </button>
112                </div>
113            </h-modal-footer>
114        </h-modal>`}}p([n({type:String,attribute:"product-name"})],h.prototype,"productName");p([n({type:String,attribute:"product-image"})],h.prototype,"productImage");p([n({type:Array})],h.prototype,"variants");p([n({type:String,attribute:"form-id"})],h.prototype,"formId");p([n({type:String,attribute:"control-id"})],h.prototype,"controlId");p([n({type:Object})],h.prototype,"modal");const ot={confirm:"confirm"};var at=Object.defineProperty,y=(a,t,i,s)=>{for(var e=void 0,o=a.length-1,r;o>=0;o--)(r=a[o])&&(e=r(t,i,e)||e);return e&&at(t,i,e),e};class _ extends g{constructor(){super(),this.productName="",this.productImage="",this.userEmail="",this.modal=m(),this._emitConfirmEvent=()=>{this.dispatchEvent(new CustomEvent(ot.confirm,{bubbles:!0}))}}static{this.moduleName="availability-notifier-unsubscribe-modal"}render(){return d`<h-modal
115            class="modal_availability-notifier-unsubscribe"
116            ${A(this.modal)}
117            hidden
118        >
119            <h-modal-header>
120                <h2 class="font_semibold">${l("Opt out of availability notifications")}</h2>
121                <h-modal-close
122                    aria-label="${l("Close window")}"
123                    class="btn btn_icon"
124                >
125                    <h-icon
126                        icon-name="icon-x"
127                        role="button"
128                        size="l"
129                        clickable
130                    ></h-icon>
131                </h-modal-close>
132            </h-modal-header>
133            <h-modal-body>
134                <div class="grid__row grid__row_xs-vcenter mb-xs-2">
135                    <div class="grid__col grid__col_xs-auto">
136                        <img
137                            src=${this.productImage}
138                            alt=${this.productName}
139                        />
140                    </div>
141
142                    <div class="grid__col grid__col_xs-grow availability-notifier-modal__product-name">${this.productName}</div>
143                </div>
144
145                <p class="mb-xs-2 availability-notifier-modal__text">
146                    ${l("Currently, if this product is in stock, you will be notified at")} <strong>${this.userEmail}</strong>.
147                    ${l("Do you want to unsubscribe from notifications about the availability of this product?")}
148                </p>
149            </h-modal-body>
150            <h-modal-footer>
151                <div class="availability-notifier-modal__footer">
152                    <h-modal-close class="btn btn_outline btn_full-width"> ${l("Remain signed up")} </h-modal-close>
153                    <button
154                        type="submit"
155                        class="btn btn_secondary btn_full-width"
156                        @click=${this._emitConfirmEvent}
157                    >
158                        <h-icon
159                            icon-name="icon-bell-off"
160                            css-classes="btn__icon btn__icon_left"
161                        ></h-icon>
162                        ${l("Opt out of notifications")}
163                    </button>
164                </div>
165            </h-modal-footer>
166        </h-modal>`}}y([n({type:String,attribute:"product-name"})],_.prototype,"productName");y([n({type:String,attribute:"product-image"})],_.prototype,"productImage");y([n({type:String,attribute:"user-email"})],_.prototype,"userEmail");y([n({type:Object})],_.prototype,"modal");class At extends F{static{this.dependencies=[B.component]}static{this.featureName=v.component}
166async init(){const t=await this.getApi(L),i=await this.getApi(V.api),s=new X(t),e=new J({availabilityNotifierHttpApi:s,flashMessengerApi:i}),o=new Q(e);return{cores:[{type:H.api,instance:[o]},{type:Y,instance:[c,P,h,_]}]}}}export{At as AvailabilityNotifierInitializer};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.