示例#1
0
function PaneWrapper (Wrappee, opts) {
  assert(validate.isInteger(opts.x), `${opts.x} is not an integer`)
  assert(validate.isInteger(opts.y), `${opts.y} is not an integer`)
  assert(validate.isInteger(opts.width), `${opts.width} is not an integer`)
  assert(validate.isInteger(opts.height), `${opts.height} is not an integer`)
  const offset = (opts.grid && opts.grid.offset) || { x: 0, y: 0 }
  const wrapped = getWrappedObject(Wrappee, opts, offset)
  if (typeof wrapped.setBounds === 'function') {
    const currentBounds = wrapped.getBounds()
    wrapped.setBounds(Object.assign({}, currentBounds, {
      x: opts.x + offset.x,
      y: opts.y + offset.y,
      width: opts.width,
      height: opts.height
    }))
  }
  if (!validate.isDefined(opts.id) && !validate.isDefined(wrapped.id)) {
    if (typeof wrapped.close === 'function') wrapped.close()
    throw new Error('id is not defined')
  }
  let state = {
    wrapped,
    grid: opts.grid,
    id: opts.id || wrapped.id,
    width: opts.width,
    height: opts.height,
    x: opts.x,
    y: opts.y
  }
  const emitter = new EventEmitter()
  return Object.assign(
    state,
    {
      on: emitter.on,
      once: emitter.once,
      emit: emitter.emit,
      removeListener: emitter.removeListener,
      removeAllListeners: emitter.removeAllListeners
      // TODO: rest of relevant emitter methods
    },
    sizeChanger(state),
    locationChanger(state),
    directionalResizer(state),
    destructor(state)
  )
}
示例#2
0
 getPane: function getPane (id) {
   const pane = state.panes.find(w => w.id === id)
   assert(validate.isDefined(pane), `${id} does not exist`)
   return pane
 }
示例#3
0
文件: max-size.js 项目: imsnif/grid
 .filter(p => validate.isDefined(pane.id) && validate.isDefined(p.id)
   ? p.id !== pane.id
   : true