@financial-times/dotcom-ui-bootstrap 7.3.2 → 7.3.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.
Files changed (2) hide show
  1. package/lib/bootstrap.js +91 -0
  2. package/package.json +3 -2
@@ -0,0 +1,91 @@
1
+ ;(function () {
2
+ var doc = document.documentElement
3
+ var isEnhanced = isEnhancedBrowser()
4
+ var scriptsConfig = getScriptsConfig()
5
+ var scriptsToLoad = []
6
+ var currentScript = document.scripts[document.scripts.length - 1]
7
+
8
+ doc.className = doc.className.replace('no-js', 'js')
9
+
10
+ if (isEnhanced) {
11
+ doc.className = doc.className.replace('core', 'enhanced')
12
+ Array.prototype.push.apply(scriptsToLoad, scriptsConfig.enhanced)
13
+ } else {
14
+ Array.prototype.push.apply(scriptsToLoad, scriptsConfig.core)
15
+ }
16
+
17
+ for (var i = 0, len = scriptsToLoad.length; i < len; i++) {
18
+ loadScript(scriptsToLoad[i])
19
+ }
20
+
21
+ function scriptLoadError(error) {
22
+ var script = error.target ? error.target.src : null
23
+
24
+ if (script) {
25
+ console.error('The script ' + script + ' failed to load') // eslint-disable-line no-console
26
+ }
27
+
28
+ if (/enhanced/.test(doc.className)) {
29
+ console.warn('Script loading failed, reverting to core experience') // eslint-disable-line no-console
30
+ doc.className = doc.className.replace('enhanced', 'core')
31
+ }
32
+
33
+ if (scriptsConfig.trackErrors) {
34
+ addErrorTrackingPixel(script)
35
+ }
36
+ }
37
+
38
+ function loadScript(src) {
39
+ var script = document.createElement('script')
40
+ script.onerror = scriptLoadError
41
+ script.async = false
42
+ script.src = src
43
+ currentScript.parentNode.insertBefore(script, currentScript)
44
+ }
45
+
46
+ // "Cut the mustard" test
47
+ // by Maggie Allen and Matt Hinchliffe November 2018
48
+ function isEnhancedBrowser() {
49
+ var script = document.createElement('script')
50
+ var input = document.createElement('input')
51
+
52
+ return (
53
+ 'visibilityState' in document && // not supported by old Android (4.0-4.4) without a prefix
54
+ 'indeterminate' in input && // not supported by BB 10
55
+ 'flex' in doc.style && // not supported by old Safari (< 9) or IE 6-10
56
+ 'async' in script // not supported by old Opera (Presto engine < 15)
57
+ )
58
+ }
59
+
60
+ function getScriptsConfig() {
61
+ var scriptsConfigEl = document.getElementById('page-kit-bootstrap-config')
62
+ var scriptsConfig = { core: [], enhanced: [], trackErrors: false }
63
+
64
+ if (scriptsConfigEl) {
65
+ try {
66
+ scriptsConfig = JSON.parse(scriptsConfigEl.innerHTML)
67
+ } catch (error) {
68
+ console.error('Bootstrap configuration error', error) // eslint-disable-line no-console
69
+ }
70
+ }
71
+
72
+ return scriptsConfig
73
+ }
74
+
75
+ function addErrorTrackingPixel(script) {
76
+ var img = new Image()
77
+
78
+ var data = JSON.stringify({
79
+ category: 'javascript',
80
+ action: 'load-error',
81
+ system: {
82
+ source: 'page-kit'
83
+ },
84
+ context: {
85
+ script: script
86
+ }
87
+ })
88
+
89
+ img.src = 'https://spoor-api.ft.com/px.gif?data=' + encodeURIComponent(data)
90
+ }
91
+ })()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@financial-times/dotcom-ui-bootstrap",
3
- "version": "7.3.2",
3
+ "version": "7.3.4",
4
4
  "description": "",
5
5
  "main": "component.js",
6
6
  "browser": "browser.js",
@@ -30,6 +30,7 @@
30
30
  "react": "16.x || 17.x"
31
31
  },
32
32
  "files": [
33
+ "lib/",
33
34
  "dist/",
34
35
  "src/",
35
36
  "browser.js",
@@ -49,4 +50,4 @@
49
50
  "check-engine": "^1.10.1",
50
51
  "react": "^16.8.6"
51
52
  }
52
- }
53
+ }