import core.widgets;

widget root = Calculator();

widget Calculator = SafeArea(
  child: Center(
    child: IntrinsicWidth(
      child: Column(
        crossAxisAlignment: "stretch",
        children: [
          Display(text: data.value.string),
          Expanded(
            child: FittedBox(
              alignment: { x: 0.0, y: 1.0 },
              child: CalculatorPad(),
            ),
          ),
        ],
      ),
    ),
  ),
);

widget CalculatorPad = Column(
  children: [
    Row(
      children: [
        CalculatorButton(label: "7", onPressed: event "digit" { arguments: [7] }),
        CalculatorButton(label: "8", onPressed: event "digit" { arguments: [8] }),
        CalculatorButton(label: "9", onPressed: event "digit" { arguments: [9] }),
        SizedBox(width: 116.0, height: 116.0),
      ],
    ),
    Row(
      children: [
        CalculatorButton(label: "4", onPressed: event "digit" { arguments: [4] }),
        CalculatorButton(label: "5", onPressed: event "digit" { arguments: [5] }),
        CalculatorButton(label: "6", onPressed: event "digit" { arguments: [6] }),
        CalculatorButton(label: "+", onPressed: event "add" { }),
      ],
    ),
    Row(
      children: [
        CalculatorButton(label: "1", onPressed: event "digit" { arguments: [1] }),
        CalculatorButton(label: "2", onPressed: event "digit" { arguments: [2] }),
        CalculatorButton(label: "3", onPressed: event "digit" { arguments: [3] }),
        CalculatorButton(label: "=", onPressed: event "equals" { }),
      ],
    ),
    Row(
      children: [
        SizedBox(width: 116.0, height: 116.0),
        CalculatorButton(label: "0", onPressed: event "digit" { arguments: [0] }),
        SizedBox(width: 116.0, height: 116.0),
        SizedBox(width: 116.0, height: 116.0),
      ],
    ),
  ],
);

widget CalculatorButton = Padding(
  padding: [8.0],
  child: SizedBox(
    width: 100.0,
    height: 100.0,
    child: Button(
      child: FittedBox(child: Text(text: args.label)),
      onPressed: args.onPressed,
    ),
  ),
);

widget Button { down: false } = GestureDetector(
  onTap: args.onPressed,
  onTapDown: set state.down = true,
  onTapUp: set state.down = false,
  onTapCancel: set state.down = false,
  child: Container(
    duration: 50,
    margin: switch state.down {
      false: [ 0.0, 0.0, 2.0, 2.0 ],
      true: [ 2.0, 2.0, 0.0, 0.0 ],
    },
    padding: [ 12.0, 8.0 ],
    decoration: {
      type: "shape",
      shape: {
        type: "stadium",
        side: { width: 1.0 },
      },
      gradient: {
        type: "linear",
        begin: { x: -0.5, y: -0.25 },
        end: { x: 0.0, y: 0.5 },
        colors: [ 0xFFFFFF99, 0xFFEEDD00 ],
        stops: [ 0.0, 1.0 ],
        tileMode: "mirror",
      },
      shadows: switch state.down {
        false: [ { blurRadius: 4.0, spreadRadius: 0.5, offset: { x: 1.0, y: 1.0, } } ],
        default: [],
      },
    },
    child: DefaultTextStyle(
      style: {
        color: 0xFF000000,
        fontSize: 32.0,
      },
      child: args.child,
    ),
  ),
);

widget Display = Container(
  height: 80.0,
  margin: [18.0],
  padding: [20.0, 12.0],
  decoration: {
    type: 'shape',
    gradient: {
      type: "linear",
      begin: { x: 0.0, y: -0.5 },
      end: { x: 0.05, y: 1.0 },
      colors: [ 0xFFFFFFFF, 0xFFDDDDDD ],
      stops: [ 0.0, 1.0 ],
      tileMode: "mirror",
    },
    shape: {
      type: "stadium",
      borderRadius: [ { x: 40.0 } ],
      side: { color: 0xFFCCCCCC, },
    }
  },
  child: SizedBoxExpand(
    child: FittedBox(
      alignment: { x: 1.0, y: 0.0, },
      child: Text(text: args.text, style: { color: 0xFF000000 }),
    ),
  ),
);
