Skip to content

Commit

Permalink
Docs: Clean JS imports
Browse files Browse the repository at this point in the history
  • Loading branch information
lucaslarroche committed Oct 23, 2021
1 parent 8e02895 commit 688a638
Show file tree
Hide file tree
Showing 12 changed files with 237 additions and 3,384 deletions.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
node_modules/
*.DS_Store
TODO.md
prepros.config
test.html
1 change: 0 additions & 1 deletion docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -1257,7 +1257,6 @@ <h2>We love <code>.classes</code></h2>
</main><!-- ./ Main -->

<!-- JavaScript -->
<script src="//unpkg.com/most-visible@1.5.0/dist/most-visible.min.js"></script>
<script src="js/pico.docs.min.js"></script>

</body>
Expand Down
12 changes: 6 additions & 6 deletions docs/js/pico.docs.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
*/

// Imports
import { aside } from './src/aside.js';
import { themeSwitcher } from './src/theme-switcher.js';
import { materialDesignColors } from './src/material-design-colors.js';
import { colorPicker } from './src/color-picker.js';
import { grid } from './src/grid.js';
import { scrollspy } from './src/scrollspy.js';
import aside from './src/aside.js';
import themeSwitcher from './src/theme-switcher.js';
import materialDesignColors from './src/material-design-colors.js';
import colorPicker from './src/color-picker.js';
import grid from './src/grid.js';
import scrollspy from './src/scrollspy.js';

// Aside initial state
aside.init();
Expand Down
2 changes: 1 addition & 1 deletion docs/js/pico.docs.min.js

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions docs/js/src/aside.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,5 @@ export const aside = {
}
}
}

export default aside;
2 changes: 2 additions & 0 deletions docs/js/src/color-picker.js
Original file line number Diff line number Diff line change
Expand Up @@ -170,3 +170,5 @@ export const colorPicker = {
throw new Error('Bad Hex');
}
}

export default colorPicker;
2 changes: 2 additions & 0 deletions docs/js/src/grid.js
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,5 @@ export const grid = {
}
}
};

export default grid;
2 changes: 2 additions & 0 deletions docs/js/src/material-design-colors.js
Original file line number Diff line number Diff line change
Expand Up @@ -299,3 +299,5 @@ export const materialDesignColors = {
inverse: "#FFF"
}
};

export default materialDesignColors;
149 changes: 149 additions & 0 deletions docs/js/src/most-visible.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
/**
* Most Visible v1.5.0
*
* @author Andy Palmer <andy@andypalmer.me>
* @license MIT
*/
(function (root, factory) {
// Universal Module Definition

/* jshint strict:false */

/* global define: false, module: false */
if (typeof define === 'function' && define.amd) {
define([], function () {
return factory(root);
});
} else if (typeof module === 'object' && module.exports) {
module.exports = factory(root);
} else {
root.mostVisible = factory(root);
}
})(typeof self !== 'undefined' ? self : this, function (window) {
/* jshint unused: vars */
'use strict';
/**
* MostVisible constructor
*
* @param {NodeList|string} elements
* @param {{}} options
* @constructor
*/

function MostVisible(elements, options) {
if (!(this instanceof MostVisible)) {
return new MostVisible(elements, options).getMostVisible();
}

if (typeof elements === 'string') {
elements = document.querySelectorAll(elements);
}

this.elements = elements;
this.options = extend({}, MostVisible.defaults, options);
}
/**
* MostVisible default options
*
* @namespace
* @property {{}} defaults Default options hash.
* @property {boolean} defaults.percentage Whether to calculate visibility as a percentage of height.
* @property {number} defaults.offset An offset to take into account when calculating visibility.
*/


MostVisible.defaults = {
percentage: false,
offset: 0
};
MostVisible.prototype = {
/**
* Returns the most visible element from the instance's NodeList.
*
* @returns {HTMLElement} Most visible element.
*/
getMostVisible: function () {
var _this = this;

var viewportHeight = document.documentElement.clientHeight;
return Array.prototype.reduce.call(this.elements, function (carry, element) {
var value = _this.getVisibleHeight(element, viewportHeight);

return value > carry[0] ? [value, element] : carry;
}, [0, null])[1];
},

/**
* Returns the visible height of an element.
*
* @param {HTMLElement} element Element to check the visibility of.
* @param {number} viewportHeight
* @returns {number} Visible height of the element in pixels or a percentage of the element's total height.
*/
getVisibleHeight: function (element, viewportHeight) {
var rect = element.getBoundingClientRect(),
rectTopOffset = rect.top - this.options.offset,
rectBottomOffset = rect.bottom - this.options.offset,
height = rect.bottom - rect.top,
visible = {
top: rectTopOffset >= 0 && rectTopOffset < viewportHeight,
bottom: rectBottomOffset > 0 && rectBottomOffset < viewportHeight
};
var visiblePx = 0;

if (visible.top && visible.bottom) {
// Whole element is visible
visiblePx = height;
} else if (visible.top) {
visiblePx = viewportHeight - rect.top;
} else if (visible.bottom) {
visiblePx = rectBottomOffset;
} else if (height > viewportHeight && rectTopOffset < 0) {
var absTop = Math.abs(rectTopOffset);

if (absTop < height) {
// Part of the element is visible
visiblePx = height - absTop;
}
}

if (this.options.percentage) {
return visiblePx / height * 100;
}

return visiblePx;
}
};

MostVisible.makeJQueryPlugin = function ($) {
if (!$) {
return;
}

$.fn.mostVisible = function (options) {
var instance = new MostVisible(this.get(), options);
return this.filter(instance.getMostVisible());
};
}; // Try adding the jQuery plugin to window.jQuery


MostVisible.makeJQueryPlugin(window.jQuery);
/**
* Extends obj by adding the properties of all other objects passed to the function.
*
* @param {...{}} obj
* @returns {{}} The extended object.
*/

function extend(obj) {
for (var i = 1; i < arguments.length; i++) {
for (var key in arguments[i]) {
obj[key] = arguments[i][key];
}
}

return obj;
}

return MostVisible;
});
8 changes: 8 additions & 0 deletions docs/js/src/scrollspy.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,14 @@
* Copyright 2019-2021 - Licensed under MIT
*/

import * as MostVisible from './most-visible.js';

export const scrollspy = {

mostVisible() {
new MostVisible()
},

// Config
minWidth: '992px',
interval: 75,
Expand Down Expand Up @@ -61,3 +67,5 @@ export const scrollspy = {
}.bind(this), false);
}
}

export default scrollspy;
2 changes: 2 additions & 0 deletions docs/js/src/theme-switcher.js
Original file line number Diff line number Diff line change
Expand Up @@ -110,3 +110,5 @@ export const themeSwitcher = {
}.bind(this));
}
}

export default themeSwitcher;
Loading

0 comments on commit 688a638

Please sign in to comment.