ngx-semantic 2.0.7-beta.1 → 2.0.9

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.
Files changed (101) hide show
  1. package/README.md +18 -18
  2. package/fesm2022/ngx-semantic-collections-breadcrumb.mjs +13 -13
  3. package/fesm2022/ngx-semantic-collections-breadcrumb.mjs.map +1 -1
  4. package/fesm2022/ngx-semantic-collections-form.mjs +18 -17
  5. package/fesm2022/ngx-semantic-collections-form.mjs.map +1 -1
  6. package/fesm2022/ngx-semantic-collections-grid.mjs +13 -13
  7. package/fesm2022/ngx-semantic-collections-grid.mjs.map +1 -1
  8. package/fesm2022/ngx-semantic-collections-menu.mjs +28 -19
  9. package/fesm2022/ngx-semantic-collections-menu.mjs.map +1 -1
  10. package/fesm2022/ngx-semantic-collections-message.mjs +16 -16
  11. package/fesm2022/ngx-semantic-collections-message.mjs.map +1 -1
  12. package/fesm2022/ngx-semantic-collections-table.mjs +16 -16
  13. package/fesm2022/ngx-semantic-collections-table.mjs.map +1 -1
  14. package/fesm2022/ngx-semantic-core-base.mjs +3 -3
  15. package/fesm2022/ngx-semantic-core-base.mjs.map +1 -1
  16. package/fesm2022/ngx-semantic-elements-button.mjs +10 -10
  17. package/fesm2022/ngx-semantic-elements-button.mjs.map +1 -1
  18. package/fesm2022/ngx-semantic-elements-container.mjs +7 -7
  19. package/fesm2022/ngx-semantic-elements-container.mjs.map +1 -1
  20. package/fesm2022/ngx-semantic-elements-divider.mjs +7 -7
  21. package/fesm2022/ngx-semantic-elements-divider.mjs.map +1 -1
  22. package/fesm2022/ngx-semantic-elements-flag.mjs +7 -7
  23. package/fesm2022/ngx-semantic-elements-flag.mjs.map +1 -1
  24. package/fesm2022/ngx-semantic-elements-header.mjs +10 -10
  25. package/fesm2022/ngx-semantic-elements-header.mjs.map +1 -1
  26. package/fesm2022/ngx-semantic-elements-icon.mjs +10 -10
  27. package/fesm2022/ngx-semantic-elements-icon.mjs.map +1 -1
  28. package/fesm2022/ngx-semantic-elements-image.mjs +10 -10
  29. package/fesm2022/ngx-semantic-elements-image.mjs.map +1 -1
  30. package/fesm2022/ngx-semantic-elements-input.mjs +7 -7
  31. package/fesm2022/ngx-semantic-elements-input.mjs.map +1 -1
  32. package/fesm2022/ngx-semantic-elements-label.mjs +10 -10
  33. package/fesm2022/ngx-semantic-elements-label.mjs.map +1 -1
  34. package/fesm2022/ngx-semantic-elements-list.mjs +10 -10
  35. package/fesm2022/ngx-semantic-elements-list.mjs.map +1 -1
  36. package/fesm2022/ngx-semantic-elements-loader.mjs +7 -7
  37. package/fesm2022/ngx-semantic-elements-loader.mjs.map +1 -1
  38. package/fesm2022/ngx-semantic-elements-placeholder.mjs +19 -19
  39. package/fesm2022/ngx-semantic-elements-placeholder.mjs.map +1 -1
  40. package/fesm2022/ngx-semantic-elements-rail.mjs +7 -7
  41. package/fesm2022/ngx-semantic-elements-rail.mjs.map +1 -1
  42. package/fesm2022/ngx-semantic-elements-reveal.mjs +10 -10
  43. package/fesm2022/ngx-semantic-elements-reveal.mjs.map +1 -1
  44. package/fesm2022/ngx-semantic-elements-segment.mjs +13 -13
  45. package/fesm2022/ngx-semantic-elements-segment.mjs.map +1 -1
  46. package/fesm2022/ngx-semantic-elements-steps.mjs +19 -19
  47. package/fesm2022/ngx-semantic-elements-steps.mjs.map +1 -1
  48. package/fesm2022/ngx-semantic-modules-accordion.mjs +10 -10
  49. package/fesm2022/ngx-semantic-modules-accordion.mjs.map +1 -1
  50. package/fesm2022/ngx-semantic-modules-checkbox.mjs +7 -7
  51. package/fesm2022/ngx-semantic-modules-checkbox.mjs.map +1 -1
  52. package/fesm2022/ngx-semantic-modules-dimmer.mjs +26 -17
  53. package/fesm2022/ngx-semantic-modules-dimmer.mjs.map +1 -1
  54. package/fesm2022/ngx-semantic-modules-dropdown.mjs +19 -19
  55. package/fesm2022/ngx-semantic-modules-dropdown.mjs.map +1 -1
  56. package/fesm2022/ngx-semantic-modules-embed.mjs +10 -10
  57. package/fesm2022/ngx-semantic-modules-embed.mjs.map +1 -1
  58. package/fesm2022/ngx-semantic-modules-modal.mjs +16 -16
  59. package/fesm2022/ngx-semantic-modules-modal.mjs.map +1 -1
  60. package/fesm2022/ngx-semantic-modules-popup.mjs +10 -10
  61. package/fesm2022/ngx-semantic-modules-popup.mjs.map +1 -1
  62. package/fesm2022/ngx-semantic-modules-progress.mjs +7 -7
  63. package/fesm2022/ngx-semantic-modules-progress.mjs.map +1 -1
  64. package/fesm2022/ngx-semantic-modules-rating.mjs +7 -7
  65. package/fesm2022/ngx-semantic-modules-rating.mjs.map +1 -1
  66. package/fesm2022/ngx-semantic-modules-search.mjs +7 -7
  67. package/fesm2022/ngx-semantic-modules-search.mjs.map +1 -1
  68. package/fesm2022/ngx-semantic-modules-select.mjs +13 -13
  69. package/fesm2022/ngx-semantic-modules-select.mjs.map +1 -1
  70. package/fesm2022/ngx-semantic-modules-shape.mjs +10 -10
  71. package/fesm2022/ngx-semantic-modules-shape.mjs.map +1 -1
  72. package/fesm2022/ngx-semantic-modules-sidebar.mjs +16 -16
  73. package/fesm2022/ngx-semantic-modules-sidebar.mjs.map +1 -1
  74. package/fesm2022/ngx-semantic-modules-sticky.mjs +7 -7
  75. package/fesm2022/ngx-semantic-modules-sticky.mjs.map +1 -1
  76. package/fesm2022/ngx-semantic-modules-tabs.mjs +10 -10
  77. package/fesm2022/ngx-semantic-modules-tabs.mjs.map +1 -1
  78. package/fesm2022/ngx-semantic-modules-transition.mjs +721 -0
  79. package/fesm2022/ngx-semantic-modules-transition.mjs.map +1 -0
  80. package/fesm2022/ngx-semantic-modules-visibility.mjs +525 -0
  81. package/fesm2022/ngx-semantic-modules-visibility.mjs.map +1 -0
  82. package/fesm2022/ngx-semantic-views-advertisement.mjs +7 -7
  83. package/fesm2022/ngx-semantic-views-advertisement.mjs.map +1 -1
  84. package/fesm2022/ngx-semantic-views-card.mjs +28 -28
  85. package/fesm2022/ngx-semantic-views-card.mjs.map +1 -1
  86. package/fesm2022/ngx-semantic-views-comment.mjs +31 -31
  87. package/fesm2022/ngx-semantic-views-comment.mjs.map +1 -1
  88. package/fesm2022/ngx-semantic-views-feed.mjs +28 -28
  89. package/fesm2022/ngx-semantic-views-feed.mjs.map +1 -1
  90. package/fesm2022/ngx-semantic-views-items.mjs +28 -28
  91. package/fesm2022/ngx-semantic-views-items.mjs.map +1 -1
  92. package/fesm2022/ngx-semantic-views-statistics.mjs +16 -16
  93. package/fesm2022/ngx-semantic-views-statistics.mjs.map +1 -1
  94. package/fesm2022/ngx-semantic.mjs +21 -9
  95. package/fesm2022/ngx-semantic.mjs.map +1 -1
  96. package/modules/transition/package.json +4 -0
  97. package/modules/visibility/package.json +4 -0
  98. package/package.json +9 -1
  99. package/types/ngx-semantic-modules-transition.d.ts +107 -0
  100. package/types/ngx-semantic-modules-visibility.d.ts +124 -0
  101. package/types/ngx-semantic.d.ts +3 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngx-semantic-modules-transition.mjs","sources":["../../src/modules/transition/transition-util.ts","../../src/modules/transition/transition-animations.ts","../../src/modules/transition/transition.component.ts","../../src/modules/transition/transition.module.ts","../../src/modules/transition/ngx-semantic-modules-transition.ts"],"sourcesContent":["/**\n * Helpers for Semantic UI–style transition names and durations.\n * @see https://semantic-ui.com/modules/transition.html\n */\n\nexport type SuiTransitionDirectionMode = 'auto' | 'in' | 'out';\n\nexport interface ParsedTransitionName {\n /** Normalized animation id, without trailing ` in` / ` out`. */\n baseName: string;\n explicitDirection: 'in' | 'out' | null;\n}\n\nexport function durationToCss(d: number | string): string {\n if (typeof d === 'number') {\n return Number.isFinite(d) ? `${d}ms` : '500ms';\n }\n const s = String(d).trim();\n if (!s) {\n return '500ms';\n }\n if (/^\\d+(\\.\\d+)?(ms|s)$/i.test(s)) {\n return s;\n }\n if (/^\\d+(\\.\\d+)?$/.test(s)) {\n return `${s}ms`;\n }\n return s;\n}\n\nexport function parseTransitionName(raw: string): ParsedTransitionName {\n const s = raw.trim().toLowerCase().replace(/\\s+/g, ' ');\n let explicitDirection: 'in' | 'out' | null = null;\n let base = s;\n if (base.endsWith(' in')) {\n explicitDirection = 'in';\n base = base.slice(0, -3).trim();\n } else if (base.endsWith(' out')) {\n explicitDirection = 'out';\n base = base.slice(0, -4).trim();\n }\n return { baseName: base, explicitDirection };\n}\n\n/**\n * Resolves whether the next run should play an inward or outward transition.\n */\nexport function resolveTransitionDirection(\n explicitFromName: 'in' | 'out' | null,\n mode: SuiTransitionDirectionMode,\n targetVisible: boolean\n): 'in' | 'out' {\n if (explicitFromName === 'in' || explicitFromName === 'out') {\n return explicitFromName;\n }\n if (mode === 'in') {\n return 'in';\n }\n if (mode === 'out') {\n return 'out';\n }\n return targetVisible ? 'in' : 'out';\n}\n\nconst STATIC_NAMES = new Set<string>([\n 'jiggle',\n 'flash',\n 'shake',\n 'pulse',\n 'tada',\n 'bounce',\n 'glow'\n]);\n\nexport function isStaticTransitionName(baseName: string): boolean {\n return STATIC_NAMES.has(baseName);\n}\n","/**\n * Angular animation metadata approximating Semantic UI transition behaviors.\n * @see https://semantic-ui.com/modules/transition.html\n */\n\nimport { animate, AnimationMetadata, keyframes, style } from '@angular/animations';\nimport { isStaticTransitionName } from './transition-util';\n\nconst EASE = 'cubic-bezier(0.4, 0, 0.2, 1)';\n\nexport interface TransitionMotion {\n enter: (duration: string) => AnimationMetadata[];\n leave: (duration: string) => AnimationMetadata[];\n}\n\nconst MOTIONS: Record<string, TransitionMotion> = {\n scale: {\n enter: d => [\n style({ opacity: 0, transform: 'scale(0)', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 1, transform: 'scale(1)' }))\n ],\n leave: d => [\n style({ opacity: 1, transform: 'scale(1)', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 0, transform: 'scale(0)' }))\n ]\n },\n zoom: {\n enter: d => [\n style({ opacity: 0, transform: 'scale(0.35)', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 1, transform: 'scale(1)' }))\n ],\n leave: d => [\n style({ opacity: 1, transform: 'scale(1)', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 0, transform: 'scale(0.35)' }))\n ]\n },\n fade: {\n enter: d => [\n style({ opacity: 0, offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 1 }))\n ],\n leave: d => [\n style({ opacity: 1, offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 0 }))\n ]\n },\n 'fade up': {\n enter: d => [\n style({ opacity: 0, transform: 'translateY(0.75rem)', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 1, transform: 'none' }))\n ],\n leave: d => [\n style({ opacity: 1, transform: 'none', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 0, transform: 'translateY(0.75rem)' }))\n ]\n },\n 'fade down': {\n enter: d => [\n style({ opacity: 0, transform: 'translateY(-0.75rem)', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 1, transform: 'none' }))\n ],\n leave: d => [\n style({ opacity: 1, transform: 'none', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 0, transform: 'translateY(-0.75rem)' }))\n ]\n },\n 'fade left': {\n enter: d => [\n style({ opacity: 0, transform: 'translateX(0.75rem)', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 1, transform: 'none' }))\n ],\n leave: d => [\n style({ opacity: 1, transform: 'none', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 0, transform: 'translateX(0.75rem)' }))\n ]\n },\n 'fade right': {\n enter: d => [\n style({ opacity: 0, transform: 'translateX(-0.75rem)', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 1, transform: 'none' }))\n ],\n leave: d => [\n style({ opacity: 1, transform: 'none', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 0, transform: 'translateX(-0.75rem)' }))\n ]\n },\n 'horizontal flip': {\n enter: d => [\n style({\n opacity: 0,\n transform: 'perspective(600px) rotateY(-90deg)',\n offset: 0\n }),\n animate(\n `${d} ${EASE}`,\n style({ opacity: 1, transform: 'perspective(600px) rotateY(0deg)' })\n )\n ],\n leave: d => [\n style({\n opacity: 1,\n transform: 'perspective(600px) rotateY(0deg)',\n offset: 0\n }),\n animate(\n `${d} ${EASE}`,\n style({ opacity: 0, transform: 'perspective(600px) rotateY(90deg)' })\n )\n ]\n },\n 'vertical flip': {\n enter: d => [\n style({\n opacity: 0,\n transform: 'perspective(600px) rotateX(-90deg)',\n offset: 0\n }),\n animate(\n `${d} ${EASE}`,\n style({ opacity: 1, transform: 'perspective(600px) rotateX(0deg)' })\n )\n ],\n leave: d => [\n style({\n opacity: 1,\n transform: 'perspective(600px) rotateX(0deg)',\n offset: 0\n }),\n animate(\n `${d} ${EASE}`,\n style({ opacity: 0, transform: 'perspective(600px) rotateX(90deg)' })\n )\n ]\n },\n drop: {\n enter: d => [\n style({ opacity: 0, transform: 'translateY(-120%)', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 1, transform: 'none' }))\n ],\n leave: d => [\n style({ opacity: 1, transform: 'none', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 0, transform: 'translateY(-120%)' }))\n ]\n },\n 'fly left': {\n enter: d => [\n style({ opacity: 0, transform: 'translateX(120%)', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 1, transform: 'none' }))\n ],\n leave: d => [\n style({ opacity: 1, transform: 'none', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 0, transform: 'translateX(-120%)' }))\n ]\n },\n 'fly right': {\n enter: d => [\n style({ opacity: 0, transform: 'translateX(-120%)', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 1, transform: 'none' }))\n ],\n leave: d => [\n style({ opacity: 1, transform: 'none', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 0, transform: 'translateX(120%)' }))\n ]\n },\n 'fly up': {\n enter: d => [\n style({ opacity: 0, transform: 'translateY(120%)', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 1, transform: 'none' }))\n ],\n leave: d => [\n style({ opacity: 1, transform: 'none', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 0, transform: 'translateY(-120%)' }))\n ]\n },\n 'fly down': {\n enter: d => [\n style({ opacity: 0, transform: 'translateY(-120%)', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 1, transform: 'none' }))\n ],\n leave: d => [\n style({ opacity: 1, transform: 'none', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 0, transform: 'translateY(120%)' }))\n ]\n },\n 'swing left': {\n enter: d => [\n style({ opacity: 0, transform: 'rotate(-12deg)', transformOrigin: 'top center', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 1, transform: 'none' }))\n ],\n leave: d => [\n style({ opacity: 1, transform: 'none', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 0, transform: 'rotate(12deg)', transformOrigin: 'top center' }))\n ]\n },\n 'swing right': {\n enter: d => [\n style({ opacity: 0, transform: 'rotate(12deg)', transformOrigin: 'top center', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 1, transform: 'none' }))\n ],\n leave: d => [\n style({ opacity: 1, transform: 'none', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 0, transform: 'rotate(-12deg)', transformOrigin: 'top center' }))\n ]\n },\n 'swing up': {\n enter: d => [\n style({ opacity: 0, transform: 'rotate(-10deg)', transformOrigin: 'bottom center', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 1, transform: 'none' }))\n ],\n leave: d => [\n style({ opacity: 1, transform: 'none', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 0, transform: 'rotate(10deg)', transformOrigin: 'bottom center' }))\n ]\n },\n 'swing down': {\n enter: d => [\n style({ opacity: 0, transform: 'rotate(10deg)', transformOrigin: 'top center', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 1, transform: 'none' }))\n ],\n leave: d => [\n style({ opacity: 1, transform: 'none', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 0, transform: 'rotate(-10deg)', transformOrigin: 'top center' }))\n ]\n },\n browse: {\n enter: d => [\n style({ opacity: 0, transform: 'translateX(-1rem) skewX(-6deg)', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 1, transform: 'none' }))\n ],\n leave: d => [\n style({ opacity: 1, transform: 'none', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 0, transform: 'translateX(1rem) skewX(6deg)' }))\n ]\n },\n 'browse right': {\n enter: d => [\n style({ opacity: 0, transform: 'translateX(1rem) skewX(6deg)', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 1, transform: 'none' }))\n ],\n leave: d => [\n style({ opacity: 1, transform: 'none', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 0, transform: 'translateX(-1rem) skewX(-6deg)' }))\n ]\n },\n 'slide down': {\n enter: d => [\n style({ opacity: 0, transform: 'translateY(-100%)', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 1, transform: 'none' }))\n ],\n leave: d => [\n style({ opacity: 1, transform: 'none', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 0, transform: 'translateY(-100%)' }))\n ]\n },\n 'slide up': {\n enter: d => [\n style({ opacity: 0, transform: 'translateY(100%)', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 1, transform: 'none' }))\n ],\n leave: d => [\n style({ opacity: 1, transform: 'none', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 0, transform: 'translateY(100%)' }))\n ]\n },\n 'slide left': {\n enter: d => [\n style({ opacity: 0, transform: 'translateX(100%)', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 1, transform: 'none' }))\n ],\n leave: d => [\n style({ opacity: 1, transform: 'none', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 0, transform: 'translateX(-100%)' }))\n ]\n },\n 'slide right': {\n enter: d => [\n style({ opacity: 0, transform: 'translateX(-100%)', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 1, transform: 'none' }))\n ],\n leave: d => [\n style({ opacity: 1, transform: 'none', offset: 0 }),\n animate(`${d} ${EASE}`, style({ opacity: 0, transform: 'translateX(100%)' }))\n ]\n }\n};\n\nconst DEFAULT_MOTION = MOTIONS.fade;\n\nexport function getMotionForVisibility(baseName: string): TransitionMotion {\n if (isStaticTransitionName(baseName)) {\n return DEFAULT_MOTION;\n }\n return MOTIONS[baseName] ?? DEFAULT_MOTION;\n}\n\nexport function buildEnterSteps(baseName: string, durationCss: string): AnimationMetadata[] {\n return getMotionForVisibility(baseName).enter(durationCss);\n}\n\nexport function buildLeaveSteps(baseName: string, durationCss: string): AnimationMetadata[] {\n return getMotionForVisibility(baseName).leave(durationCss);\n}\n\nexport function buildStaticSteps(baseName: string, durationCss: string): AnimationMetadata[] | null {\n if (!isStaticTransitionName(baseName)) {\n return null;\n }\n switch (baseName) {\n case 'pulse':\n return [\n style({ transform: 'scale(1)', offset: 0 }),\n animate(\n `${durationCss} ${EASE}`,\n keyframes([\n style({ transform: 'scale(1)', offset: 0 }),\n style({ transform: 'scale(1.06)', offset: 0.5 }),\n style({ transform: 'scale(1)', offset: 1 })\n ])\n )\n ];\n case 'shake':\n return [\n animate(\n `${durationCss} ${EASE}`,\n keyframes([\n style({ transform: 'translateX(0)', offset: 0 }),\n style({ transform: 'translateX(-0.5rem)', offset: 0.2 }),\n style({ transform: 'translateX(0.5rem)', offset: 0.4 }),\n style({ transform: 'translateX(-0.35rem)', offset: 0.6 }),\n style({ transform: 'translateX(0.35rem)', offset: 0.8 }),\n style({ transform: 'translateX(0)', offset: 1 })\n ])\n )\n ];\n case 'jiggle':\n return [\n animate(\n `${durationCss} ${EASE}`,\n keyframes([\n style({ transform: 'rotate(0deg)', offset: 0 }),\n style({ transform: 'rotate(-2.5deg)', offset: 0.25 }),\n style({ transform: 'rotate(2.5deg)', offset: 0.5 }),\n style({ transform: 'rotate(-1.5deg)', offset: 0.75 }),\n style({ transform: 'rotate(0deg)', offset: 1 })\n ])\n )\n ];\n case 'flash':\n return [\n animate(\n `${durationCss} linear`,\n keyframes([\n style({ opacity: 1, offset: 0 }),\n style({ opacity: 0.2, offset: 0.5 }),\n style({ opacity: 1, offset: 1 })\n ])\n )\n ];\n case 'tada':\n return [\n animate(\n `${durationCss} ${EASE}`,\n keyframes([\n style({ transform: 'scale(1) rotate(0deg)', offset: 0 }),\n style({ transform: 'scale(0.92) rotate(-2deg)', offset: 0.1 }),\n style({ transform: 'scale(1.08) rotate(2deg)', offset: 0.3 }),\n style({ transform: 'scale(1.02) rotate(-1deg)', offset: 0.5 }),\n style({ transform: 'scale(1) rotate(0deg)', offset: 1 })\n ])\n )\n ];\n case 'bounce':\n return [\n animate(\n `${durationCss} ${EASE}`,\n keyframes([\n style({ transform: 'translateY(0)', offset: 0 }),\n style({ transform: 'translateY(-0.6rem)', offset: 0.35 }),\n style({ transform: 'translateY(0)', offset: 0.55 }),\n style({ transform: 'translateY(-0.25rem)', offset: 0.7 }),\n style({ transform: 'translateY(0)', offset: 0.85 }),\n style({ transform: 'translateY(0)', offset: 1 })\n ])\n )\n ];\n case 'glow':\n return [\n animate(\n `${durationCss} ${EASE}`,\n keyframes([\n style({ boxShadow: '0 0 0 0 rgba(100, 180, 255, 0)', offset: 0 }),\n style({ boxShadow: '0 0 1.25rem 0.25rem rgba(100, 180, 255, 0.45)', offset: 0.5 }),\n style({ boxShadow: '0 0 0 0 rgba(100, 180, 255, 0)', offset: 1 })\n ])\n )\n ];\n default:\n return null;\n }\n}\n\nexport function listRegisteredMotionKeys(): string[] {\n return Object.keys(MOTIONS);\n}\n","/**\n * Semantic UI [Transition](https://semantic-ui.com/modules/transition.html) — Angular port using\n * `@angular/animations` (`AnimationBuilder`). Include Semantic UI transition CSS in your app if you\n * rely on theme classes; motion is driven by this component’s animation metadata.\n */\n\nimport {\n AnimationBuilder,\n AnimationMetadata,\n AnimationPlayer\n} from '@angular/animations';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n Output,\n Renderer2,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { ClassUtils, InputBoolean } from 'ngx-semantic/core/util';\nimport {\n buildEnterSteps,\n buildLeaveSteps,\n buildStaticSteps\n} from './transition-animations';\nimport {\n durationToCss,\n isStaticTransitionName,\n parseTransitionName,\n resolveTransitionDirection,\n SuiTransitionDirectionMode\n} from './transition-util';\n\n@Component({\n standalone: true,\n selector: 'sui-transition',\n exportAs: 'suiTransition',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n host: {\n '[class]': 'hostClassList'\n }\n})\nexport class SuiTransitionComponent implements OnChanges, OnDestroy {\n private readonly builder = inject(AnimationBuilder);\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly renderer = inject(Renderer2);\n private readonly zone = inject(NgZone);\n private readonly cdr = inject(ChangeDetectorRef);\n\n /** Semantic animation name, e.g. `fade up`, `horizontal flip`, `pulse`. Optional ` in` / ` out` suffix. */\n @Input() public suiAnimation = 'fade';\n /** Duration in ms or CSS time string (e.g. `500`, `500ms`, `0.5s`). */\n @Input() public suiDuration: number | string = 500;\n /** When not forced by the animation string, controls automatic in vs out (default mirrors Semantic `auto`). */\n @Input() public suiDirection: SuiTransitionDirectionMode = 'auto';\n /** Whether the host is shown (after transitions complete). Two-way bindable. */\n @Input() @InputBoolean() public suiVisible = true;\n /** Increment to replay the current **static** animation (`pulse`, `shake`, …). */\n @Input() public suiPlay = 0;\n /** Disables animations; visibility updates apply immediately. */\n @Input() @InputBoolean() public suiDisabled = false;\n\n @Output() public readonly suiVisibleChange = new EventEmitter<boolean>();\n /** Fires when a transition begins (visibility or static). */\n @Output() public readonly suiAnimationStart = new EventEmitter<void>();\n /** Fires when a transition finishes. */\n @Output() public readonly suiAnimationComplete = new EventEmitter<void>();\n /** After an inward transition that ends visible. */\n @Output() public readonly suiOnShow = new EventEmitter<void>();\n /** After an outward transition that ends hidden. */\n @Output() public readonly suiOnHide = new EventEmitter<void>();\n\n /** Mirrors Semantic UI state classes. */\n public animating = false;\n /** Final hidden state (opacity/visibility), not necessarily DOM removal. */\n public hidden = false;\n\n public hostClassList = '';\n\n private player: AnimationPlayer | null = null;\n private initialized = false;\n private lastVisible = true;\n private lastPlay = 0;\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['suiPlay']) {\n if (changes['suiPlay'].firstChange) {\n this.lastPlay = this.suiPlay;\n } else if (this.suiPlay !== this.lastPlay) {\n this.lastPlay = this.suiPlay;\n this.runStaticAnimation();\n }\n }\n\n if (changes['suiVisible']) {\n const cur = this.suiVisible;\n if (!this.initialized) {\n this.initialized = true;\n this.lastVisible = cur;\n this.applyImmediateVisibility(cur);\n this.syncHostClasses();\n return;\n }\n if (cur !== this.lastVisible) {\n this.lastVisible = cur;\n this.runVisibilityTransition(cur);\n }\n }\n\n if (\n changes['suiAnimation'] ||\n changes['suiDuration'] ||\n changes['suiDirection'] ||\n changes['suiDisabled']\n ) {\n this.syncHostClasses();\n }\n }\n\n public ngOnDestroy(): void {\n this.destroyPlayer();\n }\n\n /** Show with the current animation settings. */\n public show(): void {\n this.setVisible(true);\n }\n\n /** Hide with the current animation settings. */\n public hide(): void {\n this.setVisible(false);\n }\n\n /** Toggle visibility. */\n public toggle(): void {\n this.setVisible(!this.suiVisible);\n }\n\n /** Stop the active animation (Semantic `stop` / `stop all` style: clears current player). */\n public stop(): void {\n this.destroyPlayer();\n this.animating = false;\n this.syncHostClasses();\n this.cdr.markForCheck();\n }\n\n /** Run a static attention animation if `suiAnimation` is static; no-op otherwise. */\n public playStatic(): void {\n this.runStaticAnimation();\n }\n\n public setVisible(value: boolean): void {\n if (this.suiVisible === value) {\n return;\n }\n this.suiVisible = value;\n this.suiVisibleChange.emit(value);\n if (!this.initialized) {\n this.initialized = true;\n this.lastVisible = value;\n this.applyImmediateVisibility(value);\n this.syncHostClasses();\n this.cdr.markForCheck();\n return;\n }\n this.lastVisible = value;\n this.runVisibilityTransition(value);\n this.cdr.markForCheck();\n }\n\n private runVisibilityTransition(targetVisible: boolean): void {\n if (this.suiDisabled) {\n this.suiAnimationStart.emit();\n this.applyImmediateVisibility(targetVisible);\n this.emitVisibilityCallbacks(targetVisible);\n this.cdr.markForCheck();\n return;\n }\n const { baseName, explicitDirection } = parseTransitionName(this.suiAnimation);\n const direction = resolveTransitionDirection(\n explicitDirection,\n this.suiDirection,\n targetVisible\n );\n const motionBase = isStaticTransitionName(baseName) ? 'fade' : baseName;\n const durationCss = durationToCss(this.suiDuration);\n const steps =\n direction === 'in'\n ? buildEnterSteps(motionBase, durationCss)\n : buildLeaveSteps(motionBase, durationCss);\n this.playSteps(steps, targetVisible);\n }\n\n private runStaticAnimation(): void {\n const { baseName } = parseTransitionName(this.suiAnimation);\n if (!isStaticTransitionName(baseName) || this.suiDisabled) {\n return;\n }\n const steps = buildStaticSteps(baseName, durationToCss(this.suiDuration));\n if (!steps) {\n return;\n }\n this.playSteps(steps, true, true);\n }\n\n private playSteps(\n steps: AnimationMetadata[],\n endingVisible: boolean,\n isStatic = false\n ): void {\n this.destroyPlayer();\n this.animating = true;\n this.suiAnimationStart.emit();\n this.syncHostClasses();\n this.cdr.markForCheck();\n\n const factory = this.builder.build(steps);\n const player = factory.create(this.el.nativeElement);\n this.player = player;\n\n player.onDone(() => {\n this.zone.run(() => {\n this.player = null;\n this.animating = false;\n if (endingVisible) {\n this.applyVisibleEndState();\n this.hidden = false;\n } else {\n this.applyHiddenEndState();\n this.hidden = true;\n }\n this.suiAnimationComplete.emit();\n if (!isStatic) {\n if (endingVisible) {\n this.suiOnShow.emit();\n } else {\n this.suiOnHide.emit();\n }\n }\n this.syncHostClasses();\n this.cdr.markForCheck();\n });\n });\n\n player.play();\n }\n\n private emitVisibilityCallbacks(targetVisible: boolean): void {\n this.suiAnimationComplete.emit();\n if (targetVisible) {\n this.suiOnShow.emit();\n } else {\n this.suiOnHide.emit();\n }\n }\n\n private applyImmediateVisibility(visible: boolean): void {\n this.destroyPlayer();\n this.animating = false;\n if (visible) {\n this.applyVisibleEndState();\n this.hidden = false;\n } else {\n this.applyHiddenEndState();\n this.hidden = true;\n }\n this.syncHostClasses();\n }\n\n private applyVisibleEndState(): void {\n const el = this.el.nativeElement;\n this.renderer.setStyle(el, 'opacity', '1');\n this.renderer.setStyle(el, 'visibility', 'visible');\n this.renderer.removeStyle(el, 'transform');\n this.renderer.removeStyle(el, 'transform-origin');\n this.renderer.removeStyle(el, 'box-shadow');\n }\n\n private applyHiddenEndState(): void {\n const el = this.el.nativeElement;\n this.renderer.setStyle(el, 'opacity', '0');\n this.renderer.setStyle(el, 'visibility', 'hidden');\n this.renderer.removeStyle(el, 'transform');\n this.renderer.removeStyle(el, 'transform-origin');\n }\n\n private destroyPlayer(): void {\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n }\n\n private syncHostClasses(): void {\n const { baseName } = parseTransitionName(this.suiAnimation);\n const tokens = ClassUtils.combineToClass([\n 'transition',\n ...baseName.split(' '),\n ClassUtils.getPropClass(this.animating, 'animating'),\n ClassUtils.getPropClass(this.suiDisabled, 'disabled'),\n ClassUtils.getPropClass(!this.hidden, 'visible'),\n ClassUtils.getPropClass(this.hidden, 'hidden')\n ]);\n this.hostClassList = ClassUtils.removeExcessWhitespace(tokens);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SuiTransitionComponent } from './transition.component';\n\n@NgModule({\n imports: [SuiTransitionComponent],\n exports: [SuiTransitionComponent]\n})\nexport class SuiTransitionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,525 @@
1
+ import { __decorate } from 'tslib';
2
+ import { DOCUMENT, CommonModule } from '@angular/common';
3
+ import * as i0 from '@angular/core';
4
+ import { inject, ElementRef, Renderer2, NgZone, EventEmitter, Output, Input, Directive, NgModule } from '@angular/core';
5
+ import { InputBoolean } from 'ngx-semantic/core/util';
6
+ import { Subject, fromEvent } from 'rxjs';
7
+ import { takeUntil } from 'rxjs/operators';
8
+
9
+ function computeVisibilityCalculations(input) {
10
+ const offset = input.offset || 0;
11
+ let top = input.element.top;
12
+ let bottom = input.element.bottom;
13
+ let height = input.element.height;
14
+ if (input.includeMargin) {
15
+ top -= input.marginTop;
16
+ bottom += input.marginBottom;
17
+ height += input.marginTop + input.marginBottom;
18
+ }
19
+ const screenTop = input.screen.top + offset;
20
+ const screenBottom = input.screen.top + input.screen.height + offset;
21
+ const topVisible = screenBottom >= top;
22
+ const topPassed = screenTop >= top;
23
+ const bottomVisible = screenBottom >= bottom;
24
+ const bottomPassed = screenTop >= bottom;
25
+ const onScreen = topVisible && !bottomPassed;
26
+ const passing = topPassed && !bottomPassed;
27
+ const pixelsPassed = Math.max(0, screenTop - top);
28
+ const percentagePassed = height > 0 ? pixelsPassed / height : 0;
29
+ const direction = input.scrollTop < input.lastScrollTop ? 'up' : 'down';
30
+ return {
31
+ topVisible,
32
+ topPassed,
33
+ bottomVisible,
34
+ bottomPassed,
35
+ passing,
36
+ onScreen,
37
+ offScreen: !onScreen,
38
+ fits: height < input.screen.height,
39
+ width: input.element.width,
40
+ height,
41
+ pixelsPassed,
42
+ percentagePassed,
43
+ direction
44
+ };
45
+ }
46
+ function passedAmounts(config) {
47
+ if (!config) {
48
+ return [];
49
+ }
50
+ if (Array.isArray(config)) {
51
+ return config;
52
+ }
53
+ return Object.keys(config);
54
+ }
55
+ /** Convert `'10%'` / `'200px'` / `'50'` into pixels for the current element height. */
56
+ function passedThresholdPixels(amount, elementHeight) {
57
+ const trimmed = amount.trim();
58
+ if (trimmed.endsWith('%')) {
59
+ return (parseFloat(trimmed) / 100) * elementHeight;
60
+ }
61
+ return parseFloat(trimmed);
62
+ }
63
+ function shouldEmitCondition(current, previous, alreadyOccurred, once, continuous) {
64
+ if (!current) {
65
+ return false;
66
+ }
67
+ if (continuous) {
68
+ return true;
69
+ }
70
+ if (once) {
71
+ return !alreadyOccurred;
72
+ }
73
+ return !previous;
74
+ }
75
+ function shouldEmitReverse(current, previous, forwardOccurred, reverseOccurred, once, continuous) {
76
+ if (current || !(forwardOccurred || previous)) {
77
+ return false;
78
+ }
79
+ if (continuous) {
80
+ return true;
81
+ }
82
+ if (once) {
83
+ return !reverseOccurred;
84
+ }
85
+ return previous;
86
+ }
87
+
88
+ const CONDITION_KEYS = ['onScreen', 'offScreen', 'topVisible', 'topPassed', 'bottomVisible', 'bottomPassed', 'passing'];
89
+ const REVERSE_KEYS = {
90
+ topVisible: 'topVisibleReverse',
91
+ topPassed: 'topPassedReverse',
92
+ bottomVisible: 'bottomVisibleReverse',
93
+ bottomPassed: 'bottomPassedReverse',
94
+ passing: 'passingReverse'
95
+ };
96
+ class SuiVisibilityDirective {
97
+ constructor() {
98
+ this.document = inject(DOCUMENT);
99
+ this.el = inject(ElementRef);
100
+ this.renderer = inject(Renderer2);
101
+ this.zone = inject(NgZone);
102
+ /** Semantic UI `once` — each condition fires once until `refresh()`. */
103
+ this.suiOnce = true;
104
+ /** Fire on every check while the condition holds. */
105
+ this.suiContinuous = false;
106
+ /** Scroll context (`window`, selector, or element). */
107
+ this.suiContext = 'window';
108
+ /** Alias of `suiContext` (sticky-style). Takes precedence when set. */
109
+ this.suiScrollContext = null;
110
+ this.suiOffset = 0;
111
+ this.suiIncludeMargin = false;
112
+ this.suiInitialCheck = true;
113
+ this.suiObserveChanges = false;
114
+ /** Milliseconds to throttle scroll checks; `false` uses `requestAnimationFrame`. */
115
+ this.suiThrottle = false;
116
+ this.suiType = false;
117
+ this.suiPassed = null;
118
+ this.suiZIndex = 1;
119
+ this.suiOnOnScreen = new EventEmitter();
120
+ this.suiOnOffScreen = new EventEmitter();
121
+ this.suiOnTopVisible = new EventEmitter();
122
+ this.suiOnTopPassed = new EventEmitter();
123
+ this.suiOnBottomVisible = new EventEmitter();
124
+ this.suiOnBottomPassed = new EventEmitter();
125
+ this.suiOnPassing = new EventEmitter();
126
+ this.suiOnTopVisibleReverse = new EventEmitter();
127
+ this.suiOnTopPassedReverse = new EventEmitter();
128
+ this.suiOnBottomVisibleReverse = new EventEmitter();
129
+ this.suiOnBottomPassedReverse = new EventEmitter();
130
+ this.suiOnPassingReverse = new EventEmitter();
131
+ this.suiOnUpdate = new EventEmitter();
132
+ this.suiOnPassed = new EventEmitter();
133
+ this.suiOnRefresh = new EventEmitter();
134
+ this.suiOnFixed = new EventEmitter();
135
+ this.suiOnUnfixed = new EventEmitter();
136
+ this.suiOnLoad = new EventEmitter();
137
+ this.lastCalculations = null;
138
+ this.destroy$ = new Subject();
139
+ this.occurred = {};
140
+ this.previous = {};
141
+ this.scrollEl = window;
142
+ this.lastScrollTop = 0;
143
+ this.disabled = false;
144
+ this.mutationObserver = null;
145
+ this.refreshTimer = null;
146
+ this.throttleTimer = null;
147
+ this.rafId = null;
148
+ this.imageLoaded = false;
149
+ this.isFixed = false;
150
+ this.placeholder = null;
151
+ this.emitters = {
152
+ onScreen: this.suiOnOnScreen,
153
+ offScreen: this.suiOnOffScreen,
154
+ topVisible: this.suiOnTopVisible,
155
+ topPassed: this.suiOnTopPassed,
156
+ bottomVisible: this.suiOnBottomVisible,
157
+ bottomPassed: this.suiOnBottomPassed,
158
+ passing: this.suiOnPassing,
159
+ topVisibleReverse: this.suiOnTopVisibleReverse,
160
+ topPassedReverse: this.suiOnTopPassedReverse,
161
+ bottomVisibleReverse: this.suiOnBottomVisibleReverse,
162
+ bottomPassedReverse: this.suiOnBottomPassedReverse,
163
+ passingReverse: this.suiOnPassingReverse
164
+ };
165
+ }
166
+ ngOnInit() {
167
+ this.bindListeners();
168
+ }
169
+ ngAfterViewInit() {
170
+ if (this.suiObserveChanges && typeof MutationObserver !== 'undefined') {
171
+ this.mutationObserver = new MutationObserver(() => this.scheduleRefresh());
172
+ this.mutationObserver.observe(this.el.nativeElement, { childList: true, subtree: true, attributes: true });
173
+ }
174
+ if (this.suiInitialCheck) {
175
+ queueMicrotask(() => this.check());
176
+ }
177
+ }
178
+ ngOnDestroy() {
179
+ this.destroy$.next();
180
+ this.destroy$.complete();
181
+ this.mutationObserver?.disconnect();
182
+ if (this.refreshTimer) {
183
+ clearTimeout(this.refreshTimer);
184
+ }
185
+ if (this.throttleTimer) {
186
+ clearTimeout(this.throttleTimer);
187
+ }
188
+ if (this.rafId != null) {
189
+ cancelAnimationFrame(this.rafId);
190
+ }
191
+ this.removePlaceholder();
192
+ }
193
+ /** Mirrors `visibility('refresh')` — clears occurred flags and rechecks. */
194
+ refresh() {
195
+ Object.keys(this.occurred).forEach((key) => {
196
+ delete this.occurred[key];
197
+ });
198
+ Object.keys(this.previous).forEach((key) => {
199
+ delete this.previous[key];
200
+ });
201
+ this.suiOnRefresh.emit();
202
+ this.check();
203
+ }
204
+ disable() {
205
+ this.disabled = true;
206
+ }
207
+ enable() {
208
+ this.disabled = false;
209
+ this.check();
210
+ }
211
+ /** Mirrors `visibility('check')`. */
212
+ check() {
213
+ if (this.disabled) {
214
+ return;
215
+ }
216
+ this.scrollEl = this.resolveScrollElement();
217
+ const calculations = this.readCalculations();
218
+ this.lastCalculations = calculations;
219
+ this.suiOnUpdate.emit(calculations);
220
+ this.emitConditions(calculations);
221
+ this.emitPassed(calculations);
222
+ this.applyImageType(calculations);
223
+ this.applyFixedType(calculations);
224
+ }
225
+ bindListeners() {
226
+ const win = this.document.defaultView;
227
+ this.scrollEl = this.resolveScrollElement();
228
+ this.zone.runOutsideAngular(() => {
229
+ const scrollTarget = this.scrollEl === window ? win : this.scrollEl;
230
+ fromEvent(scrollTarget, 'scroll', { passive: true })
231
+ .pipe(takeUntil(this.destroy$))
232
+ .subscribe(() => this.scheduleCheck());
233
+ fromEvent(win, 'resize', { passive: true })
234
+ .pipe(takeUntil(this.destroy$))
235
+ .subscribe(() => this.scheduleCheck());
236
+ });
237
+ }
238
+ scheduleCheck() {
239
+ if (this.disabled) {
240
+ return;
241
+ }
242
+ if (typeof this.suiThrottle === 'number' && this.suiThrottle > 0) {
243
+ if (this.throttleTimer != null) {
244
+ clearTimeout(this.throttleTimer);
245
+ }
246
+ this.throttleTimer = setTimeout(() => {
247
+ this.throttleTimer = null;
248
+ this.zone.run(() => this.check());
249
+ }, this.suiThrottle);
250
+ return;
251
+ }
252
+ if (this.rafId != null) {
253
+ return;
254
+ }
255
+ this.rafId = requestAnimationFrame(() => {
256
+ this.rafId = null;
257
+ this.zone.run(() => this.check());
258
+ });
259
+ }
260
+ scheduleRefresh() {
261
+ if (this.refreshTimer) {
262
+ clearTimeout(this.refreshTimer);
263
+ }
264
+ this.refreshTimer = setTimeout(() => {
265
+ this.refreshTimer = null;
266
+ this.refresh();
267
+ }, 100);
268
+ }
269
+ resolveScrollElement() {
270
+ const ctx = this.suiScrollContext ?? this.suiContext;
271
+ if (!ctx || ctx === 'window') {
272
+ return window;
273
+ }
274
+ if (typeof ctx !== 'string') {
275
+ return ctx;
276
+ }
277
+ const found = this.document.querySelector(ctx);
278
+ return found || window;
279
+ }
280
+ readScrollTop() {
281
+ return this.scrollEl === window ? window.scrollY : this.scrollEl.scrollTop;
282
+ }
283
+ readCalculations() {
284
+ const host = this.el.nativeElement;
285
+ const elRect = host.getBoundingClientRect();
286
+ const cs = getComputedStyle(host);
287
+ const marginTop = parseFloat(cs.marginTop) || 0;
288
+ const marginBottom = parseFloat(cs.marginBottom) || 0;
289
+ const scrollTop = this.readScrollTop();
290
+ const screen = this.scrollEl === window
291
+ ? { top: 0, height: window.innerHeight }
292
+ : (() => {
293
+ const r = this.scrollEl.getBoundingClientRect();
294
+ return { top: r.top, height: r.height };
295
+ })();
296
+ const calculations = computeVisibilityCalculations({
297
+ element: { top: elRect.top, bottom: elRect.bottom, width: elRect.width, height: elRect.height },
298
+ screen,
299
+ offset: this.suiOffset,
300
+ includeMargin: this.suiIncludeMargin,
301
+ marginTop,
302
+ marginBottom,
303
+ lastScrollTop: this.lastScrollTop,
304
+ scrollTop
305
+ });
306
+ this.lastScrollTop = scrollTop;
307
+ return calculations;
308
+ }
309
+ emitConditions(calculations) {
310
+ for (const key of CONDITION_KEYS) {
311
+ const current = calculations[key];
312
+ const previous = !!this.previous[key];
313
+ const reverseKey = REVERSE_KEYS[key];
314
+ if (shouldEmitCondition(current, previous, !!this.occurred[key], this.suiOnce, this.suiContinuous)) {
315
+ this.emitters[key].emit(calculations);
316
+ }
317
+ if (reverseKey && shouldEmitReverse(current, previous, !!this.occurred[key], !!this.occurred[reverseKey], this.suiOnce, this.suiContinuous)) {
318
+ this.emitters[reverseKey].emit(calculations);
319
+ this.occurred[reverseKey] = true;
320
+ }
321
+ if (current) {
322
+ this.occurred[key] = true;
323
+ if (!this.suiOnce && reverseKey) {
324
+ this.occurred[reverseKey] = false;
325
+ }
326
+ }
327
+ else if (!this.suiOnce) {
328
+ this.occurred[key] = false;
329
+ }
330
+ this.previous[key] = current;
331
+ }
332
+ }
333
+ emitPassed(calculations) {
334
+ if (!calculations.topPassed && !calculations.passing) {
335
+ return;
336
+ }
337
+ for (const amount of passedAmounts(this.suiPassed)) {
338
+ const px = passedThresholdPixels(amount, calculations.height);
339
+ if (Number.isNaN(px) || calculations.pixelsPassed < px) {
340
+ continue;
341
+ }
342
+ const occurredKey = `passed:${amount}`;
343
+ const previous = !!this.previous[occurredKey];
344
+ if (shouldEmitCondition(true, previous, !!this.occurred[occurredKey], this.suiOnce, this.suiContinuous)) {
345
+ this.suiOnPassed.emit({ amount, calculations });
346
+ }
347
+ this.occurred[occurredKey] = true;
348
+ this.previous[occurredKey] = true;
349
+ }
350
+ }
351
+ applyImageType(calculations) {
352
+ if (this.suiType !== 'image' || this.imageLoaded || !calculations.topVisible) {
353
+ return;
354
+ }
355
+ const host = this.el.nativeElement;
356
+ const src = host.getAttribute('data-src');
357
+ if (!src) {
358
+ return;
359
+ }
360
+ this.renderer.setAttribute(host, 'src', src);
361
+ this.renderer.removeAttribute(host, 'data-src');
362
+ this.imageLoaded = true;
363
+ this.suiOnLoad.emit(calculations);
364
+ }
365
+ applyFixedType(calculations) {
366
+ if (this.suiType !== 'fixed') {
367
+ return;
368
+ }
369
+ if (calculations.topPassed) {
370
+ this.fixElement(calculations);
371
+ }
372
+ else {
373
+ this.unfixElement(calculations);
374
+ }
375
+ }
376
+ fixElement(calculations) {
377
+ if (this.isFixed) {
378
+ return;
379
+ }
380
+ const host = this.el.nativeElement;
381
+ const rect = host.getBoundingClientRect();
382
+ const parent = host.parentNode;
383
+ if (parent) {
384
+ this.placeholder = this.renderer.createElement('div');
385
+ this.renderer.setStyle(this.placeholder, 'display', 'block');
386
+ this.renderer.setStyle(this.placeholder, 'width', `${rect.width}px`);
387
+ this.renderer.setStyle(this.placeholder, 'height', `${rect.height}px`);
388
+ this.renderer.insertBefore(parent, this.placeholder, host);
389
+ }
390
+ this.renderer.addClass(host, 'fixed');
391
+ this.renderer.setStyle(host, 'position', 'fixed');
392
+ this.renderer.setStyle(host, 'top', `${this.suiOffset}px`);
393
+ this.renderer.setStyle(host, 'z-index', String(this.suiZIndex));
394
+ this.isFixed = true;
395
+ this.suiOnFixed.emit(calculations);
396
+ }
397
+ unfixElement(calculations) {
398
+ if (!this.isFixed) {
399
+ return;
400
+ }
401
+ const host = this.el.nativeElement;
402
+ this.renderer.removeClass(host, 'fixed');
403
+ this.renderer.removeStyle(host, 'position');
404
+ this.renderer.removeStyle(host, 'top');
405
+ this.renderer.removeStyle(host, 'z-index');
406
+ this.removePlaceholder();
407
+ this.isFixed = false;
408
+ this.suiOnUnfixed.emit(calculations);
409
+ }
410
+ removePlaceholder() {
411
+ if (!this.placeholder) {
412
+ return;
413
+ }
414
+ const parent = this.placeholder.parentNode;
415
+ if (parent) {
416
+ this.renderer.removeChild(parent, this.placeholder);
417
+ }
418
+ this.placeholder = null;
419
+ }
420
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: SuiVisibilityDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
421
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.23", type: SuiVisibilityDirective, isStandalone: true, selector: "[suiVisibility]", inputs: { suiOnce: "suiOnce", suiContinuous: "suiContinuous", suiContext: "suiContext", suiScrollContext: "suiScrollContext", suiOffset: "suiOffset", suiIncludeMargin: "suiIncludeMargin", suiInitialCheck: "suiInitialCheck", suiObserveChanges: "suiObserveChanges", suiThrottle: "suiThrottle", suiType: "suiType", suiPassed: "suiPassed", suiZIndex: "suiZIndex" }, outputs: { suiOnOnScreen: "suiOnOnScreen", suiOnOffScreen: "suiOnOffScreen", suiOnTopVisible: "suiOnTopVisible", suiOnTopPassed: "suiOnTopPassed", suiOnBottomVisible: "suiOnBottomVisible", suiOnBottomPassed: "suiOnBottomPassed", suiOnPassing: "suiOnPassing", suiOnTopVisibleReverse: "suiOnTopVisibleReverse", suiOnTopPassedReverse: "suiOnTopPassedReverse", suiOnBottomVisibleReverse: "suiOnBottomVisibleReverse", suiOnBottomPassedReverse: "suiOnBottomPassedReverse", suiOnPassingReverse: "suiOnPassingReverse", suiOnUpdate: "suiOnUpdate", suiOnPassed: "suiOnPassed", suiOnRefresh: "suiOnRefresh", suiOnFixed: "suiOnFixed", suiOnUnfixed: "suiOnUnfixed", suiOnLoad: "suiOnLoad" }, exportAs: ["suiVisibility"], ngImport: i0 }); }
422
+ }
423
+ __decorate([
424
+ InputBoolean()
425
+ ], SuiVisibilityDirective.prototype, "suiOnce", void 0);
426
+ __decorate([
427
+ InputBoolean()
428
+ ], SuiVisibilityDirective.prototype, "suiContinuous", void 0);
429
+ __decorate([
430
+ InputBoolean()
431
+ ], SuiVisibilityDirective.prototype, "suiIncludeMargin", void 0);
432
+ __decorate([
433
+ InputBoolean()
434
+ ], SuiVisibilityDirective.prototype, "suiInitialCheck", void 0);
435
+ __decorate([
436
+ InputBoolean()
437
+ ], SuiVisibilityDirective.prototype, "suiObserveChanges", void 0);
438
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: SuiVisibilityDirective, decorators: [{
439
+ type: Directive,
440
+ args: [{
441
+ standalone: true,
442
+ selector: '[suiVisibility]',
443
+ exportAs: 'suiVisibility'
444
+ }]
445
+ }], propDecorators: { suiOnce: [{
446
+ type: Input
447
+ }], suiContinuous: [{
448
+ type: Input
449
+ }], suiContext: [{
450
+ type: Input
451
+ }], suiScrollContext: [{
452
+ type: Input
453
+ }], suiOffset: [{
454
+ type: Input
455
+ }], suiIncludeMargin: [{
456
+ type: Input
457
+ }], suiInitialCheck: [{
458
+ type: Input
459
+ }], suiObserveChanges: [{
460
+ type: Input
461
+ }], suiThrottle: [{
462
+ type: Input
463
+ }], suiType: [{
464
+ type: Input
465
+ }], suiPassed: [{
466
+ type: Input
467
+ }], suiZIndex: [{
468
+ type: Input
469
+ }], suiOnOnScreen: [{
470
+ type: Output
471
+ }], suiOnOffScreen: [{
472
+ type: Output
473
+ }], suiOnTopVisible: [{
474
+ type: Output
475
+ }], suiOnTopPassed: [{
476
+ type: Output
477
+ }], suiOnBottomVisible: [{
478
+ type: Output
479
+ }], suiOnBottomPassed: [{
480
+ type: Output
481
+ }], suiOnPassing: [{
482
+ type: Output
483
+ }], suiOnTopVisibleReverse: [{
484
+ type: Output
485
+ }], suiOnTopPassedReverse: [{
486
+ type: Output
487
+ }], suiOnBottomVisibleReverse: [{
488
+ type: Output
489
+ }], suiOnBottomPassedReverse: [{
490
+ type: Output
491
+ }], suiOnPassingReverse: [{
492
+ type: Output
493
+ }], suiOnUpdate: [{
494
+ type: Output
495
+ }], suiOnPassed: [{
496
+ type: Output
497
+ }], suiOnRefresh: [{
498
+ type: Output
499
+ }], suiOnFixed: [{
500
+ type: Output
501
+ }], suiOnUnfixed: [{
502
+ type: Output
503
+ }], suiOnLoad: [{
504
+ type: Output
505
+ }] } });
506
+
507
+ class SuiVisibilityModule {
508
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: SuiVisibilityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
509
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.23", ngImport: i0, type: SuiVisibilityModule, imports: [CommonModule, SuiVisibilityDirective], exports: [SuiVisibilityDirective] }); }
510
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: SuiVisibilityModule, imports: [CommonModule] }); }
511
+ }
512
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: SuiVisibilityModule, decorators: [{
513
+ type: NgModule,
514
+ args: [{
515
+ imports: [CommonModule, SuiVisibilityDirective],
516
+ exports: [SuiVisibilityDirective]
517
+ }]
518
+ }] });
519
+
520
+ /**
521
+ * Generated bundle index. Do not edit.
522
+ */
523
+
524
+ export { SuiVisibilityDirective, SuiVisibilityModule };
525
+ //# sourceMappingURL=ngx-semantic-modules-visibility.mjs.map