@uipath/apollo-wind 2.44.0 → 2.45.1
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/README.md +12 -0
- package/dist/components/ui/form-field.cjs +1 -1
- package/dist/components/ui/form-field.d.ts +8 -0
- package/dist/components/ui/form-field.js +1 -1
- package/dist/components/ui/index.cjs +10 -10
- package/dist/components/ui/label.cjs +1 -1
- package/dist/components/ui/label.d.ts +9 -0
- package/dist/components/ui/label.js +1 -1
- package/dist/fonts/font.css +1 -0
- package/dist/foundation/Future/typography.cjs +4 -3
- package/dist/foundation/Future/typography.d.ts +8 -4
- package/dist/foundation/Future/typography.js +4 -3
- package/dist/styles.css +32 -0
- package/dist/tailwind.css +38 -0
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -19,6 +19,18 @@ npm install @uipath/apollo-wind
|
|
|
19
19
|
|
|
20
20
|
**Note:** This package is published to both npm and GitHub Package Registry. External users will automatically pull from npm. Internal UiPath users with `.npmrc` configured will automatically pull from GitHub Package Registry.
|
|
21
21
|
|
|
22
|
+
**Fonts:** the Future themes (`.future-light` / `.future-dark`) point
|
|
23
|
+
`--font-sans` at Inter and the bundled Noto families, but `tailwind.css` ships
|
|
24
|
+
no `@font-face`. Import the font stylesheet once at your app entry, or those
|
|
25
|
+
tokens fall back to the OS font:
|
|
26
|
+
|
|
27
|
+
```tsx
|
|
28
|
+
import "@uipath/apollo-wind/fonts/font.css";
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Classic themes keep Tailwind's default `--font-sans` and need no font import.
|
|
32
|
+
Apps that already import `@uipath/apollo-react/core/fonts/font.css` are covered.
|
|
33
|
+
|
|
22
34
|
**Option 1: Zero Config** (Recommended for quick starts)
|
|
23
35
|
|
|
24
36
|
```tsx
|
|
@@ -36,7 +36,7 @@ const index_cjs_namespaceObject = require("../../lib/index.cjs");
|
|
|
36
36
|
const FormField = /*#__PURE__*/ external_react_namespaceObject.forwardRef(({ children, className, ...props }, ref)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
|
|
37
37
|
ref: ref,
|
|
38
38
|
"data-slot": "form-field",
|
|
39
|
-
className: (0, index_cjs_namespaceObject.cn)('grid gap-1.5', className),
|
|
39
|
+
className: (0, index_cjs_namespaceObject.cn)('grid grid-cols-[minmax(0,1fr)] gap-1.5', className),
|
|
40
40
|
...props,
|
|
41
41
|
children: children
|
|
42
42
|
}));
|
|
@@ -6,6 +6,14 @@ export type FormFieldProps = React.ComponentPropsWithoutRef<'div'>;
|
|
|
6
6
|
*
|
|
7
7
|
* These parts are presentational and hold no form state, so they compose the
|
|
8
8
|
* same way inside a metadata-driven form as they do in hand-built panels.
|
|
9
|
+
*
|
|
10
|
+
* The single column is pinned to `minmax(0, 1fr)` rather than left implicit.
|
|
11
|
+
* An implicit `auto` track floors at its widest child's min-content, and a
|
|
12
|
+
* control that ellipsizes is `white-space: nowrap`, so its min-content is the
|
|
13
|
+
* whole string: the field would push past a width-constrained host instead of
|
|
14
|
+
* truncating. A `1fr` track still resolves to max-content when the host width
|
|
15
|
+
* is indefinite, so shrink-to-fit hosts are unaffected. `className` is merged
|
|
16
|
+
* last, so a consumer can still override with `grid-cols-2` or similar.
|
|
9
17
|
*/
|
|
10
18
|
declare const FormField: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
11
19
|
export interface FormFieldLabelProps extends React.ComponentPropsWithoutRef<typeof Label> {
|
|
@@ -5,7 +5,7 @@ import { cn } from "../../lib/index.js";
|
|
|
5
5
|
const FormField = /*#__PURE__*/ forwardRef(({ children, className, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
|
|
6
6
|
ref: ref,
|
|
7
7
|
"data-slot": "form-field",
|
|
8
|
-
className: cn('grid gap-1.5', className),
|
|
8
|
+
className: cn('grid grid-cols-[minmax(0,1fr)] gap-1.5', className),
|
|
9
9
|
...props,
|
|
10
10
|
children: children
|
|
11
11
|
}));
|
|
@@ -90,7 +90,7 @@ var __webpack_modules__ = {
|
|
|
90
90
|
"./input" (module) {
|
|
91
91
|
module.exports = require("./input.cjs");
|
|
92
92
|
},
|
|
93
|
-
"
|
|
93
|
+
"@/components/ui/label" (module) {
|
|
94
94
|
module.exports = require("./label.cjs");
|
|
95
95
|
},
|
|
96
96
|
"./layout" (module) {
|
|
@@ -105,10 +105,10 @@ var __webpack_modules__ = {
|
|
|
105
105
|
"./pagination" (module) {
|
|
106
106
|
module.exports = require("./pagination.cjs");
|
|
107
107
|
},
|
|
108
|
-
"
|
|
108
|
+
"./popover" (module) {
|
|
109
109
|
module.exports = require("./popover.cjs");
|
|
110
110
|
},
|
|
111
|
-
"
|
|
111
|
+
"@/components/ui/portal-container" (module) {
|
|
112
112
|
module.exports = require("./portal-container.cjs");
|
|
113
113
|
},
|
|
114
114
|
"./progress" (module) {
|
|
@@ -159,13 +159,13 @@ var __webpack_modules__ = {
|
|
|
159
159
|
"./switch" (module) {
|
|
160
160
|
module.exports = require("./switch.cjs");
|
|
161
161
|
},
|
|
162
|
-
"
|
|
162
|
+
"./table" (module) {
|
|
163
163
|
module.exports = require("./table.cjs");
|
|
164
164
|
},
|
|
165
165
|
"./tabs" (module) {
|
|
166
166
|
module.exports = require("./tabs.cjs");
|
|
167
167
|
},
|
|
168
|
-
"
|
|
168
|
+
"@/components/ui/textarea" (module) {
|
|
169
169
|
module.exports = require("./textarea.cjs");
|
|
170
170
|
},
|
|
171
171
|
"./toggle-group" (module) {
|
|
@@ -440,7 +440,7 @@ var __webpack_exports__ = {};
|
|
|
440
440
|
"default"
|
|
441
441
|
].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_input_group__rspack_import_29[__rspack_import_key];
|
|
442
442
|
__webpack_require__.d(__webpack_exports__, __rspack_reexport);
|
|
443
|
-
var _label__rspack_import_30 = __webpack_require__("
|
|
443
|
+
var _label__rspack_import_30 = __webpack_require__("@/components/ui/label");
|
|
444
444
|
var __rspack_reexport = {};
|
|
445
445
|
for(const __rspack_import_key in _label__rspack_import_30)if ([
|
|
446
446
|
"TreeView",
|
|
@@ -475,14 +475,14 @@ var __webpack_exports__ = {};
|
|
|
475
475
|
"default"
|
|
476
476
|
].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_pagination__rspack_import_34[__rspack_import_key];
|
|
477
477
|
__webpack_require__.d(__webpack_exports__, __rspack_reexport);
|
|
478
|
-
var _popover__rspack_import_35 = __webpack_require__("
|
|
478
|
+
var _popover__rspack_import_35 = __webpack_require__("./popover");
|
|
479
479
|
var __rspack_reexport = {};
|
|
480
480
|
for(const __rspack_import_key in _popover__rspack_import_35)if ([
|
|
481
481
|
"TreeView",
|
|
482
482
|
"default"
|
|
483
483
|
].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_popover__rspack_import_35[__rspack_import_key];
|
|
484
484
|
__webpack_require__.d(__webpack_exports__, __rspack_reexport);
|
|
485
|
-
var _portal_container__rspack_import_36 = __webpack_require__("
|
|
485
|
+
var _portal_container__rspack_import_36 = __webpack_require__("@/components/ui/portal-container");
|
|
486
486
|
var __rspack_reexport = {};
|
|
487
487
|
for(const __rspack_import_key in _portal_container__rspack_import_36)if ([
|
|
488
488
|
"TreeView",
|
|
@@ -601,7 +601,7 @@ var __webpack_exports__ = {};
|
|
|
601
601
|
"default"
|
|
602
602
|
].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_switch__rspack_import_52[__rspack_import_key];
|
|
603
603
|
__webpack_require__.d(__webpack_exports__, __rspack_reexport);
|
|
604
|
-
var _table__rspack_import_53 = __webpack_require__("
|
|
604
|
+
var _table__rspack_import_53 = __webpack_require__("./table");
|
|
605
605
|
var __rspack_reexport = {};
|
|
606
606
|
for(const __rspack_import_key in _table__rspack_import_53)if ([
|
|
607
607
|
"TreeView",
|
|
@@ -615,7 +615,7 @@ var __webpack_exports__ = {};
|
|
|
615
615
|
"default"
|
|
616
616
|
].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_tabs__rspack_import_54[__rspack_import_key];
|
|
617
617
|
__webpack_require__.d(__webpack_exports__, __rspack_reexport);
|
|
618
|
-
var _textarea__rspack_import_55 = __webpack_require__("
|
|
618
|
+
var _textarea__rspack_import_55 = __webpack_require__("@/components/ui/textarea");
|
|
619
619
|
var __rspack_reexport = {};
|
|
620
620
|
for(const __rspack_import_key in _textarea__rspack_import_55)if ([
|
|
621
621
|
"TreeView",
|
|
@@ -32,7 +32,7 @@ const react_label_namespaceObject = require("@radix-ui/react-label");
|
|
|
32
32
|
const external_class_variance_authority_namespaceObject = require("class-variance-authority");
|
|
33
33
|
const external_react_namespaceObject = require("react");
|
|
34
34
|
const index_cjs_namespaceObject = require("../../lib/index.cjs");
|
|
35
|
-
const labelVariants = (0, external_class_variance_authority_namespaceObject.cva)('text-xs peer-disabled:cursor-not-allowed peer-disabled:opacity-70', {
|
|
35
|
+
const labelVariants = (0, external_class_variance_authority_namespaceObject.cva)('inline-block text-xs peer-disabled:cursor-not-allowed peer-disabled:opacity-70', {
|
|
36
36
|
variants: {
|
|
37
37
|
variant: {
|
|
38
38
|
default: 'font-medium text-foreground',
|
|
@@ -14,6 +14,15 @@ export type LabelProps = React.ComponentPropsWithoutRef<typeof LabelPrimitive.Ro
|
|
|
14
14
|
* the label's inline run, so the ellipsis swallows it, and a clipped field name
|
|
15
15
|
* is unreadable anyway.
|
|
16
16
|
*
|
|
17
|
+
* Renders `inline-block` rather than the `<label>` default of `inline`.
|
|
18
|
+
* Vertical margins do nothing on an inline box, so under Tailwind v4, where
|
|
19
|
+
* `space-y-*` puts `margin-block-end` on every child but the last, the gap a
|
|
20
|
+
* `space-y-1.5` wrapper means to put under the label was silently dropped.
|
|
21
|
+
* `inline-block` keeps the label usable in inline flow, which `block` would
|
|
22
|
+
* not. As a grid or flex item the label is blockified anyway, so this changes
|
|
23
|
+
* nothing inside `FormField`, and a consumer needing another display passes
|
|
24
|
+
* one: `cn` merges `className` last.
|
|
25
|
+
*
|
|
17
26
|
* `data-variant` exposes the variant so a container can restyle every label of
|
|
18
27
|
* one kind at once rather than reaching for each slot by name. Target it as
|
|
19
28
|
* `label[data-variant=default]`: callers rename `data-slot`, and `data-variant`
|
|
@@ -3,7 +3,7 @@ import { Root } from "@radix-ui/react-label";
|
|
|
3
3
|
import { cva } from "class-variance-authority";
|
|
4
4
|
import { forwardRef } from "react";
|
|
5
5
|
import { cn } from "../../lib/index.js";
|
|
6
|
-
const labelVariants = cva('text-xs peer-disabled:cursor-not-allowed peer-disabled:opacity-70', {
|
|
6
|
+
const labelVariants = cva('inline-block text-xs peer-disabled:cursor-not-allowed peer-disabled:opacity-70', {
|
|
7
7
|
variants: {
|
|
8
8
|
variant: {
|
|
9
9
|
default: 'font-medium text-foreground',
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "@uipath/apollo-core/fonts/font.css";
|
|
@@ -30,11 +30,12 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
30
30
|
letterSpacing: ()=>letterSpacing,
|
|
31
31
|
lineHeight: ()=>lineHeight
|
|
32
32
|
});
|
|
33
|
+
const SANS_STACK = "'Inter', 'noto-sans', 'Noto Sans JP', 'Noto Sans KR', 'Noto Sans SC', 'Noto Sans TC', system-ui, sans-serif";
|
|
33
34
|
const fontFamily = {
|
|
34
|
-
base:
|
|
35
|
+
base: SANS_STACK,
|
|
35
36
|
monospace: "'JetBrains Mono', 'SF Mono', 'Fira Code', 'Fira Mono', Menlo, monospace",
|
|
36
|
-
numeric:
|
|
37
|
-
sans:
|
|
37
|
+
numeric: SANS_STACK,
|
|
38
|
+
sans: SANS_STACK
|
|
38
39
|
};
|
|
39
40
|
const fontSize = {
|
|
40
41
|
xs: 12,
|
|
@@ -8,13 +8,17 @@
|
|
|
8
8
|
*/
|
|
9
9
|
export declare const fontFamily: {
|
|
10
10
|
/** Primary sans-serif stack — used for all UI text */
|
|
11
|
-
readonly base:
|
|
12
|
-
/**
|
|
11
|
+
readonly base: string;
|
|
12
|
+
/**
|
|
13
|
+
* Monospace stack — used for code, data, and technical content.
|
|
14
|
+
* None of these ship with apollo-core: Storybook loads JetBrains Mono from
|
|
15
|
+
* the Google Fonts CDN, consumers resolve to an OS mono font.
|
|
16
|
+
*/
|
|
13
17
|
readonly monospace: "'JetBrains Mono', 'SF Mono', 'Fira Code', 'Fira Mono', Menlo, monospace";
|
|
14
18
|
/** Numeric stack — used for tabular numbers and data displays */
|
|
15
|
-
readonly numeric:
|
|
19
|
+
readonly numeric: string;
|
|
16
20
|
/** @deprecated Use `fontFamily.base` instead */
|
|
17
|
-
readonly sans:
|
|
21
|
+
readonly sans: string;
|
|
18
22
|
};
|
|
19
23
|
/**
|
|
20
24
|
* Font size scale in pixels.
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
const SANS_STACK = "'Inter', 'noto-sans', 'Noto Sans JP', 'Noto Sans KR', 'Noto Sans SC', 'Noto Sans TC', system-ui, sans-serif";
|
|
1
2
|
const fontFamily = {
|
|
2
|
-
base:
|
|
3
|
+
base: SANS_STACK,
|
|
3
4
|
monospace: "'JetBrains Mono', 'SF Mono', 'Fira Code', 'Fira Mono', Menlo, monospace",
|
|
4
|
-
numeric:
|
|
5
|
-
sans:
|
|
5
|
+
numeric: SANS_STACK,
|
|
6
|
+
sans: SANS_STACK
|
|
6
7
|
};
|
|
7
8
|
const fontSize = {
|
|
8
9
|
xs: 12,
|
package/dist/styles.css
CHANGED
|
@@ -1759,6 +1759,9 @@
|
|
|
1759
1759
|
.grid-cols-12 {
|
|
1760
1760
|
grid-template-columns: repeat(12, minmax(0, 1fr));
|
|
1761
1761
|
}
|
|
1762
|
+
.grid-cols-\[minmax\(0\,1fr\)\] {
|
|
1763
|
+
grid-template-columns: minmax(0,1fr);
|
|
1764
|
+
}
|
|
1762
1765
|
.grid-rows-2 {
|
|
1763
1766
|
grid-template-rows: repeat(2, minmax(0, 1fr));
|
|
1764
1767
|
}
|
|
@@ -9997,6 +10000,35 @@ body.future-dark, .future-dark, body.future-light, .future-light {
|
|
|
9997
10000
|
--destructive: var(--color-red-500);
|
|
9998
10001
|
--destructive-foreground: var(--color-zinc-50);
|
|
9999
10002
|
--input: var(--ap-wind-border);
|
|
10003
|
+
--font-sans: Inter, noto-sans, "Noto Sans JP", "Noto Sans KR", "Noto Sans SC",
|
|
10004
|
+
"Noto Sans TC", system-ui, sans-serif;
|
|
10005
|
+
--font-normal: var(--font-sans);
|
|
10006
|
+
--font-title: var(--font-sans);
|
|
10007
|
+
--font-hero-bold-family: var(--font-sans);
|
|
10008
|
+
--font-hero-family: var(--font-sans);
|
|
10009
|
+
--font-header-1-bold-family: var(--font-sans);
|
|
10010
|
+
--font-header-1-family: var(--font-sans);
|
|
10011
|
+
--font-header-2-bold-family: var(--font-sans);
|
|
10012
|
+
--font-header-2-family: var(--font-sans);
|
|
10013
|
+
--font-header-3-bold-family: var(--font-sans);
|
|
10014
|
+
--font-header-3-family: var(--font-sans);
|
|
10015
|
+
--font-header-4-bold-family: var(--font-sans);
|
|
10016
|
+
--font-header-4-family: var(--font-sans);
|
|
10017
|
+
--font-l-bold-family: var(--font-sans);
|
|
10018
|
+
--font-l-family: var(--font-sans);
|
|
10019
|
+
--font-m-bold-family: var(--font-sans);
|
|
10020
|
+
--font-m-family: var(--font-sans);
|
|
10021
|
+
--font-link-family: var(--font-sans);
|
|
10022
|
+
--font-s-bold-family: var(--font-sans);
|
|
10023
|
+
--font-s-family: var(--font-sans);
|
|
10024
|
+
--font-xs-bold-family: var(--font-sans);
|
|
10025
|
+
--font-xs-family: var(--font-sans);
|
|
10026
|
+
--font-brand-h-4-family: var(--font-sans);
|
|
10027
|
+
--font-brand-l-family: var(--font-sans);
|
|
10028
|
+
--font-brand-m-family: var(--font-sans);
|
|
10029
|
+
}
|
|
10030
|
+
body.future-dark.future-dark, .future-dark.future-dark, body.future-light.future-light, .future-light.future-light {
|
|
10031
|
+
font-family: var(--font-sans);
|
|
10000
10032
|
}
|
|
10001
10033
|
body.future-dark, .future-dark {
|
|
10002
10034
|
--gradient-1: linear-gradient(127deg, #3f3f47 25.94%, #27272a 74.06%);
|
package/dist/tailwind.css
CHANGED
|
@@ -185,6 +185,44 @@ body.future-light, .future-light {
|
|
|
185
185
|
--destructive: var(--color-red-500);
|
|
186
186
|
--destructive-foreground: var(--color-zinc-50);
|
|
187
187
|
--input: var(--ap-wind-border);
|
|
188
|
+
|
|
189
|
+
/* Typography: Inter, shipped by apollo-core. Neither Inter nor noto-sans
|
|
190
|
+
covers CJK, so the four bundled Noto CJK families are chained explicitly
|
|
191
|
+
to keep ja/ko/zh resolving. Mono tokens untouched. */
|
|
192
|
+
--font-sans: Inter, noto-sans, "Noto Sans JP", "Noto Sans KR", "Noto Sans SC",
|
|
193
|
+
"Noto Sans TC", system-ui, sans-serif;
|
|
194
|
+
--font-normal: var(--font-sans);
|
|
195
|
+
--font-title: var(--font-sans);
|
|
196
|
+
--font-hero-bold-family: var(--font-sans);
|
|
197
|
+
--font-hero-family: var(--font-sans);
|
|
198
|
+
--font-header-1-bold-family: var(--font-sans);
|
|
199
|
+
--font-header-1-family: var(--font-sans);
|
|
200
|
+
--font-header-2-bold-family: var(--font-sans);
|
|
201
|
+
--font-header-2-family: var(--font-sans);
|
|
202
|
+
--font-header-3-bold-family: var(--font-sans);
|
|
203
|
+
--font-header-3-family: var(--font-sans);
|
|
204
|
+
--font-header-4-bold-family: var(--font-sans);
|
|
205
|
+
--font-header-4-family: var(--font-sans);
|
|
206
|
+
--font-l-bold-family: var(--font-sans);
|
|
207
|
+
--font-l-family: var(--font-sans);
|
|
208
|
+
--font-m-bold-family: var(--font-sans);
|
|
209
|
+
--font-m-family: var(--font-sans);
|
|
210
|
+
--font-link-family: var(--font-sans);
|
|
211
|
+
--font-s-bold-family: var(--font-sans);
|
|
212
|
+
--font-s-family: var(--font-sans);
|
|
213
|
+
--font-xs-bold-family: var(--font-sans);
|
|
214
|
+
--font-xs-family: var(--font-sans);
|
|
215
|
+
--font-brand-h-4-family: var(--font-sans);
|
|
216
|
+
--font-brand-l-family: var(--font-sans);
|
|
217
|
+
--font-brand-m-family: var(--font-sans);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/* Preflight pins --default-font-family at :root, so the theme class must set
|
|
221
|
+
font-family itself. Class doubled to outrank apollo's legacy Angular bundle,
|
|
222
|
+
which injects `.apollo-design { font-family: noto-sans }` (0,1,0) at runtime. */
|
|
223
|
+
body.future-dark.future-dark, .future-dark.future-dark,
|
|
224
|
+
body.future-light.future-light, .future-light.future-light {
|
|
225
|
+
font-family: var(--font-sans);
|
|
188
226
|
}
|
|
189
227
|
|
|
190
228
|
/* ── Future gradients (theme-specific stops, no core counterpart yet) ────── */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uipath/apollo-wind",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.45.1",
|
|
4
4
|
"description": "UiPath wind design system - A Tailwind CSS based React component library",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
},
|
|
43
43
|
"./styles.css": "./dist/styles.css",
|
|
44
44
|
"./tailwind.css": "./dist/tailwind.css",
|
|
45
|
+
"./fonts/*": "./dist/fonts/*",
|
|
45
46
|
"./tailwind": {
|
|
46
47
|
"import": "./dist/tailwind.preset.js",
|
|
47
48
|
"require": "./dist/tailwind.preset.cjs"
|
|
@@ -124,7 +125,7 @@
|
|
|
124
125
|
"tailwindcss": "^4.1.17",
|
|
125
126
|
"vaul": "^1.1.2",
|
|
126
127
|
"zod": "^4.3.5",
|
|
127
|
-
"@uipath/apollo-core": "5.
|
|
128
|
+
"@uipath/apollo-core": "5.14.0"
|
|
128
129
|
},
|
|
129
130
|
"devDependencies": {
|
|
130
131
|
"@codemirror/lang-javascript": "^6.2.5",
|