Determine free blocks from a list of events.
It returns the free block within scope when you enter a list of events.
Redesign raineorshine/freebusy with TypeScript.
yarn add @kamiazya/freebusynpm install @kamiazya/freebusyDetermine free blocks from a list of events.
Format result by luxon.
In this case, it detects free block when there are three events from 9 o'clock to 17 o'clock in 2019-01-10.
import { getFree, BlockLike, ScopeTime } from '@kamiazya/freebusy';
const events: BlockLike[] = [
  {
    start: '2019-01-10T09:30',
    end: '2019-01-10T10:00',
  },
  {
    start: '2019-01-10T12:00',
    end: '2019-01-10T13:00',
  },
  {
    start: '2019-01-10T15:00',
    end: '2019-01-10T16:00',
  },
];
const freeBlocks = getFree({
  scope: {
    start: '2019-01-10',
    end: '2019-01-11',
    time: new ScopeTime({
      defaultStart: 9,
      defaultEnd: 17,
    }),
  },
  events,
});
freeBlocks.blocks
  .forEach((block) => {
    const start = block.start.toFormat('DDD T');
    const end = block.end.toFormat('T');
    console.log(`${start} - ${end}`);
  });
// Output:
//   2019年1月10日 9:00 - 9:30
//   2019年1月10日 10:00 - 12:00
//   2019年1月10日 13:00 - 15:00
//   2019年1月10日 16:00 - 17:00This software is released under the MIT License, see LICENSE.
Generated using TypeDoc