Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jingan-wisdom
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
郭铭瑶
jingan-wisdom
Commits
784ecc7a
Commit
784ecc7a
authored
Dec 24, 2021
by
程卓
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
init url
parent
48983153
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
913 additions
and
912 deletions
+913
-912
index.bb375392.js
dist/assets/index.bb375392.js
+2
-2
index.html
dist/index.html
+1
-1
package-lock.json
package-lock.json
+1
-0
api.ts
src/ajax/api.ts
+2
-2
component-lib.esm.js
src/utils/component-lib.esm.js
+905
-905
component-list.js
src/utils/component-list.js
+2
-2
No files found.
dist/assets/index.
6824a7c1
.js
→
dist/assets/index.
bb375392
.js
View file @
784ecc7a
This source diff could not be displayed because it is too large. You can
view the blob
instead.
dist/index.html
View file @
784ecc7a
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
<link
rel=
"icon"
href=
"./favicon.ico"
/>
<link
rel=
"icon"
href=
"./favicon.ico"
/>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0"
>
<title>
静安智慧房管
</title>
<title>
静安智慧房管
</title>
<script
type=
"module"
crossorigin
src=
"./assets/index.
6824a7c1
.js"
></script>
<script
type=
"module"
crossorigin
src=
"./assets/index.
bb375392
.js"
></script>
<link
rel=
"modulepreload"
href=
"./assets/vendor.d8be57b6.js"
>
<link
rel=
"modulepreload"
href=
"./assets/vendor.d8be57b6.js"
>
<link
rel=
"stylesheet"
href=
"./assets/vendor.db35e2cd.css"
>
<link
rel=
"stylesheet"
href=
"./assets/vendor.db35e2cd.css"
>
<link
rel=
"stylesheet"
href=
"./assets/index.1e95251e.css"
>
<link
rel=
"stylesheet"
href=
"./assets/index.1e95251e.css"
>
...
...
package-lock.json
View file @
784ecc7a
...
@@ -5,6 +5,7 @@
...
@@ -5,6 +5,7 @@
"requires"
:
true
,
"requires"
:
true
,
"packages"
:
{
"packages"
:
{
""
:
{
""
:
{
"name"
:
"jingan-wisdom"
,
"version"
:
"1.0.0"
,
"version"
:
"1.0.0"
,
"dependencies"
:
{
"dependencies"
:
{
"@dom-utils/selector-path"
:
"^1.0.3"
,
"@dom-utils/selector-path"
:
"^1.0.3"
,
...
...
src/ajax/api.ts
View file @
784ecc7a
let
BASE_URL
:
string
=
''
let
BASE_URL
:
string
=
''
switch
(
process
.
env
.
NODE_ENV
)
{
switch
(
process
.
env
.
NODE_ENV
)
{
case
'production'
:
case
'production'
:
BASE_URL
=
'http://j
a-hm
.omniview.pro/api/v2'
BASE_URL
=
'http://j
ingan
.omniview.pro/api/v2'
break
break
default
:
default
:
BASE_URL
=
'http://j
a-hm
.omniview.pro/api/v2'
BASE_URL
=
'http://j
ingan
.omniview.pro/api/v2'
}
}
export
default
{
export
default
{
...
...
src/utils/component-lib.esm.js
View file @
784ecc7a
...
@@ -170,11 +170,11 @@ let BASE_URL = '';
...
@@ -170,11 +170,11 @@ let BASE_URL = '';
switch
(
"production"
)
{
switch
(
"production"
)
{
case
'production'
:
case
'production'
:
BASE_URL
=
'http://j
a-hm.omniview.pro
/api/v2'
;
BASE_URL
=
'http://j
ingan.omniview.pro/
/api/v2'
;
break
;
break
;
default
:
default
:
BASE_URL
=
'http://j
a-hm.omniview.pro
/api/v2'
;
BASE_URL
=
'http://j
ingan.omniview.pro/
/api/v2'
;
}
}
var
api
=
{
var
api
=
{
...
@@ -7758,931 +7758,931 @@ var VFollower = defineComponent({
...
@@ -7758,931 +7758,931 @@ var VFollower = defineComponent({
}
}
});
});
/**
/**
* A collection of shims that provide minimal functionality of the ES6 collections.
* A collection of shims that provide minimal functionality of the ES6 collections.
*
*
* These implementations are not meant to be used outside of the ResizeObserver
* These implementations are not meant to be used outside of the ResizeObserver
* modules as they cover only a limited range of use cases.
* modules as they cover only a limited range of use cases.
*/
*/
/* eslint-disable require-jsdoc, valid-jsdoc */
/* eslint-disable require-jsdoc, valid-jsdoc */
var
MapShim
=
(
function
()
{
var
MapShim
=
(
function
()
{
if
(
typeof
Map
!==
'undefined'
)
{
if
(
typeof
Map
!==
'undefined'
)
{
return
Map
;
return
Map
;
}
}
/**
/**
* Returns index in provided array that matches the specified key.
* Returns index in provided array that matches the specified key.
*
*
* @param {Array<Array>} arr
* @param {Array<Array>} arr
* @param {*} key
* @param {*} key
* @returns {number}
* @returns {number}
*/
*/
function
getIndex
(
arr
,
key
)
{
function
getIndex
(
arr
,
key
)
{
var
result
=
-
1
;
var
result
=
-
1
;
arr
.
some
(
function
(
entry
,
index
)
{
arr
.
some
(
function
(
entry
,
index
)
{
if
(
entry
[
0
]
===
key
)
{
if
(
entry
[
0
]
===
key
)
{
result
=
index
;
result
=
index
;
return
true
;
return
true
;
}
}
return
false
;
return
false
;
});
});
return
result
;
return
result
;
}
}
return
/** @class */
(
function
()
{
return
/** @class */
(
function
()
{
function
class_1
()
{
function
class_1
()
{
this
.
__entries__
=
[];
this
.
__entries__
=
[];
}
}
Object
.
defineProperty
(
class_1
.
prototype
,
"size"
,
{
Object
.
defineProperty
(
class_1
.
prototype
,
"size"
,
{
/**
/**
* @returns {boolean}
* @returns {boolean}
*/
*/
get
:
function
()
{
get
:
function
()
{
return
this
.
__entries__
.
length
;
return
this
.
__entries__
.
length
;
},
},
enumerable
:
true
,
enumerable
:
true
,
configurable
:
true
configurable
:
true
});
});
/**
/**
* @param {*} key
* @param {*} key
* @returns {*}
* @returns {*}
*/
*/
class_1
.
prototype
.
get
=
function
(
key
)
{
class_1
.
prototype
.
get
=
function
(
key
)
{
var
index
=
getIndex
(
this
.
__entries__
,
key
);
var
index
=
getIndex
(
this
.
__entries__
,
key
);
var
entry
=
this
.
__entries__
[
index
];
var
entry
=
this
.
__entries__
[
index
];
return
entry
&&
entry
[
1
];
return
entry
&&
entry
[
1
];
};
};
/**
/**
* @param {*} key
* @param {*} key
* @param {*} value
* @param {*} value
* @returns {void}
* @returns {void}
*/
*/
class_1
.
prototype
.
set
=
function
(
key
,
value
)
{
class_1
.
prototype
.
set
=
function
(
key
,
value
)
{
var
index
=
getIndex
(
this
.
__entries__
,
key
);
var
index
=
getIndex
(
this
.
__entries__
,
key
);
if
(
~
index
)
{
if
(
~
index
)
{
this
.
__entries__
[
index
][
1
]
=
value
;
this
.
__entries__
[
index
][
1
]
=
value
;
}
}
else
{
else
{
this
.
__entries__
.
push
([
key
,
value
]);
this
.
__entries__
.
push
([
key
,
value
]);
}
}
};
};
/**
/**
* @param {*} key
* @param {*} key
* @returns {void}
* @returns {void}
*/
*/
class_1
.
prototype
.
delete
=
function
(
key
)
{
class_1
.
prototype
.
delete
=
function
(
key
)
{
var
entries
=
this
.
__entries__
;
var
entries
=
this
.
__entries__
;
var
index
=
getIndex
(
entries
,
key
);
var
index
=
getIndex
(
entries
,
key
);
if
(
~
index
)
{
if
(
~
index
)
{
entries
.
splice
(
index
,
1
);
entries
.
splice
(
index
,
1
);
}
}
};
};
/**
/**
* @param {*} key
* @param {*} key
* @returns {void}
* @returns {void}
*/
*/
class_1
.
prototype
.
has
=
function
(
key
)
{
class_1
.
prototype
.
has
=
function
(
key
)
{
return
!!~
getIndex
(
this
.
__entries__
,
key
);
return
!!~
getIndex
(
this
.
__entries__
,
key
);
};
};
/**
/**
* @returns {void}
* @returns {void}
*/
*/
class_1
.
prototype
.
clear
=
function
()
{
class_1
.
prototype
.
clear
=
function
()
{
this
.
__entries__
.
splice
(
0
);
this
.
__entries__
.
splice
(
0
);
};
};
/**
/**
* @param {Function} callback
* @param {Function} callback
* @param {*} [ctx=null]
* @param {*} [ctx=null]
* @returns {void}
* @returns {void}
*/
*/
class_1
.
prototype
.
forEach
=
function
(
callback
,
ctx
)
{
class_1
.
prototype
.
forEach
=
function
(
callback
,
ctx
)
{
if
(
ctx
===
void
0
)
{
ctx
=
null
;
}
if
(
ctx
===
void
0
)
{
ctx
=
null
;
}
for
(
var
_i
=
0
,
_a
=
this
.
__entries__
;
_i
<
_a
.
length
;
_i
++
)
{
for
(
var
_i
=
0
,
_a
=
this
.
__entries__
;
_i
<
_a
.
length
;
_i
++
)
{
var
entry
=
_a
[
_i
];
var
entry
=
_a
[
_i
];
callback
.
call
(
ctx
,
entry
[
1
],
entry
[
0
]);
callback
.
call
(
ctx
,
entry
[
1
],
entry
[
0
]);
}
}
};
};
return
class_1
;
return
class_1
;
}());
}());
})();
})();
/**
/**
* Detects whether window and document objects are available in current environment.
* Detects whether window and document objects are available in current environment.
*/
*/
var
isBrowser
=
typeof
window
!==
'undefined'
&&
typeof
document
!==
'undefined'
&&
window
.
document
===
document
;
var
isBrowser
=
typeof
window
!==
'undefined'
&&
typeof
document
!==
'undefined'
&&
window
.
document
===
document
;
// Returns global object of a current environment.
// Returns global object of a current environment.
var
global
$1
=
(
function
()
{
var
global
$1
=
(
function
()
{
if
(
typeof
global
!==
'undefined'
&&
global
.
Math
===
Math
)
{
if
(
typeof
global
!==
'undefined'
&&
global
.
Math
===
Math
)
{
return
global
;
return
global
;
}
}
if
(
typeof
self
!==
'undefined'
&&
self
.
Math
===
Math
)
{
if
(
typeof
self
!==
'undefined'
&&
self
.
Math
===
Math
)
{
return
self
;
return
self
;
}
}
if
(
typeof
window
!==
'undefined'
&&
window
.
Math
===
Math
)
{
if
(
typeof
window
!==
'undefined'
&&
window
.
Math
===
Math
)
{
return
window
;
return
window
;
}
}
// eslint-disable-next-line no-new-func
// eslint-disable-next-line no-new-func
return
Function
(
'return this'
)();
return
Function
(
'return this'
)();
})();
})();
/**
/**
* A shim for the requestAnimationFrame which falls back to the setTimeout if
* A shim for the requestAnimationFrame which falls back to the setTimeout if
* first one is not supported.
* first one is not supported.
*
*
* @returns {number} Requests' identifier.
* @returns {number} Requests' identifier.
*/
*/
var
requestAnimationFrame$1
=
(
function
()
{
var
requestAnimationFrame$1
=
(
function
()
{
if
(
typeof
requestAnimationFrame
===
'function'
)
{
if
(
typeof
requestAnimationFrame
===
'function'
)
{
// It's required to use a bounded function because IE sometimes throws
// It's required to use a bounded function because IE sometimes throws
// an "Invalid calling object" error if rAF is invoked without the global
// an "Invalid calling object" error if rAF is invoked without the global
// object on the left hand side.
// object on the left hand side.
return
requestAnimationFrame
.
bind
(
global
$1
);
return
requestAnimationFrame
.
bind
(
global
$1
);
}
}
return
function
(
callback
)
{
return
setTimeout
(
function
()
{
return
callback
(
Date
.
now
());
},
1000
/
60
);
};
return
function
(
callback
)
{
return
setTimeout
(
function
()
{
return
callback
(
Date
.
now
());
},
1000
/
60
);
};
})();
})();
// Defines minimum timeout before adding a trailing call.
// Defines minimum timeout before adding a trailing call.
var
trailingTimeout
=
2
;
var
trailingTimeout
=
2
;
/**
/**
* Creates a wrapper function which ensures that provided callback will be
* Creates a wrapper function which ensures that provided callback will be
* invoked only once during the specified delay period.
* invoked only once during the specified delay period.
*
*
* @param {Function} callback - Function to be invoked after the delay period.
* @param {Function} callback - Function to be invoked after the delay period.
* @param {number} delay - Delay after which to invoke callback.
* @param {number} delay - Delay after which to invoke callback.
* @returns {Function}
* @returns {Function}
*/
*/
function
throttle
(
callback
,
delay
)
{
function
throttle
(
callback
,
delay
)
{
var
leadingCall
=
false
,
trailingCall
=
false
,
lastCallTime
=
0
;
var
leadingCall
=
false
,
trailingCall
=
false
,
lastCallTime
=
0
;
/**
/**
* Invokes the original callback function and schedules new invocation if
* Invokes the original callback function and schedules new invocation if
* the "proxy" was called during current request.
* the "proxy" was called during current request.
*
*
* @returns {void}
* @returns {void}
*/
*/
function
resolvePending
()
{
function
resolvePending
()
{
if
(
leadingCall
)
{
if
(
leadingCall
)
{
leadingCall
=
false
;
leadingCall
=
false
;
callback
();
callback
();
}
}
if
(
trailingCall
)
{
if
(
trailingCall
)
{
proxy
();
proxy
();
}
}
}
}
/**
/**
* Callback invoked after the specified delay. It will further postpone
* Callback invoked after the specified delay. It will further postpone
* invocation of the original function delegating it to the
* invocation of the original function delegating it to the
* requestAnimationFrame.
* requestAnimationFrame.
*
*
* @returns {void}
* @returns {void}
*/
*/
function
timeoutCallback
()
{
function
timeoutCallback
()
{
requestAnimationFrame$1
(
resolvePending
);
requestAnimationFrame$1
(
resolvePending
);
}
}
/**
/**
* Schedules invocation of the original function.
* Schedules invocation of the original function.
*
*
* @returns {void}
* @returns {void}
*/
*/
function
proxy
()
{
function
proxy
()
{
var
timeStamp
=
Date
.
now
();
var
timeStamp
=
Date
.
now
();
if
(
leadingCall
)
{
if
(
leadingCall
)
{
// Reject immediately following calls.
// Reject immediately following calls.
if
(
timeStamp
-
lastCallTime
<
trailingTimeout
)
{
if
(
timeStamp
-
lastCallTime
<
trailingTimeout
)
{
return
;
return
;
}
}
// Schedule new call to be in invoked when the pending one is resolved.
// Schedule new call to be in invoked when the pending one is resolved.
// This is important for "transitions" which never actually start
// This is important for "transitions" which never actually start
// immediately so there is a chance that we might miss one if change
// immediately so there is a chance that we might miss one if change
// happens amids the pending invocation.
// happens amids the pending invocation.
trailingCall
=
true
;
trailingCall
=
true
;
}
}
else
{
else
{
leadingCall
=
true
;
leadingCall
=
true
;
trailingCall
=
false
;
trailingCall
=
false
;
setTimeout
(
timeoutCallback
,
delay
);
setTimeout
(
timeoutCallback
,
delay
);
}
}
lastCallTime
=
timeStamp
;
lastCallTime
=
timeStamp
;
}
}
return
proxy
;
return
proxy
;
}
}
// Minimum delay before invoking the update of observers.
// Minimum delay before invoking the update of observers.
var
REFRESH_DELAY
=
20
;
var
REFRESH_DELAY
=
20
;
// A list of substrings of CSS properties used to find transition events that
// A list of substrings of CSS properties used to find transition events that
// might affect dimensions of observed elements.
// might affect dimensions of observed elements.
var
transitionKeys
=
[
'top'
,
'right'
,
'bottom'
,
'left'
,
'width'
,
'height'
,
'size'
,
'weight'
];
var
transitionKeys
=
[
'top'
,
'right'
,
'bottom'
,
'left'
,
'width'
,
'height'
,
'size'
,
'weight'
];
// Check if MutationObserver is available.
// Check if MutationObserver is available.
var
mutationObserverSupported
=
typeof
MutationObserver
!==
'undefined'
;
var
mutationObserverSupported
=
typeof
MutationObserver
!==
'undefined'
;
/**
/**
* Singleton controller class which handles updates of ResizeObserver instances.
* Singleton controller class which handles updates of ResizeObserver instances.
*/
*/
var
ResizeObserverController
=
/** @class */
(
function
()
{
var
ResizeObserverController
=
/** @class */
(
function
()
{
/**
/**
* Creates a new instance of ResizeObserverController.
* Creates a new instance of ResizeObserverController.
*
*
* @private
* @private
*/
*/
function
ResizeObserverController
()
{
function
ResizeObserverController
()
{
/**
/**
* Indicates whether DOM listeners have been added.
* Indicates whether DOM listeners have been added.
*
*
* @private {boolean}
* @private {boolean}
*/
*/
this
.
connected_
=
false
;
this
.
connected_
=
false
;
/**
/**
* Tells that controller has subscribed for Mutation Events.
* Tells that controller has subscribed for Mutation Events.
*
*
* @private {boolean}
* @private {boolean}
*/
*/
this
.
mutationEventsAdded_
=
false
;
this
.
mutationEventsAdded_
=
false
;
/**
/**
* Keeps reference to the instance of MutationObserver.
* Keeps reference to the instance of MutationObserver.
*
*
* @private {MutationObserver}
* @private {MutationObserver}
*/
*/
this
.
mutationsObserver_
=
null
;
this
.
mutationsObserver_
=
null
;
/**
/**
* A list of connected observers.
* A list of connected observers.
*
*
* @private {Array<ResizeObserverSPI>}
* @private {Array<ResizeObserverSPI>}
*/
*/
this
.
observers_
=
[];
this
.
observers_
=
[];
this
.
onTransitionEnd_
=
this
.
onTransitionEnd_
.
bind
(
this
);
this
.
onTransitionEnd_
=
this
.
onTransitionEnd_
.
bind
(
this
);
this
.
refresh
=
throttle
(
this
.
refresh
.
bind
(
this
),
REFRESH_DELAY
);
this
.
refresh
=
throttle
(
this
.
refresh
.
bind
(
this
),
REFRESH_DELAY
);
}
}
/**
/**
* Adds observer to observers list.
* Adds observer to observers list.
*
*
* @param {ResizeObserverSPI} observer - Observer to be added.
* @param {ResizeObserverSPI} observer - Observer to be added.
* @returns {void}
* @returns {void}
*/
*/
ResizeObserverController
.
prototype
.
addObserver
=
function
(
observer
)
{
ResizeObserverController
.
prototype
.
addObserver
=
function
(
observer
)
{
if
(
!~
this
.
observers_
.
indexOf
(
observer
))
{
if
(
!~
this
.
observers_
.
indexOf
(
observer
))
{
this
.
observers_
.
push
(
observer
);
this
.
observers_
.
push
(
observer
);
}
}
// Add listeners if they haven't been added yet.
// Add listeners if they haven't been added yet.
if
(
!
this
.
connected_
)
{
if
(
!
this
.
connected_
)
{
this
.
connect_
();
this
.
connect_
();
}
}
};
};
/**
/**
* Removes observer from observers list.
* Removes observer from observers list.
*
*
* @param {ResizeObserverSPI} observer - Observer to be removed.
* @param {ResizeObserverSPI} observer - Observer to be removed.
* @returns {void}
* @returns {void}
*/
*/
ResizeObserverController
.
prototype
.
removeObserver
=
function
(
observer
)
{
ResizeObserverController
.
prototype
.
removeObserver
=
function
(
observer
)
{
var
observers
=
this
.
observers_
;
var
observers
=
this
.
observers_
;
var
index
=
observers
.
indexOf
(
observer
);
var
index
=
observers
.
indexOf
(
observer
);
// Remove observer if it's present in registry.
// Remove observer if it's present in registry.
if
(
~
index
)
{
if
(
~
index
)
{
observers
.
splice
(
index
,
1
);
observers
.
splice
(
index
,
1
);
}
}
// Remove listeners if controller has no connected observers.
// Remove listeners if controller has no connected observers.
if
(
!
observers
.
length
&&
this
.
connected_
)
{
if
(
!
observers
.
length
&&
this
.
connected_
)
{
this
.
disconnect_
();
this
.
disconnect_
();
}
}
};
};
/**
/**
* Invokes the update of observers. It will continue running updates insofar
* Invokes the update of observers. It will continue running updates insofar
* it detects changes.
* it detects changes.
*
*
* @returns {void}
* @returns {void}
*/
*/
ResizeObserverController
.
prototype
.
refresh
=
function
()
{
ResizeObserverController
.
prototype
.
refresh
=
function
()
{
var
changesDetected
=
this
.
updateObservers_
();
var
changesDetected
=
this
.
updateObservers_
();
// Continue running updates if changes have been detected as there might
// Continue running updates if changes have been detected as there might
// be future ones caused by CSS transitions.
// be future ones caused by CSS transitions.
if
(
changesDetected
)
{
if
(
changesDetected
)
{
this
.
refresh
();
this
.
refresh
();
}
}
};
};
/**
/**
* Updates every observer from observers list and notifies them of queued
* Updates every observer from observers list and notifies them of queued
* entries.
* entries.
*
*
* @private
* @private
* @returns {boolean} Returns "true" if any observer has detected changes in
* @returns {boolean} Returns "true" if any observer has detected changes in
* dimensions of it's elements.
* dimensions of it's elements.
*/
*/
ResizeObserverController
.
prototype
.
updateObservers_
=
function
()
{
ResizeObserverController
.
prototype
.
updateObservers_
=
function
()
{
// Collect observers that have active observations.
// Collect observers that have active observations.
var
activeObservers
=
this
.
observers_
.
filter
(
function
(
observer
)
{
var
activeObservers
=
this
.
observers_
.
filter
(
function
(
observer
)
{
return
observer
.
gatherActive
(),
observer
.
hasActive
();
return
observer
.
gatherActive
(),
observer
.
hasActive
();
});
});
// Deliver notifications in a separate cycle in order to avoid any
// Deliver notifications in a separate cycle in order to avoid any
// collisions between observers, e.g. when multiple instances of
// collisions between observers, e.g. when multiple instances of
// ResizeObserver are tracking the same element and the callback of one
// ResizeObserver are tracking the same element and the callback of one
// of them changes content dimensions of the observed target. Sometimes
// of them changes content dimensions of the observed target. Sometimes
// this may result in notifications being blocked for the rest of observers.
// this may result in notifications being blocked for the rest of observers.
activeObservers
.
forEach
(
function
(
observer
)
{
return
observer
.
broadcastActive
();
});
activeObservers
.
forEach
(
function
(
observer
)
{
return
observer
.
broadcastActive
();
});
return
activeObservers
.
length
>
0
;
return
activeObservers
.
length
>
0
;
};
};
/**
/**
* Initializes DOM listeners.
* Initializes DOM listeners.
*
*
* @private
* @private
* @returns {void}
* @returns {void}
*/
*/
ResizeObserverController
.
prototype
.
connect_
=
function
()
{
ResizeObserverController
.
prototype
.
connect_
=
function
()
{
// Do nothing if running in a non-browser environment or if listeners
// Do nothing if running in a non-browser environment or if listeners
// have been already added.
// have been already added.
if
(
!
isBrowser
||
this
.
connected_
)
{
if
(
!
isBrowser
||
this
.
connected_
)
{
return
;
return
;
}
}
// Subscription to the "Transitionend" event is used as a workaround for
// Subscription to the "Transitionend" event is used as a workaround for
// delayed transitions. This way it's possible to capture at least the
// delayed transitions. This way it's possible to capture at least the
// final state of an element.
// final state of an element.
document
.
addEventListener
(
'transitionend'
,
this
.
onTransitionEnd_
);
document
.
addEventListener
(
'transitionend'
,
this
.
onTransitionEnd_
);
window
.
addEventListener
(
'resize'
,
this
.
refresh
);
window
.
addEventListener
(
'resize'
,
this
.
refresh
);
if
(
mutationObserverSupported
)
{
if
(
mutationObserverSupported
)
{
this
.
mutationsObserver_
=
new
MutationObserver
(
this
.
refresh
);
this
.
mutationsObserver_
=
new
MutationObserver
(
this
.
refresh
);
this
.
mutationsObserver_
.
observe
(
document
,
{
this
.
mutationsObserver_
.
observe
(
document
,
{
attributes
:
true
,
attributes
:
true
,
childList
:
true
,
childList
:
true
,
characterData
:
true
,
characterData
:
true
,
subtree
:
true
subtree
:
true
});
});
}
}
else
{
else
{
document
.
addEventListener
(
'DOMSubtreeModified'
,
this
.
refresh
);
document
.
addEventListener
(
'DOMSubtreeModified'
,
this
.
refresh
);
this
.
mutationEventsAdded_
=
true
;
this
.
mutationEventsAdded_
=
true
;
}
}
this
.
connected_
=
true
;
this
.
connected_
=
true
;
};
};
/**
/**
* Removes DOM listeners.
* Removes DOM listeners.
*
*
* @private
* @private
* @returns {void}
* @returns {void}
*/
*/
ResizeObserverController
.
prototype
.
disconnect_
=
function
()
{
ResizeObserverController
.
prototype
.
disconnect_
=
function
()
{
// Do nothing if running in a non-browser environment or if listeners
// Do nothing if running in a non-browser environment or if listeners
// have been already removed.
// have been already removed.
if
(
!
isBrowser
||
!
this
.
connected_
)
{
if
(
!
isBrowser
||
!
this
.
connected_
)
{
return
;
return
;
}
}
document
.
removeEventListener
(
'transitionend'
,
this
.
onTransitionEnd_
);
document
.
removeEventListener
(
'transitionend'
,
this
.
onTransitionEnd_
);
window
.
removeEventListener
(
'resize'
,
this
.
refresh
);
window
.
removeEventListener
(
'resize'
,
this
.
refresh
);
if
(
this
.
mutationsObserver_
)
{
if
(
this
.
mutationsObserver_
)
{
this
.
mutationsObserver_
.
disconnect
();
this
.
mutationsObserver_
.
disconnect
();
}
}
if
(
this
.
mutationEventsAdded_
)
{
if
(
this
.
mutationEventsAdded_
)
{
document
.
removeEventListener
(
'DOMSubtreeModified'
,
this
.
refresh
);
document
.
removeEventListener
(
'DOMSubtreeModified'
,
this
.
refresh
);
}
}
this
.
mutationsObserver_
=
null
;
this
.
mutationsObserver_
=
null
;
this
.
mutationEventsAdded_
=
false
;
this
.
mutationEventsAdded_
=
false
;
this
.
connected_
=
false
;
this
.
connected_
=
false
;
};
};
/**
/**
* "Transitionend" event handler.
* "Transitionend" event handler.
*
*
* @private
* @private
* @param {TransitionEvent} event
* @param {TransitionEvent} event
* @returns {void}
* @returns {void}
*/
*/
ResizeObserverController
.
prototype
.
onTransitionEnd_
=
function
(
_a
)
{
ResizeObserverController
.
prototype
.
onTransitionEnd_
=
function
(
_a
)
{
var
_b
=
_a
.
propertyName
,
propertyName
=
_b
===
void
0
?
''
:
_b
;
var
_b
=
_a
.
propertyName
,
propertyName
=
_b
===
void
0
?
''
:
_b
;
// Detect whether transition may affect dimensions of an element.
// Detect whether transition may affect dimensions of an element.
var
isReflowProperty
=
transitionKeys
.
some
(
function
(
key
)
{
var
isReflowProperty
=
transitionKeys
.
some
(
function
(
key
)
{
return
!!~
propertyName
.
indexOf
(
key
);
return
!!~
propertyName
.
indexOf
(
key
);
});
});
if
(
isReflowProperty
)
{
if
(
isReflowProperty
)
{
this
.
refresh
();
this
.
refresh
();
}
}
};
};
/**
/**
* Returns instance of the ResizeObserverController.
* Returns instance of the ResizeObserverController.
*
*
* @returns {ResizeObserverController}
* @returns {ResizeObserverController}
*/
*/
ResizeObserverController
.
getInstance
=
function
()
{
ResizeObserverController
.
getInstance
=
function
()
{
if
(
!
this
.
instance_
)
{
if
(
!
this
.
instance_
)
{
this
.
instance_
=
new
ResizeObserverController
();
this
.
instance_
=
new
ResizeObserverController
();
}
}
return
this
.
instance_
;
return
this
.
instance_
;
};
};
/**
/**
* Holds reference to the controller's instance.
* Holds reference to the controller's instance.
*
*
* @private {ResizeObserverController}
* @private {ResizeObserverController}
*/
*/
ResizeObserverController
.
instance_
=
null
;
ResizeObserverController
.
instance_
=
null
;
return
ResizeObserverController
;
return
ResizeObserverController
;
}());
}());
/**
/**
* Defines non-writable/enumerable properties of the provided target object.
* Defines non-writable/enumerable properties of the provided target object.
*
*
* @param {Object} target - Object for which to define properties.
* @param {Object} target - Object for which to define properties.
* @param {Object} props - Properties to be defined.
* @param {Object} props - Properties to be defined.
* @returns {Object} Target object.
* @returns {Object} Target object.
*/
*/
var
defineConfigurable
=
(
function
(
target
,
props
)
{
var
defineConfigurable
=
(
function
(
target
,
props
)
{
for
(
var
_i
=
0
,
_a
=
Object
.
keys
(
props
);
_i
<
_a
.
length
;
_i
++
)
{
for
(
var
_i
=
0
,
_a
=
Object
.
keys
(
props
);
_i
<
_a
.
length
;
_i
++
)
{
var
key
=
_a
[
_i
];
var
key
=
_a
[
_i
];
Object
.
defineProperty
(
target
,
key
,
{
Object
.
defineProperty
(
target
,
key
,
{
value
:
props
[
key
],
value
:
props
[
key
],
enumerable
:
false
,
enumerable
:
false
,
writable
:
false
,
writable
:
false
,
configurable
:
true
configurable
:
true
});
});
}
}
return
target
;
return
target
;
});
});
/**
/**
* Returns the global object associated with provided element.
* Returns the global object associated with provided element.
*
*
* @param {Object} target
* @param {Object} target
* @returns {Object}
* @returns {Object}
*/
*/
var
getWindowOf
=
(
function
(
target
)
{
var
getWindowOf
=
(
function
(
target
)
{
// Assume that the element is an instance of Node, which means that it
// Assume that the element is an instance of Node, which means that it
// has the "ownerDocument" property from which we can retrieve a
// has the "ownerDocument" property from which we can retrieve a
// corresponding global object.
// corresponding global object.
var
ownerGlobal
=
target
&&
target
.
ownerDocument
&&
target
.
ownerDocument
.
defaultView
;
var
ownerGlobal
=
target
&&
target
.
ownerDocument
&&
target
.
ownerDocument
.
defaultView
;
// Return the local global object if it's not possible extract one from
// Return the local global object if it's not possible extract one from
// provided element.
// provided element.
return
ownerGlobal
||
global
$1
;
return
ownerGlobal
||
global
$1
;
});
});
// Placeholder of an empty content rectangle.
// Placeholder of an empty content rectangle.
var
emptyRect
=
createRectInit
(
0
,
0
,
0
,
0
);
var
emptyRect
=
createRectInit
(
0
,
0
,
0
,
0
);
/**
/**
* Converts provided string to a number.
* Converts provided string to a number.
*
*
* @param {number|string} value
* @param {number|string} value
* @returns {number}
* @returns {number}
*/
*/
function
toFloat
(
value
)
{
function
toFloat
(
value
)
{
return
parseFloat
(
value
)
||
0
;
return
parseFloat
(
value
)
||
0
;
}
}
/**
/**
* Extracts borders size from provided styles.
* Extracts borders size from provided styles.
*
*
* @param {CSSStyleDeclaration} styles
* @param {CSSStyleDeclaration} styles
* @param {...string} positions - Borders positions (top, right, ...)
* @param {...string} positions - Borders positions (top, right, ...)
* @returns {number}
* @returns {number}
*/
*/
function
getBordersSize
(
styles
)
{
function
getBordersSize
(
styles
)
{
var
positions
=
[];
var
positions
=
[];
for
(
var
_i
=
1
;
_i
<
arguments
.
length
;
_i
++
)
{
for
(
var
_i
=
1
;
_i
<
arguments
.
length
;
_i
++
)
{
positions
[
_i
-
1
]
=
arguments
[
_i
];
positions
[
_i
-
1
]
=
arguments
[
_i
];
}
}
return
positions
.
reduce
(
function
(
size
,
position
)
{
return
positions
.
reduce
(
function
(
size
,
position
)
{
var
value
=
styles
[
'border-'
+
position
+
'-width'
];
var
value
=
styles
[
'border-'
+
position
+
'-width'
];
return
size
+
toFloat
(
value
);
return
size
+
toFloat
(
value
);
},
0
);
},
0
);
}
}
/**
/**
* Extracts paddings sizes from provided styles.
* Extracts paddings sizes from provided styles.
*
*
* @param {CSSStyleDeclaration} styles
* @param {CSSStyleDeclaration} styles
* @returns {Object} Paddings box.
* @returns {Object} Paddings box.
*/
*/
function
getPaddings
(
styles
)
{
function
getPaddings
(
styles
)
{
var
positions
=
[
'top'
,
'right'
,
'bottom'
,
'left'
];
var
positions
=
[
'top'
,
'right'
,
'bottom'
,
'left'
];
var
paddings
=
{};
var
paddings
=
{};
for
(
var
_i
=
0
,
positions_1
=
positions
;
_i
<
positions_1
.
length
;
_i
++
)
{
for
(
var
_i
=
0
,
positions_1
=
positions
;
_i
<
positions_1
.
length
;
_i
++
)
{
var
position
=
positions_1
[
_i
];
var
position
=
positions_1
[
_i
];
var
value
=
styles
[
'padding-'
+
position
];
var
value
=
styles
[
'padding-'
+
position
];
paddings
[
position
]
=
toFloat
(
value
);
paddings
[
position
]
=
toFloat
(
value
);
}
}
return
paddings
;
return
paddings
;
}
}
/**
/**
* Calculates content rectangle of provided SVG element.
* Calculates content rectangle of provided SVG element.
*
*
* @param {SVGGraphicsElement} target - Element content rectangle of which needs
* @param {SVGGraphicsElement} target - Element content rectangle of which needs
* to be calculated.
* to be calculated.
* @returns {DOMRectInit}
* @returns {DOMRectInit}
*/
*/
function
getSVGContentRect
(
target
)
{
function
getSVGContentRect
(
target
)
{
var
bbox
=
target
.
getBBox
();
var
bbox
=
target
.
getBBox
();
return
createRectInit
(
0
,
0
,
bbox
.
width
,
bbox
.
height
);
return
createRectInit
(
0
,
0
,
bbox
.
width
,
bbox
.
height
);
}
}
/**
/**
* Calculates content rectangle of provided HTMLElement.
* Calculates content rectangle of provided HTMLElement.
*
*
* @param {HTMLElement} target - Element for which to calculate the content rectangle.
* @param {HTMLElement} target - Element for which to calculate the content rectangle.
* @returns {DOMRectInit}
* @returns {DOMRectInit}
*/
*/
function
getHTMLElementContentRect
(
target
)
{
function
getHTMLElementContentRect
(
target
)
{
// Client width & height properties can't be
// Client width & height properties can't be
// used exclusively as they provide rounded values.
// used exclusively as they provide rounded values.
var
clientWidth
=
target
.
clientWidth
,
clientHeight
=
target
.
clientHeight
;
var
clientWidth
=
target
.
clientWidth
,
clientHeight
=
target
.
clientHeight
;
// By this condition we can catch all non-replaced inline, hidden and
// By this condition we can catch all non-replaced inline, hidden and
// detached elements. Though elements with width & height properties less
// detached elements. Though elements with width & height properties less
// than 0.5 will be discarded as well.
// than 0.5 will be discarded as well.
//
//
// Without it we would need to implement separate methods for each of
// Without it we would need to implement separate methods for each of
// those cases and it's not possible to perform a precise and performance
// those cases and it's not possible to perform a precise and performance
// effective test for hidden elements. E.g. even jQuery's ':visible' filter
// effective test for hidden elements. E.g. even jQuery's ':visible' filter
// gives wrong results for elements with width & height less than 0.5.
// gives wrong results for elements with width & height less than 0.5.
if
(
!
clientWidth
&&
!
clientHeight
)
{
if
(
!
clientWidth
&&
!
clientHeight
)
{
return
emptyRect
;
return
emptyRect
;
}
}
var
styles
=
getWindowOf
(
target
).
getComputedStyle
(
target
);
var
styles
=
getWindowOf
(
target
).
getComputedStyle
(
target
);
var
paddings
=
getPaddings
(
styles
);
var
paddings
=
getPaddings
(
styles
);
var
horizPad
=
paddings
.
left
+
paddings
.
right
;
var
horizPad
=
paddings
.
left
+
paddings
.
right
;
var
vertPad
=
paddings
.
top
+
paddings
.
bottom
;
var
vertPad
=
paddings
.
top
+
paddings
.
bottom
;
// Computed styles of width & height are being used because they are the
// Computed styles of width & height are being used because they are the
// only dimensions available to JS that contain non-rounded values. It could
// only dimensions available to JS that contain non-rounded values. It could
// be possible to utilize the getBoundingClientRect if only it's data wasn't
// be possible to utilize the getBoundingClientRect if only it's data wasn't
// affected by CSS transformations let alone paddings, borders and scroll bars.
// affected by CSS transformations let alone paddings, borders and scroll bars.
var
width
=
toFloat
(
styles
.
width
),
height
=
toFloat
(
styles
.
height
);
var
width
=
toFloat
(
styles
.
width
),
height
=
toFloat
(
styles
.
height
);
// Width & height include paddings and borders when the 'border-box' box
// Width & height include paddings and borders when the 'border-box' box
// model is applied (except for IE).
// model is applied (except for IE).
if
(
styles
.
boxSizing
===
'border-box'
)
{
if
(
styles
.
boxSizing
===
'border-box'
)
{
// Following conditions are required to handle Internet Explorer which
// Following conditions are required to handle Internet Explorer which
// doesn't include paddings and borders to computed CSS dimensions.
// doesn't include paddings and borders to computed CSS dimensions.
//
//
// We can say that if CSS dimensions + paddings are equal to the "client"
// We can say that if CSS dimensions + paddings are equal to the "client"
// properties then it's either IE, and thus we don't need to subtract
// properties then it's either IE, and thus we don't need to subtract
// anything, or an element merely doesn't have paddings/borders styles.
// anything, or an element merely doesn't have paddings/borders styles.
if
(
Math
.
round
(
width
+
horizPad
)
!==
clientWidth
)
{
if
(
Math
.
round
(
width
+
horizPad
)
!==
clientWidth
)
{
width
-=
getBordersSize
(
styles
,
'left'
,
'right'
)
+
horizPad
;
width
-=
getBordersSize
(
styles
,
'left'
,
'right'
)
+
horizPad
;
}
}
if
(
Math
.
round
(
height
+
vertPad
)
!==
clientHeight
)
{
if
(
Math
.
round
(
height
+
vertPad
)
!==
clientHeight
)
{
height
-=
getBordersSize
(
styles
,
'top'
,
'bottom'
)
+
vertPad
;
height
-=
getBordersSize
(
styles
,
'top'
,
'bottom'
)
+
vertPad
;
}
}
}
}
// Following steps can't be applied to the document's root element as its
// Following steps can't be applied to the document's root element as its
// client[Width/Height] properties represent viewport area of the window.
// client[Width/Height] properties represent viewport area of the window.
// Besides, it's as well not necessary as the <html> itself neither has
// Besides, it's as well not necessary as the <html> itself neither has
// rendered scroll bars nor it can be clipped.
// rendered scroll bars nor it can be clipped.
if
(
!
isDocumentElement
(
target
))
{
if
(
!
isDocumentElement
(
target
))
{
// In some browsers (only in Firefox, actually) CSS width & height
// In some browsers (only in Firefox, actually) CSS width & height
// include scroll bars size which can be removed at this step as scroll
// include scroll bars size which can be removed at this step as scroll
// bars are the only difference between rounded dimensions + paddings
// bars are the only difference between rounded dimensions + paddings
// and "client" properties, though that is not always true in Chrome.
// and "client" properties, though that is not always true in Chrome.
var
vertScrollbar
=
Math
.
round
(
width
+
horizPad
)
-
clientWidth
;
var
vertScrollbar
=
Math
.
round
(
width
+
horizPad
)
-
clientWidth
;
var
horizScrollbar
=
Math
.
round
(
height
+
vertPad
)
-
clientHeight
;
var
horizScrollbar
=
Math
.
round
(
height
+
vertPad
)
-
clientHeight
;
// Chrome has a rather weird rounding of "client" properties.
// Chrome has a rather weird rounding of "client" properties.
// E.g. for an element with content width of 314.2px it sometimes gives
// E.g. for an element with content width of 314.2px it sometimes gives
// the client width of 315px and for the width of 314.7px it may give
// the client width of 315px and for the width of 314.7px it may give
// 314px. And it doesn't happen all the time. So just ignore this delta
// 314px. And it doesn't happen all the time. So just ignore this delta
// as a non-relevant.
// as a non-relevant.
if
(
Math
.
abs
(
vertScrollbar
)
!==
1
)
{
if
(
Math
.
abs
(
vertScrollbar
)
!==
1
)
{
width
-=
vertScrollbar
;
width
-=
vertScrollbar
;
}
}
if
(
Math
.
abs
(
horizScrollbar
)
!==
1
)
{
if
(
Math
.
abs
(
horizScrollbar
)
!==
1
)
{
height
-=
horizScrollbar
;
height
-=
horizScrollbar
;
}
}
}
}
return
createRectInit
(
paddings
.
left
,
paddings
.
top
,
width
,
height
);
return
createRectInit
(
paddings
.
left
,
paddings
.
top
,
width
,
height
);
}
}
/**
/**
* Checks whether provided element is an instance of the SVGGraphicsElement.
* Checks whether provided element is an instance of the SVGGraphicsElement.
*
*
* @param {Element} target - Element to be checked.
* @param {Element} target - Element to be checked.
* @returns {boolean}
* @returns {boolean}
*/
*/
var
isSVGGraphicsElement
=
(
function
()
{
var
isSVGGraphicsElement
=
(
function
()
{
// Some browsers, namely IE and Edge, don't have the SVGGraphicsElement
// Some browsers, namely IE and Edge, don't have the SVGGraphicsElement
// interface.
// interface.
if
(
typeof
SVGGraphicsElement
!==
'undefined'
)
{
if
(
typeof
SVGGraphicsElement
!==
'undefined'
)
{
return
function
(
target
)
{
return
target
instanceof
getWindowOf
(
target
).
SVGGraphicsElement
;
};
return
function
(
target
)
{
return
target
instanceof
getWindowOf
(
target
).
SVGGraphicsElement
;
};
}
}
// If it's so, then check that element is at least an instance of the
// If it's so, then check that element is at least an instance of the
// SVGElement and that it has the "getBBox" method.
// SVGElement and that it has the "getBBox" method.
// eslint-disable-next-line no-extra-parens
// eslint-disable-next-line no-extra-parens
return
function
(
target
)
{
return
(
target
instanceof
getWindowOf
(
target
).
SVGElement
&&
return
function
(
target
)
{
return
(
target
instanceof
getWindowOf
(
target
).
SVGElement
&&
typeof
target
.
getBBox
===
'function'
);
};
typeof
target
.
getBBox
===
'function'
);
};
})();
})();
/**
/**
* Checks whether provided element is a document element (<html>).
* Checks whether provided element is a document element (<html>).
*
*
* @param {Element} target - Element to be checked.
* @param {Element} target - Element to be checked.
* @returns {boolean}
* @returns {boolean}
*/
*/
function
isDocumentElement
(
target
)
{
function
isDocumentElement
(
target
)
{
return
target
===
getWindowOf
(
target
).
document
.
documentElement
;
return
target
===
getWindowOf
(
target
).
document
.
documentElement
;
}
}
/**
/**
* Calculates an appropriate content rectangle for provided html or svg element.
* Calculates an appropriate content rectangle for provided html or svg element.
*
*
* @param {Element} target - Element content rectangle of which needs to be calculated.
* @param {Element} target - Element content rectangle of which needs to be calculated.
* @returns {DOMRectInit}
* @returns {DOMRectInit}
*/
*/
function
getContentRect
(
target
)
{
function
getContentRect
(
target
)
{
if
(
!
isBrowser
)
{
if
(
!
isBrowser
)
{
return
emptyRect
;
return
emptyRect
;
}
}
if
(
isSVGGraphicsElement
(
target
))
{
if
(
isSVGGraphicsElement
(
target
))
{
return
getSVGContentRect
(
target
);
return
getSVGContentRect
(
target
);
}
}
return
getHTMLElementContentRect
(
target
);
return
getHTMLElementContentRect
(
target
);
}
}
/**
/**
* Creates rectangle with an interface of the DOMRectReadOnly.
* Creates rectangle with an interface of the DOMRectReadOnly.
* Spec: https://drafts.fxtf.org/geometry/#domrectreadonly
* Spec: https://drafts.fxtf.org/geometry/#domrectreadonly
*
*
* @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.
* @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.
* @returns {DOMRectReadOnly}
* @returns {DOMRectReadOnly}
*/
*/
function
createReadOnlyRect
(
_a
)
{
function
createReadOnlyRect
(
_a
)
{
var
x
=
_a
.
x
,
y
=
_a
.
y
,
width
=
_a
.
width
,
height
=
_a
.
height
;
var
x
=
_a
.
x
,
y
=
_a
.
y
,
width
=
_a
.
width
,
height
=
_a
.
height
;
// If DOMRectReadOnly is available use it as a prototype for the rectangle.
// If DOMRectReadOnly is available use it as a prototype for the rectangle.
var
Constr
=
typeof
DOMRectReadOnly
!==
'undefined'
?
DOMRectReadOnly
:
Object
;
var
Constr
=
typeof
DOMRectReadOnly
!==
'undefined'
?
DOMRectReadOnly
:
Object
;
var
rect
=
Object
.
create
(
Constr
.
prototype
);
var
rect
=
Object
.
create
(
Constr
.
prototype
);
// Rectangle's properties are not writable and non-enumerable.
// Rectangle's properties are not writable and non-enumerable.
defineConfigurable
(
rect
,
{
defineConfigurable
(
rect
,
{
x
:
x
,
y
:
y
,
width
:
width
,
height
:
height
,
x
:
x
,
y
:
y
,
width
:
width
,
height
:
height
,
top
:
y
,
top
:
y
,
right
:
x
+
width
,
right
:
x
+
width
,
bottom
:
height
+
y
,
bottom
:
height
+
y
,
left
:
x
left
:
x
});
});
return
rect
;
return
rect
;
}
}
/**
/**
* Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.
* Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.
* Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit
* Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit
*
*
* @param {number} x - X coordinate.
* @param {number} x - X coordinate.
* @param {number} y - Y coordinate.
* @param {number} y - Y coordinate.
* @param {number} width - Rectangle's width.
* @param {number} width - Rectangle's width.
* @param {number} height - Rectangle's height.
* @param {number} height - Rectangle's height.
* @returns {DOMRectInit}
* @returns {DOMRectInit}
*/
*/
function
createRectInit
(
x
,
y
,
width
,
height
)
{
function
createRectInit
(
x
,
y
,
width
,
height
)
{
return
{
x
:
x
,
y
:
y
,
width
:
width
,
height
:
height
};
return
{
x
:
x
,
y
:
y
,
width
:
width
,
height
:
height
};
}
}
/**
/**
* Class that is responsible for computations of the content rectangle of
* Class that is responsible for computations of the content rectangle of
* provided DOM element and for keeping track of it's changes.
* provided DOM element and for keeping track of it's changes.
*/
*/
var
ResizeObservation
=
/** @class */
(
function
()
{
var
ResizeObservation
=
/** @class */
(
function
()
{
/**
/**
* Creates an instance of ResizeObservation.
* Creates an instance of ResizeObservation.
*
*
* @param {Element} target - Element to be observed.
* @param {Element} target - Element to be observed.
*/
*/
function
ResizeObservation
(
target
)
{
function
ResizeObservation
(
target
)
{
/**
/**
* Broadcasted width of content rectangle.
* Broadcasted width of content rectangle.
*
*
* @type {number}
* @type {number}
*/
*/
this
.
broadcastWidth
=
0
;
this
.
broadcastWidth
=
0
;
/**
/**
* Broadcasted height of content rectangle.
* Broadcasted height of content rectangle.
*
*
* @type {number}
* @type {number}
*/
*/
this
.
broadcastHeight
=
0
;
this
.
broadcastHeight
=
0
;
/**
/**
* Reference to the last observed content rectangle.
* Reference to the last observed content rectangle.
*
*
* @private {DOMRectInit}
* @private {DOMRectInit}
*/
*/
this
.
contentRect_
=
createRectInit
(
0
,
0
,
0
,
0
);
this
.
contentRect_
=
createRectInit
(
0
,
0
,
0
,
0
);
this
.
target
=
target
;
this
.
target
=
target
;
}
}
/**
/**
* Updates content rectangle and tells whether it's width or height properties
* Updates content rectangle and tells whether it's width or height properties
* have changed since the last broadcast.
* have changed since the last broadcast.
*
*
* @returns {boolean}
* @returns {boolean}
*/
*/
ResizeObservation
.
prototype
.
isActive
=
function
()
{
ResizeObservation
.
prototype
.
isActive
=
function
()
{
var
rect
=
getContentRect
(
this
.
target
);
var
rect
=
getContentRect
(
this
.
target
);
this
.
contentRect_
=
rect
;
this
.
contentRect_
=
rect
;
return
(
rect
.
width
!==
this
.
broadcastWidth
||
return
(
rect
.
width
!==
this
.
broadcastWidth
||
rect
.
height
!==
this
.
broadcastHeight
);
rect
.
height
!==
this
.
broadcastHeight
);
};
};
/**
/**
* Updates 'broadcastWidth' and 'broadcastHeight' properties with a data
* Updates 'broadcastWidth' and 'broadcastHeight' properties with a data
* from the corresponding properties of the last observed content rectangle.
* from the corresponding properties of the last observed content rectangle.
*
*
* @returns {DOMRectInit} Last observed content rectangle.
* @returns {DOMRectInit} Last observed content rectangle.
*/
*/
ResizeObservation
.
prototype
.
broadcastRect
=
function
()
{
ResizeObservation
.
prototype
.
broadcastRect
=
function
()
{
var
rect
=
this
.
contentRect_
;
var
rect
=
this
.
contentRect_
;
this
.
broadcastWidth
=
rect
.
width
;
this
.
broadcastWidth
=
rect
.
width
;
this
.
broadcastHeight
=
rect
.
height
;
this
.
broadcastHeight
=
rect
.
height
;
return
rect
;
return
rect
;
};
};
return
ResizeObservation
;
return
ResizeObservation
;
}());
}());
var
ResizeObserverEntry
=
/** @class */
(
function
()
{
var
ResizeObserverEntry
=
/** @class */
(
function
()
{
/**
/**
* Creates an instance of ResizeObserverEntry.
* Creates an instance of ResizeObserverEntry.
*
*
* @param {Element} target - Element that is being observed.
* @param {Element} target - Element that is being observed.
* @param {DOMRectInit} rectInit - Data of the element's content rectangle.
* @param {DOMRectInit} rectInit - Data of the element's content rectangle.
*/
*/
function
ResizeObserverEntry
(
target
,
rectInit
)
{
function
ResizeObserverEntry
(
target
,
rectInit
)
{
var
contentRect
=
createReadOnlyRect
(
rectInit
);
var
contentRect
=
createReadOnlyRect
(
rectInit
);
// According to the specification following properties are not writable
// According to the specification following properties are not writable
// and are also not enumerable in the native implementation.
// and are also not enumerable in the native implementation.
//
//
// Property accessors are not being used as they'd require to define a
// Property accessors are not being used as they'd require to define a
// private WeakMap storage which may cause memory leaks in browsers that
// private WeakMap storage which may cause memory leaks in browsers that
// don't support this type of collections.
// don't support this type of collections.
defineConfigurable
(
this
,
{
target
:
target
,
contentRect
:
contentRect
});
defineConfigurable
(
this
,
{
target
:
target
,
contentRect
:
contentRect
});
}
}
return
ResizeObserverEntry
;
return
ResizeObserverEntry
;
}());
}());
var
ResizeObserverSPI
=
/** @class */
(
function
()
{
var
ResizeObserverSPI
=
/** @class */
(
function
()
{
/**
/**
* Creates a new instance of ResizeObserver.
* Creates a new instance of ResizeObserver.
*
*
* @param {ResizeObserverCallback} callback - Callback function that is invoked
* @param {ResizeObserverCallback} callback - Callback function that is invoked
* when one of the observed elements changes it's content dimensions.
* when one of the observed elements changes it's content dimensions.
* @param {ResizeObserverController} controller - Controller instance which
* @param {ResizeObserverController} controller - Controller instance which
* is responsible for the updates of observer.
* is responsible for the updates of observer.
* @param {ResizeObserver} callbackCtx - Reference to the public
* @param {ResizeObserver} callbackCtx - Reference to the public
* ResizeObserver instance which will be passed to callback function.
* ResizeObserver instance which will be passed to callback function.
*/
*/
function
ResizeObserverSPI
(
callback
,
controller
,
callbackCtx
)
{
function
ResizeObserverSPI
(
callback
,
controller
,
callbackCtx
)
{
/**
/**
* Collection of resize observations that have detected changes in dimensions
* Collection of resize observations that have detected changes in dimensions
* of elements.
* of elements.
*
*
* @private {Array<ResizeObservation>}
* @private {Array<ResizeObservation>}
*/
*/
this
.
activeObservations_
=
[];
this
.
activeObservations_
=
[];
/**
/**
* Registry of the ResizeObservation instances.
* Registry of the ResizeObservation instances.
*
*
* @private {Map<Element, ResizeObservation>}
* @private {Map<Element, ResizeObservation>}
*/
*/
this
.
observations_
=
new
MapShim
();
this
.
observations_
=
new
MapShim
();
if
(
typeof
callback
!==
'function'
)
{
if
(
typeof
callback
!==
'function'
)
{
throw
new
TypeError
(
'The callback provided as parameter 1 is not a function.'
);
throw
new
TypeError
(
'The callback provided as parameter 1 is not a function.'
);
}
}
this
.
callback_
=
callback
;
this
.
callback_
=
callback
;
this
.
controller_
=
controller
;
this
.
controller_
=
controller
;
this
.
callbackCtx_
=
callbackCtx
;
this
.
callbackCtx_
=
callbackCtx
;
}
}
/**
/**
* Starts observing provided element.
* Starts observing provided element.
*
*
* @param {Element} target - Element to be observed.
* @param {Element} target - Element to be observed.
* @returns {void}
* @returns {void}
*/
*/
ResizeObserverSPI
.
prototype
.
observe
=
function
(
target
)
{
ResizeObserverSPI
.
prototype
.
observe
=
function
(
target
)
{
if
(
!
arguments
.
length
)
{
if
(
!
arguments
.
length
)
{
throw
new
TypeError
(
'1 argument required, but only 0 present.'
);
throw
new
TypeError
(
'1 argument required, but only 0 present.'
);
}
}
// Do nothing if current environment doesn't have the Element interface.
// Do nothing if current environment doesn't have the Element interface.
if
(
typeof
Element
===
'undefined'
||
!
(
Element
instanceof
Object
))
{
if
(
typeof
Element
===
'undefined'
||
!
(
Element
instanceof
Object
))
{
return
;
return
;
}
}
if
(
!
(
target
instanceof
getWindowOf
(
target
).
Element
))
{
if
(
!
(
target
instanceof
getWindowOf
(
target
).
Element
))
{
throw
new
TypeError
(
'parameter 1 is not of type "Element".'
);
throw
new
TypeError
(
'parameter 1 is not of type "Element".'
);
}
}
var
observations
=
this
.
observations_
;
var
observations
=
this
.
observations_
;
// Do nothing if element is already being observed.
// Do nothing if element is already being observed.
if
(
observations
.
has
(
target
))
{
if
(
observations
.
has
(
target
))
{
return
;
return
;
}
}
observations
.
set
(
target
,
new
ResizeObservation
(
target
));
observations
.
set
(
target
,
new
ResizeObservation
(
target
));
this
.
controller_
.
addObserver
(
this
);
this
.
controller_
.
addObserver
(
this
);
// Force the update of observations.
// Force the update of observations.
this
.
controller_
.
refresh
();
this
.
controller_
.
refresh
();
};
};
/**
/**
* Stops observing provided element.
* Stops observing provided element.
*
*
* @param {Element} target - Element to stop observing.
* @param {Element} target - Element to stop observing.
* @returns {void}
* @returns {void}
*/
*/
ResizeObserverSPI
.
prototype
.
unobserve
=
function
(
target
)
{
ResizeObserverSPI
.
prototype
.
unobserve
=
function
(
target
)
{
if
(
!
arguments
.
length
)
{
if
(
!
arguments
.
length
)
{
throw
new
TypeError
(
'1 argument required, but only 0 present.'
);
throw
new
TypeError
(
'1 argument required, but only 0 present.'
);
}
}
// Do nothing if current environment doesn't have the Element interface.
// Do nothing if current environment doesn't have the Element interface.
if
(
typeof
Element
===
'undefined'
||
!
(
Element
instanceof
Object
))
{
if
(
typeof
Element
===
'undefined'
||
!
(
Element
instanceof
Object
))
{
return
;
return
;
}
}
if
(
!
(
target
instanceof
getWindowOf
(
target
).
Element
))
{
if
(
!
(
target
instanceof
getWindowOf
(
target
).
Element
))
{
throw
new
TypeError
(
'parameter 1 is not of type "Element".'
);
throw
new
TypeError
(
'parameter 1 is not of type "Element".'
);
}
}
var
observations
=
this
.
observations_
;
var
observations
=
this
.
observations_
;
// Do nothing if element is not being observed.
// Do nothing if element is not being observed.
if
(
!
observations
.
has
(
target
))
{
if
(
!
observations
.
has
(
target
))
{
return
;
return
;
}
}
observations
.
delete
(
target
);
observations
.
delete
(
target
);
if
(
!
observations
.
size
)
{
if
(
!
observations
.
size
)
{
this
.
controller_
.
removeObserver
(
this
);
this
.
controller_
.
removeObserver
(
this
);
}
}
};
};
/**
/**
* Stops observing all elements.
* Stops observing all elements.
*
*
* @returns {void}
* @returns {void}
*/
*/
ResizeObserverSPI
.
prototype
.
disconnect
=
function
()
{
ResizeObserverSPI
.
prototype
.
disconnect
=
function
()
{
this
.
clearActive
();
this
.
clearActive
();
this
.
observations_
.
clear
();
this
.
observations_
.
clear
();
this
.
controller_
.
removeObserver
(
this
);
this
.
controller_
.
removeObserver
(
this
);
};
};
/**
/**
* Collects observation instances the associated element of which has changed
* Collects observation instances the associated element of which has changed
* it's content rectangle.
* it's content rectangle.
*
*
* @returns {void}
* @returns {void}
*/
*/
ResizeObserverSPI
.
prototype
.
gatherActive
=
function
()
{
ResizeObserverSPI
.
prototype
.
gatherActive
=
function
()
{
var
_this
=
this
;
var
_this
=
this
;
this
.
clearActive
();
this
.
clearActive
();
this
.
observations_
.
forEach
(
function
(
observation
)
{
this
.
observations_
.
forEach
(
function
(
observation
)
{
if
(
observation
.
isActive
())
{
if
(
observation
.
isActive
())
{
_this
.
activeObservations_
.
push
(
observation
);
_this
.
activeObservations_
.
push
(
observation
);
}
}
});
});
};
};
/**
/**
* Invokes initial callback function with a list of ResizeObserverEntry
* Invokes initial callback function with a list of ResizeObserverEntry
* instances collected from active resize observations.
* instances collected from active resize observations.
*
*
* @returns {void}
* @returns {void}
*/
*/
ResizeObserverSPI
.
prototype
.
broadcastActive
=
function
()
{
ResizeObserverSPI
.
prototype
.
broadcastActive
=
function
()
{
// Do nothing if observer doesn't have active observations.
// Do nothing if observer doesn't have active observations.
if
(
!
this
.
hasActive
())
{
if
(
!
this
.
hasActive
())
{
return
;
return
;
}
}
var
ctx
=
this
.
callbackCtx_
;
var
ctx
=
this
.
callbackCtx_
;
// Create ResizeObserverEntry instance for every active observation.
// Create ResizeObserverEntry instance for every active observation.
var
entries
=
this
.
activeObservations_
.
map
(
function
(
observation
)
{
var
entries
=
this
.
activeObservations_
.
map
(
function
(
observation
)
{
return
new
ResizeObserverEntry
(
observation
.
target
,
observation
.
broadcastRect
());
return
new
ResizeObserverEntry
(
observation
.
target
,
observation
.
broadcastRect
());
});
});
this
.
callback_
.
call
(
ctx
,
entries
,
ctx
);
this
.
callback_
.
call
(
ctx
,
entries
,
ctx
);
this
.
clearActive
();
this
.
clearActive
();
};
};
/**
/**
* Clears the collection of active observations.
* Clears the collection of active observations.
*
*
* @returns {void}
* @returns {void}
*/
*/
ResizeObserverSPI
.
prototype
.
clearActive
=
function
()
{
ResizeObserverSPI
.
prototype
.
clearActive
=
function
()
{
this
.
activeObservations_
.
splice
(
0
);
this
.
activeObservations_
.
splice
(
0
);
};
};
/**
/**
* Tells whether observer has active observations.
* Tells whether observer has active observations.
*
*
* @returns {boolean}
* @returns {boolean}
*/
*/
ResizeObserverSPI
.
prototype
.
hasActive
=
function
()
{
ResizeObserverSPI
.
prototype
.
hasActive
=
function
()
{
return
this
.
activeObservations_
.
length
>
0
;
return
this
.
activeObservations_
.
length
>
0
;
};
};
return
ResizeObserverSPI
;
return
ResizeObserverSPI
;
}());
}());
// Registry of internal observers. If WeakMap is not available use current shim
// Registry of internal observers. If WeakMap is not available use current shim
// for the Map collection as it has all required methods and because WeakMap
// for the Map collection as it has all required methods and because WeakMap
// can't be fully polyfilled anyway.
// can't be fully polyfilled anyway.
var
observers
=
typeof
WeakMap
!==
'undefined'
?
new
WeakMap
()
:
new
MapShim
();
var
observers
=
typeof
WeakMap
!==
'undefined'
?
new
WeakMap
()
:
new
MapShim
();
/**
/**
* ResizeObserver API. Encapsulates the ResizeObserver SPI implementation
* ResizeObserver API. Encapsulates the ResizeObserver SPI implementation
* exposing only those methods and properties that are defined in the spec.
* exposing only those methods and properties that are defined in the spec.
*/
*/
var
ResizeObserver
=
/** @class */
(
function
()
{
var
ResizeObserver
=
/** @class */
(
function
()
{
/**
/**
* Creates a new instance of ResizeObserver.
* Creates a new instance of ResizeObserver.
*
*
* @param {ResizeObserverCallback} callback - Callback that is invoked when
* @param {ResizeObserverCallback} callback - Callback that is invoked when
* dimensions of the observed elements change.
* dimensions of the observed elements change.
*/
*/
function
ResizeObserver
(
callback
)
{
function
ResizeObserver
(
callback
)
{
if
(
!
(
this
instanceof
ResizeObserver
))
{
if
(
!
(
this
instanceof
ResizeObserver
))
{
throw
new
TypeError
(
'Cannot call a class as a function.'
);
throw
new
TypeError
(
'Cannot call a class as a function.'
);
}
}
if
(
!
arguments
.
length
)
{
if
(
!
arguments
.
length
)
{
throw
new
TypeError
(
'1 argument required, but only 0 present.'
);
throw
new
TypeError
(
'1 argument required, but only 0 present.'
);
}
}
var
controller
=
ResizeObserverController
.
getInstance
();
var
controller
=
ResizeObserverController
.
getInstance
();
var
observer
=
new
ResizeObserverSPI
(
callback
,
controller
,
this
);
var
observer
=
new
ResizeObserverSPI
(
callback
,
controller
,
this
);
observers
.
set
(
this
,
observer
);
observers
.
set
(
this
,
observer
);
}
}
return
ResizeObserver
;
return
ResizeObserver
;
}());
}());
// Expose public methods of ResizeObserver.
// Expose public methods of ResizeObserver.
[
[
'observe'
,
'observe'
,
'unobserve'
,
'unobserve'
,
'disconnect'
'disconnect'
].
forEach
(
function
(
method
)
{
].
forEach
(
function
(
method
)
{
ResizeObserver
.
prototype
[
method
]
=
function
()
{
ResizeObserver
.
prototype
[
method
]
=
function
()
{
var
_a
;
var
_a
;
return
(
_a
=
observers
.
get
(
this
))[
method
].
apply
(
_a
,
arguments
);
return
(
_a
=
observers
.
get
(
this
))[
method
].
apply
(
_a
,
arguments
);
};
};
});
});
var
index
=
(
function
()
{
var
index
=
(
function
()
{
// Export existing implementation if available.
// Export existing implementation if available.
if
(
typeof
global
$1
.
ResizeObserver
!==
'undefined'
)
{
if
(
typeof
global
$1
.
ResizeObserver
!==
'undefined'
)
{
return
global
$1
.
ResizeObserver
;
return
global
$1
.
ResizeObserver
;
}
}
return
ResizeObserver
;
return
ResizeObserver
;
})();
})();
class
ResizeObserverDelegate
{
class
ResizeObserverDelegate
{
...
...
src/utils/component-list.js
View file @
784ecc7a
...
@@ -6,9 +6,9 @@
...
@@ -6,9 +6,9 @@
// vue,
// vue,
// axios,
// axios,
// qs,
// qs,
// )('http://j
a-hm.omniview.pro
/api/v2')
// )('http://j
ingan.omniview.pro/
/api/v2')
window
.
_base_url
=
'http://j
a-hm.omniview.pro
/api/v2'
window
.
_base_url
=
'http://j
ingan.omniview.pro/
/api/v2'
import
{
components
,
eventBus
}
from
'./component-lib.esm'
// 未正式上生产暂时先如此代替
import
{
components
,
eventBus
}
from
'./component-lib.esm'
// 未正式上生产暂时先如此代替
export
default
components
export
default
components
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment