Compare commits

...

12 Commits

Author SHA1 Message Date
Jason Wall
c9534c3b30 Merge branch 'angular-18-upgrade' into 'main'
Angular 18 Upgrade

See merge request walljm/dynamicbible!35
2024-07-11 18:28:33 +00:00
Jason Wall
7dc029ec4e Angular 18 Upgrade 2024-07-11 18:28:33 +00:00
Jason Wall
b8bca83612 update gradle and some versions 2024-07-09 18:03:33 -05:00
Jason Wall
9781c1ff49 update sdk version 2024-07-08 16:06:29 -05:00
Jason Wall
4b41ba1048 Merge branch '6-edit-card-query-option-in-card-context-menu' into 'main'
Draft: Resolve "Edit card query option in card context menu"

Closes #6

See merge request walljm/dynamicbible!34
2024-07-08 12:07:22 +00:00
Jason Wall
0a9a147220 Draft: Resolve "Edit card query option in card context menu" 2024-07-08 12:07:22 +00:00
Jason Wall
9af7e31a70 Merge branch 'db-fix-search-index' into 'main'
Fix search index

See merge request walljm/dynamicbible!33
2024-04-17 13:00:13 +00:00
Jason Wall
646a9a9292 Fix search index 2024-04-17 08:50:26 -04:00
Jason Wall
49f67c5cff Merge branch 'bugs' into 'main'
fix niggling display issue with settings

See merge request walljm/dynamicbible!31
2024-03-25 16:42:39 +00:00
Jason Wall
8555191c45 fix niggling display issue with settings 2024-03-25 16:24:52 +00:00
Jason Wall
3fbb809cee Merge branch 'clean-up-utility' into 'main'
Update the data utility

See merge request walljm/dynamicbible!30
2024-03-25 16:14:17 +00:00
Jason Wall
dbd7f944f6 Update the data utility 2024-03-25 16:14:17 +00:00
554 changed files with 853673 additions and 13458 deletions

View File

@ -6,7 +6,7 @@ stages:
build-android:
stage: build
image: walljm/gradle_android:8.0.2-jdk17-33-node1
image: walljm/gradle_android:8.2.1-jdk17-android34-node22
before_script:
- cd ./src/android
- bash ./install-sdk.sh
@ -29,7 +29,7 @@ build-android:
test:
stage: test
image: walljm/node-chrome-headless:21.6
image: walljm/node-chrome-headless:22.4-bookworm
variables:
NODE_OPTIONS: "--max_old_space_size=2048"
script:
@ -68,7 +68,7 @@ deploy-prod-site:
deploy-android:
stage: prod
image: walljm/gradle_android:8.0.2-jdk17-33-node1
image: walljm/gradle_android:8.2.1-jdk17-android34-node22
needs:
- build-android
before_script:

View File

@ -1,4 +1,4 @@
FROM node:21.6.2-bookworm
FROM node:22.4-bookworm
RUN apt-get update -qqy \
&& apt-get -qqy install \

View File

@ -1,2 +1,2 @@
docker build -t walljm/node-chrome-headless:21.6 .
docker push walljm/node-chrome-headless:21.6
docker build -t walljm/node-chrome-headless:22.4-bookworm .
docker push walljm/node-chrome-headless:22.4-bookworm

View File

@ -1,5 +1,5 @@
FROM gradle:8.0.2-jdk17-focal
FROM gradle:8.2.1-jdk17-focal
# Install Git and dependencies
RUN apt-get update \
@ -7,7 +7,7 @@ RUN apt-get update \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists /var/cache/apt
RUN curl -L -o node.tar.gz "https://nodejs.org/dist/v21.6.2/node-v21.6.2-linux-x64.tar.gz" && \
RUN curl -L -o node.tar.gz "https://nodejs.org/dist/v22.4.1/node-v22.4.1-linux-x64.tar.gz" && \
tar -xzf node.tar.gz -C /usr/local --strip-components=1 && \
rm node.tar.gz && \
ln -s /usr/local/bin/node /usr/local/bin/nodejs
@ -42,7 +42,7 @@ RUN $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --update
RUN $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --verbose \
"build-tools;34.0.0" \
"build-tools;30.0.3" \
"platforms;android-33" \
"platforms;android-34" \
"platform-tools"

View File

@ -1,2 +1,2 @@
docker build -t walljm/gradle_android:8.0.2-jdk17-33-node1 .
docker push walljm/gradle_android:8.0.2-jdk17-33-node1
docker build -t walljm/gradle_android:8.2.1-jdk17-android34-node22 .
docker push walljm/gradle_android:8.2.1-jdk17-android34-node22

View File

@ -85,7 +85,7 @@ dependencies {
implementation 'com.google.firebase:firebase-auth'
// Also declare the dependency for the Google Play services library and specify its version
implementation 'com.google.android.gms:play-services-auth:21.0.0'
implementation 'com.google.android.gms:play-services-auth:21.2.0'
}

View File

@ -7,8 +7,8 @@ buildscript {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.0.2'
classpath 'com.google.gms:google-services:4.4.1'
classpath 'com.android.tools.build:gradle:8.2.1'
classpath 'com.google.gms:google-services:4.4.2'
classpath "com.github.triplet.gradle:play-publisher:3.8.1"
// NOTE: Do not place your application dependencies here; they belong

View File

@ -9,7 +9,7 @@ buildscript {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.0.0'
classpath 'com.android.tools.build:gradle:8.2.1'
}
}
@ -17,10 +17,10 @@ apply plugin: 'com.android.library'
android {
namespace "capacitor.cordova.android.plugins"
compileSdkVersion project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 33
compileSdk project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 34
defaultConfig {
minSdkVersion project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 22
targetSdkVersion project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion : 33
targetSdkVersion project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion : 34
versionCode 1
versionName "1.0"
}

View File

@ -1,15 +1,15 @@
ext {
minSdkVersion = 22
firebaseMessagingVersion = '23.0.5'
compileSdkVersion = 33
targetSdkVersion = 33
androidxActivityVersion = '1.7.0'
firebaseMessagingVersion = '23.3.1'
compileSdkVersion = 34
targetSdkVersion = 34
androidxActivityVersion = '1.8.0'
androidxAppCompatVersion = '1.6.1'
androidxCoordinatorLayoutVersion = '1.2.0'
androidxCoreVersion = '1.10.0'
androidxFragmentVersion = '1.5.6'
androidxCoreVersion = '1.12.0'
androidxFragmentVersion = '1.6.2'
coreSplashScreenVersion = '1.0.1'
androidxWebkitVersion = '1.6.1'
androidxWebkitVersion = '1.9.0'
junitVersion = '4.13.2'
androidxJunitVersion = '1.1.5'
androidxEspressoCoreVersion = '3.5.1'

View File

@ -5,9 +5,9 @@ PODS:
- AppAuth/Core (1.7.1)
- AppAuth/ExternalUserAgent (1.7.1):
- AppAuth/Core
- Capacitor (5.7.0):
- Capacitor (6.1.0):
- CapacitorCordova
- CapacitorCordova (5.7.0)
- CapacitorCordova (6.1.0)
- CodetrixStudioCapacitorGoogleAuth (0.0.1):
- Capacitor
- GoogleSignIn (~> 6.2.4)
@ -42,8 +42,8 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
AppAuth: e93b919be5dbcbba49555011ce94f7d716368574
Capacitor: fc155ee2ee45a2093d716f13cf5aa5a865e2d85a
CapacitorCordova: e825fce1a2e14e4b5730641c7e098dccf74397b7
Capacitor: 187bd7847b6f71467015a20200a1a071be3e5f14
CapacitorCordova: be703980ca797f847c3356f78fa175d21c8330c2
CodetrixStudioCapacitorGoogleAuth: fcce058390347c1ce5d8ac4764bdf1f5c1ee233b
GoogleSignIn: 5651ce3a61e56ca864160e79b484cd9ed3f49b7a
GTMAppAuth: 0ff230db599948a9ad7470ca667337803b3fc4dd

12659
src/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -16,51 +16,51 @@
},
"private": true,
"dependencies": {
"@angular/animations": "^17.2.3",
"@angular/cdk": "^17.2.1",
"@angular/common": "^17.2.3",
"@angular/compiler": "^17.2.3",
"@angular/core": "^17.2.3",
"@angular/fire": "^17.0.1",
"@angular/forms": "^17.2.3",
"@angular/material": "^17.2.1",
"@angular/platform-browser": "^17.2.3",
"@angular/platform-browser-dynamic": "^17.2.3",
"@angular/router": "^17.2.3",
"@capacitor/android": "^5.7.0",
"@capacitor/core": "^5.7.0",
"@capacitor/ios": "^5.7.0",
"@angular/animations": "^18.1.0",
"@angular/cdk": "^18.0.6",
"@angular/common": "^18.1.0",
"@angular/compiler": "^18.1.0",
"@angular/core": "^18.1.0",
"@angular/fire": "^18.0.1",
"@angular/forms": "^18.1.0",
"@angular/material": "^18.0.6",
"@angular/platform-browser": "^18.1.0",
"@angular/platform-browser-dynamic": "^18.1.0",
"@angular/router": "^18.1.0",
"@capacitor/android": "^6.0.0",
"@capacitor/core": "^6.0.0",
"@capacitor/ios": "^6.0.0",
"@codetrix-studio/capacitor-google-auth": "^3.4.0-rc.0",
"@ngx-pwa/local-storage": "^17.0.0",
"@ngx-pwa/local-storage": "^18.0.0",
"angular2-uuid": "^1.1.1",
"firebase": "^10.8.0",
"marked": "^9.0.0",
"ngx-markdown": "^17.1.1",
"ngx-markdown": "^18.0.0",
"reselect": "^5.1.0",
"rxjs": "^7.8.1",
"tslib": "^2.6.2",
"zone.js": "~0.14.4"
},
"devDependencies": {
"@angular-devkit/architect": "0.1702.1",
"@angular-devkit/build-angular": "^17.2.1",
"@angular-eslint/builder": "17.2.1",
"@angular-eslint/eslint-plugin": "17.2.1",
"@angular-eslint/eslint-plugin-template": "17.2.1",
"@angular-eslint/schematics": "17.2.1",
"@angular-eslint/template-parser": "17.2.1",
"@angular/cli": "^17.2.1",
"@angular/compiler-cli": "^17.2.1",
"@capacitor/cli": "^5.7.0",
"@angular-devkit/architect": "0.1800.7",
"@angular-devkit/build-angular": "^18.0.7",
"@angular-eslint/builder": "18.1.0",
"@angular-eslint/eslint-plugin": "18.1.0",
"@angular-eslint/eslint-plugin-template": "18.1.0",
"@angular-eslint/schematics": "18.1.0",
"@angular-eslint/template-parser": "18.1.0",
"@angular/cli": "^18.0.7",
"@angular/compiler-cli": "^18.1.0",
"@capacitor/cli": "^6.0.0",
"@cypress/schematic": "^2.5.1",
"@types/jasmine": "~5.1.4",
"@types/jasminewd2": "~2.0.13",
"@types/node": "^20.11.21",
"@typescript-eslint/eslint-plugin": "7.1.0",
"@typescript-eslint/parser": "^7.1.0",
"cypress": "latest",
"@typescript-eslint/eslint-plugin": "^7.2.0",
"@typescript-eslint/parser": "^7.2.0",
"cypress": "13.6.6",
"eslint": "^8.57.0",
"eslint-plugin-deprecation": "^2.0.0",
"eslint-plugin-deprecation": "^3.0.0",
"eslint-plugin-optimize-regex": "^1.2.1",
"eslint-plugin-simple-import-sort": "^12.0.0",
"eslint-plugin-unused-imports": "^3.1.0",
@ -77,7 +77,7 @@
"karma-jasmine-html-reporter": "^2.1.0",
"open": "^10.0.4",
"ts-node": "~10.9.2",
"typescript": "~5.3.3"
"typescript": "~5.4.5"
},
"browserslist": [
"last 1 Chrome version",
@ -89,4 +89,4 @@
"not IE 9-10 ",
"not IE 11 "
]
}
}

View File

@ -1,6 +1,6 @@
import { ClipboardModule } from '@angular/cdk/clipboard';
import { DragDropModule } from '@angular/cdk/drag-drop';
import { HttpClientModule } from '@angular/common/http';
import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
import { APP_ID, NgModule } from '@angular/core';
import { AngularFireModule } from '@angular/fire/compat';
import { AngularFireAuthModule } from '@angular/fire/compat/auth';
@ -41,6 +41,7 @@ import { MarkedOptions, MarkedRenderer } from 'ngx-markdown';
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
import { AddToPageModalComponent } from './components/add-to-page-modal/add-to-page-modal.component';
import { CardEditModalComponent } from './components/card-edit-modal/card-edit-modal.component';
import { HelpModalComponent } from './components/help-modal/help-modal.component';
import { NoteEditModalComponent } from './components/note/edit-modal/note-edit-modal.component';
import { NoteCardComponent } from './components/note/note-card.component';
@ -75,79 +76,69 @@ export function markedOptionsFactory(): MarkedOptions {
};
}
@NgModule({
declarations: [
AppComponent,
NotesAdminPageComponent,
SavedPagesAdminPageComponent,
SavedPageCardComponent,
HelpModalComponent,
SearchPageComponent,
PassageCardComponent,
StrongsComponent,
StrongsCardComponent,
StrongsModalComponent,
WordsCardComponent,
NoteCardComponent,
PageEditModalComponent,
NoteEditModalComponent,
AddToPageModalComponent,
VersePickerModalComponent,
SettingsComponent,
OkCancelModalComponent,
],
imports: [
BrowserModule,
HttpClientModule,
ReactiveFormsModule,
FormsModule,
AppRoutingModule,
BrowserAnimationsModule,
MarkdownModule.forRoot({
markedOptions: {
provide: MARKED_OPTIONS,
useFactory: markedOptionsFactory,
},
}),
AngularFireModule.initializeApp(FirebaseConfig),
AngularFireAuthModule,
AngularFireDatabaseModule,
DragDropModule,
MatSidenavModule,
MatChipsModule,
MatToolbarModule,
MatIconModule,
MatAutocompleteModule,
MatBadgeModule,
MatBottomSheetModule,
MatButtonModule,
MatButtonToggleModule,
MatCardModule,
MatCheckboxModule,
MatStepperModule,
MatDialogModule,
MatDividerModule,
MatExpansionModule,
MatInputModule,
MatListModule,
MatMenuModule,
MatNativeDateModule,
MatRadioModule,
MatRippleModule,
MatSelectModule,
MatSliderModule,
MatSlideToggleModule,
MatSnackBarModule,
MatTooltipModule,
MatFormFieldModule,
MatTabsModule,
ClipboardModule,
],
providers: [{ provide: APP_ID, useValue: 'ng-cli-universal' }],
bootstrap: [AppComponent],
})
@NgModule({ declarations: [
AppComponent,
NotesAdminPageComponent,
SavedPagesAdminPageComponent,
SavedPageCardComponent,
HelpModalComponent,
SearchPageComponent,
PassageCardComponent,
StrongsComponent,
StrongsCardComponent,
StrongsModalComponent,
WordsCardComponent,
NoteCardComponent,
PageEditModalComponent,
NoteEditModalComponent,
AddToPageModalComponent,
VersePickerModalComponent,
SettingsComponent,
OkCancelModalComponent,
CardEditModalComponent,
],
bootstrap: [AppComponent], imports: [BrowserModule,
ReactiveFormsModule,
FormsModule,
AppRoutingModule,
BrowserAnimationsModule,
MarkdownModule.forRoot({
markedOptions: {
provide: MARKED_OPTIONS,
useFactory: markedOptionsFactory,
},
}),
AngularFireModule.initializeApp(FirebaseConfig),
AngularFireAuthModule,
AngularFireDatabaseModule,
DragDropModule,
MatSidenavModule,
MatChipsModule,
MatToolbarModule,
MatIconModule,
MatAutocompleteModule,
MatBadgeModule,
MatBottomSheetModule,
MatButtonModule,
MatButtonToggleModule,
MatCardModule,
MatCheckboxModule,
MatStepperModule,
MatDialogModule,
MatDividerModule,
MatExpansionModule,
MatInputModule,
MatListModule,
MatMenuModule,
MatNativeDateModule,
MatRadioModule,
MatRippleModule,
MatSelectModule,
MatSliderModule,
MatSlideToggleModule,
MatSnackBarModule,
MatTooltipModule,
MatFormFieldModule,
MatTabsModule,
ClipboardModule], providers: [{ provide: APP_ID, useValue: 'ng-cli-universal' }, provideHttpClient(withInterceptorsFromDi())] })
export class AppModule {}

View File

@ -0,0 +1,16 @@
<mat-toolbar>
<mat-icon>save</mat-icon>
</mat-toolbar>
<mat-dialog-content class="content">
<form [formGroup]="form">
<mat-form-field class="page-title">
<mat-label>Query</mat-label>
<input formControlName="qry" matInput />
</mat-form-field>
</form>
<div mat-dialog-actions>
<button mat-button (click)="save()">Save</button>
<button mat-button (click)="cancel()">Cancel</button>
</div>
</mat-dialog-content>

View File

@ -0,0 +1,25 @@
.close-button {
float: right;
}
.title {
width: 100%;
padding-left: 1rem;
font-size: 1.5rem;
overflow: hidden;
}
.mat-mdc-form-field {
display: block;
}
.page-title {
min-width: 50vw;
padding-top: 12px;
}
.mat-mdc-dialog-content {
min-width: 60vw;
min-height: 20vh;
max-height: 80vh;
}

View File

@ -0,0 +1,45 @@
import { Component, Inject } from '@angular/core';
import { FormGroup, UntypedFormBuilder } from '@angular/forms';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { CardItem } from 'src/app/models/card-state';
import { AppService } from 'src/app/services/app.service';
@Component({
selector: 'app-card-edit-modal',
templateUrl: 'card-edit-modal.component.html',
styleUrls: ['./card-edit-modal.component.scss'],
})
export class CardEditModalComponent {
form: FormGroup;
dialogTitle = 'Save Page using Current Cards';
oldCard: CardItem;
constructor(
@Inject(MAT_DIALOG_DATA) public data: CardEditModalData,
public dialogRef: MatDialogRef<CardEditModalComponent>,
private appService: AppService,
private fb: UntypedFormBuilder
) {
this.oldCard = data.card;
this.form = this.fb.group(data.card);
}
cancel() {
this.dialogRef.close();
}
save() {
this.appService.updateCard(
{
qry: this.form.get('qry').value,
type: this.form.get('type').value,
} as CardItem,
this.oldCard
);
this.dialogRef.close();
}
}
export interface CardEditModalData {
card: CardItem;
}

View File

@ -1,5 +1,5 @@
import { Clipboard } from '@angular/cdk/clipboard';
import { Component,ElementRef, EventEmitter, Input, Output } from '@angular/core';
import { Component, ElementRef, EventEmitter, Input, Output } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import { Observable } from 'rxjs';
@ -8,6 +8,7 @@ import { SubscriberBase } from '../common/subscriber-base';
import { AddToPageModalComponent } from '../components/add-to-page-modal/add-to-page-modal.component';
import { CardItem } from '../models/card-state';
import { AppService } from '../services/app.service';
import { CardEditModalComponent } from './card-edit-modal/card-edit-modal.component';
@Component({
template: '',
@ -83,4 +84,12 @@ export class CardComponent extends SubscriberBase {
moveCardUp() {
this.appService.moveCard(this.cardItem, MoveDirection.Up);
}
editReferenceModal() {
this.dialog.open(CardEditModalComponent, {
data: {
card: { ...this.cardItem } as CardItem,
},
});
}
}

View File

@ -14,21 +14,21 @@ export class PageEditModalComponent {
dialogTitle = 'Save Page using Current Cards';
constructor(
@Inject(MAT_DIALOG_DATA) public title: PageEditModalData,
@Inject(MAT_DIALOG_DATA) public data: PageEditModalData,
public dialogRef: MatDialogRef<PageEditModalComponent>,
private appService: AppService,
private fb: UntypedFormBuilder
) {
if (title) {
if (data) {
this.dialogTitle = 'Edit Page Name';
} else {
title = {
data = {
title: '',
savedPage: null,
};
}
this.form = this.fb.group(title);
this.form = this.fb.group(data);
}
cancel() {
@ -38,7 +38,7 @@ export class PageEditModalComponent {
save() {
if (this.dialogTitle === 'Edit Page Name') {
this.appService.updateSavedPage({
...this.title.savedPage,
...this.data.savedPage,
title: this.form.get('title').value,
});
} else {

View File

@ -102,6 +102,10 @@
<mat-icon>more_vert</mat-icon>
</button>
<mat-menu #moreMenu="matMenu">
<button mat-menu-item (click)="editReferenceModal()">
<mat-icon>edit</mat-icon>
<span>Edit Reference</span>
</button>
<button mat-menu-item (click)="copy()">
<mat-icon>content_copy</mat-icon>
<span>Copy Passage</span>

View File

@ -11,3 +11,7 @@
.auth-button {
width: 100%;
}
.mdc-slider__input {
padding: 0px !important;
}

View File

@ -4,14 +4,14 @@ import { UUID } from 'angular2-uuid';
import { lastValueFrom } from 'rxjs';
import { moveItem, moveItemUpOrDown } from '../common/array-operations';
import { BibleReference, Overlap,Section } from '../common/bible-reference';
import { getFromCardCache,removeFromCardCache, updateInCardCache } from '../common/card-cache-operations';
import { BibleReference, Overlap, Section } from '../common/bible-reference';
import { getFromCardCache, removeFromCardCache, updateInCardCache } from '../common/card-cache-operations';
import { mergeCardList } from '../common/card-operations';
import { HashTable } from '../common/hashtable';
import { MoveDirection } from '../common/move-direction';
import { createReducingService,IReducingAction } from '../common/state-service';
import { createReducingService, IReducingAction } from '../common/state-service';
import { IStorable, Storable, StorableType } from '../common/storable';
import { AppState, DisplaySettings, Error,PageSettings, Settings, User } from '../models/app-state';
import { AppState, DisplaySettings, Error, PageSettings, Settings, User } from '../models/app-state';
import { CardItem, CardType, DataReference } from '../models/card-state';
import { NoteItem } from '../models/note-state';
import { SavedPage } from '../models/page-state';
@ -31,7 +31,7 @@ import {
StrongsDictionary,
StrongsResult,
} from '../models/strongs-state';
import { IndexResult, WordLookupResult,WordToStem } from '../models/words-state';
import { IndexResult, WordLookupResult, WordToStem } from '../models/words-state';
const initialState: AppState = {
user: null,
@ -294,7 +294,7 @@ export const updateCardAction = (newCard: CardItem, oldCard: CardItem): AppActio
...state,
currentCards: new Storable(
state.currentCards.value.map((c) => {
if (c === oldCard) {
if (c.type === oldCard.type && c.qry === oldCard.qry) {
return newCard;
}
return c;
@ -824,6 +824,11 @@ export class AppService extends createReducingService(initialState) {
);
}
async updateCard(newCard: CardItem, oldCard: CardItem) {
const card = await this.getCardByQuery(newCard.qry.trim());
this.dispatch(updateCardAction(card, oldCard));
}
async clearCards() {
this.dispatch(clearCardsAction());
}
@ -1491,8 +1496,8 @@ export class AppService extends createReducingService(initialState) {
words.unshift('barbarian');
words.unshift('beard');
words.unshift('begettest');
words.unshift('benefactor');
words.unshift('bethel');
words.unshift('beneath');
words.unshift('bethabara');
words.unshift('bilshan');
words.unshift('blindeth');
words.unshift('booti');
@ -1506,152 +1511,152 @@ export class AppService extends createReducingService(initialState) {
words.unshift('chrysoprasus');
words.unshift('cloth');
words.unshift('common');
words.unshift('confess');
words.unshift('contendeth');
words.unshift('coucheth');
words.unshift('crept');
words.unshift('curseth');
words.unshift('darius');
words.unshift('decketh');
words.unshift('dema');
words.unshift('devil');
words.unshift('directeth');
words.unshift('disposit');
words.unshift('doth');
words.unshift('drowsi');
words.unshift('ebe');
words.unshift('elead');
words.unshift('elkoshit');
words.unshift('encourag');
words.unshift('entreat');
words.unshift('eschew');
words.unshift('ever');
words.unshift('expert');
words.unshift('fallest');
words.unshift('feedeth');
words.unshift('filthi');
words.unshift('fleeth');
words.unshift('forborn');
words.unshift('forsookest');
words.unshift('fretteth');
words.unshift('gahar');
words.unshift('gazzam');
words.unshift('gibea');
words.unshift('glister');
words.unshift('got');
words.unshift('grope');
words.unshift('hadlai');
words.unshift('hammon');
words.unshift('harbona');
words.unshift('hasrah');
words.unshift('hazezon');
words.unshift('heinous');
words.unshift('herebi');
words.unshift('highest');
words.unshift('holdeth');
words.unshift('hosanna');
words.unshift('huri');
words.unshift('ill');
words.unshift('inexcus');
words.unshift('intend');
words.unshift('ishui');
words.unshift('jaazaniah');
words.unshift('jaminit');
words.unshift('jecoliah');
words.unshift('jeopard');
words.unshift('jethro');
words.unshift('joiarib');
words.unshift('juda');
words.unshift('kelaiah');
words.unshift('kishion');
words.unshift('laden');
words.unshift('laughter');
words.unshift('lehi');
words.unshift('lift');
words.unshift('loatheth');
words.unshift('lucius');
words.unshift('madmen');
words.unshift('malachi');
words.unshift('march');
words.unshift('maul');
words.unshift('melchizedek');
words.unshift('merrili');
words.unshift('midianit');
words.unshift('miri');
words.unshift('modest');
words.unshift('move');
words.unshift('naashon');
words.unshift('nazareth');
words.unshift('nephishesim');
words.unshift('nisan');
words.unshift('obadiah');
words.unshift('oliveyard');
words.unshift('oren');
words.unshift('overrun');
words.unshift('pallu');
words.unshift('pas');
words.unshift('peel');
words.unshift('pernici');
words.unshift('philip');
words.unshift('pison');
words.unshift('plucketh');
words.unshift('pour');
words.unshift('price');
words.unshift('proport');
words.unshift('purg');
words.unshift('rabboni');
words.unshift('ravish');
words.unshift('redeemedst');
words.unshift('remainest');
words.unshift('reput');
words.unshift('revers');
words.unshift('rissah');
words.unshift('ruddi');
words.unshift('said');
words.unshift('sapphir');
words.unshift('scepter');
words.unshift('secundus');
words.unshift('separ');
words.unshift('shachia');
words.unshift('sharar');
words.unshift('sheepshear');
words.unshift('sheva');
words.unshift('shishak');
words.unshift('shroud');
words.unshift('signifi');
words.unshift('sittest');
words.unshift('slow');
words.unshift('soft');
words.unshift('sowedst');
words.unshift('spoil');
words.unshift('station');
words.unshift('stoop');
words.unshift('strongest');
words.unshift('sum');
words.unshift('sweep');
words.unshift('tahapan');
words.unshift('tast');
words.unshift('ten');
words.unshift('thereat');
words.unshift('threaten');
words.unshift('timbrel');
words.unshift('tongu');
words.unshift('travailest');
words.unshift('trust');
words.unshift('uncircumcis');
words.unshift('unprepar');
words.unshift('urg');
words.unshift('vat');
words.unshift('visiteth');
words.unshift('wash');
words.unshift('wed');
words.unshift('wherewith');
words.unshift('winepress');
words.unshift('won');
words.unshift('written');
words.unshift('zalmonah');
words.unshift('zenan');
words.unshift('ziphim');
words.unshift('confer');
words.unshift('contendest');
words.unshift('couch');
words.unshift('creepeth');
words.unshift('cursest');
words.unshift('dare');
words.unshift('deckest');
words.unshift('delus');
words.unshift('devic');
words.unshift('direct');
words.unshift('dispos');
words.unshift('dote');
words.unshift('drown');
words.unshift('ebal');
words.unshift('eldest');
words.unshift('elkanah');
words.unshift('encount');
words.unshift('entranc');
words.unshift('escapeth');
words.unshift('eventid');
words.unshift('experi');
words.unshift('fallen');
words.unshift('feedest');
words.unshift('filth');
words.unshift('fleec');
words.unshift('forbor');
words.unshift('forsook');
words.unshift('fret');
words.unshift('gaham');
words.unshift('gazit');
words.unshift('gibbethon');
words.unshift('glede');
words.unshift('gospel');
words.unshift('groaneth');
words.unshift('hadid');
words.unshift('hammoleketh');
words.unshift('haraseth');
words.unshift('hashupha');
words.unshift('hazeroth');
words.unshift('height');
words.unshift('hereaft');
words.unshift('higher');
words.unshift('holdest');
words.unshift('hosah');
words.unshift('huram');
words.unshift('ilai');
words.unshift('indit');
words.unshift('intellig');
words.unshift('ishuai');
words.unshift('jaasiel');
words.unshift('jamin');
words.unshift('jechoniah');
words.unshift('jemuel');
words.unshift('jethlah');
words.unshift('joiakim');
words.unshift('jucal');
words.unshift('keilah');
words.unshift('kishi');
words.unshift('lade');
words.unshift('laugheth');
words.unshift('lehem');
words.unshift('lifetim');
words.unshift('loath');
words.unshift('lucif');
words.unshift('madmannah');
words.unshift('maktesh');
words.unshift('marcaboth');
words.unshift('mattock');
words.unshift('melchiah');
words.unshift('merri');
words.unshift('midian');
words.unshift('mire');
words.unshift('moder');
words.unshift('movabl');
words.unshift('naarath');
words.unshift('nazaren');
words.unshift('nephish');
words.unshift('ninth');
words.unshift('oath');
words.unshift('olivet');
words.unshift('oregim');
words.unshift('overran');
words.unshift('palet');
words.unshift('parvaim');
words.unshift('pedigre');
words.unshift('permit');
words.unshift('philetus');
words.unshift('pisidia');
words.unshift('pluck');
words.unshift('pound');
words.unshift('prey');
words.unshift('propiti');
words.unshift('purer');
words.unshift('rabbith');
words.unshift('ravin');
words.unshift('redeem');
words.unshift('remaind');
words.unshift('reproveth');
words.unshift('reverend');
words.unshift('rishathaim');
words.unshift('rudder');
words.unshift('sahadutha');
words.unshift('saphir');
words.unshift('scent');
words.unshift('sect');
words.unshift('seorim');
words.unshift('shabbethai');
words.unshift('sharaim');
words.unshift('sheepmast');
words.unshift('shethar');
words.unshift('shisha');
words.unshift('shrine');
words.unshift('signif');
words.unshift('sitnah');
words.unshift('sloth');
words.unshift('soever');
words.unshift('sow');
words.unshift('spittl');
words.unshift('state');
words.unshift('stool');
words.unshift('stronger');
words.unshift('sukkiim');
words.unshift('sweat');
words.unshift('tahanit');
words.unshift('taskmast');
words.unshift('tempteth');
words.unshift('thereabout');
words.unshift('thread');
words.unshift('timber');
words.unshift('tong');
words.unshift('travail');
words.unshift('trumpet');
words.unshift('unchang');
words.unshift('unperfect');
words.unshift('urban');
words.unshift('vashti');
words.unshift('visitest');
words.unshift('warrior');
words.unshift('web');
words.unshift('whereupon');
words.unshift('winebibb');
words.unshift('womenserv');
words.unshift('writeth');
words.unshift('zalmon');
words.unshift('zena');
words.unshift('ziphah');
words.unshift('zuzim');
return words;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
[{"w":"elkoshit","r":["34:1:1"]},{"w":"ellasar","r":["1:14:1","1:14:9"]},{"w":"elm","r":["28:4:13"]},{"w":"elmodam","r":["42:3:28"]},{"w":"elnaam","r":["13:11:46"]},{"w":"elnathan","r":["12:24:8","15:8:16","24:26:22","24:36:12","24:36:25"]},{"w":"elohe-israel","r":["1:33:20"]},{"w":"eloi","r":["41:15:34"]},{"w":"elon","r":["1:26:34","1:36:2","1:46:14","4:26:26","6:19:43","7:12:11","7:12:12","11:4:9"]},{"w":"elonit","r":["4:26:26"]},{"w":"eloqu","r":["2:4:10","23:3:3","44:18:24"]},{"w":"eloth","r":["11:9:26","14:8:17","14:26:2"]},{"w":"elpaal","r":["13:8:11","13:8:12","13:8:18"]},{"w":"elpalet","r":["13:14:5"]},{"w":"els","r":["1:30:1","1:42:16","2:8:21","2:10:4","4:20:19","5:4:35","5:4:39","6:23:12","7:7:14","10:3:35","10:15:14","11:8:60","11:20:39","11:21:6","13:21:12","14:23:7","16:2:2","19:51:16","21:2:25","23:45:5","23:45:6","23:45:14","23:45:18","23:45:21","23:45:22","23:46:9","23:47:8","23:47:10","29:2:27","40:6:24","40:9:17","40:12:29","40:12:33","41:2:21","41:2:22","42:5:37","42:14:32","42:16:13","43:14:11","44:17:21","44:24:20","45:2:15","46:7:14","46:14:16","46:15:29","50:1:27","66:2:5","66:2:16"]},{"w":"eltekeh","r":["6:19:44","6:21:23"]},{"w":"eltekon","r":["6:15:59"]},{"w":"eltolad","r":["6:15:30","6:19:4"]},{"w":"elul","r":["16:6:15"]},{"w":"eluzai","r":["13:12:5"]},{"w":"elyma","r":["44:13:8"]},{"w":"elzabad","r":["13:12:12","13:26:7"]},{"w":"elzaphan","r":["2:6:22","3:10:4"]},{"w":"embalm","r":["1:50:2","1:50:3","1:50:26"]},{"w":"embolden","r":["46:8:10"]},{"w":"emboldeneth","r":["18:16:3"]},{"w":"embrac","r":["1:29:13","1:33:4","1:48:10","12:4:16","18:24:8","20:4:8","20:5:20","21:3:5","22:2:6","22:8:3","25:4:5","44:20:1","44:20:10","58:11:13"]},{"w":"embroid","r":["2:28:4","2:28:39","26:16:10","26:16:13","26:16:18","26:26:16","26:27:7","26:27:16","26:27:24"]},{"w":"embroider","r":["2:35:35","2:38:23"]},{"w":"emek","r":["6:19:27"]},{"w":"emerald","r":["2:28:18","2:39:11","26:27:16","26:28:13","66:4:3","66:21:19"]},{"w":"emerod","r":["5:28:27","9:5:6","9:5:9","9:5:12","9:6:4","9:6:5","9:6:11","9:6:17"]},{"w":"emim","r":["1:14:5","5:2:10","5:2:11"]},{"w":"emin","r":["26:16:24","26:16:31","26:16:39","26:17:22"]},{"w":"emmanuel","r":["40:1:23"]},{"w":"emmaus","r":["42:24:13"]},{"w":"empir","r":["17:1:20"]},{"w":"employ","r":["5:20:19","13:9:33","15:10:15","26:39:14"]},{"w":"empti","r":["1:24:20","1:31:42","1:37:24","1:41:27","1:42:35","2:3:21","2:23:15","2:34:20","3:14:36","5:15:13","5:16:16","7:7:16","8:1:21","8:3:17","9:6:3","9:20:18","9:20:25","9:20:27","10:1:22","12:4:3","14:24:11","16:5:13","18:22:9","18:26:7","21:11:3","23:19:6","23:24:1","23:24:3","23:29:8","23:32:6","23:34:11","24:14:3","24:48:11","24:48:12","24:51:2","24:51:34","26:24:11","28:10:1","34:2:2","34:2:10","35:1:17","38:4:12","40:12:44","41:12:3","42:1:53","42:20:10","42:20:11"]},{"w":"emptier","r":["34:2:2"]},{"w":"emul","r":["45:11:14","48:5:20"]},{"w":"en","r":["1:14:7","6:15:7","6:15:34","6:15:62","6:17:7","6:18:16","6:18:17","6:19:21","6:19:37","6:21:29","7:15:19","9:23:29","9:24:1","10:17:17","11:1:9","14:20:2","16:11:29","22:1:14","26:47:10"]},{"w":"enabl","r":["54:1:12"]},{"w":"enam","r":["6:15:34"]},{"w":"enan","r":["4:1:15","4:2:29","4:7:78","4:7:83","4:10:27","4:34:9","4:34:10","26:47:17","26:48:1"]},{"w":"encamp","r":["2:13:20","2:14:2","2:14:9","2:15:27","2:18:5","4:1:50","4:2:17","4:2:27","4:3:38","4:10:31","4:33:10","4:33:11","4:33:12","4:33:13","4:33:14","4:33:17","4:33:24","4:33:26","4:33:30","4:33:32","4:33:34","4:33:35","4:33:46","6:4:19","6:5:10","6:10:5","6:10:31","6:10:34","7:6:4","7:9:50","7:10:17","7:20:19","9:11:1","9:13:16","10:11:11","10:12:28","11:16:15","11:16:16","13:11:15","14:32:1","18:19:12","19:27:3","38:9:8"]},{"w":"encampeth","r":["19:34:7","19:53:5"]},{"w":"enchant","r":["2:7:11","2:7:22","2:8:7","2:8:18","3:19:26","4:23:23","4:24:1","5:18:10","12:17:17","12:21:6","14:33:6","21:10:11","23:47:9","23:47:12","24:27:9"]},{"w":"enclos","r":["2:28:20","2:39:6","2:39:13","7:20:43","19:17:10","19:22:16","22:4:12","22:8:9","25:3:9","42:5:6"]},{"w":"encount","r":["44:17:18"]}]

View File

@ -1 +0,0 @@
[{"w":"ellasar","r":["1:14:1","1:14:9"]},{"w":"elm","r":["28:4:13"]},{"w":"elmodam","r":["42:3:28"]},{"w":"elnaam","r":["13:11:46"]},{"w":"elnathan","r":["12:24:8","15:8:16","24:26:22","24:36:12","24:36:25"]},{"w":"elohe-israel","r":["1:33:20"]},{"w":"eloi","r":["41:15:34"]},{"w":"elon","r":["1:26:34","1:36:2","1:46:14","4:26:26","6:19:43","7:12:11","7:12:12","11:4:9"]},{"w":"elonit","r":["4:26:26"]},{"w":"eloqu","r":["2:4:10","23:3:3","44:18:24"]},{"w":"eloth","r":["11:9:26","14:8:17","14:26:2"]},{"w":"elpaal","r":["13:8:11","13:8:12","13:8:18"]},{"w":"elpalet","r":["13:14:5"]},{"w":"els","r":["1:30:1","1:42:16","2:8:21","2:10:4","4:20:19","5:4:35","5:4:39","6:23:12","7:7:14","10:3:35","10:15:14","11:8:60","11:20:39","11:21:6","13:21:12","14:23:7","16:2:2","19:51:16","21:2:25","23:45:5","23:45:6","23:45:14","23:45:18","23:45:21","23:45:22","23:46:9","23:47:8","23:47:10","29:2:27","40:6:24","40:9:17","40:12:29","40:12:33","41:2:21","41:2:22","42:5:37","42:14:32","42:16:13","43:14:11","44:17:21","44:24:20","45:2:15","46:7:14","46:14:16","46:15:29","50:1:27","66:2:5","66:2:16"]},{"w":"eltekeh","r":["6:19:44","6:21:23"]},{"w":"eltekon","r":["6:15:59"]},{"w":"eltolad","r":["6:15:30","6:19:4"]},{"w":"elul","r":["16:6:15"]},{"w":"eluzai","r":["13:12:5"]},{"w":"elyma","r":["44:13:8"]},{"w":"elzabad","r":["13:12:12","13:26:7"]},{"w":"elzaphan","r":["2:6:22","3:10:4"]},{"w":"embalm","r":["1:50:2","1:50:3","1:50:26"]},{"w":"embolden","r":["46:8:10"]},{"w":"emboldeneth","r":["18:16:3"]},{"w":"embrac","r":["1:29:13","1:33:4","1:48:10","12:4:16","18:24:8","20:4:8","20:5:20","21:3:5","22:2:6","22:8:3","25:4:5","44:20:1","44:20:10","58:11:13"]},{"w":"embroid","r":["2:28:4","2:28:39","26:16:10","26:16:13","26:16:18","26:26:16","26:27:7","26:27:16","26:27:24"]},{"w":"embroider","r":["2:35:35","2:38:23"]},{"w":"emek","r":["6:19:27"]},{"w":"emerald","r":["2:28:18","2:39:11","26:27:16","26:28:13","66:4:3","66:21:19"]},{"w":"emerod","r":["5:28:27","9:5:6","9:5:9","9:5:12","9:6:4","9:6:5","9:6:11","9:6:17"]},{"w":"emim","r":["1:14:5","5:2:10","5:2:11"]},{"w":"emin","r":["26:16:24","26:16:31","26:16:39","26:17:22"]},{"w":"emmanuel","r":["40:1:23"]},{"w":"emmaus","r":["42:24:13"]},{"w":"empir","r":["17:1:20"]},{"w":"employ","r":["5:20:19","13:9:33","15:10:15","26:39:14"]},{"w":"empti","r":["1:24:20","1:31:42","1:37:24","1:41:27","1:42:35","2:3:21","2:23:15","2:34:20","3:14:36","5:15:13","5:16:16","7:7:16","8:1:21","8:3:17","9:6:3","9:20:18","9:20:25","9:20:27","10:1:22","12:4:3","14:24:11","16:5:13","18:22:9","18:26:7","21:11:3","23:19:6","23:24:1","23:24:3","23:29:8","23:32:6","23:34:11","24:14:3","24:48:11","24:48:12","24:51:2","24:51:34","26:24:11","28:10:1","34:2:2","34:2:10","35:1:17","38:4:12","40:12:44","41:12:3","42:1:53","42:20:10","42:20:11"]},{"w":"emptier","r":["34:2:2"]},{"w":"emul","r":["45:11:14","48:5:20"]},{"w":"en","r":["1:14:7","6:15:7","6:15:34","6:15:62","6:17:7","6:18:16","6:18:17","6:19:21","6:19:37","6:21:29","7:15:19","9:23:29","9:24:1","10:17:17","11:1:9","14:20:2","16:11:29","22:1:14","26:47:10"]},{"w":"enabl","r":["54:1:12"]},{"w":"enam","r":["6:15:34"]},{"w":"enan","r":["4:1:15","4:2:29","4:7:78","4:7:83","4:10:27","4:34:9","4:34:10","26:47:17","26:48:1"]},{"w":"encamp","r":["2:13:20","2:14:2","2:14:9","2:15:27","2:18:5","4:1:50","4:2:17","4:2:27","4:3:38","4:10:31","4:33:10","4:33:11","4:33:12","4:33:13","4:33:14","4:33:17","4:33:24","4:33:26","4:33:30","4:33:32","4:33:34","4:33:35","4:33:46","6:4:19","6:5:10","6:10:5","6:10:31","6:10:34","7:6:4","7:9:50","7:10:17","7:20:19","9:11:1","9:13:16","10:11:11","10:12:28","11:16:15","11:16:16","13:11:15","14:32:1","18:19:12","19:27:3","38:9:8"]},{"w":"encampeth","r":["19:34:7","19:53:5"]},{"w":"enchant","r":["2:7:11","2:7:22","2:8:7","2:8:18","3:19:26","4:23:23","4:24:1","5:18:10","12:17:17","12:21:6","14:33:6","21:10:11","23:47:9","23:47:12","24:27:9"]},{"w":"enclos","r":["2:28:20","2:39:6","2:39:13","7:20:43","19:17:10","19:22:16","22:4:12","22:8:9","25:3:9","42:5:6"]},{"w":"encount","r":["44:17:18"]},{"w":"encourag","r":["5:1:38","5:3:28","7:20:22","9:30:6","10:11:25","14:31:4","14:35:2","19:64:5","23:41:7"]}]

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

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