@breakside/jskit 2026.2.0 → 2026.2.2
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/Frameworks/DOM.jsframework/Info.json +2 -2
- package/Frameworks/DOM.jsframework/io.breakside.JSKit.DOM-bundle.js +2 -2
- package/Frameworks/FontKit.jsframework/Info.json +2 -2
- package/Frameworks/FontKit.jsframework/io.breakside.JSKit.FontKit-bundle.js +2 -2
- package/Frameworks/Foundation.jsframework/Info.json +2 -2
- package/Frameworks/Foundation.jsframework/JS/JSFile.js +1 -1
- package/Frameworks/Foundation.jsframework/io.breakside.JSKit.Foundation-bundle.js +2 -2
- package/Frameworks/SecurityKit.jsframework/Info.json +2 -2
- package/Frameworks/SecurityKit.jsframework/io.breakside.JSKit.SecurityKit-bundle.js +2 -2
- package/Info.json +2 -2
- package/Node/io.breakside.jskit-bundle.js +2 -2
- package/Root/Frameworks/APIKit/Info.yaml +1 -1
- package/Root/Frameworks/APIKitTesting/Info.yaml +1 -1
- package/Root/Frameworks/AuthKit/Info.yaml +1 -1
- package/Root/Frameworks/CSSOM/Info.yaml +1 -1
- package/Root/Frameworks/ChartKit/Info.yaml +1 -1
- package/Root/Frameworks/ConferenceKit/Info.yaml +1 -1
- package/Root/Frameworks/DBKit/Info.yaml +1 -1
- package/Root/Frameworks/DOM/Info.yaml +1 -1
- package/Root/Frameworks/Dispatch/Info.yaml +1 -1
- package/Root/Frameworks/FontKit/Info.yaml +1 -1
- package/Root/Frameworks/Foundation/Info.yaml +1 -1
- package/Root/Frameworks/Foundation/JSFile.js +1 -1
- package/Root/Frameworks/ImageKit/Info.yaml +1 -1
- package/Root/Frameworks/MediaKit/Info.yaml +1 -1
- package/Root/Frameworks/MediaKit/MKAsset+HTML.js +5 -0
- package/Root/Frameworks/MediaKitUI/Info.yaml +1 -1
- package/Root/Frameworks/NotificationKit/Info.yaml +1 -1
- package/Root/Frameworks/PDFKit/Info.yaml +1 -1
- package/Root/Frameworks/QRKit/Info.yaml +1 -1
- package/Root/Frameworks/SearchKit/Info.yaml +1 -1
- package/Root/Frameworks/SecurityKit/Info.yaml +1 -1
- package/Root/Frameworks/ServerKit/Info.yaml +1 -1
- package/Root/Frameworks/ServerKitTesting/Info.yaml +1 -1
- package/Root/Frameworks/TestKit/Info.yaml +1 -1
- package/Root/Frameworks/UIKit/Info.yaml +1 -1
- package/Root/Frameworks/UIKit/UIAnimation.js +1 -1
- package/Root/Frameworks/UIKit/UIBasicAnimation.js +22 -1
- package/Root/Frameworks/UIKit/UICollectionViewCell.js +10 -1
- package/Root/Frameworks/UIKit/UIHTMLApplication.js +8 -1
- package/Root/Frameworks/UIKit/UIHTMLDisplayServerCanvasContext.js +1 -1
- package/Root/Frameworks/UIKit/UISlider.js +6 -0
- package/Root/Frameworks/UIKit/UITextEditor.js +3 -0
- package/Root/Frameworks/UIKitTesting/Info.yaml +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"JSBundleType": "framework",
|
|
3
3
|
"JSBundleIdentifier": "io.breakside.JSKit.DOM",
|
|
4
|
-
"JSBundleVersion": "2026.2.
|
|
4
|
+
"JSBundleVersion": "2026.2.2",
|
|
5
5
|
"JSDevelopmentLanguage": "en",
|
|
6
6
|
"JSCopyright": "Copyright © 2020 Breakside Inc.",
|
|
7
7
|
"JSBundleEnvironments": {
|
|
@@ -9,5 +9,5 @@
|
|
|
9
9
|
"node": "DOM+Node.js"
|
|
10
10
|
},
|
|
11
11
|
"JSLicenseNotice": "Licensed under the Breakside Public License, Version 1.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nIf a copy of the License was not distributed with this file, you may\nobtain a copy at\n\n http://breakside.io/licenses/LICENSE-1.0.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n",
|
|
12
|
-
"GitRevision": "
|
|
12
|
+
"GitRevision": "243c2bc0a9cca7be568b91320f8348fa215ed5b4"
|
|
13
13
|
}
|
|
@@ -3,7 +3,7 @@ JSBundle.bundles['io.breakside.JSKit.DOM'] = {
|
|
|
3
3
|
"Info": {
|
|
4
4
|
"JSBundleType": "framework",
|
|
5
5
|
"JSBundleIdentifier": "io.breakside.JSKit.DOM",
|
|
6
|
-
"JSBundleVersion": "2026.2.
|
|
6
|
+
"JSBundleVersion": "2026.2.2",
|
|
7
7
|
"JSDevelopmentLanguage": "en",
|
|
8
8
|
"JSCopyright": "Copyright © 2020 Breakside Inc.",
|
|
9
9
|
"JSBundleEnvironments": {
|
|
@@ -11,7 +11,7 @@ JSBundle.bundles['io.breakside.JSKit.DOM'] = {
|
|
|
11
11
|
"node": "DOM+Node.js"
|
|
12
12
|
},
|
|
13
13
|
"JSLicenseNotice": "Licensed under the Breakside Public License, Version 1.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nIf a copy of the License was not distributed with this file, you may\nobtain a copy at\n\n http://breakside.io/licenses/LICENSE-1.0.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n",
|
|
14
|
-
"GitRevision": "
|
|
14
|
+
"GitRevision": "243c2bc0a9cca7be568b91320f8348fa215ed5b4"
|
|
15
15
|
},
|
|
16
16
|
"Resources": [],
|
|
17
17
|
"ResourceLookup": {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"JSBundleType": "framework",
|
|
3
3
|
"JSBundleIdentifier": "io.breakside.JSKit.FontKit",
|
|
4
|
-
"JSBundleVersion": "2026.2.
|
|
4
|
+
"JSBundleVersion": "2026.2.2",
|
|
5
5
|
"JSDevelopmentLanguage": "en",
|
|
6
6
|
"JSCopyright": "Copyright © 2020 Breakside Inc.",
|
|
7
7
|
"JSBundleEnvironments": {
|
|
8
8
|
"html": "FontKit+HTML.js"
|
|
9
9
|
},
|
|
10
10
|
"JSLicenseNotice": "Licensed under the Breakside Public License, Version 1.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nIf a copy of the License was not distributed with this file, you may\nobtain a copy at\n\n http://breakside.io/licenses/LICENSE-1.0.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n",
|
|
11
|
-
"GitRevision": "
|
|
11
|
+
"GitRevision": "243c2bc0a9cca7be568b91320f8348fa215ed5b4"
|
|
12
12
|
}
|
|
@@ -3,14 +3,14 @@ JSBundle.bundles['io.breakside.JSKit.FontKit'] = {
|
|
|
3
3
|
"Info": {
|
|
4
4
|
"JSBundleType": "framework",
|
|
5
5
|
"JSBundleIdentifier": "io.breakside.JSKit.FontKit",
|
|
6
|
-
"JSBundleVersion": "2026.2.
|
|
6
|
+
"JSBundleVersion": "2026.2.2",
|
|
7
7
|
"JSDevelopmentLanguage": "en",
|
|
8
8
|
"JSCopyright": "Copyright © 2020 Breakside Inc.",
|
|
9
9
|
"JSBundleEnvironments": {
|
|
10
10
|
"html": "FontKit+HTML.js"
|
|
11
11
|
},
|
|
12
12
|
"JSLicenseNotice": "Licensed under the Breakside Public License, Version 1.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nIf a copy of the License was not distributed with this file, you may\nobtain a copy at\n\n http://breakside.io/licenses/LICENSE-1.0.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n",
|
|
13
|
-
"GitRevision": "
|
|
13
|
+
"GitRevision": "243c2bc0a9cca7be568b91320f8348fa215ed5b4"
|
|
14
14
|
},
|
|
15
15
|
"Resources": [],
|
|
16
16
|
"ResourceLookup": {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"JSBundleType": "framework",
|
|
3
3
|
"JSBundleIdentifier": "io.breakside.JSKit.Foundation",
|
|
4
|
-
"JSBundleVersion": "2026.2.
|
|
4
|
+
"JSBundleVersion": "2026.2.2",
|
|
5
5
|
"JSDevelopmentLanguage": "en",
|
|
6
6
|
"JSCopyright": "Copyright © 2020 Breakside Inc.",
|
|
7
7
|
"JSBundleEnvironments": {
|
|
@@ -9,5 +9,5 @@
|
|
|
9
9
|
"node": "Foundation+Node.js"
|
|
10
10
|
},
|
|
11
11
|
"JSLicenseNotice": "Licensed under the Breakside Public License, Version 1.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nIf a copy of the License was not distributed with this file, you may\nobtain a copy at\n\n http://breakside.io/licenses/LICENSE-1.0.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n",
|
|
12
|
-
"GitRevision": "
|
|
12
|
+
"GitRevision": "243c2bc0a9cca7be568b91320f8348fa215ed5b4"
|
|
13
13
|
}
|
|
@@ -73,7 +73,7 @@ JSFile.unregisterContentTypeForFileExtension = function(contentType, fileExtensi
|
|
|
73
73
|
};
|
|
74
74
|
|
|
75
75
|
JSFile.contentTypeForFileExtension = function(fileExtension){
|
|
76
|
-
return JSFile.contentTypesByFileExtension[fileExtension] || null;
|
|
76
|
+
return JSFile.contentTypesByFileExtension[fileExtension.toLowerCase()] || null;
|
|
77
77
|
};
|
|
78
78
|
|
|
79
79
|
JSClass("JSDataFile", JSFile, {
|
|
@@ -3,7 +3,7 @@ JSBundle.bundles['io.breakside.JSKit.Foundation'] = {
|
|
|
3
3
|
"Info": {
|
|
4
4
|
"JSBundleType": "framework",
|
|
5
5
|
"JSBundleIdentifier": "io.breakside.JSKit.Foundation",
|
|
6
|
-
"JSBundleVersion": "2026.2.
|
|
6
|
+
"JSBundleVersion": "2026.2.2",
|
|
7
7
|
"JSDevelopmentLanguage": "en",
|
|
8
8
|
"JSCopyright": "Copyright © 2020 Breakside Inc.",
|
|
9
9
|
"JSBundleEnvironments": {
|
|
@@ -11,7 +11,7 @@ JSBundle.bundles['io.breakside.JSKit.Foundation'] = {
|
|
|
11
11
|
"node": "Foundation+Node.js"
|
|
12
12
|
},
|
|
13
13
|
"JSLicenseNotice": "Licensed under the Breakside Public License, Version 1.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nIf a copy of the License was not distributed with this file, you may\nobtain a copy at\n\n http://breakside.io/licenses/LICENSE-1.0.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n",
|
|
14
|
-
"GitRevision": "
|
|
14
|
+
"GitRevision": "243c2bc0a9cca7be568b91320f8348fa215ed5b4"
|
|
15
15
|
},
|
|
16
16
|
"Resources": [
|
|
17
17
|
{
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"JSBundleType": "framework",
|
|
3
3
|
"JSBundleIdentifier": "io.breakside.JSKit.SecurityKit",
|
|
4
|
-
"JSBundleVersion": "2026.2.
|
|
4
|
+
"JSBundleVersion": "2026.2.2",
|
|
5
5
|
"JSDevelopmentLanguage": "en",
|
|
6
6
|
"JSCopyright": "Copyright © 2020 Breakside Inc.",
|
|
7
7
|
"JSBundleEnvironments": {
|
|
@@ -9,5 +9,5 @@
|
|
|
9
9
|
"node": "SecurityKit+Node.js"
|
|
10
10
|
},
|
|
11
11
|
"JSLicenseNotice": "Licensed under the Breakside Public License, Version 1.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nIf a copy of the License was not distributed with this file, you may\nobtain a copy at\n\n http://breakside.io/licenses/LICENSE-1.0.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n",
|
|
12
|
-
"GitRevision": "
|
|
12
|
+
"GitRevision": "243c2bc0a9cca7be568b91320f8348fa215ed5b4"
|
|
13
13
|
}
|
|
@@ -3,7 +3,7 @@ JSBundle.bundles['io.breakside.JSKit.SecurityKit'] = {
|
|
|
3
3
|
"Info": {
|
|
4
4
|
"JSBundleType": "framework",
|
|
5
5
|
"JSBundleIdentifier": "io.breakside.JSKit.SecurityKit",
|
|
6
|
-
"JSBundleVersion": "2026.2.
|
|
6
|
+
"JSBundleVersion": "2026.2.2",
|
|
7
7
|
"JSDevelopmentLanguage": "en",
|
|
8
8
|
"JSCopyright": "Copyright © 2020 Breakside Inc.",
|
|
9
9
|
"JSBundleEnvironments": {
|
|
@@ -11,7 +11,7 @@ JSBundle.bundles['io.breakside.JSKit.SecurityKit'] = {
|
|
|
11
11
|
"node": "SecurityKit+Node.js"
|
|
12
12
|
},
|
|
13
13
|
"JSLicenseNotice": "Licensed under the Breakside Public License, Version 1.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nIf a copy of the License was not distributed with this file, you may\nobtain a copy at\n\n http://breakside.io/licenses/LICENSE-1.0.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n",
|
|
14
|
-
"GitRevision": "
|
|
14
|
+
"GitRevision": "243c2bc0a9cca7be568b91320f8348fa215ed5b4"
|
|
15
15
|
},
|
|
16
16
|
"Resources": [],
|
|
17
17
|
"ResourceLookup": {
|
package/Info.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"JSBundleType": "node",
|
|
3
3
|
"JSBundleIdentifier": "io.breakside.jskit",
|
|
4
|
-
"JSBundleVersion": "2026.2.
|
|
4
|
+
"JSBundleVersion": "2026.2.2",
|
|
5
5
|
"JSExecutableName": "jskit",
|
|
6
6
|
"NPMOrganization": "breakside",
|
|
7
7
|
"JSResources": [
|
|
8
8
|
"Tests/HTMLTestRunner.js",
|
|
9
9
|
"Tests/NodeTestRunner.js"
|
|
10
10
|
],
|
|
11
|
-
"GitRevision": "
|
|
11
|
+
"GitRevision": "243c2bc0a9cca7be568b91320f8348fa215ed5b4"
|
|
12
12
|
}
|
|
@@ -3,14 +3,14 @@ JSBundle.bundles['io.breakside.jskit'] = {
|
|
|
3
3
|
"Info": {
|
|
4
4
|
"JSBundleType": "node",
|
|
5
5
|
"JSBundleIdentifier": "io.breakside.jskit",
|
|
6
|
-
"JSBundleVersion": "2026.2.
|
|
6
|
+
"JSBundleVersion": "2026.2.2",
|
|
7
7
|
"JSExecutableName": "jskit",
|
|
8
8
|
"NPMOrganization": "breakside",
|
|
9
9
|
"JSResources": [
|
|
10
10
|
"Tests/HTMLTestRunner.js",
|
|
11
11
|
"Tests/NodeTestRunner.js"
|
|
12
12
|
],
|
|
13
|
-
"GitRevision": "
|
|
13
|
+
"GitRevision": "243c2bc0a9cca7be568b91320f8348fa215ed5b4"
|
|
14
14
|
},
|
|
15
15
|
"Resources": [
|
|
16
16
|
{
|
|
@@ -73,7 +73,7 @@ JSFile.unregisterContentTypeForFileExtension = function(contentType, fileExtensi
|
|
|
73
73
|
};
|
|
74
74
|
|
|
75
75
|
JSFile.contentTypeForFileExtension = function(fileExtension){
|
|
76
|
-
return JSFile.contentTypesByFileExtension[fileExtension] || null;
|
|
76
|
+
return JSFile.contentTypesByFileExtension[fileExtension.toLowerCase()] || null;
|
|
77
77
|
};
|
|
78
78
|
|
|
79
79
|
JSClass("JSDataFile", JSFile, {
|
|
@@ -73,6 +73,11 @@ MKAsset.definePropertiesFromExtensions({
|
|
|
73
73
|
// logger.debug("drawn");
|
|
74
74
|
canvas.toBlob(function(blob){
|
|
75
75
|
// logger.debug("blob");
|
|
76
|
+
if (blob === null){
|
|
77
|
+
logger.error("Unable to get blob from canvas");
|
|
78
|
+
completion.call(target, null);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
76
81
|
var reader = new FileReader();
|
|
77
82
|
reader.addEventListener("loadend", function(){
|
|
78
83
|
// logger.debug("read");
|
|
@@ -121,7 +121,7 @@ UIAnimation.defaultInterpolationValueToPairWithValue = function(value){
|
|
|
121
121
|
return JSRect.Zero;
|
|
122
122
|
}
|
|
123
123
|
if (value instanceof JSAffineTransform){
|
|
124
|
-
return JSAffineTransform.
|
|
124
|
+
return JSAffineTransform.Identity;
|
|
125
125
|
}
|
|
126
126
|
if (value.isKindOfClass && value.isKindOfClass(JSColor)){
|
|
127
127
|
return value.colorWithAlpha(0);
|
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
|
|
20
20
|
(function(){
|
|
21
21
|
|
|
22
|
+
var logger = JSLog("uikit", "animation");
|
|
23
|
+
|
|
22
24
|
JSClass('UIBasicAnimation', UIPropertyAnimation, {
|
|
23
25
|
timingFunction: null,
|
|
24
26
|
duration: JSDynamicProperty('_duration', 0.25),
|
|
@@ -87,7 +89,26 @@ JSClass('UIBasicAnimation', UIPropertyAnimation, {
|
|
|
87
89
|
_updatePresentation: function(){
|
|
88
90
|
var progress = this.timingFunction(this._state.currentPercentage);
|
|
89
91
|
this.isComplete = this._state.isComplete();
|
|
90
|
-
|
|
92
|
+
var value = this.interpolation(this._fromValue, this._toValue, progress);
|
|
93
|
+
if (this._updateContext === this._layer.presentation && this._updateProperty === "transform"){
|
|
94
|
+
if (value === undefined || value === null){
|
|
95
|
+
logger.debug("fromValue = %{public}, toValue = %{public}", "" + this._fromValue, "" + this._toValue);
|
|
96
|
+
if (this._layer.delegate instanceof UIView){
|
|
97
|
+
var view = this._layer.delegate;
|
|
98
|
+
logger.debug("view = %{public}, viewController = %{public}", view.$class.className, view.viewController ? view.viewController.$class.className : "null");
|
|
99
|
+
view = view.superview;
|
|
100
|
+
while (view !== null){
|
|
101
|
+
logger.debug("superview = %{public}, viewController = %{public}", view.$class.className, view.viewController ? view.viewController.$class.className : "null");
|
|
102
|
+
view = view.superview;
|
|
103
|
+
}
|
|
104
|
+
}else{
|
|
105
|
+
logger.debug("layer delegate is not a view");
|
|
106
|
+
}
|
|
107
|
+
logger.error("interpolated transform value is null/undefined");
|
|
108
|
+
value = JSAffineTransform.Identity;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
this._updateContext[this._updateProperty] = value;
|
|
91
112
|
if (this._updateContext === this._layer.presentation && (this._updateProperty === "bounds" || this._updateProperty === "imageFrame")){
|
|
92
113
|
this._layer.setNeedsDisplay();
|
|
93
114
|
}
|
|
@@ -132,7 +132,16 @@ JSClass("UICollectionViewCell", UICollectionReusableView, {
|
|
|
132
132
|
},
|
|
133
133
|
|
|
134
134
|
mouseEntered: function(event){
|
|
135
|
-
|
|
135
|
+
if (!this.collectionView){
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
if (this.collectionView._needsReload){
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
if (this.collectionView._edit !== null){
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
var shouldSelect = (!this.collectionView.delegate || !this.collectionView.delegate.collectionViewShouldSelectCellAtIndexPath || this.collectionView.delegate.collectionViewShouldSelectCellAtIndexPath(this.collectionView, this.collectionView.indexPathOfCell(this)));
|
|
136
145
|
if (shouldSelect){
|
|
137
146
|
this.over = true;
|
|
138
147
|
}
|
|
@@ -73,12 +73,19 @@ JSClass("UIHTMLApplication", UIApplication, {
|
|
|
73
73
|
if (options === undefined){
|
|
74
74
|
options = {};
|
|
75
75
|
}
|
|
76
|
-
if (options.replacingApplication
|
|
76
|
+
if (options.replacingApplication){
|
|
77
77
|
var application = this;
|
|
78
78
|
var open = function(){
|
|
79
|
+
application.domWindow.addEventListener("visibilitychange", function(e){
|
|
80
|
+
if (application.domWindow.document.visibilityState === "visible"){
|
|
81
|
+
application.domWindow.location.reload();
|
|
82
|
+
}
|
|
83
|
+
});
|
|
79
84
|
application.domWindow.location.href = url.encodedString;
|
|
80
85
|
};
|
|
81
86
|
this.stop(open);
|
|
87
|
+
}else if (url.scheme === "mailto" || url.scheme === "tel"){
|
|
88
|
+
this.domWindow.location.href = url.encodedString;
|
|
82
89
|
}else{
|
|
83
90
|
try{
|
|
84
91
|
var child = this.domWindow.open(url.encodedString);
|
|
@@ -283,7 +283,7 @@ JSClass("UIHTMLDisplayServerCanvasContext", UIHTMLDisplayServerContext, {
|
|
|
283
283
|
updateHTMLProperty_transform: function(layer){
|
|
284
284
|
var transform = layer.presentation.transform;
|
|
285
285
|
var anchorPoint = layer.presentation.anchorPoint;
|
|
286
|
-
if (!transform.isIdentity){
|
|
286
|
+
if (!!transform && !transform.isIdentity){
|
|
287
287
|
var cssTransform = 'matrix(%f, %f, %f, %f, %f, %f)'.sprintf(transform.a, transform.b, transform.c, transform.d, transform.tx, transform.ty);
|
|
288
288
|
this.style.transform = cssTransform;
|
|
289
289
|
this.style.transformOrigin = '%f%% %f%% 0'.sprintf(anchorPoint.x * 100, anchorPoint.y * 100);
|
|
@@ -185,6 +185,9 @@ JSClass("UISlider", UIControl, {
|
|
|
185
185
|
var p0 = this._cachedMinimumPoint;
|
|
186
186
|
var p1 = this._cachedMaximumPoint;
|
|
187
187
|
var length = p1.x - p0.x;
|
|
188
|
+
if (length <= 0){
|
|
189
|
+
return this._minimumValue;
|
|
190
|
+
}
|
|
188
191
|
var dx = location.x - p0.x;
|
|
189
192
|
return Math.min(this._maximumValue, Math.max(this._minimumValue, this._minimumValue + (this._maximumValue - this._minimumValue) * dx / length));
|
|
190
193
|
},
|
|
@@ -194,6 +197,9 @@ JSClass("UISlider", UIControl, {
|
|
|
194
197
|
var p0 = this._cachedMinimumPoint;
|
|
195
198
|
var p1 = this._cachedMaximumPoint;
|
|
196
199
|
var length = p1.x - p0.x;
|
|
200
|
+
if (length <= 0){
|
|
201
|
+
return JSPoint(p0);
|
|
202
|
+
}
|
|
197
203
|
var dx = (value - this._minimumValue) / (this._maximumValue - this._minimumValue) * length;
|
|
198
204
|
return JSPoint(p0.x + dx, p0.y);
|
|
199
205
|
},
|
|
@@ -21,6 +21,8 @@
|
|
|
21
21
|
|
|
22
22
|
(function(){
|
|
23
23
|
|
|
24
|
+
var logger = JSLog("uikit", "textedit");
|
|
25
|
+
|
|
24
26
|
JSClass("UITextEditor", JSObject, {
|
|
25
27
|
|
|
26
28
|
layoutLayer: null,
|
|
@@ -144,6 +146,7 @@ JSClass("UITextEditor", JSObject, {
|
|
|
144
146
|
}
|
|
145
147
|
}else{
|
|
146
148
|
this._handledSelectOnMouseDown = true;
|
|
149
|
+
this._draggingSelectionIndex = 0;
|
|
147
150
|
var range = null;
|
|
148
151
|
var atomicRange;
|
|
149
152
|
var affinity = UITextInput.SelectionAffinity.beforeCurrentCharacter;
|