@rtstic.dev/pulse 0.0.30 → 0.0.32
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/dist/home/tabs-v2.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{document.addEventListener("DOMContentLoaded",()=>{let b=window.matchMedia("(min-width: 992px)"),u=null;function h(){let a=[{identifier:"1",autoplayDuration:"
|
|
1
|
+
"use strict";(()=>{document.addEventListener("DOMContentLoaded",()=>{let b=window.matchMedia("(min-width: 992px)"),u=null;function h(){let a=[{identifier:"1",autoplayDuration:"22000ms"},{identifier:"2",autoplayDuration:"12000ms"},{identifier:"3",autoplayDuration:"18000ms"}];function m(t){return t.endsWith("ms")?parseInt(t.replace("ms",""),10):t.endsWith("s")?parseFloat(t.replace("s",""))*1e3:0}function c(t){document.querySelectorAll("[pulse-tab-content]").forEach(n=>{let i=n.getAttribute("pulse-tab-content");n.setAttribute("active-tabcontent",i===t?"true":"false")}),document.querySelectorAll("[pulse-tab-link]").forEach(n=>{let i=n.getAttribute("pulse-tab-link");n.setAttribute("active-tablink",i===t?"true":"false")}),v(t)}function v(t){document.querySelectorAll("[pulse-tab-content]").forEach(o=>{let n=o.getAttribute("pulse-tab-content"),i=o.querySelector("video");i&&(n===t?(i.loop=!0,i.play().catch(()=>{})):(i.pause(),i.currentTime=0,i.loop=!1))})}function T(t){let e=a.find(o=>o.identifier===t);return e?m(e.autoplayDuration):0}function L(t){return a.findIndex(e=>e.identifier===t)}let l=null,s=0;function f(){let t=a[s],e=m(t.autoplayDuration);c(t.identifier),g(t.identifier,e),s=(s+1)%a.length,l=window.setTimeout(f,e)}function y(){d(),s=0,f()}function d(){l!==null&&(clearTimeout(l),l=null)}function g(t,e){document.querySelectorAll("[pulse-tab-link]").forEach(n=>{let i=n.getAttribute("pulse-tab-link"),r=n.querySelector("[tablink-path]");r&&(r.style.transition="none",r.style.width="0%",i===t&&(r.getBoundingClientRect(),r.style.transition=`width ${e}ms linear`,r.style.width="100%"))})}return document.querySelectorAll("[pulse-tab-link]").forEach(t=>{t.addEventListener("click",()=>{let e=t.getAttribute("pulse-tab-link");if(!e)return;d(),c(e);let o=T(e);g(e,o);let n=L(e);n!==-1&&(s=(n+1)%a.length),l=window.setTimeout(f,o)})}),c(a[0].identifier),y(),window.activateTab=c,window.startTabAutoplay=y,window.stopTabAutoplay=d,d}function p(a){a.matches?u||(u=h()):u&&(u(),u=null)}p(b),b.addEventListener("change",p)});})();
|
package/dist/home/tabs-v2.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/home/tabs-v2.ts"],
|
|
4
|
-
"sourcesContent": ["type TabConfig = {\n identifier: string;\n autoplayDuration: string
|
|
5
|
-
"mappings": ";;;AAKA,WAAS,iBAAiB,oBAAoB,MAAM;AAChD,UAAM,aAA0B;AAAA,
|
|
4
|
+
"sourcesContent": ["type TabConfig = {\n identifier: string;\n autoplayDuration: string;\n};\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const mediaQuery = window.matchMedia(\"(min-width: 992px)\");\n let cleanup: (() => void) | null = null;\n\n function initPulseTabs(): () => void {\n const tabConfigs: TabConfig[] = [\n { identifier: \"1\", autoplayDuration: \"11000ms\" },\n { identifier: \"2\", autoplayDuration: \"5000ms\" },\n { identifier: \"3\", autoplayDuration: \"8000ms\" }\n ];\n\n function parseDuration(duration: string): number {\n if (duration.endsWith(\"ms\")) {\n return parseInt(duration.replace(\"ms\", \"\"), 10);\n }\n if (duration.endsWith(\"s\")) {\n return parseFloat(duration.replace(\"s\", \"\")) * 1000;\n }\n return 0;\n }\n\n function activateTab(identifier: string): void {\n const tabContents = document.querySelectorAll<HTMLElement>(\"[pulse-tab-content]\");\n tabContents.forEach(el => {\n const value = el.getAttribute(\"pulse-tab-content\");\n el.setAttribute(\"active-tabcontent\", value === identifier ? \"true\" : \"false\");\n });\n\n const tabLinks = document.querySelectorAll<HTMLElement>(\"[pulse-tab-link]\");\n tabLinks.forEach(el => {\n const value = el.getAttribute(\"pulse-tab-link\");\n el.setAttribute(\"active-tablink\", value === identifier ? \"true\" : \"false\");\n });\n\n handleTabVideos(identifier);\n }\n\n function handleTabVideos(activeIdentifier: string): void {\n const tabContents = document.querySelectorAll<HTMLElement>(\"[pulse-tab-content]\");\n\n tabContents.forEach(tab => {\n const identifier = tab.getAttribute(\"pulse-tab-content\");\n const video = tab.querySelector<HTMLVideoElement>(\"video\");\n\n if (!video) return;\n\n if (identifier === activeIdentifier) {\n video.loop = true;\n video.play().catch(() => { });\n } else {\n video.pause();\n video.currentTime = 0;\n video.loop = false;\n }\n });\n }\n\n function getDurationForIdentifier(identifier: string): number {\n const config = tabConfigs.find(tab => tab.identifier === identifier);\n return config ? parseDuration(config.autoplayDuration) : 0;\n }\n\n function getIndexForIdentifier(identifier: string): number {\n return tabConfigs.findIndex(tab => tab.identifier === identifier);\n }\n\n let autoplayTimeout: number | null = null;\n let currentIndex = 0;\n\n function autoplayNext(): void {\n const config = tabConfigs[currentIndex];\n const delay = parseDuration(config.autoplayDuration);\n\n activateTab(config.identifier);\n handleTabLinkPathAnimation(config.identifier, delay);\n\n currentIndex = (currentIndex + 1) % tabConfigs.length;\n autoplayTimeout = window.setTimeout(autoplayNext, delay);\n }\n\n function startAutoplay(): void {\n stopAutoplay();\n currentIndex = 0;\n autoplayNext();\n }\n\n function stopAutoplay(): void {\n if (autoplayTimeout !== null) {\n clearTimeout(autoplayTimeout);\n autoplayTimeout = null;\n }\n }\n\n function handleTabLinkPathAnimation(\n activeIdentifier: string,\n durationMs: number\n ): void {\n const tabLinks = document.querySelectorAll<HTMLElement>(\"[pulse-tab-link]\");\n\n tabLinks.forEach(link => {\n const identifier = link.getAttribute(\"pulse-tab-link\");\n const path = link.querySelector<HTMLElement>(\"[tablink-path]\");\n\n if (!path) return;\n\n path.style.transition = \"none\";\n path.style.width = \"0%\";\n\n if (identifier === activeIdentifier) {\n path.getBoundingClientRect();\n path.style.transition = `width ${durationMs}ms linear`;\n path.style.width = \"100%\";\n }\n });\n }\n\n const tabLinks = document.querySelectorAll<HTMLElement>(\"[pulse-tab-link]\");\n tabLinks.forEach(link => {\n link.addEventListener(\"click\", () => {\n const identifier = link.getAttribute(\"pulse-tab-link\");\n if (!identifier) return;\n\n stopAutoplay();\n activateTab(identifier);\n\n const duration = getDurationForIdentifier(identifier);\n handleTabLinkPathAnimation(identifier, duration);\n\n const index = getIndexForIdentifier(identifier);\n if (index !== -1) {\n currentIndex = (index + 1) % tabConfigs.length;\n }\n\n autoplayTimeout = window.setTimeout(autoplayNext, duration);\n });\n });\n\n activateTab(tabConfigs[0].identifier);\n startAutoplay();\n\n (window as any).activateTab = activateTab;\n (window as any).startTabAutoplay = startAutoplay;\n (window as any).stopTabAutoplay = stopAutoplay;\n\n return stopAutoplay;\n }\n\n function handleBreakpoint(e: MediaQueryList | MediaQueryListEvent): void {\n if (e.matches) {\n if (!cleanup) {\n cleanup = initPulseTabs();\n }\n } else {\n if (cleanup) {\n cleanup();\n cleanup = null;\n }\n }\n }\n\n handleBreakpoint(mediaQuery);\n mediaQuery.addEventListener(\"change\", handleBreakpoint);\n});"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["tabLinks"]
|
|
7
7
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(()=>{var t={multiplier:4,duration:100,selector:"[rtstic-marquee='list']"};function u(e=t){try{(!e.multiplier||e.multiplier<2)&&(console.warn("[rtstic-marquee] Warning: multiplier should be at least 2, using default of 4"),e.multiplier=t.multiplier),(!e.duration||e.duration<=0)&&(console.warn("[rtstic-marquee] Warning: duration should be greater than 0, using default of 20"),e.duration=t.duration);let r=document.querySelector(e.selector);if(!r)return console.error(`[rtstic-marquee] Error: Element with selector "${e.selector}" not found`),!1;let i=r.innerHTML;if(!i.trim())return console.warn("[rtstic-marquee] Warning: Marquee element is empty"),!1;let n="";for(let l=0;l<e.multiplier;l++)n+=i;return r.innerHTML=n,r.style.setProperty("--multiplier",e.multiplier.toString()),r.style.setProperty("--duration",`${e.duration/e.multiplier}s`),console.log(`[rtstic-marquee] Successfully initialized with multiplier: ${e.multiplier}, duration: ${e.duration}s`),!0}catch(r){return r instanceof Error?console.error(`[rtstic-marquee] Error: ${r.message}`):console.error("[rtstic-marquee] Error: An unknown error occurred"),!1}}function o(){document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{u()}):u()}o();})();
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/marquee/index.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * rtstic-marquee TypeScript Implementation\n * Initializes infinite marquee with error checking and warnings\n */\n\ninterface MarqueeConfig {\n multiplier: number;\n duration: number;\n selector: string;\n}\n\nconst DEFAULT_CONFIG: MarqueeConfig = {\n multiplier: 4,\n duration: 100,\n selector: \"[rtstic-marquee='list']\"\n};\n\n/**\n * Initialize the marquee component\n * @param config - Configuration object for marquee\n * @returns boolean - Success status\n */\nfunction initializeMarquee(config: MarqueeConfig = DEFAULT_CONFIG): boolean {\n try {\n // Validate config\n if (!config.multiplier || config.multiplier < 2) {\n console.warn('[rtstic-marquee] Warning: multiplier should be at least 2, using default of 4');\n config.multiplier = DEFAULT_CONFIG.multiplier;\n }\n\n if (!config.duration || config.duration <= 0) {\n console.warn('[rtstic-marquee] Warning: duration should be greater than 0, using default of 20');\n config.duration = DEFAULT_CONFIG.duration;\n }\n\n // Find marquee element\n const marquee: HTMLElement | null = document.querySelector(config.selector);\n\n if (!marquee) {\n console.error(`[rtstic-marquee] Error: Element with selector \"${config.selector}\" not found`);\n return false;\n }\n\n // Check if marquee has content\n const originalHTML: string = marquee.innerHTML;\n if (!originalHTML.trim()) {\n console.warn('[rtstic-marquee] Warning: Marquee element is empty');\n return false;\n }\n\n // Create duplicated content\n let duplicatedHTML: string = '';\n for (let i = 0; i < config.multiplier; i++) {\n duplicatedHTML += originalHTML;\n }\n\n marquee.innerHTML = duplicatedHTML;\n\n // Set CSS variables\n marquee.style.setProperty('--multiplier', config.multiplier.toString());\n marquee.style.setProperty('--duration', `${config.duration / config.multiplier}s`);\n\n console.log(`[rtstic-marquee] Successfully initialized with multiplier: ${config.multiplier}, duration: ${config.duration}s`);\n return true;\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error(`[rtstic-marquee] Error: ${error.message}`);\n } else {\n console.error('[rtstic-marquee] Error: An unknown error occurred');\n }\n return false;\n }\n}\n\n/**\n * Initialize on DOM load\n */\nfunction onDOMReady(): void {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', () => {\n initializeMarquee();\n });\n } else {\n // DOM is already ready\n initializeMarquee();\n }\n}\n\n// Start initialization\nonDOMReady();\n\n// Export for use in other modules if needed\nexport { initializeMarquee, DEFAULT_CONFIG };\nexport type { MarqueeConfig };"],
|
|
5
|
+
"mappings": ";;;AAWA,MAAM,iBAAgC;AAAA,IAClC,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,UAAU;AAAA,EACd;AAOA,WAAS,kBAAkB,SAAwB,gBAAyB;AACxE,QAAI;AAEA,UAAI,CAAC,OAAO,cAAc,OAAO,aAAa,GAAG;AAC7C,gBAAQ,KAAK,+EAA+E;AAC5F,eAAO,aAAa,eAAe;AAAA,MACvC;AAEA,UAAI,CAAC,OAAO,YAAY,OAAO,YAAY,GAAG;AAC1C,gBAAQ,KAAK,kFAAkF;AAC/F,eAAO,WAAW,eAAe;AAAA,MACrC;AAGA,YAAM,UAA8B,SAAS,cAAc,OAAO,QAAQ;AAE1E,UAAI,CAAC,SAAS;AACV,gBAAQ,MAAM,kDAAkD,OAAO,QAAQ,aAAa;AAC5F,eAAO;AAAA,MACX;AAGA,YAAM,eAAuB,QAAQ;AACrC,UAAI,CAAC,aAAa,KAAK,GAAG;AACtB,gBAAQ,KAAK,oDAAoD;AACjE,eAAO;AAAA,MACX;AAGA,UAAI,iBAAyB;AAC7B,eAAS,IAAI,GAAG,IAAI,OAAO,YAAY,KAAK;AACxC,0BAAkB;AAAA,MACtB;AAEA,cAAQ,YAAY;AAGpB,cAAQ,MAAM,YAAY,gBAAgB,OAAO,WAAW,SAAS,CAAC;AACtE,cAAQ,MAAM,YAAY,cAAc,GAAG,OAAO,WAAW,OAAO,UAAU,GAAG;AAEjF,cAAQ,IAAI,8DAA8D,OAAO,UAAU,eAAe,OAAO,QAAQ,GAAG;AAC5H,aAAO;AAAA,IACX,SAAS,OAAgB;AACrB,UAAI,iBAAiB,OAAO;AACxB,gBAAQ,MAAM,2BAA2B,MAAM,OAAO,EAAE;AAAA,MAC5D,OAAO;AACH,gBAAQ,MAAM,mDAAmD;AAAA,MACrE;AACA,aAAO;AAAA,IACX;AAAA,EACJ;AAKA,WAAS,aAAmB;AACxB,QAAI,SAAS,eAAe,WAAW;AACnC,eAAS,iBAAiB,oBAAoB,MAAM;AAChD,0BAAkB;AAAA,MACtB,CAAC;AAAA,IACL,OAAO;AAEH,wBAAkB;AAAA,IACtB;AAAA,EACJ;AAGA,aAAW;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[rtstic-marquee=wrapper]{overflow:hidden}[rtstic-marquee=list]{display:flex;width:max-content;animation:scroll var(--duration) linear infinite;will-change:transform}[rtstic-marquee=item]{white-space:nowrap;flex-shrink:0}@keyframes scroll{0%{transform:translate(0)}to{transform:translate(calc(-100% / var(--multiplier)))}}[rtstic-marquee=wrapper]:hover [rtstic-marquee=list]{animation-play-state:paused}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/marquee/styles.css"],
|
|
4
|
+
"sourcesContent": [" [rtstic-marquee='wrapper'] {\n overflow: hidden;\n }\n\n [rtstic-marquee='list'] {\n display: flex;\n width: max-content;\n animation: scroll var(--duration) linear infinite;\n will-change: transform;\n }\n\n [rtstic-marquee='item'] {\n white-space: nowrap;\n flex-shrink: 0;\n }\n\n @keyframes scroll {\n 0% {\n transform: translateX(0);\n }\n\n 100% {\n transform: translateX(calc(-100% / var(--multiplier)));\n }\n }\n\n /* Pause on hover (optional) */\n [rtstic-marquee='wrapper']:hover [rtstic-marquee='list'] {\n animation-play-state: paused;\n }"],
|
|
5
|
+
"mappings": ";AAAC,CAAC;AACG,YAAU;AACd;AAEA,CAAC;AACG,WAAS;AACT,SAAO;AACP,aAAW,OAAO,IAAI,YAAY,OAAO;AACzC,eAAa;AACjB;AAEA,CAAC;AACG,eAAa;AACb,eAAa;AACjB;AAEA,WATe;AAUX;AACI,eAAW,WAAW;AAC1B;AAEA;AACI,eAAW,WAAW,KAAK,MAAM,EAAE,IAAI;AAC3C;AACJ;AAGA,CAAC,uBAAyB,OAAO,CAAC;AAC9B,wBAAsB;AAC1B;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|