1
0

edit.html 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749
  1. <html id="stylus">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
  4. <script src="dom.js"></script>
  5. <script src="messaging.js"></script>
  6. <script src="prefs.js"></script>
  7. <script src="localization.js"></script>
  8. <script src="apply.js"></script>
  9. <script src="edit.js"></script>
  10. <script src="codemirror/lib/codemirror.js"></script>
  11. <link rel="stylesheet" href="codemirror/lib/codemirror.css">
  12. <script src="codemirror/mode/css/css.js"></script>
  13. <link rel="stylesheet" href="codemirror/addon/dialog/dialog.css">
  14. <link rel="stylesheet" href="codemirror/addon/search/matchesonscrollbar.css">
  15. <script src="codemirror/addon/scroll/annotatescrollbar.js"></script>
  16. <script src="codemirror/addon/search/matchesonscrollbar.js"></script>
  17. <script src="codemirror-overwrites/addon/search/match-highlighter.js"></script>
  18. <script src="codemirror/addon/dialog/dialog.js"></script>
  19. <script src="codemirror/addon/search/searchcursor.js"></script>
  20. <script src="codemirror/addon/search/search.js"></script>
  21. <script src="codemirror/addon/comment/comment.js"></script>
  22. <script src="codemirror/addon/selection/active-line.js"></script>
  23. <link rel="stylesheet" href="codemirror/addon/fold/foldgutter.css" />
  24. <script src="codemirror/addon/fold/foldcode.js"></script>
  25. <script src="codemirror/addon/fold/foldgutter.js"></script>
  26. <script src="codemirror/addon/fold/brace-fold.js"></script>
  27. <script src="codemirror/addon/fold/comment-fold.js"></script>
  28. <script src="codemirror/addon/edit/matchbrackets.js"></script>
  29. <link rel="stylesheet" href="codemirror/addon/lint/lint.css" />
  30. <script src="csslint/csslint-worker.js"></script>
  31. <script src="codemirror/addon/lint/lint.js"></script>
  32. <script src="codemirror-overwrites/addon/lint/css-lint.js"></script>
  33. <link rel="stylesheet" href="codemirror/addon/hint/show-hint.css" />
  34. <script src="codemirror/addon/hint/show-hint.js"></script>
  35. <script src="codemirror/addon/hint/css-hint.js"></script>
  36. <script src="codemirror/keymap/sublime.js"></script>
  37. <script src="codemirror/keymap/emacs.js"></script>
  38. <script src="codemirror/keymap/vim.js"></script>
  39. <style type="text/css">
  40. body {
  41. margin: 0;
  42. font: 12px arial,sans-serif;
  43. }
  44. /************ header ************/
  45. #header {
  46. width: 280px;
  47. height: 100vh;
  48. overflow: auto;
  49. position: fixed;
  50. top: 0;
  51. padding: 15px;
  52. border-right: 1px dashed #AAA;
  53. -webkit-box-shadow: 0 0 3rem -1.2rem black;
  54. box-sizing: border-box;
  55. }
  56. #header h1 {
  57. margin-top: 0;
  58. }
  59. #sections {
  60. padding-left: 280px;
  61. }
  62. #sections h2 {
  63. margin-top: 1rem;
  64. margin-left: 1.7rem;
  65. }
  66. .aligned {
  67. display: table-row;
  68. }
  69. .aligned > *:not(svg) {
  70. display: table-cell;
  71. margin-top: 0.1rem;
  72. min-height: 1.4rem;
  73. }
  74. input[type="checkbox"] {
  75. margin-left: 0.1rem;
  76. }
  77. /* basic info */
  78. #basic-info {
  79. margin-bottom: 1rem;
  80. }
  81. #name {
  82. width: 100%;
  83. }
  84. #basic-info-name {
  85. display: flex;
  86. align-items: center;
  87. }
  88. #url {
  89. margin-left: 0.25rem;
  90. }
  91. #url:not([href^="http"]) {
  92. display: none;
  93. }
  94. #save-button {
  95. opacity: .5;
  96. pointer-events: none;
  97. }
  98. .dirty #save-button {
  99. opacity: 1;
  100. pointer-events: all;
  101. }
  102. .svg-icon {
  103. cursor: pointer;
  104. vertical-align: middle;
  105. transition: fill .5s;
  106. width: 16px;
  107. height: 16px;
  108. }
  109. .svg-icon:not(.dismiss) {
  110. margin-left: 0.2rem;
  111. }
  112. h2 .svg-icon, label .svg-icon {
  113. margin-top: -2px;
  114. }
  115. .svg-icon.info {
  116. width: 14px;
  117. height: 16px;
  118. }
  119. .svg-icon:hover,
  120. .svg-icon.info {
  121. fill: #666;
  122. }
  123. .svg-icon,
  124. .svg-icon.info:hover {
  125. fill: #000;
  126. }
  127. #enabled {
  128. margin-left: 0;
  129. vertical-align: middle;
  130. }
  131. #enabled-label {
  132. vertical-align: middle;
  133. }
  134. /* actions */
  135. #actions > * {
  136. margin-right: 0.5rem;
  137. margin-bottom: 0.5rem;
  138. }
  139. /* options */
  140. #options [type="number"] {
  141. max-width: 2.5rem;
  142. text-align: right;
  143. }
  144. #options .option > * {
  145. padding-right: 0.25rem;
  146. }
  147. /************ content ***********/
  148. #sections > div {
  149. margin: 0.7rem;
  150. padding: 1rem;
  151. }
  152. #sections > div:not(:first-of-type) {
  153. border-top: 2px solid black;
  154. }
  155. #sections > div:only-of-type .remove-section {
  156. display: none;
  157. }
  158. #sections > div > button:not(:first-of-type) {
  159. margin-left: 0.2rem;
  160. }
  161. .dirty > label::before {
  162. content: "*";
  163. font-weight: bold;
  164. }
  165. #sections {
  166. counter-reset: codebox;
  167. }
  168. #sections > div > label::after {
  169. counter-increment: codebox;
  170. content: counter(codebox);
  171. margin-left: 0.25rem;
  172. }
  173. /* code */
  174. .code {
  175. height: 10rem;
  176. width: 40rem;
  177. }
  178. .CodeMirror {
  179. border: solid #CCC 1px;
  180. }
  181. .CodeMirror-lint-mark-warning {
  182. background: none;
  183. }
  184. .CodeMirror-vscrollbar {
  185. margin-bottom: 8px; /* make space for resize-grip */
  186. }
  187. .CodeMirror-dialog {
  188. -webkit-animation: highlight 3s ease-out;
  189. }
  190. .CodeMirror-focused {
  191. outline: -webkit-focus-ring-color auto 5px;
  192. outline-offset: -2px;
  193. }
  194. .CodeMirror-search-field {
  195. width: 10em;
  196. }
  197. .CodeMirror-jump-field {
  198. width: 5em;
  199. }
  200. .CodeMirror-search-hint {
  201. color: #888;
  202. }
  203. body[data-highlight-selection-matches="token"] .cm-matchhighlight-approved .cm-matchhighlight,
  204. body[data-highlight-selection-matches="token"] .CodeMirror-selection-highlight-scrollbar {
  205. animation: fadein-match-highlighter 1s cubic-bezier(.97,.01,.42,.98);
  206. animation-fill-mode: both;
  207. }
  208. body[data-highlight-selection-matches="selection"] .cm-matchhighlight-approved .cm-matchhighlight,
  209. body[data-highlight-selection-matches="selection"] .CodeMirror-selection-highlight-scrollbar {
  210. background-color: rgba(1, 151, 193, 0.1);
  211. }
  212. @-webkit-keyframes highlight {
  213. from {
  214. background-color: #ff9;
  215. }
  216. to {
  217. background-color: none;
  218. }
  219. }
  220. @keyframes fadein {
  221. from {
  222. opacity: 0;
  223. }
  224. to {
  225. opacity: 1;
  226. }
  227. }
  228. @keyframes fadein-match-highlighter {
  229. from { background-color: transparent; }
  230. to { background-color: rgba(1, 151, 193, 0.1); }
  231. }
  232. .resize-grip {
  233. position: absolute;
  234. display: block;
  235. width: 8px;
  236. height: 8px;
  237. content: " ";
  238. right: 0;
  239. bottom: 0;
  240. z-index: 99;
  241. cursor: n-resize;
  242. background: linear-gradient(-45deg, transparent 2px, rgba(0,0,0,0.5) 2px, transparent 3px, transparent 4.5px, rgba(0,0,0,0.5) 5px, transparent 5.5px);
  243. }
  244. /* applies-to */
  245. .applies-to {
  246. display: flex;
  247. }
  248. .applies-to label {
  249. flex: auto;
  250. margin-top: 0.2rem;
  251. }
  252. .applies-to ul {
  253. flex: auto;
  254. flex-grow: 99;
  255. margin: 0;
  256. padding: 0;
  257. }
  258. .applies-to li {
  259. display: flex;
  260. list-style-type: none;
  261. align-items: center;
  262. margin-bottom: 0.35rem;
  263. }
  264. .applies-to li > *:not(button) {
  265. flex: auto;
  266. min-height: 1.4rem;
  267. margin-left: 0.35rem;
  268. }
  269. .applies-to li .add-applies-to {
  270. visibility: hidden;
  271. text-align: left;
  272. }
  273. .applies-to li:last-child .add-applies-to {
  274. visibility: visible
  275. }
  276. .applies-to li .add-applies-to:first-child {
  277. margin-left: 1rem;
  278. }
  279. .applies-to li .applies-value {
  280. flex-grow: 99;
  281. padding-left: 0.2rem;
  282. }
  283. .applies-to img {
  284. vertical-align: bottom;
  285. }
  286. .test-regexp {
  287. display: none;
  288. }
  289. .has-regexp .test-regexp {
  290. display: inline-block;
  291. }
  292. .regexp-report summary, .regexp-report div {
  293. cursor: pointer;
  294. outline: none;
  295. }
  296. .regexp-report mark {
  297. background-color: rgba(255, 255, 0, .5);
  298. }
  299. .regexp-report details {
  300. margin-left: 1rem;
  301. }
  302. .regexp-report details:not(:last-child) {
  303. margin-bottom: 1rem;
  304. }
  305. .regexp-report summary {
  306. font-weight: bold;
  307. margin-left: -1rem;
  308. margin-bottom: .5rem;
  309. outline: none;
  310. cursor: default;
  311. }
  312. .regexp-report details[data-type="full"] {
  313. color: darkgreen;
  314. }
  315. .regexp-report details[data-type="partial"] {
  316. color: darkgray;
  317. }
  318. .regexp-report details[data-type="invalid"] {
  319. color: maroon;
  320. }
  321. .regexp-report details details {
  322. margin-left: 2rem;
  323. margin-top: .5rem;
  324. }
  325. .regexp-report .svg-icon {
  326. position: absolute;
  327. margin-top: -1px;
  328. }
  329. .regexp-report details div:hover {
  330. text-decoration: underline;
  331. text-decoration-skip: ink;
  332. }
  333. .regexp-report details div img {
  334. width: 16px;
  335. max-height: 16px;
  336. position: absolute;
  337. margin-left: -20px;
  338. margin-top: -1px;
  339. animation: fadein 1s cubic-bezier(.03, .67, .08, .94);
  340. animation-fill-mode: both;
  341. }
  342. /************ help popup ************/
  343. #help-popup {
  344. top: 3rem;
  345. right: 3rem;
  346. max-width: 50vw;
  347. position: fixed;
  348. display: none;
  349. background-color: white;
  350. box-shadow: 3px 3px 30px rgba(0, 0, 0, 0.5);
  351. padding: 0.5rem;
  352. z-index: 99;
  353. }
  354. #help-popup.big {
  355. max-width: 100%;
  356. left: 3rem;
  357. }
  358. #help-popup.big .CodeMirror {
  359. min-height: 2rem;
  360. height: 70vh;
  361. }
  362. #help-popup .title {
  363. font-weight: bold;
  364. background-color: rgba(0,0,0,0.05);
  365. margin: -0.5rem -0.5rem 0.5rem;
  366. padding: .5rem 32px .5rem .5rem;
  367. }
  368. #help-popup .contents {
  369. max-height: calc(100vh - 8rem);
  370. overflow-y: auto;
  371. }
  372. #help-popup .dismiss {
  373. position: absolute;
  374. right: 4px;
  375. top: .5em;
  376. }
  377. .keymap-list {
  378. font-size: 85%;
  379. line-height: 1.0;
  380. border-spacing: 0;
  381. word-break: break-all;
  382. }
  383. .keymap-list input {
  384. width: 100%;
  385. }
  386. .keymap-list tr:nth-child(odd) {
  387. background-color: rgba(0, 0, 0, 0.07);
  388. }
  389. .keymap-list td:first-child {
  390. white-space: nowrap;
  391. font-family: monospace;
  392. padding-right: 0.5rem;
  393. }
  394. #help-popup button[name^="import"] {
  395. line-height: 1.5rem;
  396. padding: 0 0.5rem;
  397. margin: 0.5rem 0 0 0.5rem;
  398. pointer-events: none;
  399. opacity: 0.5;
  400. float: right;
  401. }
  402. #help-popup.ready button[name^="import"] {
  403. pointer-events: all;
  404. opacity: 1.0;
  405. }
  406. /************ lint ************/
  407. #lint {
  408. display: none;
  409. }
  410. #lint > div {
  411. overflow-y: auto;
  412. }
  413. #lint table {
  414. font-size: 100%;
  415. border-spacing: 0;
  416. margin-bottom: 1rem;
  417. line-height: 1.0;
  418. }
  419. #lint table:last-child {
  420. margin-bottom: 0;
  421. }
  422. #lint caption {
  423. text-align: left;
  424. font-weight: bold;
  425. }
  426. #lint tbody {
  427. font-size: 85%;
  428. cursor: pointer;
  429. }
  430. #lint tr:hover {
  431. background-color: rgba(0, 0, 0, 0.1);
  432. }
  433. #lint td[role="severity"] {
  434. font-size: 0;
  435. width: 16px;
  436. padding-right: 0.25rem;
  437. }
  438. #lint td[role="line"], #lint td[role="sep"] {
  439. text-align: right;
  440. padding-right: 0;
  441. }
  442. #lint td[role="col"] {
  443. text-align: left;
  444. padding-right: 0.25rem;
  445. }
  446. #lint td[role="message"] {
  447. text-align: left;
  448. }
  449. /************ CSS beautifier ************/
  450. .beautify-options {
  451. white-space: nowrap;
  452. font-family: monospace;
  453. }
  454. .beautify-options div {
  455. float: left;
  456. }
  457. .beautify-options div[newline="true"] + div {
  458. clear: left;
  459. }
  460. .beautify-options div[newline="true"] + div span[indent] {
  461. padding-left: 2rem;
  462. }
  463. .beautify-options:after {
  464. clear: both;
  465. display: block;
  466. content: " ";
  467. height: 1rem;
  468. }
  469. .beautify-options span {
  470. font-weight: bold;
  471. }
  472. .beautify-options select {
  473. border: none;
  474. background-color: rgba(0, 0, 0, 0.05);
  475. }
  476. /************ reponsive layouts ************/
  477. @media(max-width:737px) {
  478. #header {
  479. width: auto;
  480. height: auto;
  481. position: inherit;
  482. border-right: none;
  483. border-bottom: 1px dashed #AAA;
  484. }
  485. #header section:not(:last-child) {
  486. margin-bottom: 0.4rem;
  487. }
  488. #header input[type="checkbox"] {
  489. vertical-align: middle;
  490. }
  491. h2 {
  492. display: none;
  493. }
  494. #basic-info {
  495. display: flex;
  496. align-items: baseline;
  497. }
  498. #basic-info > * {
  499. flex: auto;
  500. }
  501. #basic-info > *:first-child {
  502. flex-grow: 99;
  503. display: flex;
  504. }
  505. #basic-info > *:not(:last-child) {
  506. margin-right: 0.8rem;
  507. }
  508. #basic-info #name {
  509. width: auto;
  510. flex-grow: 99;
  511. }
  512. #actions {
  513. margin-top: 1rem;
  514. }
  515. #actions > * {
  516. display: inline-block;
  517. }
  518. #options {
  519. -webkit-column-count: 2;
  520. }
  521. #options .aligned > *:not(svg) {
  522. margin: 1px 0 0 0; /* workaround the flowing-padding column bug in webkit */
  523. padding-right: 0.4rem;
  524. vertical-align: baseline;
  525. min-height: 1.4rem;
  526. }
  527. .option {
  528. -webkit-column-break-inside: avoid;
  529. }
  530. .option label {
  531. line-height: 1.25rem;
  532. margin: 0;
  533. }
  534. #options [type="number"] {
  535. text-align: left; /* workaround the column flow bug in webkit */
  536. padding-left: 0.2rem;
  537. }
  538. #options #tabSize-label {
  539. position: relative;
  540. top: 0.2rem;
  541. }
  542. #lint h2 {
  543. display: block;
  544. cursor: default;
  545. margin-bottom: 0;
  546. }
  547. #lint > div {
  548. max-height: 0;
  549. }
  550. #lint.collapsed > div {
  551. display: none;
  552. }
  553. #lint:hover > div {
  554. margin-top: 1em;
  555. max-height: 30vh;
  556. }
  557. #sections {
  558. padding-left: 0;
  559. }
  560. #sections > div {
  561. padding: 0;
  562. }
  563. #sections > *:not(h2) {
  564. padding-left: 0.4rem;
  565. }
  566. .applies-type {
  567. width: 30%;
  568. }
  569. }
  570. @media(max-width:500px) {
  571. #options {
  572. -webkit-column-count: 1;
  573. }
  574. #options #tabSize-label {
  575. position: static;
  576. }
  577. }
  578. </style>
  579. <link id="cm-theme" rel="stylesheet">
  580. <template data-id="appliesTo">
  581. <li>
  582. <select name="applies-type" class="applies-type style-contributor">
  583. <option value="url" i18n-text="appliesUrlOption"></option>
  584. <option value="url-prefix" i18n-text="appliesUrlPrefixOption"></option>
  585. <option value="domain" i18n-text="appliesDomainOption"></option>
  586. <option value="regexp" i18n-text="appliesRegexpOption"></option>
  587. </select>
  588. <input name="applies-value" class="applies-value style-contributor">
  589. <button class="remove-applies-to" i18n-text="appliesRemove"></button>
  590. <button class="add-applies-to" i18n-text="appliesAdd"></button>
  591. </li>
  592. </template>
  593. <template data-id="appliesToEverything">
  594. <li class="applies-to-everything" i18n-html="appliesToEverything">
  595. <button class="add-applies-to" i18n-text="appliesSpecify"></button>
  596. </li>
  597. </template>
  598. <template data-id="section">
  599. <div>
  600. <label i18n-text="sectionCode"></label>
  601. <textarea class="code"></textarea>
  602. <br>
  603. <div class="applies-to">
  604. <label i18n-text="appliesLabel">
  605. <svg class="svg-icon info applies-to-help"><use xlink:href="#svg-icon-help"/></svg>
  606. </label>
  607. <ul class="applies-to-list"></ul>
  608. </div>
  609. <button class="remove-section" i18n-text="sectionRemove"></button>
  610. <button class="add-section" i18n-text="sectionAdd"></button>
  611. <button class="beautify-section" i18n-text="styleBeautify"></button>
  612. <button class="test-regexp" i18n-text="styleRegexpTestButton"></button>
  613. </div>
  614. </template>
  615. <template data-id="find">
  616. <span i18n-text="search">: <input type="text" class="CodeMirror-search-field">
  617. <span class="CodeMirror-search-hint">(<span i18n-text="searchRegexp"></span>)</span>
  618. </span>
  619. </template>
  620. <template data-id="replace">
  621. <span i18n-text="replace">: <input type="text" class="CodeMirror-search-field">
  622. <span class="CodeMirror-search-hint">(<span i18n-text="searchRegexp"></span>)</span>
  623. </span>
  624. </template>
  625. <template data-id="replaceAll">
  626. <span i18n-text="replaceAll">: <input type="text" class="CodeMirror-search-field">
  627. <span class="CodeMirror-search-hint">(<span i18n-text="searchRegexp"></span>)</span>
  628. </span>
  629. </template>
  630. <template data-id="replaceWith">
  631. <span i18n-text="replaceWith">: <input type="text" class="CodeMirror-search-field">
  632. </span>
  633. </template>
  634. <template data-id="replaceConfirm">
  635. <span i18n-text="replace">?
  636. <button i18n-text="confirmYes"></button>
  637. <button i18n-text="confirmNo"></button>
  638. <button i18n-text="confirmStop"></button>
  639. </span>
  640. </template>
  641. <template data-id="jumpToLine">
  642. <span i18n-text="editGotoLine">: <input class="CodeMirror-jump-field" type="text"></span>
  643. </template>
  644. <template data-id="regexpTestPartial">
  645. <a target="_blank" href="https://github.com/stylish-userstyles/stylish/wiki/Applying-styles-to-specific-sites#advanced-matching-with-regular-expressions"><svg class="svg-icon info"><use xlink:href="#svg-icon-help"/></svg></a>
  646. </template>
  647. </head>
  648. <body id="stylus-edit">
  649. <div id="header">
  650. <h1 id="heading">&nbsp;</h1> <!-- nbsp allocates the actual height which prevents page shift -->
  651. <section id="basic-info">
  652. <div id="basic-info-name">
  653. <input id="name" class="style-contributor" i18n-placeholder="styleMissingName">
  654. <a id="url" target="_blank"><svg class="svg-icon"><use xlink:href="#svg-icon-external-link"/></svg></a>
  655. </div>
  656. <div id="basic-info-enabled">
  657. <input type="checkbox" id="enabled" class="style-contributor">
  658. <label for="enabled" id="enabled-label" i18n-text="styleEnabledLabel"></label>
  659. </div>
  660. </section>
  661. <section id="actions">
  662. <div>
  663. <button id="save-button" title="Ctrl-S" i18n-text="styleSaveLabel"></button>
  664. <button id="beautify" i18n-text="styleBeautify"></button>
  665. <a href="manage.html"><button id="cancel-button" i18n-text="styleCancelEditLabel"></button></a>
  666. </div>
  667. <div>
  668. <h2 id="mozilla-format-heading" i18n-text="styleMozillaFormatHeading"><svg id="to-mozilla-help" class="svg-icon info"><use xlink:href="#svg-icon-help"/></svg></h2>
  669. <button id="from-mozilla" i18n-text="importLabel"></button>
  670. <button id="to-mozilla" i18n-text="exportLabel"></button>
  671. </div>
  672. </section>
  673. <section id="options">
  674. <h2 id="options-heading" i18n-text="optionsHeading"></h2>
  675. <div class="option">
  676. <input data-option="lineWrapping" id="editor.lineWrapping" type="checkbox">
  677. <label id="lineWrapping-label" for="editor.lineWrapping" i18n-text="cm_lineWrapping"></label>
  678. </div>
  679. <div class="option">
  680. <input data-option="smartIndent" id="editor.smartIndent" type="checkbox">
  681. <label id="smartIndent-label" for="editor.smartIndent" i18n-text="cm_smartIndent"></label>
  682. </div>
  683. <div class="option">
  684. <input data-option="indentWithTabs" id="editor.indentWithTabs" type="checkbox">
  685. <label id="indentWithTabs-label" for="editor.indentWithTabs" i18n-text="cm_indentWithTabs"></label>
  686. </div>
  687. <div class="option aligned">
  688. <label id="tabSize-label" for="editor.tabSize" i18n-text="cm_tabSize"></label>
  689. <input data-option="tabSize" id="editor.tabSize" type="number" min="0">
  690. </div>
  691. <div class="option aligned">
  692. <label id="keyMap-label" for="editor.keyMap" i18n-text="cm_keyMap"></label>
  693. <select data-option="keyMap" id="editor.keyMap"></select>
  694. <svg id="keyMap-help" class="svg-icon info"><use xlink:href="#svg-icon-help"/></svg>
  695. </div>
  696. <div class="option aligned">
  697. <label id="theme-label" for="editor.theme" i18n-text="cm_theme"></label>
  698. <select data-option="theme" id="editor.theme"></select>
  699. </div>
  700. <div class="option aligned">
  701. <label id="highlight-label" for="editor.matchHighlight" i18n-text="cm_matchHighlight"></label>
  702. <select data-option="highlightSelectionMatches" id="editor.matchHighlight">
  703. <option i18n-text="cm_matchHighlightToken" value="token">
  704. <option i18n-text="cm_matchHighlightSelection" value="selection">
  705. <option i18n-text="genericDisabledLabel" value="">
  706. </select>
  707. </div>
  708. </section>
  709. <section id="lint"><h2 i18n-text="issues">: <span id="issue-count"></span><svg id="lint-help" class="svg-icon info"><use xlink:href="#svg-icon-help"/></svg></h2><div></div></section>
  710. </div>
  711. <section id="sections">
  712. <h2><span id="sections-heading" i18n-text="styleSectionsTitle"></span><svg id="sections-help" class="svg-icon info"><use xlink:href="#svg-icon-help"/></svg></h2>
  713. </section>
  714. <div id="help-popup">
  715. <div class="title"></div><svg id="sections-help" class="svg-icon dismiss"><use xlink:href="#svg-icon-close"/></svg></svg>
  716. <div class="contents"></div>
  717. </div>
  718. <svg xmlns="http://www.w3.org/2000/svg" style="display: none">
  719. <symbol id="svg-icon-external-link" height="16" width="16" viewBox="0 0 8 8">
  720. <path d="M0 0v8h8v-2h-1v1h-6v-6h1v-1h-2zm4 0l1.5 1.5-2.5 2.5 1 1 2.5-2.5 1.5 1.5v-4h-4z"></path>
  721. </symbol>
  722. <symbol id="svg-icon-help" height="16" width="14" viewBox="0 0 14 16" i18n-alt="helpAlt">
  723. <path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path>
  724. </symbol>
  725. <symbol id="svg-icon-close" height="16" width="12" viewBox="0 0 12 16">
  726. <path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48z"></path>
  727. </symbol>
  728. </svg>
  729. </body>
  730. </html>