@pie-lib/tools 1.1.0-next.1 → 1.1.0-next.4

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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.1.0-next.3](https://github.com/pie-framework/pie-lib/compare/@pie-lib/tools@1.1.0-next.1...@pie-lib/tools@1.1.0-next.3) (2026-01-27)
7
+
8
+ **Note:** Version bump only for package @pie-lib/tools
9
+
10
+
11
+
12
+
13
+
6
14
  # [1.1.0-next.1](https://github.com/pie-framework/pie-lib/compare/@pie-lib/tools@0.29.1...@pie-lib/tools@1.1.0-next.1) (2026-01-26)
7
15
 
8
16
 
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.toRadians = exports.toPoint = exports.toDegrees = exports.normalizeAngle = exports.getXAndY = exports.getTop = exports.getLeft = exports.getAngleAndHypotenuse = exports.getAnchor = exports.distanceBetween = exports.arctangent = void 0;
8
+ var _trigonometryCalculator = require("trigonometry-calculator");
9
+ var _pointGeometry = _interopRequireDefault(require("@mapbox/point-geometry"));
10
+ var _debug = _interopRequireDefault(require("debug"));
11
+ var _transformOrigin = require("./transform-origin");
12
+ var log = (0, _debug["default"])('@pie-lib:tools:anchor-utils');
13
+ var toDegrees = exports.toDegrees = function toDegrees(radians) {
14
+ return radians * (180 / Math.PI);
15
+ };
16
+ var toRadians = exports.toRadians = function toRadians(degrees) {
17
+ return degrees * (Math.PI / 180);
18
+ };
19
+ var normalizeAngle = exports.normalizeAngle = function normalizeAngle(a) {
20
+ if (a > 360) {
21
+ return a % 360;
22
+ } else if (a < 0) {
23
+ return 360 + a % 360;
24
+ }
25
+ return a;
26
+ };
27
+ var toPoint = exports.toPoint = function toPoint(rect, edge) {
28
+ var out = (0, _transformOrigin.parse)(rect, edge);
29
+ return new _pointGeometry["default"](out.x, out.y);
30
+ };
31
+
32
+ /**
33
+ * Get the distance between to anchor points in a rect.
34
+ * @param {{width: number, height: number}} rect - the rect
35
+ * @param {number} degrees - the degrees
36
+ * @param {string} from - from anchor
37
+ * @param {string} to - to anchor
38
+ * @returns {Point} point - the distance as a Point
39
+ */
40
+ var distanceBetween = exports.distanceBetween = function distanceBetween(rect, degrees, from, to) {
41
+ var center = new _pointGeometry["default"](rect.width / 2, rect.height / 2);
42
+ var radians = toRadians(degrees);
43
+ var fromCenter = center.rotateAround(radians, toPoint(rect, from));
44
+ var toCenter = center.rotateAround(radians, toPoint(rect, to));
45
+ var diff = fromCenter.sub(toCenter);
46
+ return diff;
47
+ };
48
+
49
+ /**
50
+ * For a corner string, a point and a rect, return a relative x,y from that point to a corner.
51
+ * Note that the y value descends as it goes down (unlike for a screen's y value), so this is only really useful for math functions.
52
+ * @example
53
+ * ```
54
+ * getXAndY('top-left', {width: 100, height: 100}, 10, 10) //=> {x:10, y: -90}
55
+ * ```
56
+ * @param {*} corner
57
+ * @param {*} rect
58
+ * @param {*} point
59
+ */
60
+ var getXAndY = exports.getXAndY = function getXAndY(corner, rect, point) {
61
+ if (corner === 'top-left') {
62
+ var x = point.x * -1;
63
+ var y = point.y;
64
+ return {
65
+ x: x,
66
+ y: y
67
+ };
68
+ } else if (corner === 'bottom-left') {
69
+ var _x = point.x * -1;
70
+ var _y = point.y - rect.height;
71
+ return {
72
+ x: _x,
73
+ y: _y
74
+ };
75
+ } else if (corner === 'top-right') {
76
+ var _x2 = rect.width - point.x;
77
+ var _y2 = point.y;
78
+ return {
79
+ x: _x2,
80
+ y: _y2
81
+ };
82
+ } else if (corner === 'bottom-right') {
83
+ var _x3 = rect.width - point.x;
84
+ var _y3 = point.y - rect.height;
85
+ return {
86
+ x: _x3,
87
+ y: _y3
88
+ };
89
+ }
90
+ };
91
+ var arctangent = exports.arctangent = function arctangent(x, y) {
92
+ return toDegrees(Math.atan2(x, y));
93
+ };
94
+ var getAngleAndHypotenuse = exports.getAngleAndHypotenuse = function getAngleAndHypotenuse(corner, rect, point) {
95
+ var _getXAndY = getXAndY(corner, rect, point),
96
+ x = _getXAndY.x,
97
+ y = _getXAndY.y;
98
+ var degrees = arctangent(x, y);
99
+ var hypotenuse = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
100
+ return {
101
+ x: x,
102
+ y: y,
103
+ degrees: degrees,
104
+ hypotenuse: hypotenuse
105
+ };
106
+ };
107
+ var getPosition = function getPosition(side, rect, point, angle, calcAngle) {
108
+ if (angle === 0) {
109
+ return side === 'left' ? point.x : point.y;
110
+ }
111
+ var points = anglePoints(angle);
112
+ var key = points[side];
113
+ var _getAngleAndHypotenus = getAngleAndHypotenuse(key, rect, point),
114
+ degrees = _getAngleAndHypotenus.degrees,
115
+ hypotenuse = _getAngleAndHypotenus.hypotenuse;
116
+ var ra = calcAngle(degrees);
117
+ if (ra === 0) {
118
+ return hypotenuse;
119
+ }
120
+ var t = {
121
+ angles: {
122
+ 0: ra,
123
+ 1: 90
124
+ },
125
+ sides: {
126
+ 1: hypotenuse
127
+ }
128
+ };
129
+ var out = (0, _trigonometryCalculator.trigCalculator)(t);
130
+ return out.sides[2];
131
+ };
132
+ var getTop = exports.getTop = function getTop(rect, point, angle) {
133
+ return getPosition('top', rect, point, angle, function (degrees) {
134
+ return Math.abs(angle + degrees);
135
+ });
136
+ };
137
+ var getLeft = exports.getLeft = function getLeft(rect, point, angle) {
138
+ return getPosition('left', rect, point, angle, function (degrees) {
139
+ return Math.abs(angle + degrees + 90);
140
+ });
141
+ };
142
+
143
+ /**
144
+ * Calculate the position of an anchor within a bounding rect, if the source rect has been rotated by an angle.
145
+ * It does this by finding the appropriate corner of the src rect, that touches the bounding rect, calculates
146
+ * the hypotenuse (h) of that anchor to that point. Then using that plus the rotation it calculates
147
+ * the sides of the triangle and returns the length of the side that touches the bounding rect.
148
+ * @param {{width: number, height: number}} rect - the rect which contains the point
149
+ * @param {{x:number, y: number}} point - the point within the rect
150
+ * @param {number} angle - the angle in degrees that the rect has rotated.
151
+ * @returns {{left: number, top: number}} position
152
+ */
153
+ var getAnchor = exports.getAnchor = function getAnchor(rect, point, angle) {
154
+ log('[getAnchor] rect: ', rect, 'point:', point, 'angle: ', angle);
155
+ if (point.x > rect.width) {
156
+ throw new Error("x: ".concat(point.x, " cannot be greater than width: ").concat(rect.width));
157
+ }
158
+ if (point.y > rect.height) {
159
+ throw new Error("y: ".concat(point.y, " cannot be greater than height: ").concat(rect.height));
160
+ }
161
+ var a = normalizeAngle(angle);
162
+ var top = getTop(rect, point, a);
163
+ var left = getLeft(rect, point, a);
164
+ log('[getAnchor] top: ', top, 'left: ', left);
165
+ return {
166
+ top: top,
167
+ left: left
168
+ };
169
+ };
170
+ var anglePoints = function anglePoints(angle) {
171
+ if (angle <= 90) {
172
+ return {
173
+ top: 'top-left',
174
+ left: 'bottom-left'
175
+ };
176
+ } else if (angle > 90 && angle <= 180) {
177
+ return {
178
+ top: 'bottom-left',
179
+ left: 'bottom-right'
180
+ };
181
+ } else if (angle > 180 && angle <= 270) {
182
+ return {
183
+ top: 'bottom-right',
184
+ left: 'top-right'
185
+ };
186
+ } else if (angle > 270 && angle < 360) {
187
+ return {
188
+ top: 'top-right',
189
+ left: 'top-left'
190
+ };
191
+ }
192
+ };
193
+ //# sourceMappingURL=anchor-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anchor-utils.js","names":["_trigonometryCalculator","require","_pointGeometry","_interopRequireDefault","_debug","_transformOrigin","log","debug","toDegrees","exports","radians","Math","PI","toRadians","degrees","normalizeAngle","a","toPoint","rect","edge","out","parseOrigin","Point","x","y","distanceBetween","from","to","center","width","height","fromCenter","rotateAround","toCenter","diff","sub","getXAndY","corner","point","arctangent","atan2","getAngleAndHypotenuse","_getXAndY","hypotenuse","sqrt","pow","getPosition","side","angle","calcAngle","points","anglePoints","key","_getAngleAndHypotenus","ra","t","angles","sides","trigCalculator","getTop","abs","getLeft","getAnchor","Error","concat","top","left"],"sources":["../src/anchor-utils.js"],"sourcesContent":["import { trigCalculator } from 'trigonometry-calculator';\nimport Point from '@mapbox/point-geometry';\nimport debug from 'debug';\nimport { parse as parseOrigin } from './transform-origin';\nconst log = debug('@pie-lib:tools:anchor-utils');\n\nexport const toDegrees = (radians) => radians * (180 / Math.PI);\nexport const toRadians = (degrees) => degrees * (Math.PI / 180);\n\nexport const normalizeAngle = (a) => {\n if (a > 360) {\n return a % 360;\n } else if (a < 0) {\n return 360 + (a % 360);\n }\n return a;\n};\n\nexport const toPoint = (rect, edge) => {\n const out = parseOrigin(rect, edge);\n return new Point(out.x, out.y);\n};\n\n/**\n * Get the distance between to anchor points in a rect.\n * @param {{width: number, height: number}} rect - the rect\n * @param {number} degrees - the degrees\n * @param {string} from - from anchor\n * @param {string} to - to anchor\n * @returns {Point} point - the distance as a Point\n */\nexport const distanceBetween = (rect, degrees, from, to) => {\n const center = new Point(rect.width / 2, rect.height / 2);\n const radians = toRadians(degrees);\n const fromCenter = center.rotateAround(radians, toPoint(rect, from));\n const toCenter = center.rotateAround(radians, toPoint(rect, to));\n const diff = fromCenter.sub(toCenter);\n return diff;\n};\n\n/**\n * For a corner string, a point and a rect, return a relative x,y from that point to a corner.\n * Note that the y value descends as it goes down (unlike for a screen's y value), so this is only really useful for math functions.\n * @example\n * ```\n * getXAndY('top-left', {width: 100, height: 100}, 10, 10) //=> {x:10, y: -90}\n * ```\n * @param {*} corner\n * @param {*} rect\n * @param {*} point\n */\nexport const getXAndY = (corner, rect, point) => {\n if (corner === 'top-left') {\n const x = point.x * -1;\n const y = point.y;\n return { x, y };\n } else if (corner === 'bottom-left') {\n const x = point.x * -1;\n const y = point.y - rect.height;\n return { x, y };\n } else if (corner === 'top-right') {\n const x = rect.width - point.x;\n const y = point.y;\n return { x, y };\n } else if (corner === 'bottom-right') {\n const x = rect.width - point.x;\n const y = point.y - rect.height;\n return { x, y };\n }\n};\n\nexport const arctangent = (x, y) => toDegrees(Math.atan2(x, y));\n\nexport const getAngleAndHypotenuse = (corner, rect, point) => {\n const { x, y } = getXAndY(corner, rect, point);\n const degrees = arctangent(x, y);\n const hypotenuse = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n return { x, y, degrees, hypotenuse };\n};\n\nconst getPosition = (side, rect, point, angle, calcAngle) => {\n if (angle === 0) {\n return side === 'left' ? point.x : point.y;\n }\n const points = anglePoints(angle);\n const key = points[side];\n\n const { degrees, hypotenuse } = getAngleAndHypotenuse(key, rect, point);\n\n const ra = calcAngle(degrees);\n\n if (ra === 0) {\n return hypotenuse;\n }\n\n const t = {\n angles: { 0: ra, 1: 90 },\n sides: { 1: hypotenuse },\n };\n const out = trigCalculator(t);\n return out.sides[2];\n};\n\nexport const getTop = (rect, point, angle) => {\n return getPosition('top', rect, point, angle, (degrees) => {\n return Math.abs(angle + degrees);\n });\n};\n\nexport const getLeft = (rect, point, angle) => {\n return getPosition('left', rect, point, angle, (degrees) => {\n return Math.abs(angle + degrees + 90);\n });\n};\n\n/**\n * Calculate the position of an anchor within a bounding rect, if the source rect has been rotated by an angle.\n * It does this by finding the appropriate corner of the src rect, that touches the bounding rect, calculates\n * the hypotenuse (h) of that anchor to that point. Then using that plus the rotation it calculates\n * the sides of the triangle and returns the length of the side that touches the bounding rect.\n * @param {{width: number, height: number}} rect - the rect which contains the point\n * @param {{x:number, y: number}} point - the point within the rect\n * @param {number} angle - the angle in degrees that the rect has rotated.\n * @returns {{left: number, top: number}} position\n */\nexport const getAnchor = (rect, point, angle) => {\n log('[getAnchor] rect: ', rect, 'point:', point, 'angle: ', angle);\n if (point.x > rect.width) {\n throw new Error(`x: ${point.x} cannot be greater than width: ${rect.width}`);\n }\n if (point.y > rect.height) {\n throw new Error(`y: ${point.y} cannot be greater than height: ${rect.height}`);\n }\n const a = normalizeAngle(angle);\n const top = getTop(rect, point, a);\n const left = getLeft(rect, point, a);\n\n log('[getAnchor] top: ', top, 'left: ', left);\n return { top, left };\n};\n\nconst anglePoints = (angle) => {\n if (angle <= 90) {\n return { top: 'top-left', left: 'bottom-left' };\n } else if (angle > 90 && angle <= 180) {\n return { top: 'bottom-left', left: 'bottom-right' };\n } else if (angle > 180 && angle <= 270) {\n return { top: 'bottom-right', left: 'top-right' };\n } else if (angle > 270 && angle < 360) {\n return { top: 'top-right', left: 'top-left' };\n }\n};\n"],"mappings":"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","ignoreList":[]}
package/lib/anchor.js ADDED
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _objectDestructuringEmpty2 = _interopRequireDefault(require("@babel/runtime/helpers/objectDestructuringEmpty"));
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _react = _interopRequireDefault(require("react"));
11
+ var _styles = require("@mui/material/styles");
12
+ var StyledAnchor = (0, _styles.styled)('div')(function (_ref) {
13
+ var theme = _ref.theme;
14
+ return {
15
+ cursor: 'pointer',
16
+ width: '20px',
17
+ height: '20px',
18
+ position: 'absolute',
19
+ borderRadius: '10px',
20
+ backgroundColor: "var(--ruler-bg, ".concat(theme.palette.primary.contrastText, ")"),
21
+ transition: 'background-color 200ms ease-in',
22
+ border: "solid 1px var(--ruler-stroke, ".concat(theme.palette.primary.dark, ")"),
23
+ '&:hover': {
24
+ backgroundColor: "var(--ruler-bg-hover, ".concat(theme.palette.primary.light, ")")
25
+ }
26
+ };
27
+ });
28
+ var Anchor = function Anchor(_ref2) {
29
+ var props = (0, _extends2["default"])({}, ((0, _objectDestructuringEmpty2["default"])(_ref2), _ref2));
30
+ return /*#__PURE__*/_react["default"].createElement(StyledAnchor, props);
31
+ };
32
+ var _default = exports["default"] = Anchor;
33
+ //# sourceMappingURL=anchor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anchor.js","names":["_react","_interopRequireDefault","require","_styles","StyledAnchor","styled","_ref","theme","cursor","width","height","position","borderRadius","backgroundColor","concat","palette","primary","contrastText","transition","border","dark","light","Anchor","_ref2","props","_extends2","_objectDestructuringEmpty2","createElement","_default","exports"],"sources":["../src/anchor.jsx"],"sourcesContent":["import React from 'react';\nimport { styled } from '@mui/material/styles';\n\nconst StyledAnchor = styled('div')(({ theme }) => ({\n cursor: 'pointer',\n width: '20px',\n height: '20px',\n position: 'absolute',\n borderRadius: '10px',\n backgroundColor: `var(--ruler-bg, ${theme.palette.primary.contrastText})`,\n transition: 'background-color 200ms ease-in',\n border: `solid 1px var(--ruler-stroke, ${theme.palette.primary.dark})`,\n '&:hover': {\n backgroundColor: `var(--ruler-bg-hover, ${theme.palette.primary.light})`,\n },\n}));\n\nconst Anchor = ({ ...props }) => <StyledAnchor {...props} />;\n\nexport default Anchor;\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAEA,IAAME,YAAY,GAAG,IAAAC,cAAM,EAAC,KAAK,CAAC,CAAC,UAAAC,IAAA;EAAA,IAAGC,KAAK,GAAAD,IAAA,CAALC,KAAK;EAAA,OAAQ;IACjDC,MAAM,EAAE,SAAS;IACjBC,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE,MAAM;IACdC,QAAQ,EAAE,UAAU;IACpBC,YAAY,EAAE,MAAM;IACpBC,eAAe,qBAAAC,MAAA,CAAqBP,KAAK,CAACQ,OAAO,CAACC,OAAO,CAACC,YAAY,MAAG;IACzEC,UAAU,EAAE,gCAAgC;IAC5CC,MAAM,mCAAAL,MAAA,CAAmCP,KAAK,CAACQ,OAAO,CAACC,OAAO,CAACI,IAAI,MAAG;IACtE,SAAS,EAAE;MACTP,eAAe,2BAAAC,MAAA,CAA2BP,KAAK,CAACQ,OAAO,CAACC,OAAO,CAACK,KAAK;IACvE;EACF,CAAC;AAAA,CAAC,CAAC;AAEH,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAAC,KAAA;EAAA,IAASC,KAAK,OAAAC,SAAA,sBAAAC,0BAAA,aAAAH,KAAA,GAAAA,KAAA;EAAA,oBAAOvB,MAAA,YAAA2B,aAAA,CAACvB,YAAY,EAAKoB,KAAQ,CAAC;AAAA;AAAC,IAAAI,QAAA,GAAAC,OAAA,cAE9CP,MAAM","ignoreList":[]}
package/lib/index.js ADDED
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ Object.defineProperty(exports, "Protractor", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _protractor["default"];
12
+ }
13
+ });
14
+ Object.defineProperty(exports, "Rotatable", {
15
+ enumerable: true,
16
+ get: function get() {
17
+ return _rotatable["default"];
18
+ }
19
+ });
20
+ Object.defineProperty(exports, "Ruler", {
21
+ enumerable: true,
22
+ get: function get() {
23
+ return _ruler["default"];
24
+ }
25
+ });
26
+ exports.utils = void 0;
27
+ var _protractor = _interopRequireDefault(require("./protractor"));
28
+ var _ruler = _interopRequireDefault(require("./ruler"));
29
+ var _rotatable = _interopRequireDefault(require("./rotatable"));
30
+ var utils = _interopRequireWildcard(require("./anchor-utils"));
31
+ exports.utils = utils;
32
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_protractor","_interopRequireDefault","require","_ruler","_rotatable","utils","_interopRequireWildcard","exports","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor"],"sources":["../src/index.js"],"sourcesContent":["import Protractor from './protractor';\nimport Ruler from './ruler';\nimport Rotatable from './rotatable';\nimport * as utils from './anchor-utils';\n\nexport { Protractor, Ruler, Rotatable, utils };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,UAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,KAAA,GAAAC,uBAAA,CAAAJ,OAAA;AAAwCK,OAAA,CAAAF,KAAA,GAAAA,KAAA;AAAA,SAAAC,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,wBAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,mBAAAT,CAAA,iBAAAA,CAAA,gBAAAU,OAAA,CAAAV,CAAA,0BAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,cAAAM,EAAA,IAAAd,CAAA,gBAAAc,EAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,EAAA,OAAAP,CAAA,IAAAD,CAAA,GAAAW,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAnB,CAAA,EAAAc,EAAA,OAAAP,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAM,EAAA,EAAAP,CAAA,IAAAC,CAAA,CAAAM,EAAA,IAAAd,CAAA,CAAAc,EAAA,WAAAN,CAAA,KAAAR,CAAA,EAAAC,CAAA","ignoreList":[]}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = exports.Graphic = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
11
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
12
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
+ var _react = _interopRequireDefault(require("react"));
15
+ var _styles = require("@mui/material/styles");
16
+ var _range = _interopRequireDefault(require("lodash/range"));
17
+ var _styleUtils = require("../style-utils");
18
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
19
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
20
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
21
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
22
+ var StyledLine = (0, _styles.styled)('line')(function (_ref) {
23
+ var theme = _ref.theme;
24
+ return {
25
+ strokeWidth: '0.2',
26
+ stroke: (0, _styleUtils.strokeColor)(theme)
27
+ };
28
+ });
29
+ var Line = function Line(_ref2) {
30
+ var angle = _ref2.angle,
31
+ major = _ref2.major,
32
+ minor = _ref2.minor;
33
+ return /*#__PURE__*/_react["default"].createElement(StyledLine, {
34
+ transform: "rotate(".concat(angle, ", 50.5,50)"),
35
+ style: {},
36
+ x1: "1",
37
+ x2: major ? 10 : minor ? 6 : 3,
38
+ y1: "50",
39
+ y2: "50"
40
+ });
41
+ };
42
+ var StyledSpikeLine = (0, _styles.styled)('line')(function (_ref3) {
43
+ var theme = _ref3.theme;
44
+ return {
45
+ strokeWidth: '0.2',
46
+ stroke: (0, _styleUtils.strokeColor)(theme)
47
+ };
48
+ });
49
+ var Spike = function Spike(_ref4) {
50
+ var angle = _ref4.angle;
51
+ return /*#__PURE__*/_react["default"].createElement(StyledSpikeLine, {
52
+ transform: "rotate(".concat(angle, ", 50.5,50)"),
53
+ style: {},
54
+ x1: "15",
55
+ x2: '46',
56
+ y1: "50",
57
+ y2: "50"
58
+ });
59
+ };
60
+ var StyledText = (0, _styles.styled)('text')(function (_ref5) {
61
+ var theme = _ref5.theme;
62
+ return _objectSpread({
63
+ fontSize: '2.5px',
64
+ textAnchor: 'middle',
65
+ fill: (0, _styleUtils.strokeColor)(theme)
66
+ }, (0, _styleUtils.noSelect)());
67
+ });
68
+ var Text = function Text(_ref6) {
69
+ var angle = _ref6.angle;
70
+ return /*#__PURE__*/_react["default"].createElement(StyledText, {
71
+ transform: "rotate(".concat(angle - 90, ", 50.5, 50)"),
72
+ x: "50",
73
+ y: "12.5"
74
+ }, angle);
75
+ };
76
+ var StyledPath = (0, _styles.styled)('path')(function (_ref7) {
77
+ var theme = _ref7.theme;
78
+ return {
79
+ strokeWidth: '0.2',
80
+ stroke: (0, _styleUtils.strokeColor)(theme)
81
+ };
82
+ });
83
+ var StyledGraphicLine = (0, _styles.styled)('line')(function (_ref8) {
84
+ var theme = _ref8.theme;
85
+ return {
86
+ strokeWidth: '0.2',
87
+ stroke: (0, _styleUtils.strokeColor)(theme)
88
+ };
89
+ });
90
+ var StyledCircle = (0, _styles.styled)('circle')(function (_ref9) {
91
+ var theme = _ref9.theme;
92
+ return {
93
+ strokeWidth: '0.2',
94
+ stroke: (0, _styleUtils.strokeColor)(theme),
95
+ fill: 'none'
96
+ };
97
+ });
98
+ var Graphic = exports.Graphic = /*#__PURE__*/function (_React$PureComponent) {
99
+ function Graphic() {
100
+ (0, _classCallCheck2["default"])(this, Graphic);
101
+ return _callSuper(this, Graphic, arguments);
102
+ }
103
+ (0, _inherits2["default"])(Graphic, _React$PureComponent);
104
+ return (0, _createClass2["default"])(Graphic, [{
105
+ key: "render",
106
+ value: function render() {
107
+ return /*#__PURE__*/_react["default"].createElement("svg", {
108
+ viewBox: "0 0 102 61"
109
+ }, /*#__PURE__*/_react["default"].createElement(StyledPath, {
110
+ d: "M 1,50 A 1,1 0 0 1 100,50 L 100,60 L 1,60 Z",
111
+ fill: "none"
112
+ }), (0, _range["default"])(0, 181).map(function (r) {
113
+ return /*#__PURE__*/_react["default"].createElement(Line, {
114
+ minor: r % 5 === 0,
115
+ major: r % 10 === 0,
116
+ angle: r,
117
+ key: r
118
+ });
119
+ }), (0, _range["default"])(0, 181, 10).map(function (r) {
120
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, {
121
+ key: r
122
+ }, /*#__PURE__*/_react["default"].createElement(Spike, {
123
+ angle: r
124
+ }), /*#__PURE__*/_react["default"].createElement(Text, {
125
+ angle: r
126
+ }));
127
+ }), /*#__PURE__*/_react["default"].createElement(StyledCircle, {
128
+ r: "4",
129
+ cx: "50.5",
130
+ cy: "50"
131
+ }), /*#__PURE__*/_react["default"].createElement(StyledGraphicLine, {
132
+ x1: "48.5",
133
+ x2: "52.5",
134
+ y1: "50",
135
+ y2: "50"
136
+ }), /*#__PURE__*/_react["default"].createElement(StyledGraphicLine, {
137
+ transform: 'rotate(90 50.5 50)',
138
+ x1: "48.5",
139
+ x2: "52.5",
140
+ y1: "50",
141
+ y2: "50"
142
+ }));
143
+ }
144
+ }]);
145
+ }(_react["default"].PureComponent);
146
+ var _default = exports["default"] = Graphic;
147
+ //# sourceMappingURL=graphic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphic.js","names":["_react","_interopRequireDefault","require","_styles","_range","_styleUtils","_callSuper","t","o","e","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","ownKeys","r","Object","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","StyledLine","styled","_ref","theme","strokeWidth","stroke","strokeColor","Line","_ref2","angle","major","minor","createElement","transform","concat","style","x1","x2","y1","y2","StyledSpikeLine","_ref3","Spike","_ref4","StyledText","_ref5","fontSize","textAnchor","fill","noSelect","Text","_ref6","x","y","StyledPath","_ref7","StyledGraphicLine","_ref8","StyledCircle","_ref9","Graphic","exports","_React$PureComponent","_classCallCheck2","_inherits2","_createClass2","key","value","render","viewBox","d","range","map","Fragment","cx","cy","React","PureComponent","_default"],"sources":["../../src/protractor/graphic.jsx"],"sourcesContent":["import React from 'react';\nimport { styled } from '@mui/material/styles';\nimport range from 'lodash/range';\nimport { strokeColor, noSelect } from '../style-utils';\n\nconst StyledLine = styled('line')(({ theme }) => ({\n strokeWidth: '0.2',\n stroke: strokeColor(theme),\n}));\n\nconst Line = ({ angle, major, minor }) => (\n <StyledLine\n transform={`rotate(${angle}, 50.5,50)`}\n style={{}}\n x1=\"1\"\n x2={major ? 10 : minor ? 6 : 3}\n y1=\"50\"\n y2=\"50\"\n />\n);\n\nconst StyledSpikeLine = styled('line')(({ theme }) => ({\n strokeWidth: '0.2',\n stroke: strokeColor(theme),\n}));\n\nconst Spike = ({ angle }) => (\n <StyledSpikeLine transform={`rotate(${angle}, 50.5,50)`} style={{}} x1=\"15\" x2={'46'} y1=\"50\" y2=\"50\" />\n);\n\nconst StyledText = styled('text')(({ theme }) => ({\n fontSize: '2.5px',\n textAnchor: 'middle',\n fill: strokeColor(theme),\n ...noSelect(),\n}));\n\nconst Text = ({ angle }) => (\n <StyledText transform={`rotate(${angle - 90}, 50.5, 50)`} x=\"50\" y=\"12.5\">\n {angle}\n </StyledText>\n);\n\nconst StyledPath = styled('path')(({ theme }) => ({\n strokeWidth: '0.2',\n stroke: strokeColor(theme),\n}));\n\nconst StyledGraphicLine = styled('line')(({ theme }) => ({\n strokeWidth: '0.2',\n stroke: strokeColor(theme),\n}));\n\nconst StyledCircle = styled('circle')(({ theme }) => ({\n strokeWidth: '0.2',\n stroke: strokeColor(theme),\n fill: 'none',\n}));\n\nexport class Graphic extends React.PureComponent {\n render() {\n return (\n <svg viewBox=\"0 0 102 61\">\n <StyledPath d=\"M 1,50 A 1,1 0 0 1 100,50 L 100,60 L 1,60 Z\" fill=\"none\" />\n {range(0, 181).map((r) => (\n <Line minor={r % 5 === 0} major={r % 10 === 0} angle={r} key={r} />\n ))}\n {range(0, 181, 10).map((r) => (\n <React.Fragment key={r}>\n <Spike angle={r} />\n <Text angle={r} />\n </React.Fragment>\n ))}\n <StyledCircle r=\"4\" cx=\"50.5\" cy=\"50\" />\n <StyledGraphicLine x1=\"48.5\" x2=\"52.5\" y1=\"50\" y2=\"50\" />\n <StyledGraphicLine transform={'rotate(90 50.5 50)'} x1=\"48.5\" x2=\"52.5\" y1=\"50\" y2=\"50\" />\n </svg>\n );\n }\n}\n\nexport default Graphic;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = exports.Protractor = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
11
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
12
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
+ var _react = _interopRequireDefault(require("react"));
15
+ var _styles = require("@mui/material/styles");
16
+ var _propTypes = _interopRequireDefault(require("prop-types"));
17
+ var _graphic = _interopRequireDefault(require("./graphic"));
18
+ var _anchor = _interopRequireDefault(require("../anchor"));
19
+ var _rotatable = _interopRequireDefault(require("../rotatable"));
20
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
21
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
22
+ var StyledProtractor = (0, _styles.styled)('div')(function () {
23
+ return {
24
+ position: 'relative'
25
+ };
26
+ });
27
+ var StyledLeftAnchor = (0, _styles.styled)(_anchor["default"])(function () {
28
+ return {
29
+ position: 'absolute',
30
+ left: 0,
31
+ bottom: 0
32
+ };
33
+ });
34
+ var StyledRightAnchor = (0, _styles.styled)(_anchor["default"])(function () {
35
+ return {
36
+ position: 'absolute',
37
+ right: 0,
38
+ bottom: 0
39
+ };
40
+ });
41
+ var Protractor = exports.Protractor = /*#__PURE__*/function (_React$Component) {
42
+ function Protractor() {
43
+ (0, _classCallCheck2["default"])(this, Protractor);
44
+ return _callSuper(this, Protractor, arguments);
45
+ }
46
+ (0, _inherits2["default"])(Protractor, _React$Component);
47
+ return (0, _createClass2["default"])(Protractor, [{
48
+ key: "render",
49
+ value: function render() {
50
+ var _this$props = this.props,
51
+ width = _this$props.width,
52
+ startPosition = _this$props.startPosition;
53
+ return /*#__PURE__*/_react["default"].createElement(_rotatable["default"], {
54
+ startPosition: startPosition,
55
+ handle: [{
56
+ "class": 'leftAnchor',
57
+ origin: "".concat(width * 0.495, "px ").concat(width * 0.49, "px")
58
+ }, {
59
+ "class": 'rightAnchor',
60
+ origin: "".concat(width * 0.495, "px ").concat(width * 0.49, "px")
61
+ }]
62
+ }, /*#__PURE__*/_react["default"].createElement(StyledProtractor, {
63
+ style: {
64
+ width: "".concat(width, "px")
65
+ }
66
+ }, /*#__PURE__*/_react["default"].createElement(_graphic["default"], null), /*#__PURE__*/_react["default"].createElement(StyledLeftAnchor, {
67
+ className: "leftAnchor"
68
+ }), /*#__PURE__*/_react["default"].createElement(StyledRightAnchor, {
69
+ className: "rightAnchor"
70
+ })));
71
+ }
72
+ }]);
73
+ }(_react["default"].Component);
74
+ (0, _defineProperty2["default"])(Protractor, "propTypes", {
75
+ width: _propTypes["default"].number.isRequired,
76
+ className: _propTypes["default"].string,
77
+ startPosition: _propTypes["default"].shape({
78
+ left: _propTypes["default"].number,
79
+ top: _propTypes["default"].number
80
+ })
81
+ });
82
+ (0, _defineProperty2["default"])(Protractor, "defaultProps", {
83
+ width: 450,
84
+ startPosition: {
85
+ left: 0,
86
+ top: 0
87
+ }
88
+ });
89
+ var _default = exports["default"] = Protractor;
90
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_styles","_propTypes","_graphic","_anchor","_rotatable","_callSuper","t","o","e","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","StyledProtractor","styled","position","StyledLeftAnchor","Anchor","left","bottom","StyledRightAnchor","right","Protractor","exports","_React$Component","_classCallCheck2","arguments","_inherits2","_createClass2","key","value","render","_this$props","props","width","startPosition","createElement","handle","origin","concat","style","className","React","Component","_defineProperty2","PropTypes","number","isRequired","string","shape","top","_default"],"sources":["../../src/protractor/index.jsx"],"sourcesContent":["import React from 'react';\nimport { styled } from '@mui/material/styles';\nimport PropTypes from 'prop-types';\nimport Graphic from './graphic';\nimport Anchor from '../anchor';\nimport Rotatable from '../rotatable';\n\nconst StyledProtractor = styled('div')(() => ({\n position: 'relative',\n}));\n\nconst StyledLeftAnchor = styled(Anchor)(() => ({\n position: 'absolute',\n left: 0,\n bottom: 0,\n}));\n\nconst StyledRightAnchor = styled(Anchor)(() => ({\n position: 'absolute',\n right: 0,\n bottom: 0,\n}));\n\nexport class Protractor extends React.Component {\n static propTypes = {\n width: PropTypes.number.isRequired,\n className: PropTypes.string,\n startPosition: PropTypes.shape({\n left: PropTypes.number,\n top: PropTypes.number,\n }),\n };\n\n static defaultProps = {\n width: 450,\n startPosition: { left: 0, top: 0 },\n };\n\n render() {\n const { width, startPosition } = this.props;\n\n return (\n <Rotatable\n startPosition={startPosition}\n handle={[\n {\n class: 'leftAnchor',\n origin: `${width * 0.495}px ${width * 0.49}px`,\n },\n {\n class: 'rightAnchor',\n origin: `${width * 0.495}px ${width * 0.49}px`,\n },\n ]}\n >\n <StyledProtractor style={{ width: `${width}px` }}>\n <Graphic />\n\n <StyledLeftAnchor className=\"leftAnchor\" />\n <StyledRightAnchor className=\"rightAnchor\" />\n </StyledProtractor>\n </Rotatable>\n );\n }\n}\n\nexport default Protractor;\n"],"mappings":"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","ignoreList":[]}