v1.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. namespace zin;
  3. class imgCutter extends wg
  4. {
  5. /**
  6. * @var mixed[]
  7. */
  8. protected static $defineProps = array(
  9. 'src: string',
  10. 'btnText?: string',
  11. 'tipText?: string',
  12. 'coverColor?: string',
  13. 'coverOpacity?: number',
  14. 'defaultWidth?: number',
  15. 'defaultHeight?: number',
  16. 'minWidth?: number',
  17. 'minHeight?: number',
  18. 'fixedRatio?: boolean',
  19. 'onSizeError?: callable',
  20. 'ready: callable',
  21. 'handleBtnClick: callable'
  22. );
  23. protected function build()
  24. {
  25. $btnText = $this->prop('btnText');
  26. $tipText = $this->prop('tipText');
  27. $imgCutter = div
  28. (
  29. set($this->getRestProps()),
  30. setClass('img-cutter'),
  31. div
  32. (
  33. setClass('canvas'),
  34. img(set::src($this->prop('src')))
  35. ),
  36. div
  37. (
  38. setClass('text-xl font-bold py-3'),
  39. $tipText
  40. ),
  41. btn
  42. (
  43. set::type('primary'),
  44. $btnText
  45. )
  46. );
  47. $imgCutter->setProp('data-zin-id', $imgCutter->gid);
  48. $props = array_merge($this->props->pick(array('coverColor', 'coverOpacity', 'defaultWidth', 'defaultHeight', 'minWidth', 'minHeight', 'fixedRatio', 'onSizeError', 'ready', 'handleBtnClick')), array('_to' => "[data-zin-id='{$imgCutter->gid}']"));
  49. return array(
  50. $imgCutter,
  51. zui::imgCutter(set($props))
  52. );
  53. }
  54. }