瀏覽代碼

更新原型

huangliyin 2 周之前
父節點
當前提交
ffa4f98fd0
共有 100 個文件被更改,包括 5521 次插入4945 次删除
  1. 0 0
      RFID/data/document.js
  2. 21 21
      RFID/data/styles.css
  3. 0 0
      RFID/files/rfid__/data.js
  4. 383 402
      RFID/files/rfid__/styles.css
  5. 0 0
      RFID/files/rfid___1/data.js
  6. 222 193
      RFID/files/rfid___1/styles.css
  7. 0 0
      RFID/files/主页/data.js
  8. 174 170
      RFID/files/主页/styles.css
  9. 0 0
      RFID/files/写卡录入/data.js
  10. 252 152
      RFID/files/写卡录入/styles.css
  11. 0 0
      RFID/files/子账号管理/data.js
  12. 183 170
      RFID/files/子账号管理/styles.css
  13. 0 0
      RFID/files/密码修改/data.js
  14. 173 157
      RFID/files/密码修改/styles.css
  15. 0 1
      RFID/files/查看账号/data.js
  16. 77 63
      RFID/files/查看账号/styles.css
  17. 0 0
      RFID/files/添加账号/data.js
  18. 180 165
      RFID/files/添加账号/styles.css
  19. 0 0
      RFID/files/登录/data.js
  20. 58 60
      RFID/files/登录/styles.css
  21. 0 0
      RFID/files/账号设置/data.js
  22. 179 164
      RFID/files/账号设置/styles.css
  23. 8 2
      RFID/images/rfid__/u23.svg
  24. 8 2
      RFID/images/rfid__/u34.svg
  25. 8 1
      RFID/images/rfid__/u44.svg
  26. 13 0
      RFID/images/rfid__/u50.svg
  27. 9 0
      RFID/images/rfid__/u55.svg
  28. 5 0
      RFID/images/rfid__/u80.svg
  29. 13 0
      RFID/images/rfid___1/u327.svg
  30. 二進制
      RFID/images/rfid___1/u360.png
  31. 13 0
      RFID/images/rfid___1/u366.svg
  32. 二進制
      RFID/images/rfid___1/u390.png
  33. 14 0
      RFID/images/主页/u405.svg
  34. 14 0
      RFID/images/主页/u410.svg
  35. 6 0
      RFID/images/写卡录入/u91.svg
  36. 5 0
      RFID/images/写卡录入/u91_disabled.svg
  37. 6 0
      RFID/images/写卡录入/u91_selected.disabled.svg
  38. 5 0
      RFID/images/子账号管理/u130.svg
  39. 13 0
      RFID/images/子账号管理/u134.svg
  40. 二進制
      RFID/images/查看账号/u109.png
  41. 6 0
      RFID/images/添加账号/u275.svg
  42. 5 0
      RFID/images/添加账号/u275_disabled.svg
  43. 6 0
      RFID/images/添加账号/u275_selected.disabled.svg
  44. 6 0
      RFID/images/添加账号/u276.svg
  45. 5 0
      RFID/images/添加账号/u276_disabled.svg
  46. 6 0
      RFID/images/添加账号/u276_selected.disabled.svg
  47. 6 0
      RFID/images/添加账号/u277.svg
  48. 5 0
      RFID/images/添加账号/u277_disabled.svg
  49. 6 0
      RFID/images/添加账号/u277_selected.disabled.svg
  50. 6 0
      RFID/images/添加账号/u278.svg
  51. 5 0
      RFID/images/添加账号/u278_disabled.svg
  52. 6 0
      RFID/images/添加账号/u278_selected.disabled.svg
  53. 13 0
      RFID/images/账号设置/u196.svg
  54. 6 0
      RFID/images/账号设置/u235.svg
  55. 5 0
      RFID/images/账号设置/u235_disabled.svg
  56. 6 0
      RFID/images/账号设置/u235_selected.disabled.svg
  57. 6 0
      RFID/images/账号设置/u236.svg
  58. 5 0
      RFID/images/账号设置/u236_disabled.svg
  59. 6 0
      RFID/images/账号设置/u236_selected.disabled.svg
  60. 6 0
      RFID/images/账号设置/u237.svg
  61. 5 0
      RFID/images/账号设置/u237_disabled.svg
  62. 6 0
      RFID/images/账号设置/u237_selected.disabled.svg
  63. 6 0
      RFID/images/账号设置/u238.svg
  64. 5 0
      RFID/images/账号设置/u238_disabled.svg
  65. 6 0
      RFID/images/账号设置/u238_selected.disabled.svg
  66. 6 0
      RFID/images/账号设置/u239.svg
  67. 5 0
      RFID/images/账号设置/u239_disabled.svg
  68. 6 0
      RFID/images/账号设置/u239_selected.disabled.svg
  69. 157 151
      RFID/index.html
  70. 242 171
      RFID/plugins/debug/debug.js
  71. 265 264
      RFID/plugins/debug/styles/debug.css
  72. 3 2
      RFID/plugins/debug/styles/images/console_panel_off.svg
  73. 4 3
      RFID/plugins/debug/styles/images/console_panel_on.svg
  74. 474 473
      RFID/plugins/page_notes/page_notes.js
  75. 5 2
      RFID/plugins/page_notes/styles/images/notes_panel_off.svg
  76. 5 2
      RFID/plugins/page_notes/styles/images/notes_panel_on.svg
  77. 231 208
      RFID/plugins/page_notes/styles/page_notes.css
  78. 478 478
      RFID/plugins/recordplay/recordplay.js
  79. 89 89
      RFID/plugins/recordplay/styles/recordplay.css
  80. 613 562
      RFID/plugins/sitemap/sitemap.js
  81. 3 6
      RFID/plugins/sitemap/styles/images/back_keys.svg
  82. 3 14
      RFID/plugins/sitemap/styles/images/closed_item.svg
  83. 8 14
      RFID/plugins/sitemap/styles/images/flow.svg
  84. 6 5
      RFID/plugins/sitemap/styles/images/folder_closed_blue.svg
  85. 4 9
      RFID/plugins/sitemap/styles/images/forward_keys.svg
  86. 2 2
      RFID/plugins/sitemap/styles/images/left_arrow.svg
  87. 3 12
      RFID/plugins/sitemap/styles/images/open_item.svg
  88. 5 5
      RFID/plugins/sitemap/styles/images/page_lt_grey.svg
  89. 2 2
      RFID/plugins/sitemap/styles/images/right_arrow.svg
  90. 3 5
      RFID/plugins/sitemap/styles/images/search_off.svg
  91. 3 5
      RFID/plugins/sitemap/styles/images/search_on.svg
  92. 6 2
      RFID/plugins/sitemap/styles/images/sitemap_panel_off.svg
  93. 6 2
      RFID/plugins/sitemap/styles/images/sitemap_panel_on.svg
  94. 403 383
      RFID/plugins/sitemap/styles/sitemap.css
  95. 34 34
      RFID/resources/Other.html
  96. 二進制
      RFID/resources/chrome/allow-access.png
  97. 156 187
      RFID/resources/chrome/chrome.html
  98. 二進制
      RFID/resources/chrome/details.png
  99. 二進制
      RFID/resources/chrome/extensions.png
  100. 100 130
      RFID/resources/chrome/firefox.html

File diff suppressed because it is too large
+ 0 - 0
RFID/data/document.js


+ 21 - 21
RFID/data/styles.css

@@ -1,5 +1,5 @@
 .ax_default {
-  font-family:'ArialMT', 'Arial', sans-serif;
+  font-family:"ArialMT", "Arial", sans-serif;
   font-weight:400;
   font-style:normal;
   font-size:13px;
@@ -22,41 +22,41 @@
 .placeholder {
 }
 .heading_1 {
-  font-family:'ArialMT', 'Arial', sans-serif;
+  font-family:"ArialMT", "Arial", sans-serif;
   font-weight:bold;
   font-style:normal;
   font-size:32px;
   text-align:left;
 }
 .heading_2 {
-  font-family:'ArialMT', 'Arial', sans-serif;
+  font-family:"ArialMT", "Arial", sans-serif;
   font-weight:bold;
   font-style:normal;
   font-size:24px;
   text-align:left;
 }
 .heading_3 {
-  font-family:'ArialMT', 'Arial', sans-serif;
+  font-family:"ArialMT", "Arial", sans-serif;
   font-weight:bold;
   font-style:normal;
   font-size:18px;
   text-align:left;
 }
 .heading_4 {
-  font-family:'ArialMT', 'Arial', sans-serif;
+  font-family:"ArialMT", "Arial", sans-serif;
   font-weight:bold;
   font-style:normal;
   font-size:14px;
   text-align:left;
 }
 .heading_5 {
-  font-family:'ArialMT', 'Arial', sans-serif;
+  font-family:"ArialMT", "Arial", sans-serif;
   font-weight:bold;
   font-style:normal;
   text-align:left;
 }
 .heading_6 {
-  font-family:'ArialMT', 'Arial', sans-serif;
+  font-family:"ArialMT", "Arial", sans-serif;
   font-weight:bold;
   font-style:normal;
   font-size:10px;
@@ -88,7 +88,7 @@
   color:#000000;
 }
 .connector {
-  font-family:'微软雅黑', sans-serif;
+  font-family:"微软雅黑", sans-serif;
   font-weight:400;
   font-style:normal;
   font-size:13px;
@@ -110,7 +110,7 @@
   text-align:left;
 }
 .table_cell1 {
-  font-family:'ArialMT', 'Arial', sans-serif;
+  font-family:"ArialMT", "Arial", sans-serif;
   font-weight:normal;
   font-style:normal;
   font-size:13px;
@@ -143,7 +143,7 @@
 ._线段 {
 }
 .label1 {
-  font-family:'ArialMT', 'Arial', sans-serif;
+  font-family:"ArialMT", "Arial", sans-serif;
   font-weight:400;
   font-style:normal;
   font-size:14px;
@@ -153,7 +153,7 @@
 .horizontal_line {
 }
 ._形状 {
-  font-family:'ArialMT', 'Arial', sans-serif;
+  font-family:"ArialMT", "Arial", sans-serif;
   font-weight:400;
   font-style:normal;
   font-size:13px;
@@ -162,21 +162,21 @@
   line-height:normal;
 }
 ._二级标题 {
-  font-family:'Arial-BoldMT', 'Arial Bold', 'Arial', sans-serif;
+  font-family:"Arial-BoldMT", "Arial Bold", "Arial", sans-serif;
   font-weight:700;
   font-style:normal;
   font-size:24px;
   text-align:left;
 }
 ._36号字_顶部标题、大按钮、弹窗提示主标题_ {
-  font-family:'PingFangSC-Regular', 'PingFang SC', sans-serif;
+  font-family:"PingFangSC-Regular", "PingFang SC", sans-serif;
   font-weight:400;
   font-style:normal;
   font-size:18px;
   text-align:left;
 }
 ._28号字_页面备注信息及列表的表头说明文字__) {
-  font-family:'PingFangSC-Regular', 'PingFang SC', sans-serif;
+  font-family:"PingFangSC-Regular", "PingFang SC", sans-serif;
   font-weight:400;
   font-style:normal;
   font-size:14px;
@@ -187,14 +187,14 @@
 .vertical_line {
 }
 ._32号字_单行列表内,右方操作说明的文字__) {
-  font-family:'PingFangSC-Regular', 'PingFang SC', sans-serif;
+  font-family:"PingFangSC-Regular", "PingFang SC", sans-serif;
   font-weight:400;
   font-style:normal;
   font-size:16px;
   text-align:left;
 }
 ._30号字_服务主标题,例如双行列表内的下方描述信息。__) {
-  font-family:'PingFangSC-Regular', 'PingFang SC', sans-serif;
+  font-family:"PingFangSC-Regular", "PingFang SC", sans-serif;
   font-weight:400;
   font-style:normal;
   font-size:15px;
@@ -212,7 +212,7 @@
   text-align:left;
 }
 .shape1 {
-  font-family:'Microsoft YaHei', sans-serif;
+  font-family:"Microsoft YaHei", sans-serif;
   font-weight:400;
   font-style:normal;
   font-size:12px;
@@ -221,7 +221,7 @@
   line-height:normal;
 }
 .connector2 {
-  font-family:'Microsoft YaHei', sans-serif;
+  font-family:"Microsoft YaHei", sans-serif;
   font-weight:700;
   font-style:normal;
   font-size:13px;
@@ -258,7 +258,7 @@
 .icon2 {
 }
 .heading_21 {
-  font-family:'ArialMT', 'Arial', sans-serif;
+  font-family:"ArialMT", "Arial", sans-serif;
   font-weight:bold;
   font-style:normal;
   font-size:24px;
@@ -277,7 +277,7 @@
 ._表格 {
 }
 ._默认样式 {
-  font-family:'微软雅黑', sans-serif;
+  font-family:"微软雅黑", sans-serif;
   font-weight:400;
   font-style:normal;
 }
@@ -301,4 +301,4 @@
 }
 ._形状1 {
 }
-textarea, select, input, button { outline: none; }
+textarea, select, input, button, div, svg { outline: none; }

File diff suppressed because it is too large
+ 0 - 0
RFID/files/rfid__/data.js


File diff suppressed because it is too large
+ 383 - 402
RFID/files/rfid__/styles.css


File diff suppressed because it is too large
+ 0 - 0
RFID/files/rfid___1/data.js


File diff suppressed because it is too large
+ 222 - 193
RFID/files/rfid___1/styles.css


File diff suppressed because it is too large
+ 0 - 0
RFID/files/主页/data.js


+ 174 - 170
RFID/files/主页/styles.css

@@ -2,7 +2,7 @@
   margin:0px;
   background-image:none;
   position:relative;
-  left:0px;
+  left:-0px;
   width:433px;
   margin-left:auto;
   margin-right:auto;
@@ -16,7 +16,7 @@
   position:absolute;
   z-index:0;
 }
-#u453 {
+#u396 {
   border-width:0px;
   position:absolute;
   left:0px;
@@ -24,15 +24,7 @@
   width:0px;
   height:0px;
 }
-#u454_img {
-  border-width:0px;
-  position:absolute;
-  left:0px;
-  top:0px;
-  width:433px;
-  height:865px;
-}
-#u454 {
+#u397 {
   border-width:0px;
   position:absolute;
   left:0px;
@@ -40,21 +32,30 @@
   width:433px;
   height:865px;
   display:flex;
+  transition:none;
 }
-#u454 .text {
+#u397 .text {
   position:absolute;
   align-self:center;
   padding:2px 2px 2px 2px;
   box-sizing:border-box;
   width:100%;
 }
-#u454_text {
+#u397_img {
+  border-width:0px;
+  position:absolute;
+  left:0px;
+  top:0px;
+  width:433px;
+  height:865px;
+}
+#u397_text {
   border-width:0px;
   word-wrap:break-word;
   text-transform:none;
   visibility:hidden;
 }
-#u455_div {
+#u398_div {
   border-width:0px;
   position:absolute;
   left:0px;
@@ -63,13 +64,11 @@
   height:815px;
   background:inherit;
   background-color:rgba(255, 255, 255, 1);
-  border:none;
   border-radius:38px;
-  -moz-box-shadow:none;
-  -webkit-box-shadow:none;
-  box-shadow:none;
+  filter:drop-shadow(none);
+  transition:none;
 }
-#u455 {
+#u398 {
   border-width:0px;
   position:absolute;
   left:28px;
@@ -77,51 +76,54 @@
   width:375px;
   height:815px;
   display:flex;
+  transition:none;
+  transform-origin:50% 50%;
 }
-#u455 .text {
+#u398 .text {
   position:absolute;
   align-self:center;
   padding:2px 2px 2px 2px;
   box-sizing:border-box;
   width:100%;
 }
-#u455_text {
+#u398_text {
   border-width:0px;
   word-wrap:break-word;
   text-transform:none;
   visibility:hidden;
 }
-#u456_img {
+#u399 {
   border-width:0px;
   position:absolute;
-  left:0px;
-  top:0px;
-  width:375px;
-  height:44px;
-}
-#u456 {
-  border-width:0px;
-  position:absolute;
-  left:27px;
+  left:29px;
   top:24px;
   width:375px;
   height:44px;
   display:flex;
+  transition:none;
 }
-#u456 .text {
+#u399 .text {
   position:absolute;
   align-self:center;
   padding:2px 2px 2px 2px;
   box-sizing:border-box;
   width:100%;
 }
-#u456_text {
+#u399_img {
+  border-width:0px;
+  position:absolute;
+  left:0px;
+  top:0px;
+  width:375px;
+  height:44px;
+}
+#u399_text {
   border-width:0px;
   word-wrap:break-word;
   text-transform:none;
   visibility:hidden;
 }
-#u457_div {
+#u400_div {
   border-width:0px;
   position:absolute;
   left:0px;
@@ -130,51 +132,51 @@
   height:30px;
   background:inherit;
   background-color:rgba(255, 255, 255, 0);
-  border:none;
   border-left:0px;
   border-top:0px;
   border-right:0px;
   border-radius:0px;
   border-bottom-right-radius:0px;
   border-bottom-left-radius:0px;
-  -moz-box-shadow:none;
-  -webkit-box-shadow:none;
-  box-shadow:none;
-  font-family:'PingFangSC-Medium', 'PingFang SC Medium', 'PingFang SC', sans-serif;
+  filter:drop-shadow(none);
+  transition:none;
+  font-family:"PingFangSC-Medium", "PingFang SC Medium", "PingFang SC", sans-serif;
   font-weight:500;
   font-style:normal;
   font-size:28px;
   text-align:center;
   line-height:30px;
 }
-#u457 {
+#u400 {
   border-width:0px;
   position:absolute;
-  left:76px;
+  left:79px;
   top:152px;
   width:276px;
   height:30px;
   display:flex;
-  font-family:'PingFangSC-Medium', 'PingFang SC Medium', 'PingFang SC', sans-serif;
+  transition:none;
+  transform-origin:50% 50%;
+  font-family:"PingFangSC-Medium", "PingFang SC Medium", "PingFang SC", sans-serif;
   font-weight:500;
   font-style:normal;
   font-size:28px;
   text-align:center;
   line-height:30px;
 }
-#u457 .text {
+#u400 .text {
   position:absolute;
   align-self:center;
   padding:0px 0px 0px 0px;
   box-sizing:border-box;
   width:100%;
 }
-#u457_text {
+#u400_text {
   border-width:0px;
   word-wrap:break-word;
   text-transform:none;
 }
-#u458_div {
+#u401_div {
   border-width:0px;
   position:absolute;
   left:0px;
@@ -183,18 +185,16 @@
   height:25px;
   background:inherit;
   background-color:rgba(255, 255, 255, 0);
-  border:none;
   border-radius:0px;
-  -moz-box-shadow:none;
-  -webkit-box-shadow:none;
-  box-shadow:none;
-  font-family:'PingFangSC-Regular', 'PingFang SC', sans-serif;
+  filter:drop-shadow(none);
+  transition:none;
+  font-family:"PingFangSC-Regular", "PingFang SC", sans-serif;
   font-weight:400;
   font-style:normal;
   font-size:18px;
   color:#000000;
 }
-#u458 {
+#u401 {
   border-width:0px;
   position:absolute;
   left:96px;
@@ -202,25 +202,27 @@
   width:241px;
   height:25px;
   display:flex;
-  font-family:'PingFangSC-Regular', 'PingFang SC', sans-serif;
+  transition:none;
+  transform-origin:50% 50%;
+  font-family:"PingFangSC-Regular", "PingFang SC", sans-serif;
   font-weight:400;
   font-style:normal;
   font-size:18px;
   color:#000000;
 }
-#u458 .text {
+#u401 .text {
   position:absolute;
   align-self:flex-start;
   padding:0px 0px 0px 0px;
   box-sizing:border-box;
   width:100%;
 }
-#u458_text {
+#u401_text {
   border-width:0px;
   white-space:nowrap;
   text-transform:none;
 }
-#u459 {
+#u402 {
   border-width:0px;
   position:absolute;
   left:0px;
@@ -228,7 +230,7 @@
   width:0px;
   height:0px;
 }
-#u460_div {
+#u403_div {
   border-width:0px;
   position:absolute;
   left:0px;
@@ -237,35 +239,35 @@
   height:132px;
   background:inherit;
   background-color:rgba(242, 242, 242, 1);
-  border:none;
   border-radius:4px;
-  -moz-box-shadow:none;
-  -webkit-box-shadow:none;
-  box-shadow:none;
+  filter:drop-shadow(none);
+  transition:none;
 }
-#u460 {
+#u403 {
   border-width:0px;
   position:absolute;
-  left:48px;
+  left:49px;
   top:242px;
   width:336px;
   height:132px;
   display:flex;
+  transition:none;
+  transform-origin:50% 50%;
 }
-#u460 .text {
+#u403 .text {
   position:absolute;
   align-self:center;
   padding:2px 2px 2px 2px;
   box-sizing:border-box;
   width:100%;
 }
-#u460_text {
+#u403_text {
   border-width:0px;
   word-wrap:break-word;
   text-transform:none;
   visibility:hidden;
 }
-#u461_div {
+#u404_div {
   border-width:0px;
   position:absolute;
   left:0px;
@@ -274,79 +276,80 @@
   height:30px;
   background:inherit;
   background-color:rgba(255, 255, 255, 0);
-  border:none;
   border-left:0px;
   border-top:0px;
   border-right:0px;
   border-radius:0px;
   border-bottom-right-radius:0px;
   border-bottom-left-radius:0px;
-  -moz-box-shadow:none;
-  -webkit-box-shadow:none;
-  box-shadow:none;
-  font-family:'PingFangSC-Medium', 'PingFang SC Medium', 'PingFang SC', sans-serif;
+  filter:drop-shadow(none);
+  transition:none;
+  font-family:"PingFangSC-Medium", "PingFang SC Medium", "PingFang SC", sans-serif;
   font-weight:500;
   font-style:normal;
   font-size:18px;
   line-height:30px;
 }
-#u461 {
+#u404 {
   border-width:0px;
   position:absolute;
-  left:173px;
+  left:174px;
   top:277px;
   width:77px;
   height:30px;
   display:flex;
-  font-family:'PingFangSC-Medium', 'PingFang SC Medium', 'PingFang SC', sans-serif;
+  transition:none;
+  transform-origin:50% 50%;
+  font-family:"PingFangSC-Medium", "PingFang SC Medium", "PingFang SC", sans-serif;
   font-weight:500;
   font-style:normal;
   font-size:18px;
   line-height:30px;
 }
-#u461 .text {
+#u404 .text {
   position:absolute;
   align-self:flex-start;
   padding:0px 0px 0px 0px;
   box-sizing:border-box;
   width:100%;
 }
-#u461_text {
+#u404_text {
   border-width:0px;
   white-space:nowrap;
   text-transform:none;
 }
-#u462_img {
-  border-width:0px;
-  position:absolute;
-  left:0px;
-  top:0px;
-  width:85px;
-  height:82px;
-}
-#u462 {
+#u405 {
   border-width:0px;
   position:absolute;
-  left:68px;
+  left:69px;
   top:267px;
   width:85px;
   height:82px;
   display:flex;
+  transition:none;
 }
-#u462 .text {
+#u405 .text {
   position:absolute;
   align-self:center;
   padding:2px 2px 2px 2px;
   box-sizing:border-box;
   width:100%;
 }
-#u462_text {
+#u405_img {
+  border-width:0px;
+  position:absolute;
+  left:0px;
+  top:0px;
+  width:85px;
+  height:82px;
+}
+#u405_text {
   border-width:0px;
   word-wrap:break-word;
   text-transform:none;
   visibility:hidden;
 }
-#u463_div {
+#u406_div {
   border-width:0px;
   position:absolute;
   left:0px;
@@ -355,49 +358,49 @@
   height:30px;
   background:inherit;
   background-color:rgba(255, 255, 255, 0);
-  border:none;
   border-left:0px;
   border-top:0px;
   border-right:0px;
   border-radius:0px;
   border-bottom-right-radius:0px;
   border-bottom-left-radius:0px;
-  -moz-box-shadow:none;
-  -webkit-box-shadow:none;
-  box-shadow:none;
-  font-family:'PingFangSC-Regular', 'PingFang SC', sans-serif;
+  filter:drop-shadow(none);
+  transition:none;
+  font-family:"PingFangSC-Regular", "PingFang SC", sans-serif;
   font-weight:400;
   font-style:normal;
   font-size:14px;
   line-height:30px;
 }
-#u463 {
+#u406 {
   border-width:0px;
   position:absolute;
-  left:173px;
+  left:174px;
   top:306px;
   width:186px;
   height:30px;
   display:flex;
-  font-family:'PingFangSC-Regular', 'PingFang SC', sans-serif;
+  transition:none;
+  transform-origin:50% 50%;
+  font-family:"PingFangSC-Regular", "PingFang SC", sans-serif;
   font-weight:400;
   font-style:normal;
   font-size:14px;
   line-height:30px;
 }
-#u463 .text {
+#u406 .text {
   position:absolute;
   align-self:flex-start;
   padding:0px 0px 0px 0px;
   box-sizing:border-box;
   width:100%;
 }
-#u463_text {
+#u406_text {
   border-width:0px;
   white-space:nowrap;
   text-transform:none;
 }
-#u464 {
+#u407 {
   border-width:0px;
   position:absolute;
   left:0px;
@@ -405,7 +408,7 @@
   width:0px;
   height:0px;
 }
-#u465_div {
+#u408_div {
   border-width:0px;
   position:absolute;
   left:0px;
@@ -414,35 +417,35 @@
   height:132px;
   background:inherit;
   background-color:rgba(242, 242, 242, 1);
-  border:none;
   border-radius:4px;
-  -moz-box-shadow:none;
-  -webkit-box-shadow:none;
-  box-shadow:none;
+  filter:drop-shadow(none);
+  transition:none;
 }
-#u465 {
+#u408 {
   border-width:0px;
   position:absolute;
-  left:48px;
+  left:49px;
   top:384px;
   width:336px;
   height:132px;
   display:flex;
+  transition:none;
+  transform-origin:50% 50%;
 }
-#u465 .text {
+#u408 .text {
   position:absolute;
   align-self:center;
   padding:2px 2px 2px 2px;
   box-sizing:border-box;
   width:100%;
 }
-#u465_text {
+#u408_text {
   border-width:0px;
   word-wrap:break-word;
   text-transform:none;
   visibility:hidden;
 }
-#u466_div {
+#u409_div {
   border-width:0px;
   position:absolute;
   left:0px;
@@ -451,79 +454,80 @@
   height:30px;
   background:inherit;
   background-color:rgba(255, 255, 255, 0);
-  border:none;
   border-left:0px;
   border-top:0px;
   border-right:0px;
   border-radius:0px;
   border-bottom-right-radius:0px;
   border-bottom-left-radius:0px;
-  -moz-box-shadow:none;
-  -webkit-box-shadow:none;
-  box-shadow:none;
-  font-family:'PingFangSC-Medium', 'PingFang SC Medium', 'PingFang SC', sans-serif;
+  filter:drop-shadow(none);
+  transition:none;
+  font-family:"PingFangSC-Medium", "PingFang SC Medium", "PingFang SC", sans-serif;
   font-weight:500;
   font-style:normal;
   font-size:18px;
   line-height:30px;
 }
-#u466 {
+#u409 {
   border-width:0px;
   position:absolute;
-  left:173px;
+  left:174px;
   top:419px;
   width:77px;
   height:30px;
   display:flex;
-  font-family:'PingFangSC-Medium', 'PingFang SC Medium', 'PingFang SC', sans-serif;
+  transition:none;
+  transform-origin:50% 50%;
+  font-family:"PingFangSC-Medium", "PingFang SC Medium", "PingFang SC", sans-serif;
   font-weight:500;
   font-style:normal;
   font-size:18px;
   line-height:30px;
 }
-#u466 .text {
+#u409 .text {
   position:absolute;
   align-self:flex-start;
   padding:0px 0px 0px 0px;
   box-sizing:border-box;
   width:100%;
 }
-#u466_text {
+#u409_text {
   border-width:0px;
   white-space:nowrap;
   text-transform:none;
 }
-#u467_img {
+#u410 {
   border-width:0px;
   position:absolute;
-  left:0px;
-  top:0px;
-  width:85px;
-  height:82px;
-}
-#u467 {
-  border-width:0px;
-  position:absolute;
-  left:68px;
+  left:69px;
   top:409px;
   width:85px;
   height:82px;
   display:flex;
+  transition:none;
 }
-#u467 .text {
+#u410 .text {
   position:absolute;
   align-self:center;
   padding:2px 2px 2px 2px;
   box-sizing:border-box;
   width:100%;
 }
-#u467_text {
+#u410_img {
+  border-width:0px;
+  position:absolute;
+  left:0px;
+  top:0px;
+  width:85px;
+  height:82px;
+}
+#u410_text {
   border-width:0px;
   word-wrap:break-word;
   text-transform:none;
   visibility:hidden;
 }
-#u468_div {
+#u411_div {
   border-width:0px;
   position:absolute;
   left:0px;
@@ -532,57 +536,49 @@
   height:30px;
   background:inherit;
   background-color:rgba(255, 255, 255, 0);
-  border:none;
   border-left:0px;
   border-top:0px;
   border-right:0px;
   border-radius:0px;
   border-bottom-right-radius:0px;
   border-bottom-left-radius:0px;
-  -moz-box-shadow:none;
-  -webkit-box-shadow:none;
-  box-shadow:none;
-  font-family:'PingFangSC-Regular', 'PingFang SC', sans-serif;
+  filter:drop-shadow(none);
+  transition:none;
+  font-family:"PingFangSC-Regular", "PingFang SC", sans-serif;
   font-weight:400;
   font-style:normal;
   font-size:14px;
   line-height:30px;
 }
-#u468 {
+#u411 {
   border-width:0px;
   position:absolute;
-  left:173px;
+  left:174px;
   top:449px;
   width:186px;
   height:30px;
   display:flex;
-  font-family:'PingFangSC-Regular', 'PingFang SC', sans-serif;
+  transition:none;
+  transform-origin:50% 50%;
+  font-family:"PingFangSC-Regular", "PingFang SC", sans-serif;
   font-weight:400;
   font-style:normal;
   font-size:14px;
   line-height:30px;
 }
-#u468 .text {
+#u411 .text {
   position:absolute;
   align-self:flex-start;
   padding:0px 0px 0px 0px;
   box-sizing:border-box;
   width:100%;
 }
-#u468_text {
+#u411_text {
   border-width:0px;
   white-space:nowrap;
   text-transform:none;
 }
-#u469_img {
-  border-width:0px;
-  position:absolute;
-  left:0px;
-  top:0px;
-  width:29px;
-  height:29px;
-}
-#u469 {
+#u412 {
   border-width:0px;
   position:absolute;
   left:361px;
@@ -590,67 +586,75 @@
   width:29px;
   height:29px;
   display:flex;
-  font-family:'PingFangSC-Regular', 'PingFang SC', sans-serif;
+  transition:none;
+  font-family:"PingFangSC-Regular", "PingFang SC", sans-serif;
   font-weight:400;
   font-style:normal;
   font-size:10px;
   color:#FFFFFF;
 }
-#u469 .text {
+#u412 .text {
   position:absolute;
   align-self:center;
   padding:2px 2px 2px 2px;
   box-sizing:border-box;
   width:100%;
 }
-#u469_text {
+#u412_img {
+  border-width:0px;
+  position:absolute;
+  left:0px;
+  top:0px;
+  width:29px;
+  height:29px;
+}
+#u412_text {
   border-width:0px;
   word-wrap:break-word;
   text-transform:none;
 }
-#u470_div {
+#u413_div {
   border-width:0px;
   position:absolute;
   left:0px;
   top:0px;
-  width:335px;
+  width:300px;
   height:47px;
   background:inherit;
   background-color:rgba(255, 255, 255, 0.996078431372549);
   box-sizing:border-box;
   border-width:1px;
   border-style:solid;
-  border-color:rgba(0, 137, 254, 1);
+  border-color:rgba(170, 170, 170, 1);
   border-radius:79px;
-  -moz-box-shadow:none;
-  -webkit-box-shadow:none;
-  box-shadow:none;
-  font-family:'PingFangSC-Regular', 'PingFang SC', sans-serif;
+  filter:drop-shadow(none);
+  transition:none;
+  font-family:"PingFangSC-Regular", "PingFang SC", sans-serif;
   font-weight:400;
   font-style:normal;
-  color:#0089FE;
 }
-#u470 {
+#u413 {
   border-width:0px;
   position:absolute;
-  left:49px;
-  top:725px;
-  width:335px;
+  left:67px;
+  top:718px;
+  width:300px;
   height:47px;
   display:flex;
-  font-family:'PingFangSC-Regular', 'PingFang SC', sans-serif;
+  transition:none;
+  transform-origin:50% 50%;
+  font-family:"PingFangSC-Regular", "PingFang SC", sans-serif;
   font-weight:400;
   font-style:normal;
-  color:#0089FE;
 }
-#u470 .text {
+#u413 .text {
   position:absolute;
   align-self:center;
   padding:2px 2px 2px 2px;
   box-sizing:border-box;
   width:100%;
 }
-#u470_text {
+#u413_text {
   border-width:0px;
   word-wrap:break-word;
   text-transform:none;

File diff suppressed because it is too large
+ 0 - 0
RFID/files/写卡录入/data.js


File diff suppressed because it is too large
+ 252 - 152
RFID/files/写卡录入/styles.css


File diff suppressed because it is too large
+ 0 - 0
RFID/files/子账号管理/data.js


File diff suppressed because it is too large
+ 183 - 170
RFID/files/子账号管理/styles.css


File diff suppressed because it is too large
+ 0 - 0
RFID/files/密码修改/data.js


File diff suppressed because it is too large
+ 173 - 157
RFID/files/密码修改/styles.css


File diff suppressed because it is too large
+ 0 - 1
RFID/files/查看账号/data.js


+ 77 - 63
RFID/files/查看账号/styles.css

@@ -2,7 +2,7 @@
   margin:0px;
   background-image:none;
   position:relative;
-  left:0px;
+  left:-0px;
   width:433px;
   margin-left:auto;
   margin-right:auto;
@@ -16,15 +16,7 @@
   position:absolute;
   z-index:0;
 }
-#u165_img {
-  border-width:0px;
-  position:absolute;
-  left:0px;
-  top:0px;
-  width:433px;
-  height:865px;
-}
-#u165 {
+#u109 {
   border-width:0px;
   position:absolute;
   left:0px;
@@ -32,21 +24,30 @@
   width:433px;
   height:865px;
   display:flex;
+  transition:none;
 }
-#u165 .text {
+#u109 .text {
   position:absolute;
   align-self:center;
   padding:2px 2px 2px 2px;
   box-sizing:border-box;
   width:100%;
 }
-#u165_text {
+#u109_img {
+  border-width:0px;
+  position:absolute;
+  left:0px;
+  top:0px;
+  width:433px;
+  height:865px;
+}
+#u109_text {
   border-width:0px;
   word-wrap:break-word;
   text-transform:none;
   visibility:hidden;
 }
-#u166 {
+#u110 {
   border-width:0px;
   position:absolute;
   left:0px;
@@ -54,7 +55,7 @@
   width:0px;
   height:0px;
 }
-#u167_div {
+#u111_div {
   border-width:0px;
   position:absolute;
   left:0px;
@@ -62,17 +63,15 @@
   width:375px;
   height:732px;
   background:inherit;
-  background-color:rgba(51, 51, 51, 0.498039215686275);
-  border:none;
+  background-color:rgba(51, 51, 51, 0.4980392156862745);
   border-top:0px;
   border-radius:28px;
   border-top-left-radius:0px;
   border-top-right-radius:0px;
-  -moz-box-shadow:none;
-  -webkit-box-shadow:none;
-  box-shadow:none;
+  filter:drop-shadow(none);
+  transition:none;
 }
-#u167 {
+#u111 {
   border-width:0px;
   position:absolute;
   left:29px;
@@ -80,29 +79,39 @@
   width:375px;
   height:732px;
   display:flex;
+  transition:none;
+  transform-origin:50% 50%;
 }
-#u167 .text {
+#u111 .text {
   position:absolute;
   align-self:center;
   padding:2px 2px 2px 2px;
   box-sizing:border-box;
   width:100%;
 }
-#u167_text {
+#u111_text {
   border-width:0px;
   word-wrap:break-word;
   text-transform:none;
   visibility:hidden;
 }
-#u168_img {
+#u112_div {
   border-width:0px;
   position:absolute;
-  left:-5px;
-  top:-5px;
-  width:210px;
-  height:742px;
+  left:0px;
+  top:0px;
+  width:200px;
+  height:732px;
+  background:inherit;
+  background-color:rgba(255, 255, 255, 0.996078431372549);
+  border-radius:32px;
+  border-top-left-radius:0px;
+  border-top-right-radius:0px;
+  border-bottom-left-radius:0px;
+  filter:drop-shadow(0px 0px 2.5px rgba(0, 0, 0, 0.34901960784313724));
+  transition:none;
 }
-#u168 {
+#u112 {
   border-width:0px;
   position:absolute;
   left:204px;
@@ -110,21 +119,23 @@
   width:200px;
   height:732px;
   display:flex;
+  transition:none;
+  transform-origin:50% 50%;
 }
-#u168 .text {
+#u112 .text {
   position:absolute;
   align-self:center;
   padding:2px 2px 2px 2px;
   box-sizing:border-box;
   width:100%;
 }
-#u168_text {
+#u112_text {
   border-width:0px;
   word-wrap:break-word;
   text-transform:none;
   visibility:hidden;
 }
-#u169_div {
+#u113_div {
   border-width:0px;
   position:absolute;
   left:0px;
@@ -133,23 +144,21 @@
   height:25px;
   background:inherit;
   background-color:rgba(255, 255, 255, 0.996078431372549);
-  border:none;
   border-left:0px;
   border-top:0px;
   border-right:0px;
   border-radius:0px;
   border-bottom-right-radius:0px;
   border-bottom-left-radius:0px;
-  -moz-box-shadow:none;
-  -webkit-box-shadow:none;
-  box-shadow:none;
+  filter:drop-shadow(none);
+  transition:none;
   font-family:'Arial-BoldMT', 'Arial Bold', 'Arial', sans-serif;
   font-weight:700;
   font-style:normal;
   font-size:18px;
   text-align:left;
 }
-#u169 {
+#u113 {
   border-width:0px;
   position:absolute;
   left:255px;
@@ -157,33 +166,27 @@
   width:100px;
   height:25px;
   display:flex;
+  transition:none;
+  transform-origin:50% 50%;
   font-family:'Arial-BoldMT', 'Arial Bold', 'Arial', sans-serif;
   font-weight:700;
   font-style:normal;
   font-size:18px;
   text-align:left;
 }
-#u169 .text {
+#u113 .text {
   position:absolute;
   align-self:center;
   padding:2px 2px 2px 2px;
   box-sizing:border-box;
   width:100%;
 }
-#u169_text {
+#u113_text {
   border-width:0px;
   white-space:nowrap;
   text-transform:none;
 }
-#u170_img {
-  border-width:0px;
-  position:absolute;
-  left:0px;
-  top:0px;
-  width:29px;
-  height:29px;
-}
-#u170 {
+#u114 {
   border-width:0px;
   position:absolute;
   left:219px;
@@ -191,24 +194,33 @@
   width:29px;
   height:29px;
   display:flex;
+  transition:none;
   font-family:'PingFangSC-Regular', 'PingFang SC', sans-serif;
   font-weight:400;
   font-style:normal;
   font-size:10px;
 }
-#u170 .text {
+#u114 .text {
   position:absolute;
   align-self:center;
   padding:2px 2px 2px 2px;
   box-sizing:border-box;
   width:100%;
 }
-#u170_text {
+#u114_img {
+  border-width:0px;
+  position:absolute;
+  left:0px;
+  top:0px;
+  width:29px;
+  height:29px;
+}
+#u114_text {
   border-width:0px;
   word-wrap:break-word;
   text-transform:none;
 }
-#u171_div {
+#u115_div {
   border-width:0px;
   position:absolute;
   left:0px;
@@ -227,15 +239,14 @@
   border-radius:0px;
   border-bottom-right-radius:0px;
   border-bottom-left-radius:0px;
-  -moz-box-shadow:none;
-  -webkit-box-shadow:none;
-  box-shadow:none;
+  filter:drop-shadow(none);
+  transition:none;
   font-family:'PingFangSC-Regular', 'PingFang SC', sans-serif;
   font-weight:400;
   font-style:normal;
   text-align:left;
 }
-#u171 {
+#u115 {
   border-width:0px;
   position:absolute;
   left:220px;
@@ -243,24 +254,26 @@
   width:177px;
   height:47px;
   display:flex;
+  transition:none;
+  transform-origin:50% 50%;
   font-family:'PingFangSC-Regular', 'PingFang SC', sans-serif;
   font-weight:400;
   font-style:normal;
   text-align:left;
 }
-#u171 .text {
+#u115 .text {
   position:absolute;
   align-self:center;
   padding:2px 2px 2px 2px;
   box-sizing:border-box;
   width:100%;
 }
-#u171_text {
+#u115_text {
   border-width:0px;
   word-wrap:break-word;
   text-transform:none;
 }
-#u172_div {
+#u116_div {
   border-width:0px;
   position:absolute;
   left:0px;
@@ -279,15 +292,14 @@
   border-radius:0px;
   border-bottom-right-radius:0px;
   border-bottom-left-radius:0px;
-  -moz-box-shadow:none;
-  -webkit-box-shadow:none;
-  box-shadow:none;
+  filter:drop-shadow(none);
+  transition:none;
   font-family:'PingFangSC-Regular', 'PingFang SC', sans-serif;
   font-weight:400;
   font-style:normal;
   text-align:left;
 }
-#u172 {
+#u116 {
   border-width:0px;
   position:absolute;
   left:220px;
@@ -295,19 +307,21 @@
   width:177px;
   height:47px;
   display:flex;
+  transition:none;
+  transform-origin:50% 50%;
   font-family:'PingFangSC-Regular', 'PingFang SC', sans-serif;
   font-weight:400;
   font-style:normal;
   text-align:left;
 }
-#u172 .text {
+#u116 .text {
   position:absolute;
   align-self:center;
   padding:2px 2px 2px 2px;
   box-sizing:border-box;
   width:100%;
 }
-#u172_text {
+#u116_text {
   border-width:0px;
   word-wrap:break-word;
   text-transform:none;

File diff suppressed because it is too large
+ 0 - 0
RFID/files/添加账号/data.js


File diff suppressed because it is too large
+ 180 - 165
RFID/files/添加账号/styles.css


File diff suppressed because it is too large
+ 0 - 0
RFID/files/登录/data.js


+ 58 - 60
RFID/files/登录/styles.css

@@ -24,14 +24,6 @@
   width:0px;
   height:0px;
 }
-#u1_img {
-  border-width:0px;
-  position:absolute;
-  left:0px;
-  top:0px;
-  width:433px;
-  height:865px;
-}
 #u1 {
   border-width:0px;
   position:absolute;
@@ -40,6 +32,7 @@
   width:433px;
   height:865px;
   display:flex;
+  transition:none;
 }
 #u1 .text {
   position:absolute;
@@ -48,6 +41,14 @@
   box-sizing:border-box;
   width:100%;
 }
+#u1_img {
+  border-width:0px;
+  position:absolute;
+  left:0px;
+  top:0px;
+  width:433px;
+  height:865px;
+}
 #u1_text {
   border-width:0px;
   word-wrap:break-word;
@@ -63,11 +64,9 @@
   height:815px;
   background:inherit;
   background-color:rgba(255, 255, 255, 1);
-  border:none;
   border-radius:38px;
-  -moz-box-shadow:none;
-  -webkit-box-shadow:none;
-  box-shadow:none;
+  filter:drop-shadow(none);
+  transition:none;
 }
 #u2 {
   border-width:0px;
@@ -77,6 +76,8 @@
   width:375px;
   height:815px;
   display:flex;
+  transition:none;
+  transform-origin:50% 50%;
 }
 #u2 .text {
   position:absolute;
@@ -91,14 +92,6 @@
   text-transform:none;
   visibility:hidden;
 }
-#u3_img {
-  border-width:0px;
-  position:absolute;
-  left:0px;
-  top:0px;
-  width:375px;
-  height:44px;
-}
 #u3 {
   border-width:0px;
   position:absolute;
@@ -107,6 +100,7 @@
   width:375px;
   height:44px;
   display:flex;
+  transition:none;
 }
 #u3 .text {
   position:absolute;
@@ -115,6 +109,14 @@
   box-sizing:border-box;
   width:100%;
 }
+#u3_img {
+  border-width:0px;
+  position:absolute;
+  left:0px;
+  top:0px;
+  width:375px;
+  height:44px;
+}
 #u3_text {
   border-width:0px;
   word-wrap:break-word;
@@ -130,16 +132,14 @@
   height:30px;
   background:inherit;
   background-color:rgba(255, 255, 255, 0);
-  border:none;
   border-left:0px;
   border-top:0px;
   border-right:0px;
   border-radius:0px;
   border-bottom-right-radius:0px;
   border-bottom-left-radius:0px;
-  -moz-box-shadow:none;
-  -webkit-box-shadow:none;
-  box-shadow:none;
+  filter:drop-shadow(none);
+  transition:none;
   font-family:'PingFangSC-Medium', 'PingFang SC Medium', 'PingFang SC', sans-serif;
   font-weight:500;
   font-style:normal;
@@ -155,6 +155,8 @@
   width:276px;
   height:30px;
   display:flex;
+  transition:none;
+  transform-origin:50% 50%;
   font-family:'PingFangSC-Medium', 'PingFang SC Medium', 'PingFang SC', sans-serif;
   font-weight:500;
   font-style:normal;
@@ -190,17 +192,15 @@
   width:271px;
   height:50px;
   background:inherit;
-  background-color:rgba(242, 242, 242, 0.450980392156863);
-  border:none;
+  background-color:rgba(242, 242, 242, 0.45098039215686275);
   border-left:0px;
   border-top:0px;
   border-right:0px;
   border-radius:0px;
   border-bottom-right-radius:0px;
   border-bottom-left-radius:0px;
-  -moz-box-shadow:none;
-  -webkit-box-shadow:none;
-  box-shadow:none;
+  filter:drop-shadow(none);
+  transition:none;
 }
 #u6 {
   border-width:0px;
@@ -210,6 +210,8 @@
   width:271px;
   height:50px;
   display:flex;
+  transition:none;
+  transform-origin:50% 50%;
 }
 #u6 .text {
   position:absolute;
@@ -270,12 +272,10 @@
   width:134px;
   height:25px;
   background:inherit;
-  background-color:rgba(242, 242, 242, 0.450980392156863);
-  border:none;
+  background-color:rgba(242, 242, 242, 0.45098039215686275);
   border-radius:0px;
-  -moz-box-shadow:none;
-  -webkit-box-shadow:none;
-  box-shadow:none;
+  filter:drop-shadow(none);
+  transition:none;
   font-size:12px;
 }
 #u7 {
@@ -286,6 +286,8 @@
   width:134px;
   height:25px;
   display:flex;
+  transition:none;
+  transform-origin:50% 50%;
   font-size:12px;
 }
 #u7 .text {
@@ -304,11 +306,9 @@
   height:25px;
   background:inherit;
   background-color:rgba(240, 240, 240, 1);
-  border:none;
   border-radius:0px;
-  -moz-box-shadow:none;
-  -webkit-box-shadow:none;
-  box-shadow:none;
+  filter:drop-shadow(none);
+  transition:none;
   font-size:12px;
 }
 #u7.disabled {
@@ -337,17 +337,15 @@
   width:271px;
   height:50px;
   background:inherit;
-  background-color:rgba(242, 242, 242, 0.450980392156863);
-  border:none;
+  background-color:rgba(242, 242, 242, 0.45098039215686275);
   border-left:0px;
   border-top:0px;
   border-right:0px;
   border-radius:0px;
   border-bottom-right-radius:0px;
   border-bottom-left-radius:0px;
-  -moz-box-shadow:none;
-  -webkit-box-shadow:none;
-  box-shadow:none;
+  filter:drop-shadow(none);
+  transition:none;
 }
 #u10 {
   border-width:0px;
@@ -357,6 +355,8 @@
   width:271px;
   height:50px;
   display:flex;
+  transition:none;
+  transform-origin:50% 50%;
 }
 #u10 .text {
   position:absolute;
@@ -417,12 +417,10 @@
   width:134px;
   height:25px;
   background:inherit;
-  background-color:rgba(242, 242, 242, 0.450980392156863);
-  border:none;
+  background-color:rgba(242, 242, 242, 0.45098039215686275);
   border-radius:0px;
-  -moz-box-shadow:none;
-  -webkit-box-shadow:none;
-  box-shadow:none;
+  filter:drop-shadow(none);
+  transition:none;
   font-size:12px;
 }
 #u11 {
@@ -433,6 +431,8 @@
   width:134px;
   height:25px;
   display:flex;
+  transition:none;
+  transform-origin:50% 50%;
   font-size:12px;
 }
 #u11 .text {
@@ -451,11 +451,9 @@
   height:25px;
   background:inherit;
   background-color:rgba(240, 240, 240, 1);
-  border:none;
   border-radius:0px;
-  -moz-box-shadow:none;
-  -webkit-box-shadow:none;
-  box-shadow:none;
+  filter:drop-shadow(none);
+  transition:none;
   font-size:12px;
 }
 #u11.disabled {
@@ -469,11 +467,9 @@
   height:25px;
   background:inherit;
   background-color:rgba(255, 255, 255, 0);
-  border:none;
   border-radius:0px;
-  -moz-box-shadow:none;
-  -webkit-box-shadow:none;
-  box-shadow:none;
+  filter:drop-shadow(none);
+  transition:none;
   font-family:'PingFangSC-Regular', 'PingFang SC', sans-serif;
   font-weight:400;
   font-style:normal;
@@ -488,6 +484,8 @@
   width:241px;
   height:25px;
   display:flex;
+  transition:none;
+  transform-origin:50% 50%;
   font-family:'PingFangSC-Regular', 'PingFang SC', sans-serif;
   font-weight:400;
   font-style:normal;
@@ -515,16 +513,14 @@
   height:50px;
   background:inherit;
   background-color:rgba(0, 137, 254, 1);
-  border:none;
   border-left:0px;
   border-top:0px;
   border-right:0px;
   border-radius:0px;
   border-bottom-right-radius:0px;
   border-bottom-left-radius:0px;
-  -moz-box-shadow:none;
-  -webkit-box-shadow:none;
-  box-shadow:none;
+  filter:drop-shadow(none);
+  transition:none;
   font-family:'PingFangSC-Regular', 'PingFang SC', sans-serif;
   font-weight:400;
   font-style:normal;
@@ -539,6 +535,8 @@
   width:271px;
   height:50px;
   display:flex;
+  transition:none;
+  transform-origin:50% 50%;
   font-family:'PingFangSC-Regular', 'PingFang SC', sans-serif;
   font-weight:400;
   font-style:normal;

File diff suppressed because it is too large
+ 0 - 0
RFID/files/账号设置/data.js


File diff suppressed because it is too large
+ 179 - 164
RFID/files/账号设置/styles.css


+ 8 - 2
RFID/images/rfid__/u23.svg

@@ -1,7 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="39px" height="39px" xmlns="http://www.w3.org/2000/svg">
+  <defs>
+    <pattern id="BGPattern" patternUnits="userSpaceOnUse" alignment="0 0" imageRepeat="None" />
+    <mask fill="white" id="Clip1">
+      <path d="M 0 19.5  C 0 8.579999999999998  8.579999999999998 0  19.5 0  C 30.42 0  39 8.579999999999998  39 19.5  C 39 30.42  30.42 39  19.5 39  C 8.579999999999998 39  0 30.42  0 19.5  Z " fill-rule="evenodd" />
+    </mask>
+  </defs>
   <g transform="matrix(1 0 0 1 -115 748 )">
-    <path d="M 134.5 -748  C 145.42 -748  154 -739.42  154 -728.5  C 154 -717.58  145.42 -709  134.5 -709  C 123.58 -709  115 -717.58  115 -728.5  C 115 -739.42  123.58 -748  134.5 -748  Z " fill-rule="nonzero" fill="#ffffff" stroke="none" />
-    <path d="M 134.5 -747.5  C 145.14 -747.5  153.5 -739.14  153.5 -728.5  C 153.5 -717.86  145.14 -709.5  134.5 -709.5  C 123.86 -709.5  115.5 -717.86  115.5 -728.5  C 115.5 -739.14  123.86 -747.5  134.5 -747.5  Z " stroke-width="1" stroke="#797979" fill="none" />
+    <path d="M 0 19.5  C 0 8.579999999999998  8.579999999999998 0  19.5 0  C 30.42 0  39 8.579999999999998  39 19.5  C 39 30.42  30.42 39  19.5 39  C 8.579999999999998 39  0 30.42  0 19.5  Z " fill-rule="nonzero" fill="rgba(255, 255, 255, 1)" stroke="none" transform="matrix(1 0 0 1 115 -748 )" class="fill" />
+    <path d="M 0 19.5  C 0 8.579999999999998  8.579999999999998 0  19.5 0  C 30.42 0  39 8.579999999999998  39 19.5  C 39 30.42  30.42 39  19.5 39  C 8.579999999999998 39  0 30.42  0 19.5  Z " stroke-width="2" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" transform="matrix(1 0 0 1 115 -748 )" class="stroke" mask="url(#Clip1)" />
   </g>
 </svg>

+ 8 - 2
RFID/images/rfid__/u34.svg

@@ -1,7 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="64px" height="64px" xmlns="http://www.w3.org/2000/svg">
+  <defs>
+    <pattern id="BGPattern" patternUnits="userSpaceOnUse" alignment="0 0" imageRepeat="None" />
+    <mask fill="white" id="Clip2">
+      <path d="M 0 32  C 0 14.079999999999998  14.079999999999998 0  32 0  C 49.92 0  64 14.079999999999998  64 32  C 64 49.92  49.92 64  32 64  C 14.079999999999998 64  0 49.92  0 32  Z " fill-rule="evenodd" />
+    </mask>
+  </defs>
   <g transform="matrix(1 0 0 1 -217 954 )">
-    <path d="M 249 -954  C 266.92 -954  281 -939.92  281 -922  C 281 -904.08  266.92 -890  249 -890  C 231.08 -890  217 -904.08  217 -922  C 217 -939.92  231.08 -954  249 -954  Z " fill-rule="nonzero" fill="#ffffff" stroke="none" />
-    <path d="M 249 -953.5  C 266.64 -953.5  280.5 -939.64  280.5 -922  C 280.5 -904.36  266.64 -890.5  249 -890.5  C 231.36 -890.5  217.5 -904.36  217.5 -922  C 217.5 -939.64  231.36 -953.5  249 -953.5  Z " stroke-width="1" stroke="#797979" fill="none" />
+    <path d="M 0 32  C 0 14.079999999999998  14.079999999999998 0  32 0  C 49.92 0  64 14.079999999999998  64 32  C 64 49.92  49.92 64  32 64  C 14.079999999999998 64  0 49.92  0 32  Z " fill-rule="nonzero" fill="rgba(255, 255, 255, 1)" stroke="none" transform="matrix(1 0 0 1 217 -954 )" class="fill" />
+    <path d="M 0 32  C 0 14.079999999999998  14.079999999999998 0  32 0  C 49.92 0  64 14.079999999999998  64 32  C 64 49.92  49.92 64  32 64  C 14.079999999999998 64  0 49.92  0 32  Z " stroke-width="2" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" transform="matrix(1 0 0 1 217 -954 )" class="stroke" mask="url(#Clip2)" />
   </g>
 </svg>

+ 8 - 1
RFID/images/rfid__/u44.svg

@@ -1,6 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="10px" height="18px" xmlns="http://www.w3.org/2000/svg">
+  <defs>
+    <pattern id="BGPattern" patternUnits="userSpaceOnUse" alignment="0 0" imageRepeat="None" />
+    <mask fill="white" id="Clip3">
+      <path d="M 9.828178694158074 1.0821643286573137  C 9.942726231386027 1.2024048096192363  10 1.3406813627254486  10 1.4969939879759524  C 10 1.6533066132264522  9.942726231386027 1.7915831663326645  9.828178694158074 1.911823647294589  L 3.075601374570447 9  L 9.828178694158074 16.08817635270541  C 9.942726231386027 16.208416833667336  10 16.346693386773545  10 16.50300601202405  C 10 16.65931863727455  9.942726231386027 16.79759519038076  9.828178694158074 16.917835671342687  L 8.969072164948454 17.819639278557116  C 8.854524627720505 17.939879759519037  8.722794959908363 18  8.573883161512027 18  C 8.424971363115695 18  8.293241695303553 17.939879759519037  8.1786941580756 17.819639278557116  L 0.1718213058419244 9.414829659318636  C 0.05727376861397484 9.294589178356713  0 9.1563126252505  0 9  C 0 8.843687374749498  0.05727376861397484 8.705410821643286  0.1718213058419244 8.585170340681364  L 8.1786941580756 0.18036072144288595  C 8.293241695303553 0.06012024048096132  8.424971363115695 0  8.573883161512027 0  C 8.722794959908363 0  8.854524627720505 0.06012024048096132  8.969072164948454 0.18036072144288595  L 9.828178694158074 1.0821643286573137  Z " fill-rule="evenodd" />
+    </mask>
+  </defs>
   <g transform="matrix(1 0 0 1 -39 -79 )">
-    <path d="M 9.82817869415807 1.08216432865731  C 9.94272623138603 1.20240480961924  10 1.34068136272545  10 1.49699398797595  C 10 1.65330661322645  9.94272623138603 1.79158316633266  9.82817869415807 1.91182364729459  L 3.07560137457045 9  L 9.82817869415807 16.0881763527054  C 9.94272623138603 16.2084168336673  10 16.3466933867735  10 16.503006012024  C 10 16.6593186372745  9.94272623138603 16.7975951903808  9.82817869415807 16.9178356713427  L 8.96907216494845 17.8196392785571  C 8.8545246277205 17.939879759519  8.72279495990836 18  8.57388316151203 18  C 8.4249713631157 18  8.29324169530355 17.939879759519  8.1786941580756 17.8196392785571  L 0.171821305841924 9.41482965931864  C 0.0572737686139748 9.29458917835671  0 9.1563126252505  0 9  C 0 8.8436873747495  0.0572737686139748 8.70541082164329  0.171821305841924 8.58517034068136  L 8.1786941580756 0.180360721442886  C 8.29324169530355 0.0601202404809613  8.4249713631157 0  8.57388316151203 0  C 8.72279495990836 0  8.8545246277205 0.0601202404809613  8.96907216494845 0.180360721442886  L 9.82817869415807 1.08216432865731  Z " fill-rule="nonzero" fill="#000000" stroke="none" transform="matrix(1 0 0 1 39 79 )" />
+    <path d="M 9.828178694158074 1.0821643286573137  C 9.942726231386027 1.2024048096192363  10 1.3406813627254486  10 1.4969939879759524  C 10 1.6533066132264522  9.942726231386027 1.7915831663326645  9.828178694158074 1.911823647294589  L 3.075601374570447 9  L 9.828178694158074 16.08817635270541  C 9.942726231386027 16.208416833667336  10 16.346693386773545  10 16.50300601202405  C 10 16.65931863727455  9.942726231386027 16.79759519038076  9.828178694158074 16.917835671342687  L 8.969072164948454 17.819639278557116  C 8.854524627720505 17.939879759519037  8.722794959908363 18  8.573883161512027 18  C 8.424971363115695 18  8.293241695303553 17.939879759519037  8.1786941580756 17.819639278557116  L 0.1718213058419244 9.414829659318636  C 0.05727376861397484 9.294589178356713  0 9.1563126252505  0 9  C 0 8.843687374749498  0.05727376861397484 8.705410821643286  0.1718213058419244 8.585170340681364  L 8.1786941580756 0.18036072144288595  C 8.293241695303553 0.06012024048096132  8.424971363115695 0  8.573883161512027 0  C 8.722794959908363 0  8.854524627720505 0.06012024048096132  8.969072164948454 0.18036072144288595  L 9.828178694158074 1.0821643286573137  Z " fill-rule="nonzero" fill="rgba(0, 0, 0, 1)" stroke="none" transform="matrix(1 0 0 1 39 79 )" class="fill" />
+    <path d="M 9.828178694158074 1.0821643286573137  C 9.942726231386027 1.2024048096192363  10 1.3406813627254486  10 1.4969939879759524  C 10 1.6533066132264522  9.942726231386027 1.7915831663326645  9.828178694158074 1.911823647294589  L 3.075601374570447 9  L 9.828178694158074 16.08817635270541  C 9.942726231386027 16.208416833667336  10 16.346693386773545  10 16.50300601202405  C 10 16.65931863727455  9.942726231386027 16.79759519038076  9.828178694158074 16.917835671342687  L 8.969072164948454 17.819639278557116  C 8.854524627720505 17.939879759519037  8.722794959908363 18  8.573883161512027 18  C 8.424971363115695 18  8.293241695303553 17.939879759519037  8.1786941580756 17.819639278557116  L 0.1718213058419244 9.414829659318636  C 0.05727376861397484 9.294589178356713  0 9.1563126252505  0 9  C 0 8.843687374749498  0.05727376861397484 8.705410821643286  0.1718213058419244 8.585170340681364  L 8.1786941580756 0.18036072144288595  C 8.293241695303553 0.06012024048096132  8.424971363115695 0  8.573883161512027 0  C 8.722794959908363 0  8.854524627720505 0.06012024048096132  8.969072164948454 0.18036072144288595  L 9.828178694158074 1.0821643286573137  Z " stroke-width="0" stroke-dasharray="0" stroke="rgba(255, 255, 255, 0)" fill="none" transform="matrix(1 0 0 1 39 79 )" class="stroke" mask="url(#Clip3)" />
   </g>
 </svg>

+ 13 - 0
RFID/images/rfid__/u50.svg

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="29px" height="29px" xmlns="http://www.w3.org/2000/svg">
+  <defs>
+    <pattern id="BGPattern" patternUnits="userSpaceOnUse" alignment="0 0" imageRepeat="None" />
+    <mask fill="white" id="Clip4">
+      <path d="M 0 14.5  C 0 6.379999999999999  6.379999999999999 0  14.5 0  C 22.62 0  29 6.379999999999999  29 14.5  C 29 22.62  22.62 29  14.5 29  C 6.379999999999999 29  0 22.62  0 14.5  Z " fill-rule="evenodd" />
+    </mask>
+  </defs>
+  <g transform="matrix(1 0 0 1 -120 -804 )">
+    <path d="M 0 14.5  C 0 6.379999999999999  6.379999999999999 0  14.5 0  C 22.62 0  29 6.379999999999999  29 14.5  C 29 22.62  22.62 29  14.5 29  C 6.379999999999999 29  0 22.62  0 14.5  Z " fill-rule="nonzero" fill="rgba(255, 255, 255, 1)" stroke="none" transform="matrix(1 0 0 1 120 804 )" class="fill" />
+    <path d="M 0 14.5  C 0 6.379999999999999  6.379999999999999 0  14.5 0  C 22.62 0  29 6.379999999999999  29 14.5  C 29 22.62  22.62 29  14.5 29  C 6.379999999999999 29  0 22.62  0 14.5  Z " stroke-width="2" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" transform="matrix(1 0 0 1 120 804 )" class="stroke" mask="url(#Clip4)" />
+  </g>
+</svg>

File diff suppressed because it is too large
+ 9 - 0
RFID/images/rfid__/u55.svg


File diff suppressed because it is too large
+ 5 - 0
RFID/images/rfid__/u80.svg


+ 13 - 0
RFID/images/rfid___1/u327.svg

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="24px" height="24px" xmlns="http://www.w3.org/2000/svg">
+  <defs>
+    <pattern id="BGPattern" patternUnits="userSpaceOnUse" alignment="0 0" imageRepeat="None" />
+    <mask fill="white" id="Clip10">
+      <path d="M 0 12  C 0 5.279999999999999  5.279999999999999 0  12 0  C 18.72 0  24 5.279999999999999  24 12  C 24 18.72  18.72 24  12 24  C 5.279999999999999 24  0 18.72  0 12  Z " fill-rule="evenodd" />
+    </mask>
+  </defs>
+  <g transform="matrix(1 0 0 1 -69 -792 )">
+    <path d="M 0 12  C 0 5.279999999999999  5.279999999999999 0  12 0  C 18.72 0  24 5.279999999999999  24 12  C 24 18.72  18.72 24  12 24  C 5.279999999999999 24  0 18.72  0 12  Z " fill-rule="nonzero" fill="rgba(255, 255, 255, 1)" stroke="none" transform="matrix(1 0 0 1 69 792 )" class="fill" />
+    <path d="M 0 12  C 0 5.279999999999999  5.279999999999999 0  12 0  C 18.72 0  24 5.279999999999999  24 12  C 24 18.72  18.72 24  12 24  C 5.279999999999999 24  0 18.72  0 12  Z " stroke-width="2" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" transform="matrix(1 0 0 1 69 792 )" class="stroke" mask="url(#Clip10)" />
+  </g>
+</svg>

二進制
RFID/images/rfid___1/u360.png


+ 13 - 0
RFID/images/rfid___1/u366.svg

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="10px" height="18px" xmlns="http://www.w3.org/2000/svg">
+  <defs>
+    <pattern id="BGPattern" patternUnits="userSpaceOnUse" alignment="0 0" imageRepeat="None" />
+    <mask fill="white" id="Clip11">
+      <path d="M 9.828178694158074 1.0821643286573137  C 9.942726231386027 1.2024048096192363  10 1.3406813627254486  10 1.4969939879759524  C 10 1.6533066132264522  9.942726231386027 1.7915831663326645  9.828178694158074 1.911823647294589  L 3.075601374570447 9  L 9.828178694158074 16.08817635270541  C 9.942726231386027 16.208416833667336  10 16.346693386773545  10 16.50300601202405  C 10 16.65931863727455  9.942726231386027 16.79759519038076  9.828178694158074 16.917835671342687  L 8.969072164948454 17.819639278557116  C 8.854524627720505 17.939879759519037  8.722794959908363 18  8.573883161512027 18  C 8.424971363115695 18  8.293241695303553 17.939879759519037  8.1786941580756 17.819639278557116  L 0.1718213058419244 9.414829659318636  C 0.05727376861397484 9.294589178356713  0 9.1563126252505  0 9  C 0 8.843687374749498  0.05727376861397484 8.705410821643286  0.1718213058419244 8.585170340681364  L 8.1786941580756 0.18036072144288595  C 8.293241695303553 0.06012024048096132  8.424971363115695 0  8.573883161512027 0  C 8.722794959908363 0  8.854524627720505 0.06012024048096132  8.969072164948454 0.18036072144288595  L 9.828178694158074 1.0821643286573137  Z " fill-rule="evenodd" />
+    </mask>
+  </defs>
+  <g transform="matrix(1 0 0 1 -48 857 )">
+    <path d="M 9.828178694158074 1.0821643286573137  C 9.942726231386027 1.2024048096192363  10 1.3406813627254486  10 1.4969939879759524  C 10 1.6533066132264522  9.942726231386027 1.7915831663326645  9.828178694158074 1.911823647294589  L 3.075601374570447 9  L 9.828178694158074 16.08817635270541  C 9.942726231386027 16.208416833667336  10 16.346693386773545  10 16.50300601202405  C 10 16.65931863727455  9.942726231386027 16.79759519038076  9.828178694158074 16.917835671342687  L 8.969072164948454 17.819639278557116  C 8.854524627720505 17.939879759519037  8.722794959908363 18  8.573883161512027 18  C 8.424971363115695 18  8.293241695303553 17.939879759519037  8.1786941580756 17.819639278557116  L 0.1718213058419244 9.414829659318636  C 0.05727376861397484 9.294589178356713  0 9.1563126252505  0 9  C 0 8.843687374749498  0.05727376861397484 8.705410821643286  0.1718213058419244 8.585170340681364  L 8.1786941580756 0.18036072144288595  C 8.293241695303553 0.06012024048096132  8.424971363115695 0  8.573883161512027 0  C 8.722794959908363 0  8.854524627720505 0.06012024048096132  8.969072164948454 0.18036072144288595  L 9.828178694158074 1.0821643286573137  Z " fill-rule="nonzero" fill="rgba(255, 255, 255, 1)" stroke="none" transform="matrix(1 0 0 1 48 -857 )" class="fill" />
+    <path d="M 9.828178694158074 1.0821643286573137  C 9.942726231386027 1.2024048096192363  10 1.3406813627254486  10 1.4969939879759524  C 10 1.6533066132264522  9.942726231386027 1.7915831663326645  9.828178694158074 1.911823647294589  L 3.075601374570447 9  L 9.828178694158074 16.08817635270541  C 9.942726231386027 16.208416833667336  10 16.346693386773545  10 16.50300601202405  C 10 16.65931863727455  9.942726231386027 16.79759519038076  9.828178694158074 16.917835671342687  L 8.969072164948454 17.819639278557116  C 8.854524627720505 17.939879759519037  8.722794959908363 18  8.573883161512027 18  C 8.424971363115695 18  8.293241695303553 17.939879759519037  8.1786941580756 17.819639278557116  L 0.1718213058419244 9.414829659318636  C 0.05727376861397484 9.294589178356713  0 9.1563126252505  0 9  C 0 8.843687374749498  0.05727376861397484 8.705410821643286  0.1718213058419244 8.585170340681364  L 8.1786941580756 0.18036072144288595  C 8.293241695303553 0.06012024048096132  8.424971363115695 0  8.573883161512027 0  C 8.722794959908363 0  8.854524627720505 0.06012024048096132  8.969072164948454 0.18036072144288595  L 9.828178694158074 1.0821643286573137  Z " stroke-width="0" stroke-dasharray="0" stroke="rgba(255, 255, 255, 0)" fill="none" transform="matrix(1 0 0 1 48 -857 )" class="stroke" mask="url(#Clip11)" />
+  </g>
+</svg>

二進制
RFID/images/rfid___1/u390.png


+ 14 - 0
RFID/images/主页/u405.svg

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="85px" height="82px" xmlns="http://www.w3.org/2000/svg">
+  <defs>
+    <pattern id="BGPattern" patternUnits="userSpaceOnUse" alignment="0 0" imageRepeat="None" />
+    <mask fill="white" id="Clip12">
+      <path d="M 0 82  L 0 0  L 85 0  L 85 82  L 0 82  Z " fill-rule="evenodd" />
+    </mask>
+  </defs>
+  <g transform="matrix(1 0 0 1 -69 -267 )">
+    <path d="M 0 82  L 0 0  L 85 0  L 85 82  L 0 82  Z " fill-rule="nonzero" fill="rgba(242, 242, 242, 1)" stroke="none" transform="matrix(1 0 0 1 69 267 )" class="fill" />
+    <path d="M 0 82  L 0 0  L 85 0  L 85 82  L 0 82  Z " stroke-width="2" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" transform="matrix(1 0 0 1 69 267 )" class="stroke" mask="url(#Clip12)" />
+    <path d="M 84.62698828968685 0.35984659112563727  L 0.3730117103131606 81.64015340887437  M 0.3730117103131606 0.35984659112563727  L 84.62698828968685 81.64015340887437  " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" transform="matrix(1 0 0 1 69 267 )" class="stroke" />
+  </g>
+</svg>

+ 14 - 0
RFID/images/主页/u410.svg

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="85px" height="82px" xmlns="http://www.w3.org/2000/svg">
+  <defs>
+    <pattern id="BGPattern" patternUnits="userSpaceOnUse" alignment="0 0" imageRepeat="None" />
+    <mask fill="white" id="Clip13">
+      <path d="M 0 82  L 0 0  L 85 0  L 85 82  L 0 82  Z " fill-rule="evenodd" />
+    </mask>
+  </defs>
+  <g transform="matrix(1 0 0 1 -69 -409 )">
+    <path d="M 0 82  L 0 0  L 85 0  L 85 82  L 0 82  Z " fill-rule="nonzero" fill="rgba(242, 242, 242, 1)" stroke="none" transform="matrix(1 0 0 1 69 409 )" class="fill" />
+    <path d="M 0 82  L 0 0  L 85 0  L 85 82  L 0 82  Z " stroke-width="2" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" transform="matrix(1 0 0 1 69 409 )" class="stroke" mask="url(#Clip13)" />
+    <path d="M 84.62698828968685 0.35984659112563727  L 0.3730117103131606 81.64015340887437  M 0.3730117103131606 0.35984659112563727  L 84.62698828968685 81.64015340887437  " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" transform="matrix(1 0 0 1 69 409 )" class="stroke" />
+  </g>
+</svg>

+ 6 - 0
RFID/images/写卡录入/u91.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="241 123.5 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 241 123.5  L 253 123.5  L 253 135.5  L 241 135.5  L 241 123.5  Z " fill-rule="nonzero" fill="rgba(255, 255, 255, 1)" stroke="none" class="fill" />
+  <path d="M 241.5 124  L 252.5 124  L 252.5 135  L 241.5 135  L 241.5 124  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+  <path d="M 243.57142857142858 129.5  L 246.14285714285714 132.07142857142856  L 250.42857142857142 126.07142857142857  " stroke-width="2.571428571428571" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke btn_check" />
+</svg>

+ 5 - 0
RFID/images/写卡录入/u91_disabled.svg

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="241 123.5 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 241 123.5  L 253 123.5  L 253 135.5  L 241 135.5  L 241 123.5  Z " fill-rule="nonzero" fill="rgba(240, 240, 240, 1)" stroke="none" class="fill" />
+  <path d="M 241.5 124  L 252.5 124  L 252.5 135  L 241.5 135  L 241.5 124  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+</svg>

+ 6 - 0
RFID/images/写卡录入/u91_selected.disabled.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="241 123.5 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 241 123.5  L 253 123.5  L 253 135.5  L 241 135.5  L 241 123.5  Z " fill-rule="nonzero" fill="rgba(240, 240, 240, 1)" stroke="none" class="fill" />
+  <path d="M 241.5 124  L 252.5 124  L 252.5 135  L 241.5 135  L 241.5 124  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+  <path d="M 243.57142857142858 129.5  L 246.14285714285714 132.07142857142856  L 250.42857142857142 126.07142857142857  " stroke-width="2.571428571428571" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke btn_check" />
+</svg>

File diff suppressed because it is too large
+ 5 - 0
RFID/images/子账号管理/u130.svg


+ 13 - 0
RFID/images/子账号管理/u134.svg

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="29px" height="29px" xmlns="http://www.w3.org/2000/svg">
+  <defs>
+    <pattern id="BGPattern" patternUnits="userSpaceOnUse" alignment="0 0" imageRepeat="None" />
+    <mask fill="white" id="Clip8">
+      <path d="M 0 14.5  C 0 6.379999999999999  6.379999999999999 0  14.5 0  C 22.62 0  29 6.379999999999999  29 14.5  C 29 22.62  22.62 29  14.5 29  C 6.379999999999999 29  0 22.62  0 14.5  Z " fill-rule="evenodd" />
+    </mask>
+  </defs>
+  <g transform="matrix(1 0 0 1 -59 -132 )">
+    <path d="M 0 14.5  C 0 6.379999999999999  6.379999999999999 0  14.5 0  C 22.62 0  29 6.379999999999999  29 14.5  C 29 22.62  22.62 29  14.5 29  C 6.379999999999999 29  0 22.62  0 14.5  Z " fill-rule="nonzero" fill="rgba(51, 51, 51, 1)" stroke="none" transform="matrix(1 0 0 1 59 132 )" class="fill" />
+    <path d="M 0 14.5  C 0 6.379999999999999  6.379999999999999 0  14.5 0  C 22.62 0  29 6.379999999999999  29 14.5  C 29 22.62  22.62 29  14.5 29  C 6.379999999999999 29  0 22.62  0 14.5  Z " stroke-width="0" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" transform="matrix(1 0 0 1 59 132 )" class="stroke" mask="url(#Clip8)" />
+  </g>
+</svg>

二進制
RFID/images/查看账号/u109.png


+ 6 - 0
RFID/images/添加账号/u275.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="59 584 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 59 584  L 71 584  L 71 596  L 59 596  L 59 584  Z " fill-rule="nonzero" fill="rgba(255, 255, 255, 1)" stroke="none" class="fill" />
+  <path d="M 59.5 584.5  L 70.5 584.5  L 70.5 595.5  L 59.5 595.5  L 59.5 584.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+  <path d="M 61.57142857142857 590  L 64.14285714285714 592.5714285714286  L 68.42857142857143 586.5714285714286  " stroke-width="2.571428571428571" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke btn_check" />
+</svg>

+ 5 - 0
RFID/images/添加账号/u275_disabled.svg

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="59 584 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 59 584  L 71 584  L 71 596  L 59 596  L 59 584  Z " fill-rule="nonzero" fill="rgba(240, 240, 240, 1)" stroke="none" class="fill" />
+  <path d="M 59.5 584.5  L 70.5 584.5  L 70.5 595.5  L 59.5 595.5  L 59.5 584.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+</svg>

+ 6 - 0
RFID/images/添加账号/u275_selected.disabled.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="59 584 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 59 584  L 71 584  L 71 596  L 59 596  L 59 584  Z " fill-rule="nonzero" fill="rgba(240, 240, 240, 1)" stroke="none" class="fill" />
+  <path d="M 59.5 584.5  L 70.5 584.5  L 70.5 595.5  L 59.5 595.5  L 59.5 584.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+  <path d="M 61.57142857142857 590  L 64.14285714285714 592.5714285714286  L 68.42857142857143 586.5714285714286  " stroke-width="2.571428571428571" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke btn_check" />
+</svg>

+ 6 - 0
RFID/images/添加账号/u276.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="169 584 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 169 584  L 181 584  L 181 596  L 169 596  L 169 584  Z " fill-rule="nonzero" fill="rgba(255, 255, 255, 1)" stroke="none" class="fill" />
+  <path d="M 169.5 584.5  L 180.5 584.5  L 180.5 595.5  L 169.5 595.5  L 169.5 584.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+  <path d="M 171.57142857142858 590  L 174.14285714285714 592.5714285714286  L 178.42857142857142 586.5714285714286  " stroke-width="2.571428571428571" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke btn_check" />
+</svg>

+ 5 - 0
RFID/images/添加账号/u276_disabled.svg

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="169 584 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 169 584  L 181 584  L 181 596  L 169 596  L 169 584  Z " fill-rule="nonzero" fill="rgba(240, 240, 240, 1)" stroke="none" class="fill" />
+  <path d="M 169.5 584.5  L 180.5 584.5  L 180.5 595.5  L 169.5 595.5  L 169.5 584.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+</svg>

+ 6 - 0
RFID/images/添加账号/u276_selected.disabled.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="169 584 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 169 584  L 181 584  L 181 596  L 169 596  L 169 584  Z " fill-rule="nonzero" fill="rgba(240, 240, 240, 1)" stroke="none" class="fill" />
+  <path d="M 169.5 584.5  L 180.5 584.5  L 180.5 595.5  L 169.5 595.5  L 169.5 584.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+  <path d="M 171.57142857142858 590  L 174.14285714285714 592.5714285714286  L 178.42857142857142 586.5714285714286  " stroke-width="2.571428571428571" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke btn_check" />
+</svg>

+ 6 - 0
RFID/images/添加账号/u277.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="289 584 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 289 584  L 301 584  L 301 596  L 289 596  L 289 584  Z " fill-rule="nonzero" fill="rgba(255, 255, 255, 1)" stroke="none" class="fill" />
+  <path d="M 289.5 584.5  L 300.5 584.5  L 300.5 595.5  L 289.5 595.5  L 289.5 584.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+  <path d="M 291.57142857142856 590  L 294.14285714285717 592.5714285714286  L 298.42857142857144 586.5714285714286  " stroke-width="2.571428571428571" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke btn_check" />
+</svg>

+ 5 - 0
RFID/images/添加账号/u277_disabled.svg

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="289 584 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 289 584  L 301 584  L 301 596  L 289 596  L 289 584  Z " fill-rule="nonzero" fill="rgba(240, 240, 240, 1)" stroke="none" class="fill" />
+  <path d="M 289.5 584.5  L 300.5 584.5  L 300.5 595.5  L 289.5 595.5  L 289.5 584.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+</svg>

+ 6 - 0
RFID/images/添加账号/u277_selected.disabled.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="289 584 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 289 584  L 301 584  L 301 596  L 289 596  L 289 584  Z " fill-rule="nonzero" fill="rgba(240, 240, 240, 1)" stroke="none" class="fill" />
+  <path d="M 289.5 584.5  L 300.5 584.5  L 300.5 595.5  L 289.5 595.5  L 289.5 584.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+  <path d="M 291.57142857142856 590  L 294.14285714285717 592.5714285714286  L 298.42857142857144 586.5714285714286  " stroke-width="2.571428571428571" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke btn_check" />
+</svg>

+ 6 - 0
RFID/images/添加账号/u278.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="59 612 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 59 612  L 71 612  L 71 624  L 59 624  L 59 612  Z " fill-rule="nonzero" fill="rgba(255, 255, 255, 1)" stroke="none" class="fill" />
+  <path d="M 59.5 612.5  L 70.5 612.5  L 70.5 623.5  L 59.5 623.5  L 59.5 612.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+  <path d="M 61.57142857142857 618  L 64.14285714285714 620.5714285714286  L 68.42857142857143 614.5714285714286  " stroke-width="2.571428571428571" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke btn_check" />
+</svg>

+ 5 - 0
RFID/images/添加账号/u278_disabled.svg

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="59 612 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 59 612  L 71 612  L 71 624  L 59 624  L 59 612  Z " fill-rule="nonzero" fill="rgba(240, 240, 240, 1)" stroke="none" class="fill" />
+  <path d="M 59.5 612.5  L 70.5 612.5  L 70.5 623.5  L 59.5 623.5  L 59.5 612.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+</svg>

+ 6 - 0
RFID/images/添加账号/u278_selected.disabled.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="59 612 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 59 612  L 71 612  L 71 624  L 59 624  L 59 612  Z " fill-rule="nonzero" fill="rgba(240, 240, 240, 1)" stroke="none" class="fill" />
+  <path d="M 59.5 612.5  L 70.5 612.5  L 70.5 623.5  L 59.5 623.5  L 59.5 612.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+  <path d="M 61.57142857142857 618  L 64.14285714285714 620.5714285714286  L 68.42857142857143 614.5714285714286  " stroke-width="2.571428571428571" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke btn_check" />
+</svg>

+ 13 - 0
RFID/images/账号设置/u196.svg

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="9px" height="16px" xmlns="http://www.w3.org/2000/svg">
+  <defs>
+    <pattern id="BGPattern" patternUnits="userSpaceOnUse" alignment="0 0" imageRepeat="None" />
+    <mask fill="white" id="Clip9">
+      <path d="M 8.845360824742267 0.96192384769539  C 8.948453608247425 1.068804275217099  9 1.1917167668670654  9 1.330661322645291  C 9 1.469605878423513  8.948453608247425 1.5925183700734795  8.845360824742267 1.6993987975951903  L 2.768041237113402 8  L 8.845360824742267 14.30060120240481  C 8.948453608247425 14.40748162992652  9 14.530394121576485  9 14.669338677354709  C 9 14.808283233132933  8.948453608247425 14.931195724782897  8.845360824742267 15.03807615230461  L 8.072164948453608 15.839679358717435  C 7.969072164948455 15.946559786239145  7.850515463917527 16  7.716494845360824 16  C 7.582474226804125 16  7.463917525773198 15.946559786239145  7.360824742268041 15.839679358717435  L 0.15463917525773196 8.3687374749499  C 0.05154639175257736 8.261857047428188  0 8.138944555778222  0 8  C 0 7.861055444221776  0.05154639175257736 7.73814295257181  0.15463917525773196 7.631262525050101  L 7.360824742268041 0.1603206412825653  C 7.463917525773198 0.053440213760854505  7.582474226804125 0  7.716494845360824 0  C 7.850515463917527 0  7.969072164948455 0.053440213760854505  8.072164948453608 0.1603206412825653  L 8.845360824742267 0.96192384769539  Z " fill-rule="evenodd" />
+    </mask>
+  </defs>
+  <g transform="matrix(1 0 0 1 -370 -358 )">
+    <path d="M 8.845360824742267 0.96192384769539  C 8.948453608247425 1.068804275217099  9 1.1917167668670654  9 1.330661322645291  C 9 1.469605878423513  8.948453608247425 1.5925183700734795  8.845360824742267 1.6993987975951903  L 2.768041237113402 8  L 8.845360824742267 14.30060120240481  C 8.948453608247425 14.40748162992652  9 14.530394121576485  9 14.669338677354709  C 9 14.808283233132933  8.948453608247425 14.931195724782897  8.845360824742267 15.03807615230461  L 8.072164948453608 15.839679358717435  C 7.969072164948455 15.946559786239145  7.850515463917527 16  7.716494845360824 16  C 7.582474226804125 16  7.463917525773198 15.946559786239145  7.360824742268041 15.839679358717435  L 0.15463917525773196 8.3687374749499  C 0.05154639175257736 8.261857047428188  0 8.138944555778222  0 8  C 0 7.861055444221776  0.05154639175257736 7.73814295257181  0.15463917525773196 7.631262525050101  L 7.360824742268041 0.1603206412825653  C 7.463917525773198 0.053440213760854505  7.582474226804125 0  7.716494845360824 0  C 7.850515463917527 0  7.969072164948455 0.053440213760854505  8.072164948453608 0.1603206412825653  L 8.845360824742267 0.96192384769539  Z " fill-rule="nonzero" fill="rgba(215, 215, 215, 1)" stroke="none" transform="matrix(1 0 0 1 370 358 )" class="fill" />
+    <path d="M 8.845360824742267 0.96192384769539  C 8.948453608247425 1.068804275217099  9 1.1917167668670654  9 1.330661322645291  C 9 1.469605878423513  8.948453608247425 1.5925183700734795  8.845360824742267 1.6993987975951903  L 2.768041237113402 8  L 8.845360824742267 14.30060120240481  C 8.948453608247425 14.40748162992652  9 14.530394121576485  9 14.669338677354709  C 9 14.808283233132933  8.948453608247425 14.931195724782897  8.845360824742267 15.03807615230461  L 8.072164948453608 15.839679358717435  C 7.969072164948455 15.946559786239145  7.850515463917527 16  7.716494845360824 16  C 7.582474226804125 16  7.463917525773198 15.946559786239145  7.360824742268041 15.839679358717435  L 0.15463917525773196 8.3687374749499  C 0.05154639175257736 8.261857047428188  0 8.138944555778222  0 8  C 0 7.861055444221776  0.05154639175257736 7.73814295257181  0.15463917525773196 7.631262525050101  L 7.360824742268041 0.1603206412825653  C 7.463917525773198 0.053440213760854505  7.582474226804125 0  7.716494845360824 0  C 7.850515463917527 0  7.969072164948455 0.053440213760854505  8.072164948453608 0.1603206412825653  L 8.845360824742267 0.96192384769539  Z " stroke-width="0" stroke-dasharray="0" stroke="rgba(255, 255, 255, 0)" fill="none" transform="matrix(1 0 0 1 370 358 )" class="stroke" mask="url(#Clip9)" />
+  </g>
+</svg>

+ 6 - 0
RFID/images/账号设置/u235.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="64 624 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 64 624  L 76 624  L 76 636  L 64 636  L 64 624  Z " fill-rule="nonzero" fill="rgba(255, 255, 255, 1)" stroke="none" class="fill" />
+  <path d="M 64.5 624.5  L 75.5 624.5  L 75.5 635.5  L 64.5 635.5  L 64.5 624.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+  <path d="M 66.57142857142857 630  L 69.14285714285714 632.5714285714286  L 73.42857142857143 626.5714285714286  " stroke-width="2.571428571428571" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke btn_check" />
+</svg>

+ 5 - 0
RFID/images/账号设置/u235_disabled.svg

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="64 624 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 64 624  L 76 624  L 76 636  L 64 636  L 64 624  Z " fill-rule="nonzero" fill="rgba(240, 240, 240, 1)" stroke="none" class="fill" />
+  <path d="M 64.5 624.5  L 75.5 624.5  L 75.5 635.5  L 64.5 635.5  L 64.5 624.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+</svg>

+ 6 - 0
RFID/images/账号设置/u235_selected.disabled.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="64 624 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 64 624  L 76 624  L 76 636  L 64 636  L 64 624  Z " fill-rule="nonzero" fill="rgba(240, 240, 240, 1)" stroke="none" class="fill" />
+  <path d="M 64.5 624.5  L 75.5 624.5  L 75.5 635.5  L 64.5 635.5  L 64.5 624.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+  <path d="M 66.57142857142857 630  L 69.14285714285714 632.5714285714286  L 73.42857142857143 626.5714285714286  " stroke-width="2.571428571428571" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke btn_check" />
+</svg>

+ 6 - 0
RFID/images/账号设置/u236.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="174 624 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 174 624  L 186 624  L 186 636  L 174 636  L 174 624  Z " fill-rule="nonzero" fill="rgba(255, 255, 255, 1)" stroke="none" class="fill" />
+  <path d="M 174.5 624.5  L 185.5 624.5  L 185.5 635.5  L 174.5 635.5  L 174.5 624.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+  <path d="M 176.57142857142858 630  L 179.14285714285714 632.5714285714286  L 183.42857142857142 626.5714285714286  " stroke-width="2.571428571428571" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke btn_check" />
+</svg>

+ 5 - 0
RFID/images/账号设置/u236_disabled.svg

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="174 624 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 174 624  L 186 624  L 186 636  L 174 636  L 174 624  Z " fill-rule="nonzero" fill="rgba(240, 240, 240, 1)" stroke="none" class="fill" />
+  <path d="M 174.5 624.5  L 185.5 624.5  L 185.5 635.5  L 174.5 635.5  L 174.5 624.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+</svg>

+ 6 - 0
RFID/images/账号设置/u236_selected.disabled.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="174 624 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 174 624  L 186 624  L 186 636  L 174 636  L 174 624  Z " fill-rule="nonzero" fill="rgba(240, 240, 240, 1)" stroke="none" class="fill" />
+  <path d="M 174.5 624.5  L 185.5 624.5  L 185.5 635.5  L 174.5 635.5  L 174.5 624.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+  <path d="M 176.57142857142858 630  L 179.14285714285714 632.5714285714286  L 183.42857142857142 626.5714285714286  " stroke-width="2.571428571428571" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke btn_check" />
+</svg>

+ 6 - 0
RFID/images/账号设置/u237.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="294 624 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 294 624  L 306 624  L 306 636  L 294 636  L 294 624  Z " fill-rule="nonzero" fill="rgba(255, 255, 255, 1)" stroke="none" class="fill" />
+  <path d="M 294.5 624.5  L 305.5 624.5  L 305.5 635.5  L 294.5 635.5  L 294.5 624.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+  <path d="M 296.57142857142856 630  L 299.14285714285717 632.5714285714286  L 303.42857142857144 626.5714285714286  " stroke-width="2.571428571428571" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke btn_check" />
+</svg>

+ 5 - 0
RFID/images/账号设置/u237_disabled.svg

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="294 624 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 294 624  L 306 624  L 306 636  L 294 636  L 294 624  Z " fill-rule="nonzero" fill="rgba(240, 240, 240, 1)" stroke="none" class="fill" />
+  <path d="M 294.5 624.5  L 305.5 624.5  L 305.5 635.5  L 294.5 635.5  L 294.5 624.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+</svg>

+ 6 - 0
RFID/images/账号设置/u237_selected.disabled.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="294 624 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 294 624  L 306 624  L 306 636  L 294 636  L 294 624  Z " fill-rule="nonzero" fill="rgba(240, 240, 240, 1)" stroke="none" class="fill" />
+  <path d="M 294.5 624.5  L 305.5 624.5  L 305.5 635.5  L 294.5 635.5  L 294.5 624.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+  <path d="M 296.57142857142856 630  L 299.14285714285717 632.5714285714286  L 303.42857142857144 626.5714285714286  " stroke-width="2.571428571428571" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke btn_check" />
+</svg>

+ 6 - 0
RFID/images/账号设置/u238.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="64 652 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 64 652  L 76 652  L 76 664  L 64 664  L 64 652  Z " fill-rule="nonzero" fill="rgba(255, 255, 255, 1)" stroke="none" class="fill" />
+  <path d="M 64.5 652.5  L 75.5 652.5  L 75.5 663.5  L 64.5 663.5  L 64.5 652.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+  <path d="M 66.57142857142857 658  L 69.14285714285714 660.5714285714286  L 73.42857142857143 654.5714285714286  " stroke-width="2.571428571428571" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke btn_check" />
+</svg>

+ 5 - 0
RFID/images/账号设置/u238_disabled.svg

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="64 652 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 64 652  L 76 652  L 76 664  L 64 664  L 64 652  Z " fill-rule="nonzero" fill="rgba(240, 240, 240, 1)" stroke="none" class="fill" />
+  <path d="M 64.5 652.5  L 75.5 652.5  L 75.5 663.5  L 64.5 663.5  L 64.5 652.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+</svg>

+ 6 - 0
RFID/images/账号设置/u238_selected.disabled.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="64 652 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 64 652  L 76 652  L 76 664  L 64 664  L 64 652  Z " fill-rule="nonzero" fill="rgba(240, 240, 240, 1)" stroke="none" class="fill" />
+  <path d="M 64.5 652.5  L 75.5 652.5  L 75.5 663.5  L 64.5 663.5  L 64.5 652.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+  <path d="M 66.57142857142857 658  L 69.14285714285714 660.5714285714286  L 73.42857142857143 654.5714285714286  " stroke-width="2.571428571428571" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke btn_check" />
+</svg>

+ 6 - 0
RFID/images/账号设置/u239.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="174 652 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 174 652  L 186 652  L 186 664  L 174 664  L 174 652  Z " fill-rule="nonzero" fill="rgba(255, 255, 255, 1)" stroke="none" class="fill" />
+  <path d="M 174.5 652.5  L 185.5 652.5  L 185.5 663.5  L 174.5 663.5  L 174.5 652.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+  <path d="M 176.57142857142858 658  L 179.14285714285714 660.5714285714286  L 183.42857142857142 654.5714285714286  " stroke-width="2.571428571428571" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke btn_check" />
+</svg>

+ 5 - 0
RFID/images/账号设置/u239_disabled.svg

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="174 652 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 174 652  L 186 652  L 186 664  L 174 664  L 174 652  Z " fill-rule="nonzero" fill="rgba(240, 240, 240, 1)" stroke="none" class="fill" />
+  <path d="M 174.5 652.5  L 185.5 652.5  L 185.5 663.5  L 174.5 663.5  L 174.5 652.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+</svg>

+ 6 - 0
RFID/images/账号设置/u239_selected.disabled.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" viewBox="174 652 12 12" xmlns="http://www.w3.org/2000/svg">
+  <path d="M 174 652  L 186 652  L 186 664  L 174 664  L 174 652  Z " fill-rule="nonzero" fill="rgba(240, 240, 240, 1)" stroke="none" class="fill" />
+  <path d="M 174.5 652.5  L 185.5 652.5  L 185.5 663.5  L 174.5 663.5  L 174.5 652.5  Z " stroke-width="1" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke" stroke-dashoffset="0.5" />
+  <path d="M 176.57142857142858 658  L 179.14285714285714 660.5714285714286  L 183.42857142857142 654.5714285714286  " stroke-width="2.571428571428571" stroke-dasharray="0" stroke="rgba(121, 121, 121, 1)" fill="none" class="stroke btn_check" />
+</svg>

+ 157 - 151
RFID/index.html

@@ -1,151 +1,157 @@
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-    <title>Untitled Document</title>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
-    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, viewport-fit=cover" />
-    <meta name="apple-mobile-web-app-capable" content="yes" />
-    <link type="text/css" href="resources/css/reset.css" rel="Stylesheet" />
-    <link type="text/css" href="resources/css/default.css" rel="Stylesheet" />
-    <link rel="shortcut icon" href="resources/images/favicon_play.ico" />
-    <link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,600' rel='stylesheet'>
-
-    <script type="text/javascript">
-        if (location.href.toString().indexOf('file://localhost/') == 0) {
-            location.href = location.href.toString().replace('file://localhost/', 'file:///');
-        }
-    </script>
-
-    <!--<link type="text/css" rel="Stylesheet" href="plugins/sitemap/styles/sitemap.css" />
-    <link type="text/css" rel="Stylesheet" href="plugins/page_notes/styles/page_notes.css" />
-    <link type="text/css" rel="Stylesheet" href="plugins/debug/styles/debug.css" />
-    <link type="text/css" rel="Stylesheet" href="plugins/handoff/styles/handoff.css" />
-    <link type="text/css" rel="Stylesheet" href="plugins/handoff/styles/codemirror.css" />-->
-</head>
-<body scroll="no" class="hashover" style="overflow: hidden;">
-    <div id="topPanel">
-        <div id="interfaceControlFrame">
-            <div id="interfaceControlFrameLeft">
-                <div id="interfaceControlFrameMinimizeContainer">
-                    <a title="Collapse" id="interfaceControlFrameMinimizeButton">
-                        <div id="minimizeArrow" class="minimizeButtonHover minimizeIcon"></div>
-                        <div id="minimizeX" class="minimizeButton minimizeIcon"></div>
-                    </a>
-                </div>
-                <div id="interfaceControlFrameCloseContainer">
-                    <a title="Close" id="interfaceControlFrameCloseButton">CLOSE</a>
-                </div>
-
-                <div id="sitemapControlFrameContainer" title="Project Pages">
-                    <div id="projectControlFrameHeaderContainer">
-                        <ul id="projectControlFrameHeader"></ul>
-                    </div>
-                    
-                    <div id="interfacePageNameContainer">
-                        <div id="interfacePageNameButton" class='pageNameHeader'>
-                            &nbsp;
-                        </div>
-                        <div id="interfacePageCount" class='pageCountHeader'>
-                        </div>
-                    </div>
-                </div>
-
-
-                <div id="interfaceAdaptiveViewsContainer" title="Adaptive Views">
-                    <div id="interfaceAdaptiveViewsIconButton">&nbsp;</div>
-                    <div id="interfaceAdaptiveViewsButton" class='adaptiveViewHeader'>
-                        &nbsp;
-                    </div>
-                    <div id="adaptiveViewsDropdown" class="caret"></div>
-                </div>
-            </div>
-            
-            <div id="interfaceControlFrameContainer">
-                <div id="handoffControlFrameHeaderContainer">
-                    <ul id="handoffControlFrameHeader"></ul>
-                </div>
-                <div id="interfaceControlFrameLogoContainer">
-                    <div id="previewNotice">
-                        Local Preview
-                    </div>
-                </div>
-            </div>
-
-            <div id="interfaceControlFrameRight">
-                <div id="publishContainer">
-                    <a id="publishButton">Share Prototype</a>
-                </div>
-                
-                <div id="inspectControlFrameHeaderContainer">
-                    <ul id="inspectControlFrameHeader">
-                        <li id="overflowBtn">
-                            <a id="overflowMenuButton" title="View Options"></a>
-                        </li>
-                    </ul>
-                </div>
-
-                <div id="separatorContainer">
-                    <div class="separator"></div>
-                </div>
-
-                <div id="overflowMadeWith"><a href="https://www.axure.com" id="axureLogo" target="_blank"></a></div>
-
-            </div>
-
-        </div>
-    </div>
-    <div id="popupContainer">
-        <div id='interfaceAdaptiveViewsListContainer'>
-        </div>
-
-        <div id='interfaceScaleListContainer'>
-        </div>
-
-        <div id='accountLoginContainer'>
-        </div>
-
-        <div id='overflowMenuContainer'>
-        </div>
-    </div>
-    <div id="outerContainer">
-        <div id="clippingBounds">
-            <div id="clippingBoundsScrollContainer"></div>
-        </div>
-
-        <div id="mHideSidebar"></div>
-        <div id="lsplitbar" class="splitbar"></div>
-
-        <div id="mainPanel">
-            <div id="mainPanelContainer" style="position: relative; width:100%; height: 100%;">
-                <div id="clipFrameScroll" style="position: relative; width:100%; height: 100%; background-color: #ffffff;">
-                    <iframe id="mainFrame" name="mainFrame" width="100%" height="100%" src="about:blank" frameborder="0" style="display: block;position:absolute;" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
-                </div>
-            </div>
-        </div>
-
-        <div id="rsplitbar" class="splitbar"></div>
-
-    </div>
-
-    <div id="maximizePanelContainer" class="maximizePanelContainer">
-        <div id="maximizePanelOver">
-            <div id="maximizePanel" title="Expand" class="maximizePanelOver">
-                <div id="maximizeButton" class="maximizeButton maximizeIcon"></div>
-            </div>
-        </div>
-    </div>
-
-    <div id="mobileControlFrameContainer"></div>
-
-<!-- 9.0.0.3740 -->
-<script src="resources/scripts/jquery-3.2.1.min.js"></script>
-<script src="resources/scripts/axure/jquery.nicescroll.min.js"></script>
-<script src="resources/scripts/axutils.js"></script>
-<script src="resources/scripts/messagecenter.js"></script>
-<script src="resources/scripts/player/axplayer.js"></script>
-<script src="resources/scripts/player/init.js"></script>
-
-
-</body>
-</html>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <title>Untitled Document</title>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, viewport-fit=cover" />
+    <meta name="apple-mobile-web-app-capable" content="yes" />
+    <link type="text/css" href="resources/css/reset.css" rel="Stylesheet" />
+    <link type="text/css" href="resources/css/default.css" rel="Stylesheet" />
+    <link rel='icon' type='image/svg+xml' href='resources/images/favicon_play.svg' />
+    <link rel='alternate icon' href='resources/images/favicon_play.ico' />
+    <link rel="preconnect" href="https://fonts.googleapis.com">
+    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
+    <link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,600' rel='stylesheet'>
+    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap" rel="stylesheet">
+
+    <script type="text/javascript">
+        if (location.href.toString().indexOf('file://localhost/') == 0) {
+            location.href = location.href.toString().replace('file://localhost/', 'file:///');
+        }
+    </script>
+    <!--<link type="text/css" rel="Stylesheet" href="plugins/sitemap/styles/sitemap.css" />
+    <link type="text/css" rel="Stylesheet" href="plugins/page_notes/styles/page_notes.css" />
+    <link type="text/css" rel="Stylesheet" href="plugins/debug/styles/debug.css" />
+    <link type="text/css" rel="Stylesheet" href="plugins/handoff/styles/handoff.css" />
+    <link type="text/css" rel="Stylesheet" href="plugins/handoff/styles/codemirror.css" />-->
+</head>
+<body scroll="no" class="hashover" style="overflow: hidden;">
+    <div id="topPanel">
+        <div id="interfaceControlFrame">
+            <div id="interfaceControlFrameLeft">
+                <div id="interfaceControlFrameMinimizeContainer">
+                    <a title="Collapse" id="interfaceControlFrameMinimizeButton">
+                        <div id="minimizeArrow" class="minimizeButtonHover minimizeIcon"></div>
+                        <div id="minimizeX" class="minimizeButton minimizeIcon"></div>
+                    </a>
+                </div>
+                <div id="interfaceControlFrameCloseContainer">
+                    <a title="Close" id="interfaceControlFrameCloseButton">CLOSE</a>
+                </div>
+
+                <div id="sitemapControlFrameContainer" title="Project Pages">
+                    <div id="projectControlFrameHeaderContainer">
+                        <ul id="projectControlFrameHeader"></ul>
+                    </div>
+
+                    <div id="interfacePageNameContainer">
+                        <div id="interfacePageNameButton" class='pageNameHeader'>
+                            &nbsp;
+                        </div>
+                        <div id="interfacePageCount" class='pageCountHeader'>
+                        </div>
+                    </div>
+                </div>
+
+
+                <div id="interfaceAdaptiveViewsContainer" title="Adaptive Views">
+                    <div id="interfaceAdaptiveViewsIconButton">&nbsp;</div>
+                    <div id="interfaceAdaptiveViewsButton" class='adaptiveViewHeader'>
+                        &nbsp;
+                    </div>
+                    <div id="adaptiveViewsDropdown" class="caret"></div>
+                </div>
+            </div>
+
+            <div id="interfaceControlFrameContainer">
+                <div id="handoffControlFrameHeaderContainer">
+                    <ul id="handoffControlFrameHeader"></ul>
+                </div>
+                <div id="interfaceControlFrameLogoContainer">
+                    <!--<div id="previewNotice">
+                        Local Preview
+                    </div>-->
+                </div>
+            </div>
+
+            <div id="interfaceControlFrameRight">
+                <div id="publishContainer">
+                    <a id="publishButton">Share Prototype</a>
+                </div>
+
+                <div id="scaleMenuButton" title="Zoom and Scale">
+                    <div id="scaleValue">100%</div>
+                    <div id="expandScaleArrow" class="caret"></div>
+                </div>
+
+                <div id="inspectControlFrameHeaderContainer">
+                    <ul id="inspectControlFrameHeader">
+                        <li id="overflowBtn">
+                            <a id="overflowMenuButton" title="Options"></a>
+                        </li>
+                    </ul>
+                </div>
+
+                <div id="separatorContainer">
+                    <div class="separator"></div>
+                </div>
+
+                <div id="overflowMadeWith"><a href="https://www.axure.com" id="axureLogo" target="_blank"></a></div>
+
+            </div>
+
+        </div>
+    </div>
+    <div id="popupContainer">
+        <div id='interfaceAdaptiveViewsListContainer'>
+        </div>
+
+        <div id='interfaceScaleListContainer'>
+        </div>
+
+        <div id='overflowMenuContainer'>
+        </div>
+
+        <div id='scaleMenuContainer'>
+        </div>
+    </div>
+    <div id="outerContainer">
+        <div id="clippingBounds">
+            <div id="clippingBoundsScrollContainer"></div>
+        </div>
+
+        <div id="mHideSidebar"></div>
+        <div id="lsplitbar" class="splitbar"></div>
+        <div id="mainPanel">
+            <div id="mainPanelContainer" style="position: relative; width:100%; height: 100%;">
+                <div id="clipFrameScroll" style="position: relative; width:100%; height: 100%; background-color: #ffffff;">
+                    <iframe id="mainFrame" name="mainFrame" width="100%" height="100%" src="about:blank" frameborder="0" style="display: block;position:absolute;" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
+                </div>
+            </div>
+        </div>
+
+        <div id="rsplitbar" class="splitbar"></div>
+    </div>
+
+    <div id="maximizePanelContainer" class="maximizePanelContainer">
+        <div id="maximizePanelOver">
+            <div id="maximizePanel" title="Expand" class="maximizePanelOver">
+                <div id="maximizeButton" class="maximizeButton maximizeIcon"></div>
+            </div>
+        </div>
+    </div>
+
+    <div id="mobileControlFrameContainer"></div>
+
+<!-- 11.0.0.4118 -->
+<script src="resources/scripts/jquery-3.7.1.min.js"></script>
+<script src="resources/scripts/axure/jquery.nicescroll.min.js"></script>
+<script src="resources/scripts/axutils.js"></script>
+<script src="resources/scripts/messagecenter.js"></script>
+<script src="resources/scripts/player/axplayer.js"></script>
+<script src="resources/scripts/player/init.js"></script>
+
+
+</body>
+</html>

+ 242 - 171
RFID/plugins/debug/debug.js

@@ -1,171 +1,242 @@
-// use this to isolate the scope
-(function () {
-
-    if(!$axure.document.configuration.showConsole) { return; }
-
-    $(document).ready(function () {
-        $axure.player.createPluginHost({
-            id: 'debugHost',
-            context: 'inspect',
-            title: 'Console',
-            gid: 3
-        });
-
-        generateDebug();
-
-        $('#variablesClearLink').click(clearvars_click);
-        $('#traceClear').click(cleartrace_click);
-        $('#traceToggle').click(stoptrace_click);
-        $('#traceStart').click(starttrace_click);
-        $('#traceClear').hide();
-        $('#traceToggle').hide();
-
-        $('#closeConsole').click(close);
-
-        var currentStack= [];
-        var finishedStack = [];
-
-        $axure.messageCenter.addMessageListener(function (message, data) {
-            if(message == 'axCompositeEventMessage') {
-                for(var i = 0; i < data.length; i++) {
-                    processMessages(data[i].message, data[i].data);
-                }
-            } else processMessages(message, data);
-        });
-
-        var processMessages = function(message, data) {
-            if(message == 'globalVariableValues') {
-                $('#variablesDiv').empty();
-                for(var key in data) {
-                    var value = data[key] == '' ? '(blank)' : data[key];
-                    $('#variablesDiv').append('<div class="variableList"><div class="variableName">' + key + '</div><div class="variableValue">' + value + '</div></div>');
-                }
-            } else if(message == 'axEvent') {
-                var addToStack = "<div class='axEventBlock'>";
-                addToStack += "<div class='axEventContainer'>";
-                addToStack += "    <div class='axTime'>" + new Date().toLocaleTimeString() + "</div>";
-                addToStack += "    <div class='axEvent'>" + data.event.description + ": </div>";
-                addToStack += "    <div class='axLabel'>" + data.label + " (" + data.type + ")</div>";
-                addToStack += "</div>";
-
-                currentStack.push(addToStack);
-            } else if (message == 'axEventComplete') {
-                currentStack[currentStack.length - 1] += "</div>";
-                finishedStack.push(currentStack.pop());
-                if(currentStack.length == 0) {
-                    $('#traceEmptyState').hide();
-                    $('#traceClear').show();
-                    $('#traceToggle').show();
-
-                    for(var i = finishedStack.length - 1; i >= 0; i--) {
-                        if($('#traceDiv').children().length > 99) $('#traceDiv').children().last().remove();
-                        $('#traceDiv').prepend(finishedStack[i]);
-                    }
-                    finishedStack = [];
-                }
-            } else if (message == 'axCase') {
-                //var addToStack = "<div class='axCaseContainer' style='background-color: #" + data.color + "'>";
-                var addToStack = "<div class='axCaseContainer'>";
-                addToStack += "    <div class='axCaseItem'>" + data.item + "</div>";
-                if (data.description) { addToStack += "    <div class='axCaseDescription' title='" + data.description + "'>" + data.description + "</div>" };
-                addToStack += "</div>";
-
-                currentStack[currentStack.length - 1] += addToStack;
-            } else if (message == 'axAction') {
-                var addToStack = "<div class='axActionContainer'>";
-                addToStack += "    <div class='axActionItem'>" + data.name + "</div>";
-                //addToStack += "    <div class='axActionItem'>" + data.item + "</div>";
-                //if (data.description) { addToStack += "    <div class='axActionDescription' title='" + data.description + "'>" + data.description + "</div>" };
-                addToStack += "</div>";
-
-                currentStack[currentStack.length - 1] += addToStack;
-            } else if (message == 'axInfo') {
-                var addToStack = "<div class='axInfoContainer'>";
-                addToStack += "    <div class='axInfoItem'>" + data.item + "</div>";
-                if (data.description) { addToStack += "    <div class='axInfoDescription' title='" + data.longDescription + "'>" + data.description + "</div>" };
-                addToStack += "</div>";
-
-                currentStack[currentStack.length - 1] += addToStack;
-            }
-        }
-
-        // bind to the page load
-        $axure.page.bind('load.debug', function () {
-            var traceStr = $axure.player.getHashStringVar(TRACE_VAR_NAME);
-            if (traceStr.length > 0) $axure.messageCenter.setState("isTracing", true);
-            else $axure.messageCenter.setState("isTracing", false);
-            $axure.messageCenter.postMessage('getGlobalVariables', '');
-
-            return false;
-        });
-
-        function clearvars_click(event) {
-            $axure.messageCenter.postMessage('resetGlobalVariables', '');
-        }
-
-        function close() {
-            $axure.player.pluginClose("debugHost");
-        }
-
-        function cleartrace_click(event) {
-            $('#traceDiv').html('');
-        }
-
-        function starttrace_click(event) {
-            $axure.messageCenter.setState("isTracing", true);
-            //$('#traceDiv').html('');
-            $('#traceEmptyState').hide();
-            $('#traceClear').show();
-            $('#traceToggle').text('Stop Trace');
-            $('#traceToggle').off("click");
-            $('#traceToggle').click(stoptrace_click);
-            $('#traceToggle').show();
-            console.log("starting trace");
-            $axure.player.setVarInCurrentUrlHash(TRACE_VAR_NAME, 1);
-        }
-
-        function stoptrace_click(event) {
-            $axure.messageCenter.setState("isTracing", false);
-            $('#traceDiv').prepend('<div class="tracePausedNotification">Trace Paused<div>');
-            $('#traceToggle').text('Restart Trace');
-            $('#traceToggle').off("click");
-            $('#traceToggle').click(starttrace_click);
-            console.log("stopping trace");
-            $axure.player.deleteVarFromCurrentUrlHash(TRACE_VAR_NAME);
-        }
-    });
-
-    function generateDebug() {
-        var pageNotesUi = "<div id='debugHeader'>";
-        pageNotesUi += "<div id='debugToolbar'>";
-        pageNotesUi += "<div id='consoleTitle' class='pluginNameHeader'>Console</div>";
-
-        pageNotesUi += "</div>";
-        pageNotesUi += "</div>";
-
-        pageNotesUi += "<div id='variablesContainer' style='max-height:300px; overflow-y:auto'>";
-        pageNotesUi += "<div id='variablesTitle' class='sectionTitle'>Variables</div>";
-        pageNotesUi += "<a id='variablesClearLink' class='traceOption'>Reset Variables</a>";
-        pageNotesUi += "<div id='variablesDiv'></div></div>";
-        pageNotesUi += "<div id='traceContainer'>";
-
-        pageNotesUi += "<div id='traceHeader'>";
-        pageNotesUi += "<span class='sectionTitle'>Trace</span><a id='traceClear' class='traceOption'>Clear Trace</a><a id='traceToggle' class='traceOption'>Stop Trace</a>";
-        pageNotesUi += "</div>";
-        pageNotesUi += "</div>";
-        pageNotesUi += "<div id='debugScrollContainer'>";
-        pageNotesUi += "<div id='debugContainer'>";
-
-
-        pageNotesUi += "<div id='traceEmptyState'>";
-        pageNotesUi += "<div class='startInstructions'>Click the button below to start recording interactions as you click through the prototype.</div>";
-        pageNotesUi += "<div id='traceStart' class='startButton'>Start Trace</div>";
-        pageNotesUi += "</div>";
-        pageNotesUi += "<div id='traceDiv'></div></div>";
-        pageNotesUi += "</div></div>";
-
-        $('#debugHost').html(pageNotesUi);
-        $('#traceEmptyState').show();
-    }
-
-})();   
+// use this to isolate the scope
+(function () {
+
+    if(!$axure.document.configuration.showConsole) { return; }
+
+    $(document).ready(function () {
+        var pluginInfo = {
+            id: 'debugHost',
+            context: 'inspect',
+            title: 'Interaction Console',
+            gid: 3
+        };
+        var pluginStarted = false;
+        var showEmptyState = true;
+        $axure.player.createPluginHost(pluginInfo);
+        var prevElId = 'p';
+        var currentElId = 'c';
+
+        generateDebug();
+
+        $('#variablesClearLink').click(clearvars_click);
+        $('#traceClear').click(cleartrace_click);
+        $('#traceToggle').click(stoptrace_click);
+
+        $('#closeConsole').click(close);
+
+        var currentStack= [];
+        var finishedStack = [];
+
+        $axure.messageCenter.addMessageListener(function (message, data) {
+            if(message == 'axCompositeEventMessage') {
+                for(var i = 0; i < data.length; i++) {
+                    processMessages(data[i].message, data[i].data);
+                }
+            } else processMessages(message, data);
+        });
+
+        var processMessages = function (message, data) {
+            if(message == 'openPlugin') {
+                if(data == pluginInfo.id && !pluginStarted) {
+                    starttrace();
+                }
+            } else if(message == 'globalVariableValues') {
+                $('#variablesDiv').empty();
+                for(var key in data) {
+                    var value = data[key] == '' ? '<span>(blank)</span>' : data[key];
+                    $('#variablesDiv').append('<div class="variableList"><div class="variableName">' + key + '</div><div class="variableValue">' + value + '</div></div>');
+                }
+            } else if(message == 'axEvent') {
+                hideEmptyState();
+                prevElId = currentElId;
+                currentElId = data.elementId;
+
+                var addToStack = "<div class='axEventBlock'>";
+                addToStack += "<div class='axEventContainer'>";
+                addToStack += "    <div class='axTime'>" + new Date().toLocaleTimeString() + "</div>";
+                addToStack += "    <div class='axLabel'>" + data.label + " (" + data.type + ")</div>";
+                addToStack += "    <div class='axEvent'>" + data.event.description + "</div>";
+                addToStack += "</div></div>";
+
+                currentStack.push($(addToStack));
+            } else if (message == 'axEventComplete') {
+                handleNoCondition()
+                if (tryAddGroupCounter()) {
+                    currentStack.shift();
+                    return;
+                }
+
+                finishedStack.push(currentStack.shift());
+                for (var i = finishedStack.length - 1; i >= 0; i--) {
+                    if ($('#traceDiv').children().length > 99) $('#traceDiv').children().last().remove();
+                    $('#traceDiv').prepend(finishedStack[i]);
+                }
+                finishedStack = [];
+            } else if (message == 'axCase') {
+                var addToStack = "<div class='axCaseContainer'>";
+                addToStack += "    <div class='axCaseItem'>" + data.item + "</div>";
+                if (data.description) { addToStack += "    <div class='axCaseDescription' title='" + data.description + "'>" + data.description + "</div>" };
+                addToStack += "</div>";
+
+                currentStack[currentStack.length - 1].append($(addToStack));
+            } else if (message == 'axAction') {
+                var addToStack = "<div class='axActionContainer'>";
+                addToStack += "    <div class='axActionItem'>" + data.name + "</div>";
+                addToStack += "</div>";
+
+                currentStack[currentStack.length - 1].append($(addToStack));
+            } else if (message == 'axInfo') {
+                var addToStack = "<div class='axInfoContainer'>";
+                addToStack += "    <div class='axInfoItem'>" + data.item + "</div>";
+                if (data.description) { addToStack += "    <div class='axInfoDescription' title='" + data.longDescription + "'>" + data.description + "</div>" };
+                addToStack += "</div>";
+
+                currentStack[currentStack.length - 1].append($(addToStack));
+            }
+        }
+
+        // bind to the page load
+        $axure.page.bind('load.debug', function () {
+            var traceStr = $axure.player.getHashStringVar(TRACE_VAR_NAME);
+            if (!traceStr) $axure.messageCenter.setState("isTracing", false);
+            else if (traceStr == 1) starttrace();
+            else if (traceStr == 0) stoptrace_click();
+            $axure.messageCenter.postMessage('getGlobalVariables', '');
+            return false;
+        });
+
+        function handleNoCondition() {
+            var event = currentStack[currentStack.length - 1];
+            var action = event.find('.axActionContainer');
+            if (action.length == 0) {
+                event.append($("<div class='axActionContainer'><span>No condition met</span></div></div>"));
+            }
+        }
+
+        function compareEventBlocks(first, second) {
+            if(currentElId !== prevElId) return false;
+            var firstClone = first.clone();
+            var secondClone = second.clone();
+            firstClone.find('.axTime').remove();
+            secondClone.find('.axTime').remove();
+            firstClone.find('.axEventCounter').remove();
+            secondClone.find('.axEventCounter').remove();
+            return firstClone.html() === secondClone.html();
+        }
+
+        function tryAddGroupCounter() {
+            var prevEvent;
+            if(finishedStack.length == 0 && currentStack.length > 0) {
+                prevEvent = $('#traceDiv').find('.axEventBlock').first();
+                if(prevEvent.length == 0) return false;
+            } else if(finishedStack.length > 0) {
+                prevEvent = finishedStack[finishedStack.length - 1];
+            } else {
+                return false;
+            }
+
+            var currentEvent = currentStack[0];
+
+            if(compareEventBlocks(prevEvent, currentEvent)) {
+                var prevLabel = prevEvent.find('.axLabel');
+                var counterBlock = prevLabel.find('.axEventCounter');
+                prevEvent.find('.axTime').text(currentEvent.find('.axTime').text());
+                if(counterBlock.length == 0) {
+                    var eventCounter = "<span class='axEventCounter'>2</span>";
+                    prevLabel.append($(eventCounter));
+                    return true;
+                }
+                var count = counterBlock.text();
+                if(isNaN(count)) return true;
+                if(count > 8) counterBlock.text('9+');
+                else counterBlock.text(+count + 1);
+                return true;
+            }
+            return false;
+        }
+
+        function clearvars_click(event) {
+            $axure.messageCenter.postMessage('resetGlobalVariables', '');
+        }
+
+        function close() {
+            $axure.player.pluginClose("debugHost");
+        }
+
+        function cleartrace_click(event) {
+            $('#traceDiv').html('');
+            clearLastEventState();
+        }
+
+        function clearLastEventState() {
+            lastEventId = '';
+            sameLastEvent = false;
+            lastCaseName = '';
+        }
+
+        function starttrace() {
+            $axure.messageCenter.setState("isTracing", true);
+            console.log("starting trace");
+            $axure.player.setVarInCurrentUrlHash(TRACE_VAR_NAME, 1);
+            pluginStarted = true;
+
+            if (!$axure.document.configuration.isAxshare) {
+                $.get("consoleShown");
+            }
+        }
+
+        function hideEmptyState() {
+            if(showEmptyState) {
+                $('#traceEmptyState').hide();
+                showEmptyState = false;
+            }
+        }
+
+        function restarttrace_click(event) {
+            $('#traceToggle').text('Stop');
+            $('#traceToggle').off("click");
+            $('#traceToggle').click(stoptrace_click);
+            starttrace();
+            clearLastEventState();
+        }
+
+        function stoptrace_click(event) {
+            $axure.messageCenter.setState("isTracing", false);
+            $('#traceDiv').prepend('<div class="tracePausedNotification">Trace Paused<div>');
+            $('#traceToggle').text('Restart');
+            $('#traceToggle').off("click");
+            $('#traceToggle').click(restarttrace_click);
+            console.log("stopping trace");
+            $axure.player.setVarInCurrentUrlHash(TRACE_VAR_NAME, 0);
+            pluginStarted = true;
+        }
+    });
+
+    function generateDebug() {
+        var pageNotesUi = "<div id='debugHeader'>";
+        pageNotesUi += "<div id='debugToolbar'>";
+        pageNotesUi += "<div id='consoleTitle' class='pluginNameHeader'>Console</div>";
+
+        pageNotesUi += "</div>";
+        pageNotesUi += "</div>";
+
+        pageNotesUi += "<div id='variablesContainer' style='max-height:300px; overflow-y:auto'>";        
+        pageNotesUi += "<div id='variablesTitle' class='sectionTitle'>Variables</div>";
+        pageNotesUi += "<a id='variablesClearLink' class='traceOption'>Reset values</a>";
+        pageNotesUi += "<div id='variablesDiv'></div></div>";
+        pageNotesUi += "<div id='traceContainer'>";
+
+        pageNotesUi += "<div id='traceHeader'>";
+        pageNotesUi += "<span class='sectionTitle'>Trace</span><a id='traceClear' class='traceOption'>Clear</a><a id='traceToggle' class='traceOption'>Stop</a>";
+        pageNotesUi += "</div>";
+        pageNotesUi += "</div>";
+        pageNotesUi += "<div id='debugScrollContainer'>";
+        pageNotesUi += "<div id='debugContainer'>";
+
+        pageNotesUi += "<div id='traceEmptyState'>Interactions will be recorded here as you click through the prototype</div>";
+        pageNotesUi += "<div id='traceDiv'></div></div>";
+        pageNotesUi += "</div></div>";
+
+        $('#debugHost').append(pageNotesUi);
+    }
+})();

+ 265 - 264
RFID/plugins/debug/styles/debug.css

@@ -1,265 +1,266 @@
-#debugHost {
-    display: flex;
-    flex-direction: column;
-    font-size: 13px;
-    color: #4a4a4a;
-    height: 100%;
-}
-
-#debugHostBtn {
-    order: 4;
-}
-
-#debugHostBtn a {
-    background: url('images/console_panel_on.svg') no-repeat center center, linear-gradient(transparent, transparent);
-}
-
-#debugHostBtn a.selected, #debugHostBtn a.selected:hover {
-    background: url('images/console_panel_off.svg') no-repeat center center, linear-gradient(transparent, transparent);
-}
-
-#debugToolbar {
-    margin-left: 8px;
-}
-
-#variablesClearLink {
-    display: inline-block;
-    margin-bottom: 15px;
-}
-
-#variablesClearLink:hover {
-    color: #0a6cd6;
-}
-
-#traceClearLink {
-    display: inline-block;
-    margin-bottom: 15px;
-}
-
-#traceClearLink:hover {
-    color: #0a6cd6;
-}
-
-#debugScrollContainer 
-{
-    overflow: auto;
-    width: 100%;
-    -webkit-overflow-scrolling: touch;
-    flex: 1;
-}
-
-#debugContainer {
-    padding: 10px 0px 10px 0px;
-}
-
-#consoleTitle {
-    clear: right;
-    margin: 12px 0px;
-}
-
-.variableName
-{
-	font-weight: bold;
-}
-
-.variableDiv
-{
-    margin-bottom: 20px;
-    line-height: 16px;
-
-}
-
-#variablesDiv
-{
-    clear: right;
-}
-
-#variablesContainer {
-    border-bottom: solid 1px #e7e7e7;
-    padding: 0px 10px 12px 10px;
-}
-
-#traceContainer {
-    margin-bottom: 5px;
-    padding: 15px 10px 0px 10px;
-}
-
-#variablesTitle {
-    margin-bottom: 9px;
-}
-
-.sectionTitle {
-    font-size: 11px;
-    color: #2c2c2c;
-    display: inline-block;
-}
-
-.debugToolbarButton 
-{
-	font-size: 1em;
-	color: #069;
-}
-
-.axEventBlock {
-    display: inline-block;
-    width: 100%;
-    margin: 5px 0px 5px 0px;
-    line-height: 21px;
-    border-bottom: solid 5px #e7e7e7;
-}
-
-.axEventContainer {
-    background-color: #e7e7e7;
-    padding: 0px 10px 0px 10px;
-}
-
-.axTime {
-    margin: 0px 0px 0px 5px;
-    font-size: 10px;
-    color: #575757;
-    display: inline-block;
-    float: right;
-}
-
-.axLabel {
-    display: inline-block;
-}
-
-.axEvent {
-    margin: 0px 0px 2px 0px;    
-    font-size: 15px;
-    font-weight: bold;
-    overflow: hidden;
-    text-overflow: ellipsis;
-}
-
-.axCaseContainer, .axActionContainer, .axInfoContainer {
-    justify-content: space-between;
-    padding: 0px 10px 0px 10px;
-}
-    .axCaseContainer {
-        border-top: solid 2px #e7e7e7;
-        /*background-color: #47b6b5;*/
-        background-color: #e7e7e7;
-        /*color: #ffffff;*/
-    }
-    .axActionContainer {
-        border-top: solid 3px #e7e7e7;
-    }
-    .axInfoContainer {
-        border-top: solid 1px #e7e7e7;
-    }
-
-.axCaseItem, .axActionItem, .axInfoItem {
-    overflow: hidden;
-    text-overflow: ellipsis; 
-}
-    .axCaseItem {
-        font-size: 15px;
-        font-weight: bold;
-    }
-    .axActionItem {
-        font-weight: bold;
-    }
-    .axInfoItem {
-        color: #8c8c8c;
-    }
-
-.axCaseDescription {
-    flex: 5 0 33%;
-    margin-left: 10px;
-    text-align: right;
-}
-/*.axActionDescription, .axInfoDescription {
-    flex: 5 0 33%;
-    margin-left: 10px;
-    text-align: right;
-}*/
-    .axCaseDescription, .axActionDescription {
-        overflow: hidden;
-        text-overflow: ellipsis;
-        white-space: nowrap;
-    }
-    .axInfoDescription, .axActionDescription {
-        color: #8c8c8c;
-        font-size: 11px;
-    }
-
-.variableName {
-    width: 55%;
-    line-height: 0.92;
-    text-align: left;
-    color: #0891b3;
-    display: inline-block;
-    word-wrap: break-word;
-    vertical-align: top;
-}
-
-.variableValue {
-    width: 45%;
-    line-height: 0.92;
-    text-align: right;
-    color: #373d48;
-    display: inline-block;
-    word-wrap: break-word;
-}
-
-.traceEvent {
-    border-bottom: solid 1px #e7e7e7;
-}
-
-.tracePausedNotification {
-    height: 25px;
-    /*background-color: #e7e7e7;*/
-    border-radius: 5px;
-    line-height: 25px;
-    margin: 5px 10px;
-    text-align: center
-}
-
-#traceEmptyState.emptyStateContainer {
-    margin-top: 0px;
-}
-
-.variableList{
-    width: 100%;
-    margin-bottom: 4px;
-}
-
-.traceOption {
-    margin-left: 11px;
-    height: 16px;
-    float: right;
-    font-size: 12px;
-    font-style: italic;
-    line-height: 1.45;
-    text-align: right;
-    color: #8c8c8c;
-    text-decoration: underline;
-    display: inline-block;
-}
-
-.startInstructions {
-    margin: auto;
-    width: 179px;
-    font-size: 11px;
-    text-align: center;
-    color: #666666;
-}
-
-.startButton {
-    margin: auto;
-    margin-top: 10px;
-    width: 181px;
-    height: 24px;
-    border-radius: 2px;
-    border: solid 1px #008fe0;
-    text-align: center;
-    line-height: 24px;
-    color: #008fe0;
-    cursor: pointer;
-}
-
-.debugLinksContainer {
-    text-align: right;
+#debugHost {
+    display: flex;
+    flex-direction: column;
+    /*font-size: 13px;*/
+    /*color: #4a4a4a;*/
+    height: 100%;
+}
+
+#debugHostBtn {
+    order: 4;
+}
+
+#debugHostBtn a {
+    background: url('images/console_panel_on.svg') no-repeat center center, linear-gradient(transparent, transparent);
+}
+
+#debugHostBtn a.selected, #debugHostBtn a.selected:hover {
+    background: url('images/console_panel_off.svg') no-repeat center center, linear-gradient(transparent, transparent);
+}
+
+#debugToolbar {
+    /*margin-left: 8px;*/
+}
+
+#variablesClearLink {
+    display: inline-block;
+    margin-bottom: 10px;
+}
+
+#traceClearLink {
+    display: inline-block;
+    margin-bottom: 15px;
+}
+
+#traceClearLink:hover {
+    color: #1482C5;
+}
+
+#debugScrollContainer 
+{
+    overflow: auto;
+    width: 100%;
+    -webkit-overflow-scrolling: touch;
+    flex: 1;
+}
+
+#debugContainer {
+    padding: 10px 0px 10px 0px;
+}
+
+#consoleTitle {
+    clear: right;
+    padding: 20px 15px;
+}
+
+.variableDiv
+{
+    margin-bottom: 20px;
+    line-height: 16px;
+
+}
+
+#variablesDiv
+{
+    clear: right;
+}
+
+#variablesContainer {
+    padding: 0px 15px 12px 15px;
+}
+
+#traceContainer {
+    margin-bottom: 5px;
+    padding: 5px 15px 0px 15px;
+}
+
+.sectionTitle {
+    font-size: 14px;
+    font-weight: bold;
+    color: #2c2c2c;
+    display: inline-block;
+    margin: 8px 0;
+}
+
+.debugToolbarButton 
+{
+	font-size: 1em;
+	color: #069;
+}
+
+.axEventBlock {
+    display: inline-block;
+    width: 100%;
+    margin: 5px 0px 5px 0px;
+    line-height: 20px;
+    /*border-bottom: solid 5px #e7e7e7;*/
+}
+
+.axEventContainer {
+    /*background-color: #e7e7e7;*/
+    padding: 0px 15px 0px 15px;
+}
+
+.axTime {
+    margin: 0px 0px 0px 5px;
+    font-size: 12px;
+    color: #64748B;
+    display: inline-block;
+    float: right;
+}
+
+.axLabel {
+    display: inline-block;
+    color: #2563EB;
+}
+
+.axEvent {
+    font-weight: bold;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    font-weight: 600;
+}
+
+.axCaseContainer {
+    justify-content: space-between;
+    padding: 0px 15px 0px 25px;
+}
+
+.axActionContainer {
+    justify-content: space-between;
+    padding: 0px 15px 0px 35px;
+    color: #64748B;
+}
+
+.axInfoContainer {
+    justify-content: space-between;
+    padding: 0px 15px 0px 45px;
+}
+
+.axCaseContainer {
+    /*border-top: solid 2px #e7e7e7;*/
+    /*background-color: #47b6b5;*/
+    /*background-color: #e7e7e7;*/
+    /*color: #ffffff;*/
+}
+.axActionContainer {
+    /*border-top: solid 3px #e7e7e7;*/
+}
+.axInfoContainer {
+    /*border-top: solid 1px #e7e7e7;*/
+}
+
+.axCaseItem, .axActionItem, .axInfoItem {
+    overflow: hidden;
+    text-overflow: ellipsis; 
+}
+.axCaseItem {
+    font-weight: 600;
+}
+.axActionItem {
+    font-weight: 600;
+    color: #1e293b;
+}
+.axInfoItem {
+    /*color: #8c8c8c;*/
+}
+
+.axCaseDescription {
+    flex: 5 0 33%;
+    font-weight: 400;
+}
+/*.axActionDescription, .axInfoDescription {
+    flex: 5 0 33%;
+    margin-left: 10px;
+    text-align: right;
+}*/
+.axCaseDescription, .axActionDescription {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+}
+.axInfoDescription, .axActionDescription {
+    color: #8c8c8c;
+    font-size: 11px;
+}
+
+.variableName {
+    width: 55%;
+    line-height: 0.92;
+    text-align: left;
+    display: inline-block;
+    word-wrap: break-word;
+    vertical-align: top;
+}
+
+.variableValue {
+    width: 45%;
+    line-height: 0.92;
+    text-align: right;
+    display: inline-block;
+    word-wrap: break-word;
+}
+
+.variableValue span {
+    color: #64748B;
+}
+
+.traceEvent {
+    border-bottom: solid 1px #e7e7e7;
+}
+
+.tracePausedNotification {
+    height: 25px;
+    /*background-color: #e7e7e7;*/
+    border-radius: 5px;
+    line-height: 25px;
+    margin: 5px 10px;
+    text-align: center
+}
+
+.variableList{
+    width: 100%;
+    margin-bottom: 4px;
+}
+
+.traceOption {
+    margin-left: 10px;
+    float: right;
+    font-size: 12px;
+    padding: 8px;
+    height: 28px;
+    line-height: 10px;
+    border: 1px solid #CBD5E1;
+    border-radius: 4px;
+    font-weight: 500;
+    box-sizing: border-box;
+}
+
+.traceOption:hover {
+    background-color: rgba(229, 231, 235, 0.4); 
+}
+
+#traceEmptyState {
+    margin: auto;
+    font-size: 14px;
+    padding: 0 28px;
+    text-align: center;
+    color: #64748B;
+}
+
+.debugLinksContainer {
+    text-align: right;
+}
+
+.axEventCounter {
+    display: inline-block;
+    width: 21px;
+    height: 21px;
+    font-size: 12px;
+    border-radius: 50%;
+    text-align: center;
+    color: #ffffff;
+    background-color: rgba(30, 152, 215, 1);
+    margin-left: 5px;
+    float: right;
 }

+ 3 - 2
RFID/plugins/debug/styles/images/console_panel_off.svg

@@ -1,3 +1,4 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
-    <path fill="#008DCB" fill-rule="evenodd" d="M14 2.5l-2 1V2H2v12h12v1a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v1.5zm-2.981 3.702c.78-1.06 1.407-1.803 1.882-2.23.475-.428.938-.641 1.389-.641.54 0 .913.184 1.118.553.11.192.164.424.164.698 0 .28-.113.536-.339.769a1.1 1.1 0 0 1-.82.348c-.198 0-.422-.075-.672-.225-.25-.15-.439-.226-.569-.226-.253 0-.494.13-.723.39-.229.26-.623.81-1.184 1.65l.195 1.026c.102.526.188.959.256 1.297.069.338.144.651.226.938.11.397.219.684.328.862.11.177.27.266.482.266.191 0 .424-.14.697-.42.15-.15.38-.427.687-.83l.43.297a8.113 8.113 0 0 1-1.409 1.733c-.578.546-1.143.82-1.697.82-.465 0-.848-.192-1.148-.574-.171-.205-.322-.486-.452-.841a11.32 11.32 0 0 1-.282-.98 24.82 24.82 0 0 0-.23-.866l-.144.246c-.677 1.162-1.172 1.918-1.487 2.266-.471.52-1.018.78-1.64.78-.356 0-.665-.122-.928-.364a1.172 1.172 0 0 1-.395-.898c0-.294.097-.565.292-.815.195-.25.467-.374.815-.374.212 0 .474.075.785.226.31.15.514.225.61.225.212 0 .395-.094.548-.282.154-.188.457-.654.908-1.4l.41-.676c-.068-.287-.142-.64-.22-1.056-.079-.417-.16-.845-.241-1.282l-.164-.872c-.117-.629-.301-1.042-.554-1.24-.144-.117-.38-.175-.708-.175a14.992 14.992 0 0 0-.636.051v-.564c.616-.075 1.29-.17 2.026-.287a52.738 52.738 0 0 0 1.471-.246c.205.274.374.605.508.995.133.39.234.803.302 1.24l.113.688z"/>
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+    <path d="M7.68408 14H13.9999" stroke="#2563EB" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M2 8.78261L3.5 2H9L6 7.21739H8.5L3.5 14L4.5 8.78261H2Z" stroke="#2563EB" stroke-linejoin="round"/>
 </svg>

+ 4 - 3
RFID/plugins/debug/styles/images/console_panel_on.svg

@@ -1,3 +1,4 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
-    <path fill="#6D6D6D" fill-rule="evenodd" d="M14 2.5l-2 1V2H2v12h12v1a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v1.5zm-2.981 3.702c.78-1.06 1.407-1.803 1.882-2.23.475-.428.938-.641 1.389-.641.54 0 .913.184 1.118.553.11.192.164.424.164.698 0 .28-.113.536-.339.769a1.1 1.1 0 0 1-.82.348c-.198 0-.422-.075-.672-.225-.25-.15-.439-.226-.569-.226-.253 0-.494.13-.723.39-.229.26-.623.81-1.184 1.65l.195 1.026c.102.526.188.959.256 1.297.069.338.144.651.226.938.11.397.219.684.328.862.11.177.27.266.482.266.191 0 .424-.14.697-.42.15-.15.38-.427.687-.83l.43.297a8.113 8.113 0 0 1-1.409 1.733c-.578.546-1.143.82-1.697.82-.465 0-.848-.192-1.148-.574-.171-.205-.322-.486-.452-.841a11.32 11.32 0 0 1-.282-.98 24.82 24.82 0 0 0-.23-.866l-.144.246c-.677 1.162-1.172 1.918-1.487 2.266-.471.52-1.018.78-1.64.78-.356 0-.665-.122-.928-.364a1.172 1.172 0 0 1-.395-.898c0-.294.097-.565.292-.815.195-.25.467-.374.815-.374.212 0 .474.075.785.226.31.15.514.225.61.225.212 0 .395-.094.548-.282.154-.188.457-.654.908-1.4l.41-.676c-.068-.287-.142-.64-.22-1.056-.079-.417-.16-.845-.241-1.282l-.164-.872c-.117-.629-.301-1.042-.554-1.24-.144-.117-.38-.175-.708-.175a14.992 14.992 0 0 0-.636.051v-.564c.616-.075 1.29-.17 2.026-.287a52.738 52.738 0 0 0 1.471-.246c.205.274.374.605.508.995.133.39.234.803.302 1.24l.113.688z"/>
-</svg>
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+    <path d="M7.68408 14H13.9999" stroke="#1E293B" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M2 8.78261L3.5 2H9L6 7.21739H8.5L3.5 14L4.5 8.78261H2Z" stroke="#1E293B" stroke-linejoin="round"/>
+</svg>

+ 474 - 473
RFID/plugins/page_notes/page_notes.js

@@ -1,474 +1,475 @@
-// use this to isolate the scope
-(function () {
-    // No notes shown specified by generation config
-    if (!$axure.document.configuration.showPageNotes && !$axure.document.configuration.showAnnotationsSidebar && !$axure.document.configuration.showAnnotations) { return; }
-
-    $(window.document).ready(function () {
-        // Load right panel for Page Notes
-        if ($axure.document.configuration.showPageNotes || $axure.document.configuration.showAnnotationsSidebar) {
-            $axure.player.createPluginHost({
-                id: 'pageNotesHost',
-                context: 'inspect',
-                title: 'Documentation',
-                gid: 2,
-            });
-        }
-
-        // Load footnotes on widgets
-        if ($axure.document.configuration.showAnnotations) {
-            $('#overflowMenuContainer').prepend('<div id="showNotesOption" class="showOption" style="order: 3"><div class="overflowOptionCheckbox"></div>Show Note Markers</div>');
-        }
-
-        createNotesOverlay();
-        generatePageNotes();
-
-        if ($axure.player.isMobileMode()) {
-            $('#showNotesOption').hide();
-        } else {
-            $('#showNotesOption').click(footnotes_click);
-            $('#showNotesOption').find('.overflowOptionCheckbox').addClass('selected');
-        }
-
-        function populateNotes(pageForNotes) {
-            var hasNotes = false;
-            if ($axure.document.configuration.showPageNotes) {
-                var pageNoteUi = '';
-
-                function populatePageNotes(pageOrMaster) {
-                    //populate the page notes
-                    var notes = pageOrMaster.notes;
-                    if (notes && !$.isEmptyObject(notes)) {
-                        pageNoteUi += "<div class='notesPageNameHeader'>" + pageOrMaster.pageName + "</div>";
-
-                        var showNames = $axure.document.configuration.showPageNoteNames;
-                        for(var noteName in notes) {
-                            pageNoteUi += "<div class='pageNoteContainer'>";
-                            if(showNames) {
-                                pageNoteUi += "<div class='pageNoteName'>" + noteName + "</div>";
-                            }
-                            pageNoteUi += "<div class='pageNote'>" + linkify(notes[noteName]) + "</div>";
-                            pageNoteUi += "</div>";
-                            //$('#pageNotesContent').append(pageNoteUi);
-
-                            hasNotes = true;
-                        }
-                    }
-                }
-
-                populatePageNotes(pageForNotes);
-                if (pageForNotes.masterNotes) {
-                    for (var i = 0; i < pageForNotes.masterNotes.length; i++) {
-                        populatePageNotes(pageForNotes.masterNotes[i]);
-                    }
-                }
-
-                if (pageNoteUi.length > 0) {
-                    pageNoteUi += "<div class='lineDivider'></div>";
-                    var pageNotesHeader = "<div id='pageNotesSectionHeader' class='notesSectionHeader pluginNameHeader'>Page Notes</div>";
-                    $('#pageNotesContent').append(pageNotesHeader + pageNoteUi);
-                }
-            }
-
-            if ($axure.document.configuration.showAnnotationsSidebar) {
-                var widgetNoteUi = '';
-                //var widgetNotes = pageForNotes.widgetNotes;
-                function populateWidgetNotes(widgetNotes){
-                    if (widgetNotes) {
-                        for (var i = 0; i < widgetNotes.length; i++) {
-                            var widgetNote = widgetNotes[i];
-                            widgetNoteUi += "<div class='widgetNoteContainer' data-id='" + widgetNote["ownerId"] + "'>";
-                            widgetNoteUi += "<div class='widgetNoteFootnote'>" + widgetNote["fn"] + "</div>";
-                            widgetNoteUi += "<div class='widgetNoteLabel'>" + widgetNote["label"] + "</div>";
-
-                            for (var widgetNoteName in widgetNote) {
-                                if (widgetNoteName != "label" && widgetNoteName != "fn" && widgetNoteName != "ownerId") {
-                                    widgetNoteUi += "<div class='pageNoteName'>" + widgetNoteName + "</div>";
-                                    widgetNoteUi += "<div class='pageNote'>" + linkify(widgetNote[widgetNoteName]) + "</div>";
-                                    //widgetNoteUi += "<div class='nondottedDivider'></div>";
-                                }
-                            }
-                            widgetNoteUi += "</div>";
-                            //widgetNoteUi += "<div class='nondottedDivider'></div>";
-                            //$('#pageNotesContent').append(widgetNoteUi);
-                            hasNotes = true;
-                        }
-                    }
-                }
-
-                populateWidgetNotes(pageForNotes.widgetNotes);
-                if (pageForNotes.masterNotes) {
-                    for (var i = 0; i < pageForNotes.masterNotes.length; i++) {
-                        populateWidgetNotes(pageForNotes.masterNotes[i].widgetNotes);
-                    }
-                }
-
-                if (widgetNoteUi.length > 0) {
-                    var widgetNotesHeader = "<div id='widgetNotesSectionHeader' class='notesSectionHeader pluginNameHeader'>Widget Notes</div>";
-                    $('#pageNotesContent').append(widgetNotesHeader + widgetNoteUi);
-
-                    //$('.widgetNoteContainer').children(':last-child').remove();
-                    //$('.widgetNoteFootnote').append("<div class='annnoteline'></div><div class='annnoteline'></div><div class='annnoteline'></div>");
-                    $('.widgetNoteContainer').click(function () {
-                        var wasSelected = $(this).hasClass('widgetNoteContainerSelected');
-                        $('.widgetNoteContainerSelected').removeClass('widgetNoteContainerSelected');
-                        if (!wasSelected) $(this).addClass('widgetNoteContainerSelected');
-
-                        var dimStr = $('.currentAdaptiveView').attr('data-dim');
-                        var h = dimStr ? dimStr.split('x')[1] : '0';
-                        var $leftPanel = $('.leftPanel:visible');
-                        var leftPanelOffset = (!$axure.player.isMobileMode() && $leftPanel.length > 0) ? $leftPanel.width() : 0;
-                        var $rightPanel = $('.rightPanel:visible');
-                        var rightPanelOffset = (!$axure.player.isMobileMode() && $rightPanel.length > 0) ? $rightPanel.width() : 0;
-                        var viewDimensions = {
-                            h: h != '0' ? h : '',
-                            scaleVal: $('.vpScaleOption').find('.selectedRadioButton').parent().attr('val'),
-                            height: $('.rightPanel').height(),
-                            panelWidthOffset: leftPanelOffset + rightPanelOffset
-                        };
-                        $axure.messageCenter.postMessage('toggleSelectWidgetNote', { id: this.getAttribute('data-id'), value: !wasSelected, view: viewDimensions});
-                    });
-                }
-
-                
-                //if (pageForNotes.masterNotes) {
-                //    for (var i = 0; i < pageForNotes.masterNotes.length; i++) {
-                //        var master = pageForNotes.masterNotes[i];
-                //        hasNotes = populateNotes(master) || hasNotes;
-                //    }
-                //}
-            }
-            
-            return hasNotes;
-        }
-
-        // bind to the page load
-        $axure.page.bind('load.page_notes', function () {
-            closeAllDialogs();
-
-            var hasNotes = false;
-
-            $('#pageNotesContent').html("");
-            hasNotes = populateNotes($axure.page);
-            
-            if(hasNotes) $('#pageNotesEmptyState').hide();
-            else $('#pageNotesEmptyState').show();
-
-            //If footnotes enabled for this prototype...
-            if ($axure.player.isMobileMode()) {
-                $axure.messageCenter.postMessage('annotationToggle', false);
-            } else if($axure.document.configuration.showAnnotations == true) {
-                //If the fn var is defined and set to 0, hide footnotes
-                //else if hide-footnotes button selected, hide them
-                var fnVal = $axure.player.getHashStringVar(FOOTNOTES_VAR_NAME);
-                if(fnVal.length > 0 && fnVal == 0) {
-                    $('#showNotesOption').find('.overflowOptionCheckbox').removeClass('selected');
-                    $axure.messageCenter.postMessage('annotationToggle', false);
-                } else if(!$('#showNotesOption').find('.overflowOptionCheckbox').hasClass('selected')) {
-                    //If the footnotes button isn't selected, hide them on this loaded page
-                    $axure.messageCenter.postMessage('annotationToggle', false);
-                }
-            }
-
-            // Get multiple click call if not removing beforehand
-            $('#notesOverlay').off('click');
-            $('#notesOverlay').on('click', '.closeNotesDialog', function () {
-                var ownerId = $(this).attr("data-ownerid");
-                _toggleAnnDialog(ownerId);
-            });
-            
-            $axure.player.updatePlugins();
-            return false;
-        });
-
-        $axure.messageCenter.addMessageListener(function (message, data) {
-            //var messageData = { id: elementId, x: event.pageX, y: event.pageY }
-            if (message == 'toggleAnnDialog') {
-                _toggleAnnDialog(data.id, data.x, data.y, data.page);
-            }
-        });
-
-    });
-
-    function linkify(text) {
-        var urlRegex = /(\b(((https?|ftp|file):\/\/)|(www\.))[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
-        return text.replace(urlRegex, function (url, b, c) {
-            var url2 = (c == 'www.') ? 'http://' + url : url;
-            return '<a href="' + url2 + '" target="_blank" class="noteLink">' + url + '</a>';
-        });
-    }
-
-    function getWidgetNotesHtml(ownerId, page) {
-        var pageForNotes = page || $axure.page;
-        var widgetNoteUi = '';
-
-        widgetNoteUi += "<div data-ownerid='" + ownerId + "' class='closeNotesDialog'></div>";
-        widgetNoteUi += "<div class='notesDialogScroll'>";
-
-        function getNotesForPage(widgetNotes) {
-            for (var i = 0; i < widgetNotes.length; i++) {
-                var widgetNote = widgetNotes[i];
-                if (widgetNote["ownerId"] == ownerId) {
-                    widgetNoteUi += "<div class='widgetNoteContainer' data-id='" + widgetNote["ownerId"] + "'>";
-                    widgetNoteUi += "<div class='widgetNoteFootnote'>" + widgetNote["fn"] + "</div>";
-                    widgetNoteUi += "<div class='widgetNoteLabel'>" + widgetNote["label"] + "</div>";
-
-                    for (var widgetNoteName in widgetNote) {
-                        if (widgetNoteName != "label" && widgetNoteName != "fn" && widgetNoteName != "ownerId") {
-                            widgetNoteUi += "<div class='pageNoteName'>" + widgetNoteName + "</div>";
-                            widgetNoteUi += "<div class='pageNote'>" + linkify(widgetNote[widgetNoteName]) + "</div>";
-                        }
-                    }
-                    widgetNoteUi += "</div>";
-                }
-            }
-        }
-
-        getNotesForPage(pageForNotes.widgetNotes);
-        if (pageForNotes.masterNotes) {
-            for (var i = 0; i < pageForNotes.masterNotes.length; i++) {
-                getNotesForPage(pageForNotes.masterNotes[i].widgetNotes);
-            }
-        }
-
-        widgetNoteUi += "</div>";
-        widgetNoteUi += "<div class='resizeNotesDialog'></div>";
-
-        return widgetNoteUi;
-    }
-
-    var maxZIndex = 1;
-    var dialogs = {};
-    var _toggleAnnDialog = function (id, srcLeft, srcTop, page) {
-
-        if(dialogs[id]) {
-            var $dialog = dialogs[id];
-            // reset the dialog
-            dialogs[id] = undefined;
-            $dialog.find('.notesDialogScroll').getNiceScroll().remove();
-            $dialog.remove();
-            return;
-        }
-        
-        var bufferH = 10;
-        var bufferV = 10;
-        var blnLeft = false;
-        var blnAbove = false;
-        var mfPos = $('#mainPanelContainer').position();
-        var viewablePanelLeftMargin = parseInt($('#mainPanelContainer').css('margin-left'));
-
-        var sourceTop = srcTop + mfPos.top;
-        var sourceLeft = srcLeft + viewablePanelLeftMargin;
-
-        var width = 300;
-        var height = 300;
-
-        if(sourceLeft > width + bufferH) {
-            blnLeft = true;
-        }
-        if(sourceTop > height + bufferV) {
-            blnAbove = true;
-        }
-
-        var top = 0;
-        var left = 0;
-        if(blnAbove) top = sourceTop - height - 20;
-        else top = sourceTop + 10;
-        if(blnLeft) left = sourceLeft - width - 4;
-        else left = sourceLeft - 6;
-
-        //need to set the zindex
-        maxZIndex = maxZIndex + 1;
-        
-        var $dialog = $('<div class="notesDialog"></div>')
-            .appendTo('#notesOverlay')
-            .html(getWidgetNotesHtml(id, page));     
-
-        $dialog.css({ 'left': left, 'top': top, 'z-index': maxZIndex });
-
-        $dialog.find('.notesDialogScroll').niceScroll({ cursorcolor: "#8c8c8c", cursorborder: "0px solid #fff" });
-
-        $dialog.find('.notesDialogScroll').on($axure.eventNames.mouseDownName, function(event) {
-            event.stopPropagation();
-        });
-        
-        $dialog.find('.closeNotesDialog').on($axure.eventNames.mouseDownName, function (event) {
-            event.stopPropagation();
-        });
-
-        $dialog.on($axure.eventNames.mouseDownName, startDialogMove);
-        var startMouseX;
-        var startMouseY;
-        var startDialogX;
-        var startDialogY;
-        function startDialogMove() {
-            startMouseX = window.event.pageX;
-            startMouseY = window.event.pageY;
-            var position = $dialog.position();
-            startDialogX = position.left;
-            startDialogY = position.top;
-
-            $dialog.addClass('active');
-            $('<div class="splitterMask"></div>').insertAfter($('#notesOverlay'));
-            $(document).bind($axure.eventNames.mouseMoveName, doDialogMove).bind($axure.eventNames.mouseUpName, endDialogMove);
-
-            $dialog.find('.notesDialogScroll').getNiceScroll().hide();
-        }
-
-        function doDialogMove() {
-            var currentX = window.event.pageX;
-            var currentY = window.event.pageY;
-            $dialog.css({ 'left': startDialogX + currentX - startMouseX, 'top': startDialogY + currentY - startMouseY });
-        }
-
-        function endDialogMove() {
-            $('div.splitterMask').remove();
-            $dialog.removeClass('active');
-            $(document).unbind($axure.eventNames.mouseMoveName, doDialogMove).unbind($axure.eventNames.mouseUpName, endDialogMove);
-
-            $dialog.find('.notesDialogScroll').getNiceScroll().resize();
-            $dialog.find('.notesDialogScroll').getNiceScroll().show();
-        }
-
-        $dialog.find('.resizeNotesDialog').on($axure.eventNames.mouseDownName, startDialogResize);
-
-        var startDialogW;
-        var startDialogH;
-        function startDialogResize() {
-            event.stopPropagation();
-
-            startMouseX = window.event.pageX;
-            startMouseY = window.event.pageY;
-            startDialogW = Number($dialog.css('width').replace('px',''));
-            startDialogH = Number($dialog.css('height').replace('px', ''));
-
-            $dialog.addClass('active');
-            $('<div class="splitterMask"></div>').insertAfter($('#notesOverlay'));
-            $(document).bind($axure.eventNames.mouseMoveName, doDialogResize).bind($axure.eventNames.mouseUpName, endDialogResize);
-
-            $dialog.find('.notesDialogScroll').getNiceScroll().hide();
-        }
-
-        function doDialogResize() {
-            var currentX = window.event.pageX;
-            var currentY = window.event.pageY;
-            var newWidth = Math.max(200, startDialogW + currentX - startMouseX);
-            var newHeight = Math.max(200, startDialogH + currentY - startMouseY);
-            $dialog.css({ 'width': newWidth, 'height': newHeight });
-        }
-
-        function endDialogResize() {
-            $('div.splitterMask').remove();
-            $dialog.removeClass('active');
-            $(document).unbind($axure.eventNames.mouseMoveName, doDialogResize).unbind($axure.eventNames.mouseUpName, endDialogResize);
-
-            $dialog.find('.notesDialogScroll').getNiceScroll().resize();
-            $dialog.find('.notesDialogScroll').getNiceScroll().show();
-        }
-
-        dialogs[id] = $dialog;
-
-        // scroll ... just for IE
-        //window.scrollTo(scrollX, scrollY);
-    };
-    
-    $(document).on('sidebarCollapse', function (event, data) {
-        clearSelection();
-    });
-
-    $(document).on('pluginShown', function (event, data) {
-        if(data != 2) {
-            clearSelection();
-        }
-    });
-
-    function clearSelection() {
-        var selectedNote = $('#pageNotesContainer').find('.widgetNoteContainerSelected');
-        if(selectedNote.length > 0) {
-            selectedNote.removeClass('widgetNoteContainerSelected');
-            //var dimStr = $('.currentAdaptiveView').attr('data-dim');
-            //var h = dimStr ? dimStr.split('x')[1] : '0';
-            //var $leftPanel = $('.leftPanel:visible');
-            //var leftPanelOffset = (!$axure.player.isMobileMode() && $leftPanel.length > 0) ? $leftPanel.width() : 0;
-            //var $rightPanel = $('.rightPanel:visible');
-            //var rightPanelOffset = (!$axure.player.isMobileMode() && $rightPanel.length > 0) ? $rightPanel.width() : 0;
-            //var viewDimensions = {
-            //    h: h != '0' ? h : '',
-            //    scaleVal: $('.vpScaleOption').find('.selectedRadioButton').parent().attr('val'),
-            //    scrollLeft: $('#clipFrameScroll').scrollLeft(),
-            //    scrollTop: $('#clipFrameScroll').scrollTop(),
-            //    height: $('.rightPanel').height(),
-            //    panelWidthOffset: leftPanelOffset + rightPanelOffset
-            //};
-            //$axure.messageCenter.postMessage('toggleSelectWidgetNote', { id: '', value: false, view: viewDimensions });
-            $axure.messageCenter.postMessage('toggleSelectWidgetNote', { id: '', value: false });
-            //$axure.messageCenter.postMessage('toggleSelectWidgetNote', '');
-        }
-    }
-
-    function closeAllDialogs() {
-        for (var id in dialogs) {
-            var $dialog = dialogs[id];
-            if ($dialog !== undefined) _toggleAnnDialog(id);
-        }
-    }
-
-    $axure.player.toggleFootnotes = function(val) {
-        var scaleCheckDiv = $('#showNotesOption').find('.overflowOptionCheckbox');
-        if (scaleCheckDiv.hasClass('selected')) {
-            if (!val) $('#showNotesOption').click();
-        } else {
-            if (val) $('#showNotesOption').click();
-        }
-    }
-
-    function footnotes_click(event) {
-        var scaleCheckDiv = $('#showNotesOption').find('.overflowOptionCheckbox');
-        if (scaleCheckDiv.hasClass('selected')) {
-            closeAllDialogs();
-
-            scaleCheckDiv.removeClass('selected');
-            $axure.messageCenter.postMessage('annotationToggle', false);
-            //Add 'fn' hash string var so that footnotes stay hidden across reloads
-            $axure.player.setVarInCurrentUrlHash(FOOTNOTES_VAR_NAME, 0);
-        } else {
-            scaleCheckDiv.addClass('selected');
-            $axure.messageCenter.postMessage('annotationToggle', true);
-            //Delete 'fn' hash string var if it exists since default is visible
-            $axure.player.deleteVarFromCurrentUrlHash(FOOTNOTES_VAR_NAME);
-        }
-    }
-
-    function createNotesOverlay() {
-        var $targetPanel = $('#clippingBounds');
-
-        if (!$('#notesOverlay').length) {
-            var notesOverlay = document.createElement('div');
-            notesOverlay.setAttribute('id', 'notesOverlay');
-
-            $targetPanel.prepend(notesOverlay);
-            $(notesOverlay).append('&nbsp;');
-        }
-    }
-
-    function generatePageNotes() {
-        var pageNotesUi = "<div id='pageNotesHeader'>";
-
-        pageNotesUi += "<div id='pageNotesToolbar' style='height: 12px;'>";
-        pageNotesUi += "</div>";
-        pageNotesUi += "</div>";
-
-
-        pageNotesUi += "<div id='pageNotesScrollContainer'>";
-        pageNotesUi += "<div id='pageNotesContainer'>";
-        pageNotesUi += "<div id='pageNotesEmptyState' class='emptyStateContainer'><div class='emptyStateTitle'>No notes for this page.</div><div class='emptyStateContent'>Notes added in Axure RP will appear here.</div><div class='dottedDivider'></div></div>";
-        pageNotesUi += "<span id='pageNotesContent'></span>";
-        pageNotesUi += "</div></div>";
-
-        $('#pageNotesHost').html(pageNotesUi);
-
-        if(!$axure.document.configuration.showAnnotations) {
-            $('#pageNotesHost .pageNameHeader').css('padding-right', '55px');
-        }
-    }
-
+// use this to isolate the scope
+(function () {
+    // No notes shown specified by generation config
+    if (!$axure.document.configuration.showPageNotes && !$axure.document.configuration.showAnnotationsSidebar && !$axure.document.configuration.showAnnotations) { return; }
+
+    $(window.document).ready(function () {
+        // Load right panel for Page Notes
+        if ($axure.document.configuration.showPageNotes || $axure.document.configuration.showAnnotationsSidebar) {
+            $axure.player.createPluginHost({
+                id: 'pageNotesHost',
+                context: 'inspect',
+                title: 'Notes',
+                gid: 2,
+            });
+        }
+
+        // Load footnotes on widgets
+        if ($axure.document.configuration.showAnnotations) {
+            $('#overflowMenuContainer').prepend('<div id="showNotesOption" class="showOption" style="order: 3"><div class="overflowOptionCheckbox"></div>Show note markers</div>');
+        }
+
+        createNotesOverlay();
+        generatePageNotes();
+
+        if ($axure.player.isMobileMode()) {
+            $('#showNotesOption').hide();
+        } else {
+            $('#showNotesOption').click(footnotes_click);
+            $('#showNotesOption').find('.overflowOptionCheckbox').addClass('selected');
+        }
+
+        function escapeXSS(htmlStr) {
+            return htmlStr.replace(/&/g, "&amp;")
+                .replace(/</g, "&lt;")
+                .replace(/>/g, "&gt;")
+                .replace(/"/g, "&quot;")
+                .replace(/'/g, "&#39;");
+        }
+
+        function populateNotes(pageForNotes) {
+            var hasNotes = false;
+            if ($axure.document.configuration.showPageNotes) {
+                var pageNoteUi = '';
+
+                function populatePageNotes(pageOrMaster) {
+                    //populate the page notes
+                    var notes = pageOrMaster.notes;
+                    if (notes && !$.isEmptyObject(notes)) {
+                        pageNoteUi += "<div class='notesPageNameHeader'>" + escapeXSS(pageOrMaster.pageName) + "</div>";
+
+                        var showNames = $axure.document.configuration.showPageNoteNames;
+                        for(var noteName in notes) {
+                            pageNoteUi += "<div class='pageNoteContainer'>";
+                            if(showNames) {
+                                pageNoteUi += "<div class='pageNoteName'>" + noteName + "</div>";
+                            }
+                            pageNoteUi += "<div class='pageNote'>" + linkify(notes[noteName]) + "</div>";
+                            pageNoteUi += "</div>";
+                            //$('#pageNotesContent').append(pageNoteUi);
+
+                            hasNotes = true;
+                        }
+                    }
+                }
+
+                populatePageNotes(pageForNotes);
+                if (pageForNotes.masterNotes) {
+                    for (var i = 0; i < pageForNotes.masterNotes.length; i++) {
+                        populatePageNotes(pageForNotes.masterNotes[i]);
+                    }
+                }
+
+                if (pageNoteUi.length > 0) {
+                    pageNoteUi += "<div class='lineDivider'></div>";
+                    var pageNotesHeader = "<div id='pageNotesSectionHeader' class='notesSectionHeader pluginNameHeader'>Page Notes</div>";
+                    $('#pageNotesContent').append(pageNotesHeader + pageNoteUi);
+                }
+            }
+
+            if ($axure.document.configuration.showAnnotationsSidebar) {
+                var widgetNoteUi = '';
+                //var widgetNotes = pageForNotes.widgetNotes;
+                function populateWidgetNotes(widgetNotes){
+                    if (widgetNotes) {
+                        for (var i = 0; i < widgetNotes.length; i++) {
+                            var widgetNote = widgetNotes[i];
+                            widgetNoteUi += "<div class='widgetNoteContainer' data-id='" + widgetNote["ownerId"] + "'>";
+                            widgetNoteUi += "<div class='widgetNoteTitle'><div class='widgetNoteFootnote'>" + widgetNote["fn"] + "</div>";
+                            widgetNoteUi += "<div class='widgetNoteLabel'>" + widgetNote["label"] + "</div></div>";
+
+                            for (var widgetNoteName in widgetNote) {
+                                if (widgetNoteName != "label" && widgetNoteName != "fn" && widgetNoteName != "ownerId") {
+                                    widgetNoteUi += "<div class='pageNoteName'>" + widgetNoteName + "</div>";
+                                    widgetNoteUi += "<div class='pageNote'>" + linkify(widgetNote[widgetNoteName]) + "</div>";
+                                    //widgetNoteUi += "<div class='nondottedDivider'></div>";
+                                }
+                            }
+                            widgetNoteUi += "</div>";
+                            //widgetNoteUi += "<div class='nondottedDivider'></div>";
+                            //$('#pageNotesContent').append(widgetNoteUi);
+                            hasNotes = true;
+                        }
+                    }
+                }
+
+                populateWidgetNotes(pageForNotes.widgetNotes);
+                if (pageForNotes.masterNotes) {
+                    for (var i = 0; i < pageForNotes.masterNotes.length; i++) {
+                        populateWidgetNotes(pageForNotes.masterNotes[i].widgetNotes);
+                    }
+                }
+
+                if (widgetNoteUi.length > 0) {
+                    $('#pageNotesContent').append(widgetNoteUi);
+
+                    //$('.widgetNoteContainer').children(':last-child').remove();
+                    //$('.widgetNoteFootnote').append("<div class='annnoteline'></div><div class='annnoteline'></div><div class='annnoteline'></div>");
+                    $('.widgetNoteContainer').click(function () {
+                        var wasSelected = $(this).hasClass('widgetNoteContainerSelected');
+                        $('.widgetNoteContainerSelected').removeClass('widgetNoteContainerSelected');
+                        if (!wasSelected) $(this).addClass('widgetNoteContainerSelected');
+
+                        var dimStr = $('.currentAdaptiveView').attr('data-dim');
+                        var h = dimStr ? dimStr.split('x')[1] : '0';
+                        var $leftPanel = $('.leftPanel:visible');
+                        var leftPanelOffset = (!$axure.player.isMobileMode() && $leftPanel.length > 0) ? $leftPanel.width() : 0;
+                        var $rightPanel = $('.rightPanel:visible');
+                        var rightPanelOffset = (!$axure.player.isMobileMode() && $rightPanel.length > 0) ? $rightPanel.width() : 0;
+                        var viewDimensions = {
+                            h: h != '0' ? h : '',
+                            scaleVal: $('.vpScaleOption').find('.selectedRadioButton').parent().attr('val'),
+                            height: $('.rightPanel').height(),
+                            panelWidthOffset: leftPanelOffset + rightPanelOffset
+                        };
+                        $axure.messageCenter.postMessage('toggleSelectWidgetNote', { id: this.getAttribute('data-id'), value: !wasSelected, view: viewDimensions});
+                    });
+                }
+
+                
+                //if (pageForNotes.masterNotes) {
+                //    for (var i = 0; i < pageForNotes.masterNotes.length; i++) {
+                //        var master = pageForNotes.masterNotes[i];
+                //        hasNotes = populateNotes(master) || hasNotes;
+                //    }
+                //}
+            }
+            
+            return hasNotes;
+        }
+
+        // bind to the page load
+        $axure.page.bind('load.page_notes', function () {
+            closeAllDialogs();
+
+            var hasNotes = false;
+
+            $('#pageNotesContent').html("");
+            hasNotes = populateNotes($axure.page);
+            
+            if(hasNotes) $('#pageNotesEmptyState').hide();
+            else $('#pageNotesEmptyState').show();
+
+            //If footnotes enabled for this prototype...
+            if ($axure.player.isMobileMode()) {
+                $axure.messageCenter.postMessage('annotationToggle', false);
+            } else if($axure.document.configuration.showAnnotations == true) {
+                //If the fn var is defined and set to 0, hide footnotes
+                //else if hide-footnotes button selected, hide them
+                var fnVal = $axure.player.getHashStringVar(FOOTNOTES_VAR_NAME);
+                if(fnVal.length > 0 && fnVal == 0) {
+                    $('#showNotesOption').find('.overflowOptionCheckbox').removeClass('selected');
+                    $axure.messageCenter.postMessage('annotationToggle', false);
+                } else if(!$('#showNotesOption').find('.overflowOptionCheckbox').hasClass('selected')) {
+                    //If the footnotes button isn't selected, hide them on this loaded page
+                    $axure.messageCenter.postMessage('annotationToggle', false);
+                }
+            }
+
+            // Get multiple click call if not removing beforehand
+            $('#notesOverlay').off('click');
+            $('#notesOverlay').on('click', '.closeNotesDialog', function () {
+                var ownerId = $(this).attr("data-ownerid");
+                _toggleAnnDialog(ownerId);
+            });
+            
+            $axure.player.updatePlugins();
+            return false;
+        });
+
+        $axure.messageCenter.addMessageListener(function (message, data) {
+            //var messageData = { id: elementId, x: event.pageX, y: event.pageY }
+            if (message == 'toggleAnnDialog') {
+                _toggleAnnDialog(data.id, data.x, data.y, data.page);
+            }
+        });
+
+    });
+
+    function linkify(text) {
+        var urlRegex = /(\b(((https?|ftp|file):\/\/)|(www\.))[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
+        return text.replace(urlRegex, function (url, b, c) {
+            var url2 = (c == 'www.') ? 'http://' + url : url;
+            return '<a href="' + url2 + '" target="_blank" class="noteLink">' + url + '</a>';
+        });
+    }
+
+    function getWidgetNotesHtml(ownerId, page) {
+        var pageForNotes = page || $axure.page;
+        var widgetNoteUi = '';
+
+        widgetNoteUi += "<div data-ownerid='" + ownerId + "' class='closeNotesDialog'></div>";
+        widgetNoteUi += "<div class='notesDialogScroll'>";
+
+        function getNotesForPage(widgetNotes) {
+            for (var i = 0; i < widgetNotes.length; i++) {
+                var widgetNote = widgetNotes[i];
+                if (widgetNote["ownerId"] == ownerId) {
+                    widgetNoteUi += "<div class='widgetNoteContainer' data-id='" + widgetNote["ownerId"] + "'>";
+                    widgetNoteUi += "<div class='widgetNoteTitle'><div class='widgetNoteFootnote'>" + widgetNote["fn"] + "</div>";
+                    widgetNoteUi += "<div class='widgetNoteLabel'>" + widgetNote["label"] + "</div></div>";
+
+                    for (var widgetNoteName in widgetNote) {
+                        if (widgetNoteName != "label" && widgetNoteName != "fn" && widgetNoteName != "ownerId") {
+                            widgetNoteUi += "<div class='pageNoteName'>" + widgetNoteName + "</div>";
+                            widgetNoteUi += "<div class='pageNote'>" + linkify(widgetNote[widgetNoteName]) + "</div>";
+                        }
+                    }
+                    widgetNoteUi += "</div>";
+                }
+            }
+        }
+
+        getNotesForPage(pageForNotes.widgetNotes);
+        if (pageForNotes.masterNotes) {
+            for (var i = 0; i < pageForNotes.masterNotes.length; i++) {
+                getNotesForPage(pageForNotes.masterNotes[i].widgetNotes);
+            }
+        }
+
+        widgetNoteUi += "</div>";
+        widgetNoteUi += "<div class='resizeNotesDialog'></div>";
+
+        return widgetNoteUi;
+    }
+
+    var maxZIndex = 1;
+    var dialogs = {};
+    var _toggleAnnDialog = function (id, srcLeft, srcTop, page) {
+
+        if(dialogs[id]) {
+            var $dialog = dialogs[id];
+            // reset the dialog
+            dialogs[id] = undefined;
+            $dialog.find('.notesDialogScroll').getNiceScroll().remove();
+            $dialog.remove();
+            return;
+        }
+        
+        var bufferH = 10;
+        var bufferV = 10;
+        var blnLeft = false;
+        var blnAbove = false;
+        var mfPos = $('#mainPanelContainer').position();
+        var viewablePanelLeftMargin = parseInt($('#mainPanelContainer').css('margin-left'));
+
+        var sourceTop = srcTop + mfPos.top;
+        var sourceLeft = srcLeft + viewablePanelLeftMargin;
+
+        var width = 300;
+        var height = 300;
+
+        if(sourceLeft > width + bufferH) {
+            blnLeft = true;
+        }
+        if(sourceTop > height + bufferV) {
+            blnAbove = true;
+        }
+
+        var top = 0;
+        var left = 0;
+        if(blnAbove) top = sourceTop - height - 20;
+        else top = sourceTop + 10;
+        if(blnLeft) left = sourceLeft - width - 4;
+        else left = sourceLeft - 6;
+
+        //need to set the zindex
+        maxZIndex = maxZIndex + 1;
+        
+        var $dialog = $('<div class="notesDialog"></div>')
+            .appendTo('#notesOverlay')
+            .html(getWidgetNotesHtml(id, page));     
+
+        $dialog.css({ 'left': left, 'top': top, 'z-index': maxZIndex });
+
+        $dialog.find('.notesDialogScroll').niceScroll({ cursorcolor: "#8c8c8c", cursorborder: "0px solid #fff" });
+
+        $dialog.find('.notesDialogScroll').on($axure.eventNames.mouseDownName, function(event) {
+            event.stopPropagation();
+        });
+        
+        $dialog.find('.closeNotesDialog').on($axure.eventNames.mouseDownName, function (event) {
+            event.stopPropagation();
+        });
+
+        $dialog.on($axure.eventNames.mouseDownName, startDialogMove);
+        var startMouseX;
+        var startMouseY;
+        var startDialogX;
+        var startDialogY;
+        function startDialogMove() {
+            startMouseX = window.event.pageX;
+            startMouseY = window.event.pageY;
+            var position = $dialog.position();
+            startDialogX = position.left;
+            startDialogY = position.top;
+
+            $dialog.addClass('active');
+            $('<div class="splitterMask"></div>').insertAfter($('#notesOverlay'));
+            $(document).bind($axure.eventNames.mouseMoveName, doDialogMove).bind($axure.eventNames.mouseUpName, endDialogMove);
+
+            $dialog.find('.notesDialogScroll').getNiceScroll().hide();
+        }
+
+        function doDialogMove() {
+            var currentX = window.event.pageX;
+            var currentY = window.event.pageY;
+            $dialog.css({ 'left': startDialogX + currentX - startMouseX, 'top': startDialogY + currentY - startMouseY });
+        }
+
+        function endDialogMove() {
+            $('div.splitterMask').remove();
+            $dialog.removeClass('active');
+            $(document).unbind($axure.eventNames.mouseMoveName, doDialogMove).unbind($axure.eventNames.mouseUpName, endDialogMove);
+
+            $dialog.find('.notesDialogScroll').getNiceScroll().resize();
+            $dialog.find('.notesDialogScroll').getNiceScroll().show();
+        }
+
+        $dialog.find('.resizeNotesDialog').on($axure.eventNames.mouseDownName, startDialogResize);
+
+        var startDialogW;
+        var startDialogH;
+        function startDialogResize() {
+            event.stopPropagation();
+
+            startMouseX = window.event.pageX;
+            startMouseY = window.event.pageY;
+            startDialogW = Number($dialog.css('width').replace('px',''));
+            startDialogH = Number($dialog.css('height').replace('px', ''));
+
+            $dialog.addClass('active');
+            $('<div class="splitterMask"></div>').insertAfter($('#notesOverlay'));
+            $(document).bind($axure.eventNames.mouseMoveName, doDialogResize).bind($axure.eventNames.mouseUpName, endDialogResize);
+
+            $dialog.find('.notesDialogScroll').getNiceScroll().hide();
+        }
+
+        function doDialogResize() {
+            var currentX = window.event.pageX;
+            var currentY = window.event.pageY;
+            var newWidth = Math.max(200, startDialogW + currentX - startMouseX);
+            var newHeight = Math.max(200, startDialogH + currentY - startMouseY);
+            $dialog.css({ 'width': newWidth, 'height': newHeight });
+        }
+
+        function endDialogResize() {
+            $('div.splitterMask').remove();
+            $dialog.removeClass('active');
+            $(document).unbind($axure.eventNames.mouseMoveName, doDialogResize).unbind($axure.eventNames.mouseUpName, endDialogResize);
+
+            $dialog.find('.notesDialogScroll').getNiceScroll().resize();
+            $dialog.find('.notesDialogScroll').getNiceScroll().show();
+        }
+
+        dialogs[id] = $dialog;
+
+        // scroll ... just for IE
+        //window.scrollTo(scrollX, scrollY);
+    };
+    
+    $(document).on('sidebarCollapse', function (event, data) {
+        clearSelection();
+    });
+
+    $(document).on('pluginShown', function (event, data) {
+        if(data != 2) {
+            clearSelection();
+        }
+    });
+
+    function clearSelection() {
+        var selectedNote = $('#pageNotesContainer').find('.widgetNoteContainerSelected');
+        if(selectedNote.length > 0) {
+            selectedNote.removeClass('widgetNoteContainerSelected');
+            //var dimStr = $('.currentAdaptiveView').attr('data-dim');
+            //var h = dimStr ? dimStr.split('x')[1] : '0';
+            //var $leftPanel = $('.leftPanel:visible');
+            //var leftPanelOffset = (!$axure.player.isMobileMode() && $leftPanel.length > 0) ? $leftPanel.width() : 0;
+            //var $rightPanel = $('.rightPanel:visible');
+            //var rightPanelOffset = (!$axure.player.isMobileMode() && $rightPanel.length > 0) ? $rightPanel.width() : 0;
+            //var viewDimensions = {
+            //    h: h != '0' ? h : '',
+            //    scaleVal: $('.vpScaleOption').find('.selectedRadioButton').parent().attr('val'),
+            //    scrollLeft: $('#clipFrameScroll').scrollLeft(),
+            //    scrollTop: $('#clipFrameScroll').scrollTop(),
+            //    height: $('.rightPanel').height(),
+            //    panelWidthOffset: leftPanelOffset + rightPanelOffset
+            //};
+            //$axure.messageCenter.postMessage('toggleSelectWidgetNote', { id: '', value: false, view: viewDimensions });
+            $axure.messageCenter.postMessage('toggleSelectWidgetNote', { id: '', value: false });
+            //$axure.messageCenter.postMessage('toggleSelectWidgetNote', '');
+        }
+    }
+
+    function closeAllDialogs() {
+        for (var id in dialogs) {
+            var $dialog = dialogs[id];
+            if ($dialog !== undefined) _toggleAnnDialog(id);
+        }
+    }
+
+    $axure.player.toggleFootnotes = function(val) {
+        var scaleCheckDiv = $('#showNotesOption').find('.overflowOptionCheckbox');
+        if (scaleCheckDiv.hasClass('selected')) {
+            if (!val) $('#showNotesOption').click();
+        } else {
+            if (val) $('#showNotesOption').click();
+        }
+    }
+
+    function footnotes_click(event) {
+        var scaleCheckDiv = $('#showNotesOption').find('.overflowOptionCheckbox');
+        if (scaleCheckDiv.hasClass('selected')) {
+            closeAllDialogs();
+
+            scaleCheckDiv.removeClass('selected');
+            $axure.messageCenter.postMessage('annotationToggle', false);
+            //Add 'fn' hash string var so that footnotes stay hidden across reloads
+            $axure.player.setVarInCurrentUrlHash(FOOTNOTES_VAR_NAME, 0);
+        } else {
+            scaleCheckDiv.addClass('selected');
+            $axure.messageCenter.postMessage('annotationToggle', true);
+            //Delete 'fn' hash string var if it exists since default is visible
+            $axure.player.deleteVarFromCurrentUrlHash(FOOTNOTES_VAR_NAME);
+        }
+    }
+
+    function createNotesOverlay() {
+        var $targetPanel = $('#clippingBounds');
+
+        if (!$('#notesOverlay').length) {
+            var notesOverlay = document.createElement('div');
+            notesOverlay.setAttribute('id', 'notesOverlay');
+
+            $targetPanel.prepend(notesOverlay);
+            $(notesOverlay).append('&nbsp;');
+        }
+    }
+
+    function generatePageNotes() {
+        var pageNotesUi = "<div id='pageNotesHeader'><div class='pluginNameHeader'>Widget notes</div></div>";
+        pageNotesUi += "<div id='pageNotesScrollContainer'>";
+        pageNotesUi += "<div id='pageNotesContainer'>";
+        pageNotesUi += "<div id='pageNotesEmptyState' class='emptyStateContainer'><div class='emptyStateTitle'>No notes</div><div class='emptyStateContent'>Notes added in Axure RP will appear here</div></div>";
+        pageNotesUi += "<span id='pageNotesContent'></span>";
+        pageNotesUi += "</div></div>";
+
+        $('#pageNotesHost').append(pageNotesUi);
+
+        if(!$axure.document.configuration.showAnnotations) {
+            $('#pageNotesHost .pageNameHeader').css('padding-right', '55px');
+        }
+    }
+
 })();   

+ 5 - 2
RFID/plugins/page_notes/styles/images/notes_panel_off.svg

@@ -1,3 +1,6 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="14" height="16" viewBox="0 0 14 16">
-    <path fill="#008DCB" fill-rule="evenodd" d="M1 0h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1zm1 2v12h10V2H2zm2 2h6a1 1 0 0 1 0 2H4a1 1 0 1 1 0-2zm0 3h6a1 1 0 0 1 0 2H4a1 1 0 1 1 0-2zm0 3h6a1 1 0 0 1 0 2H4a1 1 0 0 1 0-2z"/>
+<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
+    <path d="M11.6667 1H2.33333C1.59695 1 1 1.59695 1 2.33333V11.6667C1 12.403 1.59695 13 2.33333 13H11.6667C12.403 13 13 12.403 13 11.6667V2.33333C13 1.59695 12.403 1 11.6667 1Z" stroke="#2563EB" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M3.66663 4.3335H10.3333" stroke="#2563EB" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M3.66663 7H10.3333" stroke="#2563EB" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M3.66663 9.6665H10.3333" stroke="#2563EB" stroke-linecap="round" stroke-linejoin="round"/>
 </svg>

+ 5 - 2
RFID/plugins/page_notes/styles/images/notes_panel_on.svg

@@ -1,3 +1,6 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="14" height="16" viewBox="0 0 14 16">
-    <path fill="#6D6D6D" fill-rule="evenodd" d="M1 0h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1zm1 2v12h10V2H2zm2 2h6a1 1 0 0 1 0 2H4a1 1 0 1 1 0-2zm0 3h6a1 1 0 0 1 0 2H4a1 1 0 1 1 0-2zm0 3h6a1 1 0 0 1 0 2H4a1 1 0 0 1 0-2z"/>
+<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
+    <path d="M11.6667 1H2.33333C1.59695 1 1 1.59695 1 2.33333V11.6667C1 12.403 1.59695 13 2.33333 13H11.6667C12.403 13 13 12.403 13 11.6667V2.33333C13 1.59695 12.403 1 11.6667 1Z" stroke="#1E293B" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M3.66675 4.3335H10.3334" stroke="#1E293B" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M3.66675 7H10.3334" stroke="#1E293B" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M3.66675 9.6665H10.3334" stroke="#1E293B" stroke-linecap="round" stroke-linejoin="round"/>
 </svg>

+ 231 - 208
RFID/plugins/page_notes/styles/page_notes.css

@@ -1,209 +1,232 @@
-#pageNotesHost {
-    display: flex;
-    flex-direction: column;
-    height: 100%;
-}
-
-#pageNotesHostBtn {
-    order: 2;
-}
-
-#pageNotesHostBtn a {
-    background: url('images/notes_panel_on.svg') no-repeat center center,linear-gradient(transparent, transparent);
-}
-
-#pageNotesHostBtn a.selected, #pageNotesHostBtn a.selected:hover {
-    background: url('images/notes_panel_off.svg') no-repeat center center,linear-gradient(transparent, transparent);
-}
-
-#pageNotesScrollContainer {
-    overflow: auto;
-    width: 100%;
-    flex: 1;
-    -webkit-overflow-scrolling: touch;
-}    
-
-#pageNotesContent {
-	overflow: visible;
-}
-
-.pageNoteContainer {
-    padding: 0px 12px 8px 12px;
-}
-
-.mobileMode .pageNoteContainer {
-    padding: 0px 16px 8px 17px;
-}
-
-.pageNoteName {
-    font-size: 13px;
-    font-weight: bold;
-    color: #2c2c2c;
-    margin: 15px 0px 5px 0px;
-    white-space: nowrap;
-}
-
-.pageNote {
-    font-size: 13px;
-    color: #2a2e38;
-    line-height: 1.67;
-    word-wrap: break-word;
-}
-
-.pageNote ul {
-    list-style: disc;
-    padding: 0px 0px 0px 40px;
-}
-
-.pageNote ul ul{
-    list-style: circle;
-}
-
-.pageNote ul ul ul{
-    list-style: square;
-}
-
-.pageNote ul ul ul ul {
-    list-style: disc;
-}
-
-.pageNote ul ul ul ul ul {
-    list-style: circle;
-}
-
-.pageNote ul ul ul ul ul ul {
-    list-style: square;
-}
-
-.widgetNoteContainer {
-    padding: 12px;
-    border-bottom: 1px solid transparent;
-    border-top: 1px solid transparent;
-    cursor: pointer;
-}
-
-.mobileMode .widgetNoteContainer {
-    padding: 12px 16px 12px 17px;
-}
-
-.widgetNoteContainerSelected {
-    background-color: white;
-    border-bottom: 1px solid #c2c2c2;
-    border-top: 1px solid #c2c2c2;
-}
-
-.widgetNoteFootnote {
-    display: inline-block;
-    padding-top: 1px;
-    background-color: #fff849;
-    font-size: 11px;
-    font-weight: bold;
-    line-height: 16px;
-    margin-right: 8px;
-    padding: 0px 5px;
-    color: #000;
-}
-
-div.annnoteline {
-    display: inline-block;
-    width: 9px;
-    height: 1px;
-    border-bottom: 1px solid white;
-    margin-top: 1px;
-}
-
-.widgetNoteLabel {
-    font-size: 13px;
-    font-weight: 600;
-    color: #58167d;
-    margin-top: 4px;
-    float: right;
-}
-
-.noteLink {
-    text-decoration: inherit;
-    color: inherit;
-}
-
-.noteLink:hover {
-    background-color: white;
-}
-
-.notesSectionHeader {
-    margin: 0px 8px 0px 12px;
-}
-
-.notesPageNameHeader {
-    margin: 8px 8px 15px 12px;
-}
-
-.mobileMode .notesPageNameHeader {
-    margin: 18px 14px 5px 16px;
-}
-
-#notesOverlay {
-    width: 0;
-    height: 0;
-    position: absolute;
-    overflow: visible;
-    z-index: 1;
-}
-
-div.closeNotesDialog {
-    position: absolute;
-    top: 6px;
-    right: 6px;
-    width: 11px;
-    height: 10px;
-    object-fit: contain;
-    background: url(../../../resources/images/close_x.svg) no-repeat center center, linear-gradient(transparent, transparent);
-    margin-left: auto;
-    cursor: pointer;
-}
-
-div.resizeNotesDialog {
-    position: absolute;
-    bottom: 2px;
-    right: 2px;
-    width: 11px;
-    height: 10px;
-    object-fit: contain;
-    background: url(../../../resources/images/resize.svg) no-repeat center center, linear-gradient(transparent, transparent);
-    margin-left: auto;
-    cursor: nwse-resize;
-}
-
-div.notesDialog {
-    position: absolute;
-    padding: 16px 3px 10px 3px;
-    background-color: #efefef;
-    width: 300px;
-    height: 300px;
-    line-height: normal;
-    border: #8F949A solid 1px;
-    box-shadow: 2px 2px 4px 0 rgba(0, 0, 0, 0.4);
-    cursor: move;
-    display: flex;
-    flex-direction: column;
-    box-sizing: border-box;
-}
-
-div.notesDialog.active {
-    user-select: none;
-}
-
-div.notesDialog .widgetNoteContainer {
-    cursor: auto;
-    padding: 2px 26px 16px 14px;
-}
-
-div.notesDialogScroll {
-    overflow-x: hidden;
-    overflow-y: auto;
-    height: 100%;
-    cursor: auto;
-}
-
-.mobileMode .pageNoteName, .mobileMode #pageNotesToolbar, .mobileMode .dottedDivider {
-    display: none;
+#pageNotesHost {
+    display: flex;
+    flex-direction: column;
+    height: 100%;
+}
+
+#pageNotesHostBtn {
+    order: 2;
+}
+
+#pageNotesHostBtn a {
+    background: url('images/notes_panel_on.svg') no-repeat center center,linear-gradient(transparent, transparent);
+}
+
+#pageNotesHostBtn a.selected, #pageNotesHostBtn a.selected:hover {
+    background: url('images/notes_panel_off.svg') no-repeat center center,linear-gradient(transparent, transparent);
+}
+
+#pageNotesScrollContainer {
+    overflow: auto;
+    width: 100%;
+    flex: 1;
+    -webkit-overflow-scrolling: touch;
+}    
+
+#pageNotesContent {
+	overflow: visible;
+}
+
+#pageNotesHeader {
+    padding: 20px 15px;
+}
+
+.pageNoteContainer {
+    padding: 0px 15px 8px 15px;
+}
+
+.mobileMode .pageNoteContainer {
+    padding: 0px 16px 8px 17px;
+}
+
+.pageNoteName {
+    font-size: 13px;
+    font-weight: bold;
+    /*color: #2c2c2c;*/
+    margin: 15px 0px 5px 0px;
+    white-space: nowrap;
+}
+
+.pageNote {
+    font-size: 13px;
+    color: #081222;
+    line-height: 1.67;
+    word-wrap: break-word;
+}
+
+.pageNote ul {
+    list-style: disc;
+    padding: 0px 0px 0px 40px;
+}
+
+.pageNote ul ul{
+    list-style: circle;
+}
+
+.pageNote ul ul ul{
+    list-style: square;
+}
+
+.pageNote ul ul ul ul {
+    list-style: disc;
+}
+
+.pageNote ul ul ul ul ul {
+    list-style: circle;
+}
+
+.pageNote ul ul ul ul ul ul {
+    list-style: square;
+}
+
+.widgetNoteContainer {
+    padding: 15px;
+    border: 2px solid transparent;
+    margin-left: .5px;
+    border-radius: 4px;
+    cursor: pointer;
+    color: #64748B;
+}
+
+.widgetNoteTitle {
+    display: flex;
+    justify-content: space-between;
+    align-items: flex-start;
+}
+
+.widgetNoteContainer:hover {
+    background-color: #f7f8fb;
+}
+
+.notesDialog .widgetNoteContainer:hover {
+    background-color: transparent;
+}
+
+.mobileMode .widgetNoteContainer {
+    padding: 12px 16px 12px 17px;
+}
+
+.widgetNoteContainerSelected {
+    background-color: white;
+    border: 2px solid #2563eb;
+    color: #1E293B;
+}
+
+.widgetNoteContainerSelected:hover {
+    background-color: white;
+}
+
+.widgetNoteFootnote {
+    display: inline-block;
+    padding-top: 1px;
+    background-color: #fff849;
+    font-size: 11px;
+    font-weight: bold;
+    line-height: 16px;
+    margin-right: 8px;
+    padding: 0px 5px;
+    color: #000;
+}
+
+div.annnoteline {
+    display: inline-block;
+    width: 9px;
+    height: 1px;
+    border-bottom: 1px solid white;
+    margin-top: 1px;
+}
+
+.widgetNoteLabel {
+    font-size: 14px;
+    margin-top: 4px;
+    word-break: break-word;
+    text-align: right;
+}
+
+.noteLink {
+    text-decoration: inherit;
+    color: inherit;
+}
+
+.noteLink:hover {
+    background-color: white;
+}
+
+.notesSectionHeader {
+    margin: 0px 15px 4px 15px;
+}
+
+.notesPageNameHeader {
+    margin: 8px 15px 15px 15px;
+}
+
+.mobileMode .notesPageNameHeader {
+    margin: 18px 14px 5px 16px;
+}
+
+#notesOverlay {
+    width: 0;
+    height: 0;
+    position: absolute;
+    overflow: visible;
+    z-index: 1;
+}
+
+div.closeNotesDialog {
+    position: absolute;
+    top: 6px;
+    right: 6px;
+    width: 11px;
+    height: 10px;
+    object-fit: contain;
+    background: url(../../../resources/images/close_x.svg) no-repeat center center, linear-gradient(transparent, transparent);
+    margin-left: auto;
+    cursor: pointer;
+}
+
+div.resizeNotesDialog {
+    position: absolute;
+    bottom: 2px;
+    right: 2px;
+    width: 11px;
+    height: 10px;
+    object-fit: contain;
+    background: url(../../../resources/images/resize.svg) no-repeat center center, linear-gradient(transparent, transparent);
+    margin-left: auto;
+    cursor: nwse-resize;
+}
+
+div.notesDialog {
+    position: absolute;
+    padding: 16px 3px 10px 3px;
+    background-color: #FCFDFF;
+    width: 300px;
+    height: 300px;
+    line-height: normal;
+    border: #8F949A solid 1px;
+    box-shadow: 2px 2px 4px 0 rgba(0, 0, 0, 0.4);
+    cursor: move;
+    display: flex;
+    flex-direction: column;
+    box-sizing: border-box;
+}
+
+div.notesDialog.active {
+    user-select: none;
+}
+
+div.notesDialog .widgetNoteContainer {
+    cursor: auto;
+    padding: 2px 26px 16px 14px;
+}
+
+div.notesDialogScroll {
+    overflow-x: hidden;
+    overflow-y: auto;
+    height: 100%;
+    cursor: auto;
+}
+
+.mobileMode .pageNoteName, .mobileMode #pageNotesToolbar, .mobileMode .dottedDivider {
+    display: none;
 }

+ 478 - 478
RFID/plugins/recordplay/recordplay.js

@@ -1,479 +1,479 @@
-// use this to isolate the scope
-(function() {
-
-        if(!$axure.document.configuration.showRecordPlay) { return; }
-
-    $(window.document).ready(function() {
-        $axure.player.createPluginHost({
-            id: 'recordPlayHost',
-            context: 'interface',
-            title: 'Recording'
-        });
-        _generateRecordPlay();
-
-        $('#recordButton').click(_recordClick);
-        $('#playButton').click(_playClick);
-        $('#stopButton').click(_stopClick);
-        $('#deleteButton').click(_deleteClick);
-
-        // bind to the page load
-
-        $axure.page.bind('load.page_notes', function() {
-            
-            $.ajax({
-                type: "POST",
-                url: '/RecordController/ListRecordings',
-                success: function(response) {
-
-                    $('#recordNameHeader').html("");
-                    $('#recordPlayContent').html("");
-                    //populate the notes 
-                    
-                    axRecordingList = [];
-
-                    if(!eventList) {
-                        recordingIndex = 0;
-                        eventList = [];
-                        recordingStartTime = 0;
-                        bulkEventElement = "";
-                        lastBulkEvent = {};
-                    }
-
-                    for(var idx in response.recordingList) {
-                        getOneRecording(response.recordingList[idx]);
-                    }
-
-                    return false;
-                },
-                //                dataType: 'json'
-            });
-        });
-    });
-    
-    var nameMatcher = new RegExp("^axRecording[0-9]{4}$", "i");
-    var indexMatcher = new RegExp("[0-9]{4}$", "i");
-
-    var convertFromJson = function(oneRecording) {
-        
-        if(nameMatcher.exec(oneRecording.recordingName)) {
-            var myArray = indexMatcher.exec(oneRecording.recordingName);
-            var currIdx = parseInt(myArray);
-            if(recordingIndex < currIdx) {
-                recordingIndex = currIdx;
-            }
-        }
-        
-
-        for(var idx in oneRecording.eventList) {
-            var thisEvent = oneRecording.eventList[idx];
-                thisEvent.eventInfo = {};
-                            thisEvent.eventInfo.srcElement = thisEvent.elementID;
-                // TODO: check that this is correct.
-
-            if(isBulkMouse(thisEvent.eventType)) {
-                thisEvent.eventInfo.mousePositions = [];
-                thisEvent.eventInfo.mousePositions = thisEvent.mousePositions;
-                thisEvent.timeStamp = thisEvent.mousePositions[0].timeStamp;
-            }
-            if(isSingleMouse(thisEvent.eventType)) {
-                thisEvent.eventInfo.cursor = {};
-                thisEvent.eventInfo.cursor = thisEvent.cursor;
-                
-            }
-            if(thisEvent.eventType === 'OnDrag') {
-                thisEvent.eventInfo.dragInfo = {};
-                thisEvent.eventInfo.dragInfo = thisEvent.dragInfo;
-                thisEvent.timeStamp = thisEvent.dragInfo.startTime;
-            }
-
-        }
-        return oneRecording;
-    };
-
-    var getOneRecording = function(recordingItem) {
-        $.ajax({
-                type: "POST",
-                url: '/RecordController/GetRecording',
-                data: { 'recordingId': recordingItem.recordingId },
-            success: function(response) {
-                        axRecordingList[axRecordingList.length] = convertFromJson(response);
-                        var axRecordingContainer = $('#recordingContainer').find('li').filter('.recordingRootNode');
-                        axRecordingContainer.append(_formAxRecordingBranch(response));
-                        _attachEventTriggers(response);     
-            },                //                dataType: 'json'
-        });
-
-    };
-    
-    var axRecordingList;
-    var eventList;
-    var recordingIndex;
-    var recordingStartTime;
-    var recordingId;
-    var recordingName;
-
-
-    var leadingZeros = function(number, digits) { // because this thing doesn't have string.format (or does it?)
-        var recurseLeadingZeros = function(number, digitsLeft) {
-            if(digitsLeft > 0) {
-                return recurseLeadingZeros("0" + number, digitsLeft - 1);
-            } else {
-                return number;
-            }
-        };
-        return recurseLeadingZeros(number, digits - String(number).length);
-    };
-    
-
-    var generateRecordingName = function() {
-        return "axRecording" + leadingZeros(recordingIndex, 4);
-    };
-
-    var isSingleMouse = function(eventType) {
-        return (eventType === 'OnClick' ||
-            eventType === 'OnMouseUp' ||
-            eventType === 'OnMouseDown' ||
-            eventType === 'OnMouseOver' ||
-            eventType === 'OnKeyUp' ||
-            eventType === 'OnSelectedChange' ||
-            eventType === 'OnSelect' ||
-            eventType === 'OnUnselect' ||
-            eventType === 'OnTextChange' ||
-            eventType === 'OnMouseOut');
-    };
-
-    var isBulkMouse = function(eventType) {
-        return (eventType === 'OnMouseHover' ||
-            eventType === 'OnMouseMove');
-    };
-
-    var bulkEventElement;
-    var lastBulkEvent;
-
-
-    $axure.messageCenter.addMessageListener(function(message, eventData) {
-        var lastEvent, lastBulkData;
-        
-        if(message === 'logEvent') {
-            
-            if(bulkEventElement !== eventData.elementID) {
-                lastBulkEvent = {};
-                bulkEventElement = eventData.elementID;
-            }
-            
-            if(isBulkMouse(eventData.eventType)) {
-                lastEvent = lastBulkEvent[eventData.eventType];
-
-                if(lastEvent) {
-                    // this is the second or third or whatever onmousemove in a row
-                    lastBulkData = lastEvent.eventInfo.mousePositions;
-                    lastBulkData[lastBulkData.length] = {
-                        cursor: eventData.eventInfo.cursor,
-                        timeStamp: eventData.timeStamp
-                    };
-                } else {
-
-                    eventData.eventInfo.mousePositions = [];
-                    eventData.eventInfo.mousePositions[0] = {
-                        cursor: eventData.eventInfo.cursor,
-                        timeStamp: eventData.timeStamp
-                    };
-                    eventList[eventList.length] = eventData;
-                    lastBulkEvent[eventData.eventType] = eventData;
-                }
-            } else {
-                var z = true;
-            }
-            
-            if(isSingleMouse(eventData.eventType) ) {
-                eventList[eventList.length] = eventData;
-                lastBulkEvent = {};
-                bulkEventElement = eventData.elementID;
-            }
-
-            if(eventData.eventType === 'OnDrag') {
-
-                lastEvent = lastBulkEvent[eventData.eventType];
-                
-                if (lastEvent) {
-                    // this is the second or third or whatever onmousemove in a row
-                    lastBulkData = lastEvent.eventInfo.mousePositions;
-                    lastBulkData[lastBulkData.length] = {
-                        dragInfo: eventData.eventInfo.dragInfo,
-                        timeStamp: eventData.timeStamp
-                    };
-                } else {
-                    eventData.eventInfo.mousePositions = [];
-                    eventData.eventInfo.mousePositions[0] = {
-                        dragInfo: eventData.eventInfo.dragInfo,
-                        timeStamp: eventData.timeStamp
-                    };
-                    eventList[eventList.length] = eventData;
-                    lastBulkEvent[eventData.eventType] = eventData;
-                }
-            }
-//            if(eventData.eventType === 'OnKeyUp') {
-//                transmissionFields.eventInfo = eventData.eventInfo;
-//                $.ajax({
-//                    type: "POST",
-//                    url: '/RecordController/LogMouseClick',
-//                    data: transmissionFields,
-//                });
-//            }            
-        }
-
-    });
-    
-    
-    var _recordClick = function(event) {
-        $('#recordButton').addClass('recordPlayButtonSelected');
-        recordingIndex++;
-        //        $axure.recording.startRecord();
-
-        recordingStartTime = new Date().getTime();
-
-        $.ajax({
-            type: "POST",
-            url: '/RecordController/CreateRecording',
-            data: {
-                'recordingName': generateRecordingName(),
-                timeStamp: recordingStartTime
-            },
-            success: function(response) {
-                recordingId = response.recordingId;
-                recordingName = response.recordingName;
-        $axure.messageCenter.postMessage('startRecording', {'recordingId' : recordingId, 'recordingName': recordingName});
-            },
-            //                dataType: 'json'
-        });
-        
-    };
-
-    var _playClick = function(event) {
-        $('#playButton').addClass('recordPlayButtonSelected');
-    };
-
-    var _stopClick = function(event) {
-        var axRecording, axObjectDictionary, axRecordingContainer, transmissionFields;
-        $('#sitemapLinksContainer').toggle();
-        if($('#recordButton').is('.recordPlayButtonSelected')) {
-            $('#recordButton').removeClass('recordPlayButtonSelected');
-            //            $axure.recording.stopRecord();
-
-            axRecording = {
-                'recordingId' : recordingId,
-                'recordingName': recordingName,
-                'eventList': eventList
-            };
-            
-            axRecordingList[axRecordingList.length] = axRecording;
-            axRecordingContainer = $('#recordingContainer').find('li').filter('.recordingRootNode');
-            axRecordingContainer.append(_formAxRecordingBranch(axRecording));
-            _attachEventTriggers(axRecording);
-
-            lastBulkEvent = {};
-
-            var recordingStepList = [];
-
-            for(var eventListIdx in eventList) {
-                var eventListItem = eventList[eventListIdx];
-
-                if(eventListItem.eventType === 'OnDrag') {
-                    var lastDrag = eventListItem.eventInfo.mousePositions[eventListItem.eventInfo.mousePositions.length - 1].dragInfo;
-                    eventListItem.eventInfo.dragInfo.currentX = lastDrag.currentX;
-                    eventListItem.eventInfo.dragInfo.currentY = lastDrag.currentY;
-                    eventListItem.eventInfo.dragInfo.currentTime = lastDrag.currentTime;
-                    eventListItem.eventInfo.dragInfo.xDelta = eventListItem.eventInfo.dragInfo.currentX - eventListItem.eventInfo.dragInfo.lastX;
-                    eventListItem.eventInfo.dragInfo.yDelta = eventListItem.eventInfo.dragInfo.currentY - eventListItem.eventInfo.dragInfo.lastY;
-                    transmissionFields = {};
-                    transmissionFields = tackItOn(transmissionFields, eventListItem, ['eventType', 'elementID', 'path']);
-                    transmissionFields = tackItOn(transmissionFields, eventListItem.eventInfo, ['dragInfo']);
-                    transmissionFields.recordingId = recordingId;
-                }
-
-                if(isSingleMouse(eventListItem.eventType)) {
-                    transmissionFields = {};
-                    transmissionFields = tackItOn(transmissionFields, eventListItem, ['timeStamp', 'eventType', 'elementID', 'path']);
-                    transmissionFields = tackItOn(transmissionFields, eventListItem.eventInfo, ['cursor']);
-                    transmissionFields.recordingId = recordingId;
-                }
-
-                if(isBulkMouse(eventListItem.eventType)) {
-                    transmissionFields = {};
-                    transmissionFields = tackItOn(transmissionFields, eventListItem, ['eventType', 'elementID', 'path']);
-                    transmissionFields = tackItOn(transmissionFields, eventListItem.eventInfo, ['mousePositions']);
-                    transmissionFields.recordingId = recordingId;
-                }
-                recordingStepList[recordingStepList.length] = transmissionFields;
-            }
-
-            eventList = [];
-            $axure.messageCenter.postMessage('stopRecording', axObjectDictionary);
-
-            var jsonText = {
-                'recordingName': recordingName,
-                'recordingId': recordingId,
-                recordingStart: new Date().getTime(),
-                recordingEnd: recordingStartTime,
-                'eventList': recordingStepList
-            };
-
-            $.ajax({
-                type: "POST",
-                url: '/RecordController/StopRecording',
-                data: { 'jsonText': JSON.stringify(jsonText) }
-                
-            });
-
-        }
-
-        if($('#playButton').is('.recordPlayButtonSelected')) {
-            $('#playButton').removeClass('recordPlayButtonSelected');
-        }
-    };
-    
-    var _deleteClick = function(event) {
-        $.ajax({
-                type: "POST",
-                url: '/RecordController/DeleteRecordings',
-            success: function(response) {
-                var x = true;
-            },                //                dataType: 'json'
-        });
-    };
-
-    var tackItOn = function(destination, source, fields) {
-
-        for(var idx in fields) {
-            destination[fields[idx]] = source[fields[idx]];
-        }
-        return destination;
-    };
-
-    var makeFirstLetterLower = function(eventName) {
-        return eventName.substr(0, 1).toLowerCase() + eventName.substr(1);
-    };
-
-    var _attachEventTriggers = function(axRecording) {
-        for(var eventIdx in axRecording.eventList) {
-            var eventObject = axRecording.eventList[eventIdx];
-            var eventID = axRecording['recordingId'] + '_' + eventObject.timeStamp;
-            currentEvent = eventID;
-            $('#' + eventID).click(_triggerEvent(axRecording['recordingId'], eventObject.timeStamp));
-            //            $('#' + eventID).click(event.trigger);
-        }
-    };
-
-    var _formAxRecordingBranch = function(axRecording) {
-        var eventObject, eventID, RDOID;
-        var recordPlayUi = '<ul class="recordingTree">';
-        recordPlayUi += "<li class='recordingNode recordingExpandableNode'>";
-        recordPlayUi += '<div class="recordingContainer" style="margin-left:15px">';
-        recordPlayUi += '<a class="recordingPlusMinusLink"><span class="recordingMinus"></span></a>';
-        recordPlayUi += '<a class="recordingPageLink" nodeurl="home.html">';
-        recordPlayUi += '<span class="recordingPageIcon"></span>';
-        recordPlayUi += '<span class="recordingPageName">' + axRecording['recordingName'] + '</span>';
-        recordPlayUi += '</a>';
-
-        recordPlayUi += '<ul>';
-
-        for(eventID in axRecording.eventList) {
-
-            eventObject = axRecording.eventList[eventID];
-
-            recordPlayUi += '<li class="recordingNode recordingLeafNode">';
-            recordPlayUi += '<div class="recordingEventContainer" style="margin-left:44px">';
-            var eventID = axRecording['recordingId'] + '_' + eventObject.timeStamp;
-            recordPlayUi += '<a id="' + eventID + '" class="sitemapPageLink">';
-            recordPlayUi += 'Event ID: ' + eventID + '<br/>';
-
-            recordPlayUi += '<span class="sitemapPageIcon"></span>';
-            recordPlayUi += '<span class="sitemapPageName">';
-
-            recordPlayUi += 'elementID: ' + eventObject.elementID + '<br/>';
-            recordPlayUi += 'eventType: ' + eventObject.eventType + '<br/>';
-//            recordPlayUi += 'cursor: ' + eventObject.eventInfo.cursor.x + ',' + eventObject.eventInfo.cursor.y + '<br/>';
-
-            for(RDOID in eventObject.path) {
-                recordPlayUi += '/' + eventObject.path[RDOID];
-            }
-            recordPlayUi += '<br/>';
-            recordPlayUi += '</span>';
-            recordPlayUi += '</a>';
-            recordPlayUi += '</div>';
-            recordPlayUi += '</li>';
-        }
-
-        recordPlayUi += '</ul>';
-
-        recordPlayUi += '</div>';
-
-        recordPlayUi += "</li>";
-        recordPlayUi += "</ul>";
-
-        return recordPlayUi;
-    };
-
-    var currentEvent = '';
-
-    var _triggerEvent = function(axRecording, timeStamp) {
-        //            $axure.messageCenter.postMessage('triggerEvent', false);
-
-
-        for(var axRecordingIdx in axRecordingList) {
-            if(axRecordingList[axRecordingIdx].recordingId === axRecording) {
-                for(var eventIdx in axRecordingList[axRecordingIdx].eventList) {
-                    if(axRecordingList[axRecordingIdx].eventList[eventIdx].timeStamp === timeStamp) {
-
-                        var thisEvent = axRecordingList[axRecordingIdx].eventList[eventIdx];
-                        //                            thisEvent.trigger();
-
-                        var thisEventInfo, lowerEventType;
-                        lowerEventType = thisEvent.eventType.toLowerCase();
-                        if(lowerEventType === 'onclick' || lowerEventType === 'onmousein') {
-                            thisEventInfo = {};
-                            thisEventInfo = tackItOn(thisEventInfo, thisEvent.eventInfo, ['cursor', 'timeStamp', 'srcElement']);
-                            if(thisEvent.eventInfo.inputType) {
-                                thisEventInfo = tackItOn(thisEventInfo, thisEvent.eventInfo, ['inputType', 'inputValue']);
-                            }
-                        } else {
-                            thisEventInfo = thisEvent.eventInfo;
-                        }
-
-                        var thisParameters = {
-                            'element': thisEvent.elementID,
-                            'eventInfo': thisEventInfo,
-                            //                            'axEventObject': thisEvent.eventObject,
-                            'eventType': thisEvent.eventType
-                        };
-
-                        return function() {
-                            $axure.messageCenter.postMessage('playEvent', thisParameters);
-                        };
-
-                    }
-                }
-            }
-        }
-    };
-
-    var _generateRecordPlay = function() {
-        var recordPlayUi = "<div id='recordPlayContainer'>";
-
-        recordPlayUi += "<div id='recordPlayToolbar'>";
-
-        recordPlayUi += "<div style='height:30px;'>";
-
-        recordPlayUi += "<a id='recordButton' title='Start a Recording' class='recordPlayButton'></a>";
-        recordPlayUi += "<a id='playButton' title='Play Back a Recording' class='recordPlayButton'></a>";
-        recordPlayUi += "<a id='stopButton' title='Stop' class='recordPlayButton'></a>";
-        recordPlayUi += "<a id='deleteButton' title='Delete All Recordings' class='recordPlayButton'></a>";
-        recordPlayUi += "</div>";
-
-        recordPlayUi += "<div id='recordingContainer'><li class='recordingNode recordingRootNode'></li></div>";
-        recordPlayUi += "</div>";
-
-        $('#recordPlayHost').html(recordPlayUi);
-    };
-
+// use this to isolate the scope
+(function() {
+
+        if(!$axure.document.configuration.showRecordPlay) { return; }
+
+    $(window.document).ready(function() {
+        $axure.player.createPluginHost({
+            id: 'recordPlayHost',
+            context: 'interface',
+            title: 'Recording'
+        });
+        _generateRecordPlay();
+
+        $('#recordButton').click(_recordClick);
+        $('#playButton').click(_playClick);
+        $('#stopButton').click(_stopClick);
+        $('#deleteButton').click(_deleteClick);
+
+        // bind to the page load
+
+        $axure.page.bind('load.page_notes', function() {
+            
+            $.ajax({
+                type: "POST",
+                url: '/RecordController/ListRecordings',
+                success: function(response) {
+
+                    $('#recordNameHeader').html("");
+                    $('#recordPlayContent').html("");
+                    //populate the notes 
+                    
+                    axRecordingList = [];
+
+                    if(!eventList) {
+                        recordingIndex = 0;
+                        eventList = [];
+                        recordingStartTime = 0;
+                        bulkEventElement = "";
+                        lastBulkEvent = {};
+                    }
+
+                    for(var idx in response.recordingList) {
+                        getOneRecording(response.recordingList[idx]);
+                    }
+
+                    return false;
+                },
+                //                dataType: 'json'
+            });
+        });
+    });
+    
+    var nameMatcher = new RegExp("^axRecording[0-9]{4}$", "i");
+    var indexMatcher = new RegExp("[0-9]{4}$", "i");
+
+    var convertFromJson = function(oneRecording) {
+        
+        if(nameMatcher.exec(oneRecording.recordingName)) {
+            var myArray = indexMatcher.exec(oneRecording.recordingName);
+            var currIdx = parseInt(myArray);
+            if(recordingIndex < currIdx) {
+                recordingIndex = currIdx;
+            }
+        }
+        
+
+        for(var idx in oneRecording.eventList) {
+            var thisEvent = oneRecording.eventList[idx];
+                thisEvent.eventInfo = {};
+                            thisEvent.eventInfo.srcElement = thisEvent.elementID;
+                // TODO: check that this is correct.
+
+            if(isBulkMouse(thisEvent.eventType)) {
+                thisEvent.eventInfo.mousePositions = [];
+                thisEvent.eventInfo.mousePositions = thisEvent.mousePositions;
+                thisEvent.timeStamp = thisEvent.mousePositions[0].timeStamp;
+            }
+            if(isSingleMouse(thisEvent.eventType)) {
+                thisEvent.eventInfo.cursor = {};
+                thisEvent.eventInfo.cursor = thisEvent.cursor;
+                
+            }
+            if(thisEvent.eventType === 'OnDrag') {
+                thisEvent.eventInfo.dragInfo = {};
+                thisEvent.eventInfo.dragInfo = thisEvent.dragInfo;
+                thisEvent.timeStamp = thisEvent.dragInfo.startTime;
+            }
+
+        }
+        return oneRecording;
+    };
+
+    var getOneRecording = function(recordingItem) {
+        $.ajax({
+                type: "POST",
+                url: '/RecordController/GetRecording',
+                data: { 'recordingId': recordingItem.recordingId },
+            success: function(response) {
+                        axRecordingList[axRecordingList.length] = convertFromJson(response);
+                        var axRecordingContainer = $('#recordingContainer').find('li').filter('.recordingRootNode');
+                        axRecordingContainer.append(_formAxRecordingBranch(response));
+                        _attachEventTriggers(response);     
+            },                //                dataType: 'json'
+        });
+
+    };
+    
+    var axRecordingList;
+    var eventList;
+    var recordingIndex;
+    var recordingStartTime;
+    var recordingId;
+    var recordingName;
+
+
+    var leadingZeros = function(number, digits) { // because this thing doesn't have string.format (or does it?)
+        var recurseLeadingZeros = function(number, digitsLeft) {
+            if(digitsLeft > 0) {
+                return recurseLeadingZeros("0" + number, digitsLeft - 1);
+            } else {
+                return number;
+            }
+        };
+        return recurseLeadingZeros(number, digits - String(number).length);
+    };
+    
+
+    var generateRecordingName = function() {
+        return "axRecording" + leadingZeros(recordingIndex, 4);
+    };
+
+    var isSingleMouse = function(eventType) {
+        return (eventType === 'OnClick' ||
+            eventType === 'OnMouseUp' ||
+            eventType === 'OnMouseDown' ||
+            eventType === 'OnMouseOver' ||
+            eventType === 'OnKeyUp' ||
+            eventType === 'OnSelectedChange' ||
+            eventType === 'OnSelect' ||
+            eventType === 'OnUnselect' ||
+            eventType === 'OnTextChange' ||
+            eventType === 'OnMouseOut');
+    };
+
+    var isBulkMouse = function(eventType) {
+        return (eventType === 'OnMouseHover' ||
+            eventType === 'OnMouseMove');
+    };
+
+    var bulkEventElement;
+    var lastBulkEvent;
+
+
+    $axure.messageCenter.addMessageListener(function(message, eventData) {
+        var lastEvent, lastBulkData;
+        
+        if(message === 'logEvent') {
+            
+            if(bulkEventElement !== eventData.elementID) {
+                lastBulkEvent = {};
+                bulkEventElement = eventData.elementID;
+            }
+            
+            if(isBulkMouse(eventData.eventType)) {
+                lastEvent = lastBulkEvent[eventData.eventType];
+
+                if(lastEvent) {
+                    // this is the second or third or whatever onmousemove in a row
+                    lastBulkData = lastEvent.eventInfo.mousePositions;
+                    lastBulkData[lastBulkData.length] = {
+                        cursor: eventData.eventInfo.cursor,
+                        timeStamp: eventData.timeStamp
+                    };
+                } else {
+
+                    eventData.eventInfo.mousePositions = [];
+                    eventData.eventInfo.mousePositions[0] = {
+                        cursor: eventData.eventInfo.cursor,
+                        timeStamp: eventData.timeStamp
+                    };
+                    eventList[eventList.length] = eventData;
+                    lastBulkEvent[eventData.eventType] = eventData;
+                }
+            } else {
+                var z = true;
+            }
+            
+            if(isSingleMouse(eventData.eventType) ) {
+                eventList[eventList.length] = eventData;
+                lastBulkEvent = {};
+                bulkEventElement = eventData.elementID;
+            }
+
+            if(eventData.eventType === 'OnDrag') {
+
+                lastEvent = lastBulkEvent[eventData.eventType];
+                
+                if (lastEvent) {
+                    // this is the second or third or whatever onmousemove in a row
+                    lastBulkData = lastEvent.eventInfo.mousePositions;
+                    lastBulkData[lastBulkData.length] = {
+                        dragInfo: eventData.eventInfo.dragInfo,
+                        timeStamp: eventData.timeStamp
+                    };
+                } else {
+                    eventData.eventInfo.mousePositions = [];
+                    eventData.eventInfo.mousePositions[0] = {
+                        dragInfo: eventData.eventInfo.dragInfo,
+                        timeStamp: eventData.timeStamp
+                    };
+                    eventList[eventList.length] = eventData;
+                    lastBulkEvent[eventData.eventType] = eventData;
+                }
+            }
+//            if(eventData.eventType === 'OnKeyUp') {
+//                transmissionFields.eventInfo = eventData.eventInfo;
+//                $.ajax({
+//                    type: "POST",
+//                    url: '/RecordController/LogMouseClick',
+//                    data: transmissionFields,
+//                });
+//            }            
+        }
+
+    });
+    
+    
+    var _recordClick = function(event) {
+        $('#recordButton').addClass('recordPlayButtonSelected');
+        recordingIndex++;
+        //        $axure.recording.startRecord();
+
+        recordingStartTime = new Date().getTime();
+
+        $.ajax({
+            type: "POST",
+            url: '/RecordController/CreateRecording',
+            data: {
+                'recordingName': generateRecordingName(),
+                timeStamp: recordingStartTime
+            },
+            success: function(response) {
+                recordingId = response.recordingId;
+                recordingName = response.recordingName;
+        $axure.messageCenter.postMessage('startRecording', {'recordingId' : recordingId, 'recordingName': recordingName});
+            },
+            //                dataType: 'json'
+        });
+        
+    };
+
+    var _playClick = function(event) {
+        $('#playButton').addClass('recordPlayButtonSelected');
+    };
+
+    var _stopClick = function(event) {
+        var axRecording, axObjectDictionary, axRecordingContainer, transmissionFields;
+        $('#sitemapLinksContainer').toggle();
+        if($('#recordButton').is('.recordPlayButtonSelected')) {
+            $('#recordButton').removeClass('recordPlayButtonSelected');
+            //            $axure.recording.stopRecord();
+
+            axRecording = {
+                'recordingId' : recordingId,
+                'recordingName': recordingName,
+                'eventList': eventList
+            };
+            
+            axRecordingList[axRecordingList.length] = axRecording;
+            axRecordingContainer = $('#recordingContainer').find('li').filter('.recordingRootNode');
+            axRecordingContainer.append(_formAxRecordingBranch(axRecording));
+            _attachEventTriggers(axRecording);
+
+            lastBulkEvent = {};
+
+            var recordingStepList = [];
+
+            for(var eventListIdx in eventList) {
+                var eventListItem = eventList[eventListIdx];
+
+                if(eventListItem.eventType === 'OnDrag') {
+                    var lastDrag = eventListItem.eventInfo.mousePositions[eventListItem.eventInfo.mousePositions.length - 1].dragInfo;
+                    eventListItem.eventInfo.dragInfo.currentX = lastDrag.currentX;
+                    eventListItem.eventInfo.dragInfo.currentY = lastDrag.currentY;
+                    eventListItem.eventInfo.dragInfo.currentTime = lastDrag.currentTime;
+                    eventListItem.eventInfo.dragInfo.xDelta = eventListItem.eventInfo.dragInfo.currentX - eventListItem.eventInfo.dragInfo.lastX;
+                    eventListItem.eventInfo.dragInfo.yDelta = eventListItem.eventInfo.dragInfo.currentY - eventListItem.eventInfo.dragInfo.lastY;
+                    transmissionFields = {};
+                    transmissionFields = tackItOn(transmissionFields, eventListItem, ['eventType', 'elementID', 'path']);
+                    transmissionFields = tackItOn(transmissionFields, eventListItem.eventInfo, ['dragInfo']);
+                    transmissionFields.recordingId = recordingId;
+                }
+
+                if(isSingleMouse(eventListItem.eventType)) {
+                    transmissionFields = {};
+                    transmissionFields = tackItOn(transmissionFields, eventListItem, ['timeStamp', 'eventType', 'elementID', 'path']);
+                    transmissionFields = tackItOn(transmissionFields, eventListItem.eventInfo, ['cursor']);
+                    transmissionFields.recordingId = recordingId;
+                }
+
+                if(isBulkMouse(eventListItem.eventType)) {
+                    transmissionFields = {};
+                    transmissionFields = tackItOn(transmissionFields, eventListItem, ['eventType', 'elementID', 'path']);
+                    transmissionFields = tackItOn(transmissionFields, eventListItem.eventInfo, ['mousePositions']);
+                    transmissionFields.recordingId = recordingId;
+                }
+                recordingStepList[recordingStepList.length] = transmissionFields;
+            }
+
+            eventList = [];
+            $axure.messageCenter.postMessage('stopRecording', axObjectDictionary);
+
+            var jsonText = {
+                'recordingName': recordingName,
+                'recordingId': recordingId,
+                recordingStart: new Date().getTime(),
+                recordingEnd: recordingStartTime,
+                'eventList': recordingStepList
+            };
+
+            $.ajax({
+                type: "POST",
+                url: '/RecordController/StopRecording',
+                data: { 'jsonText': JSON.stringify(jsonText) }
+                
+            });
+
+        }
+
+        if($('#playButton').is('.recordPlayButtonSelected')) {
+            $('#playButton').removeClass('recordPlayButtonSelected');
+        }
+    };
+    
+    var _deleteClick = function(event) {
+        $.ajax({
+                type: "POST",
+                url: '/RecordController/DeleteRecordings',
+            success: function(response) {
+                var x = true;
+            },                //                dataType: 'json'
+        });
+    };
+
+    var tackItOn = function(destination, source, fields) {
+
+        for(var idx in fields) {
+            destination[fields[idx]] = source[fields[idx]];
+        }
+        return destination;
+    };
+
+    var makeFirstLetterLower = function(eventName) {
+        return eventName.substr(0, 1).toLowerCase() + eventName.substr(1);
+    };
+
+    var _attachEventTriggers = function(axRecording) {
+        for(var eventIdx in axRecording.eventList) {
+            var eventObject = axRecording.eventList[eventIdx];
+            var eventID = axRecording['recordingId'] + '_' + eventObject.timeStamp;
+            currentEvent = eventID;
+            $('#' + eventID).click(_triggerEvent(axRecording['recordingId'], eventObject.timeStamp));
+            //            $('#' + eventID).click(event.trigger);
+        }
+    };
+
+    var _formAxRecordingBranch = function(axRecording) {
+        var eventObject, eventID, RDOID;
+        var recordPlayUi = '<ul class="recordingTree">';
+        recordPlayUi += "<li class='recordingNode recordingExpandableNode'>";
+        recordPlayUi += '<div class="recordingContainer" style="margin-left:15px">';
+        recordPlayUi += '<a class="recordingPlusMinusLink"><span class="recordingMinus"></span></a>';
+        recordPlayUi += '<a class="recordingPageLink" nodeurl="home.html">';
+        recordPlayUi += '<span class="recordingPageIcon"></span>';
+        recordPlayUi += '<span class="recordingPageName">' + axRecording['recordingName'] + '</span>';
+        recordPlayUi += '</a>';
+
+        recordPlayUi += '<ul>';
+
+        for(eventID in axRecording.eventList) {
+
+            eventObject = axRecording.eventList[eventID];
+
+            recordPlayUi += '<li class="recordingNode recordingLeafNode">';
+            recordPlayUi += '<div class="recordingEventContainer" style="margin-left:44px">';
+            var eventID = axRecording['recordingId'] + '_' + eventObject.timeStamp;
+            recordPlayUi += '<a id="' + eventID + '" class="sitemapPageLink">';
+            recordPlayUi += 'Event ID: ' + eventID + '<br/>';
+
+            recordPlayUi += '<span class="sitemapPageIcon"></span>';
+            recordPlayUi += '<span class="sitemapPageName">';
+
+            recordPlayUi += 'elementID: ' + eventObject.elementID + '<br/>';
+            recordPlayUi += 'eventType: ' + eventObject.eventType + '<br/>';
+//            recordPlayUi += 'cursor: ' + eventObject.eventInfo.cursor.x + ',' + eventObject.eventInfo.cursor.y + '<br/>';
+
+            for(RDOID in eventObject.path) {
+                recordPlayUi += '/' + eventObject.path[RDOID];
+            }
+            recordPlayUi += '<br/>';
+            recordPlayUi += '</span>';
+            recordPlayUi += '</a>';
+            recordPlayUi += '</div>';
+            recordPlayUi += '</li>';
+        }
+
+        recordPlayUi += '</ul>';
+
+        recordPlayUi += '</div>';
+
+        recordPlayUi += "</li>";
+        recordPlayUi += "</ul>";
+
+        return recordPlayUi;
+    };
+
+    var currentEvent = '';
+
+    var _triggerEvent = function(axRecording, timeStamp) {
+        //            $axure.messageCenter.postMessage('triggerEvent', false);
+
+
+        for(var axRecordingIdx in axRecordingList) {
+            if(axRecordingList[axRecordingIdx].recordingId === axRecording) {
+                for(var eventIdx in axRecordingList[axRecordingIdx].eventList) {
+                    if(axRecordingList[axRecordingIdx].eventList[eventIdx].timeStamp === timeStamp) {
+
+                        var thisEvent = axRecordingList[axRecordingIdx].eventList[eventIdx];
+                        //                            thisEvent.trigger();
+
+                        var thisEventInfo, lowerEventType;
+                        lowerEventType = thisEvent.eventType.toLowerCase();
+                        if(lowerEventType === 'onclick' || lowerEventType === 'onmousein') {
+                            thisEventInfo = {};
+                            thisEventInfo = tackItOn(thisEventInfo, thisEvent.eventInfo, ['cursor', 'timeStamp', 'srcElement']);
+                            if(thisEvent.eventInfo.inputType) {
+                                thisEventInfo = tackItOn(thisEventInfo, thisEvent.eventInfo, ['inputType', 'inputValue']);
+                            }
+                        } else {
+                            thisEventInfo = thisEvent.eventInfo;
+                        }
+
+                        var thisParameters = {
+                            'element': thisEvent.elementID,
+                            'eventInfo': thisEventInfo,
+                            //                            'axEventObject': thisEvent.eventObject,
+                            'eventType': thisEvent.eventType
+                        };
+
+                        return function() {
+                            $axure.messageCenter.postMessage('playEvent', thisParameters);
+                        };
+
+                    }
+                }
+            }
+        }
+    };
+
+    var _generateRecordPlay = function() {
+        var recordPlayUi = "<div id='recordPlayContainer'>";
+
+        recordPlayUi += "<div id='recordPlayToolbar'>";
+
+        recordPlayUi += "<div style='height:30px;'>";
+
+        recordPlayUi += "<a id='recordButton' title='Start a Recording' class='recordPlayButton'></a>";
+        recordPlayUi += "<a id='playButton' title='Play Back a Recording' class='recordPlayButton'></a>";
+        recordPlayUi += "<a id='stopButton' title='Stop' class='recordPlayButton'></a>";
+        recordPlayUi += "<a id='deleteButton' title='Delete All Recordings' class='recordPlayButton'></a>";
+        recordPlayUi += "</div>";
+
+        recordPlayUi += "<div id='recordingContainer'><li class='recordingNode recordingRootNode'></li></div>";
+        recordPlayUi += "</div>";
+
+        $('#recordPlayHost').html(recordPlayUi);
+    };
+
 })();   

+ 89 - 89
RFID/plugins/recordplay/styles/recordplay.css

@@ -1,90 +1,90 @@
-#recordPlayHost {
-    font-size: 12px;
-    color:#333;
-    height: 100%;
-}
-
-
-#recordPlayContainer 
-{
-    overflow: auto;
-    width: 100%;
-    height: 100%;
-    padding: 10px 10px 10px 10px;
-}
-
-#recordPlayToolbar 
-{
-	margin: 5px 5px 5px 5px;
-    height: 22px;
-}
-
-#recordPlayToolbar .recordPlayButton
-{
-    float: left;
-    width: 22px;
-    height: 22px;
-    border: 1px solid transparent;
-}
-
-#recordPlayToolbar .recordPlayButton:hover
-{
-    border: 1px solid rgb(0,157,217);
-    background-color : rgb(166,221,242);
-}
-
-#recordPlayToolbar .recordPlayButton:active
-{
-    border: 1px solid rgb(0,157,217);
-    background-color : rgb(204,235,248);
-}
-
-#recordPlayToolbar .recordPlayButtonSelected {
-    border: 1px solid rgb(0,157,217);
-    background-color : rgb(204,235,248);    
-}
-
-/* removed images */
-/*#recordButton {
-    background: url('../../sitemap/styles/images/233_hyperlink_16.png') no-repeat center center;
-}
-
-#playButton {
-    background: url('../../sitemap/styles/images/225_responsive_16.png') no-repeat center center;
-}
-
-#stopButton {
-    background: url('../../sitemap/styles/images/228_togglenotes_16.png') no-repeat center center;
-}
-
-#deleteButton {
-    background: url('../../sitemap/styles/images/231_event_16.png') no-repeat center center;
-}*/
-
-#recordNameHeader
-{
-    /* yeah??*/
-	font-size: 13px;
-	font-weight: bold;
-	height: 23px;
-	white-space: nowrap;
-}
-
-#recordPlayContent 
-{
-    /* yeah??*/
-	overflow: visible;
-}
-
-.recordPlayName 
-{
-	font-size: 12px;
-	margin-bottom: 5px;
-	text-decoration: underline;
-	white-space: nowrap;
-}
-
-.recordPlay 
-{
-	margin-bottom: 10px;
+#recordPlayHost {
+    font-size: 12px;
+    color:#333;
+    height: 100%;
+}
+
+
+#recordPlayContainer 
+{
+    overflow: auto;
+    width: 100%;
+    height: 100%;
+    padding: 10px 10px 10px 10px;
+}
+
+#recordPlayToolbar 
+{
+	margin: 5px 5px 5px 5px;
+    height: 22px;
+}
+
+#recordPlayToolbar .recordPlayButton
+{
+    float: left;
+    width: 22px;
+    height: 22px;
+    border: 1px solid transparent;
+}
+
+#recordPlayToolbar .recordPlayButton:hover
+{
+    border: 1px solid rgb(0,157,217);
+    background-color : rgb(166,221,242);
+}
+
+#recordPlayToolbar .recordPlayButton:active
+{
+    border: 1px solid rgb(0,157,217);
+    background-color : rgb(204,235,248);
+}
+
+#recordPlayToolbar .recordPlayButtonSelected {
+    border: 1px solid rgb(0,157,217);
+    background-color : rgb(204,235,248);    
+}
+
+/* removed images */
+/*#recordButton {
+    background: url('../../sitemap/styles/images/233_hyperlink_16.png') no-repeat center center;
+}
+
+#playButton {
+    background: url('../../sitemap/styles/images/225_responsive_16.png') no-repeat center center;
+}
+
+#stopButton {
+    background: url('../../sitemap/styles/images/228_togglenotes_16.png') no-repeat center center;
+}
+
+#deleteButton {
+    background: url('../../sitemap/styles/images/231_event_16.png') no-repeat center center;
+}*/
+
+#recordNameHeader
+{
+    /* yeah??*/
+	font-size: 13px;
+	font-weight: bold;
+	height: 23px;
+	white-space: nowrap;
+}
+
+#recordPlayContent 
+{
+    /* yeah??*/
+	overflow: visible;
+}
+
+.recordPlayName 
+{
+	font-size: 12px;
+	margin-bottom: 5px;
+	text-decoration: underline;
+	white-space: nowrap;
+}
+
+.recordPlay 
+{
+	margin-bottom: 10px;
 }

+ 613 - 562
RFID/plugins/sitemap/sitemap.js

@@ -1,562 +1,613 @@
-var currentNodeUrl = '';
-var allNodeUrls = [];
-
-var openNextPage = $axure.player.openNextPage = function () {
-    var index = allNodeUrls.indexOf(currentNodeUrl) + 1;
-    if(index >= allNodeUrls.length) return;
-    var nextNodeUrl = allNodeUrls[index];
-    currentNodeUrl = nextNodeUrl;
-    $('.sitemapPageLink[nodeUrl="' + nextNodeUrl + '"]').parent().mousedown();
-};
-
-var openPreviousPage = $axure.player.openPreviousPage = function () {
-    var index = allNodeUrls.indexOf(currentNodeUrl) - 1;
-    if(index < 0) return;
-    var nextNodeUrl = allNodeUrls[index];
-    currentNodeUrl = nextNodeUrl;
-    $('.sitemapPageLink[nodeUrl="' + nextNodeUrl + '"]').parent().mousedown();
-};
-
-// use this to isolate the scope
-(function() {
-
-    var SHOW_HIDE_ANIMATION_DURATION = 0;
-
-    var HIGHLIGHT_INTERACTIVE_VAR_NAME = 'hi';
-
-    var currentPageLoc = '';
-    var currentPlayerLoc = '';
-    var currentPageHashString = '';
-
-    $(window.document).ready(function() {
-        $axure.player.createPluginHost({
-            id: 'sitemapHost',
-            context: 'project',
-            title: 'Project Pages',
-            gid: 1,
-        });
-
-        $(window.document).bind('keyup', function (e) {
-            if (e.target.localName == "textarea" || e.target.localName == "input" || event.target.isContentEditable) return;
-            switch(e.which) {
-                case 188:
-                    openPreviousPage();
-                    break;
-                case 190:
-                    openNextPage();
-                    break;
-                default: return; // exit this handler for other keys
-            }
-        });
-
-        generateSitemap();
-        var pageCount = $('.sitemapPageLink').length;
-        
-        $('.leftArrow').click(openPreviousPage);
-        $('.rightArrow').click(openNextPage);
-
-        $('.sitemapPlusMinusLink').click(collapse_click);
-        $('.sitemapPageLink').parent().mousedown(node_click);
-
-        $('#interfaceAdaptiveViewsListContainer').hide();
-
-        $('#projectOptionsShowHotspots').click(showHotspots_click);
-        $('#searchIcon').click(searchBoxClose_click);
-        $('#searchDiv').click(searchBoxExpand_click);
-        $('#searchBox').keyup(search_input_keyup);
-
-        // bind to the page load
-        $axure.page.bind('load.sitemap', function() {
-            currentPageLoc = $axure.page.location.split("#")[0];
-            var decodedPageLoc = decodeURI(currentPageLoc);
-            currentNodeUrl = decodedPageLoc.substr(decodedPageLoc.lastIndexOf('/') ? decodedPageLoc.lastIndexOf('/') + 1 : 0);
-            currentPlayerLoc = $(location).attr('href').split("#")[0].split("?")[0];
-            currentPageHashString = '#p=' + currentNodeUrl.substr(0, currentNodeUrl.lastIndexOf('.'));
-
-            $axure.player.setVarInCurrentUrlHash(PAGE_ID_NAME, $axure.player.getPageIdByUrl(currentNodeUrl));
-            $axure.player.setVarInCurrentUrlHash(PAGE_URL_NAME, currentNodeUrl.substring(0, currentNodeUrl.lastIndexOf('.html')));
-
-            $('#sitemapTreeContainer').find('.sitemapHighlight').removeClass('sitemapHighlight');
-            var $currentNode = $('.sitemapPageLink[nodeUrl="' + currentNodeUrl + '"]');
-            $currentNode.parent().parent().addClass('sitemapHighlight');
-
-            var pageName = $axure.page.pageName;
-            $('.pageNameHeader').html(pageName);
-
-            if ($currentNode.length > 0 && pageCount > 1) {
-                var currentNode = $currentNode[0];
-                var currentNum = $('.sitemapPageLink').index(currentNode) + 1;
-                $('.pageCountHeader').html('(' + currentNum + ' of ' + pageCount + ')');
-            } else $('.pageCountHeader').html('');
-
-            //If highlight var is present and set to 1 or else if
-            //sitemap highlight button is selected then highlight interactive elements
-            var hiVal = $axure.player.getHashStringVar(HIGHLIGHT_INTERACTIVE_VAR_NAME);
-            if(hiVal.length > 0 && hiVal == 1) {
-                $('#showHotspotsOption').find('.overflowOptionCheckbox').addClass('selected');
-                if ($('#projectOptionsHotspotsCheckbox').length > 0) $('#projectOptionsHotspotsCheckbox').addClass('selected');
-                $axure.messageCenter.postMessage('highlightInteractive', true);
-            } else if ($('#showHotspotsOption').find('.overflowOptionCheckbox').hasClass('selected')) {
-                $axure.messageCenter.postMessage('highlightInteractive', true);
-            }
-
-            generateAdaptiveViews(false);
-            if (MOBILE_DEVICE) generateAdaptiveViews(true);
-
-            $axure.player.suspendRefreshViewPort = true;
-
-            //Set the current view if it is defined in the hash string
-            //If the view is invalid, set it to 'auto' in the string
-            //ELSE set the view based on the currently selected view in the toolbar menu
-            var viewStr = $axure.player.getHashStringVar(ADAPTIVE_VIEW_VAR_NAME);
-            if(viewStr.length > 0) {
-                var $view = $('.adaptiveViewOption[val="' + viewStr + '"]');
-                if($view.length > 0) $view.click();
-                else $('.adaptiveViewOption[val="auto"]').click();
-            } else if($('.selectedRadioButton').length > 0) {
-                var $viewOption = $('.selectedRadioButton').parents('.adaptiveViewOption');
-                $viewOption.click();
-            }
-            updateAdaptiveViewHeader();
-
-            function setDefaultScaleForDevice() {
-                if(MOBILE_DEVICE && $axure.player.isMobileMode()) {
-                    $('.projectOptionsScaleRow[val="0"]').click();
-                } else {
-                    $('.vpScaleOption[val="0"]').click();
-                }
-            }
-
-            var scaleStr = $axure.player.getHashStringVar(SCALE_VAR_NAME);
-            if(scaleStr.length > 0) {
-                var $scale = $('.vpScaleOption[val="' + scaleStr + '"]');
-                if($scale.length > 0) $scale.click();
-                else setDefaultScaleForDevice();
-            } else {
-                setDefaultScaleForDevice();
-            }
-
-            var rotateStr = $axure.player.getHashStringVar(ROT_VAR_NAME);
-            if(rotateStr.length > 0) {
-                $('#vpRotate').prop('checked', true);
-            }
-
-            $axure.player.suspendRefreshViewPort = false;
-
-            if (!$axure.player.isViewOverridden()) $axure.messageCenter.postMessage('setAdaptiveViewForSize', { 'width': $('#mainPanel').width(), 'height': $('#mainPanel').height() });
-
-            $axure.player.refreshViewPort();
-
-            $axure.messageCenter.postMessage('finishInit');
-
-            showMainPanel();
-            return false;
-        });
-
-        var $vpContainer = $('#interfaceScaleListContainer');
-        
-        var scaleOptions = '<div class="vpScaleOption" val="0"><div class="scaleRadioButton"><div class="selectedRadioButtonFill"></div></div>Default Scale</div>';
-        scaleOptions += '<div class="vpScaleOption" val="1"><div class="scaleRadioButton"><div class="selectedRadioButtonFill"></div></div>Scale to Width</div>';
-        scaleOptions += '<div class="vpScaleOption" val="2"><div class="scaleRadioButton"><div class="selectedRadioButtonFill"></div></div>Scale to Fit</div>';
-        $(scaleOptions).appendTo($vpContainer);
-
-        $('#overflowMenuContainer').append('<div id="showHotspotsOption" class="showOption" style="order: 1"><div class="overflowOptionCheckbox"></div>Show Hotspots</div>');
-        $('#overflowMenuContainer').append($vpContainer);
-        $vpContainer.show();
-
-        $('#showHotspotsOption').click(showHotspots_click);
-        $('.vpScaleOption').click(vpScaleOption_click);
-        $('.vpScaleOption').mouseup(function (event) {
-            event.stopPropagation();
-        });
-
-        if (MOBILE_DEVICE) {
-            var scaleOptions = '<div class="projectOptionsScaleRow" val="1"><div class="scaleRadioButton"><div class="selectedRadioButtonFill"></div></div>Scale to fit width</div>';
-            scaleOptions += '<div class="projectOptionsScaleRow" val="0"><div class="scaleRadioButton"><div class="selectedRadioButtonFill"></div></div>Original size (100%)</div>';
-            scaleOptions += '<div class="projectOptionsScaleRow" val="2" style="border-bottom: solid 1px #c7c7c7"><div class="scaleRadioButton"><div class="selectedRadioButtonFill"></div></div>Fit all to screen</div>';
-            $(scaleOptions).appendTo($('#projectOptionsScaleContainer'));
-
-            $('.projectOptionsScaleRow').click(vpScaleOption_click);
-        }
-
-        $('#searchBox').focusin(function() {
-            if($(this).is('.searchBoxHint')) {
-                $(this).val('');
-                $(this).removeClass('searchBoxHint');
-            }
-        }).focusout(function() {
-            if($(this).val() == '') {
-                $(this).addClass('searchBoxHint');
-            }
-        });
-
-
-        $('#searchBox').focusout();
-    });
-
-    var _formatViewDimension = function(dim) {
-        if(dim == 0) return 'any';
-        if(dim.toString().includes('.')) return dim.toFixed(2);
-        return dim;
-    };
-
-    function generateAdaptiveViews(forProjectOptions) {
-        var $container = forProjectOptions ? $('#projectOptionsAdaptiveViewsContainer') : $('#interfaceAdaptiveViewsListContainer');
-        var $viewSelect = forProjectOptions ? $('#projectOptionsViewSelect') : $('#viewSelect');
-        var adaptiveViewOptionClass = forProjectOptions ? 'projectOptionsAdaptiveViewRow' : 'adaptiveViewOption';
-        var currentViewClass = forProjectOptions ? '' : 'currentAdaptiveView';
-
-        $container.empty();
-        $viewSelect.empty();
-
-        //Fill out adaptive view container with prototype's defined adaptive views, as well as the default, and Auto
-        var viewsList = '<div class="' + adaptiveViewOptionClass + '" val="auto"><div class="adapViewRadioButton selectedRadioButton"><div class="selectedRadioButtonFill"></div></div>Adaptive</div>';
-        var viewSelect = '<option value="auto">Adaptive</option>';
-        if (typeof $axure.page.defaultAdaptiveView.name != 'undefined') {
-            //If the name is a blank string, make the view name the width if non-zero, else 'any'
-            var defaultView = $axure.page.defaultAdaptiveView;
-            var defaultViewName = defaultView.name;
-
-            var widthString = _formatViewDimension(defaultView.size.width);
-            var heightString = _formatViewDimension(defaultView.size.height);
-
-            var viewString = defaultViewName + ' (' + widthString + ' x ' + heightString + ')';
-
-            viewsList += '<div class="' + adaptiveViewOptionClass + ' ' + currentViewClass + '" val="default"data-dim="' + defaultView.size.width + 'x' + defaultView.size.height + '">' +
-                '<div class="adapViewRadioButton"><div class="selectedRadioButtonFill"></div></div>' + viewString + '</div>';
-            viewSelect += '<option value="default">' + viewString + '</option>';
-        }
-
-        var useViews = $axure.document.configuration.useViews;
-        var hasViews = false;
-        if(useViews) {
-            for(var viewIndex = 0; viewIndex < $axure.page.adaptiveViews.length; viewIndex++) {
-                var currView = $axure.page.adaptiveViews[viewIndex];
-
-                var widthString = _formatViewDimension(currView.size.width);
-                var heightString = _formatViewDimension(currView.size.height);
-
-                var viewString = currView.name + ' (' + widthString + ' x ' + heightString + ')';
-                viewsList += '<div class="' + adaptiveViewOptionClass +
-                    ((forProjectOptions && (viewIndex == $axure.page.adaptiveViews.length - 1)) ? '" style="border-bottom: solid 1px #c7c7c7; margin-bottom: 15px;' : '') + 
-                    '" val="' +
-                    currView.id +
-                    '"  data-dim="' +
-                    currView.size.width +
-                    'x' +
-                    currView.size.height +
-                    '"><div class="adapViewRadioButton"><div class="selectedRadioButtonFill"></div></div>' +
-                    viewString +
-                    '</div>';
-                viewSelect += '<option value="' + currView.id + '">' + viewString + '</option>';
-
-                hasViews = true;
-            }
-        }
-
-        $container.append(viewsList);
-        $viewSelect.append(viewSelect);
-
-        if (!hasViews) {
-            if (forProjectOptions) {
-                $('#projectOptionsAdaptiveViewsHeader').hide();
-                $('#projectOptionsAdaptiveViewsContainer').hide();
-            } else $('#interfaceAdaptiveViewsContainer').hide();
-        } else {
-            if (forProjectOptions) {
-                $('#projectOptionsAdaptiveViewsHeader').show();
-                $('#projectOptionsAdaptiveViewsContainer').show();
-            } else $('#interfaceAdaptiveViewsContainer').show();
-        }
-
-        $(('.' + adaptiveViewOptionClass)).click(adaptiveViewOption_click);
-
-        if (!forProjectOptions) {
-            $(('.' + adaptiveViewOptionClass)).mouseup(function (event) {
-                event.stopPropagation();
-            });
-        }
-    }
-
-
-    function collapse_click(event) {
-        if($(this).children('.sitemapPlus').length > 0) {
-            expand_click($(this));
-        } else {
-            $(this)
-                .children('.sitemapMinus').removeClass('sitemapMinus').addClass('sitemapPlus').end()
-                .closest('li').children('ul').hide(SHOW_HIDE_ANIMATION_DURATION);
-        }
-        event.stopPropagation();
-    }
-
-    function expand_click($this) {
-        $this
-            .children('.sitemapPlus').removeClass('sitemapPlus').addClass('sitemapMinus').end()
-            .closest('li').children('ul').show(SHOW_HIDE_ANIMATION_DURATION);
-    }
-
-    function searchBoxExpand_click(event) {
-        if (!$('#searchIcon').hasClass('sitemapToolbarButtonSelected')) {
-            $('#searchIcon').addClass('sitemapToolbarButtonSelected')
-            $('#searchBox').width(0);
-            $('#searchBox').show();
-            $('#searchBox').animate({ width: '95%' }, { duration: 200, complete: function () { $('#searchBox').focus(); } });
-        }
-    }
-
-    function searchBoxClose_click(event) {
-        if ($('#searchIcon').hasClass('sitemapToolbarButtonSelected')) {
-            $('#searchBox').animate({ width: '0%' }, { duration: 200,
-                complete: function () {
-                    $('#searchBox').hide();
-                    $('#searchIcon').removeClass('sitemapToolbarButtonSelected')
-                }});
-            $('#searchBox').val('');
-            $('#searchBox').keyup();
-        }
-    }
-
-    function node_click(event) {
-        hideMainPanel();
-        $('#sitemapTreeContainer').find('.sitemapHighlight').removeClass('sitemapHighlight');
-        $(this).parent().addClass('sitemapHighlight');
-        $axure.page.navigate($(this).children('.sitemapPageLink')[0].getAttribute('nodeUrl'), true);
-    }
-
-    function hideMainPanel() {
-        $('#mainPanel').css('opacity', '0');
-        $('#clippingBounds').css('opacity', '0');
-    }
-    function showMainPanel() {
-        $('#mainPanel').animate({ opacity: 1 }, 10);
-        $('#clippingBounds').animate({ opacity: 1 }, 10);
-    }
-
-    $axure.messageCenter.addMessageListener(function(message, data) {
-        if(message == 'adaptiveViewChange') {
-            $('.adaptiveViewOption').removeClass('currentAdaptiveView');
-            if(data.viewId) {$('.adaptiveViewOption[val="' + data.viewId + '"]').addClass('currentAdaptiveView');}
-            else $('.adaptiveViewOption[val="default"]').addClass('currentAdaptiveView');
-
-            //when we set adaptive view through user event, we want to update the checkmark on sitemap
-            if(data.forceSwitchTo) {
-                $('.adapViewRadioButton').find('.selectedRadioButtonFill').hide();
-                $('.adapViewRadioButton').removeClass('selectedRadioButton');
-                $('div[val="' + data.forceSwitchTo + '"]').find('.adapViewRadioButton').addClass('selectedRadioButton');
-                $('div[val="' + data.forceSwitchTo + '"]').find('.selectedRadioButtonFill').show();
-            }
-
-            updateAdaptiveViewHeader();
-            $axure.player.refreshViewPort();
-
-        } else if(message == 'previousPage') {
-            openPreviousPage();
-        } else if(message == 'nextPage') {
-            openNextPage();
-        }
-    });
-
-    $axure.player.toggleHotspots = function (val) {
-        var overflowMenuCheckbox = $('#showHotspotsOption').find('.overflowOptionCheckbox');
-        if ($(overflowMenuCheckbox).hasClass('selected')) {
-            if (!val) $('#showHotspotsOption').click();
-        } else {
-            if (val) $('#showHotspotsOption').click();
-        }
-    }
-
-    function showHotspots_click(event) {
-        var overflowMenuCheckbox = $('#showHotspotsOption').find('.overflowOptionCheckbox');
-        var projOptionsCheckbox = $('#projectOptionsHotspotsCheckbox');
-
-        if ($(overflowMenuCheckbox).hasClass('selected')) {
-            overflowMenuCheckbox.removeClass('selected');
-            if (projOptionsCheckbox.length > 0 ) projOptionsCheckbox.removeClass('selected');
-            $axure.messageCenter.postMessage('highlightInteractive', false);
-            //Delete 'hi' hash string var if it exists since default is unselected
-            $axure.player.deleteVarFromCurrentUrlHash(HIGHLIGHT_INTERACTIVE_VAR_NAME);
-        } else {
-            overflowMenuCheckbox.addClass('selected');
-            if (projOptionsCheckbox.length > 0) projOptionsCheckbox.addClass('selected');
-            $axure.messageCenter.postMessage('highlightInteractive', true);
-            //Add 'hi' hash string var so that stay highlighted across reloads
-            $axure.player.setVarInCurrentUrlHash(HIGHLIGHT_INTERACTIVE_VAR_NAME, 1);
-        }
-    }
-
-
-    function adaptiveViewOption_click(event) {
-        var currVal = $(this).attr('val');
-
-        $('.adaptiveViewOption').removeClass('currentAdaptiveView');
-        if(currVal) {$('.adaptiveViewOption[val="' + currVal + '"]').addClass('currentAdaptiveView');}
-        else $('.adaptiveViewOption[val="default"]').addClass('currentAdaptiveView');
-
-        $('.adapViewRadioButton').find('.selectedRadioButtonFill').hide();
-        $('.adapViewRadioButton').removeClass('selectedRadioButton');
-        $('div[val="' + currVal + '"]').find('.adapViewRadioButton').addClass('selectedRadioButton');
-        $('div[val="' + currVal + '"]').find('.selectedRadioButtonFill').show();
-
-        selectAdaptiveView(currVal);
-        $axure.player.closePopup();
-        updateAdaptiveViewHeader();
-    }
-
-    var selectAdaptiveView = $axure.player.selectAdaptiveView = function(currVal) {
-        if (currVal == 'auto') {
-            $axure.messageCenter.postMessage('setAdaptiveViewForSize', { 'width': $('#mainPanel').width(), 'height': $('#mainPanel').height() });
-            $axure.player.deleteVarFromCurrentUrlHash(ADAPTIVE_VIEW_VAR_NAME);
-        } else {
-            currentPageLoc = $axure.page.location.split("#")[0];
-            var decodedPageLoc = decodeURI(currentPageLoc);
-            var nodeUrl = decodedPageLoc.substr(decodedPageLoc.lastIndexOf('/')
-                ? decodedPageLoc.lastIndexOf('/') + 1
-                : 0);
-            var adaptiveData = {
-                src: nodeUrl
-            };
-
-            adaptiveData.view = currVal;
-            $axure.messageCenter.postMessage('switchAdaptiveView', adaptiveData);
-            $axure.player.setVarInCurrentUrlHash(ADAPTIVE_VIEW_VAR_NAME, currVal);
-        }
-    }
-
-    $axure.player.updateAdaptiveViewHeader = updateAdaptiveViewHeader = function () {
-        var hasDefinedDim = true;
-        var dimensionlessViewStr = '(any x any)';
-
-        var viewString = $('.adaptiveViewOption.currentAdaptiveView').text();
-        if (viewString != null && viewString.indexOf(dimensionlessViewStr) >= 0) hasDefinedDim = false;
-
-        if (!hasDefinedDim) {
-            var viewName = viewString.substring(0, viewString.lastIndexOf(' ('));
-            var widthString = $('#mainPanelContainer').width();
-            viewString = viewName + ' (' + widthString + ' x any)';
-        }
-
-        $('.adaptiveViewHeader').html(viewString);
-    }
-
-    $axure.player.selectScaleOption = function (scaleVal) {
-        var $scale = $('.vpScaleOption[val="' + scaleVal + '"]');
-        if ($scale.length > 0) $scale.click();
-    }
-
-    function vpScaleOption_click(event) {
-        var scaleCheckDiv = $(this).find('.scaleRadioButton');
-        var scaleVal = $(this).attr('val');
-        if (scaleCheckDiv.hasClass('selectedRadioButton')) return false;
-
-        var $selectedScaleOption = $('.vpScaleOption[val="' + scaleVal + '"], .projectOptionsScaleRow[val="' + scaleVal + '"]');
-        var $allScaleOptions = $('.vpScaleOption, .projectOptionsScaleRow');
-        $allScaleOptions.find('.scaleRadioButton').removeClass('selectedRadioButton');
-        $allScaleOptions.find('.selectedRadioButtonFill').hide();
-        $selectedScaleOption.find('.scaleRadioButton').addClass('selectedRadioButton');
-        $selectedScaleOption.find('.selectedRadioButtonFill').show();
-
-        if (scaleVal == '0') {
-            $axure.player.deleteVarFromCurrentUrlHash(SCALE_VAR_NAME);
-        } else if (typeof scaleVal !== 'undefined') {
-            $axure.player.setVarInCurrentUrlHash(SCALE_VAR_NAME, scaleVal);
-        }
-
-        $axure.player.refreshViewPort();
-    }
-
-    function search_input_keyup(event) {
-        var searchVal = $(this).val().toLowerCase();
-        //If empty search field, show all nodes, else grey+hide all nodes and
-        //ungrey+unhide all matching nodes, as well as unhide their parent nodes
-        if(searchVal == '') {
-            $('.sitemapPageName').removeClass('sitemapGreyedName');
-            $('.sitemapNode').show();
-        } else {
-            $('.sitemapNode').hide();
-
-            $('.sitemapPageName').addClass('sitemapGreyedName').each(function() {
-                var nodeName = $(this).text().toLowerCase();
-                if(nodeName.indexOf(searchVal) != -1) {
-                    $(this).removeClass('sitemapGreyedName').parents('.sitemapNode:first').show().parents('.sitemapExpandableNode').show();
-                }
-            });
-        }
-    }
-
-
-    function generateSitemap() {
-        var treeUl = "<div id='sitemapHeader'' class='sitemapHeader'>";
-        treeUl += "<div id='sitemapToolbar' class='sitemapToolbar'>";
-
-        treeUl += '<div id="searchDiv"><span id="searchIcon" class="sitemapToolbarButton"></span><input id="searchBox" type="text"/></div>';
-        treeUl += "<div class='leftArrow sitemapToolbarButton'></div>";
-        treeUl += "<div class='rightArrow sitemapToolbarButton'></div>";
-
-        treeUl += "</div>";
-        treeUl += "</div>";
-
-        ///////////////////
-
-        var sitemapTitle = $axure.player.getProjectName();
-        if (!sitemapTitle) sitemapTitle = "Pages";
-        treeUl += "<div class='sitemapPluginNameHeader pluginNameHeader'>" + sitemapTitle + "</div>";
-
-        treeUl += "<div id='sitemapTreeContainer'>";
-        treeUl += "<ul class='sitemapTree' style='clear:both;'>";
-        var rootNodes = $axure.document.sitemap.rootNodes;
-        for(var i = 0; i < rootNodes.length; i++) {
-            treeUl += generateNode(rootNodes[i], 0);
-        }
-        treeUl += "</ul></div>";
-
-        if (!MOBILE_DEVICE) {
-            treeUl += "<div id='changePageInstructions' class='pageSwapInstructions'>Use  ";
-            treeUl += '<span class="backKeys"></span>';
-            treeUl += "  and  ";
-            treeUl += '<span class="forwardKeys"></span>';
-            treeUl += "  keys<br>to move between pages";
-            treeUl += "</div>";
-        }
-
-        $('#sitemapHost').html(treeUl);
-    }
-
-    function generateNode(node, level) {
-        var hasChildren = (node.children && node.children.length > 0);
-        var margin, returnVal;
-        if(hasChildren) {
-            margin = (9 + level * 17);
-            returnVal = "<li class='sitemapNode sitemapExpandableNode'><div><div class='sitemapPageLinkContainer' style='margin-left:" + margin + "px'><a class='sitemapPlusMinusLink'><span class='sitemapMinus'></span></a>";
-        } else {
-            margin = (19 + level * 17);
-            returnVal = "<li class='sitemapNode sitemapLeafNode'><div><div class='sitemapPageLinkContainer' style='margin-left:" + margin + "px'>";
-        }
-
-        var isFolder = node.type == "Folder";
-        if(!isFolder) {
-            returnVal += "<a class='sitemapPageLink' nodeUrl='" + node.url + "'>";
-            allNodeUrls.push(node.url);
-        }
-        returnVal += "<span class='sitemapPageIcon";
-		if(node.type == "Flow"){ returnVal += " sitemapFlowIcon";}
-        if(isFolder) { returnVal += " sitemapFolderIcon"; }
-
-        returnVal += "'></span><span class='sitemapPageName'>";
-        returnVal += $('<div/>').text(node.pageName).html();
-        returnVal += "</span>";
-        if(!isFolder) returnVal += "</a>";
-        returnVal += "</div></div>";
-
-        if(hasChildren) {
-            returnVal += "<ul>";
-            for(var i = 0; i < node.children.length; i++) {
-                var child = node.children[i];
-                returnVal += generateNode(child, level + 1);
-            }
-            returnVal += "</ul>";
-        }
-        returnVal += "</li>";
-        return returnVal;
-    }
-})();
+var currentNodeUrl = '';
+var allNodeUrls = [];
+
+var openNextPage = $axure.player.openNextPage = function () {
+    var index = allNodeUrls.indexOf(currentNodeUrl) + 1;
+    if(index >= allNodeUrls.length) return;
+    var nextNodeUrl = allNodeUrls[index];
+    currentNodeUrl = nextNodeUrl;
+    $('.sitemapPageLink[nodeUrl="' + nextNodeUrl + '"]').parent().mousedown();
+};
+
+var openPreviousPage = $axure.player.openPreviousPage = function () {
+    var index = allNodeUrls.indexOf(currentNodeUrl) - 1;
+    if(index < 0) return;
+    var nextNodeUrl = allNodeUrls[index];
+    currentNodeUrl = nextNodeUrl;
+    $('.sitemapPageLink[nodeUrl="' + nextNodeUrl + '"]').parent().mousedown();
+};
+
+// use this to isolate the scope
+(function() {
+
+    var SHOW_HIDE_ANIMATION_DURATION = 0;
+
+    var HIGHLIGHT_INTERACTIVE_VAR_NAME = 'hi';
+
+    var currentPageLoc = '';
+    var currentPlayerLoc = '';
+    var currentPageHashString = '';
+
+    $(window.document).ready(function() {
+        $axure.player.createPluginHost({
+            id: 'sitemapHost',
+            context: 'project',
+            title: 'Project Pages',
+            gid: 1,
+        });
+
+        $(window.document).bind('keyup', function (e) {
+            if (e.target.localName == "textarea" || e.target.localName == "input" || event.target.isContentEditable) return;
+            switch(e.which) {
+                case 188:
+                    openPreviousPage();
+                    break;
+                case 190:
+                    openNextPage();
+                    break;
+                default: return; // exit this handler for other keys
+            }
+        });
+
+        generateSitemap();
+        var pageCount = $('.sitemapPageLink').length;
+        
+        $('.leftArrow').click(openPreviousPage);
+        $('.rightArrow').click(openNextPage);
+
+        $('.sitemapPlusMinusLink').click(collapse_click);
+        $('#expandCollapseAll').click(expandCollapseAll_click);
+        $('.sitemapPageLink').parent().mousedown(node_click);
+
+        $('#interfaceAdaptiveViewsListContainer').hide();
+
+        $('#projectOptionsShowHotspots').click(showHotspots_click);
+        $('#searchIcon').click(searchBoxClose_click);
+        $('#searchDiv').click(searchBoxExpand_click);
+        $('#searchBox').keyup(search_input_keyup);
+
+        // bind to the page load
+        $axure.page.bind('load.sitemap', function() {
+            currentPageLoc = $axure.page.location.split("?")[0];
+            var decodedPageLoc = decodeURI(currentPageLoc);
+            currentNodeUrl = decodedPageLoc.substr(decodedPageLoc.lastIndexOf('/') ? decodedPageLoc.lastIndexOf('/') + 1 : 0);
+            currentPlayerLoc = $(location).attr('href').split("#")[0].split("?")[0];
+            currentPageHashString = '?p=' + currentNodeUrl.substr(0, currentNodeUrl.lastIndexOf('.'));
+
+            $axure.player.setVarInCurrentUrlHash(PAGE_ID_NAME, $axure.player.getPageIdByUrl(currentNodeUrl));
+            $axure.player.setVarInCurrentUrlHash(PAGE_URL_NAME, currentNodeUrl.substring(0, currentNodeUrl.lastIndexOf('.html')));
+
+            $('#sitemapTreeContainer').find('.sitemapHighlight').removeClass('sitemapHighlight');
+            var $currentNode = $('.sitemapPageLink[nodeUrl="' + currentNodeUrl + '"]');
+            $currentNode.parent().parent().addClass('sitemapHighlight');
+
+            var pageName = $axure.page.pageName;
+            $('.pageNameHeader').text(pageName);
+
+            if ($currentNode.length > 0 && pageCount > 1) {
+                var currentNode = $currentNode[0];
+                var currentNum = $('.sitemapPageLink').index(currentNode) + 1;
+                $('.pageCountHeader').html('(' + currentNum + ' of ' + pageCount + ')');
+            } else $('.pageCountHeader').html('');
+
+            // expand all parent nodes
+            if ($currentNode.length > 0) {
+                var expandableParents = $currentNode.closest('.sitemapNode').parents('.sitemapExpandableNode');
+                if (expandableParents.length > 0) {
+                    expandableParents.each(function () {
+                        expand_click($(this).find('.sitemapPlusMinusLink').first());
+                    });
+                }
+            }
+
+            //If highlight var is present and set to 1 or else if
+            //sitemap highlight button is selected then highlight interactive elements
+            var hiVal = $axure.player.getHashStringVar(HIGHLIGHT_INTERACTIVE_VAR_NAME);
+            if(hiVal.length > 0 && hiVal == 1) {
+                $('#showHotspotsOption').find('.overflowOptionCheckbox').addClass('selected');
+                if ($('#projectOptionsHotspotsCheckbox').length > 0) $('#projectOptionsHotspotsCheckbox').addClass('selected');
+                $axure.messageCenter.postMessage('highlightInteractive', true);
+            } else if ($('#showHotspotsOption').find('.overflowOptionCheckbox').hasClass('selected')) {
+                $axure.messageCenter.postMessage('highlightInteractive', true);
+            }
+
+            generateAdaptiveViews(false);
+            if (MOBILE_DEVICE) generateAdaptiveViews(true);
+
+            $axure.player.suspendRefreshViewPort = true;
+
+            //Set the current view if it is defined in the hash string
+            //If the view is invalid, set it to 'auto' in the string
+            //ELSE set the view based on the currently selected view in the toolbar menu
+            var viewStr = $axure.player.getHashStringVar(ADAPTIVE_VIEW_VAR_NAME);
+            if(viewStr.length > 0) {
+                var $view = $('.adaptiveViewOption[val="' + viewStr + '"]');
+                if($view.length > 0) $view.click();
+                else $('.adaptiveViewOption[val="auto"]').click();
+            } else if($('.selectedRadioButton').length > 0) {
+                var $viewOption = $('.selectedRadioButton').parents('.adaptiveViewOption');
+                $viewOption.click();
+            }
+            updateAdaptiveViewHeader();
+
+            function setDefaultScaleForDevice() {
+                if(MOBILE_DEVICE && $axure.player.isMobileMode()) {
+                    $('.projectOptionsScaleRow[val="0"]').click();
+                } else {
+                    $('.vpScaleOption[val="0"]').click();
+                }
+            }
+
+            var scaleStr = $axure.player.getHashStringVar(SCALE_VAR_NAME);
+            if(scaleStr.length > 0) {
+                var $scale = $('.vpScaleOption[val="' + scaleStr + '"]');
+                if($scale.length > 0) $scale.click();
+                else setDefaultScaleForDevice();
+            } else {
+                setDefaultScaleForDevice();
+            }
+
+            var rotateStr = $axure.player.getHashStringVar(ROT_VAR_NAME);
+            if(rotateStr.length > 0) {
+                $('#vpRotate').prop('checked', true);
+            }
+
+            $axure.player.suspendRefreshViewPort = false;
+
+            if (!$axure.player.isViewOverridden()) $axure.messageCenter.postMessage('setAdaptiveViewForSize', { 'width': $('#mainPanel').width(), 'height': $('#mainPanel').height() });
+
+            $axure.player.refreshViewPort();
+
+            $axure.messageCenter.postMessage('finishInit');
+
+            showMainPanel();
+            return false;
+        });
+
+        var $vpContainer = $('#interfaceScaleListContainer');
+
+        if ($axure.player.zoomValues) {
+            var zoomValues = '';
+            $.each($axure.player.zoomValues, function(index, value ) {
+                zoomValues += '<div class="vpZoomValue" val=' + value +' ><div class="zoomValue">' + value + '%</div></div>';
+            });
+            $(zoomValues).appendTo('#scaleMenuContainer');
+            $('.vpZoomValue').click(vpZoomValue_click);
+        }
+        
+        var scaleOptions = '<div class="vpScaleOption" val="0"><div class="scaleRadioButton"></div>Default scale</div>';
+        scaleOptions += '<div class="vpScaleOption" val="1"><div class="scaleRadioButton"></div>Scale to width</div>';
+        scaleOptions += '<div class="vpScaleOption" val="2"><div class="scaleRadioButton"></div>Scale to fit</div>';
+        scaleOptions += '<div class="vpScaleOption" val="3" hidden><div class="scaleRadioButton"></div>User scale</div>';
+        $(scaleOptions).appendTo($vpContainer);        
+        $('#scaleMenuContainer').append($vpContainer);
+        $vpContainer.show();
+
+        $('#overflowMenuContainer').append('<div id="showHotspotsOption" class="showOption" style="order: 1"><div class="overflowOptionCheckbox"></div>Show hotspots</div>');        
+        
+        $('#showHotspotsOption').click(showHotspots_click);
+        $('.vpScaleOption').click(vpScaleOption_click);
+        $('.vpScaleOption').mouseup(function (event) {
+            event.stopPropagation();
+        });
+
+        if (MOBILE_DEVICE) {
+            var scaleOptions = '<div class="projectOptionsScaleRow" val="1"><div class="scaleRadioButton"></div>Scale to fit width</div>';
+            scaleOptions += '<div class="projectOptionsScaleRow" val="0"><div class="scaleRadioButton"></div>Original size (100%)</div>';
+            scaleOptions += '<div class="projectOptionsScaleRow" val="2" style="border-bottom: solid 1px #c7c7c7"><div class="scaleRadioButton"></div>Fit all to screen</div>';
+            $(scaleOptions).appendTo($('#projectOptionsScaleContainer'));
+
+            $('.projectOptionsScaleRow').click(vpScaleOption_click);
+        }
+
+        $('#searchBox').focusin(function() {
+            if($(this).is('.searchBoxHint')) {
+                $(this).val('');
+                $(this).removeClass('searchBoxHint');
+            }
+        }).focusout(function() {
+            if($(this).val() == '') {
+                $(this).addClass('searchBoxHint');
+            }
+        });
+
+
+        $('#searchBox').focusout();
+    });
+
+    var _formatViewDimension = function(dim) {
+        if(dim == 0) return 'any';
+        if(dim.toString().includes('.')) return dim.toFixed(2);
+        return dim;
+    };
+
+    function generateAdaptiveViews(forProjectOptions) {
+        var $container = forProjectOptions ? $('#projectOptionsAdaptiveViewsContainer') : $('#interfaceAdaptiveViewsListContainer');
+        var $viewSelect = forProjectOptions ? $('#projectOptionsViewSelect') : $('#viewSelect');
+        var adaptiveViewOptionClass = forProjectOptions ? 'projectOptionsAdaptiveViewRow' : 'adaptiveViewOption';
+        var currentViewClass = forProjectOptions ? '' : 'currentAdaptiveView';
+
+        $container.empty();
+        $viewSelect.empty();
+
+        //Fill out adaptive view container with prototype's defined adaptive views, as well as the default, and Auto
+        var viewsList = '<div class="' + adaptiveViewOptionClass + '" val="auto"><div class="adapViewRadioButton selectedRadioButton"></div>Adaptive</div>';
+        var viewSelect = '<option value="auto">Adaptive</option>';
+        if (typeof $axure.page.defaultAdaptiveView.name != 'undefined') {
+            //If the name is a blank string, make the view name the width if non-zero, else 'any'
+            var defaultView = $axure.page.defaultAdaptiveView;
+            var defaultViewName = defaultView.name;
+
+            var widthString = _formatViewDimension(defaultView.size.width);
+            var heightString = _formatViewDimension(defaultView.size.height);
+
+            var viewString = defaultViewName + ' (' + widthString + ' x ' + heightString + ')';
+
+            viewsList += '<div class="' + adaptiveViewOptionClass + ' ' + currentViewClass + '" val="default" data-dim="' + defaultView.size.width + 'x' + defaultView.size.height + '" cursor="' + defaultView.cursor + '">' +
+                '<div class="adapViewRadioButton"></div>' + viewString + '</div></div>';
+            viewSelect += '<option value="default">' + viewString + '</option>';
+        }
+
+        var useViews = $axure.document.configuration.useViews;
+        var hasViews = false;
+        if(useViews) {
+            for(var viewIndex = 0; viewIndex < $axure.page.adaptiveViews.length; viewIndex++) {
+                var currView = $axure.page.adaptiveViews[viewIndex];
+
+                var widthString = _formatViewDimension(currView.size.width);
+                var heightString = _formatViewDimension(currView.size.height);
+
+                var viewString = currView.name + ' (' + widthString + ' x ' + heightString + ')';
+                viewsList += '<div class="' + adaptiveViewOptionClass +
+                    ((forProjectOptions && (viewIndex == $axure.page.adaptiveViews.length - 1)) ? '" style="border-bottom: solid 1px #c7c7c7; margin-bottom: 15px;' : '') + 
+                    '" val="' +
+                    currView.id +
+                    '"  data-dim="' +
+                    currView.size.width +
+                    'x' +
+                    currView.size.height +
+                    '" cursor="' +
+                    currView.cursor +
+                    '"><div class="adapViewRadioButton"></div>' +
+                    viewString +
+                    '</div>';
+                viewSelect += '<option value="' + currView.id + '">' + viewString + '</option>';
+
+                hasViews = true;
+            }
+        }
+
+        $container.append(viewsList);
+        $viewSelect.append(viewSelect);
+
+        if (!hasViews) {
+            if (forProjectOptions) {
+                $('#projectOptionsAdaptiveViewsHeader').hide();
+                $('#projectOptionsAdaptiveViewsContainer').hide();
+            } else $('#interfaceAdaptiveViewsContainer').hide();
+        } else {
+            if (forProjectOptions) {
+                $('#projectOptionsAdaptiveViewsHeader').show();
+                $('#projectOptionsAdaptiveViewsContainer').show();
+            } else $('#interfaceAdaptiveViewsContainer').show();
+        }
+
+        $(('.' + adaptiveViewOptionClass)).click(adaptiveViewOption_click);
+
+        if (!forProjectOptions) {
+            $(('.' + adaptiveViewOptionClass)).mouseup(function (event) {
+                event.stopPropagation();
+            });
+        }
+    }
+
+    var _collapsedAll = true;
+
+    function setExpandCollapseState(collapsedAll) {
+        if (collapsedAll == _collapsedAll) return;
+        _collapsedAll = collapsedAll;
+        $("#expandCollapseAll").text(_collapsedAll ? "Expand all" : "Collapse all");
+    }
+
+    function expandCollapseAll_click(e) {
+        $(_collapsedAll ? ".sitemapPlus" : ".sitemapMinus").parent().click();
+    }
+
+    function collapse_click(event) {
+        if($(this).children('.sitemapPlus').length > 0) {
+            expand_click($(this));
+        } else {
+            $(this)
+                .children('.sitemapMinus').removeClass('sitemapMinus').addClass('sitemapPlus').end()
+                .closest('li').children('ul').hide(SHOW_HIDE_ANIMATION_DURATION);
+            setExpandCollapseState($(".sitemapMinus").length == 0);
+        }
+        event.stopPropagation();
+    }
+
+    function expand_click($this) {
+        setExpandCollapseState(false);
+        $this
+            .children('.sitemapPlus').removeClass('sitemapPlus').addClass('sitemapMinus').end()
+            .closest('li').children('ul').show(SHOW_HIDE_ANIMATION_DURATION);
+    }
+
+    function searchBoxExpand_click(event) {
+        if (!$('#searchIcon').hasClass('sitemapToolbarButtonSelected')) {
+            $('#searchIcon').addClass('sitemapToolbarButtonSelected')
+            $('#searchBox').width(0);
+            $('#searchBox').show();
+            $('#searchBox').animate({ width: '95%' }, { duration: 200, complete: function () { $('#searchBox').focus(); } });
+        }
+    }
+
+    function searchBoxClose_click(event) {
+        if ($('#searchIcon').hasClass('sitemapToolbarButtonSelected')) {
+            $('#searchBox').animate({ width: '0%' }, { duration: 200,
+                complete: function () {
+                    $('#searchBox').hide();
+                    $('#searchIcon').removeClass('sitemapToolbarButtonSelected')
+                }});
+            $('#searchBox').val('');
+            $('#searchBox').keyup();
+        }
+    }
+
+    function node_click(event) {
+        hideMainPanel();
+        $('#sitemapTreeContainer').find('.sitemapHighlight').removeClass('sitemapHighlight');
+        $(this).parent().addClass('sitemapHighlight');
+        $axure.page.navigate($(this).children('.sitemapPageLink')[0].getAttribute('nodeUrl'), true);
+    }
+
+    function hideMainPanel() {
+        $('#mainPanel').css('opacity', '0');
+        $('#clippingBounds').css('opacity', '0');
+    }
+    function showMainPanel() {
+        $('#mainPanel').animate({ opacity: 1 }, 10);
+        $('#clippingBounds').animate({ opacity: 1 }, 10);
+    }
+
+    $axure.messageCenter.addMessageListener(function(message, data) {
+        if(message == 'adaptiveViewChange') {
+            $('.adaptiveViewOption').removeClass('currentAdaptiveView');
+            if(data.viewId) {$('.adaptiveViewOption[val="' + data.viewId + '"]').addClass('currentAdaptiveView');}
+            else $('.adaptiveViewOption[val="default"]').addClass('currentAdaptiveView');
+
+            //when we set adaptive view through user event, we want to update the checkmark on sitemap
+            if(data.forceSwitchTo) {
+                $('.adapViewRadioButton').removeClass('selectedRadioButton');
+                $('div[val="' + data.forceSwitchTo + '"]').find('.adapViewRadioButton').addClass('selectedRadioButton');
+            }
+
+            updateAdaptiveViewHeader();
+            $axure.player.refreshViewPort();
+
+        } else if(message == 'previousPage') {
+            openPreviousPage();
+        } else if(message == 'nextPage') {
+            openNextPage();
+        }
+    });
+
+    $axure.player.toggleHotspots = function (val) {
+        var overflowMenuCheckbox = $('#showHotspotsOption').find('.overflowOptionCheckbox');
+        if ($(overflowMenuCheckbox).hasClass('selected')) {
+            if (!val) $('#showHotspotsOption').click();
+        } else {
+            if (val) $('#showHotspotsOption').click();
+        }
+    }
+
+    function showHotspots_click(event) {
+        var overflowMenuCheckbox = $('#showHotspotsOption').find('.overflowOptionCheckbox');
+        var projOptionsCheckbox = $('#projectOptionsHotspotsCheckbox');
+
+        if ($(overflowMenuCheckbox).hasClass('selected')) {
+            overflowMenuCheckbox.removeClass('selected');
+            if (projOptionsCheckbox.length > 0 ) projOptionsCheckbox.removeClass('selected');
+            $axure.messageCenter.postMessage('highlightInteractive', false);
+            //Delete 'hi' hash string var if it exists since default is unselected
+            $axure.player.deleteVarFromCurrentUrlHash(HIGHLIGHT_INTERACTIVE_VAR_NAME);
+        } else {
+            overflowMenuCheckbox.addClass('selected');
+            if (projOptionsCheckbox.length > 0) projOptionsCheckbox.addClass('selected');
+            $axure.messageCenter.postMessage('highlightInteractive', true);
+            //Add 'hi' hash string var so that stay highlighted across reloads
+            $axure.player.setVarInCurrentUrlHash(HIGHLIGHT_INTERACTIVE_VAR_NAME, 1);
+        }
+    }
+
+
+    function adaptiveViewOption_click(event) {
+        var currVal = $(this).attr('val');
+
+        $('.adaptiveViewOption').removeClass('currentAdaptiveView');
+        if(currVal) {$('.adaptiveViewOption[val="' + currVal + '"]').addClass('currentAdaptiveView');}
+        else $('.adaptiveViewOption[val="default"]').addClass('currentAdaptiveView');
+
+        $('.adapViewRadioButton').removeClass('selectedRadioButton');
+        $('div[val="' + currVal + '"]').find('.adapViewRadioButton').addClass('selectedRadioButton');
+
+        selectAdaptiveView(currVal);
+        $axure.player.closePopup();
+        updateAdaptiveViewHeader();
+    }
+
+    var selectAdaptiveView = $axure.player.selectAdaptiveView = function(currVal) {
+        if (currVal == 'auto') {
+            $axure.messageCenter.postMessage('setAdaptiveViewForSize', { 'width': $('#mainPanel').width(), 'height': $('#mainPanel').height() });
+            $axure.player.deleteVarFromCurrentUrlHash(ADAPTIVE_VIEW_VAR_NAME);
+        } else {
+            currentPageLoc = $axure.page.location.split("?")[0];
+            var decodedPageLoc = decodeURI(currentPageLoc);
+            var nodeUrl = decodedPageLoc.substr(decodedPageLoc.lastIndexOf('/')
+                ? decodedPageLoc.lastIndexOf('/') + 1
+                : 0);
+            var adaptiveData = {
+                src: nodeUrl
+            };
+
+            adaptiveData.view = currVal;
+            $axure.messageCenter.postMessage('switchAdaptiveView', adaptiveData);
+            $axure.player.setVarInCurrentUrlHash(ADAPTIVE_VIEW_VAR_NAME, currVal);
+        }
+    }
+
+    $axure.player.updateAdaptiveViewHeader = updateAdaptiveViewHeader = function () {
+        var hasDefinedDim = true;
+        var dimensionlessViewStr = '(any x any)';
+
+        var viewString = $('.adaptiveViewOption.currentAdaptiveView').text();
+        if (viewString != null && viewString.indexOf(dimensionlessViewStr) >= 0) hasDefinedDim = false;
+
+        if (!hasDefinedDim) {
+            var viewName = viewString.substring(0, viewString.lastIndexOf(' ('));
+            var widthString = $('#mainPanelContainer').width();
+            viewString = viewName + ' (' + widthString + ' x any)';
+        }
+
+        $('.adaptiveViewHeader').html(viewString);
+    }
+
+    $axure.player.selectScaleOption = function (scaleVal) {
+        var $scale = $('.vpScaleOption[val="' + scaleVal + '"]');
+        if ($scale.length > 0) $scale.click();
+    }
+
+    function vpScaleOption_click(event) {
+        var scaleCheckDiv = $(this).find('.scaleRadioButton');
+        var scaleVal = $(this).attr('val');
+        if (scaleVal == '0') {
+            $axure.player.zoomPage(100);
+        }
+        if (scaleCheckDiv.hasClass('selectedRadioButton')) return false;
+
+        var $selectedScaleOption = $('.vpScaleOption[val="' + scaleVal + '"], .projectOptionsScaleRow[val="' + scaleVal + '"]');
+        var $allScaleOptions = $('.vpScaleOption, .projectOptionsScaleRow');
+        $allScaleOptions.find('.scaleRadioButton').removeClass('selectedRadioButton');
+        $selectedScaleOption.find('.scaleRadioButton').addClass('selectedRadioButton');
+
+        if (scaleVal == '0') {
+            $axure.player.deleteVarFromCurrentUrlHash(SCALE_VAR_NAME);
+        } else if (typeof scaleVal !== 'undefined') {
+            $axure.player.setVarInCurrentUrlHash(SCALE_VAR_NAME, scaleVal);
+        }
+
+        $axure.player.refreshViewPort();
+        $axure.player.closePopup();
+    }
+
+    function vpZoomValue_click() {
+        var scaleVal = $(this).attr('val');
+        $axure.player.selectScaleOption(3);
+        $axure.player.zoomPage(scaleVal);
+        
+        $axure.player.closePopup();
+    }
+
+    function search_input_keyup(event) {
+        var searchVal = $(this).val().toLowerCase();
+        //If empty search field, show all nodes, else grey+hide all nodes and
+        //ungrey+unhide all matching nodes, as well as unhide their parent nodes
+        if(searchVal == '') {
+            $('.sitemapPageName').removeClass('sitemapGreyedName');
+            $('.sitemapNode').show();
+        } else {
+            $('.sitemapNode').hide();
+
+            $('.sitemapPageName').addClass('sitemapGreyedName').each(function() {
+                var nodeName = $(this).text().toLowerCase();
+                if(nodeName.indexOf(searchVal) != -1) {
+                    $(this).removeClass('sitemapGreyedName').parents('.sitemapNode:first').show().parents('.sitemapExpandableNode').show();
+                }
+            });
+        }
+    }
+
+
+    function generateSitemap() {
+        var treeUl = "<div id='sitemapHeader'' class='sitemapHeader'>";
+        treeUl += "<div id='sitemapToolbar' class='sitemapToolbar'>";
+        treeUl += "<div class='toolbarRow'>"
+
+        var sitemapTitle = $axure.player.getProjectName();
+        if (!sitemapTitle) sitemapTitle = "Pages";
+        treeUl += "<div class='pluginNameHeader'>" + sitemapTitle + "</div>";
+
+        //treeUl += '<div id="searchDiv"><span id="searchIcon" class="sitemapToolbarButton"></span><input id="searchBox" type="text"/></div>';
+        treeUl += "<div class='leftArrow sitemapToolbarButton'></div>";
+        treeUl += "<div class='rightArrow sitemapToolbarButton'></div>";
+        treeUl += "</div>";
+        treeUl += "<div class='toolbarRow'>"
+        treeUl += "<div id='searchDiv'><span id='searchIcon' class='sitemapToolbarButton'></span><input id='searchBox' type='text'/></div>";
+        treeUl += "<div id='expandCollapseAll'>Expand all</div>"
+        treeUl += "</div>";
+        treeUl += "</div>";
+        treeUl += "</div>";
+
+        ///////////////////
+
+        treeUl += "<div id='sitemapTreeContainer'>";
+        treeUl += "<ul class='sitemapTree' style='clear:both;'>";
+        var rootNodes = $axure.document.sitemap.rootNodes;
+        for(var i = 0; i < rootNodes.length; i++) {
+            treeUl += generateNode(rootNodes[i], 0);
+        }
+        treeUl += "</ul></div>";
+
+        if (!MOBILE_DEVICE) {
+            treeUl += "<div id='changePageInstructions' class='pageSwapInstructions'>Use  ";
+            treeUl += '<span class="backKeys"></span>';
+            treeUl += "  and  ";
+            treeUl += '<span class="forwardKeys"></span>';
+            treeUl += "  keys<br>to move between pages";
+            treeUl += "</div>";
+        }
+
+        $('#sitemapHost').html(treeUl);
+    }
+
+    function generateNode(node, level) {
+        var hasChildren = (node.children && node.children.length > 0);
+        var margin, returnVal;
+        var isFolder = node.type == "Folder";
+        if(hasChildren) {
+            margin = (9 + level * 17);
+            if (isFolder) {
+                returnVal = "<li class='sitemapNode sitemapExpandableNode'><div class='sitemapHover'><div class='sitemapPageLinkContainer sitemapPlusMinusLink' style='margin-left:" + margin + "px'><span class='sitemapPlus'></span>";
+            } else {
+                returnVal = "<li class='sitemapNode sitemapExpandableNode'><div class='sitemapHover'><div class='sitemapPageLinkContainer' style='margin-left:" + margin + "px'><a class='sitemapPlusMinusLink'><span class='sitemapMinus'></span></a>";
+            }
+        } else {
+            margin = (19 + level * 17);
+            returnVal = "<li class='sitemapNode sitemapLeafNode'><div class='sitemapHover'><div class='sitemapPageLinkContainer' style='margin-left:" + margin + "px'>";
+        }
+
+        if(!isFolder) {
+            returnVal += "<a class='sitemapPageLink' nodeUrl='" + node.url + "'>";
+            allNodeUrls.push(node.url);
+        }
+        returnVal += "<span class='sitemapPageIcon";
+		if(node.type == "Flow"){ returnVal += " sitemapFlowIcon";}
+        if(isFolder) { returnVal += " sitemapFolderIcon"; }
+
+        returnVal += "'></span><span class='sitemapPageName'>";
+        returnVal += $('<div/>').text(node.pageName).html();
+        returnVal += "</span>";
+        if(!isFolder) returnVal += "</a>";
+        returnVal += "</div></div>";
+
+        if(hasChildren) {
+            returnVal += isFolder ? "<ul style='display: none;'>" : "<ul>";
+            for(var i = 0; i < node.children.length; i++) {
+                var child = node.children[i];
+                returnVal += generateNode(child, level + 1);
+            }
+            returnVal += "</ul>";
+        }
+        returnVal += "</li>";
+        return returnVal;
+    }
+})();

+ 3 - 6
RFID/plugins/sitemap/styles/images/back_keys.svg

@@ -1,7 +1,4 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
-    <g fill="none" fill-rule="evenodd">
-        <rect width="18" height="18" x="1" y="1" stroke="#E1E0E0" stroke-width="2" rx="4"/>
-        <rect width="19" height="19" x=".5" y=".5" stroke="#979797" rx="4"/>
-        <path fill="#666" d="M9 5V4L4.448 6.5v1L9 9.5v-1C6.733 7.513 5.567 7.013 5.5 7c.069-.017 1.235-.683 3.5-2zM5.292 14.262a.675.675 0 0 1 .195-.477.676.676 0 0 1 .225-.147.753.753 0 0 1 .288-.054c.12 0 .227.022.321.066a.641.641 0 0 1 .234.183.827.827 0 0 1 .141.27c.032.102.048.213.048.333 0 .18-.026.367-.078.561a2.996 2.996 0 0 1-.222.576 3.439 3.439 0 0 1-.84 1.053l-.18-.174a.222.222 0 0 1-.078-.168c0-.052.028-.106.084-.162.04-.044.091-.103.153-.177s.125-.159.189-.255.123-.202.177-.318c.054-.116.093-.24.117-.372h-.078a.709.709 0 0 1-.282-.054.647.647 0 0 1-.219-.153.698.698 0 0 1-.144-.234.834.834 0 0 1-.051-.297z"/>
-    </g>
+<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M15.5 0.5H4.5C2.29086 0.5 0.5 2.29086 0.5 4.5V15.5C0.5 17.7091 2.29086 19.5 4.5 19.5H15.5C17.7091 19.5 19.5 17.7091 19.5 15.5V4.5C19.5 2.29086 17.7091 0.5 15.5 0.5Z" stroke="#718096"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M9 5V4L4.448 6.5V7.5L9 9.5V8.5C6.733 7.513 5.567 7.013 5.5 7C5.569 6.983 6.735 6.317 9 5ZM5.292 14.262C5.29136 14.0835 5.36147 13.912 5.487 13.785C5.5514 13.7214 5.62792 13.6714 5.712 13.638C5.80354 13.6013 5.90139 13.583 6 13.584C6.12 13.584 6.227 13.606 6.321 13.65C6.41225 13.6918 6.4924 13.7545 6.555 13.833C6.61831 13.9135 6.66612 14.005 6.696 14.103C6.728 14.205 6.744 14.316 6.744 14.436C6.744 14.616 6.718 14.803 6.666 14.997C6.61203 15.1961 6.53763 15.3892 6.444 15.573C6.23615 15.9759 5.95067 16.3338 5.604 16.626L5.424 16.452C5.39967 16.4313 5.3801 16.4055 5.36664 16.3765C5.35318 16.3475 5.34614 16.316 5.346 16.284C5.346 16.232 5.374 16.178 5.43 16.122C5.47 16.078 5.521 16.019 5.583 15.945C5.645 15.871 5.708 15.786 5.772 15.69C5.836 15.594 5.895 15.488 5.949 15.372C6.003 15.256 6.042 15.132 6.066 15H5.988C5.8913 15.0014 5.79533 14.983 5.706 14.946C5.62315 14.9108 5.54856 14.8587 5.487 14.793C5.42397 14.7253 5.37502 14.6458 5.343 14.559C5.3081 14.4639 5.29082 14.3633 5.292 14.262V14.262Z" fill="#718096"/>
 </svg>

+ 3 - 14
RFID/plugins/sitemap/styles/images/closed_item.svg

@@ -1,14 +1,3 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg width="5px" height="8px" viewBox="0 0 5 8" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
-    <title>open item copy</title>
-    <desc>Created with Sketch.</desc>
-    <defs></defs>
-    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <g id="Tree-item" transform="translate(-6.000000, -9.000000)" fill="#8C8C8C">
-            <g id="closed-item" transform="translate(5.062500, 9.000000)">
-                <polygon id="Rectangle-13" transform="translate(3.500000, 4.000000) rotate(-90.000000) translate(-3.500000, -4.000000) " points="0 1.6 7 1.6 3.5 6.4"></polygon>
-            </g>
-        </g>
-    </g>
-</svg>
+<svg width="5" height="8" viewBox="0 0 5 8" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M0.162476 7.5L0.162476 0.5L4.96248 4L0.162476 7.5Z" fill="#718096"/>
+</svg>

+ 8 - 14
RFID/plugins/sitemap/styles/images/flow.svg

@@ -1,15 +1,9 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg width="13" height="13" viewBox="0 0 13 13" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
- <g id="Page-1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
-  <g id="flow" sketch:type="MSArtboardGroup">
-   <rect id="Rectangle-38" fill="#62666b" sketch:type="MSShapeGroup" x="1" y="10" width="3" height="3"/>
-   <rect id="Rectangle-38-Copy" fill="#62666b" sketch:type="MSShapeGroup" x="9" y="10" width="3" height="3"/>
-   <path d="M6.90806226,0.277785818 C8.60537484,1.36088413 12,3.52708074 12,3.52708074 L6.47274687,7 L1,3.52708074 L6.47274687,0 C6.47274687,0 6.76295713,0.185190545 6.90806226,0.277785818 Z" id="Shape" fill="#62666b" sketch:type="MSShapeGroup"/>
-   <path d="M7.33917705,2.07093789 C8.05945137,2.55245016 9.5,3.51547471 9.5,3.51547471 L6.48513465,5.5 L3.5,3.51547471 L6.48513465,1.5 C6.48513465,1.5 7.05449625,1.88062526 7.33917705,2.07093789 Z" id="Shape-Copy-3" fill="#ffffff" sketch:type="MSShapeGroup"/>
-   <path d="M2.45,9 L10.55,9 L11,9 L11,8 L10.55,8 L2.45,8 L2,8 L2,9 L2.45,9 L2.45,9 Z" id="Shape" fill="#62666b" sketch:type="MSShapeGroup"/>
-   <path d="M7,7.66666667 L7,6.33333333 L7,6 L6,6 L6,6.33333333 L6,7.66666667 L6,8 L7,8 L7,7.66666667 L7,7.66666667 Z" id="Shape" fill="#62666b" sketch:type="MSShapeGroup"/>
-   <path d="M3,10.6666667 L3,9.33333333 L3,9 L2,9 L2,9.33333333 L2,10.6666667 L2,11 L3,11 L3,10.6666667 L3,10.6666667 Z" id="Shape-Copy" fill="#62666b" sketch:type="MSShapeGroup"/>
-   <path d="M11,10.6666667 L11,9.33333333 L11,9 L10,9 L10,9.33333333 L10,10.6666667 L10,11 L11,11 L11,10.6666667 L11,10.6666667 Z" id="Shape-Copy-2" fill="#62666b" sketch:type="MSShapeGroup"/>
-  </g>
- </g>
+<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg">
+	<path d="M4 10H1V13H4V10Z" fill="#37465E"/>
+	<path d="M12 10H9V13H12V10Z" fill="#37465E"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M6.47275 0L1 3.52708L6.47275 7L12 3.52708L6.47275 0ZM10.1308 3.52054L6.47542 1.18796L2.85608 3.52056L6.47539 5.81732L10.1308 3.52054Z" fill="#37465E"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M2.45 9H10.55H11V8H10.55H2.45H2V9H2.45Z" fill="#37465E"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M7 7.66667V6.33333V6H6V6.33333V7.66667V8H7V7.66667Z" fill="#37465E"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M3 10.6667V9.33333V9H2V9.33333V10.6667V11H3V10.6667Z" fill="#37465E"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M11 10.6667V9.33333V9H10V9.33333V10.6667V11H11V10.6667Z" fill="#37465E"/>
 </svg>

+ 6 - 5
RFID/plugins/sitemap/styles/images/folder_closed_blue.svg

@@ -1,6 +1,7 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 15 15">
-    <g fill="#138CDE" fill-rule="evenodd">
-        <path d="M2 4.061h11v8.485H2z"/>
-        <path d="M2 3h4.583v3.182H2z"/>
-    </g>
+<svg width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg">
+<mask id="path-1-inside-1_8335_27807" fill="white">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M2 2C1.44772 2 1 2.44772 1 3V5V13C1 13.5523 1.44772 14 2 14H13C13.5523 14 14 13.5523 14 13V5C14 4.44772 13.5523 4 13 4H7L6.50955 3.0191C6.50318 3.00637 6.49738 2.9941 6.4913 2.98123C6.42647 2.84394 6.00736 2 5.5 2H2Z"/>
+</mask>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M2 2C1.44772 2 1 2.44772 1 3V5V13C1 13.5523 1.44772 14 2 14H13C13.5523 14 14 13.5523 14 13V5C14 4.44772 13.5523 4 13 4H7L6.50955 3.0191C6.50318 3.00637 6.49738 2.9941 6.4913 2.98123C6.42647 2.84394 6.00736 2 5.5 2H2Z" fill="#718096"/>
+<path d="M7 4L6.10557 4.44721L6.38197 5H7V4ZM6.50955 3.0191L5.61512 3.46631L5.61512 3.46631L6.50955 3.0191ZM6.4913 2.98123L5.58703 3.40819L5.58703 3.4082L6.4913 2.98123ZM2 3V3V1C0.895431 1 0 1.89543 0 3H2ZM2 5V3H0V5H2ZM2 13V5H0V13H2ZM2 13H2H0C0 14.1046 0.895431 15 2 15V13ZM13 13H2V15H13V13ZM13 13V15C14.1046 15 15 14.1046 15 13H13ZM13 5V13H15V5H13ZM13 5H15C15 3.89543 14.1046 3 13 3V5ZM7 5H13V3H7V5ZM5.61512 3.46631L6.10557 4.44721L7.89443 3.55279L7.40398 2.57188L5.61512 3.46631ZM5.58703 3.4082C5.59283 3.42048 5.60308 3.44223 5.61512 3.46631L7.40398 2.57189C7.40384 2.57162 7.40325 2.57044 7.40189 2.5676C7.40039 2.56447 7.39863 2.56075 7.39556 2.55426L5.58703 3.4082ZM5.5 3C5.42263 3 5.36198 2.98361 5.32376 2.96877C5.30505 2.96151 5.29159 2.9546 5.28343 2.95C5.27928 2.94767 5.27625 2.94578 5.27431 2.94453C5.27238 2.94328 5.2714 2.94257 5.27135 2.94253C5.2713 2.9425 5.27205 2.94304 5.27358 2.94427C5.27511 2.9455 5.27729 2.94732 5.2801 2.9498C5.28582 2.95485 5.29346 2.96203 5.30286 2.97169C5.32209 2.99145 5.34489 3.01767 5.37033 3.05059C5.48139 3.19432 5.5662 3.36407 5.58703 3.40819L7.39557 2.55426C7.35158 2.4611 7.19441 2.14024 6.95287 1.82767C6.83209 1.67137 6.66401 1.4825 6.44829 1.32549C6.23413 1.16962 5.90965 1 5.5 1V3ZM2 3H5.5V1H2V3Z" fill="#37465E" mask="url(#path-1-inside-1_8335_27807)"/>
 </svg>

+ 4 - 9
RFID/plugins/sitemap/styles/images/forward_keys.svg

@@ -1,10 +1,5 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
-    <g fill="none" fill-rule="evenodd">
-        <rect width="18" height="18" x="1" y="1" stroke="#E1E0E0" stroke-width="2" rx="4"/>
-        <rect width="19" height="19" x=".5" y=".5" stroke="#979797" rx="4"/>
-        <path fill="#666" d="M4.448 8.5v1L9 7V6L4.448 4v1c2.267.987 3.433 1.487 3.5 1.5-.069.017-1.235.683-3.5 2z"/>
-        <text fill="#666" font-family="Lato-Regular, Lato" font-size="12">
-            <tspan x="4.728" y="16">.</tspan>
-        </text>
-    </g>
+<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M15.5 0.5H4.5C2.29086 0.5 0.5 2.29086 0.5 4.5V15.5C0.5 17.7091 2.29086 19.5 4.5 19.5H15.5C17.7091 19.5 19.5 17.7091 19.5 15.5V4.5C19.5 2.29086 17.7091 0.5 15.5 0.5Z" stroke="#718096"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M4.448 8.5V9.5L9 7V6L4.448 4V5C6.715 5.987 7.881 6.487 7.948 6.5C7.879 6.517 6.713 7.183 4.448 8.5Z" fill="#718096"/>
+<path d="M5.39403 15.34C5.39403 15.236 5.41203 15.138 5.44803 15.046C5.48803 14.954 5.54003 14.874 5.60403 14.806C5.67203 14.738 5.75203 14.684 5.84403 14.644C5.93603 14.604 6.03403 14.584 6.13803 14.584C6.24203 14.584 6.34003 14.604 6.43203 14.644C6.52403 14.684 6.60403 14.738 6.67203 14.806C6.74003 14.874 6.79403 14.954 6.83403 15.046C6.87403 15.138 6.89403 15.236 6.89403 15.34C6.89403 15.448 6.87403 15.548 6.83403 15.64C6.79403 15.728 6.74003 15.806 6.67203 15.874C6.60403 15.942 6.52403 15.994 6.43203 16.03C6.34003 16.07 6.24203 16.09 6.13803 16.09C6.03403 16.09 5.93603 16.07 5.84403 16.03C5.75203 15.994 5.67203 15.942 5.60403 15.874C5.54003 15.806 5.48803 15.728 5.44803 15.64C5.41203 15.548 5.39403 15.448 5.39403 15.34Z" fill="#718096"/>
 </svg>

+ 2 - 2
RFID/plugins/sitemap/styles/images/left_arrow.svg

@@ -1,3 +1,3 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="6" height="11" viewBox="0 0 6 11">
-    <path fill="#6D6D6D" fill-rule="evenodd" d="M5.5 11L0 5.5 5.5 0v2L2 5.5 5.5 9z"/>
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+    <path d="M10 12L6 8L10 4" stroke="#1E293B" stroke-linecap="round" stroke-linejoin="round"/>
 </svg>

+ 3 - 12
RFID/plugins/sitemap/styles/images/open_item.svg

@@ -1,12 +1,3 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg width="9px" height="10px" viewBox="0 0 9 10" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
-    <title>open item</title>
-    <desc>Created with Sketch.</desc>
-    <defs></defs>
-    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <g id="open-item" fill="#8C8C8C">
-            <polygon id="Rectangle-13" points="0 0 9 0 4.5 6"></polygon>
-        </g>
-    </g>
-</svg>
+<svg width="9" height="10" viewBox="0 0 9 10" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H9L4.5 6L0 0Z" fill="#718096"/>
+</svg>

+ 5 - 5
RFID/plugins/sitemap/styles/images/page_lt_grey.svg

@@ -1,6 +1,6 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="9" height="11" viewBox="0 0 9 11">
-    <g fill="none" fill-rule="evenodd" stroke="#979797">
-        <path d="M.5.5h8v10h-8z"/>
-        <path stroke-linecap="square" d="M2.5 7.5h4M2.5 3.5h4M2.5 5.5h4"/>
-    </g>
+<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
+    <path d="M11.6667 1H2.33333C1.59695 1 1 1.59695 1 2.33333V11.6667C1 12.403 1.59695 13 2.33333 13H11.6667C12.403 13 13 12.403 13 11.6667V2.33333C13 1.59695 12.403 1 11.6667 1Z" stroke="#1E293B" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M3.66663 4.3335H10.3333" stroke="#1E293B" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M3.66663 7H10.3333" stroke="#1E293B" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M3.66663 9.6665H10.3333" stroke="#1E293B" stroke-linecap="round" stroke-linejoin="round"/>
 </svg>

+ 2 - 2
RFID/plugins/sitemap/styles/images/right_arrow.svg

@@ -1,3 +1,3 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="6" height="11" viewBox="0 0 6 11">
-    <path fill="#6D6D6D" fill-rule="evenodd" d="M.5 11L6 5.5.5 0v2L4 5.5.5 9z"/>
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+    <path d="M6 12L10 8L6 4" stroke="#1E293B" stroke-linecap="round" stroke-linejoin="round"/>
 </svg>

+ 3 - 5
RFID/plugins/sitemap/styles/images/search_off.svg

@@ -1,6 +1,4 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 11 11">
-    <g fill="none" fill-rule="evenodd" stroke="#018DCC" transform="translate(1 1)">
-        <path stroke-linecap="square" d="M6.5 6.5l2.791 2.865"/>
-        <circle cx="3.5" cy="3.5" r="3.5"/>
-    </g>
+<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
+    <path d="M6.33333 11.6667C9.27885 11.6667 11.6667 9.27885 11.6667 6.33333C11.6667 3.38781 9.27885 1 6.33333 1C3.38781 1 1 3.38781 1 6.33333C1 9.27885 3.38781 11.6667 6.33333 11.6667Z" stroke="#2563EB" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M13 13L10.1333 10.1333" stroke="#2563EB" stroke-linecap="round" stroke-linejoin="round"/>
 </svg>

+ 3 - 5
RFID/plugins/sitemap/styles/images/search_on.svg

@@ -1,6 +1,4 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 11 11">
-    <g fill="none" fill-rule="evenodd" stroke="#535353" transform="translate(1 1)">
-        <path stroke-linecap="square" d="M6.5 6.5l2.791 2.865"/>
-        <circle cx="3.5" cy="3.5" r="3.5"/>
-    </g>
+<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
+    <path d="M6.33333 11.6667C9.27885 11.6667 11.6667 9.27885 11.6667 6.33333C11.6667 3.38781 9.27885 1 6.33333 1C3.38781 1 1 3.38781 1 6.33333C1 9.27885 3.38781 11.6667 6.33333 11.6667Z" stroke="#1E293B" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M13 13L10.1333 10.1333" stroke="#1E293B" stroke-linecap="round" stroke-linejoin="round"/>
 </svg>

+ 6 - 2
RFID/plugins/sitemap/styles/images/sitemap_panel_off.svg

@@ -1,3 +1,7 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="14" viewBox="0 0 16 14">
-    <path fill="#008DCB" fill-rule="nonzero" d="M14.965 6C15.532 6 16 6.433 16 7s-.434 1-1.002 1H1.002A.983.983 0 0 1 0 7c0-.567.434-1 1.002-1h13.963zm-4.001 6c.568 0 1.036.433 1.036 1s-.435 1-1.003 1H1.003A.984.984 0 0 1 0 13c0-.567.435-1 1.003-1h9.96zM1.003 2A.984.984 0 0 1 0 1c0-.567.435-1 1.003-1h9.994A.984.984 0 0 1 12 1c0 .567-.435 1-1.003 1H1.003z"/>
+<svg width="14" height="10" viewBox="0 0 14 10" fill="none" xmlns="http://www.w3.org/2000/svg">
+    <path d="M12.9998 5H7.6665" stroke="#2563EB" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M13.0002 1H4.3335" stroke="#2563EB" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M12.9998 9H7.6665" stroke="#2563EB" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M1 1V3.66667C1 4.4 1.6 5 2.33333 5H4.33333" stroke="#2563EB" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M1 3.6665V7.6665C1 8.39984 1.6 8.99984 2.33333 8.99984H4.33333" stroke="#2563EB" stroke-linecap="round" stroke-linejoin="round"/>
 </svg>

+ 6 - 2
RFID/plugins/sitemap/styles/images/sitemap_panel_on.svg

@@ -1,3 +1,7 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="14" viewBox="0 0 16 14">
-    <path fill="#6D6D6D" fill-rule="nonzero" d="M14.965 6C15.532 6 16 6.433 16 7s-.434 1-1.002 1H1.002A.983.983 0 0 1 0 7c0-.567.434-1 1.002-1h13.963zm-4.001 6c.568 0 1.036.433 1.036 1s-.435 1-1.003 1H1.003A.984.984 0 0 1 0 13c0-.567.435-1 1.003-1h9.96zM1.003 2A.984.984 0 0 1 0 1c0-.567.435-1 1.003-1h9.994A.984.984 0 0 1 12 1c0 .567-.435 1-1.003 1H1.003z"/>
+<svg width="14" height="10" viewBox="0 0 14 10" fill="none" xmlns="http://www.w3.org/2000/svg">
+    <path d="M13.0001 5H7.66675" stroke="#1E293B" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M12.9999 1H4.33325" stroke="#1E293B" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M13.0001 9H7.66675" stroke="#1E293B" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M1 1V3.66667C1 4.4 1.6 5 2.33333 5H4.33333" stroke="#1E293B" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M1 3.6665V7.6665C1 8.39984 1.6 8.99984 2.33333 8.99984H4.33333" stroke="#1E293B" stroke-linecap="round" stroke-linejoin="round"/>
 </svg>

+ 403 - 383
RFID/plugins/sitemap/styles/sitemap.css

@@ -1,384 +1,404 @@
-
-#sitemapHost {
-    display: flex;
-    flex-direction: column;
-    height: 100%;
-}
-
-#sitemapHostBtn a {
-    background: url('images/sitemap_panel_on.svg') no-repeat center center, linear-gradient(transparent, transparent);
-}
-
-#sitemapHostBtn a.selected, #sitemapHostBtn a.selected:hover {
-    background: url('images/sitemap_panel_off.svg') no-repeat center center, linear-gradient(transparent, transparent);
-}
-
-#sitemapHost .pageButtonHeader {
-    top: -27px;
-}
-
-#sitemapTreeContainer {
-    overflow: auto;
-    width: 100%;
-    flex: 1;
-    -webkit-overflow-scrolling: touch;
-}
-
-.mobileMode #sitemapTreeContainer {
-    margin-left: 5px;
-    overflow-x: hidden;
-}
-
-.sitemapTree {
-    margin: 0px 0px 10px 0px;
-    overflow:visible;
-}
-
-.sitemapTree ul {
-    list-style-type: none;
-    margin: 0px 0px 0px 0px;
-    padding-left: 0px;
-}
-
-ul.sitemapTree {
-    display: inline-block;
-    min-width: 100%;
-}
-
-.pageSwapInstructions {
-    width: 129px;
-    font-size: 12px;
-    text-align: center;
-    color: #8c8c8c;
-    margin: 0 auto;
-    padding: 12px 0px;
-    line-height: 20px;
-}
-
-.sitemapMinus, .sitemapPlus {
-	vertical-align:middle;
-    background-repeat: no-repeat;
-	margin-right: 3px;	
-    width: 7px;
-    height: 8px;
-    object-fit: contain;
-    display:inline-block;
-}
-    .sitemapMinus {
-        margin-bottom: 0px;
-        background: url('images/open_item.svg') no-repeat center center, linear-gradient(transparent,transparent);
-    }
-    .sitemapPlus {
-        margin-bottom: 2px;
-        background: url('images/closed_item.svg') no-repeat center center, linear-gradient(transparent,transparent);
-    }
-
-.mobileMode .sitemapMinus, .mobileMode .sitemapPlus {
-    width: 10.5px;
-    height: 12px;
-    margin-right: 5px;	
-    background-size: contain;
-}
-
-.sitemapPageLink {
-    margin-left: 0px;
-}
-
-.sitemapPageIcon {
-	margin: 0px 6px -3px 3px;
-    width: 16px;
-    height: 16px;
-    display: inline-block;
-    background: url('images/page_lt_grey.svg') no-repeat center center, linear-gradient(transparent,transparent);
-}
-
-.mobileMode .sitemapPageIcon {
-    margin-right: 7px;	
-    background-size: contain;
-}
-
-.sitemapFolderIcon {
-    background: url('images/folder_closed_blue.svg') no-repeat center center, linear-gradient(transparent,transparent);
-}
-
-.mobileMode .sitemapFolderIcon {
-    width: 18px;
-    height: 18px;
-    margin-left: 1px;
-    background-position-y: 1px;
-    background-size: contain;
-}
-
-.sitemapFlowIcon {
-    background: url('images/flow.svg') no-repeat center center, linear-gradient(transparent,transparent);
-}
-
-.sitemapFolderOpenIcon {
-    background: url('images/folder_open.png') no-repeat center center;
-    background: url('images/folder_open.svg') no-repeat center center, linear-gradient(transparent,transparent);
-}
-
-.sitemapPageName {
-    font-size: 14px;
-    line-height: 1.93;
-    color: #4a4a4a;
-}
-
-.sitemapPageName.mobileText {
-    line-height: 1.69;
-}
-
-.sitemapNode  {
-    white-space:nowrap;
-}
-
-.sitemapPageLinkContainer {
-    cursor: pointer;
-    padding-right: 10px;
-}
-
-.mobileMode .sitemapPageLinkContainer {
-    margin-bottom: 13px;
-}
-
-.sitemapHighlight {
-    background-color: #e6e6e6;
-}
-
-.sitemapGreyedName
-{
-	color: #AAA;
-}
-
-.sitemapPluginNameHeader {
-    margin: 13px 9px 5px 9px;
-    font-size: 14px;
-    color: #444444;
-}
-
-.sitemapHeader {
-    padding-top: 7px;
-}
-
-.mobileMode .sitemapHeader {
-    padding-top: 0px;
-}
-
-.sitemapToolbar {
-    margin: 0px 3px 0px 5px;
-    display: flex;
-    align-items: center;
-    justify-content: flex-end;
-}
-
-.sitemapToolbarButton {
-    width: 19px;
-    height: 18px;
-    border: 1px solid transparent;
-    cursor: pointer;
-    flex: 0 0 auto;
-}
-
-.hashover .sitemapToolbarButton:hover {
-    border-radius: 3px;
-    background-color: #e6e6e6 !important;
-}
-
-.sitemapToolbarButton.sitemapToolbarButtonSelected, .sitemapToolbarButton.sitemapToolbarButtonSelected:hover{
-    background-color: inherit !important;
-}
-
-.leftArrow {
-    background: url('images/left_arrow.svg') no-repeat center center, linear-gradient(transparent,transparent);
-    margin-left: 11px;
-}
-
-.rightArrow {
-    background: url('images/right_arrow.svg') no-repeat center center, linear-gradient(transparent,transparent);
-    margin-left: 3px;
-    margin-right: 2px;
-}
-
-#searchIcon {
-    width: 10px;
-    height: 10px;
-    object-fit: contain;
-    background: url('images/search_on.svg') no-repeat center center, linear-gradient(transparent,transparent);
-    vertical-align: bottom;
-    padding: 5px 4px 5px 4px;
-    display: inline-block;
-}
-
-#searchIcon.sitemapToolbarButtonSelected {
-    padding: 5px 3px 5px 5px;
-    border-top-left-radius: 5px;
-    border-bottom-left-radius: 5px;
-    border-left: solid 1px #cccccc;
-    border-top: solid 1px #cccccc;
-    border-bottom: solid 1px #cccccc;
-    background: url('images/search_off.svg') no-repeat center center, linear-gradient(transparent,transparent);
-    background-color: #FFFFFF !important;
-}
-
-.backKeys {
-    width: 20px;
-    height: 21px;
-    object-fit: contain;
-    vertical-align: bottom;
-    margin: 2px;
-    display: inline-block;
-    background: url('images/back_keys.svg') no-repeat center center, linear-gradient(transparent,transparent);
-}
-
-.forwardKeys {
-    width: 20px;
-    height: 21px;
-    object-fit: contain;
-    vertical-align: bottom;
-    margin: 2px;
-    display: inline-block;
-    background: url('images/forward_keys.svg') no-repeat center center, linear-gradient(transparent,transparent);
-}
-
-#interfaceAdaptiveViewsListContainer {
-    position: absolute;
-    display: none;
-    width: 220px;
-    left: 155px;
-    padding: 6px 9px;
-    top: 36px;
-}
-
-#interfaceScaleListContainer {
-    padding: 7.5px 9px 12px 16px;
-    margin-top: 9px;
-    border-top: solid 1px #bdbcbc;
-    order: 10;
-}
-
-.adaptiveViewOption, .vpPresetOption, .vpScaleOption {
-    padding: 3px 0px 3px 0px;
-    color: #3B3B3B;
-    display: flex;
-}
-
-.projectOptionsScaleRow, .projectOptionsAdaptiveViewRow, .projectOptionsHotspotsRow {
-    border-top: solid 1px #c7c7c7;
-    display: flex;
-    padding: 13px 7px 13px 0px;
-}
-
-.adaptiveViewOption:hover, .vpScaleOption:hover, .vpPresetOption:hover, .projectOptionsAdaptiveViewRow:hover, .projectOptionsScaleRow:hover
-{ 
-	cursor: pointer;
-}
-
-.scaleRadioButton, .adapViewRadioButton {
-    border: solid 1px #8c8c8c;
-    display: inline-block;
-    position: relative;
-    width: 12px;
-    height: 12px;
-    border-radius: 48px;
-    margin-right: 12px;
-    top: 2px;
-    flex-shrink: 0;
-}
-
-.mobileMode .scaleRadioButton, .mobileMode .adapViewRadioButton {
-    width: 20px;
-    height: 20px;
-    border-radius: 60px;
-    margin-right: 22px;
-    margin-left: 22px;
-    top: 0px;
-    flex-shrink: 0;
-}
-
-.selectedRadioButton {
-    border: solid 1px #20aca9;
-}
-
-.selectedRadioButtonFill { 
-    position: relative;
-    display: none;
-    background-color: #20aca9;
-    margin: auto;
-    width: 8px;
-    height: 8px;
-    border-radius: 30px;
-    top: 2px;
-}
-    .mobileMode .selectedRadioButtonFill {
-        width: 12px;
-        height: 12px;
-        border-radius: 48px;
-        top: 4px;
-    }
-
-#searchDiv {
-    display: flex;
-    margin-right: auto;
-    flex: 1;
-}
-
-#searchBox {
-    display: none;
-    width: 0%;
-    height: 22px;
-    padding-left: 5px;
-    border-radius: 0px 5px 5px 0px;
-    border-right: solid 1px #cccccc;
-    border-top: solid 1px #cccccc;
-    border-bottom: solid 1px #cccccc;
-    border-left: none;
-    -webkit-appearance: none;
-}
-
-#searchBox:focus {
-    outline-width: 0;
-}
-
-.searchBoxHint {
-	color: #8f949a;
-}
-
-#sitemapHost.popup #searchDiv{
-    display: none;
-}
-
-#sitemapHost.popup #sitemapHeader{
-    display: none;
-}
-
-#sitemapHost.popup #changePageInstructions{
-    display: none;
-}
-
-.mobileMode #sitemapHeader {
-    display: none;
-}
-
-
-
-/* Expo Sitemap
-******************************************************************************/
-
-.expoSitemapNode {
-    padding: 15px;
-    text-align: center;
-}
-
-.sitemapPageImg {
-    max-width: 90%;
-    max-height: 150px;
-}
-
-.popup .sitemapPageImg {
-    display: none;
-}
-
-.popup .expoSitemapNode {
-    padding: 0 0 0 10px;
-    text-align: left;
+
+#sitemapHost {
+    display: flex;
+    flex-direction: column;
+    height: 100%;
+}
+
+#sitemapHostBtn a {
+    background: url('images/sitemap_panel_on.svg') no-repeat center center, linear-gradient(transparent, transparent);
+}
+
+#sitemapHostBtn a.selected, #sitemapHostBtn a.selected:hover {
+    background: url('images/sitemap_panel_off.svg') no-repeat center center, linear-gradient(transparent, transparent);
+}
+
+#sitemapHost .pageButtonHeader {
+    top: -27px;
+}
+
+#sitemapTreeContainer {
+    overflow: auto;
+    width: 100%;
+    flex: 1;
+    -webkit-overflow-scrolling: touch;
+}
+
+.mobileMode #sitemapTreeContainer {
+    margin-left: 5px;
+    overflow-x: hidden;
+}
+
+.sitemapTree {
+    margin: 0px 0px 10px 0px;
+    overflow:visible;
+}
+
+.sitemapTree ul {
+    list-style-type: none;
+    margin: 0px 0px 0px 0px;
+    padding-left: 0px;
+}
+
+ul.sitemapTree {
+    display: inline-block;
+    min-width: 100%;
+}
+
+.pageSwapInstructions {
+    font-size: 12px;
+    text-align: center;
+    color: #718096;
+    margin: 0 auto;
+    padding: 12px 0px;
+    line-height: 20px;
+    opacity: .8;
+}
+
+.sitemapMinus, .sitemapPlus {
+	vertical-align:middle;
+    background-repeat: no-repeat;
+	margin-right: 3px;	
+    width: 7px;
+    height: 8px;
+    object-fit: contain;
+    display:inline-block;
+}
+    .sitemapMinus {
+        margin-bottom: 0px;
+        background: url('images/open_item.svg') no-repeat center center, linear-gradient(transparent,transparent);
+    }
+    .sitemapPlus {
+        margin-bottom: 2px;
+        background: url('images/closed_item.svg') no-repeat center center, linear-gradient(transparent,transparent);
+    }
+
+.mobileMode .sitemapMinus, .mobileMode .sitemapPlus {
+    width: 10.5px;
+    height: 12px;
+    margin-right: 5px;	
+    background-size: contain;
+}
+
+.sitemapPageLink {
+    margin-left: 0px;
+}
+
+.sitemapPageIcon {
+	margin: 0px 6px -3px 3px;
+    width: 16px;
+    height: 16px;
+    display: inline-block;
+    background: url('images/page_lt_grey.svg') no-repeat center center, linear-gradient(transparent,transparent);
+}
+
+.mobileMode .sitemapPageIcon {
+    margin-right: 7px;	
+    background-size: contain;
+}
+
+.sitemapFolderIcon {
+    background: url('images/folder_closed_blue.svg') no-repeat center center, linear-gradient(transparent,transparent);
+}
+
+.mobileMode .sitemapFolderIcon {
+    width: 18px;
+    height: 18px;
+    margin-left: 1px;
+    background-position-y: 1px;
+    background-size: contain;
+}
+
+.sitemapFlowIcon {
+    background: url('images/flow.svg') no-repeat center center, linear-gradient(transparent,transparent);
+}
+
+.sitemapFolderOpenIcon {
+    background: url('images/folder_open.png') no-repeat center center;
+    background: url('images/folder_open.svg') no-repeat center center, linear-gradient(transparent,transparent);
+}
+
+.sitemapPageName {
+    font-size: 14px;
+    line-height: 2.1;
+    /*color: #4a4a4a;*/
+}
+
+.sitemapPageName.mobileText {
+    line-height: 1.69;
+}
+
+.sitemapNode  {
+    white-space:nowrap;
+}
+
+.sitemapPageLinkContainer {
+    cursor: pointer;
+    padding-right: 10px;
+}
+
+.mobileMode .sitemapPageLinkContainer {
+    margin-bottom: 13px;
+}
+
+.sitemapHighlight {
+    background-color: #BFDBFE66 !important;
+}
+
+.sitemapHover {
+}
+
+.sitemapHover:hover {
+    background-color: #F5FAFE;
+}
+
+.sitemapGreyedName
+{
+	color: #AAA;
+}
+
+.sitemapHeader {
+    padding: 20px 0 0 7px;
+}
+
+.mobileMode .sitemapHeader {
+    padding-top: 0px;
+}
+
+.sitemapToolbar {
+    margin: 0px 3px 0px 5px;
+}
+
+.toolbarRow {
+    margin-bottom: 3px;
+    display: flex;
+    align-items: center;
+    justify-content: flex-end;
+}
+
+#expandCollapseAll {
+    align-self: center;
+    margin: 0 4px 0 8px;
+    font-size: 14px;
+    text-align: end;
+    user-select: none;
+    cursor: pointer;
+}
+
+#expandCollapseAll:hover {
+    color: #2563EB;
+}
+
+.sitemapToolbarButton {
+    width: 19px;
+    height: 18px;
+    border: 1px solid transparent;
+    cursor: pointer;
+    flex: 0 0 auto;
+}
+
+.hashover .sitemapToolbarButton:hover {
+    border-radius: 3px;
+    background-color: #E5E7EB66 !important;
+}
+
+.sitemapToolbarButton.sitemapToolbarButtonSelected, .sitemapToolbarButton.sitemapToolbarButtonSelected:hover{
+    background-color: inherit !important;
+}
+
+.leftArrow {
+    background: url('images/left_arrow.svg') no-repeat center center, linear-gradient(transparent,transparent);
+    margin-left: 11px;
+}
+
+.rightArrow {
+    background: url('images/right_arrow.svg') no-repeat center center, linear-gradient(transparent,transparent);
+    margin-left: 3px;
+    margin-right: 2px;
+}
+
+#searchIcon {
+    width: 10px;
+    height: 10px;
+    object-fit: contain;
+    background: url('images/search_on.svg') no-repeat center center, linear-gradient(transparent,transparent);
+    vertical-align: bottom;
+    padding: 5px 4px 5px 14px;
+    display: inline-block;
+}
+
+#searchIcon.sitemapToolbarButtonSelected {
+    padding: 5px 3px 5px 15px;
+    border-top-left-radius: 5px;
+    border-bottom-left-radius: 5px;
+    border-left: solid 1px #cccccc;
+    border-top: solid 1px #cccccc;
+    border-bottom: solid 1px #cccccc;
+    background: url('images/search_off.svg') no-repeat center center, linear-gradient(transparent,transparent);
+    background-color: #FFFFFF !important;
+}
+
+.backKeys {
+    width: 20px;
+    height: 21px;
+    object-fit: contain;
+    vertical-align: bottom;
+    margin: 2px;
+    display: inline-block;
+    background: url('images/back_keys.svg') no-repeat center center, linear-gradient(transparent,transparent);
+}
+
+.forwardKeys {
+    width: 20px;
+    height: 21px;
+    object-fit: contain;
+    vertical-align: bottom;
+    margin: 2px;
+    display: inline-block;
+    background: url('images/forward_keys.svg') no-repeat center center, linear-gradient(transparent,transparent);
+}
+
+#interfaceAdaptiveViewsListContainer {
+    position: absolute;
+    display: none;
+    width: 220px;
+    left: 155px;
+    padding: 6px 9px;
+    top: 36px;
+}
+
+.vpZoomValue + #interfaceScaleListContainer {
+    padding-top: 5px;
+    border-top: solid 1px #e2e8f0;
+}
+
+#interfaceScaleListContainer {
+    padding: 4px 13px;
+    order: 10;
+}
+
+.adaptiveViewOption, .vpPresetOption, .vpScaleOption {
+    padding: 5px 0px 5px 0px;
+    /*color: #3B3B3B;*/
+    display: flex;
+}
+
+.adaptiveViewOption:hover .adapViewRadioButton {
+    border-color: rgb(148 163 184);
+}
+
+.vpScaleOption:hover .scaleRadioButton {
+    border-color: rgb(148 163 184);
+}
+
+.vpScaleOption[hidden] {
+    display: none !important;
+}
+
+.projectOptionsScaleRow, .projectOptionsAdaptiveViewRow, .projectOptionsHotspotsRow {
+    border-top: solid 1px #c7c7c7;
+    display: flex;
+    padding: 13px 7px 13px 0px;
+}
+
+.adaptiveViewOption:hover, .vpScaleOption:hover, .vpPresetOption:hover, .projectOptionsAdaptiveViewRow:hover, .projectOptionsScaleRow:hover
+{ 
+	cursor: pointer;
+}
+
+.scaleRadioButton, .adapViewRadioButton {
+    border: solid 1px #CBD5E1;
+    box-sizing: border-box;
+    display: inline-block;
+    position: relative;
+    width: 12px;
+    height: 12px;
+    border-radius: 48px;
+    margin-right: 12px;
+    top: 2px;
+    flex-shrink: 0;
+}
+
+.mobileMode .scaleRadioButton, .mobileMode .adapViewRadioButton {
+    width: 20px;
+    height: 20px;
+    border-radius: 60px;
+    margin-right: 22px;
+    margin-left: 22px;
+    top: 0px;
+    flex-shrink: 0;
+}
+
+.selectedRadioButton {
+    border: solid 4px #2563EB !important;
+}
+
+#searchDiv {
+    display: flex;
+    margin-right: auto;
+    flex: 1;
+    height: 22px;
+}
+
+#searchBox {
+    display: none;
+    width: 0%;
+    height: 22px;
+    padding-left: 5px;
+    border-radius: 0px 5px 5px 0px;
+    border-right: solid 1px #cccccc;
+    border-top: solid 1px #cccccc;
+    border-bottom: solid 1px #cccccc;
+    border-left: none;
+    -webkit-appearance: none;
+    font-family: 'Inter', ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", Segoe UI Symbol, "Noto Color Emoji";
+    color: #718096;
+}
+
+#searchBox:focus {
+    outline-width: 0;
+}
+
+.searchBoxHint {
+	color: #8f949a;
+}
+
+#sitemapHost.popup #searchDiv{
+    display: none;
+}
+
+#sitemapHost.popup #sitemapHeader{
+    display: none;
+}
+
+#sitemapHost.popup #changePageInstructions{
+    display: none;
+}
+
+.mobileMode #sitemapHeader {
+    display: none;
+}
+
+
+
+/* Expo Sitemap
+******************************************************************************/
+
+.expoSitemapNode {
+    padding: 15px;
+    text-align: center;
+}
+
+.sitemapPageImg {
+    max-width: 90%;
+    max-height: 150px;
+}
+
+.popup .sitemapPageImg {
+    display: none;
+}
+
+.popup .expoSitemapNode {
+    padding: 0 0 0 10px;
+    text-align: left;
 }

+ 34 - 34
RFID/resources/Other.html

@@ -1,35 +1,35 @@
-<html>
-	<head>
-		<title></title>
-	</head>
-	<body>
-	<br />
-	<div style="width:100%; text-align:center; font-family:Arial; font-size:12px;" id=other></div>
-	<br />
-	<div style="width:100%; text-align:center; font-family:Arial; font-size:12px;">
-	    <button onclick="parent.window.close();">
-		    Close
-	    </button>
-	</div>
-	
-	<SCRIPT src="axurerp_pagescript.js"></SCRIPT>
-	
-	<script language=javascript>
-	function getQueryVariable(variable) {
-      var query = window.location.hash.substring(1);
-      var vars = query.split("&&&");
-      for (var i=0;i<vars.length;i++) {
-        var pair = vars[i].split("=");
-        if (pair[0] == variable) {
-          return decodeURI(pair[1]);
-        }
-      } 
-    }
-
-	var other = document.getElementById('other');
-	other.innerHTML = getQueryVariable('other');
-
-	</script>
-	
-	</body>
+<html>
+	<head>
+		<title></title>
+	</head>
+	<body>
+	<br />
+	<div style="width:100%; text-align:center; font-family:Arial; font-size:12px;" id=other></div>
+	<br />
+	<div style="width:100%; text-align:center; font-family:Arial; font-size:12px;">
+	    <button onclick="parent.window.close();">
+		    Close
+	    </button>
+	</div>
+	
+	<SCRIPT src="axurerp_pagescript.js"></SCRIPT>
+	
+	<script language=javascript>
+	function getQueryVariable(variable) {
+      var query = window.location.hash.substring(1);
+      var vars = query.split("&&&");
+      for (var i=0;i<vars.length;i++) {
+        var pair = vars[i].split("=");
+        if (pair[0] == variable) {
+          return decodeURI(pair[1]);
+        }
+      } 
+    }
+
+	var other = document.getElementById('other');
+	other.innerHTML = getQueryVariable('other');
+
+	</script>
+	
+	</body>
 </html>

二進制
RFID/resources/chrome/allow-access.png


+ 156 - 187
RFID/resources/chrome/chrome.html

@@ -1,187 +1,156 @@
-<html>
-<head>
-    <title>Install the Axure RP Chrome Extension</title>
-    <style type="text/css">
-        *
-        {
-            font-family: NunitoSans, Helvetica, Arial, sans-serif;
-        }
-        body
-        {
-            text-align: center;
-            background-color: #fafafa;
-        }
-        p
-        {
-            font-size: 14px;
-            line-height: 18px;
-            color: #333333;
-        }
-        div.container
-        {
-            width: 980px;
-            margin-left: auto;
-            margin-right: auto;
-            text-align: left;
-        }
-        a
-        {
-            text-decoration: none;
-            color: #009dda;
-        }
-        .button
-        {
-            background: #A502B3;
-            font: normal 16px Arial, sans-serif;
-            color: #FFFFFF;
-            padding: 10px 30px 10px 30px;
-            border: 2px solid #A502B3;
-            display: inline-block;
-            margin-top: 10px;
-            text-transform: uppercase;
-            font-size: 14px;
-	    border-radius: 4px;
-        }
-        a:hover.button
-        {
-            border: 2px solid #A502B3;
-	    color: #A502B3;
-	    background-color: #FFFFFF;
-        }
-        div.left
-        {
-            width: 400px;
-            float: left;
-            margin-right: 80px;
-        }
-        div.right
-        {
-            width: 400px;
-            float: left;
-        }
-        div.buttonContainer
-        {
-            text-align: center;
-        }
-        h1
-        {
-            font-size: 36px;
-            color: #333333;
-            line-height: 50px;
-            margin-bottom: 20px;
-            font-weight: normal;
-        }
-        h2
-        {
-            font-size: 24px;
-            font-weight: normal;
-            color: #08639C;
-            text-align: center;
-        }
-        h3
-        {
-            font-size: 16px;
-            color: #333333;
-            font-weight: normal;
-	    text-transform: uppercase;
-        }
-        .heading
-        {
-            border-bottom: 1px solid black;
-	    height: 36px;
-            line-height: 36px;
-            font-size: 22px;
-            color: #000000;
-
-        }
-        span.faq
-        {
-            font-size: 16px;
-	    line-height: 24px;
-            font-weight: normal;
-	    text-transform: uppercase;
-            color: #333333;
-            display: block;
-        }
-    </style>
-</head>
-<body>
-    <div class="container">
-        <br />
-        <br />
-        <img src="axure_logo.png" alt="axure" />
-        <br />
-	<br />
-        <h1>
-            AXURE RP EXTENSION FOR CHROME</h1>
-        <p style="font-size: 14px; color: #666666; margin-top: 10px;">
-            Google Chrome requires an extension to view locally stored projects. Alternatively,
-            upload your RP file to <a href="https://www.axure.cloud">Axure Cloud</a> or use a different
-            browser. You can also Preview from Axure RP.</p>
-            <img src="preview-rp.png" alt="preview"/>
-        <h3 class="heading">
-            VIEW LOCAL PROJECTS IN CHROME</h3>
-        <div class="left">
-            <h3>
-                1. Install Extension from Chrome Store</h3>
-            <div class="buttonContainer">
-                <a class="button" href="https://chrome.google.com/webstore/detail/dogkpdfcklifaemcdfbildhcofnopogp"
-                    target="_blank">Install Extension</a>
-            </div>
-        </div>
-        <div class="right">
-            <h3>
-                2. Open "More Tools > Extensions"</h3>
-            <img src="extensions.png" alt="extensions"/>
-        </div>
-        <div style="clear: both; height: 20px;">
-            &nbsp;</div>
-       <div class="left">
-            <h3>
-                3. View Axure RP Extension Details</h3>
-            <img src="details.png" alt="extension details"/>
-            </div>
-	<div class="right">
-            <h3>
-                4. Check "Allow access to file URLs"</h3>
-            <img src="allow-access.png" alt="allow access"/>
-        </div>
-   <div style="clear: both; height: 20px;">
-            &nbsp;</div>
-        <div class="left">
-            <h3>
-                5. Click the button below</h3>
-            <div class="buttonContainer">
-                <a class="button" href="../../start.html">View in Chrome</a>
-            </div>
-        </div>
-        <div style="clear: both; height: 20px;">
-        </div>
-        <h3 class="heading">
-            EXTENSION FAQ</h3>
-        <p>
-            <span class="faq">What is a Chrome Extension?</span> Extensions are downloadable
-            plug-ins for Google Chrome that modify the browser
-            and allow you additional capabilities.
-        </p>
-        <p style="margin-top: 25px;">
-            <span class="faq">Why do I need to install the extension?</span> Google requires
-            this extension to be installed to allow the viewing of local files in
-            Chrome
-        </p>
-        <p style="margin-top: 25px; margin-bottom: 25px;">
-            <span class="faq">Why does this extension require a high access level?</span> This
-            extension requires a high access level to allow the viewing of the file://
-            protocol. Axure does not track or access any of your information.
-        </p>
-        <h3 class="heading">
-           WE'RE HERE TO HELP</h3>
-        <p>
-            Need help or have any questions? Contact our support team at <a href="mailto:support@axure.com">
-                support@axure.com</a>.
-        </p>
-        <div style="clear: both; height: 20px;">
-        </div>
-    </div>
-</body>
-</html>
+<html>
+    <head>
+        <title>Install the Axure RP Chrome Extension</title>
+        <style type="text/css">
+            * {
+                font-family: "Source Sans Pro", sans-serif;
+            }
+            body {
+                text-align: center;
+                background-color: #f7fafc;
+                color: #37465e;
+            }
+            p {
+                font-size: 14px;
+                line-height: 18px;
+                color: #333333;
+            }
+            div.container {
+                width: 980px;
+                margin-left: auto;
+                margin-right: auto;
+                text-align: left;
+            }
+            a {
+                text-decoration: none;
+                color: #ffffff;
+            }
+            .button {
+                display: block;
+                width: 240px;
+                height: 30px;
+                padding: 2px 8px 2px 8px;
+                border-radius: 4px;
+                background-color: #3eacef;
+                box-sizing: border-box;
+                font-family: "Source Sans Pro SemiBold", "Source Sans Pro", sans-serif;
+                font-weight: 600;
+                color: #ffffff;
+                text-align: center;
+                font-size: 14px;
+                line-height: 28px;
+            }
+            a:hover.button {
+                background-color: #1482c5;
+            }
+            div.left {
+                width: 400px;
+                float: left;
+                margin-right: 80px;
+            }
+            div.right {
+                width: 400px;
+                float: left;
+            }
+            div.buttonContainer {
+                text-align: center;
+            }
+            .header {
+                font-size: 22px;
+                color: #333333;
+                line-height: 50px;
+                font-weight: bold;
+            }
+        </style>
+    </head>
+    <body>
+        <div class="container">
+            <br />
+            <br />
+            <img src="axure_logo.png" alt="axure" style="width: 100px" />
+            <br />
+            <br />
+            <p class="header">
+                Axure RP Extension for Chrome
+            </p>
+            <p>
+                Google Chrome requires an extension to view locally published prototypes. Alternatively, upload your RP file to <a href="https://www.axure.cloud" style="color: #53ADE9">Axure Cloud</a> or use a different browser. You can also Preview from Axure RP.
+</p>
+            <img src="preview-rp.png" alt="preview" />
+            <p class="header">
+                View locally published prototypes in Chrome
+            </p>
+            <div class="left">
+                <p>
+                    1. Add the extension from Chrome Web Store.
+                </p>
+                <div class="buttonContainer">
+                    <a class="button" href="https://chrome.google.com/webstore/detail/dogkpdfcklifaemcdfbildhcofnopogp"
+                       target="_blank">Add Extension</a>
+                </div>
+            </div>
+            <div class="right">
+                <p>
+                    2. Open <b>More tools → Extensions</b>
+                </p>
+                <img src="extensions.png" alt="extensions" />
+            </div>
+            <div style="clear: both; height: 20px;">&nbsp;</div>
+            <div class="left">
+                <p>
+                    3. View Axure RP Extension <b>Details</b>
+                </p>
+                <img src="details.png" alt="extension details" />
+            </div>
+            <div class="right">
+                <p>
+                    4. Turn on <b>Allow access to file URLs</b>
+                </p>
+                <img src="allow-access.png" alt="allow access" />
+            </div>
+            <div style="clear: both; height: 20px;">&nbsp;</div>
+            <div class="left">
+                <p>
+                    5. Click this button
+                </p>
+                <div class="buttonContainer">
+                    <a class="button" href="../../start.html">View in Chrome</a>
+                </div>
+            </div>
+            <div style="clear: both; height: 20px;">
+            </div>
+            <p class="header">
+                Need private or on-premises hosting?
+            </p>
+            <p>
+                Axure Cloud for Business gives you all of the features of Axure Cloud plus control of accounts and permissions. For hosting behind your firewall, check out Axure Cloud On-Premises.
+            </p>
+            <div class="buttonContainer">
+                <a class="button" href="https://www.axure.com/axure-cloud#hosted">Learn more</a>
+            </div>
+            <div style="clear: both; height: 20px;"></div>
+            <p class="header">
+                FAQs
+            </p>
+            <p><b>Why do I need to install the extension?</b></p>
+            <p>
+                Google requires this extension to be installed to allow the viewing of locally published HTML files in Chrome.
+            </p>
+            <div style="clear: both; height: 10px;"></div>
+            <p>
+                <b>Why does this extension require a high access level?</b>
+            </p>
+            <p>
+                This extension requires a high access level to allow the viewing of the file:// protocol. Axure does not track or access any of your information.
+            </p>
+            <div style="clear: both; height: 10px;"></div>
+            <p class="header">
+                We're here to help
+            </p>
+            <p>
+                If you have any questions, please email us at <a href="mailto:support@axure.com" style="color: #53ADE9">support@axure.com</a>.
+            </p>
+            <div style="clear: both; height: 20px;"></div>
+        </div>
+    </body>
+</html>

二進制
RFID/resources/chrome/details.png


二進制
RFID/resources/chrome/extensions.png


+ 100 - 130
RFID/resources/chrome/firefox.html

@@ -1,130 +1,100 @@
-<html>
-<head>
-    <title>Axure RP - Firefox Local File Restrictions</title>
-    <style type="text/css">
-        *
-        {
-            font-family: Helvetica, Arial, sans-serif;
-        }
-        body
-        {
-            text-align: center;
-            background-color: #fafafa;
-        }
-        p
-        {
-            font-size: 14px;
-            line-height: 18px;
-            color: #333333;
-        }
-        div.container
-        {
-            width: 980px;
-            margin-left: auto;
-            margin-right: auto;
-            text-align: left;
-        }
-        a
-        {
-            text-decoration: none;
-            color: #009dda;
-        }
-        .button
-        {
-            background: #A502B3;
-            font: normal 16px Arial, sans-serif;
-            color: #FFFFFF;
-            padding: 10px 30px 10px 30px;
-            border: 2px solid #A502B3;
-            display: inline-block;
-            margin-top: 10px;
-            text-transform: uppercase;
-            font-size: 14px;
-	    border-radius: 4px;
-        }
-        a:hover.button
-        {
-            border: 2px solid #A502B3;
-	    color: #A502B3;
-	    background-color: #FFFFFF;
-        }
-        div.left
-        {
-            width: 400px;
-            float: left;
-            margin-right: 80px;
-        }
-        div.right
-        {
-            width: 400px;
-            float: left;
-        }
-        div.buttonContainer
-        {
-            text-align: center;
-        }
-        h1
-        {
-            font-size: 36px;
-            color: #333333;
-            line-height: 50px;
-            margin-bottom: 20px;
-            font-weight: normal;
-        }
-        h2
-        {
-            font-size: 24px;
-            font-weight: normal;
-            color: #08639C;
-            text-align: center;
-        }
-        h3
-        {
-            font-size: 16px;
-            line-height: 24px;
-            color: #333333;
-            font-weight: normal;
-        }
-        .heading
-        {
-            border-bottom: 1px solid black;
-	    height: 36px;
-            line-height: 36px;
-            font-size: 22px;
-            color: #000000;
-        }
-        span.faq
-        {
-            font-size: 16px;
-            font-weight: normal;
-	    text-transform: uppercase;
-            color: #333333;
-            display: block;
-        }
-    </style>
-</head>
-<body>
-    <div class="container">
-        <br />
-        <br />
-        <img src="axure_logo.png" alt="axure" />
-        <br />
-        <h1>
-            FIREFOX LOCAL FILE RESTRICTIONS</h1>
-        <p style="font-size: 16px; line-height: 24px; color: #666666; margin-top: 10px;">
-            Firefox does not permit locally stored files to be viewed. Use Preview to view your projects in progress.
-<img src="preview-rp.png" alt="preview"/>
-          </p>
-            <p style="font-size: 16px; line-height: 24px; color: #666666; margin-top: 10px;">
-          Alternatively,  you can choose a different web browser, upload your RP file to <a href="https://app.axure.cloud">Axure Cloud</a> or publish the local files to a web server.</p>
-        <h3 class="heading">
-            We're Here to Help</h3>
-        <p>
-            Need help or have any questions? Drop us a line at <a href="mailto:support@axure.com">
-                support@axure.com</a>.
-        </p>
-        <div style="clear: both; height: 20px;">
-        </div>
-    </div>
-</body>
-</html>
+<html>
+<head>
+    <title>Axure RP - Firefox Local File Restrictions</title>
+        <style type="text/css">
+            * {
+                font-family: "Source Sans Pro", sans-serif;
+            }
+
+            body {
+                text-align: center;
+                background-color: #f7fafc;
+                color: #37465e;
+            }
+
+            p {
+                font-size: 14px;
+                line-height: 18px;
+                color: #333333;
+            }
+
+            div.container {
+                width: 980px;
+                margin-left: auto;
+                margin-right: auto;
+                text-align: left;
+            }
+
+            a {
+                text-decoration: none;
+                color: #ffffff;
+            }
+
+            .button {
+                display: block;
+                width: 240px;
+                height: 30px;
+                padding: 2px 8px 2px 8px;
+                border-radius: 4px;
+                background-color: #3eacef;
+                box-sizing: border-box;
+                font-family: "Source Sans Pro SemiBold", "Source Sans Pro", sans-serif;
+                font-weight: 600;
+                color: #ffffff;
+                text-align: center;
+                font-size: 14px;
+                line-height: 28px;
+            }
+
+            a:hover.button {
+                background-color: #1482c5;
+            }
+
+            div.buttonContainer {
+                text-align: center;
+            }
+
+            .header {
+                font-size: 22px;
+                color: #333333;
+                line-height: 50px;
+                font-weight: bold;
+            }
+        </style>
+    </head>
+    <body>
+        <div class="container">
+            <br />
+            <br />
+            <img src="axure_logo.png" alt="axure" style="width: 100px" />
+            <br />
+            <br />
+            <p class="header">
+                Firefox Local File Restrictions
+            </p>
+            <p>
+                Firefox does not permit locally published prototypes to be viewed. Use Preview to view your projects in progress.
+            </p>
+            <img src="preview-rp.png" alt="preview" />
+            <p>
+                Alternatively,  you can choose a different web browser, upload your RP file to <a href="https://app.axure.cloud" style="color: #53ADE9">Axure Cloud</a> or publish the local files to a web server.
+            </p>
+            <p class="header">
+                Need private or on-premises hosting?
+            </p>
+            <p>
+                Axure Cloud for Business gives you all of the features of Axure Cloud plus control of accounts and permissions. For hosting behind your firewall, check out Axure Cloud On-Premises.
+            </p>
+            <div class="buttonContainer">
+                <a class="button" href="https://www.axure.com/axure-cloud#hosted">Learn more</a>
+            </div>
+            <p class="header">
+                We're here to help
+            </p>
+            <p>
+                If you have any questions, please email us at <a href="mailto:support@axure.com" style="color: #53ADE9 ">support@axure.com</a>.
+            </p>
+            <div style="clear: both; height: 20px;"></div>
+        </div>
+    </body>
+</html>

Some files were not shown because too many files changed in this diff