@tremolo-ui/react 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/README.md +11 -0
  2. package/dist/cjs/index.d.ts +72 -7
  3. package/dist/cjs/index.js +320 -106
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/cjs/packages/react/tsconfig.tsbuildinfo +1 -0
  6. package/dist/cjs/types/packages/functions/components/NumberInput/type.d.ts +14 -0
  7. package/dist/cjs/types/packages/functions/components/NumberInput/type.d.ts.map +1 -0
  8. package/dist/cjs/types/packages/functions/components/Slider/type.d.ts +32 -0
  9. package/dist/cjs/types/packages/functions/components/Slider/type.d.ts.map +1 -0
  10. package/dist/cjs/types/{src → packages/functions}/math.d.ts +4 -0
  11. package/dist/cjs/types/packages/functions/math.d.ts.map +1 -0
  12. package/dist/cjs/types/packages/functions/types.d.ts.map +1 -0
  13. package/dist/cjs/types/packages/functions/util.d.ts +6 -0
  14. package/dist/cjs/types/packages/functions/util.d.ts.map +1 -0
  15. package/dist/cjs/types/packages/react/src/components/AnimationCanvas/canvas.d.ts.map +1 -0
  16. package/dist/cjs/types/packages/react/src/components/AnimationCanvas/index.d.ts.map +1 -0
  17. package/dist/cjs/types/{src → packages/react/src}/components/Knob/index.d.ts +1 -1
  18. package/dist/cjs/types/packages/react/src/components/Knob/index.d.ts.map +1 -0
  19. package/dist/{esm/types → cjs/types/packages/react}/src/components/NumberInput/index.d.ts +1 -1
  20. package/dist/cjs/types/packages/react/src/components/NumberInput/index.d.ts.map +1 -0
  21. package/dist/cjs/types/packages/react/src/components/Slider/Thumb.d.ts.map +1 -0
  22. package/dist/cjs/types/packages/react/src/components/Slider/Track.d.ts.map +1 -0
  23. package/dist/{esm/types → cjs/types/packages/react}/src/components/Slider/index.d.ts +3 -3
  24. package/dist/cjs/types/packages/react/src/components/Slider/index.d.ts.map +1 -0
  25. package/dist/cjs/types/packages/react/src/components/Slider/type.d.ts +6 -0
  26. package/dist/cjs/types/packages/react/src/components/Slider/type.d.ts.map +1 -0
  27. package/dist/cjs/types/packages/react/src/hooks/useCallbackRef.d.ts.map +1 -0
  28. package/dist/cjs/types/packages/react/src/hooks/useEventListener.d.ts.map +1 -0
  29. package/dist/cjs/types/packages/react/src/hooks/useRefCallbackEvent.d.ts.map +1 -0
  30. package/dist/cjs/types/packages/react/src/index.d.ts +7 -0
  31. package/dist/cjs/types/packages/react/src/index.d.ts.map +1 -0
  32. package/dist/cjs/types/packages/react/src/system/pseudo.d.ts.map +1 -0
  33. package/dist/esm/index.d.ts +72 -7
  34. package/dist/esm/index.js +259 -53
  35. package/dist/esm/index.js.map +1 -1
  36. package/dist/esm/packages/react/tsconfig.tsbuildinfo +1 -0
  37. package/dist/esm/types/packages/functions/components/NumberInput/type.d.ts +14 -0
  38. package/dist/esm/types/packages/functions/components/NumberInput/type.d.ts.map +1 -0
  39. package/dist/esm/types/packages/functions/components/Slider/type.d.ts +32 -0
  40. package/dist/esm/types/packages/functions/components/Slider/type.d.ts.map +1 -0
  41. package/dist/esm/types/{src → packages/functions}/math.d.ts +4 -0
  42. package/dist/esm/types/packages/functions/math.d.ts.map +1 -0
  43. package/dist/esm/types/packages/functions/types.d.ts.map +1 -0
  44. package/dist/esm/types/packages/functions/util.d.ts +6 -0
  45. package/dist/esm/types/packages/functions/util.d.ts.map +1 -0
  46. package/dist/esm/types/packages/react/src/components/AnimationCanvas/canvas.d.ts.map +1 -0
  47. package/dist/esm/types/packages/react/src/components/AnimationCanvas/index.d.ts.map +1 -0
  48. package/dist/esm/types/{src → packages/react/src}/components/Knob/index.d.ts +1 -1
  49. package/dist/esm/types/packages/react/src/components/Knob/index.d.ts.map +1 -0
  50. package/dist/{cjs/types → esm/types/packages/react}/src/components/NumberInput/index.d.ts +1 -1
  51. package/dist/esm/types/packages/react/src/components/NumberInput/index.d.ts.map +1 -0
  52. package/dist/esm/types/packages/react/src/components/Slider/Thumb.d.ts.map +1 -0
  53. package/dist/esm/types/packages/react/src/components/Slider/Track.d.ts.map +1 -0
  54. package/dist/{cjs/types → esm/types/packages/react}/src/components/Slider/index.d.ts +3 -3
  55. package/dist/esm/types/packages/react/src/components/Slider/index.d.ts.map +1 -0
  56. package/dist/esm/types/packages/react/src/components/Slider/type.d.ts +6 -0
  57. package/dist/esm/types/packages/react/src/components/Slider/type.d.ts.map +1 -0
  58. package/dist/esm/types/packages/react/src/hooks/useCallbackRef.d.ts.map +1 -0
  59. package/dist/esm/types/packages/react/src/hooks/useEventListener.d.ts.map +1 -0
  60. package/dist/esm/types/packages/react/src/hooks/useRefCallbackEvent.d.ts.map +1 -0
  61. package/dist/esm/types/packages/react/src/index.d.ts +7 -0
  62. package/dist/esm/types/packages/react/src/index.d.ts.map +1 -0
  63. package/dist/esm/types/packages/react/src/system/pseudo.d.ts.map +1 -0
  64. package/package.json +9 -7
  65. package/dist/cjs/types/src/components/AnimationCanvas/canvas.d.ts.map +0 -1
  66. package/dist/cjs/types/src/components/AnimationCanvas/index.d.ts.map +0 -1
  67. package/dist/cjs/types/src/components/Knob/index.d.ts.map +0 -1
  68. package/dist/cjs/types/src/components/NumberInput/index.d.ts.map +0 -1
  69. package/dist/cjs/types/src/components/Slider/Thumb.d.ts.map +0 -1
  70. package/dist/cjs/types/src/components/Slider/Track.d.ts.map +0 -1
  71. package/dist/cjs/types/src/components/Slider/index.d.ts.map +0 -1
  72. package/dist/cjs/types/src/components/Slider/type.d.ts +0 -6
  73. package/dist/cjs/types/src/components/Slider/type.d.ts.map +0 -1
  74. package/dist/cjs/types/src/hooks/useCallbackRef.d.ts.map +0 -1
  75. package/dist/cjs/types/src/hooks/useEventListener.d.ts.map +0 -1
  76. package/dist/cjs/types/src/hooks/useRefCallbackEvent.d.ts.map +0 -1
  77. package/dist/cjs/types/src/index.d.ts +0 -5
  78. package/dist/cjs/types/src/index.d.ts.map +0 -1
  79. package/dist/cjs/types/src/math.d.ts.map +0 -1
  80. package/dist/cjs/types/src/system/pseudo.d.ts.map +0 -1
  81. package/dist/cjs/types/src/types.d.ts.map +0 -1
  82. package/dist/cjs/types/src/util.d.ts +0 -2
  83. package/dist/cjs/types/src/util.d.ts.map +0 -1
  84. package/dist/esm/types/src/components/AnimationCanvas/canvas.d.ts.map +0 -1
  85. package/dist/esm/types/src/components/AnimationCanvas/index.d.ts.map +0 -1
  86. package/dist/esm/types/src/components/Knob/index.d.ts.map +0 -1
  87. package/dist/esm/types/src/components/NumberInput/index.d.ts.map +0 -1
  88. package/dist/esm/types/src/components/Slider/Thumb.d.ts.map +0 -1
  89. package/dist/esm/types/src/components/Slider/Track.d.ts.map +0 -1
  90. package/dist/esm/types/src/components/Slider/index.d.ts.map +0 -1
  91. package/dist/esm/types/src/components/Slider/type.d.ts +0 -6
  92. package/dist/esm/types/src/components/Slider/type.d.ts.map +0 -1
  93. package/dist/esm/types/src/hooks/useCallbackRef.d.ts.map +0 -1
  94. package/dist/esm/types/src/hooks/useEventListener.d.ts.map +0 -1
  95. package/dist/esm/types/src/hooks/useRefCallbackEvent.d.ts.map +0 -1
  96. package/dist/esm/types/src/index.d.ts +0 -5
  97. package/dist/esm/types/src/index.d.ts.map +0 -1
  98. package/dist/esm/types/src/math.d.ts.map +0 -1
  99. package/dist/esm/types/src/system/pseudo.d.ts.map +0 -1
  100. package/dist/esm/types/src/types.d.ts.map +0 -1
  101. package/dist/esm/types/src/util.d.ts +0 -2
  102. package/dist/esm/types/src/util.d.ts.map +0 -1
  103. /package/dist/cjs/types/{src → packages/functions}/types.d.ts +0 -0
  104. /package/dist/cjs/types/{src → packages/react/src}/components/AnimationCanvas/canvas.d.ts +0 -0
  105. /package/dist/cjs/types/{src → packages/react/src}/components/AnimationCanvas/index.d.ts +0 -0
  106. /package/dist/cjs/types/{src → packages/react/src}/components/Slider/Thumb.d.ts +0 -0
  107. /package/dist/cjs/types/{src → packages/react/src}/components/Slider/Track.d.ts +0 -0
  108. /package/dist/cjs/types/{src → packages/react/src}/hooks/useCallbackRef.d.ts +0 -0
  109. /package/dist/cjs/types/{src → packages/react/src}/hooks/useEventListener.d.ts +0 -0
  110. /package/dist/cjs/types/{src → packages/react/src}/hooks/useRefCallbackEvent.d.ts +0 -0
  111. /package/dist/cjs/types/{src → packages/react/src}/system/pseudo.d.ts +0 -0
  112. /package/dist/esm/types/{src → packages/functions}/types.d.ts +0 -0
  113. /package/dist/esm/types/{src → packages/react/src}/components/AnimationCanvas/canvas.d.ts +0 -0
  114. /package/dist/esm/types/{src → packages/react/src}/components/AnimationCanvas/index.d.ts +0 -0
  115. /package/dist/esm/types/{src → packages/react/src}/components/Slider/Thumb.d.ts +0 -0
  116. /package/dist/esm/types/{src → packages/react/src}/components/Slider/Track.d.ts +0 -0
  117. /package/dist/esm/types/{src → packages/react/src}/hooks/useCallbackRef.d.ts +0 -0
  118. /package/dist/esm/types/{src → packages/react/src}/hooks/useEventListener.d.ts +0 -0
  119. /package/dist/esm/types/{src → packages/react/src}/hooks/useRefCallbackEvent.d.ts +0 -0
  120. /package/dist/esm/types/{src → packages/react/src}/system/pseudo.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Track.d.ts","sourceRoot":"","sources":["../../../../../../../../src/components/Slider/Track.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AAEpC,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAED,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,KAAK,EACL,KAAK,GACN,EAAE,gBAAgB,GAAG,YAAY,CAMjC"}
@@ -1,6 +1,6 @@
1
1
  import { CSSObject } from '@emotion/react';
2
- import { Direction, ScaleOrderList, ScaleType } from 'common/components/Slider/type';
3
- import { WheelOption } from 'common/types';
2
+ import { Direction, ScaleOrderList, ScaleType } from '@tremolo-ui/functions/components/Slider/type';
3
+ import { WheelOption } from '@tremolo-ui/functions/types';
4
4
  import { ReactElement } from 'react';
5
5
  import { UserActionPseudoProps } from '../../system/pseudo';
6
6
  import { ScaleOption } from './type';
@@ -30,5 +30,5 @@ interface SliderProps {
30
30
  export declare function Slider({ value, min, max, step, skew, length, thickness, direction, scale, scaleOption, color, bg, className, style, bodyNoSelect, enableWheel, onChange, children, ...pseudo }: SliderProps & UserActionPseudoProps): import("@emotion/react/jsx-runtime").JSX.Element;
31
31
  export { SliderThumb } from './Thumb';
32
32
  export { SliderTrack } from './Track';
33
- export * from 'common/components/Slider/type';
33
+ export * from '@tremolo-ui/functions/components/Slider/type';
34
34
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/components/Slider/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,SAAS,EAAU,MAAM,gBAAgB,CAAA;AACvD,OAAO,EACL,SAAS,EAMT,cAAc,EACd,SAAS,EACV,MAAM,8CAA8C,CAAA;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEzD,OAAc,EAAE,YAAY,EAAU,MAAM,OAAO,CAAA;AAInD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAI3D,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAEpC,UAAU,WAAW;IAEnB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IAGX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,cAAc,EAAE,CAAA;IACpE,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,QAAQ,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAA;CAEzC;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,GAAG,EACH,GAAG,EACH,IAAQ,EACR,IAAQ,EACR,MAAY,EACZ,SAAc,EACd,SAAmB,EACnB,KAAK,EACL,WAAW,EACX,KAAiB,EACjB,EAAW,EACX,SAAS,EACT,KAAK,EACL,YAAmB,EACnB,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,GAAG,MAAM,EACV,EAAE,WAAW,GAAG,qBAAqB,oDAwPrC;AAED,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACrC,cAAc,8CAA8C,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { CSSObject } from '@emotion/react';
2
+ import type { ScaleOption as Opt } from '@tremolo-ui/functions/components/Slider/type';
3
+ export type ScaleOption = Opt & {
4
+ style?: CSSObject;
5
+ };
6
+ //# sourceMappingURL=type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../../../../../../src/components/Slider/type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,KAAK,EAAE,WAAW,IAAI,GAAG,EAAE,MAAM,8CAA8C,CAAA;AAEtF,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG;IAC9B,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCallbackRef.d.ts","sourceRoot":"","sources":["../../../../../../../src/hooks/useCallbackRef.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,SAAS,OAAO,EAAE,EAAE,MAAM,EAC3D,QAAQ,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,GAAG,SAAS,EACjD,IAAI,GAAE,KAAK,CAAC,cAAmB,aAUF,IAAI,wBAClC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEventListener.d.ts","sourceRoot":"","sources":["../../../../../../../src/hooks/useEventListener.ts"],"names":[],"mappings":"AAIA,KAAK,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,CAAA;AAC7D,KAAK,OAAO,GAAG,OAAO,GAAG,uBAAuB,CAAA;AAEhD,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,gBAAgB,EAC/D,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAAK,IAAI,EAC9C,OAAO,CAAC,EAAE,OAAO,GAChB,YAAY,CAAA;AACf,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,cAAc,EAC7D,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI,EAC5C,OAAO,CAAC,EAAE,OAAO,GAChB,YAAY,CAAA;AACf,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,2BAA2B,EAC1E,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAC,CAAC,KAAK,IAAI,EACzD,OAAO,CAAC,EAAE,OAAO,GAChB,YAAY,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRefCallbackEvent.d.ts","sourceRoot":"","sources":["../../../../../../../src/hooks/useRefCallbackEvent.ts"],"names":[],"mappings":"AAEA,KAAK,OAAO,GAAG,OAAO,GAAG,uBAAuB,CAAA;AAChD,KAAK,YAAY,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAA;AAErD,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,gBAAgB,EAClE,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAAK,IAAI,EAC7C,OAAO,CAAC,EAAE,OAAO,EACjB,IAAI,CAAC,EAAE,KAAK,CAAC,cAAc,GAC1B,YAAY,CAAA"}
@@ -0,0 +1,7 @@
1
+ export * from '@tremolo-ui/functions/math';
2
+ export type * from '@tremolo-ui/functions/types';
3
+ export { AnimationCanvas } from './components/AnimationCanvas';
4
+ export { Knob } from './components/Knob';
5
+ export { NumberInput } from './components/NumberInput';
6
+ export { Slider } from './components/Slider';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,mBAAmB,6BAA6B,CAAA;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pseudo.d.ts","sourceRoot":"","sources":["../../../../../../../src/system/pseudo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAQ1C,eAAO,MAAM,oBAAoB,+JAWvB,CAAA;AAEV,eAAO,MAAM,oBAAoB,+IAWvB,CAAA;AAEV,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAA;AAChE,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC;KACpC,GAAG,IAAI,YAAY,GAAG,SAAS;CACjC,CAAC,CAAA;AAEF,eAAO,MAAM,yBAAyB,6CAI5B,CAAA;AAEV,eAAO,MAAM,yBAAyB,0CAI5B,CAAA;AAEV,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAA;AAC1E,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC;KACzC,GAAG,IAAI,iBAAiB,GAAG,SAAS;CACtC,CAAC,CAAA"}
@@ -1,11 +1,34 @@
1
- export * from 'common/math';
2
- import { WheelOption } from 'common/types';
3
- export * from 'common/types';
1
+ export * from '@tremolo-ui/functions/math';
2
+ import { WheelOption } from '@tremolo-ui/functions/types';
3
+ export * from '@tremolo-ui/functions/types';
4
4
  import * as _emotion_react_jsx_runtime from '@emotion/react/jsx-runtime';
5
5
  import { CSSObject } from '@emotion/react';
6
- import React, { ReactElement } from 'react';
7
- import { ScaleOption as ScaleOption$1, Direction, ScaleType, ScaleOrderList } from 'common/components/Slider/type';
6
+ import React$1, { MutableRefObject, ChangeEvent, ReactElement } from 'react';
7
+ import { Units } from '@tremolo-ui/functions/components/NumberInput/type';
8
+ import { ScaleOption as ScaleOption$1, Direction, ScaleType, ScaleOrderList } from '@tremolo-ui/functions/components/Slider/type';
8
9
 
10
+ type DrawFunc = (context: CanvasRenderingContext2D, width: MutableRefObject<number>, height: MutableRefObject<number>, count: number) => void;
11
+ interface AnimationCanvasProps {
12
+ width?: number;
13
+ height?: number;
14
+ relativeSize?: boolean;
15
+ /** only available relativeSize=true */
16
+ reduceFlickering?: boolean;
17
+ options?: CanvasRenderingContext2DSettings;
18
+ style?: CSSObject;
19
+ init?: DrawFunc;
20
+ draw: DrawFunc;
21
+ }
22
+ /**
23
+ * A simple animatable canvas with requestAnimationFrame()
24
+ */
25
+ declare function AnimationCanvas({ width, height, style, relativeSize, reduceFlickering, options, init, draw, ...props }: AnimationCanvasProps & Omit<React.ClassAttributes<HTMLCanvasElement> & React.CanvasHTMLAttributes<HTMLCanvasElement>, 'ref' | 'width' | 'height' | 'style'>): _emotion_react_jsx_runtime.JSX.Element;
26
+
27
+ declare const inputPseudoPropNames: readonly ["_enabled", "_disabled", "_readOnly", "_readWrite", "_placeholderShown", "_blank", "_valid", "_invalid", "_inRange", "_outOfRange"];
28
+ type InputPseudos = (typeof inputPseudoPropNames)[number];
29
+ type InputPseudoProps = Partial<{
30
+ [key in InputPseudos]: CSSObject;
31
+ }>;
9
32
  declare const userActionPseudoPropNames: readonly ["_hover", "_active", "_focus"];
10
33
  type UserActionPseudos = (typeof userActionPseudoPropNames)[number];
11
34
  type UserActionPseudoProps = Partial<{
@@ -41,7 +64,49 @@ interface KnobProps {
41
64
  /**
42
65
  * simple rotary Knob.
43
66
  */
44
- declare function Knob({ value, min, max, defaultValue, startValue, step, skew, size, width, height, options, cursor, style, bodyNoSelect, enableWheel, enableDoubleClickDefault, onChange, _active, _focus, _hover, ...props }: KnobProps & UserActionPseudoProps & Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement>, 'onChange'>): _emotion_react_jsx_runtime.JSX.Element;
67
+ declare function Knob({ value, min, max, defaultValue, startValue, step, skew, size, width, height, options, cursor, style, bodyNoSelect, enableWheel, enableDoubleClickDefault, onChange, _active, _focus, _hover, ...props }: KnobProps & UserActionPseudoProps & Omit<React$1.ClassAttributes<HTMLDivElement> & React$1.HTMLAttributes<HTMLDivElement>, 'onChange'>): _emotion_react_jsx_runtime.JSX.Element;
68
+
69
+ interface NumberInputProps {
70
+ value: number | string;
71
+ min?: number;
72
+ max?: number;
73
+ step?: number;
74
+ disabled?: boolean;
75
+ placeholder?: string;
76
+ readOnly?: boolean;
77
+ tabIndex?: number;
78
+ /**
79
+ * @example
80
+ * units='Hz'
81
+ * units={[['Hz', 1], ['kHz', 1000]]}
82
+ * units={[['ms', 1], ['s', 1000]]}
83
+ */
84
+ units?: string | Units;
85
+ /**
86
+ * NOTE: If units is specified, it is forced to `false`
87
+ */
88
+ strict?: boolean;
89
+ /**
90
+ * @example
91
+ * with units-{[['Hz', 1], ['kHz', 1000]]}
92
+ * 3 ... 100Hz, 1.60Hz
93
+ */
94
+ digit?: number;
95
+ selectWithFocus?: 'all' | 'number' | 'none';
96
+ blurWithEnter?: boolean;
97
+ className?: string;
98
+ style?: CSSObject;
99
+ onChange?: (value: number, event: ChangeEvent<HTMLInputElement>) => void;
100
+ onFocus?: (value: number, event: React.FocusEvent<HTMLInputElement, Element>) => void;
101
+ onBlur?: (value: number, event: React.FocusEvent<HTMLInputElement, Element>) => void;
102
+ }
103
+ /**
104
+ * Input with some useful functions for entering numerical values.
105
+ */
106
+ declare function NumberInput({ value, min, // TODO
107
+ max, // TODO
108
+ step, // TODO
109
+ units, disabled, placeholder, readOnly, tabIndex, strict, digit, selectWithFocus, blurWithEnter, className, style, onChange, onFocus, onBlur, ...pseudo }: NumberInputProps & UserActionPseudoProps & InputPseudoProps): _emotion_react_jsx_runtime.JSX.Element;
45
110
 
46
111
  type ScaleOption = ScaleOption$1 & {
47
112
  style?: CSSObject;
@@ -72,4 +137,4 @@ interface SliderProps {
72
137
  */
73
138
  declare function Slider({ value, min, max, step, skew, length, thickness, direction, scale, scaleOption, color, bg, className, style, bodyNoSelect, enableWheel, onChange, children, ...pseudo }: SliderProps & UserActionPseudoProps): _emotion_react_jsx_runtime.JSX.Element;
74
139
 
75
- export { Knob, Slider };
140
+ export { AnimationCanvas, Knob, NumberInput, Slider };
package/dist/esm/index.js CHANGED
@@ -1,10 +1,57 @@
1
- import { normalizeValue, radian, rawValue, clamp, stepValue } from 'common/math';
2
- export * from 'common/math';
3
1
  import { jsxs, Fragment, jsx } from '@emotion/react/jsx-runtime';
4
2
  import { css, Global } from '@emotion/react';
5
- import React, { useRef, useInsertionEffect, useCallback, useEffect, useMemo } from 'react';
6
- import { isReversed, parseScaleOrderList, isHorizontal, gradientDirection, isVertical } from 'common/components/Slider/type';
7
- import { styleHelper } from 'common/util';
3
+ import React, { useRef, useEffect, useInsertionEffect, useCallback, useMemo, useState } from 'react';
4
+
5
+ function clamp(value, min, max) {
6
+ return Math.max(min, Math.min(value, max));
7
+ }
8
+ function normalizeValue(rawValue, min, max, skew = 1) {
9
+ if (min >= max)
10
+ throw new RangeError('requirements: min < max');
11
+ const v = clamp((rawValue - min) / (max - min), 0, 1);
12
+ return Math.pow(v, skew);
13
+ }
14
+ function rawValue(normalizedValue, min, max, skew = 1) {
15
+ if (min >= max)
16
+ throw new RangeError('requirements: min < max');
17
+ const v = skew == 1
18
+ ? clamp(normalizedValue, 0, 1)
19
+ : Math.exp(Math.log(clamp(normalizedValue, 0, 1)) / skew);
20
+ return min + v * (max - min);
21
+ }
22
+ function skewWithCenterValue(centerValue, min, max) {
23
+ if (!(min <= centerValue && centerValue <= max))
24
+ throw new RangeError('requirements: min <= centerValue <= max');
25
+ return Math.log(0.5) / Math.log((centerValue - min) / (max - min));
26
+ }
27
+ function stepValue(value, step) {
28
+ var _a;
29
+ if (step <= 0)
30
+ throw new RangeError('requirements: step > 0');
31
+ const quotient = Math.floor(value / step);
32
+ const decimalDigits = (_a = decimalPart(step)) === null || _a === void 0 ? void 0 : _a.length;
33
+ const v = toFixed(quotient * step, decimalDigits);
34
+ const next = toFixed((quotient + 1) * step, decimalDigits);
35
+ return Math.abs(value - v) < Math.abs(value - next) ? v : next;
36
+ }
37
+ function toFixed(x, fractionDigits) {
38
+ return Number(x.toFixed(fractionDigits));
39
+ }
40
+ function decimalPart(x) {
41
+ return String(x).split('.')[1];
42
+ }
43
+ function radian(degree) {
44
+ return (Math.PI * degree) / 180;
45
+ }
46
+ function degree(radian) {
47
+ return (180 * radian) / Math.PI;
48
+ }
49
+ function dbToGain(db) {
50
+ return Math.pow(10, db / 20);
51
+ }
52
+ function gainToDb(gain) {
53
+ return 20 * (Math.log(gain) / Math.LN10);
54
+ }
8
55
 
9
56
  /******************************************************************************
10
57
  Copyright (c) Microsoft Corporation.
@@ -40,53 +87,6 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
40
87
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
41
88
  };
42
89
 
43
- /**
44
- * This hook is user-land implementation of the experimental `useEffectEvent` hook.
45
- * React docs: https://react.dev/learn/separating-events-from-effects#declaring-an-effect-event
46
- */
47
- function useCallbackRef(callback, deps = []) {
48
- const callbackRef = useRef(() => {
49
- throw new Error('Cannot call an event handler while rendering.');
50
- });
51
- useInsertionEffect(() => {
52
- callbackRef.current = callback;
53
- });
54
- return useCallback((...args) => { var _a; return (_a = callbackRef.current) === null || _a === void 0 ? void 0 : _a.call(callbackRef, ...args); }, deps);
55
- }
56
-
57
- function useEventListener(target, event, handler, options) {
58
- const listener = useCallbackRef(handler);
59
- useEffect(() => {
60
- const node = typeof target === 'function' ? target() : (target !== null && target !== void 0 ? target : document);
61
- if (!handler || !node)
62
- return;
63
- node.addEventListener(event, listener, options);
64
- return () => {
65
- node.removeEventListener(event, listener, options);
66
- };
67
- }, [event, target, options, listener, handler]);
68
- return () => {
69
- const node = typeof target === 'function' ? target() : (target !== null && target !== void 0 ? target : document);
70
- node === null || node === void 0 ? void 0 : node.removeEventListener(event, listener, options);
71
- };
72
- }
73
-
74
- function useRefCallbackEvent(event, handler, options, deps = []) {
75
- return useMemo(() => {
76
- let cleanup;
77
- return (node) => {
78
- if (!node) {
79
- cleanup === null || cleanup === void 0 ? void 0 : cleanup();
80
- return;
81
- }
82
- node.addEventListener(event, handler, options);
83
- cleanup = () => {
84
- node.removeEventListener(event, handler, options);
85
- };
86
- };
87
- }, deps);
88
- }
89
-
90
90
  // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/save
91
91
  const drawingState = [
92
92
  'strokeStyle',
@@ -199,6 +199,53 @@ function AnimationCanvas(_a) {
199
199
  return (jsxs(Fragment, { children: [jsx("canvas", Object.assign({ width: relativeSize ? 0 : width, height: relativeSize ? 0 : height, css: css(style), ref: canvasRef }, props)), relativeSize && reduceFlickering && (jsx("canvas", { style: { display: 'none' }, width: relativeSize ? 0 : width, height: relativeSize ? 0 : height, ref: memoCanvasRef }))] }));
200
200
  }
201
201
 
202
+ /**
203
+ * This hook is user-land implementation of the experimental `useEffectEvent` hook.
204
+ * React docs: https://react.dev/learn/separating-events-from-effects#declaring-an-effect-event
205
+ */
206
+ function useCallbackRef(callback, deps = []) {
207
+ const callbackRef = useRef(() => {
208
+ throw new Error('Cannot call an event handler while rendering.');
209
+ });
210
+ useInsertionEffect(() => {
211
+ callbackRef.current = callback;
212
+ });
213
+ return useCallback((...args) => { var _a; return (_a = callbackRef.current) === null || _a === void 0 ? void 0 : _a.call(callbackRef, ...args); }, deps);
214
+ }
215
+
216
+ function useEventListener(target, event, handler, options) {
217
+ const listener = useCallbackRef(handler);
218
+ useEffect(() => {
219
+ const node = typeof target === 'function' ? target() : (target !== null && target !== void 0 ? target : document);
220
+ if (!handler || !node)
221
+ return;
222
+ node.addEventListener(event, listener, options);
223
+ return () => {
224
+ node.removeEventListener(event, listener, options);
225
+ };
226
+ }, [event, target, options, listener, handler]);
227
+ return () => {
228
+ const node = typeof target === 'function' ? target() : (target !== null && target !== void 0 ? target : document);
229
+ node === null || node === void 0 ? void 0 : node.removeEventListener(event, listener, options);
230
+ };
231
+ }
232
+
233
+ function useRefCallbackEvent(event, handler, options, deps = []) {
234
+ return useMemo(() => {
235
+ let cleanup;
236
+ return (node) => {
237
+ if (!node) {
238
+ cleanup === null || cleanup === void 0 ? void 0 : cleanup();
239
+ return;
240
+ }
241
+ node.addEventListener(event, handler, options);
242
+ cleanup = () => {
243
+ node.removeEventListener(event, handler, options);
244
+ };
245
+ };
246
+ }, deps);
247
+ }
248
+
202
249
  const defaultOptions = {
203
250
  active: '#7998ec',
204
251
  inactive: '#eee',
@@ -293,6 +340,8 @@ function Knob(_a) {
293
340
  const w = _w.current, cx = w / 2;
294
341
  const h = _h.current, cy = h / 2;
295
342
  const r = Math.min(cx, cy);
343
+ if (r <= 0)
344
+ return;
296
345
  // reset
297
346
  ctx.clearRect(0, 0, w, h);
298
347
  ctx.lineCap = 'butt';
@@ -327,6 +376,163 @@ function Knob(_a) {
327
376
  } })] })));
328
377
  }
329
378
 
379
+ function selectUnit(units, value) {
380
+ if (typeof units == 'string')
381
+ return [units, 1];
382
+ let i = 0;
383
+ for (; i < units.length; i++) {
384
+ if (Math.abs(units[i][1]) > Math.abs(value))
385
+ break;
386
+ }
387
+ return units[Math.max(0, i - 1)];
388
+ }
389
+ function parseValue(inputString, units, digit) {
390
+ if (!units) {
391
+ return {
392
+ rawValue: Number(inputString.trim()) || 0,
393
+ formatValue: inputString.trim(),
394
+ unit: '',
395
+ };
396
+ }
397
+ else if (typeof units == 'string') {
398
+ return {
399
+ rawValue: Number(inputString.trim()) || 0,
400
+ formatValue: `${inputString.trim()}${units}`,
401
+ unit: units,
402
+ };
403
+ }
404
+ const unitList = units.map(([u, _s]) => u);
405
+ const scaleList = units.map(([_u, s]) => s);
406
+ let rawValue = 0;
407
+ let formatValue = `${scaleList[0]}`;
408
+ let unit = unitList[0];
409
+ const m = inputString.trim().match(/^(-?\d+(\.\d+)?)\s*(\w*)$/);
410
+ if (m) {
411
+ rawValue = Number(m[1]) || 0;
412
+ const inputUnit = m[3];
413
+ if (inputUnit != '' && unitList.indexOf(inputUnit) != -1) {
414
+ rawValue *= scaleList[unitList.indexOf(inputUnit)];
415
+ const s = selectUnit(units, rawValue);
416
+ const v = rawValue / s[1];
417
+ formatValue = `${digit != undefined ? toFixed(v, digit) : v}${s[0]}`;
418
+ unit = s[0];
419
+ }
420
+ else {
421
+ const [u, scale] = selectUnit(units, rawValue);
422
+ const v = rawValue / scale;
423
+ formatValue = `${digit != undefined ? toFixed(v, digit) : v}${u}`;
424
+ unit = u;
425
+ }
426
+ }
427
+ return {
428
+ rawValue: rawValue,
429
+ formatValue: formatValue,
430
+ unit: unit,
431
+ };
432
+ }
433
+
434
+ /**
435
+ * Input with some useful functions for entering numerical values.
436
+ */
437
+ function NumberInput(_a) {
438
+ var { value, min, // TODO
439
+ max, // TODO
440
+ step, // TODO
441
+ units, disabled = false, placeholder, readOnly, tabIndex, strict = false, digit, selectWithFocus = 'none', blurWithEnter = true, className, style, onChange, onFocus, onBlur } = _a, pseudo = __rest(_a, ["value", "min", "max", "step", "units", "disabled", "placeholder", "readOnly", "tabIndex", "strict", "digit", "selectWithFocus", "blurWithEnter", "className", "style", "onChange", "onFocus", "onBlur"]);
442
+ const [showValue, setShowValue] = useState(parseValue(String(value), units, digit).formatValue);
443
+ const calculatedStrict = units ? false : strict;
444
+ const { _active, _focus, _hover } = pseudo;
445
+ return (jsx("input", { className: 'tremolo-slider' + (className ? ` ${className}` : ''), value: showValue, type: calculatedStrict ? 'number' : 'text', spellCheck: 'false', disabled: disabled, placeholder: placeholder, readOnly: readOnly, tabIndex: tabIndex, css: css(Object.assign(Object.assign({ display: 'inline-block', height: '2rem', font: 'inherit', margin: 0, paddingLeft: 10, paddingRight: 10, outlineColor: 'transparent', outlineStyle: 'solid', outlineWidth: 1, background: 'inherit', appearance: 'none', borderStyle: 'solid', borderWidth: 1, borderColor: '#bbb', borderRadius: 4, '&:hover': Object.assign({ outlineColor: '#bbb' }, _hover), '&:focus': Object.assign({ outlineColor: '#4e76e6', outlineWidth: 2 }, _focus) }, (_active && { '&:active': Object.assign({}, _active) })), style)), onChange: (event) => {
446
+ const v = event.currentTarget.value;
447
+ setShowValue(v);
448
+ if (onChange)
449
+ onChange(parseValue(v, units, digit).rawValue, event);
450
+ }, onFocus: (event) => {
451
+ const v = event.currentTarget.value;
452
+ const parsed = parseValue(v, units, digit);
453
+ if (selectWithFocus == 'all') {
454
+ event.currentTarget.setSelectionRange(0, v.length);
455
+ }
456
+ else if (selectWithFocus == 'number') {
457
+ event.currentTarget.setSelectionRange(0, parsed.formatValue.length - parsed.unit.length);
458
+ }
459
+ if (onFocus)
460
+ onFocus(parsed.rawValue, event);
461
+ }, onBlur: (event) => {
462
+ // update value
463
+ const v = event.currentTarget.value;
464
+ const parsed = parseValue(v, units, digit);
465
+ setShowValue(parsed.formatValue);
466
+ if (onBlur)
467
+ onBlur(parsed.rawValue, event);
468
+ }, onKeyDown: (event) => {
469
+ if (blurWithEnter && event.key == 'Enter') {
470
+ event.currentTarget.blur();
471
+ }
472
+ } }));
473
+ }
474
+
475
+ function isHorizontal(d) {
476
+ return d == 'right' || d == 'left';
477
+ }
478
+ function isVertical(d) {
479
+ return d == 'up' || d == 'down';
480
+ }
481
+ function isReversed(d) {
482
+ return d == 'left' || d == 'up';
483
+ }
484
+ function gradientDirection(d) {
485
+ if (d == 'left' || d == 'right')
486
+ return d;
487
+ if (d == 'up')
488
+ return 'top';
489
+ if (d == 'down')
490
+ return 'bottom';
491
+ }
492
+ function parseScaleOrderList(scale, min, max, step) {
493
+ var _a;
494
+ let scalesList = [];
495
+ if (!scale) ;
496
+ else if (typeof scale[0] == 'object') {
497
+ scalesList = scale;
498
+ }
499
+ else {
500
+ const per = scale[0] == 'step' ? step : scale[0];
501
+ const count = Math.floor(max / per) - Math.ceil(min / per) + 1;
502
+ for (let i = 0; i < count; i++) {
503
+ const at = toFixed(per * (Math.ceil(min / per) + i), (_a = decimalPart(per)) === null || _a === void 0 ? void 0 : _a.length);
504
+ scalesList.push({ at: at, type: scale[1] });
505
+ }
506
+ }
507
+ return scalesList;
508
+ }
509
+
510
+ function styleHelper(value, op, influencer) {
511
+ if (op && influencer) {
512
+ if (typeof value == 'number') {
513
+ if (op == '+')
514
+ return `${value + influencer}px`;
515
+ if (op == '-')
516
+ return `${value - influencer}px`;
517
+ if (op == '*')
518
+ return `${value * influencer}px`;
519
+ if (op == '/')
520
+ return `${value / influencer}px`;
521
+ }
522
+ else {
523
+ return `calc(${value}px ${op} ${influencer})`;
524
+ }
525
+ }
526
+ else {
527
+ if (typeof value == 'number') {
528
+ return `${value}px`;
529
+ }
530
+ else {
531
+ return value;
532
+ }
533
+ }
534
+ }
535
+
330
536
  function SliderThumb({ color, children, style, __css, }) {
331
537
  return (jsx("div", { className: "tremolo-slider-thumb-wrapper", css: css(Object.assign({ width: 'fit-content', height: 'fit-content', position: 'absolute', translate: '-50% -50%', zIndex: 100 }, __css)), children: children ? (children) : (
332
538
  // default slider thumb
@@ -493,5 +699,5 @@ function Slider(_a) {
493
699
  }) }))] })] }));
494
700
  }
495
701
 
496
- export { Knob, Slider };
702
+ export { AnimationCanvas, Knob, NumberInput, Slider, clamp, dbToGain, decimalPart, degree, gainToDb, normalizeValue, radian, rawValue, skewWithCenterValue, stepValue, toFixed };
497
703
  //# sourceMappingURL=index.js.map