<commit_before>var gn = {};
gn.refresh_ms = 5000;

function template(row, dss) {
  row.find('.item_name').text(dss.Name);
  row.find('.item_date').text(dss.Create_date);
  row.find('.item_options').text(dss.Params);
  return row;
}

// Update the set of data sources in the table, filter out
// the ones that we already have based on DS name.
gn.updateDs = function() {
  var jqxhr = $.getJSON( "/json/", function() {
    // initial success on calling getJSON
  })
  .done(function() {
    gn.serverActive();
     data = jqxhr.responseJSON;
    $("#dscount").text(data.length);
    $.map(data, function(el) {
      // map all the data onto the HTML table
      // if el.Name already exists, just skip it
      if ($('span').filter(
        function (index) { return $(this).text() == el.Name; }
      ).length == 0)
        {
          var newRow = $('#cart .template').clone().removeClass('template');
          template(newRow, el)
          .prependTo('#cart')
          .fadeIn()

          // Add hover/click event listners to the table, because
          // I don't know jQuery well enough to solve this in a different
          // way (prependTo call looses those listners)
          .hover(function() {
            $(this).addClass('gnhover');
          }, function() {
            $(this).removeClass('gnhover');
          })
	  // on click, add a row underneath with the graph(s)
          .click(function() {
		console.log("asdfsafas"+ $(this));
		var tmp = $('#cart .templateds').clone().removeClass('templateds').addClass('timeseries');
		// empty text
		tmp.find('td').text('.');
		tmp.find('td:first').html(" Link"+$(this).find("td:first").text());
		tmp.insertAfter('#cart .gnhover').fadeIn();
	  });

        }
     });
  })
  .fail(function() {
    gn.serverInactive();
    console.log( "ERROR: Could not perform getJSON request. Server down?" );
  })
}

// functions to signal the status of connectivity to backend server
gn.serverActive = function() {
  $("#servercon").addClass('label-success');
  $("#servercon").removeClass('label-danger');
  $("#cart").removeClass('transparent');
}
gn.serverInactive = function() {
  $("#servercon").removeClass('label-success');
  $("#servercon").addClass('label-danger');
  $("#cart").addClass('transparent');
}

// Starting, Stopping and toggling our requests to the
// server.
gn.start = function() {
  if(!gn.timer) {
  gn.timer = setInterval(function() {gn.updateDs();}, gn.refresh_ms);
  $("#hideButton").text('Pauze')
  $("#hideButton").toggleClass('btn-danger');
  $("#hideButton").toggleClass('btn-success');
  }
}
gn.stop = function() {
  clearInterval(gn.timer);
  gn.timer = undefined;
  $("#hideButton").text('Activate')
  $("#hideButton").toggleClass('btn-danger');
  $("#hideButton").toggleClass('btn-success');
}
gn.toggle = function() {
  if (gn.timer === undefined) {
    gn.start();
  } else {
    gn.stop();
  }
}

var init = false;
$(document).ready(function() {
  if (!init){
    init = true;

    gn.start()
    $("#hideButton").click( function() {
      gn.toggle();
    });
    gn.updateDs()
  }
});
<commit_msg>jQuery-fied a few things (finally see what .end() does, nice!) formatting<commit_after>var gn = {};
gn.refresh_ms = 5000;

function template(row, dss) {
  row.find('.item_name').text(dss.Name);
  row.find('.item_date').text(dss.Create_date);
  row.find('.item_options').text(dss.Params);
  return row;
}

// Update the set of data sources in the table, filter out
// the ones that we already have based on DS name.
gn.updateDs = function() {
  var jqxhr = $.getJSON( "/json/", function() {
    // initial success on calling getJSON
  })
  .done(function() {
    gn.serverActive();
     data = jqxhr.responseJSON;
    $("#dscount").text(data.length);
    $.map(data, function(el) {
      // map all the data onto the HTML table
      // if el.Name already exists, just skip it
      if ($('span').filter(
        function (index) { return $(this).text() == el.Name; }
      ).length == 0)
        {
          var newRow = $('#cart .template').clone().removeClass('template');
          template(newRow, el)
          .prependTo('#cart')
          .fadeIn()

          // Add hover/click event listners to the table, because
          // I don't know jQuery well enough to solve this in a different
          // way (prependTo call looses those listners)
          .hover(function() {
            $(this).addClass('gnhover');
          }, function() {
            $(this).removeClass('gnhover');
          })
	  // on click, add a row underneath with the graph(s)
          .click(function() {
            // find any and all tr's with class timeseries and remove them (want to keep UI
            // simple for now and only have one open at a time
            $('#cart .timeseries').remove();

            // now copy a template and add that behind the row that was just clicked
            var tmp = $('#cart .templateds').clone()
              .removeClass('templateds')
              .addClass('timeseries');

            tmp.find('td:first')
              .html(" Link"+$(this).find("td:first").text())
              .end()
              .insertAfter('#cart .gnhover').fadeIn();
	  });

        }
     });
  })
  .fail(function() {
    gn.serverInactive();
    console.log( "ERROR: Could not perform getJSON request. Server down?" );
  })
}

// functions to signal the status of connectivity to backend server
gn.serverActive = function() {
  $("#servercon").addClass('label-success');
  $("#servercon").removeClass('label-danger');
  $("#cart").removeClass('transparent');
}
gn.serverInactive = function() {
  $("#servercon").removeClass('label-success');
  $("#servercon").addClass('label-danger');
  $("#cart").addClass('transparent');
}

// Starting, Stopping and toggling our requests to the
// server.
gn.start = function() {
  if(!gn.timer) {
  gn.timer = setInterval(function() {gn.updateDs();}, gn.refresh_ms);
  $("#hideButton").text('Pauze')
  $("#hideButton").toggleClass('btn-danger');
  $("#hideButton").toggleClass('btn-success');
  }
}
gn.stop = function() {
  clearInterval(gn.timer);
  gn.timer = undefined;
  $("#hideButton").text('Activate')
  $("#hideButton").toggleClass('btn-danger');
  $("#hideButton").toggleClass('btn-success');
}
gn.toggle = function() {
  if (gn.timer === undefined) {
    gn.start();
  } else {
    gn.stop();
  }
}

var init = false;
$(document).ready(function() {
  if (!init){
    init = true;

    gn.start()
    $("#hideButton").click( function() {
      gn.toggle();
    });
    gn.updateDs()
  }
});
<|endoftext|>


<commit_before>/*jshint -W117, -W097 */
'use strict';

Package.describe({
  name: 'velocity:core',
  summary: 'Velocity, a Meteor specific test-runner',
  version: '0.6.0-rc.6',
  git: 'https://github.com/meteor-velocity/velocity.git',
  debugOnly: true
});

Npm.depends({
  'lodash': '2.4.1',
  'mkdirp': '0.5.0',
  'fs-extra': '0.12.0',
  'freeport':'1.0.4',
  'mongodb-uri': '0.9.7',
  'colors': '1.0.3',
  'tmp': '0.0.25'
});

Package.on_use(function (api) {

  var SERVER = 'server',
      CLIENT = 'client',
      BOTH = [CLIENT, SERVER];

  api.versionsFrom('METEOR@1.0');
  api.use('mongo');
  api.use('check');
  api.use('velocity:chokidar@0.12.6_1', 'server');
  api.use('velocity:meteor-internals@1.1.0_5');
  api.use('sanjo:long-running-child-process@1.0.3', 'server');

  api.export('Velocity', BOTH);
  api.export('VelocityTestFiles', BOTH);
  api.export('VelocityFixtureFiles', BOTH);
  api.export('VelocityTestReports', BOTH);
  api.export('VelocityAggregateReports', BOTH);
  api.export('VelocityLogs', BOTH);
  api.export('VelocityMirrors', BOTH);
  api.export('VelocityOptions', BOTH);

  api.add_files('src/globals.js', BOTH);
  api.add_files('src/collections.js', BOTH);
  api.add_files('src/helpers.js', SERVER);
  api.add_files('src/core.js', SERVER);
  api.add_files('src/core-shared.js', BOTH);

  api.add_files('src/mirrors/Mirror.js', SERVER);
  api.add_files('src/mirrors/mirrorRegistrar.js', SERVER);

});
<commit_msg>Bump minimum Meteor version to METEOR@1.1.0.2<commit_after>/*jshint -W117, -W097 */
'use strict';

Package.describe({
  name: 'velocity:core',
  summary: 'Velocity, a Meteor specific test-runner',
  version: '0.6.0-rc.6',
  git: 'https://github.com/meteor-velocity/velocity.git',
  debugOnly: true
});

Npm.depends({
  'lodash': '2.4.1',
  'mkdirp': '0.5.0',
  'fs-extra': '0.12.0',
  'freeport':'1.0.4',
  'mongodb-uri': '0.9.7',
  'colors': '1.0.3',
  'tmp': '0.0.25'
});

Package.on_use(function (api) {

  var SERVER = 'server',
      CLIENT = 'client',
      BOTH = [CLIENT, SERVER];

  api.versionsFrom('METEOR@1.1.0.2');
  api.use('mongo');
  api.use('check');
  api.use('velocity:chokidar@0.12.6_1', 'server');
  api.use('velocity:meteor-internals@1.1.0_5');
  api.use('sanjo:long-running-child-process@1.0.3', 'server');

  api.export('Velocity', BOTH);
  api.export('VelocityTestFiles', BOTH);
  api.export('VelocityFixtureFiles', BOTH);
  api.export('VelocityTestReports', BOTH);
  api.export('VelocityAggregateReports', BOTH);
  api.export('VelocityLogs', BOTH);
  api.export('VelocityMirrors', BOTH);
  api.export('VelocityOptions', BOTH);

  api.add_files('src/globals.js', BOTH);
  api.add_files('src/collections.js', BOTH);
  api.add_files('src/helpers.js', SERVER);
  api.add_files('src/core.js', SERVER);
  api.add_files('src/core-shared.js', BOTH);

  api.add_files('src/mirrors/Mirror.js', SERVER);
  api.add_files('src/mirrors/mirrorRegistrar.js', SERVER);

});
<|endoftext|>


<commit_before>import React, { Component, Children, PropTypes } from 'react'
import { findDOMNode } from 'react-dom'
import Slide from '../slide'
import {
  animate,
  noop,
  on,
  onSwipe,
  onScrollEnd,
  onScrollStart,
  hasOngoingInteraction,
  values,
  includes,
  isWhollyInView
} from '../utils'
// const tap = (msg) => (thing) => { console.log(msg, thing); return thing }
const { bool, number, string, func, array, oneOfType, object, node } = PropTypes
const wrapAroundValue = (val, max) => ((val % max) + max) % max
const hardBoundedValue = (val, max) => Math.max(0, Math.min(max, val))
const normalizeIndex = (idx, len, wrap = false) => wrap ? wrapAroundValue(idx, len) : hardBoundedValue(idx, len - 1)
export default class Track extends Component {
  static propTypes = {
    afterSlide: func,
    animationDuration: number,
    beforeSlide: func,
    children: oneOfType([node, array, string]),
    className: oneOfType([array, string, object]),
    easing: func,
    infinite: bool,
    nextKeys: array,
    prevKeys: array,
    preventScroll: bool,
    preventSwipe: bool,
    onSlideClick: func,
    snapToSlide: bool,
    slideTo: number,
    slideToCenter: bool,
    slideBy: number,
    slideClass: oneOfType([array, string, object]),
    startAt: number,
    style: object,
    gutter: (props, propName, componentName) => {
      const prop = props[propName]
      if (
        typeof parseInt(prop, 10) === 'number' &&
        !isNaN(Number(prop))
      ) {
        return new Error(`Invalid value (${prop}) of prop '${propName}' supplied to ${componentName}.
        The value of ${propName} should be a valid css length unit
        (https://developer.mozilla.org/en-US/docs/Web/CSS/length).`)
      }
    },
    visibleSlides: number
  }

  static defaultProps = {
    afterSlide: () => {},
    animationDuration: 500,
    beforeSlide: () => {},
    gutter: '1em',
    nextKeys: ['ArrowRight'],
    prevKeys: ['ArrowLeft'],
    preventScroll: false,
    preventSwipe: false,
    snapToSlide: false,
    startAt: 0,
    style: {}
  }

  constructor (props) {
    super(props)

    this.state = {
      activeIndex: props.startAt,
      isAnimating: false,
      visibleSlides: this.props.visibleSlides || 0,
      slideBy: this.props.slideBy || this.props.visibleSlides || 0 }

    // We can't do arrow function properties for these since
    // we are passing them to the consuming component and we
    // require the proper context
    this.next = this.next.bind(this)
    this.prev = this.prev.bind(this)
    this.slideTo = this.slideTo.bind(this)
  }

  eventListeners = []
  isScrolling = false
  canSelfCorrect = () =>
    !this.state.isAnimating &&
    !this.isScrolling &&
    !this.isInteracting()

  shouldSelfCorrect = () => this.props.snapToSlide && this.canSelfCorrect()

  componentDidMount () {
    this.DOMNode = findDOMNode(this.track)
    this.isInteracting = hasOngoingInteraction(this.DOMNode)

    // These are not a part of component state since we don't want
    // incure the overhead of calling setState. They are either cached
    // values or state only the onScrollEnd callback cares about and
    // are not important to the rendering of the component.
    this.childCount = this.track.children.length

    const slideBy = {
      left: () => -this.state.slideBy,
      right: () => this.state.slideBy,
      up: () => 0,
      down: () => 0
    }

    this.eventListeners = [
      ...this.eventListeners,

      onScrollStart(() => { this.isScrolling = true }),

      on('touchstart')(() => { this.isScrolling = true })(this.track),

      onScrollEnd(() => {
        this.isScrolling = false
        if (this.canSelfCorrect()) {
          if (this.props.snapToSlide) {
            this.slideTo(this.getNearestSlideIndex()).catch(noop)
          } else {
            this.props.afterSlide(this.getNearestSlideIndex())
          }
        }
      }, { target: this.DOMNode }),

      on('touchend')(() => {
        if (this.canSelfCorrect()) {
          this.props.snapToSlide
          ? this.slideTo(this.getNearestSlideIndex()).catch(noop)
          : this.props.afterSlide(this.getNearestSlideIndex())
        }
      })(this.track),

      onSwipe((direction) => {
        if (!this.props.preventSwipe && this.props.snapToSlide) {
          this.slideTo(this.state.activeIndex + (slideBy[direction]())).catch(noop)
        }
      })(this.track)

    ]

    this.slideTo(this.props.startAt, { immediate: true }).catch(noop)
  }

  componentWillUnmount () { this.eventListeners.forEach((fn) => fn()) }

  componentWillReceiveProps ({ slideBy, visibleSlides, preventSwipe }) {
    if (slideBy !== this.props.slideBy || visibleSlides !== this.props.visibleSlides) {
      this.setState({ slideBy: slideBy || visibleSlides || 1 })
    }
  }

  componentDidUpdate (prevProps) {
    this.childCount = this.track.children.length

    if (this.shouldSelfCorrect()) {
      const nearestSlideIndex = this.getNearestSlideIndex()
      nearestSlideIndex !== this.state.activeIndex && this.slideTo(this.getNearestSlideIndex()).catch(noop)
    }

    if (prevProps.slideTo !== this.props.slideTo) {
      this.slideTo(this.props.slideTo).catch(noop)
    }
  }

  handleKeyUp = ((nextKeys, prevKeys) => ({ key }) => {
    const isNext = includes(key, nextKeys)
    const isPrev = includes(key, prevKeys)
    this.setState({ isAnimating: true })
    if (isNext) this.next().catch(noop)
    if (isPrev) this.prev().catch(noop)
    return false
  })(this.props.nextKeys, this.props.prevKeys);

  // isAnimating state is the only important state value to the rendering of this component
  shouldComponentUpdate (nextProps, { isAnimating }) {
    const propValues = [...values(this.props), this.state.isAnimating]
    const nextPropValues = [...values(nextProps), isAnimating]
    return !nextPropValues.every((val, i) => val === propValues[i])
  }

  getPartiallyObscuredSlides = () => {
    const { track } = this
    const findFirstObscuredChildIndex = [...track.children]
      .findIndex((child, i, children) => !isWhollyInView(track)(child) && isWhollyInView(track)(children[i + 1]))

    const firstObscuredChildIndex = Math.max(findFirstObscuredChildIndex, 0)

    const findLastObscuredChildIndex = [...track.children]
      .findIndex((child, i, children) => !isWhollyInView(track)(child) && isWhollyInView(track)(children[i - 1]))
    const lastObscuredChildIndex = Math.max(findLastObscuredChildIndex, 0) || track.children.length - 1

    return [firstObscuredChildIndex, lastObscuredChildIndex]
  }

  next () {
    const { childCount, props, state } = this
    const { activeIndex, slideBy } = state
    const { infinite } = props
    const firstIndex = 0
    const lastIndex = childCount - slideBy

    if (!slideBy) {
      const [_, nextSlide] = this.getPartiallyObscuredSlides()
      const nextInfinteSlide = (nextSlide === childCount - 1) ? 0 : nextSlide
      return this.slideTo(infinite ? nextInfinteSlide : nextSlide)
    }

    const nextActiveCandidate = activeIndex + slideBy
    const nextActive = Math.min(nextActiveCandidate, lastIndex)
    const nextActiveInfinite = (activeIndex === lastIndex) ? firstIndex : nextActive
    return this.slideTo(infinite ? nextActiveInfinite : nextActive)
  }

  prev () {
    const { childCount, state, props } = this
    const { activeIndex, slideBy } = state
    const { infinite } = props
    const firstIndex = 0
    const lastIndex = childCount - slideBy

    if (!slideBy) {
      const [prevSlide] = this.getPartiallyObscuredSlides()
      const prevInfinteSlide = (prevSlide === firstIndex) ? childCount - 1 : prevSlide
      return this.slideTo(infinite ? prevInfinteSlide : prevSlide)
    }

    const nextActive = Math.max(activeIndex - slideBy, firstIndex)
    const nextActiveInfinite = (nextActive === firstIndex) ? lastIndex : nextActive
    return this.slideTo(infinite ? nextActiveInfinite : nextActive)
  }

  slideTo (index, { immediate = false } = {}) {
    if (this.childCount === 0) return Promise.reject('No children to slide to')
    const { afterSlide, beforeSlide, easing, animationDuration: duration, infinite, preventScroll } = this.props
    const { children, scrollLeft } = this.track
    const slideIndex = normalizeIndex(index, this.childCount, infinite)
    const startingIndex = this.state.activeIndex
    if (startingIndex === slideIndex) return Promise.resolve(slideIndex)
    const delta = children[slideIndex].offsetLeft - scrollLeft
    beforeSlide(index)
    this.setState({ isAnimating: true, activeIndex: slideIndex })
    return (new Promise((res, rej) => {
      if (immediate) {
        this.track.scrollLeft = children[slideIndex].offsetLeft
        return res()
      } else {
        const originalOverflowX = preventScroll ? 'hidden' : 'auto'
        return res(animate(this.track, { prop: 'scrollLeft', delta, easing, duration, originalOverflowX }))
      }
    }))
    .then(() => {
      this.setState({ isAnimating: false })
      if (startingIndex !== slideIndex) {
        return afterSlide(slideIndex)
      }
    })
    .catch((err) => {
      this.setState({ isAnimating: false })
    })
  };

  getNearestSlideIndex = () => {
    const { children, scrollLeft } = this.track
    const offsets = [].slice.call(children).map(({ offsetLeft }) => Math.abs(offsetLeft - scrollLeft))
    return offsets.indexOf(Math.min(...offsets))
  };

  setRef = (name) => (ref) => { this[name] = ref }

  render () {
    const {
      afterSlide, // eslint-disable-line no-unused-vars
      animationDuration, // eslint-disable-line no-unused-vars
      beforeSlide, // eslint-disable-line no-unused-vars
      children,
      className,
      easing, // eslint-disable-line no-unused-vars
      infinite, // eslint-disable-line no-unused-vars
      gutter,
      nextKeys, // eslint-disable-line no-unused-vars
      prevKeys, // eslint-disable-line no-unused-vars
      preventScroll,
      preventSwipe, // eslint-disable-line no-unused-vars
      snapToSlide, // eslint-disable-line no-unused-vars
      onSlideClick,
      slideClass,
      slideTo, // eslint-disable-line no-unused-vars
      slideBy, // eslint-disable-line no-unused-vars
      startAt, // eslint-disable-line no-unused-vars
      style,
      visibleSlides,
      ...props
    } = this.props

    const { isAnimating } = this.state

    const preventScrolling = (preventScroll || isAnimating) ? 'hidden' : 'auto'
    const styles = {
      display: 'flex',
      flexFlow: 'row nowrap',
      justifyContent: 'space-between',
      overflowX: preventScrolling,
      msOverflowStyle: '-ms-autohiding-scrollbar', /* chrome like scrollbar experience for IE/Edge */
      position: 'relative', /* makes .track an offset parent */
      transition: 'all .25s ease-in-quint',
      outline: 'none',
      WebkitOverflowScrolling: 'touch'
    }

    return (
      <div
        className={className}
        style={{ ...style, ...styles }}
        ref={this.setRef('track')}
        tabIndex="0"
        onKeyUp={this.handleKeyUp}
        {...props}
      >
        {
          // We first pass the slide control functions to the function child.
          // this will return the `children` that will be the content of the individaul slides.
          // Then we wrap the slide content in a slide component to add the fucntionality we need
        }
        {Children.map(typeof children === 'function' ? children(this.next, this.prev) : children, (child, i) => (
          <Slide
            className={slideClass}
            key={`slide-${i}`}
            basis={visibleSlides ? `calc((100% - (${gutter} * ${visibleSlides - 1})) / ${visibleSlides})` : 'auto'}
            gutter={i > 0 ? gutter : ''}
            onClick={onSlideClick}
          >
            {child}
          </Slide>
        ))}
      </div>
    )
  }
}
<commit_msg>attempt to fix race condition bug<commit_after>import React, { Component, Children, PropTypes } from 'react'
import { findDOMNode } from 'react-dom'
import Slide from '../slide'
import {
  animate,
  noop,
  on,
  onSwipe,
  onScrollEnd,
  onScrollStart,
  hasOngoingInteraction,
  values,
  includes,
  isWhollyInView
} from '../utils'
// const tap = (msg) => (thing) => { console.log(msg, thing); return thing }
const { bool, number, string, func, array, oneOfType, object, node } = PropTypes
const wrapAroundValue = (val, max) => ((val % max) + max) % max
const hardBoundedValue = (val, max) => Math.max(0, Math.min(max, val))
const normalizeIndex = (idx, len, wrap = false) => wrap ? wrapAroundValue(idx, len) : hardBoundedValue(idx, len - 1)
export default class Track extends Component {
  static propTypes = {
    afterSlide: func,
    animationDuration: number,
    beforeSlide: func,
    children: oneOfType([node, array, string]),
    className: oneOfType([array, string, object]),
    easing: func,
    infinite: bool,
    nextKeys: array,
    prevKeys: array,
    preventScroll: bool,
    preventSwipe: bool,
    onSlideClick: func,
    snapToSlide: bool,
    slideTo: number,
    slideToCenter: bool,
    slideBy: number,
    slideClass: oneOfType([array, string, object]),
    startAt: number,
    style: object,
    gutter: (props, propName, componentName) => {
      const prop = props[propName]
      if (
        typeof parseInt(prop, 10) === 'number' &&
        !isNaN(Number(prop))
      ) {
        return new Error(`Invalid value (${prop}) of prop '${propName}' supplied to ${componentName}.
        The value of ${propName} should be a valid css length unit
        (https://developer.mozilla.org/en-US/docs/Web/CSS/length).`)
      }
    },
    visibleSlides: number
  }

  static defaultProps = {
    afterSlide: () => {},
    animationDuration: 500,
    beforeSlide: () => {},
    gutter: '1em',
    nextKeys: ['ArrowRight'],
    prevKeys: ['ArrowLeft'],
    preventScroll: false,
    preventSwipe: false,
    snapToSlide: false,
    startAt: 0,
    style: {}
  }

  constructor (props) {
    super(props)

    this.state = {
      activeIndex: props.startAt,
      isAnimating: false,
      visibleSlides: this.props.visibleSlides || 0,
      slideBy: this.props.slideBy || this.props.visibleSlides || 0 }

    // We can't do arrow function properties for these since
    // we are passing them to the consuming component and we
    // require the proper context
    this.next = this.next.bind(this)
    this.prev = this.prev.bind(this)
    this.slideTo = this.slideTo.bind(this)
  }

  eventListeners = []
  isScrolling = false
  canSelfCorrect = () =>
    !this.state.isAnimating &&
    !this.isScrolling &&
    !this.isInteracting()

  shouldSelfCorrect = () => this.props.snapToSlide && this.canSelfCorrect()

  componentDidMount () {
    this.DOMNode = findDOMNode(this.track)
    this.isInteracting = hasOngoingInteraction(this.DOMNode)

    // These are not a part of component state since we don't want
    // incure the overhead of calling setState. They are either cached
    // values or state only the onScrollEnd callback cares about and
    // are not important to the rendering of the component.
    this.childCount = this.track.children.length

    const slideBy = {
      left: () => -this.state.slideBy,
      right: () => this.state.slideBy,
      up: () => 0,
      down: () => 0
    }

    this.eventListeners = [
      ...this.eventListeners,

      onScrollStart(() => { this.isScrolling = true }),

      on('touchstart')(() => { this.isScrolling = true })(this.track),

      onScrollEnd(() => {
        this.isScrolling = false
        if (this.canSelfCorrect()) {
          if (this.props.snapToSlide) {
            this.slideTo(this.getNearestSlideIndex()).catch(noop)
          } else {
            this.props.afterSlide(this.getNearestSlideIndex())
          }
        }
      }, { target: this.DOMNode }),

      on('touchend')(() => {
        if (this.canSelfCorrect()) {
          this.props.snapToSlide
          ? this.slideTo(this.getNearestSlideIndex()).catch(noop)
          : this.props.afterSlide(this.getNearestSlideIndex())
        }
      })(this.track),

      onSwipe((direction) => {
        if (!this.props.preventSwipe && this.props.snapToSlide) {
          this.slideTo(this.state.activeIndex + (slideBy[direction]())).catch(noop)
        }
      })(this.track)

    ]

    this.slideTo(this.props.startAt, { immediate: true }).catch(noop)
  }

  componentWillUnmount () { this.eventListeners.forEach((fn) => fn()) }

  componentWillReceiveProps ({ slideBy, visibleSlides, preventSwipe }) {
    if (slideBy !== this.props.slideBy || visibleSlides !== this.props.visibleSlides) {
      this.setState({ slideBy: slideBy || visibleSlides || 1 })
    }
  }

  componentDidUpdate (prevProps) {
    this.childCount = this.track.children.length

    if (this.shouldSelfCorrect()) {
      const nearestSlideIndex = this.getNearestSlideIndex()
      nearestSlideIndex !== this.state.activeIndex && this.slideTo(this.getNearestSlideIndex()).catch(noop)
    }

    if (prevProps.slideTo !== this.props.slideTo) {
      this.slideTo(this.props.slideTo).catch(noop)
    }
  }

  handleKeyUp = ((nextKeys, prevKeys) => ({ key }) => {
    const isNext = includes(key, nextKeys)
    const isPrev = includes(key, prevKeys)
    this.setState({ isAnimating: true })
    if (isNext) this.next().catch(noop)
    if (isPrev) this.prev().catch(noop)
    return false
  })(this.props.nextKeys, this.props.prevKeys);

  // isAnimating state is the only important state value to the rendering of this component
  shouldComponentUpdate (nextProps, { isAnimating }) {
    const propValues = [...values(this.props), this.state.isAnimating]
    const nextPropValues = [...values(nextProps), isAnimating]
    return !nextPropValues.every((val, i) => val === propValues[i])
  }

  getPartiallyObscuredSlides = () => {
    const { track } = this
    const findFirstObscuredChildIndex = [...track.children]
      .findIndex((child, i, children) => !isWhollyInView(track)(child) && isWhollyInView(track)(children[i + 1]))

    const firstObscuredChildIndex = Math.max(findFirstObscuredChildIndex, 0)

    const findLastObscuredChildIndex = [...track.children]
      .findIndex((child, i, children) => !isWhollyInView(track)(child) && isWhollyInView(track)(children[i - 1]))
    const lastObscuredChildIndex = Math.max(findLastObscuredChildIndex, 0) || track.children.length - 1

    return [firstObscuredChildIndex, lastObscuredChildIndex]
  }

  next () {
    const { childCount, props, state } = this
    const { activeIndex, slideBy } = state
    const { infinite } = props
    const firstIndex = 0
    const lastIndex = childCount - slideBy

    if (!slideBy) {
      const [_, nextSlide] = this.getPartiallyObscuredSlides()
      const nextInfinteSlide = (nextSlide === childCount - 1) ? 0 : nextSlide
      return this.slideTo(infinite ? nextInfinteSlide : nextSlide)
    }

    const nextActiveCandidate = activeIndex + slideBy
    const nextActive = Math.min(nextActiveCandidate, lastIndex)
    const nextActiveInfinite = (activeIndex === lastIndex) ? firstIndex : nextActive
    return this.slideTo(infinite ? nextActiveInfinite : nextActive)
  }

  prev () {
    const { childCount, state, props } = this
    const { activeIndex, slideBy } = state
    const { infinite } = props
    const firstIndex = 0
    const lastIndex = childCount - slideBy

    if (!slideBy) {
      const [prevSlide] = this.getPartiallyObscuredSlides()
      const prevInfinteSlide = (prevSlide === firstIndex) ? childCount - 1 : prevSlide
      return this.slideTo(infinite ? prevInfinteSlide : prevSlide)
    }

    const nextActive = Math.max(activeIndex - slideBy, firstIndex)
    const nextActiveInfinite = (nextActive === firstIndex) ? lastIndex : nextActive
    return this.slideTo(infinite ? nextActiveInfinite : nextActive)
  }

  slideTo (index, { immediate = false } = {}) {
    if (this.childCount === 0) return Promise.reject('No children to slide to')
    const { afterSlide, beforeSlide, easing, animationDuration: duration, infinite, preventScroll } = this.props
    const { children, scrollLeft } = this.track
    const slideIndex = normalizeIndex(index, this.childCount, infinite)
    const startingIndex = this.state.activeIndex
    const delta = children[slideIndex].offsetLeft - scrollLeft
    if (!delta) return Promise.resolve(slideIndex)
    beforeSlide(index)
    this.setState({ isAnimating: true, activeIndex: slideIndex })
    return (new Promise((res, rej) => {
      if (immediate) {
        this.track.scrollLeft = children[slideIndex].offsetLeft
        return res()
      } else {
        const originalOverflowX = preventScroll ? 'hidden' : 'auto'
        return res(animate(this.track, { prop: 'scrollLeft', delta, easing, duration, originalOverflowX }))
      }
    }))
    .then(() => {
      this.setState({ isAnimating: false })
      if (startingIndex !== slideIndex) {
        return afterSlide(slideIndex)
      }
    })
    .catch((err) => {
      this.setState({ isAnimating: false })
    })
  };

  getNearestSlideIndex = () => {
    const { children, scrollLeft } = this.track
    const offsets = [].slice.call(children).map(({ offsetLeft }) => Math.abs(offsetLeft - scrollLeft))
    return offsets.indexOf(Math.min(...offsets))
  };

  setRef = (name) => (ref) => { this[name] = ref }

  render () {
    const {
      afterSlide, // eslint-disable-line no-unused-vars
      animationDuration, // eslint-disable-line no-unused-vars
      beforeSlide, // eslint-disable-line no-unused-vars
      children,
      className,
      easing, // eslint-disable-line no-unused-vars
      infinite, // eslint-disable-line no-unused-vars
      gutter,
      nextKeys, // eslint-disable-line no-unused-vars
      prevKeys, // eslint-disable-line no-unused-vars
      preventScroll,
      preventSwipe, // eslint-disable-line no-unused-vars
      snapToSlide, // eslint-disable-line no-unused-vars
      onSlideClick,
      slideClass,
      slideTo, // eslint-disable-line no-unused-vars
      slideBy, // eslint-disable-line no-unused-vars
      startAt, // eslint-disable-line no-unused-vars
      style,
      visibleSlides,
      ...props
    } = this.props

    const { isAnimating } = this.state

    const preventScrolling = (preventScroll || isAnimating) ? 'hidden' : 'auto'
    const styles = {
      display: 'flex',
      flexFlow: 'row nowrap',
      justifyContent: 'space-between',
      overflowX: preventScrolling,
      msOverflowStyle: '-ms-autohiding-scrollbar', /* chrome like scrollbar experience for IE/Edge */
      position: 'relative', /* makes .track an offset parent */
      transition: 'all .25s ease-in-quint',
      outline: 'none',
      WebkitOverflowScrolling: 'touch'
    }

    return (
      <div
        className={className}
        style={{ ...style, ...styles }}
        ref={this.setRef('track')}
        tabIndex="0"
        onKeyUp={this.handleKeyUp}
        {...props}
      >
        {
          // We first pass the slide control functions to the function child.
          // this will return the `children` that will be the content of the individaul slides.
          // Then we wrap the slide content in a slide component to add the fucntionality we need
        }
        {Children.map(typeof children === 'function' ? children(this.next, this.prev) : children, (child, i) => (
          <Slide
            className={slideClass}
            key={`slide-${i}`}
            basis={visibleSlides ? `calc((100% - (${gutter} * ${visibleSlides - 1})) / ${visibleSlides})` : 'auto'}
            gutter={i > 0 ? gutter : ''}
            onClick={onSlideClick}
          >
            {child}
          </Slide>
        ))}
      </div>
    )
  }
}
<|endoftext|>


<commit_before>Package.describe({
  name: 'aldeed:autoform-bs-datetimepicker',
  summary: 'Custom bootstrap-datetimepicker input type with timezone support for AutoForm',
  version: '1.0.5',
  git: 'https://github.com/aldeed/meteor-autoform-bs-datetimepicker.git'
});

Package.onUse(function(api) {
  api.use('templating@1.0.0');
  api.use('blaze@2.0.0');
  api.use('aldeed:autoform@4.0.0 || 5.0.0');
  api.addFiles([
    'autoform-bs-datetimepicker.html',
    'autoform-bs-datetimepicker.js'
  ], 'client');
});
<commit_msg>add weak dependencies on moment packages<commit_after>Package.describe({
  name: 'aldeed:autoform-bs-datetimepicker',
  summary: 'Custom bootstrap-datetimepicker input type with timezone support for AutoForm',
  version: '1.0.5',
  git: 'https://github.com/aldeed/meteor-autoform-bs-datetimepicker.git'
});

Package.onUse(function(api) {
  api.use('templating@1.0.0');
  api.use('blaze@2.0.0');
  api.use('aldeed:autoform@4.0.0 || 5.0.0');

  // Ensure momentjs packages load before this one if used
  api.use('momentjs:moment@2.8.4', 'client', {weak: true});
  api.use('mrt:moment-timezone@0.2.1', 'client', {weak: true});

  api.addFiles([
    'autoform-bs-datetimepicker.html',
    'autoform-bs-datetimepicker.js'
  ], 'client');
});
<|endoftext|>


<commit_before>Package.describe({
    name: 'cultofcoders:redis-oplog',
    version: '1.2.0',
    // Brief, one-line summary of the package.
    summary: 'Replacement for Meteor\'s MongoDB oplog implementation',
    // URL to the Git repository containing the source code for this package.
    git: 'https://github.com/cult-of-coders/redis-oplog',
    // By default, Meteor will default to using README.md for documentation.
    // To avoid submitting documentation, set this field to null.
    documentation: 'README.md'
});

Npm.depends({
    'sift': '3.2.7',
    'deep-diff': '0.3.4',
    'dot-object': '1.5.4',
    'redis': '2.7.1',
    'lodash.clonedeep': '4.5.0',
    'deep-extend': '0.4.1',
    'object-sizeof': '1.1.1'
});

Package.onUse(function (api) {
    api.versionsFrom('1.3');
    api.use([
        'underscore',
        'ecmascript',
        'ejson',
        'tmeasday:check-npm-versions@0.3.1',
        'dburles:mongo-collection-instances@0.3.5',
        'minimongo',
        'mongo',
        'random'
    ]);

    api.mainModule('redis-oplog.js', 'server');
});

Package.onTest(function (api) {
    api.use('cultofcoders:redis-oplog');
    api.use('aldeed:collection2@2.10.0');
    api.use('reywood:publish-composite@1.4.2');

    api.use('ecmascript');
    api.use('tracker');
    api.use('mongo');
    api.use('random');
    api.use('matb33:collection-hooks');

    api.use('practicalmeteor:mocha');
    api.use('practicalmeteor:chai');

    api.mainModule('testing/main.server.js', 'server');
    api.addFiles('testing/publishComposite/boot.js', 'server');
    api.addFiles('testing/optimistic-ui/boot.js', 'server');

    api.mainModule('testing/main.client.js', 'client');
});
<commit_msg>updated to 1.2.1-beta<commit_after>Package.describe({
    name: 'cultofcoders:redis-oplog',
    version: '1.2.1-beta',
    // Brief, one-line summary of the package.
    summary: 'Replacement for Meteor\'s MongoDB oplog implementation',
    // URL to the Git repository containing the source code for this package.
    git: 'https://github.com/cult-of-coders/redis-oplog',
    // By default, Meteor will default to using README.md for documentation.
    // To avoid submitting documentation, set this field to null.
    documentation: 'README.md'
});

Npm.depends({
    'sift': '3.2.7',
    'deep-diff': '0.3.4',
    'dot-object': '1.5.4',
    'redis': '2.7.1',
    'lodash.clonedeep': '4.5.0',
    'deep-extend': '0.4.1',
    'object-sizeof': '1.1.1'
});

Package.onUse(function (api) {
    api.versionsFrom('1.3');
    api.use([
        'underscore',
        'ecmascript',
        'ejson',
        'tmeasday:check-npm-versions@0.3.1',
        'dburles:mongo-collection-instances@0.3.5',
        'minimongo',
        'mongo',
        'random'
    ]);

    api.mainModule('redis-oplog.js', 'server');
});

Package.onTest(function (api) {
    api.use('cultofcoders:redis-oplog');
    api.use('aldeed:collection2@2.10.0');
    api.use('reywood:publish-composite@1.4.2');

    api.use('ecmascript');
    api.use('tracker');
    api.use('mongo');
    api.use('random');
    api.use('matb33:collection-hooks');

    api.use('practicalmeteor:mocha');
    api.use('practicalmeteor:chai');

    api.mainModule('testing/main.server.js', 'server');
    api.addFiles('testing/publishComposite/boot.js', 'server');
    api.addFiles('testing/optimistic-ui/boot.js', 'server');

    api.mainModule('testing/main.client.js', 'client');
});
<|endoftext|>


<commit_before>uv.config = {
	graph : {
		palette : 'Brink',
		bgcolor : '#FFFFFF',
		orientation : 'Horizontal',
		max : 0,
		custompalette : [],
		opacity : 1
	},

	meta : {
		position : '#uv-div',
		caption : '',
		subcaption : '',
		hlabel : '',
		vlabel : '',
		hsublabel : '',
		vsublabel : '',
		isDownloadable : false,
		downloadLabel : 'Download'
	},

	dimension : {
		width : 400,
		height : 400
	},

	margin : {
		top : 50,
		bottom : 150,
		left : 100,
		right : 100
	},

	frame : {
		bgcolor : '#FFFFFF'
	},

	axis : {
		ticks : 8,
		subticks : 2,
		padding : 5,
		minor : -10,
		strokecolor : '#000000',
		fontfamily : 'Arial',
		fontsize : '14',
		fontweight : 'bold',
		showticks : true,
		showsubticks : true,
		showtext : true
	},

	label : {
		fontfamily : 'Arial',
		fontsize : '11',
		fontweight : 'normal',
		strokecolor : '#000000',
		showlabel : true,
		precision : 2,
		prefix : '',
		suffix : ''
	},

	tooltip : {
		show : true,
		format : '%c [%l] : %v'
	},

	scale : {
		type : 'linear',
		ordinality : 0.2
	},

	bar : {
		strokecolor : 'none',
		fontfamily : 'Arial',
		fontsize : '10',
		fontweight : 'bold',
		textcolor : '#000'
	},

	line : {
		interpolation : 'linear'
	},

	area : {
		interpolation : 'cardinal',
		offset : 'zero',
		opacity : 0.2
	},

	pie : {
		fontfamily : 'Arial',
		fontsize : '14',
		fontweight : 'normal',
		fontvariant : 'small-caps',
		fontfill : '#FFFFFF',
		strokecolor : 'none',
		strokewidth : 2
	},

	donut : {
		fontfamily : 'Arial',
		fontsize : '14',
		fontweight : 'normal',
		fontvariant : 'small-caps',
		fontfill : '#FFFFF',
		factor : 0.4,
		strokecolor : 'none',
		strokewidth : 2
	},

	caption : {
		fontfamily : 'Arial',
		fontsize : '14',
		fontweight : 'bold',
		fontvariant : 'small-caps',
		textdecoration : 'none',
		hovercolor : '#696969',
		strokecolor : '#0000FF',
		textanchor : 'middle',
		cursor : 'pointer'
	},

	subCaption : {
		fontfamily : 'Arial',
		fontsize : '9',
		fontweight : 'normal',
		fontvariant : 'normal',
		textdecoration : 'none',
		textanchor : 'middle'
	},

	legend : {
		position : 'bottom',
		fontfamily : 'Arial',
		fontsize : '11',
		fontweight : 'normal',
		textmargin : 15,
		symbolsize : 10,
		inactivecolor : '#DDD',
		legendstart : 0,
		legendtype : 'categories',
		showlegends: true,
	},

	effects : {
		hovercolor : '#FF0000',
		strokecolor : 'none',
		textcolor : '#000000',
		duration : 800,
		hover : 400,
		showhovertext : false
	}
};<commit_msg>Added strokecolor and width for pie and donut as default in config.js<commit_after>uv.config = {
	graph : {
		palette : 'Brink',
		bgcolor : '#FFFFFF',
		orientation : 'Horizontal',
		max : 0,
		custompalette : [],
		opacity : 1
	},

	meta : {
		position : '#uv-div',
		caption : '',
		subcaption : '',
		hlabel : '',
		vlabel : '',
		hsublabel : '',
		vsublabel : '',
		isDownloadable : false,
		downloadLabel : 'Download'
	},

	dimension : {
		width : 400,
		height : 400
	},

	margin : {
		top : 50,
		bottom : 150,
		left : 100,
		right : 100
	},

	frame : {
		bgcolor : '#FFFFFF'
	},

	axis : {
		ticks : 8,
		subticks : 2,
		padding : 5,
		minor : -10,
		strokecolor : '#000000',
		fontfamily : 'Arial',
		fontsize : '14',
		fontweight : 'bold',
		showticks : true,
		showsubticks : true,
		showtext : true
	},

	label : {
		fontfamily : 'Arial',
		fontsize : '11',
		fontweight : 'normal',
		strokecolor : '#000000',
		showlabel : true,
		precision : 2,
		prefix : '',
		suffix : ''
	},

	tooltip : {
		show : true,
		format : '%c [%l] : %v'
	},

	scale : {
		type : 'linear',
		ordinality : 0.2
	},

	bar : {
		strokecolor : 'none',
		fontfamily : 'Arial',
		fontsize : '10',
		fontweight : 'bold',
		textcolor : '#000'
	},

	line : {
		interpolation : 'linear'
	},

	area : {
		interpolation : 'cardinal',
		offset : 'zero',
		opacity : 0.2
	},

	pie : {
		fontfamily : 'Arial',
		fontsize : '14',
		fontweight : 'normal',
		fontvariant : 'small-caps',
		fontfill : '#FFFFFF',
		strokecolor : '#FFFFFF',
		strokewidth : 1
	},

	donut : {
		fontfamily : 'Arial',
		fontsize : '14',
		fontweight : 'normal',
		fontvariant : 'small-caps',
		fontfill : '#000',
		factor : 0.4,
		strokecolor : '#FFFFFF',
		strokewidth : 1
	},

	caption : {
		fontfamily : 'Arial',
		fontsize : '14',
		fontweight : 'bold',
		fontvariant : 'small-caps',
		textdecoration : 'none',
		hovercolor : '#696969',
		strokecolor : '#0000FF',
		textanchor : 'middle',
		cursor : 'pointer'
	},

	subCaption : {
		fontfamily : 'Arial',
		fontsize : '9',
		fontweight : 'normal',
		fontvariant : 'normal',
		textdecoration : 'none',
		textanchor : 'middle'
	},

	legend : {
		position : 'bottom',
		fontfamily : 'Arial',
		fontsize : '11',
		fontweight : 'normal',
		textmargin : 15,
		symbolsize : 10,
		inactivecolor : '#DDD',
		legendstart : 0,
		legendtype : 'categories',
		showlegends: true,
	},

	effects : {
		hovercolor : '#FF0000',
		strokecolor : 'none',
		textcolor : '#000000',
		duration : 800,
		hover : 400,
		showhovertext : false
	}
};<|endoftext|>


<commit_before>---
---
/**
 * @name  {{ site.name }}
 * @description  {{ site.description }}
 * @author  {{ site.author }} <{{ site.author_email }}> ({{ site.url }})
 * @version  {{ site.version }}
 * @copyright  {{ site.author }} 2017
 * @license  {{ site.license }}
 */

/* globals AADecode, JJdecode, Urlencoded, P_A_C_K_E_R, JavascriptObfuscator, MyObfuscate */
/* eslint-disable no-console */

self.addEventListener('message', function (e) {
    var source = e.data.source,
        packer = e.data.packer;

    if (packer === 'evalencode') {
        self._eval = self.eval;
        self.eval = function (_evalsource) {
            source = _evalsource;
        };
        try {
            self._eval(source);
        } catch (err) {
            console.log(err);
        }
        self.eval = self._eval;
    } else if (packer === '_numberencode') {
        try {
            var patt = /_\d{4}\((_\d{4})\);\}/,
                _numbersource = source;

            if (patt.test(_numbersource)) {
                _numbersource = _numbersource.replace(/var\s/g, 'this.');
                _numbersource = _numbersource.replace(/function\s(_\d{4})\(/, 'this.$1=function(');
                _numbersource = _numbersource.replace(patt, 'self.sourceNumberEncodeZz=$1;};');

                _numbersource = '(function(){' + _numbersource + '})();';
                eval(_numbersource);

                source = self.sourceNumberEncodeZz;
            }
        } catch (err) {
            console.log(err);
        }
    } else if (packer === 'arrayencode') {
        try {
            var pattarr = /[\s\n]*var\s+([\w\d_$]+)\s*=\s*\[.*?\];/,
                _var = source.match(pattarr);

            if (_var && _var.length === 2) {
                var _name = _var[1],
                    _code = source.replace(pattarr, ''),

                    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping
                    quote = function (s, q) {
                        return s.replace(new RegExp('[\\n*+?^${}()|[\\]\\\\' + q + ']', 'g'), '\\$&');
                    },

                    pattkey = new RegExp(_name.replace(/\$/g, '\\$') + '\\[(\\d+)\\]', 'g');

                _var = _var[0].replace(/[\s\S]*?\[/, '[');
                _var = eval(_var);

                _code = _code.split(';');
                _code = _code.map(function (piece) {
                    piece.replace(pattkey, function (key, index) {
                        var item = _var[index],
                            q = item.indexOf('"') !== -1 ? "'" : '"';

                        piece = piece.replace(key, q + quote(item, q) + q);

                        return piece;
                    });

                    return piece;
                });
                _code = _code.join(';');

                _code = _code.replace(/(\[("|')((?!\d)[a-z_\d$]+)("|')\])/gi, '.$3 ');
                source = _code;
            }
        } catch (err) {
            console.log(err);
        }
    } else if (packer === 'jsfuck') {
        try {
            var pattfuck = /\)(\(\)[\s\n]*)$/,
                pattanon = /^[\s\n]*function\sanonymous\([\s\n]+\)\s\{[\s\n]+/,
                _fucksource = source;
            if (pattfuck.test(source)) _fucksource = _fucksource.replace(pattfuck, ')');
            _fucksource = eval(_fucksource + '.toString()');

            if (pattanon.test(_fucksource)) {
                _fucksource = _fucksource.replace(pattanon, '');
                _fucksource = _fucksource.replace(/[\s\n]+\}[\s\n]*$/, '');
            }

            source = _fucksource;
        } catch (err) {
            console.log(err);
        }
    } else if (packer === 'aaencode') {
        try {
            self.importScripts('{{ "/assets/js/lib/cat-in-136/aadecode.js" | relative_url }}');

            source = AADecode.decode(source);
        } catch (err) {
            console.log(err);
        }
    } else if (packer === 'jjencode') {
        try {
            self.importScripts('{{ "/assets/js/lib/decoder-jjencode/jjdecode.js" | relative_url }}');

            source = JJdecode.decode(source);
        } catch (err) {
            console.log(err);
        }
    } else if (packer === 'urlencode') {
        try {
            self.importScripts('{{ "/assets/js/lib/js-beautify/unpackers/urlencode_unpacker.js" | relative_url }}');

            if (Urlencoded.detect(source)) source = Urlencoded.unpack(source);
        } catch (err) {
            console.log(err);
        }
    } else if (packer === 'p_a_c_k_e_r') {
        try {
            self.importScripts('{{ "/assets/js/lib/js-beautify/unpackers/p_a_c_k_e_r_unpacker.js" | relative_url }}');

            if (P_A_C_K_E_R.detect(source)) source = P_A_C_K_E_R.unpack(source);
        } catch (err) {
            console.log(err);
        }
    } else if (packer === 'javascriptobfuscator') {
        try {
            self.importScripts('{{ "/assets/js/lib/js-beautify/unpackers/javascriptobfuscator_unpacker.js" | relative_url }}');

            if (JavascriptObfuscator.detect(source)) source = JavascriptObfuscator.unpack(source);
        } catch (err) {
            console.log(err);
        }
    } else if (packer === 'myobfuscate') {
        try {
            self.importScripts('{{ "/assets/js/lib/js-beautify/unpackers/myobfuscate_unpacker.js" | relative_url }}');

            if (MyObfuscate.detect(source)) source = MyObfuscate.unpack(source);
        } catch (err) {
            console.log(err);
        }
    }

    self.postMessage(source);
});
<commit_msg>Refactor decode methods<commit_after>---
---
/**
 * @name  {{ site.name }}
 * @description  {{ site.description }}
 * @author  {{ site.author }} <{{ site.author_email }}> ({{ site.url }})
 * @version  {{ site.version }}
 * @copyright  {{ site.author }} 2017
 * @license  {{ site.license }}
 */

/* globals AADecode, JJdecode, Urlencoded, P_A_C_K_E_R, JavascriptObfuscator, MyObfuscate */
/* eslint-disable no-console */

self.addEventListener('message', function (e) {
    var source = e.data.source,
        packer = e.data.packer;

    var methods = {
        evalencode: function () {
            self._eval = self.eval;
            self.eval = function (_evalsource) {
                return _evalsource;
            };
            setTimeout(function () {
                self.eval = self._eval;
            }, 0);
            return self._eval(source);
        },
        _numberencode: function () {
            var patt = /_\d{4}\((_\d{4})\);\}/,
                _numbersource = source;

            if (!patt.test(_numbersource)) throw 'Not matched';

            _numbersource = _numbersource.replace(/var\s/g, 'this.');
            _numbersource = _numbersource.replace(/function\s(_\d{4})\(/, 'this.$1=function(');
            _numbersource = _numbersource.replace(patt, 'self.sourceNumberEncodeZz=$1;};');

            _numbersource = '(function(){' + _numbersource + '})();';
            eval(_numbersource);

            return self.sourceNumberEncodeZz;
        },
        arrayencode: function () {
            var pattarr = /[\s\n]*var\s+([\w\d_$]+)\s*=\s*\[.*?\];/,
                _var = source.match(pattarr);

            if (!_var || _var.length !== 2) throw 'Not matched';

            var _name = _var[1],
                _code = source.replace(pattarr, ''),

                quote = function (s, q) {
                    return s.replace(new RegExp('[\\n*+?^${}()|[\\]\\\\' + q + ']', 'g'), '\\$&');
                },

                pattkey = new RegExp(_name.replace(/\$/g, '\\$') + '\\[(\\d+)\\]', 'g');

            _var = _var[0].replace(/[\s\S]*?\[/, '[');
            _var = eval(_var);

            _code = _code.split(';');
            _code = _code.map(function (piece) {
                piece.replace(pattkey, function (key, index) {
                    var item = _var[index],
                        q = item.indexOf('"') !== -1 ? "'" : '"';

                    piece = piece.replace(key, q + quote(item, q) + q);

                    return piece;
                });

                return piece;
            });
            _code = _code.join(';');

            _code = _code.replace(/(\[("|')((?!\d)[a-z_\d$]+)("|')\])/gi, '.$3 ');

            return _code;
        },
        jsfuck: function () {
            var pattfuck = /\)(\(\)[\s\n]*)$/,
                pattanon = /^[\s\n]*function\sanonymous\([\s\n]+\)\s\{[\s\n]+/,
                _fucksource = source;

            if (pattfuck.test(source)) _fucksource = _fucksource.replace(pattfuck, ')');
            _fucksource = eval(_fucksource + '.toString()');

            if (pattanon.test(_fucksource)) {
                _fucksource = _fucksource.replace(pattanon, '');
                _fucksource = _fucksource.replace(/[\s\n]+\}[\s\n]*$/, '');
            }

            return _fucksource;
        },
        aaencode: function () {
            self.importScripts('{{ "/assets/js/lib/cat-in-136/aadecode.js" | relative_url }}');
            return AADecode.decode(source);
        },
        jjencode: function () {
            self.importScripts('{{ "/assets/js/lib/decoder-jjencode/jjdecode.js" | relative_url }}');
            return JJdecode.decode(source);
        },
        urlencode: function () {
            self.importScripts('{{ "/assets/js/lib/js-beautify/unpackers/urlencode_unpacker.js" | relative_url }}');
            if (Urlencoded.detect(source)) return Urlencoded.unpack(source);
            throw 'Not matched';
        },
        p_a_c_k_e_r: function () {
            self.importScripts('{{ "/assets/js/lib/js-beautify/unpackers/p_a_c_k_e_r_unpacker.js" | relative_url }}');
            if (P_A_C_K_E_R.detect(source)) return P_A_C_K_E_R.unpack(source);
            throw 'Not matched';
        },
        javascriptobfuscator: function () {
            self.importScripts('{{ "/assets/js/lib/js-beautify/unpackers/javascriptobfuscator_unpacker.js" | relative_url }}');
            if (JavascriptObfuscator.detect(source)) return JavascriptObfuscator.unpack(source);
            throw 'Not matched';
        },
        myobfuscate: function () {
            self.importScripts('{{ "/assets/js/lib/js-beautify/unpackers/myobfuscate_unpacker.js" | relative_url }}');
            if (MyObfuscate.detect(source)) return MyObfuscate.unpack(source);
            throw 'Not matched';
        }
    };

    try {
        source = methods[packer]();
    } catch (err) {
        console.log(err);
    }

    self.postMessage(source);
});
<|endoftext|>


<commit_before>Package.describe({
  name: 'mcrider:azimuth-core',
  summary: 'Azimuth CMS core code',
  version: '0.3.20',
  git: 'https://github.com/mcrider/azimuth-core/ '
});

Package.on_use(function (api) {
  // Include some core meteor smart packages
  api.use([ 'service-configuration', 'accounts-ui', 'accounts-base', 'accounts-password', 'underscore', 'jquery',
    'less', 'spiderable', 'standard-app-packages'], 'client');

  // Use the meteorite smart packages specified in smart.json
  api.use(['alanning:roles@1.2.13', 'iron:router@1.0.1', 'multiply:iron-router-progress', 'mrt:numeral', 'cfs:standard-packages', 'cfs:filesystem'], 'client');

  // And ensure we have the packages we need server-side available to the server
  api.use(['accounts-base', 'accounts-password', 'spiderable', 'alanning:roles@1.2.13', 'cfs:standard-packages', 'cfs:filesystem'], 'server');

  api.addFiles('server/server_init.js', 'server');

  api.add_files('client/collections.js', 'client');
  api.add_files('client/metadata_fields.js', 'client');
  api.add_files('client/lib/vendor/jquery.nestable.js', 'client');
  api.add_files('client/lib/vendor/noty/jquery.noty.js', 'client');
  api.add_files('client/lib/vendor/noty/layouts/inline.js', 'client');
  api.add_files('client/lib/vendor/noty/layouts/bottomRight.js', 'client');
  api.add_files('client/lib/vendor/noty/themes/default.js', 'client');
  api.add_files('client/css/vendor/jquery.cleditor.css', 'client');
  api.add_files('client/lib/vendor/jquery.cleditor.js', 'client');
  api.add_files('client/lib/vendor/jquery.cleditor.image.js', 'client');
  api.add_files('client/lib/vendor/jquery.cleditor.file.js', 'client');
  api.add_files('client/lib/vendor/jquery.selectize.js', 'client');
  api.add_files('client/css/vendor/selectize.css', 'client');
  api.add_files('client/css/vendor/selectize.default.css', 'client');
  api.add_files('client/lib/helpers.js', 'client');
  api.add_files('client/lib/registry.js', 'client');
  api.add_files('client/lib/utils.js', 'client');
  api.add_files('client/lib/admin_panel.js', 'client');
  api.add_files('client/router.js', 'client');
  api.add_files('client/css/vendor/nestable.css', 'client');
  api.add_files('client/css/main.less', 'client');
  api.add_files('client/css/admin_panel.less', 'client');
  api.add_files('client/css/fonts/dripicons/dripicons.eot', 'client');
  api.add_files('client/css/fonts/dripicons/dripicons.svg', 'client');
  api.add_files('client/css/fonts/dripicons/dripicons.ttf', 'client');
  api.add_files('client/css/fonts/dripicons/dripicons.woff', 'client');
  api.add_files('client/css/dripicons.css', 'client');
  api.add_files('client/css/fonts/raleway/raleway-regular.eot', 'client');
  api.add_files('client/css/fonts/raleway/raleway-regular.svg', 'client');
  api.add_files('client/css/fonts/raleway/raleway-regular.ttf', 'client');
  api.add_files('client/css/fonts/raleway/raleway-regular.woff', 'client');
  api.add_files('client/css/fonts/raleway/raleway-bold.eot', 'client');
  api.add_files('client/css/fonts/raleway/raleway-bold.svg', 'client');
  api.add_files('client/css/fonts/raleway/raleway-bold.ttf', 'client');
  api.add_files('client/css/fonts/raleway/raleway-bold.woff', 'client');
  api.add_files('client/blocks/four_column/four_column.js', 'client');
  api.add_files('client/blocks/six_column/six_column.js', 'client');
  api.add_files('client/blocks/three_column/three_column.js', 'client');
  api.add_files('client/blocks/twelve_column/twelve_column.js', 'client');
  api.add_files('client/blocks/two_column/two_column.js', 'client');
  api.add_files('client/pages/home_page/home_page.js', 'client');
  api.add_files('client/pages/page_default/page_default.js', 'client');
  api.add_files('client/pages/sidebar_left/sidebar_left.js', 'client');
  api.add_files('client/pages/sidebar_right/sidebar_right.js', 'client');
  api.add_files('client/views/accounts/account_buttons.js', 'client');
  api.add_files('client/views/accounts/error.js', 'client');
  api.add_files('client/views/accounts/forgot_password.js', 'client');
  api.add_files('client/views/accounts/login.js', 'client');
  api.add_files('client/views/accounts/sign_up.js', 'client');
  api.add_files('client/views/accounts/social.js', 'client');
  api.add_files('client/views/admin/admin_users.html', 'client');
  api.add_files('client/views/admin/admin_users.js', 'client');
  api.add_files('client/views/admin/navigation.html', 'client');
  api.add_files('client/views/admin/navigation.js', 'client');
  api.add_files('client/views/admin/site_settings.html', 'client');
  api.add_files('client/views/admin/site_settings.js', 'client');
  api.add_files('client/views/admin/pages/page_settings.html', 'client');
  api.add_files('client/views/admin/pages/page_settings.js', 'client');
  api.add_files('client/views/admin/pages/new_page.html', 'client');
  api.add_files('client/views/admin/pages/new_page.js', 'client');
  api.add_files('client/views/admin/pages/page_template_selector.html', 'client');
  api.add_files('client/views/admin/pages/page_template_selector.js', 'client');
  api.add_files('client/views/admin/assets.html', 'client');
  api.add_files('client/views/admin/assets.js', 'client');
  api.add_files('client/views/admin/admin_panel.html', 'client');
  api.add_files('client/views/admin/admin_panel.js', 'client');
  api.add_files('client/views/admin/blocks/block_edit.html', 'client');
  api.add_files('client/views/admin/blocks/block_edit.js', 'client');
  api.add_files('client/views/admin/blocks/block_tag_edit.html', 'client');
  api.add_files('client/views/admin/blocks/block_tag_edit.js', 'client');
  api.add_files('client/views/admin/blocks/block_type_edit.html', 'client');
  api.add_files('client/views/admin/blocks/block_type_edit.js', 'client');
  api.add_files('client/views/admin/blocks/block_zone_edit.html', 'client');
  api.add_files('client/views/admin/blocks/block_zone_edit.js', 'client');
  api.add_files('client/views/block_set.html', 'client');
  api.add_files('client/views/block_set.js', 'client');
  api.add_files('client/views/block_display.js', 'client');
  api.add_files('client/views/footer.js', 'client');
  api.add_files('client/views/form/wysiwyg.html', 'client');
  api.add_files('client/views/form/wysiwyg.js', 'client');
  api.add_files('client/views/form/tag.html', 'client');
  api.add_files('client/views/form/tag.js', 'client');
  api.add_files('client/views/form/metadata.html', 'client');
  api.add_files('client/views/form/metadata.js', 'client');
  api.add_files('client/views/form/text.html', 'client');
  api.add_files('client/views/form/textarea.html', 'client');
  api.add_files('client/views/header.js', 'client');
  api.add_files('client/views/layout.js', 'client');
  api.add_files('client/index.html', 'client');
  api.add_files('img/azimuth-logo.png', 'client');
  api.add_files('img/buttons.png', 'client');
  api.add_files('img/toolbar.gif', 'client');
  api.add_files('img/file.gif', 'client');
  api.add_files('img/image.gif', 'client');
  api.add_files('img/file-large.png', 'client');

});<commit_msg>Specified package versions<commit_after>Package.describe({
  name: 'mcrider:azimuth-core',
  summary: 'Azimuth CMS core code',
  version: '0.3.20',
  git: 'https://github.com/mcrider/azimuth-core/ '
});

Package.on_use(function (api) {
  // Include some core meteor smart packages
  api.use([ 'service-configuration@1.0.2', 'accounts-ui@1.1.2', 'accounts-base@1.1.2', 'accounts-password@1.0.4', 'underscore@1.0.1', 'jquery@1.0.1',
    'less@1.0.11', 'spiderable@1.0.5', 'standard-app-packages@1.0.3'], 'client');

  // Use the meteorite smart packages specified in smart.json
  api.use(['alanning:roles@1.2.13', 'iron:router@1.0.1', 'multiply:iron-router-progress@1.0.0', 'mrt:numeral@0.0.1', 'cfs:standard-packages@0.0.2', 'cfs:filesystem@0.0.0'], 'client');

  // And ensure we have the packages we need server-side available to the server
  api.use(['accounts-base', 'accounts-password', 'spiderable', 'alanning:roles@1.2.13', 'cfs:standard-packages', 'cfs:filesystem'], 'server');

  api.addFiles('server/server_init.js', 'server');

  api.add_files('client/collections.js', 'client');
  api.add_files('client/metadata_fields.js', 'client');
  api.add_files('client/lib/vendor/jquery.nestable.js', 'client');
  api.add_files('client/lib/vendor/noty/jquery.noty.js', 'client');
  api.add_files('client/lib/vendor/noty/layouts/inline.js', 'client');
  api.add_files('client/lib/vendor/noty/layouts/bottomRight.js', 'client');
  api.add_files('client/lib/vendor/noty/themes/default.js', 'client');
  api.add_files('client/css/vendor/jquery.cleditor.css', 'client');
  api.add_files('client/lib/vendor/jquery.cleditor.js', 'client');
  api.add_files('client/lib/vendor/jquery.cleditor.image.js', 'client');
  api.add_files('client/lib/vendor/jquery.cleditor.file.js', 'client');
  api.add_files('client/lib/vendor/jquery.selectize.js', 'client');
  api.add_files('client/css/vendor/selectize.css', 'client');
  api.add_files('client/css/vendor/selectize.default.css', 'client');
  api.add_files('client/lib/helpers.js', 'client');
  api.add_files('client/lib/registry.js', 'client');
  api.add_files('client/lib/utils.js', 'client');
  api.add_files('client/lib/admin_panel.js', 'client');
  api.add_files('client/router.js', 'client');
  api.add_files('client/css/vendor/nestable.css', 'client');
  api.add_files('client/css/main.less', 'client');
  api.add_files('client/css/admin_panel.less', 'client');
  api.add_files('client/css/fonts/dripicons/dripicons.eot', 'client');
  api.add_files('client/css/fonts/dripicons/dripicons.svg', 'client');
  api.add_files('client/css/fonts/dripicons/dripicons.ttf', 'client');
  api.add_files('client/css/fonts/dripicons/dripicons.woff', 'client');
  api.add_files('client/css/dripicons.css', 'client');
  api.add_files('client/css/fonts/raleway/raleway-regular.eot', 'client');
  api.add_files('client/css/fonts/raleway/raleway-regular.svg', 'client');
  api.add_files('client/css/fonts/raleway/raleway-regular.ttf', 'client');
  api.add_files('client/css/fonts/raleway/raleway-regular.woff', 'client');
  api.add_files('client/css/fonts/raleway/raleway-bold.eot', 'client');
  api.add_files('client/css/fonts/raleway/raleway-bold.svg', 'client');
  api.add_files('client/css/fonts/raleway/raleway-bold.ttf', 'client');
  api.add_files('client/css/fonts/raleway/raleway-bold.woff', 'client');
  api.add_files('client/blocks/four_column/four_column.js', 'client');
  api.add_files('client/blocks/six_column/six_column.js', 'client');
  api.add_files('client/blocks/three_column/three_column.js', 'client');
  api.add_files('client/blocks/twelve_column/twelve_column.js', 'client');
  api.add_files('client/blocks/two_column/two_column.js', 'client');
  api.add_files('client/pages/home_page/home_page.js', 'client');
  api.add_files('client/pages/page_default/page_default.js', 'client');
  api.add_files('client/pages/sidebar_left/sidebar_left.js', 'client');
  api.add_files('client/pages/sidebar_right/sidebar_right.js', 'client');
  api.add_files('client/views/accounts/account_buttons.js', 'client');
  api.add_files('client/views/accounts/error.js', 'client');
  api.add_files('client/views/accounts/forgot_password.js', 'client');
  api.add_files('client/views/accounts/login.js', 'client');
  api.add_files('client/views/accounts/sign_up.js', 'client');
  api.add_files('client/views/accounts/social.js', 'client');
  api.add_files('client/views/admin/admin_users.html', 'client');
  api.add_files('client/views/admin/admin_users.js', 'client');
  api.add_files('client/views/admin/navigation.html', 'client');
  api.add_files('client/views/admin/navigation.js', 'client');
  api.add_files('client/views/admin/site_settings.html', 'client');
  api.add_files('client/views/admin/site_settings.js', 'client');
  api.add_files('client/views/admin/pages/page_settings.html', 'client');
  api.add_files('client/views/admin/pages/page_settings.js', 'client');
  api.add_files('client/views/admin/pages/new_page.html', 'client');
  api.add_files('client/views/admin/pages/new_page.js', 'client');
  api.add_files('client/views/admin/pages/page_template_selector.html', 'client');
  api.add_files('client/views/admin/pages/page_template_selector.js', 'client');
  api.add_files('client/views/admin/assets.html', 'client');
  api.add_files('client/views/admin/assets.js', 'client');
  api.add_files('client/views/admin/admin_panel.html', 'client');
  api.add_files('client/views/admin/admin_panel.js', 'client');
  api.add_files('client/views/admin/blocks/block_edit.html', 'client');
  api.add_files('client/views/admin/blocks/block_edit.js', 'client');
  api.add_files('client/views/admin/blocks/block_tag_edit.html', 'client');
  api.add_files('client/views/admin/blocks/block_tag_edit.js', 'client');
  api.add_files('client/views/admin/blocks/block_type_edit.html', 'client');
  api.add_files('client/views/admin/blocks/block_type_edit.js', 'client');
  api.add_files('client/views/admin/blocks/block_zone_edit.html', 'client');
  api.add_files('client/views/admin/blocks/block_zone_edit.js', 'client');
  api.add_files('client/views/block_set.html', 'client');
  api.add_files('client/views/block_set.js', 'client');
  api.add_files('client/views/block_display.js', 'client');
  api.add_files('client/views/footer.js', 'client');
  api.add_files('client/views/form/wysiwyg.html', 'client');
  api.add_files('client/views/form/wysiwyg.js', 'client');
  api.add_files('client/views/form/tag.html', 'client');
  api.add_files('client/views/form/tag.js', 'client');
  api.add_files('client/views/form/metadata.html', 'client');
  api.add_files('client/views/form/metadata.js', 'client');
  api.add_files('client/views/form/text.html', 'client');
  api.add_files('client/views/form/textarea.html', 'client');
  api.add_files('client/views/header.js', 'client');
  api.add_files('client/views/layout.js', 'client');
  api.add_files('client/index.html', 'client');
  api.add_files('img/azimuth-logo.png', 'client');
  api.add_files('img/buttons.png', 'client');
  api.add_files('img/toolbar.gif', 'client');
  api.add_files('img/file.gif', 'client');
  api.add_files('img/image.gif', 'client');
  api.add_files('img/file-large.png', 'client');

});<|endoftext|>


<commit_before>Package.describe({
    summary: "Accounts Templates styled for Twitter Bootstrap.",
    version: "1.2.2",
    name: "useraccounts:bootstrap",
    git: "https://github.com/meteor-useraccounts/bootstrap.git",
});

Package.on_use(function(api, where) {
    api.versionsFrom("METEOR@1.0");

    api.use([
        "less",
        "templating",
    ], "client");

    api.use([
        "useraccounts:core",
    ], ["client", "server"]);

    api.imply([
        "useraccounts:core@1.2.2",
    ], ["client", "server"]);

    api.add_files([
        "lib/at_error.html",
        "lib/at_error.js",
        "lib/at_form.html",
        "lib/at_form.js",
        "lib/at_input.html",
        "lib/at_input.js",
        "lib/at_nav_button.html",
        "lib/at_nav_button.js",
        "lib/at_oauth.html",
        "lib/at_oauth.js",
        "lib/at_pwd_form.html",
        "lib/at_pwd_form.js",
        "lib/at_pwd_form_btn.html",
        "lib/at_pwd_form_btn.js",
        "lib/at_pwd_link.html",
        "lib/at_pwd_link.js",
        "lib/at_result.html",
        "lib/at_result.js",
        "lib/at_sep.html",
        "lib/at_sep.js",
        "lib/at_signin_link.html",
        "lib/at_signin_link.js",
        "lib/at_signup_link.html",
        "lib/at_signup_link.js",
        "lib/at_social.html",
        "lib/at_social.js",
        "lib/at_terms_link.html",
        "lib/at_terms_link.js",
        "lib/at_title.html",
        "lib/at_title.js",
        "lib/full_page_at_form.html",
        "lib/at_bootstrap.less"
    ], ["client"]);
});

Package.on_test(function(api) {
    api.use([
        "useraccounts:bootstrap",
        "useraccounts:core@1.2.2",
    ]);

    api.use([
        "accounts-password",
        "tinytest",
        "test-helpers"
    ], ["client", "server"]);

    api.add_files([
        "tests/tests.js"
    ], ["client", "server"]);
});
<commit_msg>patch release - Bump to version 1.2.3<commit_after>Package.describe({
    summary: "Accounts Templates styled for Twitter Bootstrap.",
    version: "1.2.3",
    name: "useraccounts:bootstrap",
    git: "https://github.com/meteor-useraccounts/bootstrap.git",
});

Package.on_use(function(api, where) {
    api.versionsFrom("METEOR@1.0");

    api.use([
        "less",
        "templating",
    ], "client");

    api.use([
        "useraccounts:core",
    ], ["client", "server"]);

    api.imply([
        "useraccounts:core@1.2.3",
    ], ["client", "server"]);

    api.add_files([
        "lib/at_error.html",
        "lib/at_error.js",
        "lib/at_form.html",
        "lib/at_form.js",
        "lib/at_input.html",
        "lib/at_input.js",
        "lib/at_nav_button.html",
        "lib/at_nav_button.js",
        "lib/at_oauth.html",
        "lib/at_oauth.js",
        "lib/at_pwd_form.html",
        "lib/at_pwd_form.js",
        "lib/at_pwd_form_btn.html",
        "lib/at_pwd_form_btn.js",
        "lib/at_pwd_link.html",
        "lib/at_pwd_link.js",
        "lib/at_result.html",
        "lib/at_result.js",
        "lib/at_sep.html",
        "lib/at_sep.js",
        "lib/at_signin_link.html",
        "lib/at_signin_link.js",
        "lib/at_signup_link.html",
        "lib/at_signup_link.js",
        "lib/at_social.html",
        "lib/at_social.js",
        "lib/at_terms_link.html",
        "lib/at_terms_link.js",
        "lib/at_title.html",
        "lib/at_title.js",
        "lib/full_page_at_form.html",
        "lib/at_bootstrap.less"
    ], ["client"]);
});

Package.on_test(function(api) {
    api.use([
        "useraccounts:bootstrap",
        "useraccounts:core@1.2.3",
    ]);

    api.use([
        "accounts-password",
        "tinytest",
        "test-helpers"
    ], ["client", "server"]);

    api.add_files([
        "tests/tests.js"
    ], ["client", "server"]);
});
<|endoftext|>


<commit_before>'use strict'

// import material components
import {
  View,
  Component,
  Container,
  Checkbox,
  Button,
  Text
} from 'material'

import Layout from 'material/src/layout'
import css from 'material/src/module/css'

import iconStar from '../icon/star.svg'
import iconAccessibility from '../icon/accessibility.svg'
import iconPhone from '../icon/phone.svg'
import iconHappy from '../icon/happy.svg'
import iconLink from '../icon/link.svg'

/**
 * [initTest description]
 * @return {[type]} [description]
 */
export default function (body) {
  var layout = new Layout([View, 'button', {},
    [Container, 'hero', {},
      [Button, 'first', { text: 'Flat' }],
      [Button, 'second', { text: 'Raised', type: 'raised', color: 'primary' }],
      [Button, 'third', { icon: iconStar, type: 'action' }],
      [Button, 'fourth', { icon: iconStar, text: 'text' }],
      [Button, 'fifth', { icon: iconStar, type: 'floating', color: 'secondary' }]
    ],
    [Container, 'containerbutton', {},
      [Container, 'options', {},
        [Checkbox, 'darktheme', { label: 'Dark Theme' }]
      ],
      [View, 'button-default', {},
        [Text, 'standard-button', { text: 'Standard Button', type: 'subheading2' }],
        [View, 'buttons-container', {},
          [Button, 'default', { text: 'default' }],
          [Button, 'default-compact', { text: 'Compact', style: 'compact' }],
          [Button, 'default-dense', { text: 'Dense', style: 'dense' }],
          [Button, 'default-densecompact', { text: 'Compact dense', style: 'compact dense' }],
          [Button, 'default-link', { text: 'Link', tag: 'a' }]
        ],
        [View, 'buttons-container', {},
          [Button, 'default', { text: 'default', color: 'primary' }],
          [Button, 'default-compact', { text: 'Compact', style: 'compact', color: 'primary' }],
          [Button, 'default-dense', { text: 'Dense', style: 'dense', color: 'primary' }],
          [Button, 'default-densecompact', { text: 'Compact dense', style: 'compact dense', color: 'primary' }],
          [Button, 'default-link', { text: 'Link', color: 'primary', tag: 'a' }]
        ],
        [View, 'buttons-container', {},
          [Button, 'default', { text: 'default', color: 'secondary' }],
          [Button, 'default-compact', { text: 'Compact', style: 'compact', color: 'secondary' }],
          [Button, 'default-dense', { text: 'Dense', style: 'dense', color: 'secondary' }],
          [Button, 'default-densecompact', { text: 'Compact dense', style: 'compact dense', color: 'secondary' }],
          [Button, 'default-link', { text: 'Link', color: 'secondary', tag: 'a' }]
        ],
        [Text, 'raised-button', { text: 'Raised Button', type: 'subheading2' }],
        [View, 'buttons-raised', {},
          [Button, 'raised', { text: 'raised', type: 'raised' }],
          [Button, 'raised-compact', { text: 'Compact', type: 'raised', style: 'compact' }],
          [Button, 'raised-dense', { text: 'Dense', type: 'raised', style: 'dense' }],
          [Button, 'raised-densecompact', { text: 'Compact dense', type: 'raised', style: 'compact dense' }],
          [Button, 'raised-link', { text: 'Link', type: 'raised' }],
          [Button, 'raised-link', { icon: iconStar, type: 'raised' }]
        ],
        [View, 'buttons-raised-primary', {},
          [Button, 'raised', { text: 'raised primary', type: 'raised', color: 'primary' }],
          [Button, 'raised-compact', { text: 'Compact', type: 'raised', style: 'compact', color: 'primary' }],
          [Button, 'raised-dense', { text: 'Dense', style: 'dense', type: 'raised', color: 'primary' }],
          [Button, 'raised-densecompact', { text: 'Compact dense', style: 'dense compact', type: 'raised', color: 'primary' }],
          [Button, 'raised-link', { text: 'Link', type: 'raised', color: 'primary' }],
          [Button, 'raised-link', { icon: iconStar, type: 'raised', color: 'primary' }]
        ],
        [View, 'buttons-raised-secondary', {},
          [Button, 'raised', { text: 'raised secondary', type: 'raised', color: 'secondary' }],
          [Button, 'raised-compact', { text: 'Compact', type: 'raised', style: 'compact', color: 'secondary' }],
          [Button, 'raised-dense', { text: 'Dense', type: 'raised', style: 'dense', color: 'secondary' }],
          [Button, 'raised-densecompact', { text: 'Compact dense', type: 'raised', style: 'compact dense', color: 'secondary' }],
          [Button, 'raised-link', { text: 'Link', type: 'raised', color: 'secondary' }]
        ],
        [Text, 'action-button', { text: 'Action Button', type: 'subheading2' }],
        [View, 'buttons-action', {},
          [Button, 'action', { icon: iconStar, type: 'action' }],
          [Button, 'action-compact', { icon: iconHappy, type: 'action', style: 'compact' }],
          [Button, 'action-dense', { icon: iconPhone, type: 'action', style: 'dense' }],
          [Button, 'action-densecompact', { icon: iconAccessibility, type: 'action', style: 'compact dense' }],
          [Button, 'action-link', { icon: iconLink, type: 'action' }]
        ],
        [View, 'buttons-action', {},
          [Button, 'action', { icon: iconStar, type: 'action', color: 'primary' }],
          [Button, 'action-compact', { icon: iconHappy, type: 'action', style: 'compact', color: 'primary' }],
          [Button, 'action-dense', { icon: iconPhone, type: 'action', style: 'dense', color: 'primary' }],
          [Button, 'action-densecompact', { icon: iconAccessibility, type: 'action', style: 'compact dense', color: 'primary' }],
          [Button, 'action-link', { icon: iconLink, type: 'action', color: 'primary' }]
        ],
        [View, 'buttons-action-secondary', {},
          [Button, 'action', { icon: iconStar, type: 'action', color: 'secondary' }],
          [Button, 'action-compact', { icon: iconHappy, type: 'action', style: 'compact', color: 'secondary' }],
          [Button, 'action-dense', { icon: iconPhone, type: 'action', style: 'dense', color: 'secondary' }],
          [Button, 'action-densecompact', { icon: iconAccessibility, type: 'action', style: 'compact dense', color: 'secondary' }],
          [Button, 'action-link', { icon: iconLink, type: 'action', color: 'secondary' }]
        ],
        [Text, 'floating-button', { text: 'Floating Button', type: 'subheading2' }],
        [View, 'buttons-floating', {},
          [Button, 'floating', { icon: iconStar, type: 'floating' }],
          [Button, 'floating-compact', { icon: iconHappy, type: 'floating', style: 'compact' }],
          [Button, 'floating-dense', { icon: iconPhone, type: 'floating', style: 'dense' }],
          [Button, 'floating-densecompact', { icon: iconAccessibility, type: 'floating', style: 'compact dense' }],
          [Button, 'floating-link', { icon: iconLink, type: 'floating', tag: 'a' }]
        ],
        [View, 'buttons-floating', {},
          [Button, 'floating', { icon: iconStar, type: 'floating', color: 'primary' }],
          [Button, 'floating-compact', { icon: iconHappy, type: 'floating', style: 'compact', color: 'primary' }],
          [Button, 'floating-dense', { icon: iconPhone, type: 'floating', style: 'dense', color: 'primary' }],
          [Button, 'floating-densecompact', { icon: iconAccessibility, type: 'floating', style: 'compact dense', color: 'primary' }],
          [Button, 'floating-link', { icon: iconLink, type: 'floating', color: 'primary' }]
        ],
        [View, 'buttons-floating-secondary', {},
          [Button, 'floating', { text: 'floating secondary', type: 'floating', color: 'secondary' }],
          [Button, 'floating-compact', { text: 'Compact', type: 'floating', style: 'compact', color: 'secondary' }],
          [Button, 'floating-dense', { text: 'Dense', type: 'floating', style: 'dense', color: 'secondary' }],
          [Button, 'floating-densecompact', { icon: iconAccessibility, type: 'floating', style: 'compact dense', color: 'secondary' }],
          [Button, 'floating-link', { icon: iconLink, type: 'floating', color: 'secondary' }]
        ]
      ]
    ]
  ], body)

  var component = layout.get()

  layout.get('default').on('click', (e) => {
    console.log('click', e, layout.get('default'))
  })

  layout.get('darktheme').on('change', function (checked) {
    console.log('darktheme', checked, layout.get('containerbutton'))
    if (checked) {
      css.add(layout.get('containerbutton').wrapper, 'dark-theme')
    } else {
      css.remove(layout.get('containerbutton').wrapper, 'dark-theme')
    }
  })
}
<commit_msg>Enhance button view<commit_after>'use strict'

// import material components
import {
  View,
  Component,
  Container,
  Checkbox,
  Button,
  Text
} from 'material'

import Layout from 'material/src/layout'
import css from 'material/src/module/css'

import iconStar from '../icon/star.svg'
import iconAccessibility from '../icon/accessibility.svg'
import iconPhone from '../icon/phone.svg'
import iconHappy from '../icon/happy.svg'
import iconLink from '../icon/link.svg'

/**
 * [initTest description]
 * @return {[type]} [description]
 */
export default function (body) {
  var layout = new Layout([View, 'button', {},
    [Container, 'hero', {},
      [Button, 'first', { text: 'Flat' }],
      [Button, 'second', { text: 'Raised', type: 'raised', color: 'primary' }],
      [Button, 'third', { icon: iconStar, type: 'action' }],
      [Button, 'fourth', { icon: iconStar, text: 'text' }],
      [Button, 'fifth', { icon: iconStar, type: 'floating', color: 'secondary' }]
    ],
    [Container, 'containerbutton', {},
      [Container, 'options', {},
        [Checkbox, 'darktheme', { label: 'Dark Theme' }]
      ],
      [View, 'button-default', {},
        [Text, 'standard-button', { text: 'Standard Button', type: 'subheading2' }],
        [View, 'buttons-container', {},
          [Button, 'default', { text: 'default' }],
          [Button, 'default-icontext', { icon: iconHappy, text: 'icon text' }],
          [Button, 'default-compact', { text: 'Compact', style: 'compact' }],
          [Button, 'default-dense', { text: 'Dense', style: 'dense' }],
          [Button, 'default-densecompact', { text: 'Compact dense', style: 'compact dense' }],
          [Button, 'default-link', { text: 'Link', tag: 'a' }]
        ],
        [View, 'buttons-container', {},
          [Button, 'default', { text: 'default', color: 'primary' }],
          [Button, 'default-icontext', { icon: iconHappy, text: 'icon text', color: 'primary' }],
          [Button, 'default-compact', { text: 'Compact', style: 'compact', color: 'primary' }],
          [Button, 'default-dense', { text: 'Dense', style: 'dense', color: 'primary' }],
          [Button, 'default-densecompact', { text: 'Compact dense', style: 'compact dense', color: 'primary' }],
          [Button, 'default-link', { text: 'Link', color: 'primary', tag: 'a' }]
        ],
        [View, 'buttons-container', {},
          [Button, 'default', { text: 'default', color: 'secondary' }],
          [Button, 'default-icontext', { icon: iconHappy, text: 'icon text', color: 'secondary' }],
          [Button, 'default-compact', { text: 'Compact', style: 'compact', color: 'secondary' }],
          [Button, 'default-dense', { text: 'Dense', style: 'dense', color: 'secondary' }],
          [Button, 'default-densecompact', { text: 'Compact dense', style: 'compact dense', color: 'secondary' }],
          [Button, 'default-link', { text: 'Link', color: 'secondary', tag: 'a' }]
        ],
        [Text, 'raised-button', { text: 'Raised Button', type: 'subheading2' }],
        [View, 'buttons-raised', {},
          [Button, 'raised', { text: 'raised', type: 'raised' }],
          [Button, 'default-icontext', { icon: iconHappy, type: 'raised', text: 'icon text' }],
          [Button, 'raised-compact', { text: 'Compact', type: 'raised', style: 'compact' }],
          [Button, 'raised-dense', { text: 'Dense', type: 'raised', style: 'dense' }],
          [Button, 'raised-densecompact', { text: 'Compact dense', type: 'raised', style: 'compact dense' }],
          [Button, 'raised-link', { text: 'Link', type: 'raised' }],
          [Button, 'raised-link', { icon: iconStar, type: 'raised' }]
        ],
        [View, 'buttons-raised-primary', {},
          [Button, 'raised', { text: 'raised primary', type: 'raised', color: 'primary' }],
          [Button, 'default-icontext', { icon: iconHappy, type: 'raised', text: 'icon text', color: 'primary' }],
          [Button, 'raised-compact', { text: 'Compact', type: 'raised', style: 'compact', color: 'primary' }],
          [Button, 'raised-dense', { text: 'Dense', style: 'dense', type: 'raised', color: 'primary' }],
          [Button, 'raised-densecompact', { text: 'Compact dense', style: 'dense compact', type: 'raised', color: 'primary' }],
          [Button, 'raised-link', { text: 'Link', type: 'raised', color: 'primary' }],
          [Button, 'raised-link', { icon: iconStar, type: 'raised', color: 'primary' }]
        ],
        [View, 'buttons-raised-secondary', {},
          [Button, 'raised', { text: 'raised secondary', type: 'raised', color: 'secondary' }],
          [Button, 'default-icontext', { icon: iconHappy, type: 'raised', text: 'icon text', color: 'secondary' }],
          [Button, 'raised-compact', { text: 'Compact', type: 'raised', style: 'compact', color: 'secondary' }],
          [Button, 'raised-dense', { text: 'Dense', type: 'raised', style: 'dense', color: 'secondary' }],
          [Button, 'raised-densecompact', { text: 'Compact dense', type: 'raised', style: 'compact dense', color: 'secondary' }],
          [Button, 'raised-link', { text: 'Link', type: 'raised', color: 'secondary' }]
        ],
        [Text, 'action-button', { text: 'Action Button', type: 'subheading2' }],
        [View, 'buttons-action', {},
          [Button, 'action', { icon: iconStar, type: 'action' }],
          [Button, 'action-compact', { icon: iconHappy, type: 'action', style: 'compact' }],
          [Button, 'action-dense', { icon: iconPhone, type: 'action', style: 'dense' }],
          [Button, 'action-densecompact', { icon: iconAccessibility, type: 'action', style: 'compact dense' }],
          [Button, 'action-link', { icon: iconLink, type: 'action' }]
        ],
        [View, 'buttons-action', {},
          [Button, 'action', { icon: iconStar, type: 'action', color: 'primary' }],
          [Button, 'action-compact', { icon: iconHappy, type: 'action', style: 'compact', color: 'primary' }],
          [Button, 'action-dense', { icon: iconPhone, type: 'action', style: 'dense', color: 'primary' }],
          [Button, 'action-densecompact', { icon: iconAccessibility, type: 'action', style: 'compact dense', color: 'primary' }],
          [Button, 'action-link', { icon: iconLink, type: 'action', color: 'primary' }]
        ],
        [View, 'buttons-action-secondary', {},
          [Button, 'action', { icon: iconStar, type: 'action', color: 'secondary' }],
          [Button, 'action-compact', { icon: iconHappy, type: 'action', style: 'compact', color: 'secondary' }],
          [Button, 'action-dense', { icon: iconPhone, type: 'action', style: 'dense', color: 'secondary' }],
          [Button, 'action-densecompact', { icon: iconAccessibility, type: 'action', style: 'compact dense', color: 'secondary' }],
          [Button, 'action-link', { icon: iconLink, type: 'action', color: 'secondary' }]
        ],
        [Text, 'floating-button', { text: 'Floating Button', type: 'subheading2' }],
        [View, 'buttons-floating', {},
          [Button, 'floating', { icon: iconStar, type: 'floating' }],
          [Button, 'floating-compact', { icon: iconHappy, type: 'floating', style: 'compact' }],
          [Button, 'floating-dense', { icon: iconPhone, type: 'floating', style: 'dense' }],
          [Button, 'floating-densecompact', { icon: iconAccessibility, type: 'floating', style: 'compact dense' }],
          [Button, 'floating-link', { icon: iconLink, type: 'floating', tag: 'a' }]
        ],
        [View, 'buttons-floating', {},
          [Button, 'floating', { icon: iconStar, type: 'floating', color: 'primary' }],
          [Button, 'floating-compact', { icon: iconHappy, type: 'floating', style: 'compact', color: 'primary' }],
          [Button, 'floating-dense', { icon: iconPhone, type: 'floating', style: 'dense', color: 'primary' }],
          [Button, 'floating-densecompact', { icon: iconAccessibility, type: 'floating', style: 'compact dense', color: 'primary' }],
          [Button, 'floating-link', { icon: iconLink, type: 'floating', color: 'primary' }]
        ],
        [View, 'buttons-floating-secondary', {},
          [Button, 'floating', { icon: iconStar, text: 'floating secondary', type: 'floating', color: 'secondary' }],
          [Button, 'floating-compact', { icon: iconHappy, text: 'Compact', type: 'floating', style: 'compact', color: 'secondary' }],
          [Button, 'floating-dense', { icon: iconPhone, text: 'Dense', type: 'floating', style: 'dense', color: 'secondary' }],
          [Button, 'floating-densecompact', { icon: iconAccessibility, type: 'floating', style: 'compact dense', color: 'secondary' }],
          [Button, 'floating-link', { icon: iconLink, type: 'floating', color: 'secondary' }]
        ]
      ]
    ]
  ], body)

  var component = layout.get()

  layout.get('default').on('click', (e) => {
    console.log('click', e, layout.get('default'))
  })

  layout.get('darktheme').on('change', function (checked) {
    console.log('darktheme', checked, layout.get('containerbutton'))
    if (checked) {
      css.add(layout.get('containerbutton').wrapper, 'dark-theme')
    } else {
      css.remove(layout.get('containerbutton').wrapper, 'dark-theme')
    }
  })
}
<|endoftext|>


<commit_before>Package.describe({
  name: 'lai:astronomy-simple-schema',
  version: '0.0.1',
  // Brief, one-line summary of the package.
  summary: 'Convert Astronomy classes to Simple Schemas',
  // URL to the Git repository containing the source code for this package.
  git: 'https://github.com/rclai/meteor-astronomy-simple-schema.git',
  // By default, Meteor will default to using README.md for documentation.
  // To avoid submitting documentation, set this field to null.
  documentation: 'README.md'
});

Package.onUse(function(api) {
  api.versionsFrom('1.1.0.2');
  api.use('jagi:astronomy');
  api.use('jagi:astronomy-validators');
  api.addFiles('astronomy-simple-schema.js');
});

Package.onTest(function(api) {
  api.use('tinytest');
  api.use('lai:astronomy-simple-schema');
  api.addFiles('astronomy-simple-schema-tests.js');
});
<commit_msg>Add astronomy version constraints<commit_after>Package.describe({
  name: 'lai:astronomy-simple-schema',
  version: '0.0.1',
  // Brief, one-line summary of the package.
  summary: 'Convert Astronomy classes to Simple Schemas',
  // URL to the Git repository containing the source code for this package.
  git: 'https://github.com/rclai/meteor-astronomy-simple-schema.git',
  // By default, Meteor will default to using README.md for documentation.
  // To avoid submitting documentation, set this field to null.
  documentation: 'README.md'
});

Package.onUse(function(api) {
  api.versionsFrom('1.1.0.2');
  api.use('jagi:astronomy@1.0.0');
  api.use('jagi:astronomy-validators@1.0.0');
  api.addFiles('astronomy-simple-schema.js');
});

Package.onTest(function(api) {
  api.use('tinytest');
  api.use('lai:astronomy-simple-schema');
  api.addFiles('astronomy-simple-schema-tests.js');
});
<|endoftext|>


<commit_before>/* global packageFix:true Package:false */
// package metadata file for AtmosphereJS

try {
  packageFix = Package

  packageFix.describe({
    name: 'formly:angular-formly',
    summary: 'angular-formly (official): forms for AngularJS',
    version: '0.0.0-semantically-released.0',
    git: 'https://github.com/formly-js/angular-formly.git',
  })

  packageFix.onUse((api) => {
    api.versionsFrom(['METEOR@1.0'])
    api.use('wieldo:api-check@7.5.5')
    api.addFiles('dist/formly.js', 'client')
  })

} catch (e) {
  // little workaround...
  // ghooks compiles this file and throws ReferenceError because
  // Package is a global variable available only in Meteor environment
}
<commit_msg>chore: add meteor dependencies<commit_after>/* global Package:false */
// package metadata file for AtmosphereJS

try {
  Package.describe({
    name: 'formly:angular-formly',
    summary: 'angular-formly (official): forms for AngularJS',
    version: '0.0.0-semantically-released.0',
    git: 'https://github.com/formly-js/angular-formly.git',
  })

  Package.onUse(function(api) {
    api.versionsFrom(['METEOR@1.0'])
    // api-check
    api.use('wieldo:api-check@7.5.5')
    api.imply('wieldo:api-check')
    // angular
    api.use('angular:angular@1.4.0')
    api.addFiles('dist/formly.js', 'client')
  })
} catch (e) {
  //
}
<|endoftext|>


<commit_before>Package.describe({
  summary: 'Famo.us wrapper for Accounts Templates.',
  version: '1.13.0',
  name: 'useraccounts:famous-wrapper',
  git: 'https://github.com/meteor-useraccounts/famous-wrapper.git',
});

Package.on_use(function(api, where) {
  api.versionsFrom('METEOR@1.0');

  api.use([
    'reactive-dict',
    'templating',
  ], 'client');

  api.use([
    'check',
    'underscore',
    'useraccounts:core',
    'gadicohen:famous-views',
    'aldeed:template-extension'
  ], ['client', 'server']);

  api.imply([
    'useraccounts:core@1.13.0',
    'gadicohen:famous-views@0.1.22',
    'aldeed:template-extension@3.1.1',
  ], ['client', 'server']);

  //api.use('mjnetworks:famous@0.2.2-1', ['client']/*, { weak: true }*/);

  api.use('useraccounts:bootstrap@1.13.0', ['client', 'server'], {
    weak: true
  });
  api.use('useraccounts:foundation@1.13.0', ['client', 'server'], {
    weak: true
  });
  api.use('useraccounts:ionic@1.8.1', ['client', 'server'], {
    weak: true
  });
  api.use('useraccounts:ratchet@1.8.1', ['client', 'server'], {
    weak: true
  });
  api.use('useraccounts:semantic-ui@1.13.0', ['client', 'server'], {
    weak: true
  });
  api.use('useraccounts:unstyled@1.13.0', ['client', 'server'], {
    weak: true
  });

  api.add_files([
    'lib/at_famous_form.html',
    'lib/at_famous_form.js',
    'lib/at_famous_oauth.html',
    'lib/at_famous_oauth.js',
    'lib/at_pwd_form_btn.js',
    'lib/full_page_at_famous_form.html',
    'lib/full_page_at_famous_form.js',
    'lib/default_animations.js',
    'lib/famous_wrapper.js',
  ], ['client']);

  api.add_files([
    'lib/at_configure_anim.js',
  ], ['client', 'server']);
});

Package.on_test(function(api) {
  api.use([
    'useraccounts:core@1.13.0',
  ]);
  api.use(['tinytest', 'test-helpers'], ['client', 'server']);
  api.add_files('tests/tests.js', ['client', 'server']);
});
<commit_msg>patch release - Bump to version 1.13.1<commit_after>Package.describe({
  summary: 'Famo.us wrapper for Accounts Templates.',
  version: '1.13.1',
  name: 'useraccounts:famous-wrapper',
  git: 'https://github.com/meteor-useraccounts/famous-wrapper.git',
});

Package.on_use(function(api, where) {
  api.versionsFrom('METEOR@1.0');

  api.use([
    'reactive-dict',
    'templating',
  ], 'client');

  api.use([
    'check',
    'underscore',
    'useraccounts:core',
    'gadicohen:famous-views',
    'aldeed:template-extension'
  ], ['client', 'server']);

  api.imply([
    'useraccounts:core@1.13.1',
    'gadicohen:famous-views@0.1.22',
    'aldeed:template-extension@3.1.1',
  ], ['client', 'server']);

  //api.use('mjnetworks:famous@0.2.2-1', ['client']/*, { weak: true }*/);

  api.use('useraccounts:bootstrap@1.13.1', ['client', 'server'], {
    weak: true
  });
  api.use('useraccounts:foundation@1.13.1', ['client', 'server'], {
    weak: true
  });
  api.use('useraccounts:ionic@1.8.1', ['client', 'server'], {
    weak: true
  });
  api.use('useraccounts:ratchet@1.8.1', ['client', 'server'], {
    weak: true
  });
  api.use('useraccounts:semantic-ui@1.13.1', ['client', 'server'], {
    weak: true
  });
  api.use('useraccounts:unstyled@1.13.1', ['client', 'server'], {
    weak: true
  });

  api.add_files([
    'lib/at_famous_form.html',
    'lib/at_famous_form.js',
    'lib/at_famous_oauth.html',
    'lib/at_famous_oauth.js',
    'lib/at_pwd_form_btn.js',
    'lib/full_page_at_famous_form.html',
    'lib/full_page_at_famous_form.js',
    'lib/default_animations.js',
    'lib/famous_wrapper.js',
  ], ['client']);

  api.add_files([
    'lib/at_configure_anim.js',
  ], ['client', 'server']);
});

Package.on_test(function(api) {
  api.use([
    'useraccounts:core@1.13.1',
  ]);
  api.use(['tinytest', 'test-helpers'], ['client', 'server']);
  api.add_files('tests/tests.js', ['client', 'server']);
});
<|endoftext|>