haori-bootstrap 0.5.59 → 0.5.61
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/README.ja.md +9 -6
- package/README.md +10 -7
- package/dist/haori-bootstrap.iife.js +2 -2
- package/dist/haori-bootstrap.iife.js.map +1 -1
- package/dist/haori-bootstrap.js +325 -295
- package/dist/haori-bootstrap.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/modal.d.ts +1 -1
- package/package.json +1 -1
package/README.ja.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Haori.js Bootstrap は、Haori.js 向けの Bootstrap ベース UI 拡張ライブラリです。
|
|
4
4
|
|
|
5
|
-
Version: 0.5.
|
|
5
|
+
Version: 0.5.61
|
|
6
6
|
|
|
7
7
|
## 概要
|
|
8
8
|
|
|
@@ -41,9 +41,9 @@ npm install haori-bootstrap
|
|
|
41
41
|
rel="stylesheet"
|
|
42
42
|
href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css"
|
|
43
43
|
/>
|
|
44
|
-
<script src="https://cdn.jsdelivr.net/npm/haori@0.59.
|
|
44
|
+
<script src="https://cdn.jsdelivr.net/npm/haori@0.59.3/dist/haori.iife.js"></script>
|
|
45
45
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js"></script>
|
|
46
|
-
<script src="https://cdn.jsdelivr.net/npm/haori-bootstrap@0.5.
|
|
46
|
+
<script src="https://cdn.jsdelivr.net/npm/haori-bootstrap@0.5.61/dist/haori-bootstrap.iife.js"></script>
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
IIFE 版は、window.Haori と window.bootstrap が利用可能な場合に自動で有効化されます。
|
|
@@ -250,7 +250,10 @@ Bootstrap の `hidden.bs.modal` は、閉じたモーダルから発火します
|
|
|
250
250
|
- 子が閉じたとき(`hidden.bs.modal`)、他のモーダルがまだ開いていて、フォーカスがそのどれにも無ければ、子を開く直前に親の中でフォーカスがあった要素(子を開いたボタンなど)へ戻します。その要素が消えた・無効になったなどで戻せないときは、開いているモーダルのうち文書の中で最後にあるもの(いちばん手前に表示されるもの)へ戻します。
|
|
251
251
|
- 子のモーダルに `data-bs-focus="false"` を宣言すると、子へフォーカスを移しません。
|
|
252
252
|
- Haori で開いたモーダル、`data-bs-toggle` で開いたモーダル、Haori の確認・通知のダイアログのいずれにも効きます。他のモーダルが開いていないときは何もしません。
|
|
253
|
-
-
|
|
253
|
+
- 子が閉じた後、他のモーダルがまだ開いていれば、その中でいちばん手前のモーダルに Tab キーのフォーカスを閉じ込めます。Bootstrap は子を閉じても親の閉じ込めを戻さないため、このライブラリが代わりに閉じ込めます。フォーカスがモーダルの外へ出ようとしたら、モーダルの中の最初の操作できる要素(Shift+Tab キーで出たときは最後の要素)へ戻します。操作できる要素が無ければ、モーダル自身へ戻します。
|
|
254
|
+
- いちばん手前のモーダルに `data-bs-focus="false"` を宣言すると、閉じ込めません。
|
|
255
|
+
- 別のモーダルを開くと閉じ込めをやめます(開いたモーダルは Bootstrap が閉じ込めます)。すべてのモーダルが閉じたときもやめます。
|
|
256
|
+
- 子が閉じると Bootstrap は `body` から `modal-open` を外しますが、他のモーダルがまだ開いていれば付け直します。背景のスクロールを止める指定(`body` の `overflow: hidden` と、スクロールバーの幅の `padding-right`)は、子が閉じても Bootstrap が残すため、親が開いている間は背景はスクロールしません。
|
|
254
257
|
|
|
255
258
|
## e2e 向け安定セレクタ
|
|
256
259
|
|
|
@@ -314,12 +317,12 @@ push 後に、そのタグから GitHub Release を published にします。公
|
|
|
314
317
|
次回 patch リリースの例:
|
|
315
318
|
|
|
316
319
|
```bash
|
|
317
|
-
# version が 0.5.
|
|
320
|
+
# version が 0.5.62 になる
|
|
318
321
|
npm version patch
|
|
319
322
|
git push origin main --follow-tags
|
|
320
323
|
```
|
|
321
324
|
|
|
322
|
-
その後、push 済みタグの GitHub Release を作成して published にします。例として次回は `0.5.
|
|
325
|
+
その後、push 済みタグの GitHub Release を作成して published にします。例として次回は `0.5.62` タグになります。
|
|
323
326
|
|
|
324
327
|
自動公開:
|
|
325
328
|
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Haori.js Bootstrap is a Bootstrap-based UI extension library for Haori.js.
|
|
4
4
|
|
|
5
|
-
Version: 0.5.
|
|
5
|
+
Version: 0.5.61
|
|
6
6
|
|
|
7
7
|
## Overview
|
|
8
8
|
|
|
@@ -41,9 +41,9 @@ Load dependencies in this order for browser direct loading:
|
|
|
41
41
|
rel="stylesheet"
|
|
42
42
|
href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css"
|
|
43
43
|
/>
|
|
44
|
-
<script src="https://cdn.jsdelivr.net/npm/haori@0.59.
|
|
44
|
+
<script src="https://cdn.jsdelivr.net/npm/haori@0.59.3/dist/haori.iife.js"></script>
|
|
45
45
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js"></script>
|
|
46
|
-
<script src="https://cdn.jsdelivr.net/npm/haori-bootstrap@0.5.
|
|
46
|
+
<script src="https://cdn.jsdelivr.net/npm/haori-bootstrap@0.5.61/dist/haori-bootstrap.iife.js"></script>
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
The IIFE build auto-enables when both window.Haori and window.bootstrap are available.
|
|
@@ -250,7 +250,10 @@ When a modal is opened on top of another open modal (a nested modal), focus move
|
|
|
250
250
|
- When the child is hidden (`hidden.bs.modal`), another modal is still open and focus is in none of them, focus returns to the element that had focus in the parent just before the child was opened (such as the button that opened it). If that element cannot take focus (it was removed or disabled), focus moves to the open modal that comes last in the document (the one shown in front).
|
|
251
251
|
- Add `data-bs-focus="false"` to the child modal to keep focus from moving to it.
|
|
252
252
|
- This applies to modals opened by Haori, modals opened with `data-bs-toggle`, and Haori's confirm and alert dialogs. Nothing happens when no other modal is open.
|
|
253
|
-
-
|
|
253
|
+
- After the child is hidden, if other modals are still open, Tab focus is trapped inside the one shown in front. Bootstrap does not restore the parent's focus trap when the child is closed, so this library traps focus instead. When focus tries to leave the modal, it moves to the first focusable element inside it (the last one when leaving with Shift+Tab), or to the modal itself when it has no focusable element.
|
|
254
|
+
- Add `data-bs-focus="false"` to the front modal to keep it from trapping focus.
|
|
255
|
+
- The trap stops when another modal is opened (Bootstrap traps focus in that one) and when all modals are closed.
|
|
256
|
+
- Bootstrap removes `modal-open` from `body` when the child is hidden; it is added back while other modals are still open. The scroll lock on `body` (`overflow: hidden` and the `padding-right` for the scrollbar width) is kept by Bootstrap when the child is closed, so the page behind does not scroll while the parent is open.
|
|
254
257
|
|
|
255
258
|
## Stable selectors for e2e
|
|
256
259
|
|
|
@@ -311,15 +314,15 @@ git push origin main --follow-tags
|
|
|
311
314
|
|
|
312
315
|
After pushing, publish a GitHub Release from the generated version tag. The release workflow then publishes the package and uploads `dist.zip` automatically.
|
|
313
316
|
|
|
314
|
-
Example next patch release after `0.5.
|
|
317
|
+
Example next patch release after `0.5.61`:
|
|
315
318
|
|
|
316
319
|
```bash
|
|
317
|
-
# version becomes 0.5.
|
|
320
|
+
# version becomes 0.5.62
|
|
318
321
|
npm version patch
|
|
319
322
|
git push origin main --follow-tags
|
|
320
323
|
```
|
|
321
324
|
|
|
322
|
-
Create and publish the GitHub Release for the pushed tag such as `0.5.
|
|
325
|
+
Create and publish the GitHub Release for the pushed tag such as `0.5.62`.
|
|
323
326
|
|
|
324
327
|
Release automation:
|
|
325
328
|
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var HaoriBootstrap=(function(E){"use strict";function Z(e){return typeof e=="function"}function ee(e){return Z(e?.Modal)?e?.Modal:void 0}function te(e){return Z(e?.Toast)?e?.Toast:void 0}function N(e){return!!ee(e)}function Ge(e){return!!te(e)}function H(e,t,n){const o=ee(n);if(o)return typeof o.getOrCreateInstance=="function"?o.getOrCreateInstance(e,t):new o(e,t)}function Ke(e,t,n){const o=te(n);if(o)return typeof o.getOrCreateInstance=="function"?o.getOrCreateInstance(e,t):new o(e,t)}const Ve="data-haori-dialog",je="data-haori-confirm",Je="data-haori-dialog-title",ne="data-haori-dialog-ok",oe="data-haori-confirm-ok",re="data-haori-confirm-cancel",Xe="OK",Qe="Cancel";let Ye=0;function se(){return{backdrop:"static",keyboard:!1}}function ie(e,t){if(t.dialogContainerSelector){const n=e.querySelector(t.dialogContainerSelector);if(n)return n}return e.body}function ae(e,t,n,o){const r=o.dialogTitle,s=e.createElement("div");s.className="modal fade",s.tabIndex=-1,s.setAttribute(n?je:Ve,"true"),s.setAttribute("aria-hidden","true");const c=e.createElement("div");c.className="modal-dialog modal-dialog-centered";const a=e.createElement("div");if(a.className="modal-content",r){const b=`haori-dialog-title-${++Ye}`,I=e.createElement("div");I.className="modal-header";const T=e.createElement("h5");T.className="modal-title",T.id=b,T.setAttribute(Je,"true"),T.textContent=r,I.appendChild(T),a.appendChild(I),s.setAttribute("aria-labelledby",b)}const f=e.createElement("div");f.className="modal-body";const l=e.createElement("p");l.className="mb-0",l.style.whiteSpace="pre-line",l.textContent=t,f.appendChild(l);const m=e.createElement("div");if(m.className="modal-footer",n){const b=e.createElement("button");b.type="button",b.className="btn btn-secondary",b.setAttribute(re,"true"),b.textContent=o.dialogCancelLabel??Qe,m.appendChild(b)}const d=e.createElement("button");return d.type="button",d.className="btn btn-primary",d.setAttribute(n?oe:ne,"true"),d.textContent=o.dialogOkLabel??Xe,m.appendChild(d),a.append(f,m),c.appendChild(a),s.appendChild(c),s}function le(e){let t=!1,n=!1;return{requestClose:o=>{t||(t=!0,o?.(),n&&e.hide())},handleShown:()=>{n=!0,t&&e.hide()}}}function Ze(e,t){const n=globalThis.document,o=ae(n,e,!1,t);ie(n,t).appendChild(o);const r=H(o,se(),t.bootstrap);return r?new Promise((s,c)=>{const a=()=>{o.removeEventListener("shown.bs.modal",m),o.removeEventListener("hidden.bs.modal",f),o.remove(),r.dispose?.(),s()},f=()=>{a()},l=le(r),m=l.handleShown;o.querySelector(`[${ne}]`)?.addEventListener("click",()=>{l.requestClose()}),o.addEventListener("shown.bs.modal",m),o.addEventListener("hidden.bs.modal",f,{once:!0});try{r.show()}catch(b){o.removeEventListener("shown.bs.modal",m),o.removeEventListener("hidden.bs.modal",f),o.remove(),r.dispose?.(),c(b)}}):(o.remove(),Promise.reject(new Error("Bootstrap Modal is unavailable.")))}function et(e,t){const n=globalThis.document,o=ae(n,e,!0,t);ie(n,t).appendChild(o);const r=H(o,se(),t.bootstrap);return r?new Promise((s,c)=>{let a=!1;const f=()=>{o.removeEventListener("shown.bs.modal",d),o.removeEventListener("hidden.bs.modal",l),o.remove(),r.dispose?.(),s(a)},l=()=>{f()},m=le(r),d=m.handleShown,b=o.querySelector(`[${oe}]`),I=o.querySelector(`[${re}]`);b?.addEventListener("click",()=>{m.requestClose(()=>{a=!0})}),I?.addEventListener("click",()=>{m.requestClose(()=>{a=!1})}),o.addEventListener("shown.bs.modal",d),o.addEventListener("hidden.bs.modal",l,{once:!0});try{r.show()}catch(T){o.removeEventListener("shown.bs.modal",d),o.removeEventListener("hidden.bs.modal",l),o.remove(),r.dispose?.(),c(T)}}):(o.remove(),Promise.reject(new Error("Bootstrap Modal is unavailable.")))}const v="data-haori-owned",h="data-haori-message-container",w="data-haori-invalid-target",L="data-haori-valid-target",tt=new Set(["button","a","area","br","col","embed","hr","img","source","track","wbr"]);function S(e){return e instanceof HTMLInputElement&&(e.type==="checkbox"||e.type==="radio")}function p(e){return e instanceof HTMLInputElement&&e.type==="radio"}function M(e){return e instanceof HTMLInputElement||e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement}function F(e){return tt.has(e.localName)}function ce(e){const t=e.nextElementSibling;return t instanceof HTMLElement&&t.getAttribute(h)==="true"?t:void 0}function k(e){return Array.from(e.children).find(t=>t instanceof HTMLElement&&t.getAttribute(h)==="true")}function de(e,t){const n=e.createElement("div");return n.setAttribute(v,"true"),n.textContent=t,n}function ue(e){return F(e)?ce(e):k(e)}function fe(e,t){e.insertAdjacentElement(F(e)?"afterend":"afterbegin",t)}function y(e){if(e.name){const t=e.form??e.ownerDocument,n=typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(e.name):e.name.replace(/(["\\])/g,"\\$1"),o=Array.from(t.querySelectorAll(`input[type="radio"][name="${n}"]`));if(o.length>0)return o}return[e]}function nt(e){const[t,...n]=e;if(!t)return;let o=t;for(;o;){if(n.every(r=>o?.contains(r)))return o;o=o.parentElement}}function W(e){const n=y(e).map(o=>o.closest(".form-check")).filter(o=>o instanceof HTMLElement);if(n.length>1){const o=nt(n);if(o&&!n.includes(o))return o}return R(e)}function R(e){const t=e.closest(".form-check");return t instanceof HTMLElement?t:void 0}function me(e){const t=e.nextElementSibling;if(t instanceof HTMLElement&&t.getAttribute(h)==="true")return t;const n=document.createElement("div");return n.className="invalid-feedback d-block",n.setAttribute(v,"true"),n.setAttribute(h,"true"),e.insertAdjacentElement("afterend",n),n}function ot(e){const t=p(e)?W(e):R(e);if(!t)return me(e);const n=k(t);if(n)return n;const o=document.createElement("div");return o.className="invalid-feedback d-block",o.setAttribute(v,"true"),o.setAttribute(h,"true"),t.appendChild(o),o}function rt(e){const t=ue(e);if(t)return t;const n=document.createElement("div");return n.className="alert alert-danger",n.setAttribute("role","alert"),n.setAttribute(v,"true"),n.setAttribute(h,"true"),fe(e,n),n}function g(e){e.getAttribute(w)==="true"&&(e.classList.remove("is-invalid"),e.removeAttribute(w))}function A(e){e.getAttribute(L)==="true"&&(e.classList.remove("is-valid"),e.removeAttribute(L))}function be(e){switch(e){case"success":return"alert alert-success";case"warning":return"alert alert-warning";case"info":return"alert alert-info";default:return"alert alert-danger"}}function D(e){return e==="success"?"valid-feedback d-block":"invalid-feedback d-block"}function he(e){(p(e)?y(e):[e]).forEach(n=>{n.classList.add("is-invalid"),n.setAttribute(w,"true")})}function st(e){(p(e)?y(e):[e]).forEach(n=>{g(n)})}function Ee(e,t){const n=e.nextElementSibling;if(n instanceof HTMLElement&&n.getAttribute(h)==="true")return n.className=D(t),n;const o=document.createElement("div");return o.className=D(t),o.setAttribute(v,"true"),o.setAttribute(h,"true"),e.insertAdjacentElement("afterend",o),o}function it(e,t){const n=p(e)?W(e):R(e);if(!n)return Ee(e,t);const o=k(n);if(o)return o.className=D(t),o;const r=document.createElement("div");return r.className=D(t),r.setAttribute(v,"true"),r.setAttribute(h,"true"),n.appendChild(r),r}function at(e,t){const n=ue(e);if(n)return n.className=be(t),n;const o=document.createElement("div");return o.className=be(t),o.setAttribute("role","alert"),o.setAttribute(v,"true"),o.setAttribute(h,"true"),fe(e,o),o}function lt(e,t){return(S(e)?ot(e):M(e)?me(e):rt(e)).appendChild(de(document,t)),S(e)?he(e):M(e)&&(e.classList.add("is-invalid"),e.setAttribute(w,"true")),Promise.resolve()}function ct(e,t,n){if((S(e)?it(e,n):M(e)?Ee(e,n):at(e,n)).appendChild(de(document,t)),S(e)){const r=p(e)?y(e):[e];n==="success"?r.forEach(s=>{g(s),s.classList.add("is-valid"),s.setAttribute(L,"true")}):!n||n==="error"?(r.forEach(s=>A(s)),he(e)):r.forEach(s=>{A(s),g(s)})}else M(e)&&(n==="success"?(g(e),e.classList.add("is-valid"),e.setAttribute(L,"true")):!n||n==="error"?(A(e),e.classList.add("is-invalid"),e.setAttribute(w,"true")):(A(e),g(e)));return Promise.resolve()}function ve(e){if(S(e)){const r=p(e)?W(e):R(e);(r?k(r):void 0)?.remove(),st(e),(p(e)?y(e):[e]).forEach(a=>A(a))}else if(M(e)){const r=e.nextElementSibling;r instanceof HTMLElement&&r.getAttribute(h)==="true"&&r.remove(),g(e),A(e)}else F(e)&&ce(e)?.remove();return e.querySelectorAll(`[${h}="true"]`).forEach(r=>{r.remove()}),e.querySelectorAll(`[${w}="true"]`).forEach(r=>{g(r)}),e.querySelectorAll(`[${L}="true"]`).forEach(r=>{A(r)}),Promise.resolve()}const z=new WeakSet,dt="data-haori-dismiss-lock",G=new WeakSet;let _=null,K=new WeakMap,B=!1,V;function pe(e){return Array.from(e.ownerDocument.querySelectorAll(".modal.show")).filter(t=>t!==e)}const ge=e=>{e.target instanceof HTMLElement&&(_=e.target)},Ae=e=>{if(!(e.target instanceof HTMLElement))return;const t=e.target;z.add(t),_&&K.set(t,_)},Te=e=>{if(!(e.target instanceof HTMLElement))return;const t=e.target;z.delete(t),t.getAttribute("data-bs-focus")!=="false"&&pe(t).length>0&&!t.contains(t.ownerDocument.activeElement)&&t.focus()},we=e=>{if(!(e.target instanceof HTMLElement))return;const t=e.target,n=K.get(t),o=pe(t),r=t.ownerDocument.activeElement;o.length===0||o.some(s=>s.contains(r))||n&&o.some(s=>s.contains(n))&&(n.focus(),t.ownerDocument.activeElement===n)||o[o.length-1].focus()},Ce=e=>{const t=e.target;t instanceof HTMLElement&&t.hasAttribute(dt)&&!G.has(t)&&e.preventDefault()};function Le(e,t){G.add(e);try{t.hide()}finally{G.delete(e)}}function ut(e=document){B||(B=!0,V=e,e.addEventListener("focusin",ge),e.addEventListener("show.bs.modal",Ae),e.addEventListener("shown.bs.modal",Te),e.addEventListener("hide.bs.modal",Ce),e.addEventListener("hidden.bs.modal",we))}function ft(e=V??document){B&&(B=!1,e.removeEventListener("focusin",ge),e.removeEventListener("show.bs.modal",Ae),e.removeEventListener("shown.bs.modal",Te),e.removeEventListener("hide.bs.modal",Ce),e.removeEventListener("hidden.bs.modal",we),V=void 0,_=null,K=new WeakMap)}function Se(e){return e.classList.contains("modal")?e:e.closest(".modal")}function Me(e){e.tabIndex<0&&(e.tabIndex=-1),e.hasAttribute("aria-hidden")||e.setAttribute("aria-hidden","true")}function mt(e,t){const n=Se(e);if(!n)return Promise.reject(new Error('No ancestor ".modal" element was found for the target.'));Me(n),ve(n);const o=H(n,void 0,t.bootstrap);return o?(o.show(),Promise.resolve()):Promise.reject(new Error("Bootstrap Modal is unavailable."))}function bt(e,t){const n=Se(e);if(!n)return Promise.reject(new Error('No ancestor ".modal" element was found for the target.'));Me(n);const o=H(n,void 0,t.bootstrap);return o?z.has(n)?(n.addEventListener("shown.bs.modal",()=>{Le(n,o)},{once:!0}),Promise.resolve()):(Le(n,o),Promise.resolve()):Promise.reject(new Error("Bootstrap Modal is unavailable."))}const ye="data-haori-toast-container",ht="data-haori-toast",Et="data-haori-toast-level",vt="data-haori-toast-accent",pt="data-haori-toast-dismiss",Ie={"top-start":"top-0 start-0","top-center":"top-0 start-50 translate-middle-x","top-end":"top-0 end-0","bottom-start":"bottom-0 start-0","bottom-center":"bottom-0 start-50 translate-middle-x","bottom-end":"bottom-0 end-0"};function gt(e){switch(e){case"success":return{accentClassName:"bg-success",level:"success"};case"warning":return{accentClassName:"bg-warning",level:"warning"};case"error":return{accentClassName:"bg-danger",level:"error"};default:return{accentClassName:"bg-info",level:"info"}}}function At(e,t){if(t.toastContainerSelector){const n=e.querySelector(t.toastContainerSelector);if(n)return n}return e.body}function Tt(e,t){const n=At(e,t),o=Ie[t.toastPosition??"bottom-end"],r=n.querySelector(`[${ye}="true"]`);if(r){const c=Object.values(Ie).flatMap(a=>a.split(" "));return r.classList.remove(...c),r.classList.add(...o.split(" ")),r}const s=e.createElement("div");return s.className=`toast-container position-fixed ${o} p-3`,s.setAttribute(ye,"true"),n.appendChild(s),s}function wt(e,t,n){const o=globalThis.document,r=gt(t),s=o.createElement("div");s.className="toast border bg-body text-body shadow-sm",s.setAttribute("role","status"),s.setAttribute("aria-live","polite"),s.setAttribute("aria-atomic","true"),s.setAttribute(ht,"true"),s.setAttribute(Et,r.level);const c=o.createElement("div");c.className="d-flex align-items-stretch";const a=o.createElement("div");a.className=`flex-shrink-0 rounded-start ${r.accentClassName}`,a.style.width="0.375rem",a.setAttribute(vt,"true");const f=o.createElement("div");f.className="toast-body",f.style.whiteSpace="pre-line",f.textContent=e;const l=o.createElement("button");l.type="button",l.className="btn-close me-2 m-auto flex-shrink-0",l.setAttribute("aria-label","Close"),l.setAttribute(pt,"true"),c.appendChild(a),c.appendChild(f),c.appendChild(l),s.appendChild(c),Tt(o,n).appendChild(s);const m=n.toastDelay!==void 0?{delay:n.toastDelay}:void 0,d=Ke(s,m,n.bootstrap);if(!d)return s.remove(),Promise.reject(new Error("Bootstrap Toast is unavailable."));l.addEventListener("click",()=>{d.hide?.()}),s.addEventListener("hidden.bs.toast",()=>{s.remove(),d.dispose?.()},{once:!0});try{return d.show(),Promise.resolve()}catch(b){return s.remove(),d.dispose?.(),Promise.reject(b)}}let u={options:{fallbackToNative:!0}};function C(e){return e?String(e).replace(/\\n/g,`
|
|
2
|
-
`):""}function
|
|
1
|
+
var HaoriBootstrap=(function(E){"use strict";function te(e){return typeof e=="function"}function ne(e){return te(e?.Modal)?e?.Modal:void 0}function oe(e){return te(e?.Toast)?e?.Toast:void 0}function k(e){return!!ne(e)}function je(e){return!!oe(e)}function H(e,t,n){const o=ne(n);if(o)return typeof o.getOrCreateInstance=="function"?o.getOrCreateInstance(e,t):new o(e,t)}function Je(e,t,n){const o=oe(n);if(o)return typeof o.getOrCreateInstance=="function"?o.getOrCreateInstance(e,t):new o(e,t)}const Xe="data-haori-dialog",Qe="data-haori-confirm",Ye="data-haori-dialog-title",re="data-haori-dialog-ok",se="data-haori-confirm-ok",ie="data-haori-confirm-cancel",Ze="OK",et="Cancel";let tt=0;function ae(){return{backdrop:"static",keyboard:!1}}function le(e,t){if(t.dialogContainerSelector){const n=e.querySelector(t.dialogContainerSelector);if(n)return n}return e.body}function ce(e,t,n,o){const r=o.dialogTitle,s=e.createElement("div");s.className="modal fade",s.tabIndex=-1,s.setAttribute(n?Qe:Xe,"true"),s.setAttribute("aria-hidden","true");const a=e.createElement("div");a.className="modal-dialog modal-dialog-centered";const l=e.createElement("div");if(l.className="modal-content",r){const b=`haori-dialog-title-${++tt}`,N=e.createElement("div");N.className="modal-header";const w=e.createElement("h5");w.className="modal-title",w.id=b,w.setAttribute(Ye,"true"),w.textContent=r,N.appendChild(w),l.appendChild(N),s.setAttribute("aria-labelledby",b)}const f=e.createElement("div");f.className="modal-body";const c=e.createElement("p");c.className="mb-0",c.style.whiteSpace="pre-line",c.textContent=t,f.appendChild(c);const m=e.createElement("div");if(m.className="modal-footer",n){const b=e.createElement("button");b.type="button",b.className="btn btn-secondary",b.setAttribute(ie,"true"),b.textContent=o.dialogCancelLabel??et,m.appendChild(b)}const d=e.createElement("button");return d.type="button",d.className="btn btn-primary",d.setAttribute(n?se:re,"true"),d.textContent=o.dialogOkLabel??Ze,m.appendChild(d),l.append(f,m),a.appendChild(l),s.appendChild(a),s}function de(e){let t=!1,n=!1;return{requestClose:o=>{t||(t=!0,o?.(),n&&e.hide())},handleShown:()=>{n=!0,t&&e.hide()}}}function nt(e,t){const n=globalThis.document,o=ce(n,e,!1,t);le(n,t).appendChild(o);const r=H(o,ae(),t.bootstrap);return r?new Promise((s,a)=>{const l=()=>{o.removeEventListener("shown.bs.modal",m),o.removeEventListener("hidden.bs.modal",f),o.remove(),r.dispose?.(),s()},f=()=>{l()},c=de(r),m=c.handleShown;o.querySelector(`[${re}]`)?.addEventListener("click",()=>{c.requestClose()}),o.addEventListener("shown.bs.modal",m),o.addEventListener("hidden.bs.modal",f,{once:!0});try{r.show()}catch(b){o.removeEventListener("shown.bs.modal",m),o.removeEventListener("hidden.bs.modal",f),o.remove(),r.dispose?.(),a(b)}}):(o.remove(),Promise.reject(new Error("Bootstrap Modal is unavailable.")))}function ot(e,t){const n=globalThis.document,o=ce(n,e,!0,t);le(n,t).appendChild(o);const r=H(o,ae(),t.bootstrap);return r?new Promise((s,a)=>{let l=!1;const f=()=>{o.removeEventListener("shown.bs.modal",d),o.removeEventListener("hidden.bs.modal",c),o.remove(),r.dispose?.(),s(l)},c=()=>{f()},m=de(r),d=m.handleShown,b=o.querySelector(`[${se}]`),N=o.querySelector(`[${ie}]`);b?.addEventListener("click",()=>{m.requestClose(()=>{l=!0})}),N?.addEventListener("click",()=>{m.requestClose(()=>{l=!1})}),o.addEventListener("shown.bs.modal",d),o.addEventListener("hidden.bs.modal",c,{once:!0});try{r.show()}catch(w){o.removeEventListener("shown.bs.modal",d),o.removeEventListener("hidden.bs.modal",c),o.remove(),r.dispose?.(),a(w)}}):(o.remove(),Promise.reject(new Error("Bootstrap Modal is unavailable.")))}const p="data-haori-owned",h="data-haori-message-container",C="data-haori-invalid-target",S="data-haori-valid-target",rt=new Set(["button","a","area","br","col","embed","hr","img","source","track","wbr"]);function y(e){return e instanceof HTMLInputElement&&(e.type==="checkbox"||e.type==="radio")}function g(e){return e instanceof HTMLInputElement&&e.type==="radio"}function M(e){return e instanceof HTMLInputElement||e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement}function W(e){return rt.has(e.localName)}function ue(e){const t=e.nextElementSibling;return t instanceof HTMLElement&&t.getAttribute(h)==="true"?t:void 0}function R(e){return Array.from(e.children).find(t=>t instanceof HTMLElement&&t.getAttribute(h)==="true")}function fe(e,t){const n=e.createElement("div");return n.setAttribute(p,"true"),n.textContent=t,n}function me(e){return W(e)?ue(e):R(e)}function be(e,t){e.insertAdjacentElement(W(e)?"afterend":"afterbegin",t)}function I(e){if(e.name){const t=e.form??e.ownerDocument,n=typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(e.name):e.name.replace(/(["\\])/g,"\\$1"),o=Array.from(t.querySelectorAll(`input[type="radio"][name="${n}"]`));if(o.length>0)return o}return[e]}function st(e){const[t,...n]=e;if(!t)return;let o=t;for(;o;){if(n.every(r=>o?.contains(r)))return o;o=o.parentElement}}function z(e){const n=I(e).map(o=>o.closest(".form-check")).filter(o=>o instanceof HTMLElement);if(n.length>1){const o=st(n);if(o&&!n.includes(o))return o}return D(e)}function D(e){const t=e.closest(".form-check");return t instanceof HTMLElement?t:void 0}function he(e){const t=e.nextElementSibling;if(t instanceof HTMLElement&&t.getAttribute(h)==="true")return t;const n=document.createElement("div");return n.className="invalid-feedback d-block",n.setAttribute(p,"true"),n.setAttribute(h,"true"),e.insertAdjacentElement("afterend",n),n}function it(e){const t=g(e)?z(e):D(e);if(!t)return he(e);const n=R(t);if(n)return n;const o=document.createElement("div");return o.className="invalid-feedback d-block",o.setAttribute(p,"true"),o.setAttribute(h,"true"),t.appendChild(o),o}function at(e){const t=me(e);if(t)return t;const n=document.createElement("div");return n.className="alert alert-danger",n.setAttribute("role","alert"),n.setAttribute(p,"true"),n.setAttribute(h,"true"),be(e,n),n}function A(e){e.getAttribute(C)==="true"&&(e.classList.remove("is-invalid"),e.removeAttribute(C))}function T(e){e.getAttribute(S)==="true"&&(e.classList.remove("is-valid"),e.removeAttribute(S))}function Ee(e){switch(e){case"success":return"alert alert-success";case"warning":return"alert alert-warning";case"info":return"alert alert-info";default:return"alert alert-danger"}}function _(e){return e==="success"?"valid-feedback d-block":"invalid-feedback d-block"}function ve(e){(g(e)?I(e):[e]).forEach(n=>{n.classList.add("is-invalid"),n.setAttribute(C,"true")})}function lt(e){(g(e)?I(e):[e]).forEach(n=>{A(n)})}function pe(e,t){const n=e.nextElementSibling;if(n instanceof HTMLElement&&n.getAttribute(h)==="true")return n.className=_(t),n;const o=document.createElement("div");return o.className=_(t),o.setAttribute(p,"true"),o.setAttribute(h,"true"),e.insertAdjacentElement("afterend",o),o}function ct(e,t){const n=g(e)?z(e):D(e);if(!n)return pe(e,t);const o=R(n);if(o)return o.className=_(t),o;const r=document.createElement("div");return r.className=_(t),r.setAttribute(p,"true"),r.setAttribute(h,"true"),n.appendChild(r),r}function dt(e,t){const n=me(e);if(n)return n.className=Ee(t),n;const o=document.createElement("div");return o.className=Ee(t),o.setAttribute("role","alert"),o.setAttribute(p,"true"),o.setAttribute(h,"true"),be(e,o),o}function ut(e,t){return(y(e)?it(e):M(e)?he(e):at(e)).appendChild(fe(document,t)),y(e)?ve(e):M(e)&&(e.classList.add("is-invalid"),e.setAttribute(C,"true")),Promise.resolve()}function ft(e,t,n){if((y(e)?ct(e,n):M(e)?pe(e,n):dt(e,n)).appendChild(fe(document,t)),y(e)){const r=g(e)?I(e):[e];n==="success"?r.forEach(s=>{A(s),s.classList.add("is-valid"),s.setAttribute(S,"true")}):!n||n==="error"?(r.forEach(s=>T(s)),ve(e)):r.forEach(s=>{T(s),A(s)})}else M(e)&&(n==="success"?(A(e),e.classList.add("is-valid"),e.setAttribute(S,"true")):!n||n==="error"?(T(e),e.classList.add("is-invalid"),e.setAttribute(C,"true")):(T(e),A(e)));return Promise.resolve()}function ge(e){if(y(e)){const r=g(e)?z(e):D(e);(r?R(r):void 0)?.remove(),lt(e),(g(e)?I(e):[e]).forEach(l=>T(l))}else if(M(e)){const r=e.nextElementSibling;r instanceof HTMLElement&&r.getAttribute(h)==="true"&&r.remove(),A(e),T(e)}else W(e)&&ue(e)?.remove();return e.querySelectorAll(`[${h}="true"]`).forEach(r=>{r.remove()}),e.querySelectorAll(`[${C}="true"]`).forEach(r=>{A(r)}),e.querySelectorAll(`[${S}="true"]`).forEach(r=>{T(r)}),Promise.resolve()}const G=new WeakSet,mt="data-haori-dismiss-lock",K=new WeakSet;let B=null,V=new WeakMap,v=null,j=!1;const bt=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(e=>`${e}:not([tabindex^="-"])`).join(",");let P=!1,J;function Ae(e){return Array.from(e.ownerDocument.querySelectorAll(".modal.show")).filter(t=>t!==e)}function ht(e){return Array.from(e.querySelectorAll(bt)).filter(t=>!t.hasAttribute("disabled")&&!t.classList.contains("disabled")&&(typeof t.checkVisibility!="function"||t.checkVisibility({visibilityProperty:!0})))}const Te=e=>{const t=e.target;if(t instanceof HTMLElement&&(B=t),!v||!(t instanceof Element)||v.contains(t))return;const n=ht(v);n.length===0?v.focus():j?n[n.length-1].focus():n[0].focus()},we=e=>{e instanceof KeyboardEvent&&e.key==="Tab"&&(j=e.shiftKey)},Ce=e=>{if(!(e.target instanceof HTMLElement))return;const t=e.target;G.add(t),v=null,B&&V.set(t,B)},Le=e=>{if(!(e.target instanceof HTMLElement))return;const t=e.target;G.delete(t),t.getAttribute("data-bs-focus")!=="false"&&Ae(t).length>0&&!t.contains(t.ownerDocument.activeElement)&&t.focus()},Se=e=>{if(!(e.target instanceof HTMLElement))return;const t=e.target,n=V.get(t),o=Ae(t);if(o.length===0){v=null;return}t.ownerDocument.body.classList.add("modal-open");const r=o[o.length-1];v=r.getAttribute("data-bs-focus")==="false"?null:r;const s=t.ownerDocument.activeElement;o.some(a=>a.contains(s))||n&&o.some(a=>a.contains(n))&&(n.focus(),t.ownerDocument.activeElement===n)||r.focus()},ye=e=>{const t=e.target;t instanceof HTMLElement&&t.hasAttribute(mt)&&!K.has(t)&&e.preventDefault()};function Me(e,t){K.add(e);try{t.hide()}finally{K.delete(e)}}function Et(e=document){P||(P=!0,J=e,e.addEventListener("focusin",Te),e.addEventListener("keydown",we),e.addEventListener("show.bs.modal",Ce),e.addEventListener("shown.bs.modal",Le),e.addEventListener("hide.bs.modal",ye),e.addEventListener("hidden.bs.modal",Se))}function vt(e=J??document){P&&(P=!1,e.removeEventListener("focusin",Te),e.removeEventListener("keydown",we),e.removeEventListener("show.bs.modal",Ce),e.removeEventListener("shown.bs.modal",Le),e.removeEventListener("hide.bs.modal",ye),e.removeEventListener("hidden.bs.modal",Se),J=void 0,B=null,V=new WeakMap,v=null,j=!1)}function Ie(e){return e.classList.contains("modal")?e:e.closest(".modal")}function Ne(e){e.tabIndex<0&&(e.tabIndex=-1),e.hasAttribute("aria-hidden")||e.setAttribute("aria-hidden","true")}function pt(e,t){const n=Ie(e);if(!n)return Promise.reject(new Error('No ancestor ".modal" element was found for the target.'));Ne(n),ge(n);const o=H(n,void 0,t.bootstrap);return o?(o.show(),Promise.resolve()):Promise.reject(new Error("Bootstrap Modal is unavailable."))}function gt(e,t){const n=Ie(e);if(!n)return Promise.reject(new Error('No ancestor ".modal" element was found for the target.'));Ne(n);const o=H(n,void 0,t.bootstrap);return o?G.has(n)?(n.addEventListener("shown.bs.modal",()=>{Me(n,o)},{once:!0}),Promise.resolve()):(Me(n,o),Promise.resolve()):Promise.reject(new Error("Bootstrap Modal is unavailable."))}const ke="data-haori-toast-container",At="data-haori-toast",Tt="data-haori-toast-level",wt="data-haori-toast-accent",Ct="data-haori-toast-dismiss",He={"top-start":"top-0 start-0","top-center":"top-0 start-50 translate-middle-x","top-end":"top-0 end-0","bottom-start":"bottom-0 start-0","bottom-center":"bottom-0 start-50 translate-middle-x","bottom-end":"bottom-0 end-0"};function Lt(e){switch(e){case"success":return{accentClassName:"bg-success",level:"success"};case"warning":return{accentClassName:"bg-warning",level:"warning"};case"error":return{accentClassName:"bg-danger",level:"error"};default:return{accentClassName:"bg-info",level:"info"}}}function St(e,t){if(t.toastContainerSelector){const n=e.querySelector(t.toastContainerSelector);if(n)return n}return e.body}function yt(e,t){const n=St(e,t),o=He[t.toastPosition??"bottom-end"],r=n.querySelector(`[${ke}="true"]`);if(r){const a=Object.values(He).flatMap(l=>l.split(" "));return r.classList.remove(...a),r.classList.add(...o.split(" ")),r}const s=e.createElement("div");return s.className=`toast-container position-fixed ${o} p-3`,s.setAttribute(ke,"true"),n.appendChild(s),s}function Mt(e,t,n){const o=globalThis.document,r=Lt(t),s=o.createElement("div");s.className="toast border bg-body text-body shadow-sm",s.setAttribute("role","status"),s.setAttribute("aria-live","polite"),s.setAttribute("aria-atomic","true"),s.setAttribute(At,"true"),s.setAttribute(Tt,r.level);const a=o.createElement("div");a.className="d-flex align-items-stretch";const l=o.createElement("div");l.className=`flex-shrink-0 rounded-start ${r.accentClassName}`,l.style.width="0.375rem",l.setAttribute(wt,"true");const f=o.createElement("div");f.className="toast-body",f.style.whiteSpace="pre-line",f.textContent=e;const c=o.createElement("button");c.type="button",c.className="btn-close me-2 m-auto flex-shrink-0",c.setAttribute("aria-label","Close"),c.setAttribute(Ct,"true"),a.appendChild(l),a.appendChild(f),a.appendChild(c),s.appendChild(a),yt(o,n).appendChild(s);const m=n.toastDelay!==void 0?{delay:n.toastDelay}:void 0,d=Je(s,m,n.bootstrap);if(!d)return s.remove(),Promise.reject(new Error("Bootstrap Toast is unavailable."));c.addEventListener("click",()=>{d.hide?.()}),s.addEventListener("hidden.bs.toast",()=>{s.remove(),d.dispose?.()},{once:!0});try{return d.show(),Promise.resolve()}catch(b){return s.remove(),d.dispose?.(),Promise.reject(b)}}let u={options:{fallbackToNative:!0}};function L(e){return e?String(e).replace(/\\n/g,`
|
|
2
|
+
`):""}function Re(){return globalThis.window}function X(e){return Promise.resolve(e).then(()=>{})}function O(e){const t=u.originalHaori?.[e];return typeof t=="function"?t:void 0}function x(e){console.warn(`[haori-bootstrap] ${e} skipped because Bootstrap support is unavailable.`)}function De(e){const t=L(e),n=O("dialog");if(n)return X(n(t));const o=Re();return u.options.fallbackToNative&&typeof o?.alert=="function"?(o.alert(t),Promise.resolve()):(x("dialog"),Promise.resolve())}function _e(e){const t=L(e),n=O("confirm");if(n)return Promise.resolve(n(t)).then(r=>!!r);const o=Re();return u.options.fallbackToNative&&typeof o?.confirm=="function"?Promise.resolve(o.confirm(t)):(x("confirm"),Promise.resolve(!1))}function Be(e,t){const n=L(e),o=O("toast");return o?X(o(n,t)):(x("toast"),Promise.resolve())}function q(e,t){const n=O(e);return n?X(n(t)):(x(e),Promise.resolve())}function It(e){u=e}class Pe{static dialog(t){const n=L(t);return k(u.options.bootstrap)?nt(n,u.options).catch(()=>De(n)):De(n)}static confirm(t){const n=L(t);return k(u.options.bootstrap)?ot(n,u.options).catch(()=>_e(n)):_e(n)}static toast(t,n){const o=L(t);return je(u.options.bootstrap)?Mt(o,n,u.options).catch(()=>Be(o,n)):Be(o,n)}static openDialog(t){return k(u.options.bootstrap)?pt(t,u.options).catch(()=>q("openDialog",t)):q("openDialog",t)}static closeDialog(t){return k(u.options.bootstrap)?gt(t,u.options).catch(()=>q("closeDialog",t)):q("closeDialog",t)}static addErrorMessage(t,n){return ut(t,n)}static addMessage(t,n,o){return ft(t,n,o)}static clearMessages(t){return ge(t)}}const Nt="haori-bootstrap:collapse:",$="data-haori-persist";let F=!1,U,Q;function Oe(e){return Nt+e}function kt(e){try{const t=window.sessionStorage.getItem(Oe(e));return t==="shown"||t==="hidden"?t:void 0}catch{return}}function Ht(e,t){try{window.sessionStorage.setItem(Oe(e),t)}catch{}}function xe(e,t){const n=e.id,o=[`[data-bs-toggle="collapse"][data-bs-target="#${n}"]`];if(n&&o.push(`[data-bs-toggle="collapse"][href="#${n}"]`),!n)return;e.ownerDocument.querySelectorAll(o.join(",")).forEach(s=>{s.setAttribute("aria-expanded",t?"true":"false"),s.classList.toggle("collapsed",!t)})}function qe(e){const t=e.getAttribute($);if(!t)return;const n=kt(t);if(!n)return;const o=e.classList.contains("show");n==="shown"&&!o?(e.classList.add("show"),xe(e,!0)):n==="hidden"&&o&&(e.classList.remove("show"),xe(e,!1))}function $e(e){e instanceof HTMLElement&&e.hasAttribute($)&&qe(e),e.querySelectorAll(`[${$}]`).forEach(qe)}function Fe(e,t){const n=e.target;if(!(n instanceof HTMLElement))return;const o=n.getAttribute($);o&&Ht(o,t)}const Ue=e=>Fe(e,"shown"),We=e=>Fe(e,"hidden");function Rt(e=document){if(F)return;F=!0,Q=e,e.addEventListener("shown.bs.collapse",Ue),e.addEventListener("hidden.bs.collapse",We);const t=()=>{$e(e),U=new MutationObserver(n=>{for(const o of n)o.addedNodes.forEach(r=>{r instanceof HTMLElement&&$e(r)})}),e.body&&U.observe(e.body,{childList:!0,subtree:!0})};e.body?t():e.addEventListener("DOMContentLoaded",t,{once:!0})}function Dt(e=Q??document){F&&(F=!1,e.removeEventListener("shown.bs.collapse",Ue),e.removeEventListener("hidden.bs.collapse",We),U?.disconnect(),U=void 0,Q=void 0)}const _t=[{attribute:"dialog-ok-label",apply:(e,t)=>{e.dialogOkLabel=t}},{attribute:"dialog-cancel-label",apply:(e,t)=>{e.dialogCancelLabel=t}}],Bt=typeof document<"u"&&document.currentScript instanceof HTMLScriptElement?document.currentScript:null;function Y(e,t){const n=e?.getAttribute(t)??null;if(!(n===null||n.trim()===""))return n}function Pt(e=typeof document>"u"?null:document,t=Bt){const n={};for(const{attribute:o,apply:r}of _t){const s=Y(t,`data-${o}`)??Y(e?.documentElement??null,`data-haori-${o}`)??Y(e?.body??null,`data-haori-${o}`);s!==void 0&&r(n,s)}return n}const Z={fallbackToNative:!0},ze=new Set(["dialog","confirm","toast","openDialog","closeDialog","addErrorMessage","addMessage","clearMessages"]);function Ot(e){const t=Pe;return new Proxy(e,{get(n,o,r){return typeof o=="string"&&ze.has(o)?t[o]:Reflect.get(n,o,r)},has(n,o){return typeof o=="string"&&ze.has(o)?!0:Reflect.has(n,o)}})}const i={installed:!1,options:Z};function ee(){return globalThis.window}function xt(e,t){const n=Pt();return{bootstrap:e.bootstrap??t?.bootstrap,fallbackToNative:e.fallbackToNative??Z.fallbackToNative,runtime:e.runtime??i.options.runtime??t?.Haori?.runtime,toastContainerSelector:e.toastContainerSelector??i.options.toastContainerSelector,dialogContainerSelector:e.dialogContainerSelector??i.options.dialogContainerSelector,dialogTitle:e.dialogTitle??i.options.dialogTitle,dialogOkLabel:e.dialogOkLabel??i.options.dialogOkLabel??n.dialogOkLabel,dialogCancelLabel:e.dialogCancelLabel??i.options.dialogCancelLabel??n.dialogCancelLabel,toastPosition:e.toastPosition??i.options.toastPosition,toastDelay:e.toastDelay??i.options.toastDelay}}function Ge(e=ee()){return!!(e?.Haori&&e.bootstrap)}function Ke(e={}){const t=ee();if(!t?.Haori)throw new Error("window.Haori is required before calling install().");if(i.originalHaori||(i.originalHaori=t.Haori,i.originalRuntime=t.Haori.runtime),i.options=xt(e,t),i.options.runtime){const n=i.originalHaori??t.Haori;typeof n.setRuntime=="function"?n.setRuntime(i.options.runtime):console.warn("[haori-bootstrap] Haori.setRuntime が利用できません。runtime 設定は無視されます。")}It({originalHaori:i.originalHaori,options:i.options}),t.Haori=Ot(i.originalHaori),Rt(),Et(),i.installed=!0}function qt(){const e=ee();if(!e||!i.originalHaori)return;const t=i.originalHaori;typeof t.setRuntime=="function"?t.setRuntime(i.originalRuntime):t.runtime=i.originalRuntime,e.Haori=i.originalHaori,Dt(),vt(),i.installed=!1,i.originalHaori=void 0,i.originalRuntime=void 0,i.options=Z}function $t(){return i.installed}const Ve="__haoriJsBootstrapAutoEnabled__";function Ft(){return globalThis.window}function Ut(e){return!!e[Ve]}function Wt(e){e[Ve]=!0}function zt(){const e=Ft();if(!(!e||Ut(e))){if(!Ge(e)){console.warn("[haori-bootstrap] Auto-enable skipped because window.Haori or window.bootstrap is missing.");return}try{Ke({bootstrap:e.bootstrap}),Wt(e)}catch(t){console.warn("[haori-bootstrap] Auto-enable failed.",t)}}}zt();const Gt="0.5.61";return E.BootstrapHaori=Pe,E.hasAutoEnablePrerequisites=Ge,E.install=Ke,E.isInstalled=$t,E.uninstall=qt,E.version=Gt,Object.defineProperty(E,Symbol.toStringTag,{value:"Module"}),E})({});
|
|
3
3
|
//# sourceMappingURL=haori-bootstrap.iife.js.map
|