@rtstic.dev/pulse 0.0.15 → 0.0.19

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.
@@ -0,0 +1 @@
1
+ "use strict";(()=>{var s="influur-tablink",b="influur-tabcontent",m="influur-tablink-active",h="influur-tablink-fill";function _(n){return!!n&&n.nodeType===Node.ELEMENT_NODE}function a(n,t){let l=n.getAttribute(t);if(l===null)return null;let o=l.trim();return o.length>0?o:null}function g(n,t=document){return Array.from(t.querySelectorAll(n)).filter(_)}function T(n){for(let t of n)t.style.display="none"}function F(n){for(let t of n)t.setAttribute(m,"false")}function I(n){n.style.display="block"}function O(n,t){for(let l of t){let o=a(l,b);if(o!==null&&o===n)return l}return null}function V(n,t){for(let l of t){let o=a(l,s);if(o!==null&&o===n)return l}return null}function y(n){return n.querySelector(`[${h}]`)??null}function $(n){for(let t of n){let l=y(t);l&&(l.style.width="0%")}}document.addEventListener("DOMContentLoaded",()=>{let n=g(`[${s}]`),t=g(`[${b}]`);if(t.length===0){console.warn("No tab contents found.");return}if(n.length===0){console.warn("No tab links found. Hiding all tab contents."),T(t);return}let l=0,o=null,u=null;function M(){u!==null&&(cancelAnimationFrame(u),u=null)}function H(e){M(),$(n);let r=y(e);if(!r){console.warn(`Active tablink is missing ${h} child`,e);return}let i=Math.max(0,4e3),f=performance.now(),E=k=>{let N=k-f,L=i===0?1:Math.min(1,N/i);r.style.width=`${(L*100).toFixed(4)}%`,e.getAttribute(m)==="true"&&L<1?u=requestAnimationFrame(E):u=null};r.style.width="0%",u=requestAnimationFrame(E)}let c=e=>{if(typeof e!="string"||e.trim().length===0){console.warn("changeTab called with invalid attributeValue:",e);return}T(t),F(n);let r=O(e,t),i=V(e,n);if(!r||!i){console.warn(`No matching pair found for value "${e}"`);return}I(r),i.setAttribute(m,"true");let f=n.indexOf(i);f>=0&&(l=f),H(i)};window.changeTab=c;for(let e of n)e.addEventListener("click",r=>{r.target?.closest("a")&&r.preventDefault();let i=a(e,s);if(i===null){console.warn(`Tablink missing valid ${s} value`,e);return}c(i),p()});let d=a(n[0],s);if(d===null){console.warn(`First tablink missing ${s} value. Hiding all tab contents.`),T(t);return}c(d);function v(){if(n.length===0)return;l=(l+1)%n.length;let e=a(n[l],s);e&&c(e)}function A(){w(),o=window.setInterval(v,4e3)}function w(){o!==null&&(clearInterval(o),o=null)}function p(){A()}A()});})();
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/home/tabs.ts"],
4
+ "sourcesContent": ["type TabValue = string;\n\nconst TABLINK_ATTR = \"influur-tablink\";\nconst TABCONTENT_ATTR = \"influur-tabcontent\";\nconst ACTIVE_ATTR = \"influur-tablink-active\";\nconst FILL_ATTR = \"influur-tablink-fill\";\n\n// autoplay interval in milliseconds\nconst TAB_AUTOPLAY_INTERVAL = 4000;\n\nfunction isHTMLElement(node: Element | null): node is HTMLElement {\n return !!node && node.nodeType === Node.ELEMENT_NODE;\n}\n\nfunction getAttr(el: Element, attr: string): string | null {\n const val = el.getAttribute(attr);\n if (val === null) return null;\n const trimmed = val.trim();\n return trimmed.length > 0 ? trimmed : null;\n}\n\nfunction queryAllHTMLElements(selector: string, root: ParentNode = document): HTMLElement[] {\n return Array.from(root.querySelectorAll(selector)).filter(isHTMLElement);\n}\n\nfunction hideAllContents(contents: HTMLElement[]) {\n for (const c of contents) {\n c.style.display = \"none\";\n }\n}\n\nfunction deactivateAllLinks(tablinks: HTMLElement[]) {\n for (const l of tablinks) {\n l.setAttribute(ACTIVE_ATTR, \"false\");\n }\n}\n\nfunction showContent(el: HTMLElement) {\n el.style.display = \"block\";\n}\n\nfunction findContentByValue(value: TabValue, contents: HTMLElement[]): HTMLElement | null {\n for (const c of contents) {\n const v = getAttr(c, TABCONTENT_ATTR);\n if (v !== null && v === value) return c;\n }\n return null;\n}\n\nfunction findLinkByValue(value: TabValue, tablinks: HTMLElement[]): HTMLElement | null {\n for (const l of tablinks) {\n const v = getAttr(l, TABLINK_ATTR);\n if (v !== null && v === value) return l;\n }\n return null;\n}\n\nfunction getFillEl(link: HTMLElement): HTMLElement | null {\n const el = link.querySelector<HTMLElement>(`[${FILL_ATTR}]`);\n return el ?? null;\n}\n\nfunction resetAllFills(tablinks: HTMLElement[]) {\n for (const l of tablinks) {\n const fill = getFillEl(l);\n if (fill) fill.style.width = \"0%\";\n }\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const tablinks = queryAllHTMLElements(`[${TABLINK_ATTR}]`);\n const contents = queryAllHTMLElements(`[${TABCONTENT_ATTR}]`);\n\n if (contents.length === 0) {\n console.warn(\"No tab contents found.\");\n return;\n }\n if (tablinks.length === 0) {\n console.warn(\"No tab links found. Hiding all tab contents.\");\n hideAllContents(contents);\n return;\n }\n\n let currentIndex = 0;\n let autoplayTimer: number | null = null;\n let rafId: number | null = null;\n\n function cancelFillAnimation() {\n if (rafId !== null) {\n cancelAnimationFrame(rafId);\n rafId = null;\n }\n }\n\n // Animate the fill element inside the active link from 0 to 100 percent over TAB_AUTOPLAY_INTERVAL\n function startFillAnimation(activeLink: HTMLElement) {\n cancelFillAnimation();\n resetAllFills(tablinks);\n\n const fill = getFillEl(activeLink);\n if (!fill) {\n console.warn(`Active tablink is missing ${FILL_ATTR} child`, activeLink);\n return;\n }\n\n const duration = Math.max(0, TAB_AUTOPLAY_INTERVAL);\n const start = performance.now();\n\n const tick = (now: number) => {\n const elapsed = now - start;\n const progress = duration === 0 ? 1 : Math.min(1, elapsed / duration);\n fill.style.width = `${(progress * 100).toFixed(4)}%`;\n\n if (activeLink.getAttribute(ACTIVE_ATTR) === \"true\" && progress < 1) {\n rafId = requestAnimationFrame(tick);\n } else {\n rafId = null;\n }\n };\n\n fill.style.width = \"0%\";\n rafId = requestAnimationFrame(tick);\n }\n\n const changeTab = (attributeValue: TabValue): void => {\n if (typeof attributeValue !== \"string\" || attributeValue.trim().length === 0) {\n console.warn(\"changeTab called with invalid attributeValue:\", attributeValue);\n return;\n }\n\n hideAllContents(contents);\n deactivateAllLinks(tablinks);\n\n const matchContent = findContentByValue(attributeValue, contents);\n const matchLink = findLinkByValue(attributeValue, tablinks);\n\n if (!matchContent || !matchLink) {\n console.warn(`No matching pair found for value \"${attributeValue}\"`);\n return;\n }\n\n showContent(matchContent);\n matchLink.setAttribute(ACTIVE_ATTR, \"true\");\n\n const index = tablinks.indexOf(matchLink);\n if (index >= 0) currentIndex = index;\n\n startFillAnimation(matchLink);\n };\n\n (window as unknown as { changeTab: (v: TabValue) => void }).changeTab = changeTab;\n\n for (const link of tablinks) {\n link.addEventListener(\"click\", (ev) => {\n if ((ev.target as HTMLElement)?.closest(\"a\")) ev.preventDefault();\n const val = getAttr(link, TABLINK_ATTR);\n if (val === null) {\n console.warn(`Tablink missing valid ${TABLINK_ATTR} value`, link);\n return;\n }\n changeTab(val);\n restartAutoplay();\n });\n }\n\n const firstVal = getAttr(tablinks[0], TABLINK_ATTR);\n if (firstVal === null) {\n console.warn(`First tablink missing ${TABLINK_ATTR} value. Hiding all tab contents.`);\n hideAllContents(contents);\n return;\n }\n\n changeTab(firstVal); // ensures initial fill animation starts\n\n function autoplayStep() {\n if (tablinks.length === 0) return;\n currentIndex = (currentIndex + 1) % tablinks.length;\n const val = getAttr(tablinks[currentIndex], TABLINK_ATTR);\n if (val) changeTab(val);\n }\n\n function startAutoplay() {\n stopAutoplayTimerOnly();\n autoplayTimer = window.setInterval(autoplayStep, TAB_AUTOPLAY_INTERVAL);\n }\n\n function stopAutoplayTimerOnly() {\n if (autoplayTimer !== null) {\n clearInterval(autoplayTimer);\n autoplayTimer = null;\n }\n }\n\n function restartAutoplay() {\n // do not cancel fill animation here\n startAutoplay();\n }\n\n startAutoplay();\n});\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ "use strict";(()=>{document.addEventListener("DOMContentLoaded",()=>{if(typeof window>"u"||typeof window.Swiper>"u")return;let e=document.querySelector("[pulse-slider='freescroll']");if(!e)return;let i=window.innerWidth>=992,n=new window.Swiper(e,{slidesPerView:3,spaceBetween:0,loop:!1,freemode:i,mousewheel:i?{forceToAxis:!0,sensitivity:1}:!1,breakpoints:{992:{slidesPerView:3},768:{slidesPerView:2.1},640:{slidesPerView:1.8},0:{slidesPerView:1.2}}})});})();
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/slider/freescroll-slider.ts"],
4
+ "sourcesContent": ["document.addEventListener('DOMContentLoaded', () => {\n if (typeof window === 'undefined' || typeof (window as any).Swiper === 'undefined') {\n return;\n }\n\n const sliderEl = document.querySelector(\"[pulse-slider='freescroll']\");\n if (!sliderEl) {\n return;\n }\n\n const enableFreeMode = window.innerWidth >= 992;\n\n const incentiveSwiper = new (window as any).Swiper(sliderEl, {\n slidesPerView: 3,\n spaceBetween: 0,\n loop: false,\n freemode: enableFreeMode,\n mousewheel: enableFreeMode\n ? {\n forceToAxis: true,\n sensitivity: 1,\n }\n : false,\n breakpoints: {\n 992: { slidesPerView: 3 },\n 768: { slidesPerView: 2.1 },\n 640: { slidesPerView: 1.8 },\n 0: { slidesPerView: 1.2 },\n },\n });\n});\n"],
5
+ "mappings": ";;;AAAA,WAAS,iBAAiB,oBAAoB,MAAM;AAChD,QAAI,OAAO,WAAW,eAAe,OAAQ,OAAe,WAAW,aAAa;AAChF;AAAA,IACJ;AAEA,UAAM,WAAW,SAAS,cAAc,6BAA6B;AACrE,QAAI,CAAC,UAAU;AACX;AAAA,IACJ;AAEA,UAAM,iBAAiB,OAAO,cAAc;AAE5C,UAAM,kBAAkB,IAAK,OAAe,OAAO,UAAU;AAAA,MACzD,eAAe;AAAA,MACf,cAAc;AAAA,MACd,MAAM;AAAA,MACN,UAAU;AAAA,MACV,YAAY,iBACN;AAAA,QACI,aAAa;AAAA,QACb,aAAa;AAAA,MACjB,IACA;AAAA,MACN,aAAa;AAAA,QACT,KAAK,EAAE,eAAe,EAAE;AAAA,QACxB,KAAK,EAAE,eAAe,IAAI;AAAA,QAC1B,KAAK,EAAE,eAAe,IAAI;AAAA,QAC1B,GAAG,EAAE,eAAe,IAAI;AAAA,MAC5B;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ "use strict";(()=>{document.addEventListener("DOMContentLoaded",()=>{let e=document.querySelector("[pulse-slider='testimonial-text']");if(!e)return;let n=e.querySelector("[pulse-slider='arrow-next']"),t=e.querySelector("[pulse-slider='arrow-prev']");new window.Swiper(e,{loop:!0,freemode:!0,centeredSlides:!0,initialSlide:1,slidesPerView:1,spaceBetween:16,breakpoints:{768:{slidesPerView:1.5,spaceBetween:20}},navigation:{nextEl:n,prevEl:t}})});})();
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/slider/testimonial.ts"],
4
+ "sourcesContent": ["export {};\n\ndeclare global {\n interface Window {\n Swiper: SwiperConstructor;\n }\n}\n\ntype SwiperConstructor = new (\n el: Element | string,\n options?: {\n slidesPerView?: number;\n freemode?: boolean;\n spaceBetween?: number;\n loop?: boolean;\n centeredSlides?: boolean;\n initialSlide?: number;\n navigation?: {\n nextEl?: Element | null;\n prevEl?: Element | null;\n };\n }\n) => unknown;\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const testimonialSliderEl =\n document.querySelector<HTMLElement>(\"[pulse-slider='testimonial-text']\");\n if (!testimonialSliderEl) return;\n\n const testimonialSliderNextEl =\n testimonialSliderEl.querySelector<HTMLElement>(\"[pulse-slider='arrow-next']\");\n const testimonialSliderPrevEl =\n testimonialSliderEl.querySelector<HTMLElement>(\"[pulse-slider='arrow-prev']\");\n\n new window.Swiper(testimonialSliderEl, {\n slidesPerView: 1.5,\n spaceBetween: 20,\n loop: true,\n freemode: true,\n centeredSlides: true,\n initialSlide: 1,\n navigation: {\n nextEl: testimonialSliderNextEl,\n prevEl: testimonialSliderPrevEl,\n },\n });\n});\n"],
5
+ "mappings": ";;;AAwBA,WAAS,iBAAiB,oBAAoB,MAAM;AAClD,UAAM,sBACJ,SAAS,cAA2B,mCAAmC;AACzE,QAAI,CAAC,oBAAqB;AAE1B,UAAM,0BACJ,oBAAoB,cAA2B,6BAA6B;AAC9E,UAAM,0BACJ,oBAAoB,cAA2B,6BAA6B;AAE9E,QAAI,OAAO,OAAO,qBAAqB;AAAA,MACrC,eAAe;AAAA,MACf,cAAc;AAAA,MACd,MAAM;AAAA,MACN,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,cAAc;AAAA,MACd,YAAY;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV;AAAA,IACF,CAAC;AAAA,EACH,CAAC;",
6
+ "names": []
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtstic.dev/pulse",
3
- "version": "0.0.15",
3
+ "version": "0.0.19",
4
4
  "description": "pulse website",
5
5
  "license": "license-of-your-project",
6
6
  "keywords": [],